# HG changeset patch # User Chris Cannam # Date 1307367664 -3600 # Node ID 753f1380d6bc90f40491887b22cec81ced7343f6 # Parent adc8466df40458678340faa4159a998ee1b03e75# Parent cbce1fd3b1b7f90920f8fcabb8a04f0696e20022 Merge from branch "redmine-1.2" diff -r adc8466df404 -r 753f1380d6bc .hgignore --- a/.hgignore Thu Mar 03 15:08:45 2011 +0000 +++ b/.hgignore Mon Jun 06 14:41:04 2011 +0100 @@ -24,3 +24,5 @@ tmp/test/* vendor/rails *.rbc +.svn/ +.git/ diff -r adc8466df404 -r 753f1380d6bc .svn/all-wcprops --- a/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,29 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 24 -/svn/!svn/ver/4993/trunk +V 38 +/svn/!svn/ver/6000/branches/1.2-stable END -.hgignore -K 25 -svn:wc:ra_dav:version-url -V 34 -/svn/!svn/ver/4834/trunk/.hgignore -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 31 -/svn/!svn/ver/67/trunk/Rakefile -END -README.rdoc -K 25 -svn:wc:ra_dav:version-url -V 36 -/svn/!svn/ver/3849/trunk/README.rdoc -END -.gitignore -K 25 -svn:wc:ra_dav:version-url -V 35 -/svn/!svn/ver/4834/trunk/.gitignore -END diff -r adc8466df404 -r 753f1380d6bc .svn/entries --- a/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable http://redmine.rubyforge.org/svn -2011-03-03T05:51:46.224821Z -4993 +2011-06-03T11:41:34.837596Z +6000 tmaruyama has-props @@ -29,6 +29,9 @@ test dir +app +dir + .hgignore file @@ -36,14 +39,11 @@ -970b3ffe21e2c668737cf5abf0d0ac48 -2011-02-15T11:04:52.942730Z -4834 +cf080444603c5774a6f20da6bbafe234 +2011-03-28T04:54:13.617808Z +5235 tmaruyama -app -dir - log dir @@ -53,7 +53,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z bbf560d44f092d22a30d3a562436ad8c 2006-12-05T20:45:04.842118Z 67 @@ -81,16 +81,13 @@ 307 -extra -dir - README.rdoc file -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 67c937b1f1d0603e69f322de34bbfe04 2010-07-18T15:49:24.341728Z 3849 @@ -118,6 +115,9 @@ 208 +extra +dir + db dir @@ -133,19 +133,13 @@ script dir -doc -dir - -config -dir - .gitignore file -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 84dbba0b6ddcd80d28c62a3f8e344bc4 2011-02-15T11:04:52.942730Z 4834 @@ -173,6 +167,12 @@ 477 +config +dir + +doc +dir + lib dir diff -r adc8466df404 -r 753f1380d6bc .svn/text-base/.hgignore.svn-base --- a/.svn/text-base/.hgignore.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/.svn/text-base/.hgignore.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -25,3 +25,5 @@ tmp/test/* vendor/rails *.rbc +.svn/ +.git/ diff -r adc8466df404 -r 753f1380d6bc .svn/tmp/.hgignore.tmp --- a/.svn/tmp/.hgignore.tmp Thu Mar 03 15:08:45 2011 +0000 +++ b/.svn/tmp/.hgignore.tmp Mon Jun 06 14:41:04 2011 +0100 @@ -24,3 +24,5 @@ tmp/test/* vendor/rails *.rbc +.svn/ +.git/ diff -r adc8466df404 -r 753f1380d6bc app/.svn/all-wcprops --- a/app/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 28 -/svn/!svn/ver/4990/trunk/app +V 42 +/svn/!svn/ver/6000/branches/1.2-stable/app END diff -r adc8466df404 -r 753f1380d6bc app/.svn/entries --- a/app/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app http://redmine.rubyforge.org/svn -2011-03-03T03:30:10.954225Z -4990 +2011-06-03T11:41:34.837596Z +6000 tmaruyama diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/all-wcprops --- a/app/controllers/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,299 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 40 -/svn/!svn/ver/4954/trunk/app/controllers +V 54 +/svn/!svn/ver/5946/branches/1.2-stable/app/controllers END -issues_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/4741/trunk/app/controllers/issues_controller.rb -END -queries_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3684/trunk/app/controllers/queries_controller.rb -END -sys_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3201/trunk/app/controllers/sys_controller.rb -END -mail_handler_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/3202/trunk/app/controllers/mail_handler_controller.rb -END -watchers_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3798/trunk/app/controllers/watchers_controller.rb -END -auto_completes_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/4503/trunk/app/controllers/auto_completes_controller.rb -END -my_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4497/trunk/app/controllers/my_controller.rb -END -comments_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4172/trunk/app/controllers/comments_controller.rb -END -members_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3784/trunk/app/controllers/members_controller.rb -END -context_menus_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/4580/trunk/app/controllers/context_menus_controller.rb -END -welcome_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/2941/trunk/app/controllers/welcome_controller.rb -END -journals_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4954/trunk/app/controllers/journals_controller.rb -END -time_entry_reports_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/4232/trunk/app/controllers/time_entry_reports_controller.rb -END -workflows_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4895/trunk/app/controllers/workflows_controller.rb -END -reports_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3692/trunk/app/controllers/reports_controller.rb -END -project_enumerations_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/4075/trunk/app/controllers/project_enumerations_controller.rb -END -custom_fields_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/3627/trunk/app/controllers/custom_fields_controller.rb -END -settings_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4432/trunk/app/controllers/settings_controller.rb -END -timelog_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4511/trunk/app/controllers/timelog_controller.rb -END -issue_moves_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/4292/trunk/app/controllers/issue_moves_controller.rb -END -users_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4729/trunk/app/controllers/users_controller.rb -END -files_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4177/trunk/app/controllers/files_controller.rb -END -application_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/4573/trunk/app/controllers/application_controller.rb -END -previews_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4174/trunk/app/controllers/previews_controller.rb -END -ldap_auth_sources_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/3744/trunk/app/controllers/ldap_auth_sources_controller.rb -END -auth_sources_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/3744/trunk/app/controllers/auth_sources_controller.rb -END -search_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3806/trunk/app/controllers/search_controller.rb -END -messages_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3528/trunk/app/controllers/messages_controller.rb -END -issue_relations_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/4764/trunk/app/controllers/issue_relations_controller.rb -END -versions_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4354/trunk/app/controllers/versions_controller.rb -END -boards_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3942/trunk/app/controllers/boards_controller.rb -END -attachments_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/3281/trunk/app/controllers/attachments_controller.rb -END -news_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4505/trunk/app/controllers/news_controller.rb -END -trackers_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3627/trunk/app/controllers/trackers_controller.rb -END -groups_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3934/trunk/app/controllers/groups_controller.rb -END -issue_statuses_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/3416/trunk/app/controllers/issue_statuses_controller.rb -END -roles_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3627/trunk/app/controllers/roles_controller.rb -END -wikis_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3370/trunk/app/controllers/wikis_controller.rb -END -repositories_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/4860/trunk/app/controllers/repositories_controller.rb -END -admin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3200/trunk/app/controllers/admin_controller.rb -END -projects_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4647/trunk/app/controllers/projects_controller.rb -END -account_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4757/trunk/app/controllers/account_controller.rb -END -calendars_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4388/trunk/app/controllers/calendars_controller.rb -END -issue_categories_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/3597/trunk/app/controllers/issue_categories_controller.rb -END -gantts_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/4388/trunk/app/controllers/gantts_controller.rb -END -documents_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3597/trunk/app/controllers/documents_controller.rb -END -wiki_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4429/trunk/app/controllers/wiki_controller.rb -END -activities_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/4579/trunk/app/controllers/activities_controller.rb -END -enumerations_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/3524/trunk/app/controllers/enumerations_controller.rb -END diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/entries --- a/app/controllers/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/controllers +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/controllers http://redmine.rubyforge.org/svn -2011-02-27T13:34:41.060565Z -4954 +2011-05-29T07:24:15.223638Z +5946 jplang @@ -32,11 +32,11 @@ -2011-03-03T11:05:10.000000Z -b2f39d4816a34c8fdbe451324ff298e4 -2011-01-22T13:28:20.816262Z -4741 -jplang +2011-06-06T13:18:33.000000Z +d59e2a3cb278ad2ba6a857ef6f85996f +2011-05-17T04:34:03.515027Z +5823 +tmaruyama has-props @@ -58,7 +58,7 @@ -12253 +12798 queries_controller.rb file @@ -66,11 +66,11 @@ -2011-03-03T11:05:10.000000Z -7ad6758cfd160c4b6ef6d71be06e087c -2010-04-19T15:08:28.751734Z -3684 -edavis10 +2011-06-06T13:18:33.000000Z +d5fb2cc0fcbed592991370967f38af2b +2011-04-03T14:31:32.940784Z +5304 +jplang has-props @@ -92,7 +92,7 @@ -2999 +3261 sys_controller.rb file @@ -100,7 +100,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 7a73aba15fcd447531d1552de01706d9 2009-12-20T09:44:28.044710Z 3201 @@ -134,11 +134,11 @@ -2011-03-03T11:05:10.000000Z -612f3e7497e14c728934e83fbe5778c4 -2009-12-20T09:45:04.782778Z -3202 -jplang +2011-06-06T13:18:33.000000Z +a198d0cd4a30c00a40a646cecbbe71e2 +2011-05-18T07:13:08.785903Z +5838 +tmaruyama has-props @@ -160,7 +160,7 @@ -1588 +1571 watchers_controller.rb file @@ -168,11 +168,11 @@ -2011-03-03T11:05:10.000000Z -3ee494bd8196306eab8913bd462b44da -2010-06-20T16:08:15.578906Z -3798 -edavis10 +2011-06-06T13:18:33.000000Z +74083636df6bb82e8dc1f4fbd3da2882 +2011-04-05T12:09:15.508559Z +5320 +jplang has-props @@ -194,7 +194,7 @@ -3234 +3021 auto_completes_controller.rb file @@ -202,7 +202,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z edbdb443ff7cc8f299f7772b3532eca1 2010-12-12T16:06:43.892596Z 4503 @@ -236,7 +236,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 40ea055e0f9f9aa83680751fdab5a0a5 2010-12-12T14:25:23.262992Z 4497 @@ -270,7 +270,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z c2289eb9b654117a101c072955d4c705 2010-09-23T15:20:19.085385Z 4172 @@ -304,7 +304,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 20e245fa61dc0dcb2f105a8f0e6af98c 2010-06-19T19:51:43.174421Z 3784 @@ -338,10 +338,10 @@ -2011-03-03T11:05:10.000000Z -596c3ab10f8cf4687f6d8b163e7a2243 -2010-12-29T19:55:52.079810Z -4580 +2011-06-06T13:18:33.000000Z +ee556c18cb658bef786cc6f69388f9b8 +2011-04-17T15:17:18.418900Z +5495 jplang @@ -364,7 +364,7 @@ -1847 +2432 welcome_controller.rb file @@ -372,7 +372,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 95ad1acf7766861a4dbd0aebd9c847de 2009-10-21T03:21:31.657956Z 2941 @@ -406,10 +406,10 @@ -2011-03-03T11:40:18.000000Z -0610cb98929633e94c97f1060f4f1566 -2011-02-27T13:34:41.060565Z -4954 +2011-06-06T13:18:33.000000Z +ddbc5c8699b975f1a27001b7ffd6d930 +2011-03-06T16:04:35.458860Z +5021 jplang has-props @@ -432,7 +432,7 @@ -4081 +4105 time_entry_reports_controller.rb file @@ -440,7 +440,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z dadcb57d89dc3c90c5fa099b143c07f8 2010-10-05T16:07:17.015270Z 4232 @@ -474,7 +474,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 73cdba17212ad890eea7b7c7ee140d7e 2011-02-20T15:38:07.840581Z 4895 @@ -508,7 +508,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 8f7e6e7308912a6169a700b0c88174a0 2010-04-27T16:43:52.584075Z 3692 @@ -542,7 +542,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 828b364ba2850ceddb3caa566bf10124 2010-09-10T16:00:49.687515Z 4075 @@ -570,17 +570,17 @@ 856 -custom_fields_controller.rb +timelog_controller.rb file -2011-03-03T11:05:10.000000Z -00272455ac5be11da48f92c4a443c538 -2010-04-03T11:54:24.331654Z -3627 -winterheart +2011-06-06T13:18:33.000000Z +240786bf604abb8c412b2776b93a2795 +2011-05-29T07:24:15.223638Z +5946 +jplang has-props @@ -602,7 +602,7 @@ -2373 +12415 settings_controller.rb file @@ -610,10 +610,78 @@ -2011-03-03T11:05:10.000000Z -98c4c9f33f038160a44752d229926c32 -2010-11-27T14:06:11.754120Z -4432 +2011-06-06T13:18:33.000000Z +cef6dc401dea01bdddca8a8a405aeaee +2011-05-18T02:18:47.811055Z +5827 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +2286 + +custom_fields_controller.rb +file + + + + +2011-06-06T13:18:33.000000Z +e87f5ffac690480de57ac0a90daad01c +2011-05-01T23:15:03.415033Z +5611 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +2395 + +users_controller.rb +file + + + + +2011-06-06T13:18:33.000000Z +24f3515ac133508d948f9b73fca6656a +2011-04-05T12:57:18.861470Z +5328 jplang has-props @@ -636,41 +704,7 @@ -2271 - -timelog_controller.rb -file - - - - -2011-03-03T11:05:10.000000Z -3e6698f208a263105c7b4a59c60b26b3 -2010-12-14T18:29:24.891563Z -4511 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -10484 +8639 issue_moves_controller.rb file @@ -678,67 +712,33 @@ -2011-03-03T11:05:10.000000Z -cacd6ffe0ce299e2ede9d45b7ef8af42 -2010-10-25T18:44:46.868009Z -4292 -edavis10 - - - - - - - - - - - - - - - - - - - - - -2441 - -users_controller.rb -file - - - - -2011-03-03T11:05:10.000000Z -7860374d98cda03916d9b06d9ec8d370 -2011-01-16T15:23:11.666065Z -4729 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -8474 +2011-06-06T13:18:33.000000Z +cbd01754dc3edc7ce30bd9e401608908 +2011-05-17T03:59:02.899695Z +5821 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +2435 files_controller.rb file @@ -746,33 +746,33 @@ -2011-03-03T11:05:10.000000Z -f0246e8f8dde5ea7b93e4dc2162181fc -2010-09-26T08:07:41.604064Z -4177 -jplang - - - - - - - - - - - - - - - - - - - - - -1289 +2011-06-06T13:18:33.000000Z +e40d3a7211765dd6a7dd0fde90906bab +2011-05-18T07:12:48.748391Z +5837 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +1273 application_controller.rb file @@ -780,11 +780,11 @@ -2011-03-03T11:05:10.000000Z -218c497f1c4c6d7b41cdac214e595156 -2010-12-23T14:49:14.339855Z -4573 -jplang +2011-06-06T13:18:33.000000Z +bc154e2fdd08480fb618932b2f969313 +2011-05-12T04:25:47.924303Z +5749 +tmaruyama has-props @@ -806,75 +806,7 @@ -15545 - -previews_controller.rb -file - - - - -2011-03-03T11:05:10.000000Z -c5ae4fae18159e70fd81c2487bb1daa1 -2010-09-24T16:26:46.819682Z -4174 -edavis10 - - - - - - - - - - - - - - - - - - - - - -957 - -ldap_auth_sources_controller.rb -file - - - - -2011-03-03T11:05:10.000000Z -5f7b9cb2e9c8a60db58ea0833cf481c5 -2010-05-23T03:16:31.304135Z -3744 -edavis10 - - - - - - - - - - - - - - - - - - - - - -917 +15561 auth_sources_controller.rb file @@ -882,7 +814,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 237280766d09418161536250d514a7bf 2010-05-23T03:16:31.304135Z 3744 @@ -910,13 +842,81 @@ 2542 +ldap_auth_sources_controller.rb +file + + + + +2011-06-06T13:14:59.000000Z +5f7b9cb2e9c8a60db58ea0833cf481c5 +2010-05-23T03:16:31.304135Z +3744 +edavis10 + + + + + + + + + + + + + + + + + + + + + +917 + +previews_controller.rb +file + + + + +2011-06-06T13:18:33.000000Z +fa4b7467e77f8a7bc86ff60a68052684 +2011-03-28T21:45:30.892324Z +5246 +jplang + + + + + + + + + + + + + + + + + + + + + +1754 + search_controller.rb file -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 0015154998f830227b636ee423f007f3 2010-06-20T20:01:32.722003Z 3806 @@ -950,7 +950,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z f3f4378ec15e1401ead0dcac4e9cb059 2010-03-03T17:05:00.967826Z 3528 @@ -978,13 +978,47 @@ 5824 +versions_controller.rb +file + + + + +2011-06-06T13:14:59.000000Z +a98fb262a20669600a85c0f72202c5e6 +2010-11-01T13:13:32.982466Z +4354 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +6241 + issue_relations_controller.rb file -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 8c5249f85056c74e0ab06b5dfa9fed72 2011-01-27T21:38:47.430923Z 4764 @@ -1012,47 +1046,13 @@ 2450 -versions_controller.rb -file - - - - -2011-03-03T11:05:10.000000Z -a98fb262a20669600a85c0f72202c5e6 -2010-11-01T13:13:32.982466Z -4354 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6241 - boards_controller.rb file -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 52638c82da929081099076d5aa0f9212 2010-08-16T23:39:27.396462Z 3942 @@ -1086,11 +1086,11 @@ -2011-03-03T11:05:10.000000Z -21c0e5d894d1429ac39f3253ae021594 -2010-01-05T18:16:03.565347Z -3281 -jplang +2011-06-06T13:18:33.000000Z +c679c8cbf25d1c5d30e2f88bb177a202 +2011-05-18T07:12:27.059090Z +5836 +tmaruyama has-props @@ -1112,7 +1112,7 @@ -2982 +2954 news_controller.rb file @@ -1120,10 +1120,10 @@ -2011-03-03T11:05:10.000000Z -cb358f888a6a92cc99bef83af92cd766 -2010-12-12T17:00:52.100205Z -4505 +2011-06-06T13:18:33.000000Z +cc665f966818b086c188baf351bf8966 +2011-03-04T14:32:58.878627Z +5003 jplang has-props @@ -1146,7 +1146,7 @@ -3369 +3396 trackers_controller.rb file @@ -1154,7 +1154,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z a5e793eb94e501be4c1a39acc65cc568 2010-04-03T11:54:24.331654Z 3627 @@ -1188,11 +1188,11 @@ -2011-03-03T11:05:10.000000Z -77209ec52ddcefafb0bfbb76195167ec -2010-08-10T22:37:00.826946Z -3934 -jbbarth +2011-06-06T13:18:33.000000Z +4e6c1f74ad57c0df68dfb3a6c6432a2e +2011-04-01T16:47:30.350690Z +5284 +jplang has-props @@ -1214,7 +1214,7 @@ -5214 +5213 issue_statuses_controller.rb file @@ -1222,7 +1222,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z f0fdda9126d71c0b2d4638de50ab1097 2010-02-12T19:15:39.389877Z 3416 @@ -1256,11 +1256,11 @@ -2011-03-03T11:05:10.000000Z -28f2e44219870c62c9844354b78af6e1 -2010-04-03T11:54:24.331654Z -3627 -winterheart +2011-06-06T13:18:33.000000Z +18be86518ea841401ee1c2b3233d72a4 +2011-05-01T23:15:03.415033Z +5611 +tmaruyama has-props @@ -1282,7 +1282,7 @@ -2612 +2638 wikis_controller.rb file @@ -1290,7 +1290,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 7ae79a9d22586240a01af73834b718a3 2010-02-05T16:57:02.094258Z 3370 @@ -1324,10 +1324,10 @@ -2011-03-03T11:40:18.000000Z -5511ecf5c7190efe44398994a222b486 -2011-02-17T14:17:04.791825Z -4860 +2011-06-06T13:18:33.000000Z +5f8aa278140d3fe42d722efd89fda547 +2011-05-21T06:16:19.667418Z +5875 tmaruyama has-props @@ -1350,7 +1350,7 @@ -11539 +12667 admin_controller.rb file @@ -1358,11 +1358,11 @@ -2011-03-03T11:05:10.000000Z -ed65a11326fe54914ba3a750a2b6f943 -2009-12-19T20:33:24.113306Z -3200 -jplang +2011-06-06T13:18:33.000000Z +4577094f50fcbc76c8dba52341a2fbe2 +2011-04-25T23:21:34.669083Z +5550 +tmaruyama has-props @@ -1384,7 +1384,7 @@ -3104 +3119 projects_controller.rb file @@ -1392,10 +1392,10 @@ -2011-03-03T11:05:10.000000Z -c07d79c1bd100dd8972ea408c4fe549f -2011-01-06T20:57:17.003359Z -4647 +2011-06-06T13:18:33.000000Z +34607f6af6fe864c4f2be4fba2d288fc +2011-04-29T07:26:45.965477Z +5581 jplang has-props @@ -1418,7 +1418,7 @@ -10103 +10004 account_controller.rb file @@ -1426,7 +1426,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 7b162cad903bb22948f7040a48509256 2011-01-23T11:40:07.678287Z 4757 @@ -1460,10 +1460,10 @@ -2011-03-03T11:05:10.000000Z -0be20cab6d5ea49f428a90cf3afef3e3 -2010-11-07T22:38:10.728638Z -4388 +2011-06-06T13:18:33.000000Z +4bc844343a8613ab25bd4c76969d566a +2011-04-01T14:34:44.070899Z +5276 jplang @@ -1486,7 +1486,7 @@ -1390 +2155 issue_categories_controller.rb file @@ -1494,11 +1494,11 @@ -2011-03-03T11:05:10.000000Z -119ceb4a27aa554d03867f46cb142d0e -2010-03-17T15:41:58.766740Z -3597 -edavis10 +2011-06-06T13:18:33.000000Z +c42630be286026f052791d256b487246 +2011-05-01T23:15:03.415033Z +5611 +tmaruyama has-props @@ -1520,7 +1520,7 @@ -3338 +3364 gantts_controller.rb file @@ -1528,10 +1528,10 @@ -2011-03-03T11:05:10.000000Z -81dbee1745da99b9ea499f3fbe1d3944 -2010-11-07T22:38:10.728638Z -4388 +2011-06-06T13:18:33.000000Z +8093015b8337589c3a8dd96f912a626c +2011-04-01T14:34:44.070899Z +5276 jplang @@ -1554,7 +1554,7 @@ -1019 +1786 documents_controller.rb file @@ -1562,7 +1562,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z c2c68bf5fa3ed22a8f55c8414d1efce9 2010-03-17T15:41:58.766740Z 3597 @@ -1596,11 +1596,11 @@ -2011-03-03T11:05:10.000000Z -ccc57886f63cb0efb0149b601dd2ac43 -2010-11-27T10:34:44.408431Z -4429 -jplang +2011-06-06T13:18:33.000000Z +4e9a4e1dd2d09a4cee7f4df56e8659f1 +2011-05-17T04:34:44.952857Z +5824 +tmaruyama has-props @@ -1622,7 +1622,7 @@ -10185 +10000 activities_controller.rb file @@ -1630,33 +1630,33 @@ -2011-03-03T11:05:10.000000Z -ad33818a03b408419be4e616e8c88b5c -2010-12-29T19:37:42.740543Z -4579 -jplang - - - - - - - - - - - - - - - - - - - - - -2037 +2011-06-06T13:18:33.000000Z +9c942b1453ca9c17ecdda63d252646dc +2011-05-18T07:12:04.304929Z +5835 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +2018 enumerations_controller.rb file @@ -1664,11 +1664,11 @@ -2011-03-03T11:05:10.000000Z -1caaedc7bb0a3085878dc94446c70ab0 -2010-03-02T20:03:09.514061Z -3524 -jplang +2011-06-06T13:18:33.000000Z +4c46e4cd141ad0a3534b60df7be534bc +2011-05-01T23:15:03.415033Z +5611 +tmaruyama has-props @@ -1690,5 +1690,5 @@ -2706 +2734 diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/activities_controller.rb.svn-base --- a/app/controllers/.svn/text-base/activities_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/activities_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -5,7 +5,7 @@ def index @days = Setting.activity_days_default.to_i - + if params[:from] begin; @date_to = params[:from].to_date + 1; rescue; end end @@ -14,18 +14,18 @@ @date_from = @date_to - @days @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id])) - - @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, + + @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, :with_subprojects => @with_subprojects, :author => @author) @activity.scope_select {|t| !params["show_#{t}"].nil?} @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty? events = @activity.events(@date_from, @date_to) - + if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, User.current, current_language]) respond_to do |format| - format.html { + format.html { @events_by_day = events.group_by(&:event_date) render :layout => false if request.xhr? } @@ -40,7 +40,7 @@ } end end - + rescue ActiveRecord::RecordNotFound render_404 end @@ -55,5 +55,4 @@ rescue ActiveRecord::RecordNotFound render_404 end - end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/admin_controller.rb.svn-base --- a/app/controllers/.svn/text-base/admin_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/admin_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -17,9 +17,7 @@ class AdminController < ApplicationController layout 'admin' - before_filter :require_admin - helper :sort include SortHelper @@ -30,22 +28,20 @@ def projects @status = params[:status] ? params[:status].to_i : 1 c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status]) - unless params[:name].blank? name = "%#{params[:name].strip.downcase}%" c << ["LOWER(identifier) LIKE ? OR LOWER(name) LIKE ?", name, name] end - @projects = Project.find :all, :order => 'lft', :conditions => c.conditions render :action => "projects", :layout => false if request.xhr? end - + def plugins @plugins = Redmine::Plugin.all end - + # Loads the default configuration # (roles, trackers, statuses, workflow, enumerations) def default_configuration @@ -59,7 +55,7 @@ end redirect_to :action => 'index' end - + def test_email raise_delivery_errors = ActionMailer::Base.raise_delivery_errors # Force ActionMailer to raise delivery errors so we can catch it @@ -73,14 +69,16 @@ ActionMailer::Base.raise_delivery_errors = raise_delivery_errors redirect_to :controller => 'settings', :action => 'edit', :tab => 'notifications' end - + def info @db_adapter_name = ActiveRecord::Base.connection.adapter_name @checklist = [ - [:text_default_administrator_account_changed, User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?], + [:text_default_administrator_account_changed, + User.find(:first, + :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?], [:text_file_repository_writable, File.writable?(Attachment.storage_path)], - [:text_plugin_assets_writable, File.writable?(Engines.public_directory)], - [:text_rmagick_available, Object.const_defined?(:Magick)] + [:text_plugin_assets_writable, File.writable?(Engines.public_directory)], + [:text_rmagick_available, Object.const_defined?(:Magick)] ] - end + end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/application_controller.rb.svn-base --- a/app/controllers/.svn/text-base/application_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/application_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -23,29 +23,29 @@ layout 'base' exempt_from_layout 'builder', 'rsb' - + # Remove broken cookie after upgrade from 0.8.x (#4292) # See https://rails.lighthouseapp.com/projects/8994/tickets/3360 # TODO: remove it when Rails is fixed before_filter :delete_broken_cookies def delete_broken_cookies if cookies['_redmine_session'] && cookies['_redmine_session'] !~ /--/ - cookies.delete '_redmine_session' + cookies.delete '_redmine_session' redirect_to home_path return false end end - + before_filter :user_setup, :check_if_login_required, :set_localization filter_parameter_logging :password protect_from_forgery - + rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token - + include Redmine::Search::Controller include Redmine::MenuManager::MenuController helper Redmine::MenuManager::MenuHelper - + Redmine::Scm::Base.all.each do |scm| require_dependency "repository/#{scm.underscore}" end @@ -56,7 +56,7 @@ # Find the current user User.current = find_current_user end - + # Returns the current user or nil if no user is logged in # and starts a session if needed def find_current_user @@ -94,14 +94,14 @@ User.current = User.anonymous end end - + # check if login is globally required to access the application def check_if_login_required # no check needed if user is already logged in return true if User.current.logged? require_login if Setting.login_required? - end - + end + def set_localization lang = nil if User.current.logged? @@ -117,7 +117,7 @@ lang ||= Setting.default_language set_language_if_valid(lang) end - + def require_login if !User.current.logged? # Extract only the basic url parameters on non-GET requests @@ -146,7 +146,7 @@ end true end - + def deny_access User.current.logged? ? render_403 : require_login end @@ -197,7 +197,7 @@ # Finds and sets @project based on @object.project def find_project_from_association render_404 unless @object.present? - + @project = @object.project rescue ActiveRecord::RecordNotFound render_404 @@ -221,12 +221,16 @@ def find_issues @issues = Issue.find_all_by_id(params[:id] || params[:ids]) raise ActiveRecord::RecordNotFound if @issues.empty? + if @issues.detect {|issue| !issue.visible?} + deny_access + return + end @projects = @issues.collect(&:project).compact.uniq @project = @projects.first if @projects.size == 1 rescue ActiveRecord::RecordNotFound render_404 end - + # Check if project is unique before bulk operations def check_project_uniqueness unless @project @@ -235,7 +239,7 @@ return false end end - + # make sure that the user is a member of the project (or admin) if project is private # used as a before_filter for actions that do not require any particular permission on the project def check_project_privacy @@ -271,27 +275,28 @@ end end redirect_to default + false end - + def render_403(options={}) @project = nil render_error({:message => :notice_not_authorized, :status => 403}.merge(options)) return false end - + def render_404(options={}) render_error({:message => :notice_file_not_found, :status => 404}.merge(options)) return false end - + # Renders an error response def render_error(arg) arg = {:message => arg} unless arg.is_a?(Hash) - + @message = arg[:message] @message = l(@message) if @message.is_a?(Symbol) @status = arg[:status] || 500 - + respond_to do |format| format.html { render :template => 'common/error', :layout => use_layout, :status => @status @@ -309,31 +314,31 @@ def use_layout request.xhr? ? false : 'base' end - + def invalid_authenticity_token if api_request? logger.error "Form authenticity token is missing or is invalid. API calls must include a proper Content-type header (text/xml or text/json)." end render_error "Invalid form authenticity token." end - - def render_feed(items, options={}) + + def render_feed(items, options={}) @items = items || [] @items.sort! {|x,y| y.event_datetime <=> x.event_datetime } @items = @items.slice(0, Setting.feeds_limit.to_i) @title = options[:title] || Setting.app_title render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml' end - + def self.accept_key_auth(*actions) actions = actions.flatten.map(&:to_s) write_inheritable_attribute('accept_key_auth_actions', actions) end - + def accept_key_auth_actions self.class.read_inheritable_attribute('accept_key_auth_actions') || [] end - + # Returns the number of objects that should be displayed # on the paginated list def per_page_option @@ -369,10 +374,10 @@ offset = 0 if offset < 0 end offset ||= 0 - + [offset, limit] end - + # qvalues http header parser # code taken from webrick def parse_qvalues(value) @@ -393,16 +398,16 @@ rescue nil end - + # Returns a string that can be used as filename value in Content-Disposition header def filename_for_content_disposition(name) request.env['HTTP_USER_AGENT'] =~ %r{MSIE} ? ERB::Util.url_encode(name) : name end - + def api_request? %w(xml json).include? params[:format] end - + # Returns the API key present in the request def api_key_from_request if params[:key].present? @@ -459,7 +464,7 @@ ) render options end - + # Overrides #default_template so that the api template # is used automatically if it exists def default_template(action_name = self.action_name) @@ -473,7 +478,7 @@ end super end - + # Overrides #pick_layout so that #render with no arguments # doesn't use the layout for api requests def pick_layout(*args) diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/attachments_controller.rb.svn-base --- a/app/controllers/.svn/text-base/attachments_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/attachments_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -19,9 +19,9 @@ before_filter :find_project before_filter :file_readable, :read_authorize, :except => :destroy before_filter :delete_authorize, :only => :destroy - + verify :method => :post, :only => :destroy - + def show if @attachment.is_diff? @diff = File.new(@attachment.diskfile, "rb").read @@ -33,19 +33,19 @@ download end end - + def download if @attachment.container.is_a?(Version) || @attachment.container.is_a?(Project) @attachment.increment_download end - + # images are sent inline send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename), - :type => detect_content_type(@attachment), + :type => detect_content_type(@attachment), :disposition => (@attachment.image? ? 'inline' : 'attachment') - + end - + def destroy # Make sure association callbacks are called @attachment.container.attachments.delete(@attachment) @@ -53,7 +53,7 @@ rescue ::ActionController::RedirectBackError redirect_to :controller => 'projects', :action => 'show', :id => @project end - + private def find_project @attachment = Attachment.find(params[:id]) @@ -63,20 +63,20 @@ rescue ActiveRecord::RecordNotFound render_404 end - + # Checks that the file exists and is readable def file_readable @attachment.readable? ? true : render_404 end - + def read_authorize @attachment.visible? ? true : deny_access end - + def delete_authorize @attachment.deletable? ? true : deny_access end - + def detect_content_type(attachment) content_type = attachment.content_type if content_type.blank? diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/calendars_controller.rb.svn-base --- a/app/controllers/.svn/text-base/calendars_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/calendars_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,20 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + class CalendarsController < ApplicationController menu_item :calendar before_filter :find_optional_project @@ -36,9 +53,4 @@ render :action => 'show', :layout => false if request.xhr? end - - def update - show - end - end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/context_menus_controller.rb.svn-base --- a/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ class ContextMenusController < ApplicationController helper :watchers + helper :issues def issues @issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project) @@ -40,5 +41,18 @@ render :layout => false end - + + def time_entries + @time_entries = TimeEntry.all( + :conditions => {:id => params[:ids]}, :include => :project) + @projects = @time_entries.collect(&:project).compact.uniq + @project = @projects.first if @projects.size == 1 + @activities = TimeEntryActivity.shared.active + @can = {:edit => User.current.allowed_to?(:log_time, @projects), + :update => User.current.allowed_to?(:log_time, @projects), + :delete => User.current.allowed_to?(:log_time, @projects) + } + @back = back_url + render :layout => false + end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/custom_fields_controller.rb.svn-base --- a/app/controllers/.svn/text-base/custom_fields_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/custom_fields_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -38,8 +38,9 @@ flash[:notice] = l(:notice_successful_create) call_hook(:controller_custom_fields_new_after_save, :params => params, :custom_field => @custom_field) redirect_to :action => 'index', :tab => @custom_field.class.name + else + @trackers = Tracker.find(:all, :order => 'position') end - @trackers = Tracker.find(:all, :order => 'position') end def edit @@ -48,8 +49,9 @@ flash[:notice] = l(:notice_successful_update) call_hook(:controller_custom_fields_edit_after_save, :params => params, :custom_field => @custom_field) redirect_to :action => 'index', :tab => @custom_field.class.name + else + @trackers = Tracker.find(:all, :order => 'position') end - @trackers = Tracker.find(:all, :order => 'position') end def destroy diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/enumerations_controller.rb.svn-base --- a/app/controllers/.svn/text-base/enumerations_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/enumerations_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -75,10 +75,12 @@ # No associated objects @enumeration.destroy redirect_to :action => 'index' + return elsif params[:reassign_to_id] if reassign_to = @enumeration.class.find_by_id(params[:reassign_to_id]) @enumeration.destroy(reassign_to) redirect_to :action => 'index' + return end end @enumerations = @enumeration.class.find(:all) - [@enumeration] diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/files_controller.rb.svn-base --- a/app/controllers/.svn/text-base/files_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/files_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -13,7 +13,7 @@ 'created_on' => "#{Attachment.table_name}.created_on", 'size' => "#{Attachment.table_name}.filesize", 'downloads' => "#{Attachment.table_name}.downloads" - + @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)] @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse render :layout => !request.xhr? diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/gantts_controller.rb.svn-base --- a/app/controllers/.svn/text-base/gantts_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/gantts_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,20 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + class GanttsController < ApplicationController menu_item :gantt before_filter :find_optional_project @@ -28,9 +45,4 @@ format.pdf { send_data(@gantt.to_pdf, :type => 'application/pdf', :filename => "#{basename}.pdf") } end end - - def update - show - end - end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/groups_controller.rb.svn-base --- a/app/controllers/.svn/text-base/groups_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/groups_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -132,7 +132,7 @@ def autocomplete_for_user @group = Group.find(params[:id]) - @users = User.active.like(params[:q]).find(:all, :limit => 100) - @group.users + @users = User.active.not_in_group(@group).like(params[:q]).all(:limit => 100) render :layout => false end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/issue_categories_controller.rb.svn-base --- a/app/controllers/.svn/text-base/issue_categories_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/issue_categories_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -65,10 +65,12 @@ # No issue assigned to this category @category.destroy redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' + return elsif params[:todo] reassign_to = @project.issue_categories.find_by_id(params[:reassign_to_id]) if params[:todo] == 'reassign' @category.destroy(reassign_to) redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' + return end @categories = @project.issue_categories - [@category] end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/issue_moves_controller.rb.svn-base --- a/app/controllers/.svn/text-base/issue_moves_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/issue_moves_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -2,7 +2,7 @@ default_search_scope :issues before_filter :find_issues, :check_project_uniqueness before_filter :authorize - + def new prepare_for_issue_move render :layout => false if request.xhr? @@ -48,7 +48,7 @@ @copy = params[:copy_options] && params[:copy_options][:copy] @allowed_projects = Issue.allowed_target_projects_on_move @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id] - @target_project ||= @project + @target_project ||= @project @trackers = @target_project.trackers @available_statuses = Workflow.available_statuses(@project) @notes = params[:notes] diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/issues_controller.rb.svn-base --- a/app/controllers/.svn/text-base/issues_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/issues_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -18,7 +18,7 @@ class IssuesController < ApplicationController menu_item :new_issue, :only => [:new, :create] default_search_scope :issues - + before_filter :find_issue, :only => [:show, :edit, :update] before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :move, :perform_move, :destroy] before_filter :check_project_uniqueness, :only => [:move, :perform_move] @@ -30,10 +30,10 @@ accept_key_auth :index, :show, :create, :update, :destroy rescue_from Query::StatementInvalid, :with => :query_statement_invalid - + helper :journals helper :projects - include ProjectsHelper + include ProjectsHelper helper :custom_fields include CustomFieldsHelper helper :issue_relations @@ -60,12 +60,12 @@ verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } verify :method => :post, :only => :bulk_update, :render => {:nothing => true, :status => :method_not_allowed } verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } - + def index retrieve_query sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria) sort_update(@query.sortable_columns) - + if @query.valid? case params[:format] when 'csv', 'pdf' @@ -77,16 +77,16 @@ else @limit = per_page_option end - + @issue_count = @query.issue_count @issue_pages = Paginator.new self, @issue_count, @limit, params['page'] @offset ||= @issue_pages.current.offset @issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version], - :order => sort_clause, - :offset => @offset, + :order => sort_clause, + :offset => @offset, :limit => @limit) @issue_count_by_group = @query.issue_count_by_group - + respond_to do |format| format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? } format.api @@ -101,18 +101,22 @@ rescue ActiveRecord::RecordNotFound render_404 end - + def show @journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC") @journals.each_with_index {|j,i| j.indice = i+1} @journals.reverse! if User.current.wants_comments_in_reverse_order? - @changesets = @issue.changesets.visible.all - @changesets.reverse! if User.current.wants_comments_in_reverse_order? + + if User.current.allowed_to?(:view_changesets, @project) + @changesets = @issue.changesets.visible.all + @changesets.reverse! if User.current.wants_comments_in_reverse_order? + end + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } @allowed_statuses = @issue.new_statuses_allowed_to(User.current) @edit_allowed = User.current.allowed_to?(:edit_issues, @project) @priorities = IssuePriority.all - @time_entry = TimeEntry.new + @time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project) respond_to do |format| format.html { render :template => 'issues/show.rhtml' } format.api @@ -152,7 +156,7 @@ end end end - + def edit update_issue_from_params @@ -214,7 +218,7 @@ set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids) redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project}) end - + def destroy @hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f if @hours > 0 @@ -236,7 +240,13 @@ return unless api_request? end end - @issues.each(&:destroy) + @issues.each do |issue| + begin + issue.reload.destroy + rescue ::ActiveRecord::RecordNotFound # raised by #reload if issue no longer exists + # nothing to do, issue was already deleted (eg. by a parent) + end + end respond_to do |format| format.html { redirect_back_or_default(:action => 'index', :project_id => @project) } format.api { head :ok } @@ -245,19 +255,25 @@ private def find_issue + # Issue.visible.find(...) can not be used to redirect user to the login form + # if the issue actually exists but requires authentication @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category]) + unless @issue.visible? + deny_access + return + end @project = @issue.project rescue ActiveRecord::RecordNotFound render_404 end - + def find_project project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id] @project = Project.find(project_id) rescue ActiveRecord::RecordNotFound render_404 end - + # Used by #edit and #update to set some common instance variables # from the params # TODO: Refactor, not everything in here is needed by #edit @@ -265,9 +281,9 @@ @allowed_statuses = @issue.new_statuses_allowed_to(User.current) @priorities = IssuePriority.all @edit_allowed = User.current.allowed_to?(:edit_issues, @project) - @time_entry = TimeEntry.new + @time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project) @time_entry.attributes = params[:time_entry] - + @notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil) @issue.init_journal(User.current, @notes) @issue.safe_attributes = params[:issue] @@ -283,7 +299,7 @@ else @issue = @project.issues.visible.find(params[:id]) end - + @issue.project = @project # Tracker must be set before custom field values @issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first) diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/journals_controller.rb.svn-base --- a/app/controllers/.svn/text-base/journals_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/journals_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -24,6 +24,7 @@ menu_item :issues helper :issues + helper :custom_fields helper :queries include QueriesHelper helper :sort diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/mail_handler_controller.rb.svn-base --- a/app/controllers/.svn/text-base/mail_handler_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/mail_handler_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,27 +1,27 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MailHandlerController < ActionController::Base before_filter :check_credential - + verify :method => :post, :only => :index, :render => { :nothing => true, :status => 405 } - + # Submits an incoming email to MailHandler def index options = params.dup @@ -32,9 +32,9 @@ render :nothing => true, :status => :unprocessable_entity end end - + private - + def check_credential User.current = nil unless Setting.mail_handler_api_enabled? && params[:key].to_s == Setting.mail_handler_api_key diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/news_controller.rb.svn-base --- a/app/controllers/.svn/text-base/news_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/news_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -25,6 +25,8 @@ before_filter :find_optional_project, :only => :index accept_key_auth :index + helper :watchers + def index case params[:format] when 'xml', 'json' diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/previews_controller.rb.svn-base --- a/app/controllers/.svn/text-base/previews_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/previews_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,20 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + class PreviewsController < ApplicationController before_filter :find_project diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/projects_controller.rb.svn-base --- a/app/controllers/.svn/text-base/projects_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/projects_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -117,7 +117,6 @@ Mailer.with_deliveries(params[:notifications] == '1') do @project = Project.new @project.safe_attributes = params[:project] - @project.enabled_module_names = params[:enabled_modules] if validate_parent_id && @project.copy(@source_project, :only => params[:only]) @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') flash[:notice] = l(:notice_successful_create) @@ -143,7 +142,7 @@ end @users_by_role = @project.users_by_role - @subprojects = @project.children.visible + @subprojects = @project.children.visible.all @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC") @trackers = @project.rolled_up_trackers @@ -156,11 +155,10 @@ :include => [:project, :status, :tracker], :conditions => cond) - TimeEntry.visible_by(User.current) do - @total_hours = TimeEntry.sum(:hours, - :include => :project, - :conditions => cond).to_f + if User.current.allowed_to?(:view_time_entries, @project) + @total_hours = TimeEntry.visible.sum(:hours, :include => :project, :conditions => cond).to_f end + @key = User.current.rss_key respond_to do |format| diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/queries_controller.rb.svn-base --- a/app/controllers/.svn/text-base/queries_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/queries_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -25,11 +25,12 @@ @query.project = params[:query_is_for_all] ? nil : @project @query.user = User.current @query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin? + + @query.add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v]) if params[:fields] || params[:f] + @query.group_by ||= params[:group_by] + @query.column_names = params[:c] if params[:c] @query.column_names = nil if params[:default_columns] - @query.add_filters(params[:fields], params[:operators], params[:values]) if params[:fields] - @query.group_by ||= params[:group_by] - if request.post? && params[:confirm] && @query.save flash[:notice] = l(:notice_successful_create) redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :query_id => @query @@ -41,10 +42,12 @@ def edit if request.post? @query.filters = {} - @query.add_filters(params[:fields], params[:operators], params[:values]) if params[:fields] + @query.add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v]) if params[:fields] || params[:f] @query.attributes = params[:query] @query.project = nil if params[:query_is_for_all] @query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin? + @query.group_by ||= params[:group_by] + @query.column_names = params[:c] if params[:c] @query.column_names = nil if params[:default_columns] if @query.save diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/repositories_controller.rb.svn-base --- a/app/controllers/.svn/text-base/repositories_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/repositories_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -26,33 +26,45 @@ menu_item :repository menu_item :settings, :only => :edit default_search_scope :changesets - + before_filter :find_repository, :except => :edit before_filter :find_project, :only => :edit before_filter :authorize accept_key_auth :revisions - + rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed - + def edit @repository = @project.repository - if !@repository + if !@repository && !params[:repository_scm].blank? @repository = Repository.factory(params[:repository_scm]) @repository.project = @project if @repository end if request.post? && @repository - @repository.attributes = params[:repository] + p1 = params[:repository] + p = {} + p_extra = {} + p1.each do |k, v| + if k =~ /^extra_/ + p_extra[k] = v + else + p[k] = v + end + end + @repository.attributes = p + @repository.merge_extra_info(p_extra) @repository.save end render(:update) do |page| - page.replace_html "tab-content-repository", :partial => 'projects/settings/repository' + page.replace_html "tab-content-repository", + :partial => 'projects/settings/repository' if @repository && !@project.repository - @project.reload #needed to reload association + @project.reload # needed to reload association page.replace_html "main-menu", render_main_menu(@project) end end end - + def committers @committers = @repository.committers @users = @project.users @@ -70,13 +82,17 @@ def destroy @repository.destroy - redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'repository' + redirect_to :controller => 'projects', + :action => 'settings', + :id => @project, + :tab => 'repository' end def show @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? @entries = @repository.entries(@path, @rev) + @changeset = @repository.find_changeset_by_name(@rev) if request.xhr? @entries ? render(:partial => 'dir_list_content') : render(:nothing => true) else @@ -122,17 +138,35 @@ @content = @repository.cat(@path, @rev) (show_error_not_found; return) unless @content - if 'raw' == params[:format] || @content.is_binary_data? || - (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) + if 'raw' == params[:format] || + (@content.size && @content.size > Setting.file_max_size_displayed.to_i.kilobyte) || + ! is_entry_text_data?(@content, @path) # Force the download - send_data @content, :filename => filename_for_content_disposition(@path.split('/').last) + send_opt = { :filename => filename_for_content_disposition(@path.split('/').last) } + send_type = Redmine::MimeType.of(@path) + send_opt[:type] = send_type.to_s if send_type + send_data @content, send_opt else # Prevent empty lines when displaying a file with Windows style eol + # TODO: UTF-16 + # Is this needs? AttachmentsController reads file simply. @content.gsub!("\r\n", "\n") @changeset = @repository.find_changeset_by_name(@rev) - end + end end + def is_entry_text_data?(ent, path) + # UTF-16 contains "\x00". + # It is very strict that file contains less than 30% of ascii symbols + # in non Western Europe. + return true if Redmine::MimeType.is_type?('text', path) + # Ruby 1.8.6 has a bug of integer divisions. + # http://apidock.com/ruby/v1_8_6_287/String/is_binary_data%3F + return false if ent.is_binary_data? + true + end + private :is_entry_text_data? + def annotate @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @@ -167,14 +201,14 @@ else @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline' @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type) - + # Save diff type as user preference if User.current.logged? && @diff_type != User.current.pref[:diff_type] User.current.pref[:diff_type] = @diff_type User.current.preference.save end - - @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}") + @cache_key = "repositories/diff/#{@repository.id}/" + + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}") unless read_fragment(@cache_key) @diff = @repository.diff(@path, @rev, @rev_to) show_error_not_found unless @diff @@ -204,7 +238,7 @@ render_404 end end - + private REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i @@ -217,7 +251,7 @@ @path ||= '' @rev = params[:rev].blank? ? @repository.default_branch : params[:rev].strip @rev_to = params[:rev_to] - + unless @rev.to_s.match(REV_PARAM_RE) && @rev_to.to_s.match(REV_PARAM_RE) if @repository.branches.blank? raise InvalidRevisionParam @@ -232,27 +266,31 @@ def show_error_not_found render_error :message => l(:error_scm_not_found), :status => 404 end - + # Handler for Redmine::Scm::Adapters::CommandFailed exception def show_error_command_failed(exception) render_error l(:error_scm_command_failed, exception.message) end - + def graph_commits_per_month(repository) @date_to = Date.today @date_from = @date_to << 11 @date_from = Date.civil(@date_from.year, @date_from.month, 1) - commits_by_day = repository.changesets.count(:all, :group => :commit_date, :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) + commits_by_day = repository.changesets.count( + :all, :group => :commit_date, + :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) commits_by_month = [0] * 12 commits_by_day.each {|c| commits_by_month[c.first.to_date.months_ago] += c.last } - changes_by_day = repository.changes.count(:all, :group => :commit_date, :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) + changes_by_day = repository.changes.count( + :all, :group => :commit_date, + :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) changes_by_month = [0] * 12 changes_by_day.each {|c| changes_by_month[c.first.to_date.months_ago] += c.last } - + fields = [] 12.times {|m| fields << month_name(((Date.today.month - 1 - m) % 12) + 1)} - + graph = SVG::Graph::Bar.new( :height => 300, :width => 800, @@ -264,7 +302,7 @@ :graph_title => l(:label_commits_per_month), :show_graph_title => true ) - + graph.add_data( :data => commits_by_month[0..11].reverse, :title => l(:label_revision_plural) @@ -274,7 +312,7 @@ :data => changes_by_month[0..11].reverse, :title => l(:label_change_plural) ) - + graph.burn end @@ -284,18 +322,18 @@ changes_by_author = repository.changes.count(:all, :group => :committer) h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o} - + fields = commits_by_author.collect {|r| r.first} commits_data = commits_by_author.collect {|r| r.last} changes_data = commits_by_author.collect {|r| h[r.first] || 0} - + fields = fields + [""]*(10 - fields.length) if fields.length<10 commits_data = commits_data + [0]*(10 - commits_data.length) if commits_data.length<10 changes_data = changes_data + [0]*(10 - changes_data.length) if changes_data.length<10 - + # Remove email adress in usernames fields = fields.collect {|c| c.gsub(%r{<.+@.+>}, '') } - + graph = SVG::Graph::BarHorizontal.new( :height => 400, :width => 800, @@ -307,22 +345,18 @@ :graph_title => l(:label_commits_per_author), :show_graph_title => true ) - graph.add_data( :data => commits_data, :title => l(:label_revision_plural) ) - graph.add_data( :data => changes_data, :title => l(:label_change_plural) ) - graph.burn end +end -end - class Date def months_ago(date = Date.today) (date.year - self.year)*12 + (date.month - self.month) diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/roles_controller.rb.svn-base --- a/app/controllers/.svn/text-base/roles_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/roles_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -38,9 +38,10 @@ end flash[:notice] = l(:notice_successful_create) redirect_to :action => 'index' + else + @permissions = @role.setable_permissions + @roles = Role.find :all, :order => 'builtin, position' end - @permissions = @role.setable_permissions - @roles = Role.find :all, :order => 'builtin, position' end def edit @@ -48,8 +49,9 @@ if request.post? and @role.update_attributes(params[:role]) flash[:notice] = l(:notice_successful_update) redirect_to :action => 'index' + else + @permissions = @role.setable_permissions end - @permissions = @role.setable_permissions end def destroy diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/settings_controller.rb.svn-base --- a/app/controllers/.svn/text-base/settings_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/settings_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,7 +17,7 @@ class SettingsController < ApplicationController layout 'admin' - + before_filter :require_admin def index @@ -36,16 +36,16 @@ end flash[:notice] = l(:notice_successful_update) redirect_to :action => 'edit', :tab => params[:tab] - return + else + @options = {} + @options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] } + @deliveries = ActionMailer::Base.perform_deliveries + + @guessed_host_and_path = request.host_with_port.dup + @guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank? + + Redmine::Themes.rescan end - @options = {} - @options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] } - @deliveries = ActionMailer::Base.perform_deliveries - - @guessed_host_and_path = request.host_with_port.dup - @guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank? - - Redmine::Themes.rescan end def plugin @@ -54,9 +54,10 @@ Setting["plugin_#{@plugin.id}"] = params[:settings] flash[:notice] = l(:notice_successful_update) redirect_to :action => 'plugin', :id => @plugin.id + else + @partial = @plugin.settings[:partial] + @settings = Setting["plugin_#{@plugin.id}"] end - @partial = @plugin.settings[:partial] - @settings = Setting["plugin_#{@plugin.id}"] rescue Redmine::PluginNotFound render_404 end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/timelog_controller.rb.svn-base --- a/app/controllers/.svn/text-base/timelog_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/timelog_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -18,7 +18,8 @@ class TimelogController < ApplicationController menu_item :issues before_filter :find_project, :only => [:new, :create] - before_filter :find_time_entry, :only => [:show, :edit, :update, :destroy] + before_filter :find_time_entry, :only => [:show, :edit, :update] + before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy] before_filter :authorize, :except => [:index] before_filter :find_optional_project, :only => [:index] accept_key_auth :index, :show, :create, :update, :destroy @@ -40,60 +41,56 @@ 'hours' => 'hours' cond = ARCondition.new - if @project.nil? - cond << Project.allowed_to_condition(User.current, :view_time_entries) - elsif @issue.nil? + if @issue + cond << "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}" + elsif @project cond << @project.project_condition(Setting.display_subprojects_issues?) - else - cond << "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}" end retrieve_date_range cond << ['spent_on BETWEEN ? AND ?', @from, @to] - TimeEntry.visible_by(User.current) do - respond_to do |format| - format.html { - # Paginate results - @entry_count = TimeEntry.count(:include => [:project, :issue], :conditions => cond.conditions) - @entry_pages = Paginator.new self, @entry_count, per_page_option, params['page'] - @entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => :tracker}], - :conditions => cond.conditions, - :order => sort_clause, - :limit => @entry_pages.items_per_page, - :offset => @entry_pages.current.offset) - @total_hours = TimeEntry.sum(:hours, :include => [:project, :issue], :conditions => cond.conditions).to_f + respond_to do |format| + format.html { + # Paginate results + @entry_count = TimeEntry.visible.count(:include => [:project, :issue], :conditions => cond.conditions) + @entry_pages = Paginator.new self, @entry_count, per_page_option, params['page'] + @entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => :tracker}], + :conditions => cond.conditions, + :order => sort_clause, + :limit => @entry_pages.items_per_page, + :offset => @entry_pages.current.offset) + @total_hours = TimeEntry.visible.sum(:hours, :include => [:project, :issue], :conditions => cond.conditions).to_f - render :layout => !request.xhr? - } - format.api { - @entry_count = TimeEntry.count(:include => [:project, :issue], :conditions => cond.conditions) - @entry_pages = Paginator.new self, @entry_count, per_page_option, params['page'] - @entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => :tracker}], - :conditions => cond.conditions, - :order => sort_clause, - :limit => @entry_pages.items_per_page, - :offset => @entry_pages.current.offset) - } - format.atom { - entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => :tracker}], - :conditions => cond.conditions, - :order => "#{TimeEntry.table_name}.created_on DESC", - :limit => Setting.feeds_limit.to_i) - render_feed(entries, :title => l(:label_spent_time)) - } - format.csv { - # Export all entries - @entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}], - :conditions => cond.conditions, - :order => sort_clause) - send_data(entries_to_csv(@entries), :type => 'text/csv; header=present', :filename => 'timelog.csv') - } - end + render :layout => !request.xhr? + } + format.api { + @entry_count = TimeEntry.visible.count(:include => [:project, :issue], :conditions => cond.conditions) + @offset, @limit = api_offset_and_limit + @entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => :tracker}], + :conditions => cond.conditions, + :order => sort_clause, + :limit => @limit, + :offset => @offset) + } + format.atom { + entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => :tracker}], + :conditions => cond.conditions, + :order => "#{TimeEntry.table_name}.created_on DESC", + :limit => Setting.feeds_limit.to_i) + render_feed(entries, :title => l(:label_spent_time)) + } + format.csv { + # Export all entries + @entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}], + :conditions => cond.conditions, + :order => sort_clause) + send_data(entries_to_csv(@entries), :type => 'text/csv; header=present', :filename => 'timelog.csv') + } end end @@ -164,27 +161,55 @@ end end + def bulk_edit + @available_activities = TimeEntryActivity.shared.active + @custom_fields = TimeEntry.first.available_custom_fields + end + + def bulk_update + attributes = parse_params_for_bulk_time_entry_attributes(params) + + unsaved_time_entry_ids = [] + @time_entries.each do |time_entry| + time_entry.reload + time_entry.attributes = attributes + call_hook(:controller_time_entries_bulk_edit_before_save, { :params => params, :time_entry => time_entry }) + unless time_entry.save + # Keep unsaved time_entry ids to display them in flash error + unsaved_time_entry_ids << time_entry.id + end + end + set_flash_from_bulk_time_entry_save(@time_entries, unsaved_time_entry_ids) + redirect_back_or_default({:controller => 'timelog', :action => 'index', :project_id => @projects.first}) + end + verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed } def destroy - if @time_entry.destroy && @time_entry.destroyed? - respond_to do |format| - format.html { - flash[:notice] = l(:notice_successful_delete) - redirect_to :back - } - format.api { head :ok } - end - else - respond_to do |format| - format.html { - flash[:error] = l(:notice_unable_delete_time_entry) - redirect_to :back - } - format.api { render_validation_errors(@time_entry) } + @time_entries.each do |t| + begin + unless t.destroy && t.destroyed? + respond_to do |format| + format.html { + flash[:error] = l(:notice_unable_delete_time_entry) + redirect_to :back + } + format.api { render_validation_errors(t) } + end + return + end + rescue ::ActionController::RedirectBackError + redirect_to :action => 'index', :project_id => @projects.first + return end end - rescue ::ActionController::RedirectBackError - redirect_to :action => 'index', :project_id => @time_entry.project + + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_delete) + redirect_back_or_default(:action => 'index', :project_id => @projects.first) + } + format.api { head :ok } + end end private @@ -199,6 +224,26 @@ render_404 end + def find_time_entries + @time_entries = TimeEntry.find_all_by_id(params[:id] || params[:ids]) + raise ActiveRecord::RecordNotFound if @time_entries.empty? + @projects = @time_entries.collect(&:project).compact.uniq + @project = @projects.first if @projects.size == 1 + rescue ActiveRecord::RecordNotFound + render_404 + end + + def set_flash_from_bulk_time_entry_save(time_entries, unsaved_time_entry_ids) + if unsaved_time_entry_ids.empty? + flash[:notice] = l(:notice_successful_update) unless time_entries.empty? + else + flash[:error] = l(:notice_failed_to_save_time_entries, + :count => unsaved_time_entry_ids.size, + :total => time_entries.size, + :ids => '#' + unsaved_time_entry_ids.join(', #')) + end + end + def find_project if (issue_id = (params[:issue_id] || params[:time_entry] && params[:time_entry][:issue_id])).present? @issue = Issue.find(issue_id) @@ -269,4 +314,10 @@ @to ||= (TimeEntry.latest_date_for_project(@project) || Date.today) end + def parse_params_for_bulk_time_entry_attributes(params) + attributes = (params[:time_entry] || {}).reject {|k,v| v.blank?} + attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'} + attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values] + attributes + end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/users_controller.rb.svn-base --- a/app/controllers/.svn/text-base/users_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/users_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2010 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -38,6 +38,9 @@ @limit = per_page_option end + scope = User + scope = scope.in_group(params[:group_id].to_i) if params[:group_id].present? + @status = params[:status] ? params[:status].to_i : 1 c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status]) @@ -46,24 +49,27 @@ c << ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? OR LOWER(mail) LIKE ?", name, name, name, name] end - @user_count = User.count(:conditions => c.conditions) + @user_count = scope.count(:conditions => c.conditions) @user_pages = Paginator.new self, @user_count, @limit, params['page'] @offset ||= @user_pages.current.offset - @users = User.find :all, + @users = scope.find :all, :order => sort_clause, :conditions => c.conditions, :limit => @limit, :offset => @offset - respond_to do |format| - format.html { render :layout => !request.xhr? } + respond_to do |format| + format.html { + @groups = Group.all.sort + render :layout => !request.xhr? + } format.api - end + end end def show # show projects based on current user visibility - @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current)) + @memberships = @user.memberships.all(:conditions => Project.visible_condition(User.current)) events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10) @events_by_day = events.group_by(&:event_date) diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/watchers_controller.rb.svn-base --- a/app/controllers/.svn/text-base/watchers_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/watchers_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -76,21 +76,13 @@ def set_watcher(user, watching) @watched.set_watcher(user, watching) - if params[:replace].present? - if params[:replace].is_a? Array - replace_ids = params[:replace] - else - replace_ids = [params[:replace]] - end - else - replace_ids = ['watcher'] - end respond_to do |format| format.html { redirect_to :back } format.js do render(:update) do |page| - replace_ids.each do |replace_id| - page.replace_html replace_id, watcher_link(@watched, user, :replace => replace_ids) + c = watcher_css(@watched) + page.select(".#{c}").each do |item| + page.replace_html item, watcher_link(@watched, user) end end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/.svn/text-base/wiki_controller.rb.svn-base --- a/app/controllers/.svn/text-base/wiki_controller.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/.svn/text-base/wiki_controller.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -34,23 +34,27 @@ class WikiController < ApplicationController default_search_scope :wiki_pages before_filter :find_wiki, :authorize + before_filter :find_existing_or_new_page, :only => [:show, :edit, :update] before_filter :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy] - - verify :method => :post, :only => [:protect], :redirect_to => { :action => :show } helper :attachments - include AttachmentsHelper + include AttachmentsHelper helper :watchers # List of pages, sorted alphabetically and by parent (hierarchy) def index - load_pages_grouped_by_date_without_content + load_pages_for_index + @pages_by_parent_id = @pages.group_by(&:parent_id) + end + + # List of page, by last update + def date_index + load_pages_for_index + @pages_by_date = @pages.group_by {|p| p.updated_on.to_date} end # display a page (in editing mode if it doesn't exist) def show - page_title = params[:id] - @page = @wiki.find_or_new_page(page_title) if @page.new_record? if User.current.allowed_to?(:edit_wiki_pages, @project) && editable? edit @@ -79,13 +83,12 @@ @editable = editable? render :action => 'show' end - + # edit an existing page or a new one def edit - @page = @wiki.find_or_new_page(params[:id]) return render_403 unless editable? @page.content = WikiContent.new(:page => @page) if @page.new_record? - + @content = @page.content_for_version(params[:version]) @content.text = initial_page_content(@page) if @content.text.blank? # don't keep previous comment @@ -93,18 +96,14 @@ # To prevent StaleObjectError exception when reverting to a previous version @content.version = @page.content.version - rescue ActiveRecord::StaleObjectError - # Optimistic locking exception - flash[:error] = l(:notice_locking_conflict) end verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } # Creates a new page or updates an existing one def update - @page = @wiki.find_or_new_page(params[:id]) return render_403 unless editable? @page.content = WikiContent.new(:page => @page) if @page.new_record? - + @content = @page.content_for_version(params[:version]) @content.text = initial_page_content(@page) if @content.text.blank? # don't keep previous comment @@ -131,7 +130,8 @@ rescue ActiveRecord::StaleObjectError # Optimistic locking exception - flash[:error] = l(:notice_locking_conflict) + flash.now[:error] = l(:notice_locking_conflict) + render :action => 'edit' end # rename a page @@ -145,7 +145,8 @@ redirect_to :action => 'show', :project_id => @project, :id => @page.title end end - + + verify :method => :post, :only => :protect, :redirect_to => { :action => :show } def protect @page.update_attribute :protected, params[:protected] redirect_to :action => 'show', :project_id => @project, :id => @page.title @@ -155,8 +156,8 @@ def history @version_count = @page.content.versions.count @version_pages = Paginator.new self, @version_count, per_page_option, params['p'] - # don't load text - @versions = @page.content.versions.find :all, + # don't load text + @versions = @page.content.versions.find :all, :select => "id, author_id, comments, updated_on, version", :order => 'version DESC', :limit => @version_pages.items_per_page + 1, @@ -164,12 +165,12 @@ render :layout => false if request.xhr? end - + def diff @diff = @page.diff(params[:version], params[:version_from]) render_404 unless @diff end - + def annotate @annotate = @page.annotate(params[:version]) render_404 unless @annotate @@ -180,7 +181,7 @@ # Children can be either set as root pages, removed or reassigned to another parent page def destroy return render_403 unless editable? - + @descendants_count = @page.descendants.size if @descendants_count > 0 case params[:todo] @@ -216,10 +217,6 @@ end end - def date_index - load_pages_grouped_by_date_without_content - end - def preview page = @wiki.find_page(params[:id]) # page is nil when previewing a new page @@ -240,7 +237,7 @@ end private - + def find_wiki @project = Project.find(params[:project_id]) @wiki = @project.wiki @@ -248,13 +245,27 @@ rescue ActiveRecord::RecordNotFound render_404 end - + + # Finds the requested page or a new page if it doesn't exist + def find_existing_or_new_page + @page = @wiki.find_or_new_page(params[:id]) + if @wiki.page_found_with_redirect? + redirect_to params.update(:id => @page.title) + end + end + # Finds the requested page and returns a 404 error if it doesn't exist def find_existing_page @page = @wiki.find_page(params[:id]) - render_404 if @page.nil? + if @page.nil? + render_404 + return + end + if @wiki.page_found_with_redirect? + redirect_to params.update(:id => @page.title) + end end - + # Returns true if the current user is allowed to edit the page, otherwise false def editable?(page = @page) page.editable_by?(User.current) @@ -267,13 +278,7 @@ helper.instance_method(:initial_page_content).bind(self).call(page) end - # eager load information about last updates, without loading text - def load_pages_grouped_by_date_without_content - @pages = @wiki.pages.find :all, :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on", - :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id", - :order => 'title' - @pages_by_date = @pages.group_by {|p| p.updated_on.to_date} - @pages_by_parent_id = @pages.group_by(&:parent_id) + def load_pages_for_index + @pages = @wiki.pages.with_updated_on.all(:order => 'title', :include => {:wiki => :project}) end - end diff -r adc8466df404 -r 753f1380d6bc app/controllers/activities_controller.rb --- a/app/controllers/activities_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/activities_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -5,7 +5,7 @@ def index @days = Setting.activity_days_default.to_i - + if params[:from] begin; @date_to = params[:from].to_date + 1; rescue; end end @@ -14,18 +14,18 @@ @date_from = @date_to - @days @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id])) - - @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, + + @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, :with_subprojects => @with_subprojects, :author => @author) @activity.scope_select {|t| !params["show_#{t}"].nil?} @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty? events = @activity.events(@date_from, @date_to) - + if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, User.current, current_language]) respond_to do |format| - format.html { + format.html { @events_by_day = events.group_by(&:event_date) render :layout => false if request.xhr? } @@ -40,7 +40,7 @@ } end end - + rescue ActiveRecord::RecordNotFound render_404 end @@ -55,5 +55,4 @@ rescue ActiveRecord::RecordNotFound render_404 end - end diff -r adc8466df404 -r 753f1380d6bc app/controllers/admin_controller.rb --- a/app/controllers/admin_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/admin_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -17,9 +17,7 @@ class AdminController < ApplicationController layout 'admin' - before_filter :require_admin - helper :sort include SortHelper @@ -30,22 +28,20 @@ def projects @status = params[:status] ? params[:status].to_i : 1 c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status]) - unless params[:name].blank? name = "%#{params[:name].strip.downcase}%" c << ["LOWER(identifier) LIKE ? OR LOWER(name) LIKE ?", name, name] end - @projects = Project.find :all, :order => 'lft', :conditions => c.conditions render :action => "projects", :layout => false if request.xhr? end - + def plugins @plugins = Redmine::Plugin.all end - + # Loads the default configuration # (roles, trackers, statuses, workflow, enumerations) def default_configuration @@ -59,7 +55,7 @@ end redirect_to :action => 'index' end - + def test_email raise_delivery_errors = ActionMailer::Base.raise_delivery_errors # Force ActionMailer to raise delivery errors so we can catch it @@ -73,14 +69,16 @@ ActionMailer::Base.raise_delivery_errors = raise_delivery_errors redirect_to :controller => 'settings', :action => 'edit', :tab => 'notifications' end - + def info @db_adapter_name = ActiveRecord::Base.connection.adapter_name @checklist = [ - [:text_default_administrator_account_changed, User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?], + [:text_default_administrator_account_changed, + User.find(:first, + :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?], [:text_file_repository_writable, File.writable?(Attachment.storage_path)], - [:text_plugin_assets_writable, File.writable?(Engines.public_directory)], - [:text_rmagick_available, Object.const_defined?(:Magick)] + [:text_plugin_assets_writable, File.writable?(Engines.public_directory)], + [:text_rmagick_available, Object.const_defined?(:Magick)] ] - end + end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/application_controller.rb --- a/app/controllers/application_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/application_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -23,29 +23,29 @@ layout 'base' exempt_from_layout 'builder', 'rsb' - + # Remove broken cookie after upgrade from 0.8.x (#4292) # See https://rails.lighthouseapp.com/projects/8994/tickets/3360 # TODO: remove it when Rails is fixed before_filter :delete_broken_cookies def delete_broken_cookies if cookies['_redmine_session'] && cookies['_redmine_session'] !~ /--/ - cookies.delete '_redmine_session' + cookies.delete '_redmine_session' redirect_to home_path return false end end - + before_filter :user_setup, :check_if_login_required, :set_localization filter_parameter_logging :password protect_from_forgery - + rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token - + include Redmine::Search::Controller include Redmine::MenuManager::MenuController helper Redmine::MenuManager::MenuHelper - + Redmine::Scm::Base.all.each do |scm| require_dependency "repository/#{scm.underscore}" end @@ -56,7 +56,7 @@ # Find the current user User.current = find_current_user end - + # Returns the current user or nil if no user is logged in # and starts a session if needed def find_current_user @@ -94,14 +94,14 @@ User.current = User.anonymous end end - + # check if login is globally required to access the application def check_if_login_required # no check needed if user is already logged in return true if User.current.logged? require_login if Setting.login_required? - end - + end + def set_localization lang = nil if User.current.logged? @@ -117,7 +117,7 @@ lang ||= Setting.default_language set_language_if_valid(lang) end - + def require_login if !User.current.logged? # Extract only the basic url parameters on non-GET requests @@ -146,7 +146,7 @@ end true end - + def deny_access User.current.logged? ? render_403 : require_login end @@ -197,7 +197,7 @@ # Finds and sets @project based on @object.project def find_project_from_association render_404 unless @object.present? - + @project = @object.project rescue ActiveRecord::RecordNotFound render_404 @@ -221,12 +221,16 @@ def find_issues @issues = Issue.find_all_by_id(params[:id] || params[:ids]) raise ActiveRecord::RecordNotFound if @issues.empty? + if @issues.detect {|issue| !issue.visible?} + deny_access + return + end @projects = @issues.collect(&:project).compact.uniq @project = @projects.first if @projects.size == 1 rescue ActiveRecord::RecordNotFound render_404 end - + # Check if project is unique before bulk operations def check_project_uniqueness unless @project @@ -235,7 +239,7 @@ return false end end - + # make sure that the user is a member of the project (or admin) if project is private # used as a before_filter for actions that do not require any particular permission on the project def check_project_privacy @@ -277,27 +281,28 @@ end end redirect_to default + false end - + def render_403(options={}) @project = nil render_error({:message => :notice_not_authorized, :status => 403}.merge(options)) return false end - + def render_404(options={}) render_error({:message => :notice_file_not_found, :status => 404}.merge(options)) return false end - + # Renders an error response def render_error(arg) arg = {:message => arg} unless arg.is_a?(Hash) - + @message = arg[:message] @message = l(@message) if @message.is_a?(Symbol) @status = arg[:status] || 500 - + respond_to do |format| format.html { render :template => 'common/error', :layout => use_layout, :status => @status @@ -315,31 +320,31 @@ def use_layout request.xhr? ? false : 'base' end - + def invalid_authenticity_token if api_request? logger.error "Form authenticity token is missing or is invalid. API calls must include a proper Content-type header (text/xml or text/json)." end render_error "Invalid form authenticity token. Perhaps your session has timed out; try reloading the form and entering your details again." end - - def render_feed(items, options={}) + + def render_feed(items, options={}) @items = items || [] @items.sort! {|x,y| y.event_datetime <=> x.event_datetime } @items = @items.slice(0, Setting.feeds_limit.to_i) @title = options[:title] || Setting.app_title render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml' end - + def self.accept_key_auth(*actions) actions = actions.flatten.map(&:to_s) write_inheritable_attribute('accept_key_auth_actions', actions) end - + def accept_key_auth_actions self.class.read_inheritable_attribute('accept_key_auth_actions') || [] end - + # Returns the number of objects that should be displayed # on the paginated list def per_page_option @@ -375,10 +380,10 @@ offset = 0 if offset < 0 end offset ||= 0 - + [offset, limit] end - + # qvalues http header parser # code taken from webrick def parse_qvalues(value) @@ -399,16 +404,16 @@ rescue nil end - + # Returns a string that can be used as filename value in Content-Disposition header def filename_for_content_disposition(name) request.env['HTTP_USER_AGENT'] =~ %r{MSIE} ? ERB::Util.url_encode(name) : name end - + def api_request? %w(xml json).include? params[:format] end - + # Returns the API key present in the request def api_key_from_request if params[:key].present? @@ -465,7 +470,7 @@ ) render options end - + # Overrides #default_template so that the api template # is used automatically if it exists def default_template(action_name = self.action_name) @@ -479,7 +484,7 @@ end super end - + # Overrides #pick_layout so that #render with no arguments # doesn't use the layout for api requests def pick_layout(*args) diff -r adc8466df404 -r 753f1380d6bc app/controllers/attachments_controller.rb --- a/app/controllers/attachments_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/attachments_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -19,9 +19,9 @@ before_filter :find_project before_filter :file_readable, :read_authorize, :except => :destroy before_filter :delete_authorize, :only => :destroy - + verify :method => :post, :only => :destroy - + def show if @attachment.is_diff? @diff = File.new(@attachment.diskfile, "rb").read @@ -33,19 +33,19 @@ download end end - + def download if @attachment.container.is_a?(Version) || @attachment.container.is_a?(Project) @attachment.increment_download end - + # images are sent inline send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename), - :type => detect_content_type(@attachment), + :type => detect_content_type(@attachment), :disposition => (@attachment.image? ? 'inline' : 'attachment') - + end - + def destroy # Make sure association callbacks are called @attachment.container.attachments.delete(@attachment) @@ -53,7 +53,7 @@ rescue ::ActionController::RedirectBackError redirect_to :controller => 'projects', :action => 'show', :id => @project end - + private def find_project @attachment = Attachment.find(params[:id]) @@ -63,20 +63,20 @@ rescue ActiveRecord::RecordNotFound render_404 end - + # Checks that the file exists and is readable def file_readable @attachment.readable? ? true : render_404 end - + def read_authorize @attachment.visible? ? true : deny_access end - + def delete_authorize @attachment.deletable? ? true : deny_access end - + def detect_content_type(attachment) content_type = attachment.content_type if content_type.blank? diff -r adc8466df404 -r 753f1380d6bc app/controllers/calendars_controller.rb --- a/app/controllers/calendars_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/calendars_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,20 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + class CalendarsController < ApplicationController menu_item :calendar before_filter :find_optional_project @@ -36,9 +53,4 @@ render :action => 'show', :layout => false if request.xhr? end - - def update - show - end - end diff -r adc8466df404 -r 753f1380d6bc app/controllers/context_menus_controller.rb --- a/app/controllers/context_menus_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/context_menus_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ class ContextMenusController < ApplicationController helper :watchers + helper :issues def issues @issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project) @@ -40,5 +41,18 @@ render :layout => false end - + + def time_entries + @time_entries = TimeEntry.all( + :conditions => {:id => params[:ids]}, :include => :project) + @projects = @time_entries.collect(&:project).compact.uniq + @project = @projects.first if @projects.size == 1 + @activities = TimeEntryActivity.shared.active + @can = {:edit => User.current.allowed_to?(:log_time, @projects), + :update => User.current.allowed_to?(:log_time, @projects), + :delete => User.current.allowed_to?(:log_time, @projects) + } + @back = back_url + render :layout => false + end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/custom_fields_controller.rb --- a/app/controllers/custom_fields_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/custom_fields_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -38,8 +38,9 @@ flash[:notice] = l(:notice_successful_create) call_hook(:controller_custom_fields_new_after_save, :params => params, :custom_field => @custom_field) redirect_to :action => 'index', :tab => @custom_field.class.name + else + @trackers = Tracker.find(:all, :order => 'position') end - @trackers = Tracker.find(:all, :order => 'position') end def edit @@ -48,8 +49,9 @@ flash[:notice] = l(:notice_successful_update) call_hook(:controller_custom_fields_edit_after_save, :params => params, :custom_field => @custom_field) redirect_to :action => 'index', :tab => @custom_field.class.name + else + @trackers = Tracker.find(:all, :order => 'position') end - @trackers = Tracker.find(:all, :order => 'position') end def destroy diff -r adc8466df404 -r 753f1380d6bc app/controllers/enumerations_controller.rb --- a/app/controllers/enumerations_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/enumerations_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -75,10 +75,12 @@ # No associated objects @enumeration.destroy redirect_to :action => 'index' + return elsif params[:reassign_to_id] if reassign_to = @enumeration.class.find_by_id(params[:reassign_to_id]) @enumeration.destroy(reassign_to) redirect_to :action => 'index' + return end end @enumerations = @enumeration.class.find(:all) - [@enumeration] diff -r adc8466df404 -r 753f1380d6bc app/controllers/files_controller.rb --- a/app/controllers/files_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/files_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -13,7 +13,7 @@ 'created_on' => "#{Attachment.table_name}.created_on", 'size' => "#{Attachment.table_name}.filesize", 'downloads' => "#{Attachment.table_name}.downloads" - + @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)] @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse render :layout => !request.xhr? diff -r adc8466df404 -r 753f1380d6bc app/controllers/gantts_controller.rb --- a/app/controllers/gantts_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/gantts_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,20 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + class GanttsController < ApplicationController menu_item :gantt before_filter :find_optional_project @@ -28,9 +45,4 @@ format.pdf { send_data(@gantt.to_pdf, :type => 'application/pdf', :filename => "#{basename}.pdf") } end end - - def update - show - end - end diff -r adc8466df404 -r 753f1380d6bc app/controllers/groups_controller.rb --- a/app/controllers/groups_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/groups_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -132,7 +132,7 @@ def autocomplete_for_user @group = Group.find(params[:id]) - @users = User.active.like(params[:q]).find(:all, :limit => 100) - @group.users + @users = User.active.not_in_group(@group).like(params[:q]).all(:limit => 100) render :layout => false end diff -r adc8466df404 -r 753f1380d6bc app/controllers/issue_categories_controller.rb --- a/app/controllers/issue_categories_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/issue_categories_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -65,10 +65,12 @@ # No issue assigned to this category @category.destroy redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' + return elsif params[:todo] reassign_to = @project.issue_categories.find_by_id(params[:reassign_to_id]) if params[:todo] == 'reassign' @category.destroy(reassign_to) redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' + return end @categories = @project.issue_categories - [@category] end diff -r adc8466df404 -r 753f1380d6bc app/controllers/issue_moves_controller.rb --- a/app/controllers/issue_moves_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/issue_moves_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -2,7 +2,7 @@ default_search_scope :issues before_filter :find_issues, :check_project_uniqueness before_filter :authorize - + def new prepare_for_issue_move render :layout => false if request.xhr? @@ -48,7 +48,7 @@ @copy = params[:copy_options] && params[:copy_options][:copy] @allowed_projects = Issue.allowed_target_projects_on_move @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id] - @target_project ||= @project + @target_project ||= @project @trackers = @target_project.trackers @available_statuses = Workflow.available_statuses(@project) @notes = params[:notes] diff -r adc8466df404 -r 753f1380d6bc app/controllers/issues_controller.rb --- a/app/controllers/issues_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/issues_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -18,7 +18,7 @@ class IssuesController < ApplicationController menu_item :new_issue, :only => [:new, :create] default_search_scope :issues - + before_filter :find_issue, :only => [:show, :edit, :update] before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :move, :perform_move, :destroy] before_filter :check_project_uniqueness, :only => [:move, :perform_move] @@ -30,10 +30,10 @@ accept_key_auth :index, :show, :create, :update, :destroy rescue_from Query::StatementInvalid, :with => :query_statement_invalid - + helper :journals helper :projects - include ProjectsHelper + include ProjectsHelper helper :custom_fields include CustomFieldsHelper helper :issue_relations @@ -60,12 +60,12 @@ verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } verify :method => :post, :only => :bulk_update, :render => {:nothing => true, :status => :method_not_allowed } verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } - + def index retrieve_query sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria) sort_update(@query.sortable_columns) - + if @query.valid? case params[:format] when 'csv', 'pdf' @@ -77,16 +77,16 @@ else @limit = per_page_option end - + @issue_count = @query.issue_count @issue_pages = Paginator.new self, @issue_count, @limit, params['page'] @offset ||= @issue_pages.current.offset @issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version], - :order => sort_clause, - :offset => @offset, + :order => sort_clause, + :offset => @offset, :limit => @limit) @issue_count_by_group = @query.issue_count_by_group - + respond_to do |format| format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? } format.api @@ -101,18 +101,22 @@ rescue ActiveRecord::RecordNotFound render_404 end - + def show @journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC") @journals.each_with_index {|j,i| j.indice = i+1} @journals.reverse! if User.current.wants_comments_in_reverse_order? - @changesets = @issue.changesets.visible.all - @changesets.reverse! if User.current.wants_comments_in_reverse_order? + + if User.current.allowed_to?(:view_changesets, @project) + @changesets = @issue.changesets.visible.all + @changesets.reverse! if User.current.wants_comments_in_reverse_order? + end + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } @allowed_statuses = @issue.new_statuses_allowed_to(User.current) @edit_allowed = User.current.allowed_to?(:edit_issues, @project) @priorities = IssuePriority.all - @time_entry = TimeEntry.new + @time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project) respond_to do |format| format.html { render :template => 'issues/show.rhtml' } format.api @@ -161,7 +165,7 @@ end end end - + def edit update_issue_from_params @@ -223,7 +227,7 @@ set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids) redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project}) end - + def destroy @hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f if @hours > 0 @@ -245,7 +249,13 @@ return unless api_request? end end - @issues.each(&:destroy) + @issues.each do |issue| + begin + issue.reload.destroy + rescue ::ActiveRecord::RecordNotFound # raised by #reload if issue no longer exists + # nothing to do, issue was already deleted (eg. by a parent) + end + end respond_to do |format| format.html { redirect_back_or_default(:action => 'index', :project_id => @project) } format.api { head :ok } @@ -254,19 +264,25 @@ private def find_issue + # Issue.visible.find(...) can not be used to redirect user to the login form + # if the issue actually exists but requires authentication @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category]) + unless @issue.visible? + deny_access + return + end @project = @issue.project rescue ActiveRecord::RecordNotFound render_404 end - + def find_project project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id] @project = Project.find(project_id) rescue ActiveRecord::RecordNotFound render_404 end - + # Used by #edit and #update to set some common instance variables # from the params # TODO: Refactor, not everything in here is needed by #edit @@ -274,9 +290,9 @@ @allowed_statuses = @issue.new_statuses_allowed_to(User.current) @priorities = IssuePriority.all @edit_allowed = User.current.allowed_to?(:edit_issues, @project) - @time_entry = TimeEntry.new + @time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project) @time_entry.attributes = params[:time_entry] - + @notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil) @issue.init_journal(User.current, @notes) @issue.safe_attributes = params[:issue] @@ -304,7 +320,7 @@ else @issue = @project.issues.visible.find(params[:id]) end - + @issue.project = @project # Tracker must be set before custom field values @issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first) diff -r adc8466df404 -r 753f1380d6bc app/controllers/journals_controller.rb --- a/app/controllers/journals_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/journals_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -24,6 +24,7 @@ menu_item :issues helper :issues + helper :custom_fields helper :queries include QueriesHelper helper :sort diff -r adc8466df404 -r 753f1380d6bc app/controllers/mail_handler_controller.rb --- a/app/controllers/mail_handler_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/mail_handler_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,27 +1,27 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MailHandlerController < ActionController::Base before_filter :check_credential - + verify :method => :post, :only => :index, :render => { :nothing => true, :status => 405 } - + # Submits an incoming email to MailHandler def index options = params.dup @@ -32,9 +32,9 @@ render :nothing => true, :status => :unprocessable_entity end end - + private - + def check_credential User.current = nil unless Setting.mail_handler_api_enabled? && params[:key].to_s == Setting.mail_handler_api_key diff -r adc8466df404 -r 753f1380d6bc app/controllers/news_controller.rb --- a/app/controllers/news_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/news_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -25,6 +25,8 @@ before_filter :find_optional_project, :only => :index accept_key_auth :index + helper :watchers + def index case params[:format] when 'xml', 'json' diff -r adc8466df404 -r 753f1380d6bc app/controllers/previews_controller.rb --- a/app/controllers/previews_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/previews_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,20 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + class PreviewsController < ApplicationController before_filter :find_project diff -r adc8466df404 -r 753f1380d6bc app/controllers/projects_controller.rb --- a/app/controllers/projects_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/projects_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -128,7 +128,6 @@ Mailer.with_deliveries(params[:notifications] == '1') do @project = Project.new @project.safe_attributes = params[:project] - @project.enabled_module_names = params[:enabled_modules] if validate_parent_id && @project.copy(@source_project, :only => params[:only]) @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') flash[:notice] = l(:notice_successful_create) @@ -154,7 +153,7 @@ end @users_by_role = @project.users_by_role - @subprojects = @project.children.visible + @subprojects = @project.children.visible.all @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC") @trackers = @project.rolled_up_trackers @@ -167,11 +166,10 @@ :include => [:project, :status, :tracker], :conditions => cond) - TimeEntry.visible_by(User.current) do - @total_hours = TimeEntry.sum(:hours, - :include => :project, - :conditions => cond).to_f + if User.current.allowed_to?(:view_time_entries, @project) + @total_hours = TimeEntry.visible.sum(:hours, :include => :project, :conditions => cond).to_f end + @key = User.current.rss_key respond_to do |format| diff -r adc8466df404 -r 753f1380d6bc app/controllers/queries_controller.rb --- a/app/controllers/queries_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/queries_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -25,11 +25,12 @@ @query.project = params[:query_is_for_all] ? nil : @project @query.user = User.current @query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin? + + @query.add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v]) if params[:fields] || params[:f] + @query.group_by ||= params[:group_by] + @query.column_names = params[:c] if params[:c] @query.column_names = nil if params[:default_columns] - @query.add_filters(params[:fields], params[:operators], params[:values]) if params[:fields] - @query.group_by ||= params[:group_by] - if request.post? && params[:confirm] && @query.save flash[:notice] = l(:notice_successful_create) redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :query_id => @query @@ -41,10 +42,12 @@ def edit if request.post? @query.filters = {} - @query.add_filters(params[:fields], params[:operators], params[:values]) if params[:fields] + @query.add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v]) if params[:fields] || params[:f] @query.attributes = params[:query] @query.project = nil if params[:query_is_for_all] @query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin? + @query.group_by ||= params[:group_by] + @query.column_names = params[:c] if params[:c] @query.column_names = nil if params[:default_columns] if @query.save diff -r adc8466df404 -r 753f1380d6bc app/controllers/repositories_controller.rb --- a/app/controllers/repositories_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/repositories_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -26,33 +26,45 @@ menu_item :repository menu_item :settings, :only => :edit default_search_scope :changesets - + before_filter :find_repository, :except => :edit before_filter :find_project, :only => :edit before_filter :authorize accept_key_auth :revisions - + rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed - + def edit @repository = @project.repository - if !@repository + if !@repository && !params[:repository_scm].blank? @repository = Repository.factory(params[:repository_scm]) @repository.project = @project if @repository end if request.post? && @repository - @repository.attributes = params[:repository] + p1 = params[:repository] + p = {} + p_extra = {} + p1.each do |k, v| + if k =~ /^extra_/ + p_extra[k] = v + else + p[k] = v + end + end + @repository.attributes = p + @repository.merge_extra_info(p_extra) @repository.save end render(:update) do |page| - page.replace_html "tab-content-repository", :partial => 'projects/settings/repository' + page.replace_html "tab-content-repository", + :partial => 'projects/settings/repository' if @repository && !@project.repository - @project.reload #needed to reload association + @project.reload # needed to reload association page.replace_html "main-menu", render_main_menu(@project) end end end - + def committers @committers = @repository.committers @users = @project.users @@ -70,13 +82,17 @@ def destroy @repository.destroy - redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'repository' + redirect_to :controller => 'projects', + :action => 'settings', + :id => @project, + :tab => 'repository' end def show @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? @entries = @repository.entries(@path, @rev) + @changeset = @repository.find_changeset_by_name(@rev) if request.xhr? @entries ? render(:partial => 'dir_list_content') : render(:nothing => true) else @@ -122,17 +138,35 @@ @content = @repository.cat(@path, @rev) (show_error_not_found; return) unless @content - if 'raw' == params[:format] || @content.is_binary_data? || - (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) + if 'raw' == params[:format] || + (@content.size && @content.size > Setting.file_max_size_displayed.to_i.kilobyte) || + ! is_entry_text_data?(@content, @path) # Force the download - send_data @content, :filename => filename_for_content_disposition(@path.split('/').last) + send_opt = { :filename => filename_for_content_disposition(@path.split('/').last) } + send_type = Redmine::MimeType.of(@path) + send_opt[:type] = send_type.to_s if send_type + send_data @content, send_opt else # Prevent empty lines when displaying a file with Windows style eol + # TODO: UTF-16 + # Is this needs? AttachmentsController reads file simply. @content.gsub!("\r\n", "\n") @changeset = @repository.find_changeset_by_name(@rev) - end + end end + def is_entry_text_data?(ent, path) + # UTF-16 contains "\x00". + # It is very strict that file contains less than 30% of ascii symbols + # in non Western Europe. + return true if Redmine::MimeType.is_type?('text', path) + # Ruby 1.8.6 has a bug of integer divisions. + # http://apidock.com/ruby/v1_8_6_287/String/is_binary_data%3F + return false if ent.is_binary_data? + true + end + private :is_entry_text_data? + def annotate @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @@ -167,14 +201,14 @@ else @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline' @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type) - + # Save diff type as user preference if User.current.logged? && @diff_type != User.current.pref[:diff_type] User.current.pref[:diff_type] = @diff_type User.current.preference.save end - - @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}") + @cache_key = "repositories/diff/#{@repository.id}/" + + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}") unless read_fragment(@cache_key) @diff = @repository.diff(@path, @rev, @rev_to) show_error_not_found unless @diff @@ -204,7 +238,7 @@ render_404 end end - + private REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i @@ -217,7 +251,7 @@ @path ||= '' @rev = params[:rev].blank? ? @repository.default_branch : params[:rev].strip @rev_to = params[:rev_to] - + unless @rev.to_s.match(REV_PARAM_RE) && @rev_to.to_s.match(REV_PARAM_RE) if @repository.branches.blank? raise InvalidRevisionParam @@ -232,27 +266,31 @@ def show_error_not_found render_error :message => l(:error_scm_not_found), :status => 404 end - + # Handler for Redmine::Scm::Adapters::CommandFailed exception def show_error_command_failed(exception) render_error l(:error_scm_command_failed, exception.message) end - + def graph_commits_per_month(repository) @date_to = Date.today @date_from = @date_to << 11 @date_from = Date.civil(@date_from.year, @date_from.month, 1) - commits_by_day = repository.changesets.count(:all, :group => :commit_date, :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) + commits_by_day = repository.changesets.count( + :all, :group => :commit_date, + :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) commits_by_month = [0] * 12 commits_by_day.each {|c| commits_by_month[c.first.to_date.months_ago] += c.last } - changes_by_day = repository.changes.count(:all, :group => :commit_date, :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) + changes_by_day = repository.changes.count( + :all, :group => :commit_date, + :conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to]) changes_by_month = [0] * 12 changes_by_day.each {|c| changes_by_month[c.first.to_date.months_ago] += c.last } - + fields = [] 12.times {|m| fields << month_name(((Date.today.month - 1 - m) % 12) + 1)} - + graph = SVG::Graph::Bar.new( :height => 300, :width => 800, @@ -264,7 +302,7 @@ :graph_title => l(:label_commits_per_month), :show_graph_title => true ) - + graph.add_data( :data => commits_by_month[0..11].reverse, :title => l(:label_revision_plural) @@ -274,7 +312,7 @@ :data => changes_by_month[0..11].reverse, :title => l(:label_change_plural) ) - + graph.burn end @@ -284,18 +322,18 @@ changes_by_author = repository.changes.count(:all, :group => :committer) h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o} - + fields = commits_by_author.collect {|r| r.first} commits_data = commits_by_author.collect {|r| r.last} changes_data = commits_by_author.collect {|r| h[r.first] || 0} - + fields = fields + [""]*(10 - fields.length) if fields.length<10 commits_data = commits_data + [0]*(10 - commits_data.length) if commits_data.length<10 changes_data = changes_data + [0]*(10 - changes_data.length) if changes_data.length<10 - + # Remove email adress in usernames fields = fields.collect {|c| c.gsub(%r{<.+@.+>}, '') } - + graph = SVG::Graph::BarHorizontal.new( :height => 400, :width => 800, @@ -307,22 +345,18 @@ :graph_title => l(:label_commits_per_author), :show_graph_title => true ) - graph.add_data( :data => commits_data, :title => l(:label_revision_plural) ) - graph.add_data( :data => changes_data, :title => l(:label_change_plural) ) - graph.burn end +end -end - class Date def months_ago(date = Date.today) (date.year - self.year)*12 + (date.month - self.month) diff -r adc8466df404 -r 753f1380d6bc app/controllers/roles_controller.rb --- a/app/controllers/roles_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/roles_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -38,9 +38,10 @@ end flash[:notice] = l(:notice_successful_create) redirect_to :action => 'index' + else + @permissions = @role.setable_permissions + @roles = Role.find :all, :order => 'builtin, position' end - @permissions = @role.setable_permissions - @roles = Role.find :all, :order => 'builtin, position' end def edit @@ -48,8 +49,9 @@ if request.post? and @role.update_attributes(params[:role]) flash[:notice] = l(:notice_successful_update) redirect_to :action => 'index' + else + @permissions = @role.setable_permissions end - @permissions = @role.setable_permissions end def destroy diff -r adc8466df404 -r 753f1380d6bc app/controllers/settings_controller.rb --- a/app/controllers/settings_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/settings_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,7 +17,7 @@ class SettingsController < ApplicationController layout 'admin' - + before_filter :require_admin def index @@ -36,16 +36,16 @@ end flash[:notice] = l(:notice_successful_update) redirect_to :action => 'edit', :tab => params[:tab] - return + else + @options = {} + @options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] } + @deliveries = ActionMailer::Base.perform_deliveries + + @guessed_host_and_path = request.host_with_port.dup + @guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank? + + Redmine::Themes.rescan end - @options = {} - @options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] } - @deliveries = ActionMailer::Base.perform_deliveries - - @guessed_host_and_path = request.host_with_port.dup - @guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank? - - Redmine::Themes.rescan end def plugin @@ -54,9 +54,10 @@ Setting["plugin_#{@plugin.id}"] = params[:settings] flash[:notice] = l(:notice_successful_update) redirect_to :action => 'plugin', :id => @plugin.id + else + @partial = @plugin.settings[:partial] + @settings = Setting["plugin_#{@plugin.id}"] end - @partial = @plugin.settings[:partial] - @settings = Setting["plugin_#{@plugin.id}"] rescue Redmine::PluginNotFound render_404 end diff -r adc8466df404 -r 753f1380d6bc app/controllers/timelog_controller.rb --- a/app/controllers/timelog_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/timelog_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -18,7 +18,8 @@ class TimelogController < ApplicationController menu_item :issues before_filter :find_project, :only => [:new, :create] - before_filter :find_time_entry, :only => [:show, :edit, :update, :destroy] + before_filter :find_time_entry, :only => [:show, :edit, :update] + before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy] before_filter :authorize, :except => [:index] before_filter :find_optional_project, :only => [:index] accept_key_auth :index, :show, :create, :update, :destroy @@ -40,60 +41,56 @@ 'hours' => 'hours' cond = ARCondition.new - if @project.nil? - cond << Project.allowed_to_condition(User.current, :view_time_entries) - elsif @issue.nil? + if @issue + cond << "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}" + elsif @project cond << @project.project_condition(Setting.display_subprojects_issues?) - else - cond << "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}" end retrieve_date_range cond << ['spent_on BETWEEN ? AND ?', @from, @to] - TimeEntry.visible_by(User.current) do - respond_to do |format| - format.html { - # Paginate results - @entry_count = TimeEntry.count(:include => [:project, :issue], :conditions => cond.conditions) - @entry_pages = Paginator.new self, @entry_count, per_page_option, params['page'] - @entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => :tracker}], - :conditions => cond.conditions, - :order => sort_clause, - :limit => @entry_pages.items_per_page, - :offset => @entry_pages.current.offset) - @total_hours = TimeEntry.sum(:hours, :include => [:project, :issue], :conditions => cond.conditions).to_f + respond_to do |format| + format.html { + # Paginate results + @entry_count = TimeEntry.visible.count(:include => [:project, :issue], :conditions => cond.conditions) + @entry_pages = Paginator.new self, @entry_count, per_page_option, params['page'] + @entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => :tracker}], + :conditions => cond.conditions, + :order => sort_clause, + :limit => @entry_pages.items_per_page, + :offset => @entry_pages.current.offset) + @total_hours = TimeEntry.visible.sum(:hours, :include => [:project, :issue], :conditions => cond.conditions).to_f - render :layout => !request.xhr? - } - format.api { - @entry_count = TimeEntry.count(:include => [:project, :issue], :conditions => cond.conditions) - @entry_pages = Paginator.new self, @entry_count, per_page_option, params['page'] - @entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => :tracker}], - :conditions => cond.conditions, - :order => sort_clause, - :limit => @entry_pages.items_per_page, - :offset => @entry_pages.current.offset) - } - format.atom { - entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => :tracker}], - :conditions => cond.conditions, - :order => "#{TimeEntry.table_name}.created_on DESC", - :limit => Setting.feeds_limit.to_i) - render_feed(entries, :title => l(:label_spent_time)) - } - format.csv { - # Export all entries - @entries = TimeEntry.find(:all, - :include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}], - :conditions => cond.conditions, - :order => sort_clause) - send_data(entries_to_csv(@entries), :type => 'text/csv; header=present', :filename => 'timelog.csv') - } - end + render :layout => !request.xhr? + } + format.api { + @entry_count = TimeEntry.visible.count(:include => [:project, :issue], :conditions => cond.conditions) + @offset, @limit = api_offset_and_limit + @entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => :tracker}], + :conditions => cond.conditions, + :order => sort_clause, + :limit => @limit, + :offset => @offset) + } + format.atom { + entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => :tracker}], + :conditions => cond.conditions, + :order => "#{TimeEntry.table_name}.created_on DESC", + :limit => Setting.feeds_limit.to_i) + render_feed(entries, :title => l(:label_spent_time)) + } + format.csv { + # Export all entries + @entries = TimeEntry.visible.find(:all, + :include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}], + :conditions => cond.conditions, + :order => sort_clause) + send_data(entries_to_csv(@entries), :type => 'text/csv; header=present', :filename => 'timelog.csv') + } end end @@ -164,27 +161,55 @@ end end + def bulk_edit + @available_activities = TimeEntryActivity.shared.active + @custom_fields = TimeEntry.first.available_custom_fields + end + + def bulk_update + attributes = parse_params_for_bulk_time_entry_attributes(params) + + unsaved_time_entry_ids = [] + @time_entries.each do |time_entry| + time_entry.reload + time_entry.attributes = attributes + call_hook(:controller_time_entries_bulk_edit_before_save, { :params => params, :time_entry => time_entry }) + unless time_entry.save + # Keep unsaved time_entry ids to display them in flash error + unsaved_time_entry_ids << time_entry.id + end + end + set_flash_from_bulk_time_entry_save(@time_entries, unsaved_time_entry_ids) + redirect_back_or_default({:controller => 'timelog', :action => 'index', :project_id => @projects.first}) + end + verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed } def destroy - if @time_entry.destroy && @time_entry.destroyed? - respond_to do |format| - format.html { - flash[:notice] = l(:notice_successful_delete) - redirect_to :back - } - format.api { head :ok } - end - else - respond_to do |format| - format.html { - flash[:error] = l(:notice_unable_delete_time_entry) - redirect_to :back - } - format.api { render_validation_errors(@time_entry) } + @time_entries.each do |t| + begin + unless t.destroy && t.destroyed? + respond_to do |format| + format.html { + flash[:error] = l(:notice_unable_delete_time_entry) + redirect_to :back + } + format.api { render_validation_errors(t) } + end + return + end + rescue ::ActionController::RedirectBackError + redirect_to :action => 'index', :project_id => @projects.first + return end end - rescue ::ActionController::RedirectBackError - redirect_to :action => 'index', :project_id => @time_entry.project + + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_delete) + redirect_back_or_default(:action => 'index', :project_id => @projects.first) + } + format.api { head :ok } + end end private @@ -199,6 +224,26 @@ render_404 end + def find_time_entries + @time_entries = TimeEntry.find_all_by_id(params[:id] || params[:ids]) + raise ActiveRecord::RecordNotFound if @time_entries.empty? + @projects = @time_entries.collect(&:project).compact.uniq + @project = @projects.first if @projects.size == 1 + rescue ActiveRecord::RecordNotFound + render_404 + end + + def set_flash_from_bulk_time_entry_save(time_entries, unsaved_time_entry_ids) + if unsaved_time_entry_ids.empty? + flash[:notice] = l(:notice_successful_update) unless time_entries.empty? + else + flash[:error] = l(:notice_failed_to_save_time_entries, + :count => unsaved_time_entry_ids.size, + :total => time_entries.size, + :ids => '#' + unsaved_time_entry_ids.join(', #')) + end + end + def find_project if (issue_id = (params[:issue_id] || params[:time_entry] && params[:time_entry][:issue_id])).present? @issue = Issue.find(issue_id) @@ -269,4 +314,10 @@ @to ||= (TimeEntry.latest_date_for_project(@project) || Date.today) end + def parse_params_for_bulk_time_entry_attributes(params) + attributes = (params[:time_entry] || {}).reject {|k,v| v.blank?} + attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'} + attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values] + attributes + end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/users_controller.rb --- a/app/controllers/users_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/users_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2010 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -38,6 +38,9 @@ @limit = per_page_option end + scope = User + scope = scope.in_group(params[:group_id].to_i) if params[:group_id].present? + @status = params[:status] ? params[:status].to_i : 1 c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status]) @@ -46,19 +49,22 @@ c << ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? OR LOWER(mail) LIKE ?", name, name, name, name] end - @user_count = User.count(:conditions => c.conditions) + @user_count = scope.count(:conditions => c.conditions) @user_pages = Paginator.new self, @user_count, @limit, params['page'] @offset ||= @user_pages.current.offset - @users = User.find :all, + @users = scope.find :all, :order => sort_clause, :conditions => c.conditions, :limit => @limit, :offset => @offset - respond_to do |format| - format.html { render :layout => !request.xhr? } + respond_to do |format| + format.html { + @groups = Group.all.sort + render :layout => !request.xhr? + } format.api - end + end end def show @@ -77,7 +83,7 @@ end # show projects based on current user visibility - @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current)) + @memberships = @user.memberships.all(:conditions => Project.visible_condition(User.current)) events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10) @events_by_day = events.group_by(&:event_date) diff -r adc8466df404 -r 753f1380d6bc app/controllers/watchers_controller.rb --- a/app/controllers/watchers_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/watchers_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -76,21 +76,13 @@ def set_watcher(user, watching) @watched.set_watcher(user, watching) - if params[:replace].present? - if params[:replace].is_a? Array - replace_ids = params[:replace] - else - replace_ids = [params[:replace]] - end - else - replace_ids = ['watcher'] - end respond_to do |format| format.html { redirect_to :back } format.js do render(:update) do |page| - replace_ids.each do |replace_id| - page.replace_html replace_id, watcher_link(@watched, user, :replace => replace_ids) + c = watcher_css(@watched) + page.select(".#{c}").each do |item| + page.replace_html item, watcher_link(@watched, user) end end end diff -r adc8466df404 -r 753f1380d6bc app/controllers/wiki_controller.rb --- a/app/controllers/wiki_controller.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/controllers/wiki_controller.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -34,23 +34,27 @@ class WikiController < ApplicationController default_search_scope :wiki_pages before_filter :find_wiki, :authorize + before_filter :find_existing_or_new_page, :only => [:show, :edit, :update] before_filter :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy] - - verify :method => :post, :only => [:protect], :redirect_to => { :action => :show } helper :attachments - include AttachmentsHelper + include AttachmentsHelper helper :watchers # List of pages, sorted alphabetically and by parent (hierarchy) def index - load_pages_grouped_by_date_without_content + load_pages_for_index + @pages_by_parent_id = @pages.group_by(&:parent_id) + end + + # List of page, by last update + def date_index + load_pages_for_index + @pages_by_date = @pages.group_by {|p| p.updated_on.to_date} end # display a page (in editing mode if it doesn't exist) def show - page_title = params[:id] - @page = @wiki.find_or_new_page(page_title) if @page.new_record? if User.current.allowed_to?(:edit_wiki_pages, @project) && editable? edit @@ -79,13 +83,12 @@ @editable = editable? render :action => 'show' end - + # edit an existing page or a new one def edit - @page = @wiki.find_or_new_page(params[:id]) return render_403 unless editable? @page.content = WikiContent.new(:page => @page) if @page.new_record? - + @content = @page.content_for_version(params[:version]) @content.text = initial_page_content(@page) if @content.text.blank? # don't keep previous comment @@ -93,18 +96,14 @@ # To prevent StaleObjectError exception when reverting to a previous version @content.version = @page.content.version - rescue ActiveRecord::StaleObjectError - # Optimistic locking exception - flash[:error] = l(:notice_locking_conflict) end verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } # Creates a new page or updates an existing one def update - @page = @wiki.find_or_new_page(params[:id]) return render_403 unless editable? @page.content = WikiContent.new(:page => @page) if @page.new_record? - + @content = @page.content_for_version(params[:version]) @content.text = initial_page_content(@page) if @content.text.blank? # don't keep previous comment @@ -131,7 +130,8 @@ rescue ActiveRecord::StaleObjectError # Optimistic locking exception - flash[:error] = l(:notice_locking_conflict) + flash.now[:error] = l(:notice_locking_conflict) + render :action => 'edit' end # rename a page @@ -145,7 +145,8 @@ redirect_to :action => 'show', :project_id => @project, :id => @page.title end end - + + verify :method => :post, :only => :protect, :redirect_to => { :action => :show } def protect @page.update_attribute :protected, params[:protected] redirect_to :action => 'show', :project_id => @project, :id => @page.title @@ -155,8 +156,8 @@ def history @version_count = @page.content.versions.count @version_pages = Paginator.new self, @version_count, per_page_option, params['p'] - # don't load text - @versions = @page.content.versions.find :all, + # don't load text + @versions = @page.content.versions.find :all, :select => "id, author_id, comments, updated_on, version", :order => 'version DESC', :limit => @version_pages.items_per_page + 1, @@ -164,12 +165,12 @@ render :layout => false if request.xhr? end - + def diff @diff = @page.diff(params[:version], params[:version_from]) render_404 unless @diff end - + def annotate @annotate = @page.annotate(params[:version]) render_404 unless @annotate @@ -180,7 +181,7 @@ # Children can be either set as root pages, removed or reassigned to another parent page def destroy return render_403 unless editable? - + @descendants_count = @page.descendants.size if @descendants_count > 0 case params[:todo] @@ -216,10 +217,6 @@ end end - def date_index - load_pages_grouped_by_date_without_content - end - def preview page = @wiki.find_page(params[:id]) # page is nil when previewing a new page @@ -240,7 +237,7 @@ end private - + def find_wiki @project = Project.find(params[:project_id]) @wiki = @project.wiki @@ -248,13 +245,27 @@ rescue ActiveRecord::RecordNotFound render_404 end - + + # Finds the requested page or a new page if it doesn't exist + def find_existing_or_new_page + @page = @wiki.find_or_new_page(params[:id]) + if @wiki.page_found_with_redirect? + redirect_to params.update(:id => @page.title) + end + end + # Finds the requested page and returns a 404 error if it doesn't exist def find_existing_page @page = @wiki.find_page(params[:id]) - render_404 if @page.nil? + if @page.nil? + render_404 + return + end + if @wiki.page_found_with_redirect? + redirect_to params.update(:id => @page.title) + end end - + # Returns true if the current user is allowed to edit the page, otherwise false def editable?(page = @page) page.editable_by?(User.current) @@ -267,13 +278,7 @@ helper.instance_method(:initial_page_content).bind(self).call(page) end - # eager load information about last updates, without loading text - def load_pages_grouped_by_date_without_content - @pages = @wiki.pages.find :all, :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on", - :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id", - :order => 'title' - @pages_by_date = @pages.group_by {|p| p.updated_on.to_date} - @pages_by_parent_id = @pages.group_by(&:parent_id) + def load_pages_for_index + @pages = @wiki.pages.with_updated_on.all(:order => 'title', :include => {:wiki => :project}) end - end diff -r adc8466df404 -r 753f1380d6bc app/helpers/.svn/all-wcprops --- a/app/helpers/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,239 +1,5 @@ -K 25 -svn:wc:ra_dav:version-url -V 36 -/svn/!svn/ver/4990/trunk/app/helpers -END -trackers_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/333/trunk/app/helpers/trackers_helper.rb -END -groups_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/2869/trunk/app/helpers/groups_helper.rb -END -issue_statuses_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/333/trunk/app/helpers/issue_statuses_helper.rb -END -roles_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/333/trunk/app/helpers/roles_helper.rb -END -sort_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/3618/trunk/app/helpers/sort_helper.rb -END -repositories_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4990/trunk/app/helpers/repositories_helper.rb -END -admin_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4080/trunk/app/helpers/admin_helper.rb -END -projects_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3924/trunk/app/helpers/projects_helper.rb -END -account_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/333/trunk/app/helpers/account_helper.rb -END -calendars_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4046/trunk/app/helpers/calendars_helper.rb -END -issue_categories_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/333/trunk/app/helpers/issue_categories_helper.rb -END -documents_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/333/trunk/app/helpers/documents_helper.rb -END -wiki_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4952/trunk/app/helpers/wiki_helper.rb -END -enumerations_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/333/trunk/app/helpers/enumerations_helper.rb -END -issues_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4954/trunk/app/helpers/issues_helper.rb -END -queries_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4387/trunk/app/helpers/queries_helper.rb -END -gantt_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4283/trunk/app/helpers/gantt_helper.rb -END -mail_handler_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/1584/trunk/app/helpers/mail_handler_helper.rb -END -watchers_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3579/trunk/app/helpers/watchers_helper.rb -END -my_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/333/trunk/app/helpers/my_helper.rb -END -members_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/333/trunk/app/helpers/members_helper.rb -END -welcome_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/333/trunk/app/helpers/welcome_helper.rb -END -journals_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4062/trunk/app/helpers/journals_helper.rb -END -workflows_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/1914/trunk/app/helpers/workflows_helper.rb -END -reports_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/629/trunk/app/helpers/reports_helper.rb -END -timelog_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3708/trunk/app/helpers/timelog_helper.rb -END -settings_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4222/trunk/app/helpers/settings_helper.rb -END -custom_fields_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4480/trunk/app/helpers/custom_fields_helper.rb -END -issue_moves_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3936/trunk/app/helpers/issue_moves_helper.rb -END -users_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4497/trunk/app/helpers/users_helper.rb -END -application_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/4900/trunk/app/helpers/application_helper.rb -END -auth_sources_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/333/trunk/app/helpers/auth_sources_helper.rb -END -search_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4353/trunk/app/helpers/search_helper.rb -END -messages_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4760/trunk/app/helpers/messages_helper.rb -END -issue_relations_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/506/trunk/app/helpers/issue_relations_helper.rb -END -versions_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/955/trunk/app/helpers/versions_helper.rb -END -boards_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/529/trunk/app/helpers/boards_helper.rb -END -attachments_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/4605/trunk/app/helpers/attachments_helper.rb -END -news_helper.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/333/trunk/app/helpers/news_helper.rb +/svn/!svn/ver/5961/branches/1.2-stable/app/helpers END diff -r adc8466df404 -r 753f1380d6bc app/helpers/.svn/entries --- a/app/helpers/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/helpers +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/helpers http://redmine.rubyforge.org/svn -2011-03-03T03:30:10.954225Z -4990 -tmaruyama +2011-05-29T12:06:05.086159Z +5961 +jplang @@ -32,7 +32,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z e1b19c2c81df384b2026001d1d9605fd 2007-03-12T17:59:02.654744Z 333 @@ -66,7 +66,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z ab0af291fb143223852a6edddc64b74b 2009-09-12T08:36:46.650954Z 2869 @@ -100,7 +100,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 0cd3093356b7034ee950ca327fc7aabc 2007-03-12T17:59:02.654744Z 333 @@ -134,7 +134,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 69869e026dc6cbacc618214e4bb13b1b 2007-03-12T17:59:02.654744Z 333 @@ -168,10 +168,10 @@ -2011-03-03T11:05:09.000000Z -491ead5828edb57adcd7333943656c94 -2010-03-27T16:55:20.312262Z -3618 +2011-06-06T13:18:33.000000Z +580d9b0753045bc89e5a92dfb9bccc65 +2011-04-03T14:09:22.655792Z +5303 jplang has-props @@ -194,7 +194,7 @@ -6469 +6246 repositories_helper.rb file @@ -202,10 +202,10 @@ -2011-03-03T11:40:18.000000Z -824b766582f7177458a587dcfcf980f5 -2011-03-03T03:30:10.954225Z -4990 +2011-06-06T13:18:33.000000Z +bb401adbfcec298b2731e4e1fc4fe652 +2011-05-18T02:45:35.322493Z +5830 tmaruyama has-props @@ -228,7 +228,7 @@ -9702 +10966 admin_helper.rb file @@ -236,7 +236,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 258ebc9ad13b3111585e5118ec607d1b 2010-09-10T23:07:10.817821Z 4080 @@ -270,11 +270,11 @@ -2011-03-03T11:05:09.000000Z -19efbd2b30f44f233d5140437e2707a0 -2010-08-08T07:07:20.961363Z -3924 -jbbarth +2011-06-06T13:18:33.000000Z +a0bf71359447b66a404f8911ca669a1c +2011-05-18T11:13:02.791261Z +5849 +tmaruyama has-props @@ -296,7 +296,7 @@ -5204 +5187 account_helper.rb file @@ -304,7 +304,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 42d20ee00a3c45e3411634dbb09e2447 2007-03-12T17:59:02.654744Z 333 @@ -338,33 +338,33 @@ -2011-03-03T11:05:09.000000Z -c8780c65337211f34097d74a8c3c9f6e -2010-08-26T16:37:26.575205Z -4046 -edavis10 - - - - - - - - - - - - - - - - - - - - - -1462 +2011-06-06T13:18:33.000000Z +3fc9041a6dc70d35c640c38cd1edbbc8 +2011-04-03T14:01:32.419875Z +5301 +jplang + + + + + + + + + + + + + + + + + + + + + +1216 issue_categories_helper.rb file @@ -372,7 +372,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 1257aafe6669c839ab46dac2b2732ae0 2007-03-12T17:59:02.654744Z 333 @@ -406,7 +406,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z ceb0fce7a4c271df3ae182c29caf9c03 2007-03-12T17:59:02.654744Z 333 @@ -440,10 +440,10 @@ -2011-03-03T11:40:18.000000Z -44832549db555bb9e047a67ae330f34a -2011-02-27T12:35:31.414622Z -4952 +2011-06-06T13:18:33.000000Z +a93e6c0c0834a0700ecd23ba24bf4102 +2011-03-10T19:44:32.117142Z +5080 jplang has-props @@ -466,7 +466,7 @@ -1315 +1407 enumerations_helper.rb file @@ -474,7 +474,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z fc5ec20dd0ca3ce1d954b219417eff70 2007-03-12T17:59:02.654744Z 333 @@ -508,33 +508,67 @@ -2011-03-03T11:40:18.000000Z -9dfadb196899bf96fdff7c7c34914e8c -2011-02-27T13:34:41.060565Z -4954 +2011-06-06T13:18:33.000000Z +f2465c49d740ce016b80c6035d7df2c4 +2011-05-18T02:45:59.814275Z +5831 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +12736 + +gantt_helper.rb +file + + + + +2011-06-06T13:18:33.000000Z +65d9a1166814eb63d467373051bf0b62 +2011-04-03T14:01:32.419875Z +5301 jplang -has-props - - - - - - - - - - - - - - - - - - - - -11599 + + + + + + + + + + + + + + + + + + + + + +1492 queries_helper.rb file @@ -542,10 +576,10 @@ -2011-03-03T11:05:09.000000Z -6b997d023cc081b101be1949eb18f893 -2010-11-07T15:38:51.908839Z -4387 +2011-06-06T13:18:33.000000Z +ce7f38c9a8f2d85ae50a0555b7ec516f +2011-04-03T14:31:32.940784Z +5304 jplang has-props @@ -568,41 +602,7 @@ -3722 - -gantt_helper.rb -file - - - - -2011-03-03T11:05:09.000000Z -dfac5226f31c3c232d7dcc9416172071 -2010-10-23T09:08:55.877887Z -4283 -jplang - - - - - - - - - - - - - - - - - - - - - -1988 +3795 mail_handler_helper.rb file @@ -610,7 +610,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z c79faf6237abac40fabce0eacbfbb4cb 2008-06-25T19:25:28.386590Z 1584 @@ -644,10 +644,10 @@ -2011-03-03T11:05:09.000000Z -fc71d3a83fe0178e0c6d9519c7a62dde -2010-03-13T17:45:41.194736Z -3579 +2011-06-06T13:18:33.000000Z +809ed0d1d7e143a2b6f4c695781d4dc0 +2011-04-05T12:09:15.508559Z +5320 jplang has-props @@ -670,7 +670,7 @@ -2905 +2688 my_helper.rb file @@ -678,7 +678,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z d7134d76eff99aef107d8930903b10e0 2007-03-12T17:59:02.654744Z 333 @@ -712,7 +712,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z cc94b2fd5c6a87acac13bbe6e91bd39a 2007-03-12T17:59:02.654744Z 333 @@ -746,7 +746,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 2d03eb3683f312ec26736c696319ec76 2007-03-12T17:59:02.654744Z 333 @@ -774,13 +774,47 @@ 817 +workflows_helper.rb +file + + + + +2011-06-06T13:14:59.000000Z +4f7bcbe149363ecb18080e3ce6c3f761 +2008-09-28T12:03:17.584169Z +1914 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +824 + journals_helper.rb file -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z b64edde44bceed7fb0911f87dba971aa 2010-09-05T22:57:20.669640Z 4062 @@ -808,16 +842,50 @@ 2266 -workflows_helper.rb +reports_helper.rb file -2011-03-03T11:05:09.000000Z -4f7bcbe149363ecb18080e3ce6c3f761 -2008-09-28T12:03:17.584169Z -1914 +2011-06-06T13:18:33.000000Z +abbaa87dcc23e906723ca0778128bae4 +2011-05-18T11:13:45.451188Z +5850 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +1262 + +custom_fields_helper.rb +file + + + + +2011-06-06T13:18:33.000000Z +3aab3283e46880f443fed09b975f3d7f +2011-04-07T20:49:33.971753Z +5356 jplang has-props @@ -840,18 +908,18 @@ -824 +5840 -reports_helper.rb +settings_helper.rb file -2011-03-03T11:05:09.000000Z -9daafcfffa933849b3ee09fe5fd7b0cc -2007-08-13T17:00:59.400243Z -629 +2011-06-06T13:18:33.000000Z +da8c43c261cd527067440f75a242c091 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -874,7 +942,7 @@ -1265 +3937 timelog_helper.rb file @@ -882,7 +950,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 1888fd2d4a1be5fa0d6ad8a63238e2b4 2010-04-30T12:18:11.536180Z 3708 @@ -910,115 +978,13 @@ 6636 -settings_helper.rb -file - - - - -2011-03-03T11:05:09.000000Z -868d0dc19e332ae2c817321637a8e31f -2010-09-28T21:09:06.467392Z -4222 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -3858 - -custom_fields_helper.rb -file - - - - -2011-03-03T11:05:09.000000Z -19a8f1c143030c42136fe167f167db15 -2010-12-10T10:12:19.202442Z -4480 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5702 - -issue_moves_helper.rb -file - - - - -2011-03-03T11:05:09.000000Z -66e99bd3af036c92a773a91e92a725f9 -2010-08-11T14:42:10.119704Z -3936 -edavis10 - - - - - - - - - - - - - - - - - - - - - -28 - users_helper.rb file -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 1bedb4287035a6f89074da0b37640c28 2010-12-12T14:25:23.262992Z 4497 @@ -1046,17 +1012,51 @@ 2767 +issue_moves_helper.rb +file + + + + +2011-06-06T13:14:59.000000Z +66e99bd3af036c92a773a91e92a725f9 +2010-08-11T14:42:10.119704Z +3936 +edavis10 + + + + + + + + + + + + + + + + + + + + + +28 + application_helper.rb file -2011-03-03T11:40:18.000000Z -9d39fe6e2dd4535f7a006a77150961bc -2011-02-21T09:53:29.844413Z -4900 -jplang +2011-06-06T13:18:33.000000Z +639bb5f1e90caa8a4d6bb8029ab55905 +2011-05-18T02:46:24.994751Z +5832 +tmaruyama has-props @@ -1078,7 +1078,7 @@ -36020 +35515 auth_sources_helper.rb file @@ -1086,7 +1086,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 19759b6e665f9063140da8ac473d9e31 2007-03-12T17:59:02.654744Z 333 @@ -1120,7 +1120,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z dedb3c62af67e076703aa2f60c97fb2b 2010-11-01T12:55:15.292443Z 4353 @@ -1154,7 +1154,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z d083581ae234853db09e79e4e88d6ad3 2011-01-23T17:02:10.030897Z 4760 @@ -1188,7 +1188,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z fef3a97e6644b418b44f9551aa65af95 2007-05-05T13:22:27.245135Z 506 @@ -1222,10 +1222,10 @@ -2011-03-03T11:05:09.000000Z -fd18226266f3e53f6af000ac07a13313 -2007-12-07T10:26:07.864320Z -955 +2011-06-06T13:18:33.000000Z +18e0206c3b8a4fb260548f58b75c7fa9 +2011-03-20T21:09:48.299058Z +5180 jplang has-props @@ -1248,7 +1248,7 @@ -2170 +2151 boards_helper.rb file @@ -1256,7 +1256,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 0ca8f33522734ee0417089366037a7cb 2007-05-13T17:09:56.765659Z 529 @@ -1290,11 +1290,11 @@ -2011-03-03T11:05:09.000000Z -58bc2391be7fedbf3e55ef07454cb04c -2011-01-01T19:12:35.568700Z -4605 -jplang +2011-06-06T13:18:33.000000Z +a2546fe896ad77351ab052f113afd012 +2011-05-07T05:51:39.224805Z +5681 +tmaruyama has-props @@ -1316,7 +1316,7 @@ -1743 +1731 news_helper.rb file @@ -1324,7 +1324,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z d808f6794a2fa7cd059ed56d5c8d1b28 2007-03-12T17:59:02.654744Z 333 diff -r adc8466df404 -r 753f1380d6bc app/helpers/.svn/text-base/application_helper.rb.svn-base --- a/app/helpers/.svn/text-base/application_helper.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/.svn/text-base/application_helper.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2010 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -63,7 +63,7 @@ # Displays a link to +issue+ with its subject. # Examples: - # + # # link_to_issue(issue) # => Defect #6: This is the subject # link_to_issue(issue, :truncate => 6) # => Defect #6: This i... # link_to_issue(issue, :subject => false) # => Defect #6 @@ -80,7 +80,7 @@ subject = truncate(subject, :length => options[:truncate]) end end - s = link_to "#{issue.tracker} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue}, + s = link_to "#{issue.tracker} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue}, :class => issue.css_classes, :title => title s << ": #{h subject}" if subject @@ -109,7 +109,7 @@ link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => rev}, :title => l(:label_revision_id, format_revision(revision))) end - + # Generates a link to a message def link_to_message(message, options={}, html_options = nil) link_to( @@ -126,7 +126,7 @@ # Generates a link to a project if active # Examples: - # + # # link_to_project(project) # => link to the specified project overview # link_to_project(project, :action=>'settings') # => link to project settings # link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options @@ -160,15 +160,15 @@ html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;" link_to name, {}, html_options end - + def format_activity_title(text) h(truncate_single_line(text, :length => 100)) end - + def format_activity_day(date) date == Date.today ? l(:label_today).titleize : format_date(date) end - + def format_activity_description(text) h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')).gsub(/[\r\n]+/, "
") end @@ -180,29 +180,29 @@ h("#{version.project} - #{version}") end end - + def due_date_distance_in_words(date) if date l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date)) end end - def render_page_hierarchy(pages, node=nil) + def render_page_hierarchy(pages, node=nil, options={}) content = '' if pages[node] content << "\n" end content end - + # Renders flash messages def render_flash_messages s = '' @@ -211,7 +211,7 @@ end s end - + # Renders tabs and their content def render_tabs(tabs) if tabs.any? @@ -220,11 +220,11 @@ content_tag 'p', l(:label_no_data), :class => "nodata" end end - + # Renders the project quick-jump box def render_project_jump_box - # Retrieve them now to avoid a COUNT query - projects = User.current.projects.all + return unless User.current.logged? + projects = User.current.memberships.collect(&:project).compact.uniq if projects.any? s = '' + "" + @@ -236,7 +236,7 @@ s end end - + def project_tree_options_for_select(projects, options = {}) s = '' project_tree(projects) do |project, level| @@ -252,14 +252,14 @@ end s end - + # Yields the given block for each project with its level in the tree # # Wrapper for Project#project_tree def project_tree(projects, &block) Project.project_tree(projects, &block) end - + def project_nested_ul(projects, &block) s = '' if projects.any? @@ -270,7 +270,7 @@ else ancestors.pop s << "" - while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) + while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) ancestors.pop s << "\n" end @@ -283,20 +283,20 @@ end s end - + def principals_check_box_tags(name, principals) s = '' principals.sort.each do |principal| s << "\n" end - s + s end # Truncates and returns the string as a single line def truncate_single_line(string, *args) truncate(string.to_s, *args).gsub(%r{[\r\n]+}m, ' ') end - + # Truncates at line break after 250 characters or options[:length] def truncate_lines(string, options={}) length = options[:length] || 250 @@ -314,7 +314,7 @@ def authoring(created, author, options={}) l(options[:label] || :label_added_time_by, :author => link_to_user(author), :age => time_tag(created)) end - + def time_tag(time) text = distance_of_time_in_words(Time.now, time) if @project @@ -336,20 +336,18 @@ page_param = options.delete(:page_param) || :page per_page_links = options.delete(:per_page_links) url_param = params.dup - # don't reuse query params if filters are present - url_param.merge!(:fields => nil, :values => nil, :operators => nil) if url_param.delete(:set_filter) html = '' if paginator.current.previous - html << link_to_remote_content_update('« ' + l(:label_previous), url_param.merge(page_param => paginator.current.previous)) + ' ' + html << link_to_content_update('« ' + l(:label_previous), url_param.merge(page_param => paginator.current.previous)) + ' ' end html << (pagination_links_each(paginator, options) do |n| - link_to_remote_content_update(n.to_s, url_param.merge(page_param => n)) + link_to_content_update(n.to_s, url_param.merge(page_param => n)) end || '') - + if paginator.current.next - html << ' ' + link_to_remote_content_update((l(:label_next) + ' »'), url_param.merge(page_param => paginator.current.next)) + html << ' ' + link_to_content_update((l(:label_next) + ' »'), url_param.merge(page_param => paginator.current.next)) end unless count.nil? @@ -361,20 +359,14 @@ html end - + def per_page_links(selected=nil) - url_param = params.dup - url_param.clear if url_param.has_key?(:set_filter) - links = Setting.per_page_options_array.collect do |n| - n == selected ? n : link_to_remote(n, {:update => "content", - :url => params.dup.merge(:per_page => n), - :method => :get}, - {:href => url_for(url_param.merge(:per_page => n))}) + n == selected ? n : link_to_content_update(n, params.merge(:per_page => n)) end links.size > 1 ? l(:label_display_per_page, links.join(', ')) : nil end - + def reorder_links(name, url) link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)), url.merge({"#{name}[move_to]" => 'highest'}), :method => :post, :title => l(:label_sort_highest)) + link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)), url.merge({"#{name}[move_to]" => 'higher'}), :method => :post, :title => l(:label_sort_higher)) + @@ -386,13 +378,13 @@ elements = args.flatten elements.any? ? content_tag('p', args.join(' » ') + ' » ', :class => 'breadcrumb') : nil end - + def other_formats_links(&block) concat('

' + l(:label_export_to)) yield Redmine::Views::OtherFormatsBuilder.new(self) concat('

') end - + def page_header_title if @project.nil? || @project.new_record? a = [h(Setting.app_title), ''] @@ -400,7 +392,7 @@ else pname = [] b = [] - ancestors = (@project.root? ? [] : @project.ancestors.visible) + ancestors = (@project.root? ? [] : @project.ancestors.visible.all) if ancestors.any? root = ancestors.shift b << link_to_project(root, {:jump => current_menu_item}, :class => 'root') @@ -472,21 +464,21 @@ only_path = options.delete(:only_path) == false ? false : true text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text, :object => obj, :attribute => attr) { |macro, args| exec_macro(macro, obj, args) } - + @parsed_headings = [] text = parse_non_pre_blocks(text) do |text| [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links, :parse_headings].each do |method_name| send method_name, text, project, obj, attr, only_path, options end end - + if @parsed_headings.any? replace_toc(text, @parsed_headings) end - + text end - + def parse_non_pre_blocks(text) s = StringScanner.new(text) tags = [] @@ -515,13 +507,13 @@ end parsed end - + def parse_inline_attachments(text, project, obj, attr, only_path, options) # when using an image link, try to use an attachment, if possible if options[:attachments] || (obj && obj.respond_to?(:attachments)) attachments = nil text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m| - filename, ext, alt, alttext = $1.downcase, $2, $3, $4 + filename, ext, alt, alttext = $1.downcase, $2, $3, $4 attachments ||= (options[:attachments] || obj.attachments).sort_by(&:created_on).reverse # search for the picture in attachments if found = attachments.detect { |att| att.filename.downcase == filename } @@ -584,7 +576,7 @@ end end end - + # Redmine links # # Examples: @@ -707,25 +699,25 @@ leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}") end end - + HEADING_RE = /]+)?>(.+?)<\/h(1|2|3|4)>/i unless const_defined?(:HEADING_RE) - + # Headings and TOC # Adds ids and links to headings unless options[:headings] is set to false def parse_headings(text, project, obj, attr, only_path, options) return if options[:headings] == false - + text.gsub!(HEADING_RE) do level, attrs, content = $1.to_i, $2, $3 item = strip_tags(content).strip anchor = item.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-') @parsed_headings << [level, anchor, item] - "#{content}" + "\n#{content}" end end - + TOC_RE = /

\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE) - + # Renders the TOC with given headings def replace_toc(text, headings) text.gsub!(TOC_RE) do @@ -808,13 +800,13 @@ ), :class => 'progress', :style => "width: #{width};") + content_tag('p', legend, :class => 'pourcent') end - + def checked_image(checked=true) if checked image_tag 'toggle_check.png' end end - + def context_menu(url) unless @context_menu_included content_for :header_tags do @@ -862,13 +854,15 @@ 'Calendar._FD = 1;' # Monday when 7 'Calendar._FD = 0;' # Sunday + when 6 + 'Calendar._FD = 6;' # Saturday else '' # use language end - + javascript_include_tag('calendar/calendar') + javascript_include_tag("calendar/lang/calendar-#{current_language.to_s.downcase}.js") + - javascript_tag(start_of_week) + + javascript_tag(start_of_week) + javascript_include_tag('calendar/calendar-setup') + stylesheet_link_tag('calendar') end @@ -901,7 +895,7 @@ '' end end - + # Returns the javascript tags that are included in the html layout head def javascript_heads tags = javascript_include_tag(:defaults) @@ -914,7 +908,11 @@ def favicon "" end - + + def robot_exclusion_tag + '' + end + # Returns true if arg is expected in the API response def include_in_api_response?(arg) unless @included_in_api_response @@ -936,7 +934,7 @@ options end end - + private def wiki_helper @@ -944,12 +942,8 @@ extend helper return self end - - def link_to_remote_content_update(text, url_params) - link_to_remote(text, - {:url => url_params, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, - {:href => url_for(:params => url_params)} - ) + + def link_to_content_update(text, url_params = {}, html_options = {}) + link_to(text, url_params, html_options) end - end diff -r adc8466df404 -r 753f1380d6bc app/helpers/attachments_helper.rb --- a/app/helpers/attachments_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/attachments_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,13 +21,13 @@ # :author -- author names are not displayed if set to false def link_to_attachments(container, options = {}) options.assert_valid_keys(:author) - + if container.attachments.any? options = {:deletable => container.attachments_deletable?, :author => true}.merge(options) render :partial => 'attachments/links', :locals => {:attachments => container.attachments, :options => options} end end - + def to_utf8(str) if str.respond_to?(:force_encoding) str.force_encoding('UTF-8') @@ -35,7 +35,7 @@ else return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii end - + begin Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] rescue Iconv::InvalidEncoding diff -r adc8466df404 -r 753f1380d6bc app/helpers/calendars_helper.rb --- a/app/helpers/calendars_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/calendars_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -32,14 +32,6 @@ end def link_to_month(link_name, year, month, options={}) - project_id = options[:project].present? ? options[:project].to_param : nil - - link_target = calendar_path(:year => year, :month => month, :project_id => project_id) - - link_to_remote(link_name, - {:update => "content", :url => link_target, :method => :put}, - {:href => link_target}) - + link_to_content_update(link_name, params.merge(:year => year, :month => month)) end - end diff -r adc8466df404 -r 753f1380d6bc app/helpers/custom_fields_helper.rb --- a/app/helpers/custom_fields_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/custom_fields_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -37,7 +37,7 @@ field_id = "#{name}_custom_field_values_#{custom_field.id}" field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format) - case field_format.edit_as + case field_format.try(:edit_as) when "date" text_field_tag(field_name, custom_value.value, :id => field_id, :size => 10) + calendar_for(field_id) @@ -49,7 +49,7 @@ blank_option = custom_field.is_required? ? (custom_field.default_value.blank? ? "" : '') : '' - select_tag(field_name, blank_option + options_for_select(custom_field.possible_values, custom_value.value), :id => field_id) + select_tag(field_name, blank_option + options_for_select(custom_field.possible_values_options(custom_value.customized), custom_value.value), :id => field_id) else text_field_tag(field_name, custom_value.value, :id => field_id) end @@ -68,11 +68,11 @@ custom_field_label_tag(name, custom_value) + custom_field_tag(name, custom_value) end - def custom_field_tag_for_bulk_edit(name, custom_field) + def custom_field_tag_for_bulk_edit(name, custom_field, projects=nil) field_name = "#{name}[custom_field_values][#{custom_field.id}]" field_id = "#{name}_custom_field_values_#{custom_field.id}" field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format) - case field_format.edit_as + case field_format.try(:edit_as) when "date" text_field_tag(field_name, '', :id => field_id, :size => 10) + calendar_for(field_id) @@ -83,7 +83,7 @@ [l(:general_text_yes), '1'], [l(:general_text_no), '0']]), :id => field_id) when "list" - select_tag(field_name, options_for_select([[l(:label_no_change_option), '']] + custom_field.possible_values), :id => field_id) + select_tag(field_name, options_for_select([[l(:label_no_change_option), '']] + custom_field.possible_values_options(projects)), :id => field_id) else text_field_tag(field_name, '', :id => field_id) end @@ -101,8 +101,8 @@ end # Return an array of custom field formats which can be used in select_tag - def custom_field_formats_for_select - Redmine::CustomFieldFormat.as_select + def custom_field_formats_for_select(custom_field) + Redmine::CustomFieldFormat.as_select(custom_field.class.customized_class.name) end # Renders the custom_values in api views diff -r adc8466df404 -r 753f1380d6bc app/helpers/gantt_helper.rb --- a/app/helpers/gantt_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/gantt_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -21,29 +21,21 @@ case in_or_out when :in if gantt.zoom < 4 - link_to_remote(l(:text_zoom_in), - {:url => gantt.params.merge(:zoom => (gantt.zoom+1)), :method => :get, :update => 'content'}, - {:href => url_for(gantt.params.merge(:zoom => (gantt.zoom+1))), - :class => 'icon icon-zoom-in'}) + link_to_content_update l(:text_zoom_in), + params.merge(gantt.params.merge(:zoom => (gantt.zoom+1))), + :class => 'icon icon-zoom-in' else content_tag('span', l(:text_zoom_in), :class => 'icon icon-zoom-in') end when :out if gantt.zoom > 1 - link_to_remote(l(:text_zoom_out), - {:url => gantt.params.merge(:zoom => (gantt.zoom-1)), :method => :get, :update => 'content'}, - {:href => url_for(gantt.params.merge(:zoom => (gantt.zoom-1))), - :class => 'icon icon-zoom-out'}) + link_to_content_update l(:text_zoom_out), + params.merge(gantt.params.merge(:zoom => (gantt.zoom-1))), + :class => 'icon icon-zoom-out' else content_tag('span', l(:text_zoom_out), :class => 'icon icon-zoom-out') end end end - - def number_of_issues_on_versions(gantt) - versions = gantt.events.collect {|event| (event.is_a? Version) ? event : nil}.compact - - versions.sum {|v| v.fixed_issues.for_gantt.with_query(@query).count} - end end diff -r adc8466df404 -r 753f1380d6bc app/helpers/issues_helper.rb --- a/app/helpers/issues_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/issues_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -5,12 +5,12 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -54,20 +54,30 @@ "#{@cached_label_assigned_to}: #{issue.assigned_to}
" + "#{@cached_label_priority}: #{issue.priority.name}" end - + + def issue_heading(issue) + h("#{issue.tracker} ##{issue.id}") + end + def render_issue_subject_with_tree(issue) s = '' - issue.ancestors.each do |ancestor| + ancestors = issue.root? ? [] : issue.ancestors.visible.all + ancestors.each do |ancestor| s << '

' + content_tag('p', link_to_issue(ancestor)) end - s << '
' + content_tag('h3', h(issue.subject)) - s << '
' * (issue.ancestors.size + 1) + s << '
' + subject = h(issue.subject) + if issue.is_private? + subject = content_tag('span', l(:field_is_private), :class => 'private') + ' ' + subject + end + s << content_tag('h3', subject) + s << '
' * (ancestors.size + 1) s end - + def render_descendants_tree(issue) s = '
' - issue_list(issue.descendants.sort_by(&:lft)) do |child, level| + issue_list(issue.descendants.visible.sort_by(&:lft)) do |child, level| s << content_tag('tr', content_tag('td', check_box_tag("ids[]", child.id, false, :id => nil), :class => 'checkbox') + content_tag('td', link_to_issue(child, :truncate => 60), :class => 'subject') + @@ -79,7 +89,7 @@ s << '
' s end - + def render_custom_fields_rows(issue) return if issue.custom_field_values.empty? ordered_values = [] @@ -98,14 +108,32 @@ s << "\n" s end - + + def issues_destroy_confirmation_message(issues) + issues = [issues] unless issues.is_a?(Array) + message = l(:text_issues_destroy_confirmation) + descendant_count = issues.inject(0) {|memo, i| memo += (i.right - i.left - 1)/2} + if descendant_count > 0 + issues.each do |issue| + next if issue.root? + issues.each do |other_issue| + descendant_count -= 1 if issue.is_descendant_of?(other_issue) + end + end + if descendant_count > 0 + message << "\n" + l(:text_issues_destroy_descendants_confirmation, :count => descendant_count) + end + end + message + end + def sidebar_queries unless @sidebar_queries # User can see public queries and his own queries visible = ARCondition.new(["is_public = ? OR user_id = ?", true, (User.current.logged? ? User.current.id : 0)]) # Project specific queries and global queries visible << (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id]) - @sidebar_queries = Query.find(:all, + @sidebar_queries = Query.find(:all, :select => 'id, name, is_public', :order => "name ASC", :conditions => visible.conditions) @@ -116,13 +144,13 @@ def query_links(title, queries) # links to #index on issues/show url_params = controller_name == 'issues' ? {:controller => 'issues', :action => 'index', :project_id => @project} : params - + content_tag('h3', title) + queries.collect {|query| link_to(h(query.name), url_params.merge(:query_id => query)) }.join('
') end - + def render_sidebar_queries out = '' queries = sidebar_queries.select {|q| !q.is_public?} @@ -154,6 +182,10 @@ label = l(:field_parent_issue) value = "##{detail.value}" unless detail.value.blank? old_value = "##{detail.old_value}" unless detail.old_value.blank? + + when detail.prop_key == 'is_private' + value = l(detail.value == "0" ? :general_text_No : :general_text_Yes) unless detail.value.blank? + old_value = l(detail.old_value == "0" ? :general_text_No : :general_text_Yes) unless detail.old_value.blank? end when 'cf' custom_field = CustomField.find_by_id(detail.prop_key) @@ -170,7 +202,7 @@ label ||= detail.prop_key value ||= detail.value old_value ||= detail.old_value - + unless no_html label = content_tag('strong', label) old_value = content_tag("i", h(old_value)) if detail.old_value @@ -182,11 +214,11 @@ value = content_tag("i", h(value)) if value end end - + if detail.property == 'attr' && detail.prop_key == 'description' s = l(:text_journal_changed_no_detail, :label => label) unless no_html - diff_link = link_to 'diff', + diff_link = link_to 'diff', {:controller => 'journals', :action => 'diff', :id => detail.journal_id, :detail_id => detail.id}, :title => l(:label_view_diff) s << " (#{ diff_link })" @@ -216,7 +248,7 @@ return record.name if record end end - + # Renders issue children recursively def render_api_issue_children(issue, api) return if issue.leaf? @@ -230,14 +262,14 @@ end end end - + def issues_to_csv(issues, project = nil) - ic = Iconv.new(l(:general_csv_encoding), 'UTF-8') + ic = Iconv.new(l(:general_csv_encoding), 'UTF-8') decimal_separator = l(:general_csv_decimal_separator) export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv| # csv header fields headers = [ "#", - l(:field_status), + l(:field_status), l(:field_project), l(:field_tracker), l(:field_priority), @@ -264,9 +296,9 @@ # csv lines issues.each do |issue| fields = [issue.id, - issue.status.name, + issue.status.name, issue.project.name, - issue.tracker.name, + issue.tracker.name, issue.priority.name, issue.subject, issue.assigned_to, @@ -278,7 +310,7 @@ issue.done_ratio, issue.estimated_hours.to_s.gsub('.', decimal_separator), issue.parent_id, - format_time(issue.created_on), + format_time(issue.created_on), format_time(issue.updated_on) ] custom_fields.each {|f| fields << show_value(issue.custom_value_for(f)) } diff -r adc8466df404 -r 753f1380d6bc app/helpers/projects_helper.rb --- a/app/helpers/projects_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/projects_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -20,7 +20,7 @@ return '' unless version && version.is_a?(Version) link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, options end - + def project_settings_tabs tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural}, {:name => 'modules', :action => :select_project_modules, :partial => 'projects/settings/modules', :label => :label_module_plural}, @@ -32,9 +32,9 @@ {:name => 'boards', :action => :manage_boards, :partial => 'projects/settings/boards', :label => :label_board_plural}, {:name => 'activities', :action => :manage_project_activities, :partial => 'projects/settings/activities', :label => :enumeration_activities} ] - tabs.select {|tab| User.current.allowed_to?(tab[:action], @project)} + tabs.select {|tab| User.current.allowed_to?(tab[:action], @project)} end - + def parent_project_select_tag(project) selected = project.parent # retrieve the requested parent project @@ -42,13 +42,13 @@ if parent_id selected = (parent_id.blank? ? nil : Project.find(parent_id)) end - + options = '' options << "" if project.allowed_parents.include?(nil) options << project_tree_options_for_select(project.allowed_parents.compact, :selected => selected) content_tag('select', options, :name => 'project[parent_id]', :id => 'project_parent_id') end - + # Renders a tree of projects as a nested set of unordered lists # The given collection may be a subset of the whole project tree # (eg. some intermediate nodes are private and can not be seen) @@ -65,7 +65,7 @@ else ancestors.pop s << "" - while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) + while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) ancestors.pop s << "\n" end @@ -247,7 +247,7 @@ if selected && !versions.include?(selected) grouped[selected.project.name] << [selected.name, selected.id] end - + if grouped.keys.size > 1 grouped_options_for_select(grouped, selected && selected.id) else diff -r adc8466df404 -r 753f1380d6bc app/helpers/queries_helper.rb --- a/app/helpers/queries_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/queries_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -78,16 +78,16 @@ # Give it a name, required to be valid @query = Query.new(:name => "_") @query.project = @project - if params[:fields] + if params[:fields] || params[:f] @query.filters = {} - @query.add_filters(params[:fields], params[:operators], params[:values]) + @query.add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v]) else @query.available_filters.keys.each do |field| @query.add_short_filter(field, params[field]) if params[field] end end @query.group_by = params[:group_by] - @query.column_names = params[:query] && params[:query][:column_names] + @query.column_names = params[:c] || (params[:query] && params[:query][:column_names]) session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names} else @query = Query.find_by_id(session[:query][:id]) if session[:query][:id] diff -r adc8466df404 -r 753f1380d6bc app/helpers/reports_helper.rb --- a/app/helpers/reports_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/reports_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,22 +1,22 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module ReportsHelper - + def aggregate(data, criteria) a = 0 data.each { |row| @@ -28,9 +28,9 @@ } unless data.nil? a end - + def aggregate_link(data, criteria, *args) a = aggregate data, criteria a > 0 ? link_to(a, *args) : '-' - end + end end diff -r adc8466df404 -r 753f1380d6bc app/helpers/repositories_helper.rb --- a/app/helpers/repositories_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/repositories_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,21 +1,22 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'iconv' +require 'redmine/codeset_util' module RepositoriesHelper def format_revision(revision) @@ -48,7 +49,8 @@ when 'A' # Detects moved/copied files if !change.from_path.blank? - change.action = @changeset.changes.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C' + change.action = + @changeset.changes.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C' end change when 'D' @@ -56,8 +58,8 @@ else change end - end.compact - + end.compact + tree = { } changes.each do |change| p = tree @@ -72,13 +74,11 @@ end p[:c] = change end - render_changes_tree(tree[:s]) end def render_changes_tree(tree) return '' if tree.nil? - output = '' output << '
    ' tree.keys.sort.each do |file| @@ -117,16 +117,24 @@ end def to_utf8(str) - return str if str.blank? + return str if str.nil? + str = to_utf8_internal(str) if str.respond_to?(:force_encoding) str.force_encoding('UTF-8') - else - # TODO: - # Japanese Shift_JIS(CP932) is not compatible with ASCII. - # UTF-7 and Japanese ISO-2022-JP are 7bits clean. - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii end + str + end + def to_utf8_internal(str) + return str if str.nil? + if str.respond_to?(:force_encoding) + str.force_encoding('ASCII-8BIT') + end + return str if str.empty? + return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + end @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) @encodings.each do |encoding| begin @@ -135,19 +143,9 @@ # do nothing here and try the next encoding end end - str = replace_invalid_utf8(str) + str = Redmine::CodesetUtil.replace_invalid_utf8(str) end - - def replace_invalid_utf8(str) - if str.respond_to?(:force_encoding) - str.force_encoding('UTF-8') - if ! str.valid_encoding? - str = str.encode("US-ASCII", :invalid => :replace, - :undef => :replace, :replace => '?').encode("UTF-8") - end - end - str - end + private :to_utf8_internal def repository_field_tags(form, repository) method = repository.class.name.demodulize.underscore + "_field_tags" @@ -165,18 +163,18 @@ scm_options << ["Repository::#{scm}".constantize.scm_name, scm] end end - select_tag('repository_scm', + select_tag('repository_scm', options_for_select(scm_options, repository.class.name.demodulize), :disabled => (repository && !repository.new_record?), :onchange => remote_function( :url => { :controller => 'repositories', - :action => 'edit', - :id => @project - }, + :action => 'edit', + :id => @project + }, :method => :get, - :with => "Form.serialize(this.form)") - ) + :with => "Form.serialize(this.form)") + ) end def with_leading_slash(path) @@ -200,53 +198,87 @@ end def darcs_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', - :size => 60, :required => true, - :disabled => (repository && !repository.new_record?))) + - content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, - :label => 'Commit messages encoding', :required => true)) + content_tag('p', form.text_field( + :url, :label => l(:field_path_to_repository), + :size => 60, :required => true, + :disabled => (repository && !repository.new_record?))) + + content_tag('p', form.select( + :log_encoding, [nil] + Setting::ENCODINGS, + :label => l(:field_commit_logs_encoding), :required => true)) end def mercurial_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', + content_tag('p', form.text_field( + :url, :label => l(:field_path_to_repository), :size => 60, :required => true, - :disabled => (repository && !repository.root_url.blank?)) + - '
    local repository (e.g. /hgrepo, c:\hgrepo)' ) + :disabled => (repository && !repository.root_url.blank?) + ) + + '
    ' + l(:text_mercurial_repository_note)) + + content_tag('p', form.select( + :path_encoding, [nil] + Setting::ENCODINGS, + :label => l(:field_scm_path_encoding) + ) + + '
    ' + l(:text_scm_path_encoding_note)) end def git_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Path to repository', + content_tag('p', form.text_field( + :url, :label => l(:field_path_to_repository), :size => 60, :required => true, - :disabled => (repository && !repository.root_url.blank?)) + - '
    a bare and local repository (e.g. /gitrepo, c:\gitrepo)') + :disabled => (repository && !repository.root_url.blank?) + ) + + '
    ' + l(:text_git_repository_note)) + + content_tag('p', form.select( + :path_encoding, [nil] + Setting::ENCODINGS, + :label => l(:field_scm_path_encoding) + ) + + '
    ' + l(:text_scm_path_encoding_note)) + + content_tag('p', form.check_box( + :extra_report_last_commit, + :label => l(:label_git_report_last_commit) + )) end def cvs_field_tags(form, repository) - content_tag('p', form.text_field(:root_url, - :label => 'CVSROOT', :size => 60, :required => true, - :disabled => !repository.new_record?)) + - content_tag('p', form.text_field(:url, :label => 'Module', - :size => 30, :required => true, - :disabled => !repository.new_record?)) + - content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, - :label => 'Commit messages encoding', :required => true)) + content_tag('p', form.text_field( + :root_url, + :label => l(:field_cvsroot), + :size => 60, :required => true, + :disabled => !repository.new_record?)) + + content_tag('p', form.text_field( + :url, + :label => l(:field_cvs_module), + :size => 30, :required => true, + :disabled => !repository.new_record?)) + + content_tag('p', form.select( + :log_encoding, [nil] + Setting::ENCODINGS, + :label => l(:field_commit_logs_encoding), :required => true)) + + content_tag('p', form.select( + :path_encoding, [nil] + Setting::ENCODINGS, + :label => l(:field_scm_path_encoding) + ) + + '
    ' + l(:text_scm_path_encoding_note)) end def bazaar_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', - :size => 60, :required => true, - :disabled => (repository && !repository.new_record?))) + - content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, - :label => 'Commit messages encoding', :required => true)) + content_tag('p', form.text_field( + :url, :label => l(:field_path_to_repository), + :size => 60, :required => true, + :disabled => (repository && !repository.new_record?))) + + content_tag('p', form.select( + :log_encoding, [nil] + Setting::ENCODINGS, + :label => l(:field_commit_logs_encoding), :required => true)) end def filesystem_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', + content_tag('p', form.text_field( + :url, :label => l(:field_root_directory), :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.select( :path_encoding, [nil] + Setting::ENCODINGS, - :label => 'Path encoding') + - '
    Default: UTF-8') + :label => l(:field_scm_path_encoding) + ) + + '
    ' + l(:text_scm_path_encoding_note)) end end diff -r adc8466df404 -r 753f1380d6bc app/helpers/settings_helper.rb --- a/app/helpers/settings_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/settings_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -27,46 +27,53 @@ {:name => 'repositories', :partial => 'settings/repositories', :label => :label_repository_plural} ] end - + def setting_select(setting, choices, options={}) if blank_text = options.delete(:blank) choices = [[blank_text.is_a?(Symbol) ? l(blank_text) : blank_text, '']] + choices end setting_label(setting, options) + - select_tag("settings[#{setting}]", options_for_select(choices, Setting.send(setting).to_s), options) + select_tag("settings[#{setting}]", + options_for_select(choices, Setting.send(setting).to_s), + options) end - + def setting_multiselect(setting, choices, options={}) setting_values = Setting.send(setting) setting_values = [] unless setting_values.is_a?(Array) - + setting_label(setting, options) + hidden_field_tag("settings[#{setting}][]", '') + choices.collect do |choice| - text, value = (choice.is_a?(Array) ? choice : [choice, choice]) - content_tag('label', - check_box_tag("settings[#{setting}][]", value, Setting.send(setting).include?(value)) + text.to_s, + text, value = (choice.is_a?(Array) ? choice : [choice, choice]) + content_tag( + 'label', + check_box_tag( + "settings[#{setting}][]", + value, + Setting.send(setting).include?(value) + ) + text.to_s, :class => 'block' - ) + ) end.join end - + def setting_text_field(setting, options={}) setting_label(setting, options) + text_field_tag("settings[#{setting}]", Setting.send(setting), options) end - + def setting_text_area(setting, options={}) setting_label(setting, options) + text_area_tag("settings[#{setting}]", Setting.send(setting), options) end - + def setting_check_box(setting, options={}) setting_label(setting, options) + hidden_field_tag("settings[#{setting}]", 0) + - check_box_tag("settings[#{setting}]", 1, Setting.send("#{setting}?"), options) + check_box_tag("settings[#{setting}]", 1, Setting.send("#{setting}?"), options) end - + def setting_label(setting, options={}) label = options.delete(:label) label != false ? content_tag("label", l(label || "setting_#{setting}")) : '' diff -r adc8466df404 -r 753f1380d6bc app/helpers/sort_helper.rb --- a/app/helpers/sort_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/sort_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -200,16 +200,12 @@ caption = column.to_s.humanize unless caption sort_options = { :sort => @sort_criteria.add(column.to_s, order).to_param } - # don't reuse params if filters are present - url_options = params.has_key?(:set_filter) ? sort_options : params.merge(sort_options) + url_options = params.merge(sort_options) # Add project_id to url_options url_options = url_options.merge(:project_id => params[:project_id]) if params.has_key?(:project_id) - link_to_remote(caption, - {:update => "content", :url => url_options, :method => :get}, - {:href => url_for(url_options), - :class => css}) + link_to_content_update(caption, url_options, :class => css) end # Returns a table header tag with a sort link for the named column diff -r adc8466df404 -r 753f1380d6bc app/helpers/versions_helper.rb --- a/app/helpers/versions_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/versions_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,11 +17,10 @@ module VersionsHelper - STATUS_BY_CRITERIAS = %w(category tracker priority author assigned_to) + STATUS_BY_CRITERIAS = %w(category tracker status priority author assigned_to) def render_issue_status_by(version, criteria) - criteria ||= 'category' - raise 'Unknown criteria' unless STATUS_BY_CRITERIAS.include?(criteria) + criteria = 'category' unless STATUS_BY_CRITERIAS.include?(criteria) h = Hash.new {|k,v| k[v] = [0, 0]} begin diff -r adc8466df404 -r 753f1380d6bc app/helpers/watchers_helper.rb --- a/app/helpers/watchers_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/watchers_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -16,28 +16,18 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module WatchersHelper - - # Valid options - # * :id - the element id - # * :replace - a string or array of element ids that will be - # replaced - def watcher_tag(object, user, options={:replace => 'watcher'}) - id = options[:id] - id ||= options[:replace] if options[:replace].is_a? String - content_tag("span", watcher_link(object, user, options), :id => id) + + def watcher_tag(object, user, options={}) + content_tag("span", watcher_link(object, user), :class => watcher_css(object)) end - # Valid options - # * :replace - a string or array of element ids that will be - # replaced - def watcher_link(object, user, options={:replace => 'watcher'}) + def watcher_link(object, user) return '' unless user && user.logged? && object.respond_to?('watched_by?') watched = object.watched_by?(user) url = {:controller => 'watchers', :action => (watched ? 'unwatch' : 'watch'), :object_type => object.class.to_s.underscore, - :object_id => object.id, - :replace => options[:replace]} + :object_id => object.id} link_to_remote((watched ? l(:button_unwatch) : l(:button_watch)), {:url => url}, :href => url_for(url), @@ -45,6 +35,11 @@ end + # Returns the css class used to identify watch links for a given +object+ + def watcher_css(object) + "#{object.class.to_s.underscore}-#{object.id}-watcher" + end + # Returns a comma separated list of users watching the given object def watchers_list(object) remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project) diff -r adc8466df404 -r 753f1380d6bc app/helpers/wiki_helper.rb --- a/app/helpers/wiki_helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/helpers/wiki_helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -18,14 +18,17 @@ module WikiHelper def wiki_page_options_for_select(pages, selected = nil, parent = nil, level = 0) + pages = pages.group_by(&:parent) unless pages.is_a?(Hash) s = '' - pages.select {|p| p.parent == parent}.each do |page| - attrs = "value='#{page.id}'" - attrs << " selected='selected'" if selected == page - indent = (level > 0) ? (' ' * level * 2 + '» ') : nil - - s << "\n" + - wiki_page_options_for_select(pages, selected, page, level + 1) + if pages.has_key?(parent) + pages[parent].each do |page| + attrs = "value='#{page.id}'" + attrs << " selected='selected'" if selected == page + indent = (level > 0) ? (' ' * level * 2 + '» ') : nil + + s << "\n" + + wiki_page_options_for_select(pages, selected, page, level + 1) + end end s end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/all-wcprops --- a/app/models/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,371 +1,5 @@ -K 25 -svn:wc:ra_dav:version-url -V 35 -/svn/!svn/ver/4982/trunk/app/models -END -document.rb -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/4759/trunk/app/models/document.rb -END -mail_handler.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4820/trunk/app/models/mail_handler.rb -END -repository.rb K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4982/trunk/app/models/repository.rb +/svn/!svn/ver/6000/branches/1.2-stable/app/models END -time_entry.rb -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4708/trunk/app/models/time_entry.rb -END -token.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/2778/trunk/app/models/token.rb -END -journal_observer.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4221/trunk/app/models/journal_observer.rb -END -auth_source_ldap.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4950/trunk/app/models/auth_source_ldap.rb -END -principal.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/4076/trunk/app/models/principal.rb -END -version_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3064/trunk/app/models/version_custom_field.rb -END -issue_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/337/trunk/app/models/issue_custom_field.rb -END -issue_category.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/955/trunk/app/models/issue_category.rb -END -change.rb -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/3860/trunk/app/models/change.rb -END -enumeration.rb -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/3240/trunk/app/models/enumeration.rb -END -member_role.rb -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/3250/trunk/app/models/member_role.rb -END -issue.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4954/trunk/app/models/issue.rb -END -time_entry_activity_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/2952/trunk/app/models/time_entry_activity_custom_field.rb -END -issue_priority.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3240/trunk/app/models/issue_priority.rb -END -message_observer.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3169/trunk/app/models/message_observer.rb -END -watcher.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/3167/trunk/app/models/watcher.rb -END -wiki_content.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4296/trunk/app/models/wiki_content.rb -END -enabled_module.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/2970/trunk/app/models/enabled_module.rb -END -wiki_page.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/4952/trunk/app/models/wiki_page.rb -END -comment.rb -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/479/trunk/app/models/comment.rb -END -wiki_content_observer.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/2749/trunk/app/models/wiki_content_observer.rb -END -query.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4888/trunk/app/models/query.rb -END -member.rb -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/3929/trunk/app/models/member.rb -END -document_category_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/2945/trunk/app/models/document_category_custom_field.rb -END -mailer.rb -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/4752/trunk/app/models/mailer.rb -END -journal.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4062/trunk/app/models/journal.rb -END -workflow.rb -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/3709/trunk/app/models/workflow.rb -END -user_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/333/trunk/app/models/user_custom_field.rb -END -time_entry_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/1689/trunk/app/models/time_entry_custom_field.rb -END -custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4599/trunk/app/models/custom_field.rb -END -setting.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4899/trunk/app/models/setting.rb -END -user.rb -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4936/trunk/app/models/user.rb -END -auth_source.rb -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/4950/trunk/app/models/auth_source.rb -END -news_observer.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/2637/trunk/app/models/news_observer.rb -END -message.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4759/trunk/app/models/message.rb -END -wiki_redirect.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/720/trunk/app/models/wiki_redirect.rb -END -issue_relation.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4467/trunk/app/models/issue_relation.rb -END -document_observer.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2637/trunk/app/models/document_observer.rb -END -version.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4574/trunk/app/models/version.rb -END -issue_priority_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/2945/trunk/app/models/issue_priority_custom_field.rb -END -board.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4431/trunk/app/models/board.rb -END -attachment.rb -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4755/trunk/app/models/attachment.rb -END -group_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2869/trunk/app/models/group_custom_field.rb -END -issue_status.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4895/trunk/app/models/issue_status.rb -END -time_entry_activity.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3240/trunk/app/models/time_entry_activity.rb -END -tracker.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4599/trunk/app/models/tracker.rb -END -journal_detail.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4954/trunk/app/models/journal_detail.rb -END -group.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4437/trunk/app/models/group.rb -END -issue_observer.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/2637/trunk/app/models/issue_observer.rb -END -changeset.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/4962/trunk/app/models/changeset.rb -END -role.rb -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4599/trunk/app/models/role.rb -END -project_custom_field.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/333/trunk/app/models/project_custom_field.rb -END -wiki.rb -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4680/trunk/app/models/wiki.rb -END -custom_value.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4382/trunk/app/models/custom_value.rb -END -project.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4645/trunk/app/models/project.rb -END -document_category.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3240/trunk/app/models/document_category.rb -END -news.rb -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4505/trunk/app/models/news.rb -END -user_preference.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4900/trunk/app/models/user_preference.rb -END diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/entries --- a/app/models/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/models +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/models http://redmine.rubyforge.org/svn -2011-03-01T10:27:30.170724Z -4982 +2011-06-03T11:41:34.837596Z +6000 tmaruyama @@ -26,6 +26,1026 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 +repository.rb +file + + + + +2011-06-06T13:18:33.000000Z +09e3a625218b292da0cfdd475a9bae06 +2011-06-03T11:41:34.837596Z +6000 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +8896 + +time_entry.rb +file + + + + +2011-06-06T13:18:33.000000Z +12b308b5edbf61bfcdd8f08bf9395214 +2011-05-17T03:58:41.797610Z +5820 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +4502 + +principal.rb +file + + + + +2011-06-06T13:14:59.000000Z +01332c0957f952b76c01e7c7ebd112f0 +2010-09-10T18:46:23.747988Z +4076 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +2265 + +version_custom_field.rb +file + + + + +2011-06-06T13:14:59.000000Z +6bf31c0491d87fff1481a91519f66363 +2009-11-15T15:22:55.021661Z +3064 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +888 + +issue_category.rb +file + + + + +2011-06-06T13:14:59.000000Z +da42817b3f290549a03ada82a93dc5d0 +2007-12-07T10:26:07.864320Z +955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1626 + +change.rb +file + + + + +2011-06-06T13:18:33.000000Z +63c76383012ca1095d47a65c4bfc919f +2011-04-16T06:44:35.992296Z +5475 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +1237 + +enumeration.rb +file + + + + +2011-06-06T13:14:59.000000Z +90ec955317994a58df9a5a7f85b810e7 +2009-12-25T17:13:58.090736Z +3240 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3856 + +message_observer.rb +file + + + + +2011-06-06T13:18:33.000000Z +b14eaf5e829e101bc0b94269cbeaaaec +2011-05-17T03:57:57.454158Z +5818 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +977 + +watcher.rb +file + + + + +2011-06-06T13:14:59.000000Z +c72443f206052fafae720378fba40163 +2009-12-13T12:39:22.716082Z +3167 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2093 + +wiki_content.rb +file + + + + +2011-06-06T13:18:33.000000Z +d554de7cd31404d9850f440ce635c3bf +2011-05-16T00:00:26.956449Z +5795 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +4445 + +enabled_module.rb +file + + + + +2011-06-06T13:18:33.000000Z +befbf6b5cdeb72008933c729fd7bcfeb +2011-05-18T07:52:23.784155Z +5841 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +1286 + +wiki_content_observer.rb +file + + + + +2011-06-06T13:14:59.000000Z +a6804cb0c0abc6de72a184e7384ed36d +2009-05-17T09:55:13.601447Z +2749 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1201 + +query.rb +file + + + + +2011-06-06T13:18:33.000000Z +03ef89183d79228726c89118c3c0ef34 +2011-05-17T04:33:19.941719Z +5822 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +26356 + +document_category_custom_field.rb +file + + + + +2011-06-06T13:18:33.000000Z +1f419244916f9cab432c1a3bd2816abc +2011-05-18T07:51:51.105764Z +5840 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +901 + +mailer.rb +file + + + + +2011-06-06T13:18:33.000000Z +1370642e04670edfef01626bded416c9 +2011-05-17T03:57:10.939223Z +5816 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +19152 + +workflow.rb +file + + + + +2011-06-06T13:14:59.000000Z +4561dfcb12b3fa066a9516c59a9eef94 +2010-04-30T12:19:51.238583Z +3709 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +4028 + +journal.rb +file + + + + +2011-06-06T13:18:33.000000Z +0d261b572288d4b000e3f92126c649f2 +2011-05-29T07:47:25.955545Z +5947 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3418 + +user_custom_field.rb +file + + + + +2011-06-06T13:14:59.000000Z +47067c42f4d6607335adf75d11c3323b +2007-03-12T17:59:02.654744Z +333 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +878 + +custom_field.rb +file + + + + +2011-06-06T13:18:33.000000Z +3216923159aac3e5956fc6f0c3641d39 +2011-04-07T16:34:58.239484Z +5354 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +5175 + +news_observer.rb +file + + + + +2011-06-06T13:14:59.000000Z +b98015db4679606ee5f8d75e55574745 +2009-03-28T00:38:57.780983Z +2637 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +962 + +wiki_redirect.rb +file + + + + +2011-06-06T13:14:59.000000Z +4e4c64bab677a9e081fc1230ff6a3773 +2007-09-09T17:05:38.846724Z +720 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +970 + +message.rb +file + + + + +2011-06-06T13:18:33.000000Z +357609c3b9eb9dd7d1bd0b60aba41fc0 +2011-05-17T03:57:34.529054Z +5817 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +3784 + +issue_relation.rb +file + + + + +2011-06-06T13:14:59.000000Z +e79f69fb89a7015471e190050ba97847 +2010-12-04T18:10:02.635321Z +4467 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +4580 + +issue_observer.rb +file + + + + +2011-06-06T13:14:59.000000Z +d4026d660fcb2601834d26268468aec2 +2009-03-28T00:38:57.780983Z +2637 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +965 + +role.rb +file + + + + +2011-06-06T13:18:33.000000Z +b10288b80932bec34cf0ebc3d96b60bd +2011-04-15T13:23:13.506236Z +5466 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +5656 + +wiki.rb +file + + + + +2011-06-06T13:18:33.000000Z +c212affb4fc544749b3b14f4da6df9d3 +2011-04-11T19:21:57.549455Z +5423 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3329 + +project_custom_field.rb +file + + + + +2011-06-06T13:14:59.000000Z +926ef98901f13ba13688fdc3ab0184fc +2007-03-12T17:59:02.654744Z +333 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +883 + +document_category.rb +file + + + + +2011-06-06T13:18:33.000000Z +972f4850db81506f13ca23cc5f42a7dd +2011-05-18T07:51:15.237937Z +5839 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +1107 + +user_preference.rb +file + + + + +2011-06-06T13:14:59.000000Z +feac9af79af67a78c767bd3def262255 +2011-02-21T09:53:29.844413Z +4900 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1671 + +news.rb +file + + + + +2011-06-06T13:18:33.000000Z +5e1ef51f660c5013b9caec211bbe49e4 +2011-05-17T03:58:19.720730Z +5819 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +2207 + repository dir @@ -35,11 +1055,11 @@ -2011-03-03T11:05:09.000000Z -190c117fe2ccfc4b1ebe70ae94e0d779 -2011-01-23T16:47:59.732003Z -4759 -jplang +2011-06-06T13:18:33.000000Z +8b3723a0f7c7b5927aa3d96d69d4c4ae +2011-05-15T23:52:48.954705Z +5794 +tmaruyama has-props @@ -69,44 +1089,10 @@ -2011-03-03T11:40:18.000000Z -ed655ccb5c306f548b3997d2dd3e3d60 -2011-02-12T10:08:11.630366Z -4820 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -13778 - -repository.rb -file - - - - -2011-03-03T11:40:18.000000Z -a3fb46324c320aab8869e523c2a35d2a -2011-03-01T10:27:30.170724Z -4982 +2011-06-06T13:18:33.000000Z +fd5e7d6776011a867040c70dd1bb8622 +2011-05-17T03:56:45.906600Z +5815 tmaruyama has-props @@ -129,41 +1115,7 @@ -8497 - -time_entry.rb -file - - - - -2011-03-03T11:05:09.000000Z -db327d70b8e3bcf04992bf7c69522467 -2011-01-14T18:04:16.470040Z -4708 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4162 +13693 token.rb file @@ -171,7 +1123,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 441a5648e149e471c91928dc7f3f29a6 2009-06-02T17:24:50.360628Z 2778 @@ -205,11 +1157,11 @@ -2011-03-03T11:05:09.000000Z -7d895b3a013ce8f4e63dd4e7aab7eb20 -2010-09-28T20:20:00.843023Z -4221 -edavis10 +2011-06-06T13:18:33.000000Z +7936a5cd938361b60174d282035d7178 +2011-04-29T13:27:50.025194Z +5602 +jplang has-props @@ -231,7 +1183,7 @@ -1302 +1346 auth_source_ldap.rb file @@ -239,7 +1191,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 82898965a0c07d8fa25a52cfced3139f 2011-02-26T13:09:25.657748Z 4950 @@ -267,81 +1219,13 @@ 4381 -principal.rb -file - - - - -2011-03-03T11:05:09.000000Z -01332c0957f952b76c01e7c7ebd112f0 -2010-09-10T18:46:23.747988Z -4076 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -2265 - -version_custom_field.rb -file - - - - -2011-03-03T11:05:09.000000Z -6bf31c0491d87fff1481a91519f66363 -2009-11-15T15:22:55.021661Z -3064 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -888 - issue_custom_field.rb file -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z cd405a055651d29541f2ebcf4e22f8dc 2007-03-15T22:11:02.843262Z 337 @@ -369,119 +1253,17 @@ 1242 -issue_category.rb -file - - - - -2011-03-03T11:05:09.000000Z -da42817b3f290549a03ada82a93dc5d0 -2007-12-07T10:26:07.864320Z -955 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1626 - -change.rb -file - - - - -2011-03-03T11:05:09.000000Z -622826f16c01373c631876eb1e480a65 -2010-07-24T00:19:32.307471Z -3860 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -1061 - -enumeration.rb -file - - - - -2011-03-03T11:05:09.000000Z -90ec955317994a58df9a5a7f85b810e7 -2009-12-25T17:13:58.090736Z -3240 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3856 - issue.rb file -2011-03-03T11:40:18.000000Z -de5e44263227d075bddb23d8f478e24d -2011-02-27T13:34:41.060565Z -4954 -jplang +2011-06-06T13:18:33.000000Z +ac372c3f938fe106bea1ec059d8e0dad +2011-05-17T02:14:06.530833Z +5810 +tmaruyama has-props @@ -503,7 +1285,7 @@ -32300 +33982 member_role.rb file @@ -511,7 +1293,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 95caba31fc55fea2d5ff257e70cf14b2 2009-12-26T16:14:55.591181Z 3250 @@ -545,7 +1327,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z d5549b2847a255d4bdd7185a670988b5 2009-10-21T22:35:03.091600Z 2952 @@ -579,7 +1361,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 028b9a9be35e74573921f9865f953439 2009-12-25T17:13:58.090736Z 3240 @@ -607,16 +1389,16 @@ 1094 -message_observer.rb +wiki_page.rb file -2011-03-03T11:05:09.000000Z -50c2305c38ffecfb2138cd437e1c255c -2009-12-13T14:26:54.396245Z -3169 +2011-06-06T13:18:33.000000Z +4c1f8fef6af22b9d5eeecbea8b0d6f2e +2011-04-05T12:52:57.625449Z +5326 jplang has-props @@ -639,143 +1421,7 @@ -979 - -watcher.rb -file - - - - -2011-03-03T11:05:09.000000Z -c72443f206052fafae720378fba40163 -2009-12-13T12:39:22.716082Z -3167 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2093 - -wiki_content.rb -file - - - - -2011-03-03T11:05:09.000000Z -3cac6a9c934a472fcbdf99cd00e5bfbb -2010-10-27T16:27:06.240747Z -4296 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -4480 - -enabled_module.rb -file - - - - -2011-03-03T11:05:09.000000Z -56631baa5560f63cbb213855761c8fcc -2009-10-25T10:31:01.135799Z -2970 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1296 - -wiki_page.rb -file - - - - -2011-03-03T11:40:18.000000Z -f95a3be2b4090d0bd5b7d74b9e1d0a7c -2011-02-27T12:35:31.414622Z -4952 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6539 +7200 comment.rb file @@ -783,7 +1429,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 0ca314834c39ddc12f2993caf5722e79 2007-04-25T15:06:20.062636Z 479 @@ -811,81 +1457,13 @@ 1030 -wiki_content_observer.rb -file - - - - -2011-03-03T11:05:09.000000Z -a6804cb0c0abc6de72a184e7384ed36d -2009-05-17T09:55:13.601447Z -2749 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1201 - -query.rb -file - - - - -2011-03-03T11:40:18.000000Z -886a34f5ef28f29a9eadb6e24dee89d6 -2011-02-20T13:03:32.835478Z -4888 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -26359 - member.rb file -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 84d28844bbac90dab2c56a27ed58db18 2010-08-09T05:10:00.803890Z 3929 @@ -913,183 +1491,13 @@ 3067 -document_category_custom_field.rb -file - - - - -2011-03-03T11:05:09.000000Z -60dadf29c4da2a4e97f463a647b8e98d -2009-10-21T22:34:22.740755Z -2945 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -899 - -mailer.rb -file - - - - -2011-03-03T11:05:09.000000Z -f7340d6a500dabc6fa0aae801539d5e5 -2011-01-23T10:22:00.456857Z -4752 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -18498 - -journal.rb -file - - - - -2011-03-03T11:05:09.000000Z -f3797cd6a4b7e4d256aba15e317e98b1 -2010-09-05T22:57:20.669640Z -4062 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -3214 - -workflow.rb -file - - - - -2011-03-03T11:05:09.000000Z -4561dfcb12b3fa066a9516c59a9eef94 -2010-04-30T12:19:51.238583Z -3709 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4028 - -user_custom_field.rb -file - - - - -2011-03-03T11:05:09.000000Z -47067c42f4d6607335adf75d11c3323b -2007-03-12T17:59:02.654744Z -333 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -878 - time_entry_custom_field.rb file -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 7dbc4f88d9fcd8f1057ea6d5982a1099 2008-07-22T18:52:00.008047Z 1689 @@ -1117,50 +1525,16 @@ 882 -custom_field.rb -file - - - - -2011-03-03T11:05:09.000000Z -a81e0b41100d375e6327075ab1f59242 -2010-12-31T15:30:50.544770Z -4599 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4287 - setting.rb file -2011-03-03T11:40:18.000000Z -2815413f18c2ff6c015f0742ac28710a -2011-02-21T09:41:34.953350Z -4899 +2011-06-06T13:18:33.000000Z +5f33e04c6e81693296f542dcfc16e9af +2011-05-18T02:19:08.103742Z +5828 tmaruyama has-props @@ -1183,7 +1557,7 @@ -5188 +5146 user.rb file @@ -1191,10 +1565,10 @@ -2011-03-03T11:40:18.000000Z -8616fc89354fef549fdfc741600c1118 -2011-02-23T17:27:31.762248Z -4936 +2011-06-06T13:18:33.000000Z +38e55360ed5e55fd5404731ea0d392af +2011-04-11T17:53:15.908614Z +5416 jplang has-props @@ -1217,7 +1591,7 @@ -19152 +20338 auth_source.rb file @@ -1225,7 +1599,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z f746a9534698bb8db5abf4bb7c9dd5ef 2011-02-26T13:09:25.657748Z 4950 @@ -1253,153 +1627,17 @@ 2013 -news_observer.rb -file - - - - -2011-03-03T11:05:09.000000Z -b98015db4679606ee5f8d75e55574745 -2009-03-28T00:38:57.780983Z -2637 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -962 - -message.rb -file - - - - -2011-03-03T11:05:09.000000Z -82f0a68c26f05f4ed6aa94418a447a00 -2011-01-23T16:47:59.732003Z -4759 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3789 - -wiki_redirect.rb -file - - - - -2011-03-03T11:05:09.000000Z -4e4c64bab677a9e081fc1230ff6a3773 -2007-09-09T17:05:38.846724Z -720 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -970 - -issue_relation.rb -file - - - - -2011-03-03T11:05:09.000000Z -e79f69fb89a7015471e190050ba97847 -2010-12-04T18:10:02.635321Z -4467 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4580 - document_observer.rb file -2011-03-03T11:05:09.000000Z -b76852d33bcfab19bb6c4e3e727da0ed -2009-03-28T00:38:57.780983Z -2637 -edavis10 +2011-06-06T13:18:33.000000Z +8059f8ff823265efb44ba8f96b6e3b6d +2011-05-18T07:52:48.342965Z +5842 +tmaruyama has-props @@ -1421,7 +1659,7 @@ -982 +980 version.rb file @@ -1429,7 +1667,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 9fdcb569734799b2fface5b9c6207856 2010-12-23T14:58:52.304263Z 4574 @@ -1463,7 +1701,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 478dceec50480a17a7f2c321fc59e794 2009-10-21T22:34:22.740755Z 2945 @@ -1497,7 +1735,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z aaa3cd558c500d4db3bb506878e12fc1 2010-11-27T12:42:11.793330Z 4431 @@ -1531,11 +1769,11 @@ -2011-03-03T11:05:09.000000Z -527c189ff333588f46ed31db163dcc5c -2011-01-23T10:41:43.320139Z -4755 -jplang +2011-06-06T13:18:33.000000Z +f116eb338c40b4c30c60816b7803166e +2011-05-15T23:45:13.564217Z +5793 +tmaruyama has-props @@ -1557,7 +1795,7 @@ -6756 +6724 group_custom_field.rb file @@ -1565,7 +1803,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 2c07c440361210f71d2eb821ce95ce12 2009-09-12T08:36:46.650954Z 2869 @@ -1599,7 +1837,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 4670d7c2c9ef9e23b0812e79c84c02de 2011-02-20T15:38:07.840581Z 4895 @@ -1633,7 +1871,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 2508e3911e5bb016a9925502244b358f 2009-12-25T17:13:58.090736Z 3240 @@ -1667,7 +1905,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z e7d08a30fb7e14fd7486a7d7e04efccb 2010-12-31T15:30:50.544770Z 4599 @@ -1701,10 +1939,10 @@ -2011-03-03T11:40:18.000000Z -5f341c076b3e061541111187994969c8 -2011-02-27T13:34:41.060565Z -4954 +2011-06-06T13:18:33.000000Z +52a4a2060b161bbccca63be620b732d6 +2011-04-15T13:23:13.506236Z +5466 jplang has-props @@ -1727,7 +1965,7 @@ -864 +1128 group.rb file @@ -1735,7 +1973,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z a6be23c5316bf4e17cd5601624202b18 2010-11-27T14:46:51.426568Z 4437 @@ -1763,50 +2001,16 @@ 1918 -issue_observer.rb -file - - - - -2011-03-03T11:05:09.000000Z -d4026d660fcb2601834d26268468aec2 -2009-03-28T00:38:57.780983Z -2637 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -965 - changeset.rb file -2011-03-03T11:40:18.000000Z -949462e61d78ec8bd5afc1af77363985 -2011-02-28T12:09:32.515358Z -4962 +2011-06-06T13:18:33.000000Z +631fd8d7b1924a1afbc925c80fd18f7c +2011-05-15T23:01:21.719915Z +5792 tmaruyama has-props @@ -1829,109 +2033,7 @@ -9103 - -role.rb -file - - - - -2011-03-03T11:05:09.000000Z -15c62eb20c0904d6061c427984ea5ad6 -2010-12-31T15:30:50.544770Z -4599 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5088 - -project_custom_field.rb -file - - - - -2011-03-03T11:05:09.000000Z -926ef98901f13ba13688fdc3ab0184fc -2007-03-12T17:59:02.654744Z -333 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -883 - -wiki.rb -file - - - - -2011-03-03T11:05:09.000000Z -c1467b11ffdf01173add19cbdcbecccd -2011-01-10T18:32:04.408692Z -4680 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3109 +9547 custom_value.rb file @@ -1939,7 +2041,7 @@ -2011-03-03T11:05:09.000000Z +2011-06-06T13:14:59.000000Z 6938d61d0f9e1fc190bb1d0e6c05546e 2010-11-07T14:15:01.891476Z 4382 @@ -1973,10 +2075,10 @@ -2011-03-03T11:05:09.000000Z -85527d6304192255d188255b78b10fb5 -2011-01-06T20:36:31.826591Z -4645 +2011-06-06T13:18:33.000000Z +a77f4809a3bb9aee31347c749be42d94 +2011-04-14T17:49:20.360158Z +5459 jplang has-props @@ -1999,18 +2101,18 @@ -31594 +32092 -document_category.rb +comment_observer.rb file -2011-03-03T11:05:09.000000Z -aeaf540cf9f940cbec4ddfc984dd6af5 -2009-12-25T17:13:58.090736Z -3240 +2011-06-06T13:18:33.000000Z +6084f181d9e7de5535ff3ecc53fcf924 +2011-03-04T14:32:58.878627Z +5003 jplang has-props @@ -2033,73 +2135,5 @@ -1104 +1034 -news.rb -file - - - - -2011-03-03T11:05:09.000000Z -ce0648ce457209d4a582b3076287bf01 -2010-12-12T17:00:52.100205Z -4505 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2051 - -user_preference.rb -file - - - - -2011-03-03T11:40:18.000000Z -feac9af79af67a78c767bd3def262255 -2011-02-21T09:53:29.844413Z -4900 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1671 - diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/attachment.rb.svn-base --- a/app/models/.svn/text-base/attachment.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/attachment.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -20,7 +20,7 @@ class Attachment < ActiveRecord::Base belongs_to :container, :polymorphic => true belongs_to :author, :class_name => "User", :foreign_key => "author_id" - + validates_presence_of :container, :filename, :author validates_length_of :filename, :maximum => 255 validates_length_of :disk_filename, :maximum => 255 @@ -31,20 +31,20 @@ acts_as_activity_provider :type => 'files', :permission => :view_files, :author_key => :author_id, - :find_options => {:select => "#{Attachment.table_name}.*", + :find_options => {:select => "#{Attachment.table_name}.*", :joins => "LEFT JOIN #{Version.table_name} ON #{Attachment.table_name}.container_type='Version' AND #{Version.table_name}.id = #{Attachment.table_name}.container_id " + "LEFT JOIN #{Project.table_name} ON #{Version.table_name}.project_id = #{Project.table_name}.id OR ( #{Attachment.table_name}.container_type='Project' AND #{Attachment.table_name}.container_id = #{Project.table_name}.id )"} - + acts_as_activity_provider :type => 'documents', :permission => :view_documents, :author_key => :author_id, - :find_options => {:select => "#{Attachment.table_name}.*", + :find_options => {:select => "#{Attachment.table_name}.*", :joins => "LEFT JOIN #{Document.table_name} ON #{Attachment.table_name}.container_type='Document' AND #{Document.table_name}.id = #{Attachment.table_name}.container_id " + "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} cattr_accessor :storage_path @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files" - + def validate if self.filesize > Setting.attachment_max_size.to_i.kilobytes errors.add(:base, :too_long, :count => Setting.attachment_max_size.to_i.kilobytes) @@ -76,7 +76,7 @@ if @temp_file && (@temp_file.size > 0) logger.debug("saving '#{self.diskfile}'") md5 = Digest::MD5.new - File.open(diskfile, "wb") do |f| + File.open(diskfile, "wb") do |f| buffer = "" while (buffer = @temp_file.read(8192)) f.write(buffer) @@ -100,7 +100,7 @@ def diskfile "#{@@storage_path}/#{self.disk_filename}" end - + def increment_download increment!(:downloads) end @@ -108,27 +108,27 @@ def project container.project end - + def visible?(user=User.current) container.attachments_visible?(user) end - + def deletable?(user=User.current) container.attachments_deletable?(user) end - + def image? self.filename =~ /\.(jpe?g|gif|png)$/i end - + def is_text? Redmine::MimeType.is_type?('text', filename) end - + def is_diff? self.filename =~ /\.(patch|diff)$/i end - + # Returns true if the file is readable def readable? File.readable?(diskfile) @@ -145,7 +145,7 @@ attachments.each_value do |attachment| file = attachment['file'] next unless file && file.size > 0 - a = Attachment.create(:container => obj, + a = Attachment.create(:container => obj, :file => file, :description => attachment['description'].to_s.strip, :author => User.current) @@ -160,18 +160,18 @@ end {:files => attached, :unsaved => obj.unsaved_attachments} end - + private def sanitize_filename(value) # get only the filename, not the whole path just_filename = value.gsub(/^.*(\\|\/)/, '') # NOTE: File.basename doesn't work right with Windows paths on Unix - # INCORRECT: just_filename = File.basename(value.gsub('\\\\', '/')) + # INCORRECT: just_filename = File.basename(value.gsub('\\\\', '/')) # Finally, replace all non alphanumeric, hyphens or periods with underscore - @filename = just_filename.gsub(/[^\w\.\-]/,'_') + @filename = just_filename.gsub(/[^\w\.\-]/,'_') end - + # Returns an ASCII or hashed filename def self.disk_filename(filename) timestamp = DateTime.now.strftime("%y%m%d%H%M%S") diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/change.rb.svn-base --- a/app/models/.svn/text-base/change.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/change.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,30 +1,35 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Change < ActiveRecord::Base belongs_to :changeset - + validates_presence_of :changeset_id, :action, :path before_save :init_path - + def relative_path changeset.repository.relative_path(path) end - + + def before_validation + self.path = Redmine::CodesetUtil.replace_invalid_utf8(self.path) + self.from_path = Redmine::CodesetUtil.replace_invalid_utf8(self.from_path) + end + def init_path self.path ||= "" end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/changeset.rb.svn-base --- a/app/models/.svn/text-base/changeset.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/changeset.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2010 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -27,23 +27,23 @@ :description => :long_comments, :datetime => :committed_on, :url => Proc.new {|o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :rev => o.identifier}} - + acts_as_searchable :columns => 'comments', :include => {:repository => :project}, :project_key => "#{Repository.table_name}.project_id", :date_column => 'committed_on' - + acts_as_activity_provider :timestamp => "#{table_name}.committed_on", :author_key => :user_id, :find_options => {:include => [:user, {:repository => :project}]} - + validates_presence_of :repository_id, :revision, :committed_on, :commit_date validates_uniqueness_of :revision, :scope => :repository_id validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true - + named_scope :visible, lambda {|*args| { :include => {:repository => :project}, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_changesets) } } - + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args) } } + def revision=(r) write_attribute :revision, (r.nil? ? nil : r.to_s) end @@ -70,25 +70,26 @@ identifier end end - + def project repository.project end - + def author user || committer.to_s.split('<').first end - + def before_create self.committer = self.class.to_utf8(self.committer, repository.repo_log_encoding) - self.comments = self.class.normalize_comments(self.comments, repository.repo_log_encoding) + self.comments = self.class.normalize_comments( + self.comments, repository.repo_log_encoding) self.user = repository.find_committer_user(self.committer) end def after_create scan_comment_for_issue_ids end - + TIMELOG_RE = / ( ((\d+)(h|hours?))((\d+)(m|min)?)? @@ -100,7 +101,7 @@ (\d+([\.,]\d+)?)h? ) /x - + def scan_comment_for_issue_ids return if comments.blank? # keywords used to reference issues @@ -108,15 +109,15 @@ ref_keywords_any = ref_keywords.delete('*') # keywords used to fix issues fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip) - + kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|") - + referenced_issues = [] - + comments.scan(/([\s\(\[,-]|^)((#{kw_regexp})[\s:]+)?(#\d+(\s+@#{TIMELOG_RE})?([\s,;&]+#\d+(\s+@#{TIMELOG_RE})?)*)(?=[[:punct:]]|\s|<|$)/i) do |match| action, refs = match[2], match[3] next unless action.present? || ref_keywords_any - + refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m| issue, hours = find_referenced_issue_by_id(m[0].to_i), m[2] if issue @@ -126,15 +127,15 @@ end end end - + referenced_issues.uniq! self.issues = referenced_issues unless referenced_issues.empty? end - + def short_comments @short_comments || split_comments.first end - + def long_comments @long_comments || split_comments.last end @@ -146,23 +147,29 @@ "r#{revision}" end end - + # Returns the previous changeset def previous - @previous ||= Changeset.find(:first, :conditions => ['id < ? AND repository_id = ?', self.id, self.repository_id], :order => 'id DESC') + @previous ||= Changeset.find(:first, + :conditions => ['id < ? AND repository_id = ?', + self.id, self.repository_id], + :order => 'id DESC') end # Returns the next changeset def next - @next ||= Changeset.find(:first, :conditions => ['id > ? AND repository_id = ?', self.id, self.repository_id], :order => 'id ASC') + @next ||= Changeset.find(:first, + :conditions => ['id > ? AND repository_id = ?', + self.id, self.repository_id], + :order => 'id ASC') end - + # Creates a new Change from it's common parameters def create_change(change) - Change.create(:changeset => self, - :action => change[:action], - :path => change[:path], - :from_path => change[:from_path], + Change.create(:changeset => self, + :action => change[:action], + :path => change[:path], + :from_path => change[:from_path], :from_revision => change[:from_revision]) end @@ -174,25 +181,27 @@ return nil if id.blank? issue = Issue.find_by_id(id.to_i, :include => :project) if issue - unless project == issue.project || project.is_ancestor_of?(issue.project) || project.is_descendant_of?(issue.project) + unless issue.project && + (project == issue.project || project.is_ancestor_of?(issue.project) || + project.is_descendant_of?(issue.project)) issue = nil end end issue end - + def fix_issue(issue) status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i) if status.nil? logger.warn("No status macthes commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger return issue end - + # the issue may have been updated by the closure of another one (eg. duplicate) issue.reload # don't change the status is the issue is closed return if issue.status && issue.status.is_closed? - + journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag)) issue.status = status unless Setting.commit_fix_done_ratio.blank? @@ -205,29 +214,30 @@ end issue end - + def log_time(issue, hours) time_entry = TimeEntry.new( :user => user, :hours => hours, :issue => issue, :spent_on => commit_date, - :comments => l(:text_time_logged_by_changeset, :value => text_tag, :locale => Setting.default_language) + :comments => l(:text_time_logged_by_changeset, :value => text_tag, + :locale => Setting.default_language) ) time_entry.activity = log_time_activity unless log_time_activity.nil? - + unless time_entry.save logger.warn("TimeEntry could not be created by changeset #{id}: #{time_entry.errors.full_messages}") if logger end time_entry end - + def log_time_activity if Setting.commit_logtime_activity_id.to_i > 0 TimeEntryActivity.find_by_id(Setting.commit_logtime_activity_id.to_i) end end - + def split_comments comments =~ /\A(.+?)\r?\n(.*)$/m @short_comments = $1 || comments @@ -242,30 +252,39 @@ Changeset.to_utf8(str.to_s.strip, encoding) end - private - def self.to_utf8(str, encoding) - return str if str.blank? - unless encoding.blank? || encoding == 'UTF-8' - begin - str = Iconv.conv('UTF-8', encoding, str) - rescue Iconv::Failure - # do nothing here - end + return str if str.nil? + str.force_encoding("ASCII-8BIT") if str.respond_to?(:force_encoding) + if str.empty? + str.force_encoding("UTF-8") if str.respond_to?(:force_encoding) + return str end + enc = encoding.blank? ? "UTF-8" : encoding if str.respond_to?(:force_encoding) - str.force_encoding('UTF-8') - if ! str.valid_encoding? - str = str.encode("US-ASCII", :invalid => :replace, - :undef => :replace, :replace => '?').encode("UTF-8") + if enc.upcase != "UTF-8" + str.force_encoding(enc) + str = str.encode("UTF-8", :invalid => :replace, + :undef => :replace, :replace => '?') + else + str.force_encoding("UTF-8") + if ! str.valid_encoding? + str = str.encode("US-ASCII", :invalid => :replace, + :undef => :replace, :replace => '?').encode("UTF-8") + end end else - # removes invalid UTF8 sequences + ic = Iconv.new('UTF-8', enc) + txtar = "" begin - str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] - rescue Iconv::InvalidEncoding - # "UTF-8//IGNORE" is not supported on some OS + txtar += ic.iconv(str) + rescue Iconv::IllegalSequence + txtar += $!.success + str = '?' + $!.failed[1,$!.failed.length] + retry + rescue + txtar += $!.success end + str = txtar end str end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/custom_field.rb.svn-base --- a/app/models/.svn/text-base/custom_field.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/custom_field.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -48,6 +48,35 @@ errors.add(:default_value, :invalid) unless v.valid? end + def possible_values_options(obj=nil) + case field_format + when 'user', 'version' + if obj.respond_to?(:project) && obj.project + case field_format + when 'user' + obj.project.users.sort.collect {|u| [u.to_s, u.id.to_s]} + when 'version' + obj.project.versions.sort.collect {|u| [u.to_s, u.id.to_s]} + end + elsif obj.is_a?(Array) + obj.collect {|o| possible_values_options(o)}.inject {|memo, v| memo & v} + else + [] + end + else + read_attribute :possible_values + end + end + + def possible_values(obj=nil) + case field_format + when 'user', 'version' + possible_values_options(obj).collect(&:last) + else + read_attribute :possible_values + end + end + # Makes possible_values accept a multiline string def possible_values=(arg) if arg.is_a?(Array) @@ -71,6 +100,8 @@ casted = value.to_i when 'float' casted = value.to_f + when 'user', 'version' + casted = (value.blank? ? nil : field_format.classify.constantize.find_by_id(value.to_i)) end end casted diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/document.rb.svn-base --- a/app/models/.svn/text-base/document.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/document.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# RedMine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -25,23 +25,23 @@ :author => Proc.new {|o| (a = o.attachments.find(:first, :order => "#{Attachment.table_name}.created_on ASC")) ? a.author : nil }, :url => Proc.new {|o| {:controller => 'documents', :action => 'show', :id => o.id}} acts_as_activity_provider :find_options => {:include => :project} - + validates_presence_of :project, :title, :category validates_length_of :title, :maximum => 60 - + named_scope :visible, lambda {|*args| { :include => :project, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_documents) } } - + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_documents, *args) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_documents, project) end - + def after_initialize if new_record? self.category ||= DocumentCategory.default end end - + def updated_on unless @updated_on a = attachments.find(:first, :order => 'created_on DESC') diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/document_category.rb.svn-base --- a/app/models/.svn/text-base/document_category.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/document_category.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/document_category_custom_field.rb.svn-base --- a/app/models/.svn/text-base/document_category_custom_field.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/document_category_custom_field.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -20,4 +20,3 @@ :enumeration_doc_categories end end - diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/document_observer.rb.svn-base --- a/app/models/.svn/text-base/document_observer.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/document_observer.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/enabled_module.rb.svn-base --- a/app/models/.svn/text-base/enabled_module.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/enabled_module.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,30 +1,30 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class EnabledModule < ActiveRecord::Base belongs_to :project - + validates_presence_of :name validates_uniqueness_of :name, :scope => :project_id - + after_create :module_enabled - + private - + # after_create callback used to do things when a module is enabled def module_enabled case name diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/issue.rb.svn-base --- a/app/models/.svn/text-base/issue.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/issue.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -5,19 +5,19 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Issue < ActiveRecord::Base include Redmine::SafeAttributes - + belongs_to :project belongs_to :tracker belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id' @@ -30,10 +30,10 @@ has_many :journals, :as => :journalized, :dependent => :destroy has_many :time_entries, :dependent => :delete_all has_and_belongs_to_many :changesets, :order => "#{Changeset.table_name}.committed_on ASC, #{Changeset.table_name}.id ASC" - + has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all - + acts_as_nested_set :scope => 'root_id', :dependent => :destroy acts_as_attachable :after_remove => :attachment_removed acts_as_customizable @@ -45,7 +45,7 @@ acts_as_event :title => Proc.new {|o| "#{o.tracker.name} ##{o.id} (#{o.status}): #{o.subject}"}, :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}}, :type => Proc.new {|o| 'issue' + (o.closed? ? ' closed' : '') } - + acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]}, :author_key => :author_id @@ -60,19 +60,14 @@ validates_numericality_of :estimated_hours, :allow_nil => true named_scope :visible, lambda {|*args| { :include => :project, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } } - + :conditions => Issue.visible_condition(args.shift || User.current, *args) } } + named_scope :open, :conditions => ["#{IssueStatus.table_name}.is_closed = ?", false], :include => :status named_scope :recently_updated, :order => "#{Issue.table_name}.updated_on DESC" named_scope :with_limit, lambda { |limit| { :limit => limit} } named_scope :on_active_project, :include => [:status, :project, :tracker], :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"] - named_scope :for_gantt, lambda { - { - :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version] - } - } named_scope :without_version, lambda { { @@ -90,12 +85,39 @@ before_save :close_duplicates, :update_done_ratio_from_issue_status after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal after_destroy :update_parent_attributes - + + # Returns a SQL conditions string used to find all issues visible by the specified user + def self.visible_condition(user, options={}) + Project.allowed_to_condition(user, :view_issues, options) do |role, user| + case role.issues_visibility + when 'all' + nil + when 'default' + "(#{table_name}.is_private = #{connection.quoted_false} OR #{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id = #{user.id})" + when 'own' + "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id = #{user.id})" + else + '1=0' + end + end + end + # Returns true if usr or current user is allowed to view the issue def visible?(usr=nil) - (usr || User.current).allowed_to?(:view_issues, self.project) + (usr || User.current).allowed_to?(:view_issues, self.project) do |role, user| + case role.issues_visibility + when 'all' + true + when 'default' + !self.is_private? || self.author == user || self.assigned_to == user + when 'own' + self.author == user || self.assigned_to == user + else + false + end + end end - + def after_initialize if new_record? # set default values for new records only @@ -103,12 +125,12 @@ self.priority ||= IssuePriority.default end end - + # Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields def available_custom_fields - (project && tracker) ? project.all_issue_custom_fields.select {|c| tracker.custom_fields.include? c } : [] + (project && tracker) ? (project.all_issue_custom_fields & tracker.custom_fields.all) : [] end - + def copy_from(arg) issue = arg.is_a?(Issue) ? arg : Issue.visible.find(arg) self.attributes = issue.attributes.dup.except("id", "root_id", "parent_id", "lft", "rgt", "created_on", "updated_on") @@ -116,7 +138,7 @@ self.status = issue.status self end - + # Moves/copies an issue to a new project and tracker # Returns the moved/copied issue on success, false on failure def move_to_project(*args) @@ -124,11 +146,11 @@ move_to_project_without_transaction(*args) || raise(ActiveRecord::Rollback) end || false end - + def move_to_project_without_transaction(new_project, new_tracker = nil, options = {}) options ||= {} issue = options[:copy] ? self.class.new.copy_from(self) : self - + if new_project && issue.project_id != new_project.id # delete issue relations unless Setting.cross_project_issue_relations? @@ -153,6 +175,7 @@ issue.reset_custom_values! end if options[:copy] + issue.author = User.current issue.custom_field_values = self.custom_field_values.inject({}) {|h,v| h[v.custom_field_id] = v.value; h} issue.status = if options[:attributes] && options[:attributes][:status_id] IssueStatus.find_by_id(options[:attributes][:status_id]) @@ -165,10 +188,16 @@ issue.attributes = options[:attributes] end if issue.save - unless options[:copy] + if options[:copy] + if current_journal && current_journal.notes.present? + issue.init_journal(current_journal.user, current_journal.notes) + issue.current_journal.notify = false + issue.save + end + else # Manually update project_id on related time entries TimeEntry.update_all("project_id = #{new_project.id}", {:issue_id => id}) - + issue.children.each do |child| unless child.move_to_project_without_transaction(new_project) # Move failed and transaction was rollback'd @@ -186,7 +215,7 @@ self.status = nil write_attribute(:status_id, sid) end - + def priority_id=(pid) self.priority = nil write_attribute(:priority_id, pid) @@ -198,7 +227,7 @@ @custom_field_values = nil result end - + # Overrides attributes= so that tracker_id gets assigned first def attributes_with_tracker_first=(new_attributes, *args) return if new_attributes.nil? @@ -210,11 +239,11 @@ end # Do not redefine alias chain on reload (see #4838) alias_method_chain(:attributes=, :tracker_first) unless method_defined?(:attributes_without_tracker_first=) - + def estimated_hours=(h) write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h) end - + safe_attributes 'tracker_id', 'status_id', 'parent_issue_id', @@ -232,13 +261,19 @@ 'custom_fields', 'lock_version', :if => lambda {|issue, user| issue.new_record? || user.allowed_to?(:edit_issues, issue.project) } - + safe_attributes 'status_id', 'assigned_to_id', 'fixed_version_id', 'done_ratio', :if => lambda {|issue, user| issue.new_statuses_allowed_to(user).any? } + safe_attributes 'is_private', + :if => lambda {|issue, user| + user.allowed_to?(:set_issues_private, issue.project) || + (issue.author == user && user.allowed_to?(:set_own_issues_private, issue.project)) + } + # Safely sets attributes # Should be called from controllers instead of #attributes= # attr_accessible is too rough because we still want things like @@ -246,26 +281,26 @@ # TODO: move workflow/permission checks from controllers to here def safe_attributes=(attrs, user=User.current) return unless attrs.is_a?(Hash) - + # User can change issue attributes only if he has :edit permission or if a workflow transition is allowed attrs = delete_unsafe_attributes(attrs, user) - return if attrs.empty? - + return if attrs.empty? + # Tracker must be set before since new_statuses_allowed_to depends on it. if t = attrs.delete('tracker_id') self.tracker_id = t end - + if attrs['status_id'] unless new_statuses_allowed_to(user).collect(&:id).include?(attrs['status_id'].to_i) attrs.delete('status_id') end end - + unless leaf? attrs.reject! {|k,v| %w(priority_id done_ratio start_date due_date estimated_hours).include?(k)} end - + if attrs.has_key?('parent_issue_id') if !user.allowed_to?(:manage_subtasks, project) attrs.delete('parent_issue_id') @@ -273,10 +308,10 @@ attrs.delete('parent_issue_id') unless Issue.visible(user).exists?(attrs['parent_issue_id'].to_i) end end - + self.attributes = attrs end - + def done_ratio if Issue.use_status_for_done_ratio? && status && status.default_done_ratio status.default_done_ratio @@ -292,20 +327,20 @@ def self.use_field_for_done_ratio? Setting.issue_done_ratio == 'issue_field' end - + def validate if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty? errors.add :due_date, :not_a_date end - + if self.due_date and self.start_date and self.due_date < self.start_date errors.add :due_date, :greater_than_start_date end - + if start_date && soonest_start && start_date < soonest_start errors.add :start_date, :invalid end - + if fixed_version if !assignable_versions.include?(fixed_version) errors.add :fixed_version_id, :inclusion @@ -313,14 +348,14 @@ errors.add_to_base I18n.t(:error_can_not_reopen_issue_on_closed_version) end end - + # Checks that the issue can not be added/moved to a disabled tracker if project && (tracker_id_changed? || project_id_changed?) unless project.trackers.include?(tracker) errors.add :tracker_id, :inclusion end end - + # Checks parent issue assignment if @parent_issue if @parent_issue.project_id != project_id @@ -337,7 +372,7 @@ end end end - + # Set the done_ratio using the status if that setting is set. This will keep the done_ratios # even if the user turns off the setting later def update_done_ratio_from_issue_status @@ -345,7 +380,7 @@ self.done_ratio = status.default_done_ratio end end - + def init_journal(user, notes = "") @current_journal ||= Journal.new(:journalized => self, :user => user, :notes => notes) @issue_before_change = self.clone @@ -356,12 +391,12 @@ updated_on_will_change! @current_journal end - + # Return true if the issue is closed, otherwise false def closed? self.status.is_closed? end - + # Return true if the issue is being reopened def reopened? if !new_record? && status_id_changed? @@ -385,7 +420,7 @@ end false end - + # Returns true if the issue is overdue def overdue? !due_date.nil? && (due_date < Date.today) && !status.is_closed? @@ -402,24 +437,24 @@ def children? !leaf? end - + # Users the issue can be assigned to def assignable_users users = project.assignable_users users << author if author users.uniq.sort end - + # Versions that the issue can be assigned to def assignable_versions @assignable_versions ||= (project.shared_versions.open + [Version.find_by_id(fixed_version_id_was)]).compact.uniq.sort end - + # Returns true if this issue is blocked by another issue that is still open def blocked? !relations_to.detect {|ir| ir.relation_type == 'blocks' && !ir.issue_from.closed?}.nil? end - + # Returns an array of status that user is able to apply def new_statuses_allowed_to(user, include_default=false) statuses = status.find_new_statuses_allowed_to( @@ -433,7 +468,7 @@ statuses = statuses.uniq.sort blocked? ? statuses.reject {|s| s.is_closed?} : statuses end - + # Returns the mail adresses of users that should be notified def recipients notified = project.notified_users @@ -446,7 +481,7 @@ notified.reject! {|user| !visible?(user)} notified.collect(&:mail) end - + # Returns the total number of hours spent on this issue and its descendants # # Example: @@ -455,50 +490,50 @@ def spent_hours @spent_hours ||= self_and_descendants.sum("#{TimeEntry.table_name}.hours", :include => :time_entries).to_f || 0.0 end - + def relations (relations_from + relations_to).sort end - - def all_dependent_issues(except=nil) - except ||= self + + def all_dependent_issues(except=[]) + except << self dependencies = [] relations_from.each do |relation| - if relation.issue_to && relation.issue_to != except + if relation.issue_to && !except.include?(relation.issue_to) dependencies << relation.issue_to dependencies += relation.issue_to.all_dependent_issues(except) end end dependencies end - + # Returns an array of issues that duplicate this one def duplicates relations_to.select {|r| r.relation_type == IssueRelation::TYPE_DUPLICATES}.collect {|r| r.issue_from} end - + # Returns the due date or the target due date if any # Used on gantt chart def due_before due_date || (fixed_version ? fixed_version.effective_date : nil) end - + # Returns the time scheduled for this issue. - # + # # Example: # Start Date: 2/26/09, End Date: 3/04/09 # duration => 6 def duration (start_date && due_date) ? due_date - start_date : 0 end - + def soonest_start @soonest_start ||= ( relations_to.collect{|relation| relation.successor_soonest_start} + ancestors.collect(&:soonest_start) ).compact.max end - + def reschedule_after(date) return if date.nil? if leaf? @@ -512,7 +547,7 @@ end end end - + def <=>(issue) if issue.nil? -1 @@ -522,16 +557,19 @@ (lft || 0) <=> (issue.lft || 0) end end - + def to_s "#{tracker} ##{id}: #{subject}" end - + # Returns a string of css classes that apply to the issue def css_classes s = "issue status-#{status.position} priority-#{priority.position}" s << ' closed' if closed? s << ' overdue' if overdue? + s << ' child' if child? + s << ' parent' unless leaf? + s << ' private' if is_private? s << ' created-by-me' if User.current.logged? && author_id == User.current.id s << ' assigned-to-me' if User.current.logged? && assigned_to_id == User.current.id s @@ -541,7 +579,7 @@ # Returns false if save fails def save_issue_with_child_records(params, existing_time_entry=nil) Issue.transaction do - if params[:time_entry] && params[:time_entry][:hours].present? && User.current.allowed_to?(:log_time, project) + if params[:time_entry] && (params[:time_entry][:hours].present? || params[:time_entry][:comments].present?) && User.current.allowed_to?(:log_time, project) @time_entry = existing_time_entry || TimeEntry.new @time_entry.project = project @time_entry.issue = self @@ -550,10 +588,10 @@ @time_entry.attributes = params[:time_entry] self.time_entries << @time_entry end - + if valid? attachments = Attachment.attach_files(self, params[:attachments]) - + attachments[:files].each {|a| @current_journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)} # TODO: Rename hook Redmine::Hook.call_hook(:controller_issues_edit_before_save, { :params => params, :issue => self, :time_entry => @time_entry, :journal => @current_journal}) @@ -578,7 +616,7 @@ # Update issues assigned to the version update_versions(["#{Issue.table_name}.fixed_version_id = ?", version.id]) end - + # Unassigns issues from versions that are no longer shared # after +project+ was moved def self.update_versions_from_hierarchy_change(project) @@ -596,7 +634,7 @@ nil end end - + def parent_issue_id if instance_variable_defined? :@parent_issue @parent_issue.nil? ? nil : @parent_issue.id @@ -645,17 +683,19 @@ def self.by_subproject(project) ActiveRecord::Base.connection.select_all("select s.id as status_id, s.is_closed as closed, - i.project_id as project_id, - count(i.id) as total + #{Issue.table_name}.project_id as project_id, + count(#{Issue.table_name}.id) as total from - #{Issue.table_name} i, #{IssueStatus.table_name} s + #{Issue.table_name}, #{Project.table_name}, #{IssueStatus.table_name} s where - i.status_id=s.id - and i.project_id IN (#{project.descendants.active.collect{|p| p.id}.join(',')}) - group by s.id, s.is_closed, i.project_id") if project.descendants.active.any? + #{Issue.table_name}.status_id=s.id + and #{Issue.table_name}.project_id = #{Project.table_name}.id + and #{visible_condition(User.current, :project => project, :with_subprojects => true)} + and #{Issue.table_name}.project_id <> #{project.id} + group by s.id, s.is_closed, #{Issue.table_name}.project_id") if project.descendants.active.any? end # End ReportsController extraction - + # Returns an array of projects that current user can move issues to def self.allowed_target_projects_on_move projects = [] @@ -671,9 +711,9 @@ end projects end - + private - + def update_nested_set_attributes if root_id.nil? # issue was just created @@ -720,7 +760,7 @@ end remove_instance_variable(:@parent_issue) if instance_variable_defined?(:@parent_issue) end - + def update_parent_attributes recalculate_attributes_for(parent_id) if parent_id end @@ -731,14 +771,14 @@ if priority_position = p.children.maximum("#{IssuePriority.table_name}.position", :include => :priority) p.priority = IssuePriority.find_by_position(priority_position) end - + # start/due dates = lowest/highest dates of children p.start_date = p.children.minimum(:start_date) p.due_date = p.children.maximum(:due_date) if p.start_date && p.due_date && p.due_date < p.start_date p.start_date, p.due_date = p.due_date, p.start_date end - + # done ratio = weighted average ratio of leaves unless Issue.use_status_for_done_ratio? && p.status && p.status.default_done_ratio leaves_count = p.leaves.count @@ -752,16 +792,16 @@ p.done_ratio = progress.round end end - + # estimate = sum of leaves estimates p.estimated_hours = p.leaves.sum(:estimated_hours).to_f p.estimated_hours = nil if p.estimated_hours == 0.0 - + # ancestors will be recursively updated p.save(false) end end - + # Update issues so their versions are not pointing to a # fixed_version that is not shared with the issue's project def self.update_versions(conditions=nil) @@ -781,7 +821,7 @@ end end end - + # Callback on attachment deletion def attachment_removed(obj) journal = init_journal(User.current) @@ -790,7 +830,7 @@ :old_value => obj.filename) journal.save end - + # Default assignment based on category def default_assign if assigned_to.nil? && category && category.assigned_to @@ -823,7 +863,7 @@ end end end - + # Saves the changes in a Journal # Called after_save def create_journal @@ -839,11 +879,11 @@ custom_values.each {|c| next if (@custom_values_before_change[c.custom_field_id]==c.value || (@custom_values_before_change[c.custom_field_id].blank? && c.value.blank?)) - @current_journal.details << JournalDetail.new(:property => 'cf', + @current_journal.details << JournalDetail.new(:property => 'cf', :prop_key => c.custom_field_id, :old_value => @custom_values_before_change[c.custom_field_id], :value => c.value) - } + } @current_journal.save # reset current journal init_journal @current_journal.user, @current_journal.notes @@ -862,20 +902,19 @@ select_field = options.delete(:field) joins = options.delete(:joins) - where = "i.#{select_field}=j.id" - + where = "#{Issue.table_name}.#{select_field}=j.id" + ActiveRecord::Base.connection.select_all("select s.id as status_id, s.is_closed as closed, j.id as #{select_field}, - count(i.id) as total + count(#{Issue.table_name}.id) as total from - #{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} j + #{Issue.table_name}, #{Project.table_name}, #{IssueStatus.table_name} s, #{joins} j where - i.status_id=s.id + #{Issue.table_name}.status_id=s.id and #{where} - and i.project_id=#{project.id} + and #{Issue.table_name}.project_id=#{Project.table_name}.id + and #{visible_condition(User.current, :project => project)} group by s.id, s.is_closed, j.id") end - - end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/journal.rb.svn-base --- a/app/models/.svn/text-base/journal.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/journal.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -32,12 +32,16 @@ :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.issue.id, :anchor => "change-#{o.id}"}} acts_as_activity_provider :type => 'issues', - :permission => :view_issues, :author_key => :user_id, :find_options => {:include => [{:issue => :project}, :details, :user], :conditions => "#{Journal.table_name}.journalized_type = 'Issue' AND" + " (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')"} + named_scope :visible, lambda {|*args| { + :include => {:issue => :project}, + :conditions => Issue.visible_condition(args.shift || User.current, *args) + }} + def save(*args) # Do not save an empty journal (details.empty? && notes.blank?) ? false : super @@ -73,4 +77,12 @@ s << ' has-details' unless details.blank? s end + + def notify? + @notify != false + end + + def notify=(arg) + @notify = arg + end end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/journal_detail.rb.svn-base --- a/app/models/.svn/text-base/journal_detail.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/journal_detail.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -17,4 +17,22 @@ class JournalDetail < ActiveRecord::Base belongs_to :journal + before_save :normalize_values + + private + + def normalize_values + self.value = normalize(value) + self.old_value = normalize(old_value) + end + + def normalize(v) + if v == true + "1" + elsif v == false + "0" + else + v + end + end end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/journal_observer.rb.svn-base --- a/app/models/.svn/text-base/journal_observer.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/journal_observer.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,10 +17,12 @@ class JournalObserver < ActiveRecord::Observer def after_create(journal) - if Setting.notified_events.include?('issue_updated') || - (Setting.notified_events.include?('issue_note_added') && journal.notes.present?) || - (Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) || - (Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?) + if journal.notify? && + (Setting.notified_events.include?('issue_updated') || + (Setting.notified_events.include?('issue_note_added') && journal.notes.present?) || + (Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) || + (Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?) + ) Mailer.deliver_issue_edit(journal) end end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/mail_handler.rb.svn-base --- a/app/models/.svn/text-base/mail_handler.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/mail_handler.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,25 +21,25 @@ class UnauthorizedAction < StandardError; end class MissingInformation < StandardError; end - + attr_reader :email, :user def self.receive(email, options={}) @@handler_options = options.dup - + @@handler_options[:issue] ||= {} - + @@handler_options[:allow_override] = @@handler_options[:allow_override].split(',').collect(&:strip) if @@handler_options[:allow_override].is_a?(String) @@handler_options[:allow_override] ||= [] # Project needs to be overridable if not specified @@handler_options[:allow_override] << 'project' unless @@handler_options[:issue].has_key?(:project) # Status overridable by default - @@handler_options[:allow_override] << 'status' unless @@handler_options[:issue].has_key?(:status) - + @@handler_options[:allow_override] << 'status' unless @@handler_options[:issue].has_key?(:status) + @@handler_options[:no_permission_check] = (@@handler_options[:no_permission_check].to_s == '1' ? true : false) super email end - + # Processes incoming emails # Returns the created object (eg. an issue, a message) or false def receive(email) @@ -78,13 +78,13 @@ User.current = @user dispatch end - + private MESSAGE_ID_RE = %r{^ custom_field_values_from_keywords(issue)} + journal.notes = cleaned_up_text_body add_attachments(issue) issue.save! logger.info "MailHandler: issue ##{issue.id} updated by #{user}" if logger && logger.info journal end - + # Reply will be added to the issue def receive_journal_reply(journal_id) journal = Journal.find_by_id(journal_id) @@ -171,17 +172,17 @@ receive_issue_reply(journal.journalized_id) end end - + # Receives a reply to a forum message def receive_message_reply(message_id) message = Message.find_by_id(message_id) if message message = message.root - + unless @@handler_options[:no_permission_check] raise UnauthorizedAction unless user.allowed_to?(:add_messages, message.project) end - + if !message.locked? reply = Message.new(:subject => email.subject.gsub(%r{^.*msg\d+\]}, '').strip, :content => cleaned_up_text_body) @@ -195,7 +196,7 @@ end end end - + def add_attachments(obj) if email.has_attachments? email.attachments.each do |attachment| @@ -206,7 +207,7 @@ end end end - + # Adds To and Cc as watchers of the given object if the sender has the # appropriate permission def add_watchers(obj) @@ -218,7 +219,7 @@ end end end - + def get_keyword(attr, options={}) @keywords ||= {} if @keywords.has_key?(attr) @@ -233,7 +234,7 @@ end end end - + # Destructively extracts the value for +attr+ in +text+ # Returns nil if no matching keyword found def extract_keyword!(text, attr, format=nil) @@ -257,12 +258,12 @@ raise MissingInformation.new('Unable to determine target project') if target.nil? target end - + # Returns a Hash of issue attributes extracted from keywords in the email body def issue_attributes_from_keywords(issue) assigned_to = (k = get_keyword(:assigned_to, :override => true)) && find_user_from_keyword(k) assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to) - + attrs = { 'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id), 'status_id' => (k = get_keyword(:status)) && IssueStatus.find_by_name(k).try(:id), @@ -275,16 +276,16 @@ 'estimated_hours' => get_keyword(:estimated_hours, :override => true), 'done_ratio' => get_keyword(:done_ratio, :override => true, :format => '(\d|10)?0') }.delete_if {|k, v| v.blank? } - + if issue.new_record? && attrs['tracker_id'].nil? attrs['tracker_id'] = issue.project.trackers.find(:first).try(:id) end - + attrs end - + # Returns a Hash of issue custom field values extracted from keywords in the email body - def custom_field_values_from_keywords(customized) + def custom_field_values_from_keywords(customized) customized.custom_field_values.inject({}) do |h, v| if value = get_keyword(v.custom_field.name, :override => true) h[v.custom_field.id.to_s] = value @@ -292,7 +293,7 @@ h end end - + # Returns the text/plain part of the email # If not found (eg. HTML-only email), returns the body with tags removed def plain_text_body @@ -313,7 +314,7 @@ @plain_text_body.strip! @plain_text_body end - + def cleaned_up_text_body cleanup_body(plain_text_body) end @@ -321,19 +322,19 @@ def self.full_sanitizer @full_sanitizer ||= HTML::FullSanitizer.new end - + # Creates a user account for the +email+ sender def self.create_user_from_email(email) addr = email.from_addrs.to_a.first if addr && !addr.spec.blank? user = User.new user.mail = addr.spec - + names = addr.name.blank? ? addr.spec.gsub(/@.*$/, '').split('.') : addr.name.split user.firstname = names.shift user.lastname = names.join(' ') user.lastname = '-' if user.lastname.blank? - + user.login = user.mail user.password = ActiveSupport::SecureRandom.hex(5) user.language = Setting.default_language @@ -342,7 +343,7 @@ end private - + # Removes the email body of text after the truncation configurations. def cleanup_body(body) delimiters = Setting.mail_handler_body_delimiters.to_s.split(/[\r\n]+/).reject(&:blank?).map {|s| Regexp.escape(s)} diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/mailer.rb.svn-base --- a/app/models/.svn/text-base/mailer.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/mailer.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -31,7 +31,7 @@ h = h.to_s.gsub(%r{\/.*$}, '') unless Redmine::Utils.relative_url_root.blank? { :host => h, :protocol => Setting.protocol } end - + # Builds a tmail object used to email recipients of the added issue. # # Example: @@ -85,7 +85,7 @@ subject l(:mail_subject_reminder, :count => issues.size, :days => days) body :issues => issues, :days => days, - :issues_url => url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => user.id, :sort_key => 'due_date', :sort_order => 'asc') + :issues_url => url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => user.id, :sort => 'due_date:asc') render_multipart('reminder', body) end @@ -114,11 +114,11 @@ added_to_url = '' case container.class.name when 'Project' - added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container) + added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container) added_to = "#{l(:label_project)}: #{container}" recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail} when 'Version' - added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container.project_id) + added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container.project) added_to = "#{l(:label_version)}: #{container.name}" recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail} when 'Document' @@ -133,7 +133,7 @@ :added_to_url => added_to_url render_multipart('attachments_added', body) end - + # Builds a tmail object used to email recipients of a news' project when a news item is added. # # Example: @@ -149,7 +149,25 @@ render_multipart('news_added', body) end - # Builds a tmail object used to email the recipients of the specified message that was posted. + # Builds a tmail object used to email recipients of a news' project when a news comment is added. + # + # Example: + # news_comment_added(comment) => tmail object + # Mailer.news_comment_added(comment) => sends an email to the news' project recipients + def news_comment_added(comment) + news = comment.commented + redmine_headers 'Project' => news.project.identifier + message_id comment + recipients news.recipients + cc news.watcher_recipients + subject "Re: [#{news.project.name}] #{l(:label_news)}: #{news.title}" + body :news => news, + :comment => comment, + :news_url => url_for(:controller => 'news', :action => 'show', :id => news) + render_multipart('news_comment_added', body) + end + + # Builds a tmail object used to email the recipients of the specified message that was posted. # # Example: # message_posted(message) => tmail object @@ -166,8 +184,8 @@ :message_url => url_for(message.event_url) render_multipart('message_posted', body) end - - # Builds a tmail object used to email the recipients of a project of the specified wiki content was added. + + # Builds a tmail object used to email the recipients of a project of the specified wiki content was added. # # Example: # wiki_content_added(wiki_content) => tmail object @@ -183,8 +201,8 @@ :wiki_content_url => url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title) render_multipart('wiki_content_added', body) end - - # Builds a tmail object used to email the recipients of a project of the specified wiki content was updated. + + # Builds a tmail object used to email the recipients of a project of the specified wiki content was updated. # # Example: # wiki_content_updated(wiki_content) => tmail object @@ -278,7 +296,7 @@ return false if (recipients.nil? || recipients.empty?) && (cc.nil? || cc.empty?) && (bcc.nil? || bcc.empty?) - + # Set Message-Id and References if @message_id_object mail.message_id = self.class.message_id_for(@message_id_object) @@ -286,7 +304,7 @@ if @references_objects mail.references = @references_objects.collect {|o| self.class.message_id_for(o)} end - + # Log errors when raise_delivery_errors is set to false, Rails does not raise_errors = self.class.raise_delivery_errors self.class.raise_delivery_errors = true @@ -326,10 +344,10 @@ :conditions => s.conditions ).group_by(&:assigned_to) issues_by_assignee.each do |assignee, issues| - deliver_reminder(assignee, issues, days) unless assignee.nil? + deliver_reminder(assignee, issues, days) if assignee && assignee.active? end end - + # Activates/desactivates email deliveries during +block+ def self.with_deliveries(enabled = true, &block) was_enabled = ActionMailer::Base.perform_deliveries @@ -345,7 +363,7 @@ @initial_language = current_language set_language_if_valid Setting.default_language from Setting.mail_from - + # Common headers headers 'X-Mailer' => 'Redmine', 'X-Redmine-Host' => Setting.host_name, @@ -368,11 +386,11 @@ recipients.delete(@author.mail) if recipients cc.delete(@author.mail) if cc end - + notified_users = [recipients, cc].flatten.compact.uniq # Rails would log recipients only, not cc and bcc mylogger.info "Sending email notification to: #{notified_users.join(', ')}" if mylogger - + # Blind carbon copy recipients if Setting.bcc_recipients? bcc(notified_users) @@ -388,7 +406,7 @@ # # https://rails.lighthouseapp.com/projects/8994/tickets/2338-actionmailer-mailer-views-and-content-type # https://rails.lighthouseapp.com/projects/8994/tickets/1799-actionmailer-doesnt-set-template_format-when-rendering-layouts - + def render_multipart(method_name, body) if Setting.plain_text_mail? content_type "text/plain" @@ -404,29 +422,29 @@ def self.controller_path '' end unless respond_to?('controller_path') - + # Returns a predictable Message-Id for the given object def self.message_id_for(object) # id + timestamp should reduce the odds of a collision # as far as we don't send multiple emails for the same object - timestamp = object.send(object.respond_to?(:created_on) ? :created_on : :updated_on) + timestamp = object.send(object.respond_to?(:created_on) ? :created_on : :updated_on) hash = "redmine.#{object.class.name.demodulize.underscore}-#{object.id}.#{timestamp.strftime("%Y%m%d%H%M%S")}" host = Setting.mail_from.to_s.gsub(%r{^.*@}, '') host = "#{::Socket.gethostname}.redmine" if host.empty? "<#{hash}@#{host}>" end - + private - + def message_id(object) @message_id_object = object end - + def references(object) @references_objects ||= [] @references_objects << object end - + def mylogger RAILS_DEFAULT_LOGGER end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/message.rb.svn-base --- a/app/models/.svn/text-base/message.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/message.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,10 +21,10 @@ acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC" acts_as_attachable belongs_to :last_reply, :class_name => 'Message', :foreign_key => 'last_reply_id' - + acts_as_searchable :columns => ['subject', 'content'], :include => {:board => :project}, - :project_key => 'project_id', + :project_key => "#{Board.table_name}.project_id", :date_column => "#{table_name}.created_on" acts_as_event :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"}, :description => :content, @@ -35,32 +35,32 @@ acts_as_activity_provider :find_options => {:include => [{:board => :project}, :author]}, :author_key => :author_id acts_as_watchable - + attr_protected :locked, :sticky validates_presence_of :board, :subject, :content validates_length_of :subject, :maximum => 255 - + after_create :add_author_as_watcher - + named_scope :visible, lambda {|*args| { :include => {:board => :project}, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_messages) } } - + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end - + def validate_on_create # Can not reply to a locked topic errors.add_to_base 'Topic is locked' if root.locked? && self != root end - + def after_create if parent parent.reload.update_attribute(:last_reply_id, self.id) end board.reset_counters! end - + def after_update if board_id_changed? Message.update_all("board_id = #{board_id}", ["id = ? OR parent_id = ?", root.id, root.id]) @@ -68,19 +68,19 @@ Board.reset_counters!(board_id) end end - + def after_destroy board.reset_counters! end - + def sticky=(arg) write_attribute :sticky, (arg == true || arg.to_s == '1' ? 1 : 0) end - + def sticky? sticky == 1 end - + def project board.project end @@ -92,9 +92,9 @@ def destroyable_by?(usr) usr && usr.logged? && (usr.allowed_to?(:delete_messages, project) || (self.author == usr && usr.allowed_to?(:delete_own_messages, project))) end - + private - + def add_author_as_watcher Watcher.create(:watchable => self.root, :user => author) end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/message_observer.rb.svn-base --- a/app/models/.svn/text-base/message_observer.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/message_observer.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/news.rb.svn-base --- a/app/models/.svn/text-base/news.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/news.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -19,7 +19,7 @@ belongs_to :project belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' has_many :comments, :as => :commented, :dependent => :delete_all, :order => "created_on" - + validates_presence_of :title, :description validates_length_of :title, :maximum => 60 validates_length_of :summary, :maximum => 255 @@ -28,18 +28,27 @@ acts_as_event :url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.id}} acts_as_activity_provider :find_options => {:include => [:project, :author]}, :author_key => :author_id - - named_scope :visible, lambda {|*args| { + acts_as_watchable + + after_create :add_author_as_watcher + + named_scope :visible, lambda {|*args| { :include => :project, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_news) + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_news, *args) }} - + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_news, project) end - + # returns latest news for projects visible by user def self.latest(user = User.current, count = 5) find(:all, :limit => count, :conditions => Project.allowed_to_condition(user, :view_news), :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC") end + + private + + def add_author_as_watcher + Watcher.create(:watchable => self, :user => author) + end end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/project.rb.svn-base --- a/app/models/.svn/text-base/project.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/project.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -43,7 +43,7 @@ has_many :time_entries, :dependent => :delete_all has_many :queries, :dependent => :delete_all has_many :documents, :dependent => :destroy - has_many :news, :dependent => :delete_all, :include => :author + has_many :news, :dependent => :destroy, :include => :author has_many :issue_categories, :dependent => :delete_all, :order => "#{IssueCategory.table_name}.name" has_many :boards, :dependent => :destroy, :order => "position ASC" has_one :repository, :dependent => :destroy @@ -56,7 +56,7 @@ :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :association_foreign_key => 'custom_field_id' - acts_as_nested_set :order => 'name' + acts_as_nested_set :order => 'name', :dependent => :destroy acts_as_attachable :view_permission => :view_files, :delete_permission => :manage_files @@ -79,12 +79,12 @@ # reserved words validates_exclusion_of :identifier, :in => %w( new ) - before_destroy :delete_all_members, :destroy_children + before_destroy :delete_all_members named_scope :has_module, lambda { |mod| { :conditions => ["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s] } } named_scope :active, { :conditions => "#{Project.table_name}.status = #{STATUS_ACTIVE}"} named_scope :all_public, { :conditions => { :is_public => true } } - named_scope :visible, lambda { { :conditions => Project.visible_by(User.current) } } + named_scope :visible, lambda {|*args| {:conditions => Project.visible_condition(args.shift || User.current, *args) }} def initialize(attributes = nil) super @@ -115,27 +115,31 @@ # returns latest created projects # non public projects will be returned only if user is a member of those def self.latest(user=nil, count=5) - find(:all, :limit => count, :conditions => visible_by(user), :order => "created_on DESC") + visible(user).find(:all, :limit => count, :order => "created_on DESC") end - # Returns a SQL :conditions string used to find all active projects for the specified user. + def self.visible_by(user=nil) + ActiveSupport::Deprecation.warn "Project.visible_by is deprecated and will be removed in Redmine 1.3.0. Use Project.visible_condition instead." + visible_condition(user || User.current) + end + + # Returns a SQL conditions string used to find all projects visible by the specified user. # # Examples: - # Projects.visible_by(admin) => "projects.status = 1" - # Projects.visible_by(normal_user) => "projects.status = 1 AND projects.is_public = 1" - def self.visible_by(user=nil) - user ||= User.current - if user && user.admin? - return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}" - elsif user && user.memberships.any? - return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND (#{Project.table_name}.is_public = #{connection.quoted_true} or #{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')}))" - else - return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND #{Project.table_name}.is_public = #{connection.quoted_true}" - end + # Project.visible_condition(admin) => "projects.status = 1" + # Project.visible_condition(normal_user) => "((projects.status = 1) AND (projects.is_public = 1 OR projects.id IN (1,3,4)))" + # Project.visible_condition(anonymous) => "((projects.status = 1) AND (projects.is_public = 1))" + def self.visible_condition(user, options={}) + allowed_to_condition(user, :view_project, options) end + # Returns a SQL conditions string used to find all projects for which +user+ has the given +permission+ + # + # Valid options: + # * :project => limit the condition to project + # * :with_subprojects => limit the condition to project and its subprojects + # * :member => limit the condition to the user projects def self.allowed_to_condition(user, permission, options={}) - statements = [] base_statement = "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}" if perm = Redmine::AccessControl.permission(permission) unless perm.project_module.nil? @@ -148,24 +152,37 @@ project_statement << " OR (#{Project.table_name}.lft > #{options[:project].lft} AND #{Project.table_name}.rgt < #{options[:project].rgt})" if options[:with_subprojects] base_statement = "(#{project_statement}) AND (#{base_statement})" end + if user.admin? - # no restriction + base_statement else - statements << "1=0" + statement_by_role = {} + unless options[:member] + role = user.logged? ? Role.non_member : Role.anonymous + if role.allowed_to?(permission) + statement_by_role[role] = "#{Project.table_name}.is_public = #{connection.quoted_true}" + end + end if user.logged? - if Role.non_member.allowed_to?(permission) && !options[:member] - statements << "#{Project.table_name}.is_public = #{connection.quoted_true}" + user.projects_by_role.each do |role, projects| + if role.allowed_to?(permission) + statement_by_role[role] = "#{Project.table_name}.id IN (#{projects.collect(&:id).join(',')})" + end end - allowed_project_ids = user.memberships.select {|m| m.roles.detect {|role| role.allowed_to?(permission)}}.collect {|m| m.project_id} - statements << "#{Project.table_name}.id IN (#{allowed_project_ids.join(',')})" if allowed_project_ids.any? + end + if statement_by_role.empty? + "1=0" else - if Role.anonymous.allowed_to?(permission) && !options[:member] - # anonymous user allowed on public project - statements << "#{Project.table_name}.is_public = #{connection.quoted_true}" - end + if block_given? + statement_by_role.each do |role, statement| + if s = yield(role, user) + statement_by_role[role] = "(#{statement} AND (#{s}))" + end + end + end + "((#{base_statement}) AND (#{statement_by_role.values.join(' OR ')}))" end end - statements.empty? ? base_statement : "((#{base_statement}) AND (#{statements.join(' OR ')}))" end # Returns the Systemwide and project specific activities @@ -347,7 +364,7 @@ # Returns an array of the trackers used by the project and its active sub projects def rolled_up_trackers @rolled_up_trackers ||= - Tracker.find(:all, :include => :projects, + Tracker.find(:all, :joins => :projects, :select => "DISTINCT #{Tracker.table_name}.*", :conditions => ["#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ? AND #{Project.table_name}.status = #{STATUS_ACTIVE}", lft, rgt], :order => "#{Tracker.table_name}.position") @@ -373,15 +390,17 @@ # Returns a scope of the Versions used by the project def shared_versions - @shared_versions ||= + @shared_versions ||= begin + r = root? ? self : root Version.scoped(:include => :project, :conditions => "#{Project.table_name}.id = #{id}" + " OR (#{Project.table_name}.status = #{Project::STATUS_ACTIVE} AND (" + " #{Version.table_name}.sharing = 'system'" + - " OR (#{Project.table_name}.lft >= #{root.lft} AND #{Project.table_name}.rgt <= #{root.rgt} AND #{Version.table_name}.sharing = 'tree')" + + " OR (#{Project.table_name}.lft >= #{r.lft} AND #{Project.table_name}.rgt <= #{r.rgt} AND #{Version.table_name}.sharing = 'tree')" + " OR (#{Project.table_name}.lft < #{lft} AND #{Project.table_name}.rgt > #{rgt} AND #{Version.table_name}.sharing IN ('hierarchy', 'descendants'))" + " OR (#{Project.table_name}.lft > #{lft} AND #{Project.table_name}.rgt < #{rgt} AND #{Version.table_name}.sharing = 'hierarchy')" + "))") + end end # Returns a hash of project users grouped by role @@ -423,6 +442,12 @@ def all_issue_custom_fields @all_issue_custom_fields ||= (IssueCustomField.for_all + issue_custom_fields).uniq.sort end + + # Returns an array of all custom fields enabled for project time entries + # (explictly associated custom fields and custom fields enabled for all projects) + def all_time_entry_custom_fields + @all_time_entry_custom_fields ||= (TimeEntryCustomField.for_all + time_entry_custom_fields).uniq.sort + end def project self @@ -509,10 +534,7 @@ def enabled_module_names=(module_names) if module_names && module_names.is_a?(Array) module_names = module_names.collect(&:to_s).reject(&:blank?) - # remove disabled modules - enabled_modules.each {|mod| mod.destroy unless module_names.include?(mod.name)} - # add new modules - module_names.reject {|name| module_enabled?(name)}.each {|name| enabled_modules << EnabledModule.new(:name => name)} + self.enabled_modules = module_names.collect {|name| enabled_modules.detect {|mod| mod.name == name} || EnabledModule.new(:name => name)} else enabled_modules.clear end @@ -621,13 +643,6 @@ private - # Destroys children before destroying self - def destroy_children - children.each do |child| - child.destroy - end - end - # Copies wiki from +project+ def copy_wiki(project) # Check that the source project has a wiki first @@ -674,6 +689,7 @@ end # Copies issues from +project+ + # Note: issues assigned to a closed version won't be copied due to validation rules def copy_issues(project) # Stores the source issue id as a key and the copied issues as the # value. Used to map the two togeather for issue relations. diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/query.rb.svn-base --- a/app/models/.svn/text-base/query.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/query.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,24 +1,24 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -class QueryColumn +class QueryColumn attr_accessor :name, :sortable, :groupable, :default_order include Redmine::I18n - + def initialize(name, options={}) self.name = name self.sortable = options[:sortable] @@ -29,19 +29,23 @@ self.default_order = options[:default_order] @caption_key = options[:caption] || "field_#{name}" end - + def caption l(@caption_key) end - + # Returns true if the column is sortable, otherwise false def sortable? !sortable.nil? end - + def value(issue) issue.send name end + + def css_classes + name + end end class QueryCustomFieldColumn < QueryColumn @@ -55,37 +59,41 @@ self.groupable ||= false @cf = custom_field end - + def caption @cf.name end - + def custom_field @cf end - + def value(issue) cv = issue.custom_values.detect {|v| v.custom_field_id == @cf.id} cv && @cf.cast_value(cv.value) end + + def css_classes + @css_classes ||= "#{name} #{@cf.field_format}" + end end class Query < ActiveRecord::Base class StatementInvalid < ::ActiveRecord::StatementInvalid end - + belongs_to :project belongs_to :user serialize :filters serialize :column_names serialize :sort_criteria, Array - + attr_protected :project_id, :user_id - + validates_presence_of :name, :on => :save validates_length_of :name, :maximum => 255 - - @@operators = { "=" => :label_equals, + + @@operators = { "=" => :label_equals, "!" => :label_not_equals, "o" => :label_open_issues, "c" => :label_closed_issues, @@ -105,7 +113,7 @@ "!~" => :label_not_contains } cattr_reader :operators - + @@operators_by_filter_type = { :list => [ "=", "!" ], :list_status => [ "o", "=", "!", "c", "*" ], :list_optional => [ "=", "!", "!*", "*" ], @@ -137,27 +145,27 @@ QueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on", :default_order => 'desc'), ] cattr_reader :available_columns - + def initialize(attributes = nil) super attributes self.filters ||= { 'status_id' => {:operator => "o", :values => [""]} } end - + def after_initialize # Store the fact that project is nil (used in #editable_by?) @is_for_all = project.nil? end - + def validate filters.each_key do |field| - errors.add label_for(field), :blank unless + errors.add label_for(field), :blank unless # filter requires one or more values - (values_for(field) and !values_for(field).first.blank?) or + (values_for(field) and !values_for(field).first.blank?) or # filter doesn't require any value ["o", "c", "!*", "*", "t", "w"].include? operator_for(field) end if filters end - + def editable_by?(user) return false unless user # Admin can edit them all and regular users can edit their private queries @@ -165,23 +173,23 @@ # Members can not edit public queries that are for all project (only admin is allowed to) is_public && !@is_for_all && user.allowed_to?(:manage_public_queries, project) end - + def available_filters return @available_filters if @available_filters - + trackers = project.nil? ? Tracker.find(:all, :order => 'position') : project.rolled_up_trackers - - @available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } }, - "tracker_id" => { :type => :list, :order => 2, :values => trackers.collect{|s| [s.name, s.id.to_s] } }, + + @available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } }, + "tracker_id" => { :type => :list, :order => 2, :values => trackers.collect{|s| [s.name, s.id.to_s] } }, "priority_id" => { :type => :list, :order => 3, :values => IssuePriority.all.collect{|s| [s.name, s.id.to_s] } }, - "subject" => { :type => :text, :order => 8 }, - "created_on" => { :type => :date_past, :order => 9 }, + "subject" => { :type => :text, :order => 8 }, + "created_on" => { :type => :date_past, :order => 9 }, "updated_on" => { :type => :date_past, :order => 10 }, "start_date" => { :type => :date, :order => 11 }, "due_date" => { :type => :date, :order => 12 }, "estimated_hours" => { :type => :integer, :order => 13 }, "done_ratio" => { :type => :integer, :order => 14 }} - + user_values = [] user_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? if project @@ -191,7 +199,7 @@ if all_projects.any? # members of visible projects user_values += User.active.find(:all, :conditions => ["#{User.table_name}.id IN (SELECT DISTINCT user_id FROM members WHERE project_id IN (?))", all_projects.collect(&:id)]).sort.collect{|s| [s.name, s.id.to_s] } - + # project filter project_values = [] Project.project_tree(all_projects) do |p, level| @@ -209,21 +217,26 @@ role_values = Role.givable.collect {|r| [r.name, r.id.to_s] } @available_filters["assigned_to_role"] = { :type => :list_optional, :order => 7, :values => role_values } unless role_values.empty? - + if User.current.logged? @available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] } end - + if project # project specific filters - unless @project.issue_categories.empty? - @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } } + categories = @project.issue_categories.all + unless categories.empty? + @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => categories.collect{|s| [s.name, s.id.to_s] } } end - unless @project.shared_versions.empty? - @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.shared_versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } + versions = @project.shared_versions.all + unless versions.empty? + @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } end - unless @project.descendants.active.empty? - @available_filters["subproject_id"] = { :type => :list_subprojects, :order => 13, :values => @project.descendants.visible.collect{|s| [s.name, s.id.to_s] } } + unless @project.leaf? + subprojects = @project.descendants.visible.all + unless subprojects.empty? + @available_filters["subproject_id"] = { :type => :list_subprojects, :order => 13, :values => subprojects.collect{|s| [s.name, s.id.to_s] } } + end end add_custom_fields_filters(@project.all_issue_custom_fields) else @@ -236,7 +249,7 @@ end @available_filters end - + def add_filter(field, operator, values) # values must be an array return unless values and values.is_a? Array # and !values.first.empty? @@ -251,7 +264,7 @@ filters[field] = {:operator => operator, :values => values } end end - + def add_short_filter(field, expression) return unless expression parms = expression.scan(/^(o|c|!\*|!|\*)?(.*)$/).first @@ -266,19 +279,19 @@ end end end - + def has_filter?(field) filters and filters[field] end - + def operator_for(field) has_filter?(field) ? filters[field][:operator] : nil end - + def values_for(field) has_filter?(field) ? filters[field][:values] : nil end - + def label_for(field) label = available_filters[field][:name] if available_filters.has_key?(field) label ||= field.gsub(/\_id$/, "") @@ -290,17 +303,17 @@ @available_columns += (project ? project.all_issue_custom_fields : IssueCustomField.find(:all) - ).collect {|cf| QueryCustomFieldColumn.new(cf) } + ).collect {|cf| QueryCustomFieldColumn.new(cf) } end def self.available_columns=(v) self.available_columns = (v) end - + def self.add_available_column(column) self.available_columns << (column) if column.is_a?(QueryColumn) end - + # Returns an array of columns that can be used to group the results def groupable_columns available_columns.select {|c| c.groupable} @@ -313,7 +326,7 @@ h }) end - + def columns if has_default_columns? available_columns.select do |c| @@ -325,7 +338,7 @@ column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact end end - + def column_names=(names) if names names = names.select {|n| n.is_a?(Symbol) || !n.blank? } @@ -337,15 +350,15 @@ end write_attribute(:column_names, names) end - + def has_column?(column) column_names && column_names.include?(column.name) end - + def has_default_columns? column_names.nil? || column_names.empty? end - + def sort_criteria=(arg) c = [] if arg.is_a?(Hash) @@ -354,19 +367,19 @@ c = arg.select {|k,o| !k.to_s.blank?}.slice(0,3).collect {|k,o| [k.to_s, o == 'desc' ? o : 'asc']} write_attribute(:sort_criteria, c) end - + def sort_criteria read_attribute(:sort_criteria) || [] end - + def sort_criteria_key(arg) sort_criteria && sort_criteria[arg] && sort_criteria[arg].first end - + def sort_criteria_order(arg) sort_criteria && sort_criteria[arg] && sort_criteria[arg].last end - + # Returns the SQL sort order that should be prepended for grouping def group_by_sort_order if grouped? && (column = group_by_column) @@ -375,20 +388,20 @@ "#{column.sortable} #{column.default_order}" end end - + # Returns true if the query is a grouped query def grouped? !group_by_column.nil? end - + def group_by_column groupable_columns.detect {|c| c.groupable && c.name.to_s == group_by} end - + def group_by_statement group_by_column.try(:groupable) end - + def project_statement project_clauses = [] if project && !@project.descendants.active.empty? @@ -411,8 +424,7 @@ elsif project project_clauses << "#{Project.table_name}.id = %d" % project.id end - project_clauses << Project.allowed_to_condition(User.current, :view_issues) - project_clauses.join(' AND ') + project_clauses.any? ? project_clauses.join(' AND ') : nil end def statement @@ -423,12 +435,12 @@ v = values_for(field).clone next unless v and !v.empty? operator = operator_for(field) - + # "me" value subsitution if %w(assigned_to_id author_id watcher_id).include?(field) v.push(User.current.logged? ? User.current.id.to_s : "0") if v.delete("me") end - + sql = '' if field =~ /^cf_(\d+)$/ # custom field @@ -460,7 +472,7 @@ end user_ids.flatten.uniq.compact }.sort.collect(&:to_s) - + sql << '(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')' elsif field == "assigned_to_role" # named field @@ -474,14 +486,14 @@ roles = Role.givable.find_all_by_id(v) end roles ||= [] - + members_of_roles = roles.inject([]) {|user_ids, role| if role && role.members user_ids << role.members.collect(&:user_id) end user_ids.flatten.uniq.compact }.sort.collect(&:to_s) - + sql << '(' + sql_for_field("assigned_to_id", operator, members_of_roles, Issue.table_name, "assigned_to_id", false) + ')' else # regular field @@ -490,26 +502,29 @@ sql << '(' + sql_for_field(field, operator, v, db_table, db_field) + ')' end filters_clauses << sql - + end if filters and valid? - - (filters_clauses << project_statement).join(' AND ') + + filters_clauses << project_statement + filters_clauses.reject!(&:blank?) + + filters_clauses.any? ? filters_clauses.join(' AND ') : nil end - + # Returns the issue count def issue_count Issue.count(:include => [:status, :project], :conditions => statement) rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + # Returns the issue count by group or nil if query is not grouped def issue_count_by_group r = nil if grouped? begin # Rails will raise an (unexpected) RecordNotFound if there's only a nil group value - r = Issue.count(:group => group_by_statement, :include => [:status, :project], :conditions => statement) + r = Issue.visible.count(:group => group_by_statement, :include => [:status, :project], :conditions => statement) rescue ActiveRecord::RecordNotFound r = {nil => issue_count} end @@ -522,14 +537,14 @@ rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + # Returns the issues # Valid options are :order, :offset, :limit, :include, :conditions def issues(options={}) order_option = [group_by_sort_order, options[:order]].reject {|s| s.blank?}.join(',') order_option = nil if order_option.blank? - - Issue.find :all, :include => ([:status, :project] + (options[:include] || [])).uniq, + + Issue.visible.find :all, :include => ([:status, :project] + (options[:include] || [])).uniq, :conditions => Query.merge_conditions(statement, options[:conditions]), :order => order_option, :limit => options[:limit], @@ -541,7 +556,7 @@ # Returns the journals # Valid options are :order, :offset, :limit def journals(options={}) - Journal.find :all, :include => [:details, :user, {:issue => [:project, :author, :tracker, :status]}], + Journal.visible.find :all, :include => [:details, :user, {:issue => [:project, :author, :tracker, :status]}], :conditions => statement, :order => options[:order], :limit => options[:limit], @@ -549,18 +564,18 @@ rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + # Returns the versions # Valid options are :conditions def versions(options={}) - Version.find :all, :include => :project, + Version.visible.find :all, :include => :project, :conditions => Query.merge_conditions(project_statement, options[:conditions]) rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + private - + # Helper method to generate the WHERE sql for a +field+, +operator+ and a +value+ def sql_for_field(field, operator, value, db_table, db_field, is_custom_filter=false) sql = '' @@ -608,24 +623,22 @@ when "t" sql = date_range_clause(db_table, db_field, 0, 0) when "w" - from = l(:general_first_day_of_week) == '7' ? - # week starts on sunday - ((Date.today.cwday == 7) ? Time.now.at_beginning_of_day : Time.now.at_beginning_of_week - 1.day) : - # week starts on monday (Rails default) - Time.now.at_beginning_of_week - sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)] + first_day_of_week = l(:general_first_day_of_week).to_i + day_of_week = Date.today.cwday + days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week) + sql = date_range_clause(db_table, db_field, - days_ago, - days_ago + 6) when "~" sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'" when "!~" sql = "LOWER(#{db_table}.#{db_field}) NOT LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'" end - + return sql end - + def add_custom_fields_filters(custom_fields) @available_filters ||= {} - + custom_fields.select(&:is_filter?).each do |field| case field.field_format when "text" @@ -636,13 +649,16 @@ options = { :type => :date, :order => 20 } when "bool" options = { :type => :list, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]], :order => 20 } + when "user", "version" + next unless project + options = { :type => :list_optional, :values => field.possible_values_options(project), :order => 20} else options = { :type => :string, :order => 20 } end @available_filters["cf_#{field.id}"] = options.merge({ :name => field.name }) end end - + # Returns a SQL clause for a date or datetime field. def date_range_clause(table, field, from, to) s = [] diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/repository.rb.svn-base --- a/app/models/.svn/text-base/repository.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/repository.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,35 +1,45 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Repository < ActiveRecord::Base include Redmine::Ciphering - + belongs_to :project has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC" has_many :changes, :through => :changesets - + + serialize :extra_info + # Raw SQL to delete changesets and changes in the database # has_many :changesets, :dependent => :destroy is too slow for big repositories before_destroy :clear_changesets - + validates_length_of :password, :maximum => 255, :allow_nil => true # Checks if the SCM is enabled when creating a repository validate_on_create { |r| r.errors.add(:type, :invalid) unless Setting.enabled_scm.include?(r.class.name.demodulize) } + def self.human_attribute_name(attribute_key_name) + attr_name = attribute_key_name + if attr_name == "log_encoding" + attr_name = "commit_logs_encoding" + end + super(attr_name) + end + # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) @@ -39,11 +49,11 @@ def root_url=(arg) write_attribute(:root_url, arg ? arg.to_s.strip : nil) end - + def password read_ciphered_attribute(:password) end - + def password=(arg) write_ciphered_attribute(:password, arg) end @@ -63,6 +73,17 @@ self.class.scm_name end + def merge_extra_info(arg) + h = extra_info || {} + return h if arg.nil? + h.merge!(arg) + write_attribute(:extra_info, h) + end + + def report_last_commit + true + end + def supports_cat? scm.supports_cat? end @@ -70,11 +91,19 @@ def supports_annotate? scm.supports_annotate? end - + + def supports_all_revisions? + true + end + + def supports_directory_revisions? + false + end + def entry(path=nil, identifier=nil) scm.entry(path, identifier) end - + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end @@ -90,15 +119,15 @@ def default_branch scm.default_branch end - + def properties(path, identifier=nil) scm.properties(path, identifier) end - + def cat(path, identifier=nil) scm.cat(path, identifier) end - + def diff(path, rev, rev_to) scm.diff(path, rev, rev_to) end @@ -118,7 +147,8 @@ # Finds and returns a revision with a number or the beginning of a hash def find_changeset_by_name(name) return nil if name.blank? - changesets.find(:first, :conditions => (name.match(/^\d*$/) ? ["revision = ?", name.to_s] : ["revision LIKE ?", name + '%'])) + changesets.find(:first, :conditions => (name.match(/^\d*$/) ? + ["revision = ?", name.to_s] : ["revision LIKE ?", name + '%'])) end def latest_changeset @@ -129,26 +159,32 @@ # Default behaviour is to search in cached changesets def latest_changesets(path, rev, limit=10) if path.blank? - changesets.find(:all, :include => :user, - :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", - :limit => limit) + changesets.find( + :all, + :include => :user, + :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", + :limit => limit) else - changes.find(:all, :include => {:changeset => :user}, - :conditions => ["path = ?", path.with_leading_slash], - :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", - :limit => limit).collect(&:changeset) + changes.find( + :all, + :include => {:changeset => :user}, + :conditions => ["path = ?", path.with_leading_slash], + :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", + :limit => limit + ).collect(&:changeset) end end - + def scan_changesets_for_issue_ids self.changesets.each(&:scan_comment_for_issue_ids) end # Returns an array of committers usernames and associated user_id def committers - @committers ||= Changeset.connection.select_rows("SELECT DISTINCT committer, user_id FROM #{Changeset.table_name} WHERE repository_id = #{id}") + @committers ||= Changeset.connection.select_rows( + "SELECT DISTINCT committer, user_id FROM #{Changeset.table_name} WHERE repository_id = #{id}") end - + # Maps committers username to a user ids def committer_ids=(h) if h.is_a?(Hash) @@ -156,17 +192,19 @@ new_user_id = h[committer] if new_user_id && (new_user_id.to_i != user_id.to_i) new_user_id = (new_user_id.to_i > 0 ? new_user_id.to_i : nil) - Changeset.update_all("user_id = #{ new_user_id.nil? ? 'NULL' : new_user_id }", ["repository_id = ? AND committer = ?", id, committer]) + Changeset.update_all( + "user_id = #{ new_user_id.nil? ? 'NULL' : new_user_id }", + ["repository_id = ? AND committer = ?", id, committer]) end end - @committers = nil + @committers = nil @found_committer_users = nil true else false end end - + # Returns the Redmine User corresponding to the given +committer+ # It will return nil if the committer is not yet mapped and if no User # with the same username or email was found @@ -174,7 +212,7 @@ unless committer.blank? @found_committer_users ||= {} return @found_committer_users[committer] if @found_committer_users.has_key?(committer) - + user = nil c = changesets.find(:first, :conditions => {:committer => committer}, :include => :user) if c && c.user @@ -218,7 +256,7 @@ def self.scm_name 'Abstract' end - + def self.available_scm subclasses.collect {|klass| [klass.scm_name, klass.name]} end @@ -238,7 +276,7 @@ ret = "" begin ret = self.scm_adapter_class.client_command if self.scm_adapter_class - rescue Redmine::Scm::Adapters::CommandFailed => e + rescue Exception => e logger.error "scm: error during get command: #{e.message}" end ret @@ -248,7 +286,7 @@ ret = "" begin ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class - rescue Redmine::Scm::Adapters::CommandFailed => e + rescue Exception => e logger.error "scm: error during get version string: #{e.message}" end ret @@ -257,8 +295,8 @@ def self.scm_available ret = false begin - ret = self.scm_adapter_class.client_available if self.scm_adapter_class - rescue Redmine::Scm::Adapters::CommandFailed => e + ret = self.scm_adapter_class.client_available if self.scm_adapter_class + rescue Exception => e logger.error "scm: error during get scm available: #{e.message}" end ret @@ -272,7 +310,7 @@ root_url.strip! true end - + def clear_changesets cs, ch, ci = Changeset.table_name, Change.table_name, "#{table_name_prefix}changesets_issues#{table_name_suffix}" connection.delete("DELETE FROM #{ch} WHERE #{ch}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/role.rb.svn-base --- a/app/models/.svn/text-base/role.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/role.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -19,6 +19,12 @@ # Built-in roles BUILTIN_NON_MEMBER = 1 BUILTIN_ANONYMOUS = 2 + + ISSUES_VISIBILITY_OPTIONS = [ + ['all', :label_issues_visibility_all], + ['default', :label_issues_visibility_public], + ['own', :label_issues_visibility_own] + ] named_scope :givable, { :conditions => "builtin = 0", :order => 'position' } named_scope :builtin, lambda { |*args| @@ -43,7 +49,10 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - + validates_inclusion_of :issues_visibility, + :in => ISSUES_VISIBILITY_OPTIONS.collect(&:first), + :if => lambda {|role| role.respond_to?(:issues_visibility)} + def permissions read_attribute(:permissions) || [] end @@ -84,6 +93,14 @@ name end + def name + case builtin + when 1; l(:label_role_non_member, :default => read_attribute(:name)) + when 2; l(:label_role_anonymous, :default => read_attribute(:name)) + else; read_attribute(:name) + end + end + # Return true if the role is a builtin role def builtin? self.builtin != 0 diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/setting.rb.svn-base --- a/app/models/.svn/text-base/setting.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/setting.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -28,12 +28,12 @@ '%b %d, %Y', '%B %d, %Y' ] - + TIME_FORMATS = [ '%H:%M', '%I:%M %p' ] - + ENCODINGS = %w(US-ASCII windows-1250 windows-1251 @@ -73,22 +73,22 @@ Big5 Big5-HKSCS TIS-620) - + cattr_accessor :available_settings @@available_settings = YAML::load(File.open("#{RAILS_ROOT}/config/settings.yml")) Redmine::Plugin.all.each do |plugin| next unless plugin.settings - @@available_settings["plugin_#{plugin.id}"] = {'default' => plugin.settings[:default], 'serialized' => true} + @@available_settings["plugin_#{plugin.id}"] = {'default' => plugin.settings[:default], 'serialized' => true} end - + validates_uniqueness_of :name validates_inclusion_of :name, :in => @@available_settings.keys - validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' } + validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' } # Hash used to cache setting values @cached_settings = {} @cached_cleared_on = Time.now - + def value v = read_attribute(:value) # Unserialize serialized settings @@ -96,18 +96,18 @@ v = v.to_sym if @@available_settings[name]['format'] == 'symbol' && !v.blank? v end - + def value=(v) v = v.to_yaml if v && @@available_settings[name] && @@available_settings[name]['serialized'] write_attribute(:value, v.to_s) end - + # Returns the value of the setting named name def self.[](name) v = @cached_settings[name] v ? v : (@cached_settings[name] = find_or_default(name).value) end - + def self.[]=(name, v) setting = find_or_default(name) setting.value = (v ? v : "") @@ -115,7 +115,7 @@ setting.save setting.value end - + # Defines getter and setter for each setting # Then setting values can be read using: Setting.some_setting_name # or set using Setting.some_setting_name = "some value" @@ -135,16 +135,16 @@ END_SRC class_eval src, __FILE__, __LINE__ end - + # Helper that returns an array based on per_page_options setting def self.per_page_options_array per_page_options.split(%r{[\s,]}).collect(&:to_i).select {|n| n > 0}.sort end - + def self.openid? Object.const_defined?(:OpenID) && self[:openid].to_i > 0 end - + # Checks if settings have changed since the values were read # and clears the cache hash if it's the case # Called once per request @@ -156,13 +156,13 @@ logger.info "Settings cache cleared." if logger end end - + private # Returns the Setting instance for the setting named name # (record found in database or new record with default value) def self.find_or_default(name) name = name.to_s - raise "There's no setting named #{name}" unless @@available_settings.has_key?(name) + raise "There's no setting named #{name}" unless @@available_settings.has_key?(name) setting = find_by_name(name) setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/time_entry.rb.svn-base --- a/app/models/.svn/text-base/time_entry.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/time_entry.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -22,7 +22,7 @@ belongs_to :issue belongs_to :user belongs_to :activity, :class_name => 'TimeEntryActivity', :foreign_key => 'activity_id' - + attr_protected :project_id, :user_id, :tyear, :tmonth, :tweek acts_as_customizable @@ -33,12 +33,17 @@ acts_as_activity_provider :timestamp => "#{table_name}.created_on", :author_key => :user_id, - :find_options => {:include => :project} + :find_options => {:include => :project} validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on validates_numericality_of :hours, :allow_nil => true, :message => :invalid validates_length_of :comments, :maximum => 255, :allow_nil => true + named_scope :visible, lambda {|*args| { + :include => :project, + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_time_entries, *args) + }} + def after_initialize if new_record? && self.activity.nil? if default_activity = TimeEntryActivity.default @@ -47,21 +52,21 @@ self.hours = nil if hours == 0 end end - + def before_validation self.project = issue.project if issue && project.nil? end - + def validate errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000) errors.add :project_id, :invalid if project.nil? errors.add :issue_id, :invalid if (issue_id && !issue) || (issue && project!=issue.project) end - + def hours=(h) write_attribute :hours, (h.is_a?(String) ? (h.to_hours || h) : h) end - + # tyear, tmonth, tweek assigned where setting spent_on attributes # these attributes make time aggregations easier def spent_on=(date) @@ -73,13 +78,15 @@ self.tmonth = spent_on ? spent_on.month : nil self.tweek = spent_on ? Date.civil(spent_on.year, spent_on.month, spent_on.day).cweek : nil end - + # Returns true if the time entry can be edited by usr, otherwise false def editable_by?(usr) (usr == user && usr.allowed_to?(:edit_own_time_entries, project)) || usr.allowed_to?(:edit_time_entries, project) end - + + # TODO: remove this method in 1.3.0 def self.visible_by(usr) + ActiveSupport::Deprecation.warn "TimeEntry.visible_by is deprecated and will be removed in Redmine 1.3.0. Use the visible scope instead." with_scope(:find => { :conditions => Project.allowed_to_condition(usr, :view_time_entries) }) do yield end diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/user.rb.svn-base --- a/app/models/.svn/text-base/user.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/user.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -76,6 +76,15 @@ before_destroy :remove_references_before_destroy + named_scope :in_group, lambda {|group| + group_id = group.is_a?(Group) ? group.id : group.to_i + { :conditions => ["#{User.table_name}.id IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id] } + } + named_scope :not_in_group, lambda {|group| + group_id = group.is_a?(Group) ? group.id : group.to_i + { :conditions => ["#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id] } + } + def before_create self.mail_notification = Setting.default_notification_option if self.mail_notification.blank? true @@ -90,6 +99,7 @@ def reload(*args) @name = nil + @projects_by_role = nil super end @@ -361,16 +371,33 @@ !roles_for_project(project).detect {|role| role.member?}.nil? end + # Returns a hash of user's projects grouped by roles + def projects_by_role + return @projects_by_role if @projects_by_role + + @projects_by_role = Hash.new {|h,k| h[k]=[]} + memberships.each do |membership| + membership.roles.each do |role| + @projects_by_role[role] << membership.project if membership.project + end + end + @projects_by_role.each do |role, projects| + projects.uniq! + end + + @projects_by_role + end + # Return true if the user is allowed to do the specified action on a specific context # Action can be: # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit') # * a permission Symbol (eg. :edit_project) # Context can be: # * a project : returns true if user is allowed to do the specified action on this project - # * a group of projects : returns true if user is allowed on every project + # * an array of projects : returns true if user is allowed on every project # * nil with options[:global] set : check if user has at least one role allowed for this action, # or falls back to Non Member / Anonymous permissions depending if the user is logged - def allowed_to?(action, context, options={}) + def allowed_to?(action, context, options={}, &block) if context && context.is_a?(Project) # No action allowed on archived projects return false unless context.active? @@ -381,12 +408,15 @@ roles = roles_for_project(context) return false unless roles - roles.detect {|role| (context.is_public? || role.member?) && role.allowed_to?(action)} - + roles.detect {|role| + (context.is_public? || role.member?) && + role.allowed_to?(action) && + (block_given? ? yield(role, self) : true) + } elsif context && context.is_a?(Array) # Authorize if user is authorized on every element of the array context.map do |project| - allowed_to?(action,project,options) + allowed_to?(action, project, options, &block) end.inject do |memo,allowed| memo && allowed end @@ -396,7 +426,11 @@ # authorize if user has at least one role that has this permission roles = memberships.collect {|m| m.roles}.flatten.uniq - roles.detect {|r| r.allowed_to?(action)} || (self.logged? ? Role.non_member.allowed_to?(action) : Role.anonymous.allowed_to?(action)) + roles << (self.logged? ? Role.non_member : Role.anonymous) + roles.detect {|role| + role.allowed_to?(action) && + (block_given? ? yield(role, self) : true) + } else false end @@ -404,8 +438,8 @@ # Is the user allowed to do the specified action on any project? # See allowed_to? for the actions and valid options. - def allowed_to_globally?(action, options) - allowed_to?(action, nil, options.reverse_merge(:global => true)) + def allowed_to_globally?(action, options, &block) + allowed_to?(action, nil, options.reverse_merge(:global => true), &block) end safe_attributes 'login', diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/wiki.rb.svn-base --- a/app/models/.svn/text-base/wiki.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/wiki.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -44,17 +44,26 @@ # find the page with the given title def find_page(title, options = {}) + @page_found_with_redirect = false title = start_page if title.blank? title = Wiki.titleize(title) - page = pages.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) + page = pages.first(:conditions => ["LOWER(title) = LOWER(?)", title]) if !page && !(options[:with_redirect] == false) # search for a redirect - redirect = redirects.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) - page = find_page(redirect.redirects_to, :with_redirect => false) if redirect + redirect = redirects.first(:conditions => ["LOWER(title) = LOWER(?)", title]) + if redirect + page = find_page(redirect.redirects_to, :with_redirect => false) + @page_found_with_redirect = true + end end page end + # Returns true if the last page was found with a redirect + def page_found_with_redirect? + @page_found_with_redirect + end + # Finds a page by title # The given string can be of one of the forms: "title" or "project:title" # Examples: diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/wiki_content.rb.svn-base --- a/app/models/.svn/text-base/wiki_content.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/wiki_content.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# RedMine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -23,28 +23,28 @@ belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' validates_presence_of :text validates_length_of :comments, :maximum => 255, :allow_nil => true - + acts_as_versioned - + def visible?(user=User.current) page.visible?(user) end - + def project page.project end - + def attachments page.nil? ? [] : page.attachments end - + # Returns the mail adresses of users that should be notified def recipients notified = project.notified_users notified.reject! {|user| !visible?(user)} notified.collect(&:mail) end - + class Version belongs_to :page, :class_name => '::WikiPage', :foreign_key => 'page_id' belongs_to :author, :class_name => '::User', :foreign_key => 'author_id' @@ -84,7 +84,7 @@ end plain end - + def text @text ||= case compression when 'gzip' @@ -92,16 +92,16 @@ else # uncompressed data data - end + end end - + def project page.project end - + # Returns the previous version or nil def previous - @previous ||= WikiContent::Version.find(:first, + @previous ||= WikiContent::Version.find(:first, :order => 'version DESC', :include => :author, :conditions => ["wiki_content_id = ? AND version < ?", wiki_content_id, version]) diff -r adc8466df404 -r 753f1380d6bc app/models/.svn/text-base/wiki_page.rb.svn-base --- a/app/models/.svn/text-base/wiki_page.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/.svn/text-base/wiki_page.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -32,6 +32,7 @@ acts_as_searchable :columns => ['title', 'text'], :include => [{:wiki => :project}, :content], + :permission => :view_wiki_pages, :project_key => "#{Wiki.table_name}.project_id" attr_accessor :redirect_existing_links @@ -41,6 +42,12 @@ validates_uniqueness_of :title, :scope => :wiki_id, :case_sensitive => false validates_associated :content + # eager load information about last updates, without loading text + named_scope :with_updated_on, { + :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on", + :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id" + } + # Wiki pages that are protected by default DEFAULT_PROTECTED_PAGES = %w(sidebar) @@ -121,6 +128,18 @@ content.text if content end + def updated_on + unless @updated_on + if time = read_attribute(:updated_on) + # content updated_on was eager loaded with the page + @updated_on = Time.parse(time) rescue nil + else + @updated_on = content && content.updated_on + end + end + @updated_on + end + # Returns true if usr is allowed to edit the page, otherwise false def editable_by?(usr) !protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project) diff -r adc8466df404 -r 753f1380d6bc app/models/attachment.rb --- a/app/models/attachment.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/attachment.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -20,7 +20,7 @@ class Attachment < ActiveRecord::Base belongs_to :container, :polymorphic => true belongs_to :author, :class_name => "User", :foreign_key => "author_id" - + validates_presence_of :container, :filename, :author validates_length_of :filename, :maximum => 255 validates_length_of :disk_filename, :maximum => 255 @@ -31,20 +31,20 @@ acts_as_activity_provider :type => 'files', :permission => :view_files, :author_key => :author_id, - :find_options => {:select => "#{Attachment.table_name}.*", + :find_options => {:select => "#{Attachment.table_name}.*", :joins => "LEFT JOIN #{Version.table_name} ON #{Attachment.table_name}.container_type='Version' AND #{Version.table_name}.id = #{Attachment.table_name}.container_id " + "LEFT JOIN #{Project.table_name} ON #{Version.table_name}.project_id = #{Project.table_name}.id OR ( #{Attachment.table_name}.container_type='Project' AND #{Attachment.table_name}.container_id = #{Project.table_name}.id )"} - + acts_as_activity_provider :type => 'documents', :permission => :view_documents, :author_key => :author_id, - :find_options => {:select => "#{Attachment.table_name}.*", + :find_options => {:select => "#{Attachment.table_name}.*", :joins => "LEFT JOIN #{Document.table_name} ON #{Attachment.table_name}.container_type='Document' AND #{Document.table_name}.id = #{Attachment.table_name}.container_id " + "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} cattr_accessor :storage_path @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files" - + def validate if self.filesize > Setting.attachment_max_size.to_i.kilobytes errors.add(:base, :too_long, :count => Setting.attachment_max_size.to_i.kilobytes) @@ -76,7 +76,7 @@ if @temp_file && (@temp_file.size > 0) logger.debug("saving '#{self.diskfile}'") md5 = Digest::MD5.new - File.open(diskfile, "wb") do |f| + File.open(diskfile, "wb") do |f| buffer = "" while (buffer = @temp_file.read(8192)) f.write(buffer) @@ -100,7 +100,7 @@ def diskfile "#{@@storage_path}/#{self.disk_filename}" end - + def increment_download increment!(:downloads) end @@ -108,27 +108,27 @@ def project container.project end - + def visible?(user=User.current) container.attachments_visible?(user) end - + def deletable?(user=User.current) container.attachments_deletable?(user) end - + def image? self.filename =~ /\.(jpe?g|gif|png)$/i end - + def is_text? Redmine::MimeType.is_type?('text', filename) end - + def is_diff? self.filename =~ /\.(patch|diff)$/i end - + # Returns true if the file is readable def readable? File.readable?(diskfile) @@ -145,7 +145,7 @@ attachments.each_value do |attachment| file = attachment['file'] next unless file && file.size > 0 - a = Attachment.create(:container => obj, + a = Attachment.create(:container => obj, :file => file, :description => attachment['description'].to_s.strip, :author => User.current) @@ -160,18 +160,18 @@ end {:files => attached, :unsaved => obj.unsaved_attachments} end - + private def sanitize_filename(value) # get only the filename, not the whole path just_filename = value.gsub(/^.*(\\|\/)/, '') # NOTE: File.basename doesn't work right with Windows paths on Unix - # INCORRECT: just_filename = File.basename(value.gsub('\\\\', '/')) + # INCORRECT: just_filename = File.basename(value.gsub('\\\\', '/')) # Finally, replace all non alphanumeric, hyphens or periods with underscore - @filename = just_filename.gsub(/[^\w\.\-]/,'_') + @filename = just_filename.gsub(/[^\w\.\-]/,'_') end - + # Returns an ASCII or hashed filename def self.disk_filename(filename) timestamp = DateTime.now.strftime("%y%m%d%H%M%S") diff -r adc8466df404 -r 753f1380d6bc app/models/change.rb --- a/app/models/change.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/change.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,30 +1,35 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Change < ActiveRecord::Base belongs_to :changeset - + validates_presence_of :changeset_id, :action, :path before_save :init_path - + def relative_path changeset.repository.relative_path(path) end - + + def before_validation + self.path = Redmine::CodesetUtil.replace_invalid_utf8(self.path) + self.from_path = Redmine::CodesetUtil.replace_invalid_utf8(self.from_path) + end + def init_path self.path ||= "" end diff -r adc8466df404 -r 753f1380d6bc app/models/changeset.rb --- a/app/models/changeset.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/changeset.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2010 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -27,23 +27,23 @@ :description => :long_comments, :datetime => :committed_on, :url => Proc.new {|o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :rev => o.identifier}} - + acts_as_searchable :columns => 'comments', :include => {:repository => :project}, :project_key => "#{Repository.table_name}.project_id", :date_column => 'committed_on' - + acts_as_activity_provider :timestamp => "#{table_name}.committed_on", :author_key => :user_id, :find_options => {:include => [:user, {:repository => :project}]} - + validates_presence_of :repository_id, :revision, :committed_on, :commit_date validates_uniqueness_of :revision, :scope => :repository_id validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true - + named_scope :visible, lambda {|*args| { :include => {:repository => :project}, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_changesets) } } - + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args) } } + def revision=(r) write_attribute :revision, (r.nil? ? nil : r.to_s) end @@ -70,25 +70,26 @@ identifier end end - + def project repository.project end - + def author user || committer.to_s.split('<').first end - + def before_create self.committer = self.class.to_utf8(self.committer, repository.repo_log_encoding) - self.comments = self.class.normalize_comments(self.comments, repository.repo_log_encoding) + self.comments = self.class.normalize_comments( + self.comments, repository.repo_log_encoding) self.user = repository.find_committer_user(self.committer) end def after_create scan_comment_for_issue_ids end - + TIMELOG_RE = / ( ((\d+)(h|hours?))((\d+)(m|min)?)? @@ -100,7 +101,7 @@ (\d+([\.,]\d+)?)h? ) /x - + def scan_comment_for_issue_ids return if comments.blank? # keywords used to reference issues @@ -108,15 +109,15 @@ ref_keywords_any = ref_keywords.delete('*') # keywords used to fix issues fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip) - + kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|") - + referenced_issues = [] - + comments.scan(/([\s\(\[,-]|^)((#{kw_regexp})[\s:]+)?(#\d+(\s+@#{TIMELOG_RE})?([\s,;&]+#\d+(\s+@#{TIMELOG_RE})?)*)(?=[[:punct:]]|\s|<|$)/i) do |match| action, refs = match[2], match[3] next unless action.present? || ref_keywords_any - + refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m| issue, hours = find_referenced_issue_by_id(m[0].to_i), m[2] if issue @@ -126,15 +127,15 @@ end end end - + referenced_issues.uniq! self.issues = referenced_issues unless referenced_issues.empty? end - + def short_comments @short_comments || split_comments.first end - + def long_comments @long_comments || split_comments.last end @@ -146,23 +147,29 @@ "r#{revision}" end end - + # Returns the previous changeset def previous - @previous ||= Changeset.find(:first, :conditions => ['id < ? AND repository_id = ?', self.id, self.repository_id], :order => 'id DESC') + @previous ||= Changeset.find(:first, + :conditions => ['id < ? AND repository_id = ?', + self.id, self.repository_id], + :order => 'id DESC') end # Returns the next changeset def next - @next ||= Changeset.find(:first, :conditions => ['id > ? AND repository_id = ?', self.id, self.repository_id], :order => 'id ASC') + @next ||= Changeset.find(:first, + :conditions => ['id > ? AND repository_id = ?', + self.id, self.repository_id], + :order => 'id ASC') end - + # Creates a new Change from it's common parameters def create_change(change) - Change.create(:changeset => self, - :action => change[:action], - :path => change[:path], - :from_path => change[:from_path], + Change.create(:changeset => self, + :action => change[:action], + :path => change[:path], + :from_path => change[:from_path], :from_revision => change[:from_revision]) end @@ -174,25 +181,27 @@ return nil if id.blank? issue = Issue.find_by_id(id.to_i, :include => :project) if issue - unless project == issue.project || project.is_ancestor_of?(issue.project) || project.is_descendant_of?(issue.project) + unless issue.project && + (project == issue.project || project.is_ancestor_of?(issue.project) || + project.is_descendant_of?(issue.project)) issue = nil end end issue end - + def fix_issue(issue) status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i) if status.nil? logger.warn("No status macthes commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger return issue end - + # the issue may have been updated by the closure of another one (eg. duplicate) issue.reload # don't change the status is the issue is closed return if issue.status && issue.status.is_closed? - + journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag)) issue.status = status unless Setting.commit_fix_done_ratio.blank? @@ -205,29 +214,30 @@ end issue end - + def log_time(issue, hours) time_entry = TimeEntry.new( :user => user, :hours => hours, :issue => issue, :spent_on => commit_date, - :comments => l(:text_time_logged_by_changeset, :value => text_tag, :locale => Setting.default_language) + :comments => l(:text_time_logged_by_changeset, :value => text_tag, + :locale => Setting.default_language) ) time_entry.activity = log_time_activity unless log_time_activity.nil? - + unless time_entry.save logger.warn("TimeEntry could not be created by changeset #{id}: #{time_entry.errors.full_messages}") if logger end time_entry end - + def log_time_activity if Setting.commit_logtime_activity_id.to_i > 0 TimeEntryActivity.find_by_id(Setting.commit_logtime_activity_id.to_i) end end - + def split_comments comments =~ /\A(.+?)\r?\n(.*)$/m @short_comments = $1 || comments @@ -242,30 +252,39 @@ Changeset.to_utf8(str.to_s.strip, encoding) end - private - def self.to_utf8(str, encoding) - return str if str.blank? - unless encoding.blank? || encoding == 'UTF-8' - begin - str = Iconv.conv('UTF-8', encoding, str) - rescue Iconv::Failure - # do nothing here - end + return str if str.nil? + str.force_encoding("ASCII-8BIT") if str.respond_to?(:force_encoding) + if str.empty? + str.force_encoding("UTF-8") if str.respond_to?(:force_encoding) + return str end + enc = encoding.blank? ? "UTF-8" : encoding if str.respond_to?(:force_encoding) - str.force_encoding('UTF-8') - if ! str.valid_encoding? - str = str.encode("US-ASCII", :invalid => :replace, - :undef => :replace, :replace => '?').encode("UTF-8") + if enc.upcase != "UTF-8" + str.force_encoding(enc) + str = str.encode("UTF-8", :invalid => :replace, + :undef => :replace, :replace => '?') + else + str.force_encoding("UTF-8") + if ! str.valid_encoding? + str = str.encode("US-ASCII", :invalid => :replace, + :undef => :replace, :replace => '?').encode("UTF-8") + end end else - # removes invalid UTF8 sequences + ic = Iconv.new('UTF-8', enc) + txtar = "" begin - str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] - rescue Iconv::InvalidEncoding - # "UTF-8//IGNORE" is not supported on some OS + txtar += ic.iconv(str) + rescue Iconv::IllegalSequence + txtar += $!.success + str = '?' + $!.failed[1,$!.failed.length] + retry + rescue + txtar += $!.success end + str = txtar end str end diff -r adc8466df404 -r 753f1380d6bc app/models/comment_observer.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/models/comment_observer.rb Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,24 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class CommentObserver < ActiveRecord::Observer + def after_create(comment) + if comment.commented.is_a?(News) && Setting.notified_events.include?('news_comment_added') + Mailer.deliver_news_comment_added(comment) + end + end +end diff -r adc8466df404 -r 753f1380d6bc app/models/custom_field.rb --- a/app/models/custom_field.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/custom_field.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -48,6 +48,35 @@ errors.add(:default_value, :invalid) unless v.valid? end + def possible_values_options(obj=nil) + case field_format + when 'user', 'version' + if obj.respond_to?(:project) && obj.project + case field_format + when 'user' + obj.project.users.sort.collect {|u| [u.to_s, u.id.to_s]} + when 'version' + obj.project.versions.sort.collect {|u| [u.to_s, u.id.to_s]} + end + elsif obj.is_a?(Array) + obj.collect {|o| possible_values_options(o)}.inject {|memo, v| memo & v} + else + [] + end + else + read_attribute :possible_values + end + end + + def possible_values(obj=nil) + case field_format + when 'user', 'version' + possible_values_options(obj).collect(&:last) + else + read_attribute :possible_values + end + end + # Makes possible_values accept a multiline string def possible_values=(arg) if arg.is_a?(Array) @@ -71,6 +100,8 @@ casted = value.to_i when 'float' casted = value.to_f + when 'user', 'version' + casted = (value.blank? ? nil : field_format.classify.constantize.find_by_id(value.to_i)) end end casted diff -r adc8466df404 -r 753f1380d6bc app/models/document.rb --- a/app/models/document.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/document.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# RedMine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -25,23 +25,23 @@ :author => Proc.new {|o| (a = o.attachments.find(:first, :order => "#{Attachment.table_name}.created_on ASC")) ? a.author : nil }, :url => Proc.new {|o| {:controller => 'documents', :action => 'show', :id => o.id}} acts_as_activity_provider :find_options => {:include => :project} - + validates_presence_of :project, :title, :category validates_length_of :title, :maximum => 60 - + named_scope :visible, lambda {|*args| { :include => :project, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_documents) } } - + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_documents, *args) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_documents, project) end - + def after_initialize if new_record? self.category ||= DocumentCategory.default end end - + def updated_on unless @updated_on a = attachments.find(:first, :order => 'created_on DESC') diff -r adc8466df404 -r 753f1380d6bc app/models/document_category.rb --- a/app/models/document_category.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/document_category.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff -r adc8466df404 -r 753f1380d6bc app/models/document_category_custom_field.rb --- a/app/models/document_category_custom_field.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/document_category_custom_field.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -20,4 +20,3 @@ :enumeration_doc_categories end end - diff -r adc8466df404 -r 753f1380d6bc app/models/document_observer.rb --- a/app/models/document_observer.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/document_observer.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff -r adc8466df404 -r 753f1380d6bc app/models/enabled_module.rb --- a/app/models/enabled_module.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/enabled_module.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,30 +1,30 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class EnabledModule < ActiveRecord::Base belongs_to :project - + validates_presence_of :name validates_uniqueness_of :name, :scope => :project_id - + after_create :module_enabled - + private - + # after_create callback used to do things when a module is enabled def module_enabled case name diff -r adc8466df404 -r 753f1380d6bc app/models/issue.rb --- a/app/models/issue.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/issue.rb Mon Jun 06 14:41:04 2011 +0100 @@ -5,19 +5,19 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Issue < ActiveRecord::Base include Redmine::SafeAttributes - + belongs_to :project belongs_to :tracker belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id' @@ -30,10 +30,10 @@ has_many :journals, :as => :journalized, :dependent => :destroy has_many :time_entries, :dependent => :delete_all has_and_belongs_to_many :changesets, :order => "#{Changeset.table_name}.committed_on ASC, #{Changeset.table_name}.id ASC" - + has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all - + acts_as_nested_set :scope => 'root_id', :dependent => :destroy acts_as_attachable :after_remove => :attachment_removed acts_as_customizable @@ -45,7 +45,7 @@ acts_as_event :title => Proc.new {|o| "#{o.tracker.name} ##{o.id} (#{o.status}): #{o.subject}"}, :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}}, :type => Proc.new {|o| 'issue' + (o.closed? ? ' closed' : '') } - + acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]}, :author_key => :author_id @@ -60,19 +60,14 @@ validates_numericality_of :estimated_hours, :allow_nil => true named_scope :visible, lambda {|*args| { :include => :project, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } } - + :conditions => Issue.visible_condition(args.shift || User.current, *args) } } + named_scope :open, :conditions => ["#{IssueStatus.table_name}.is_closed = ?", false], :include => :status named_scope :recently_updated, :order => "#{Issue.table_name}.updated_on DESC" named_scope :with_limit, lambda { |limit| { :limit => limit} } named_scope :on_active_project, :include => [:status, :project, :tracker], :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"] - named_scope :for_gantt, lambda { - { - :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version] - } - } named_scope :without_version, lambda { { @@ -91,11 +86,38 @@ after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal after_destroy :update_parent_attributes + # Returns a SQL conditions string used to find all issues visible by the specified user + def self.visible_condition(user, options={}) + Project.allowed_to_condition(user, :view_issues, options) do |role, user| + case role.issues_visibility + when 'all' + nil + when 'default' + "(#{table_name}.is_private = #{connection.quoted_false} OR #{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id = #{user.id})" + when 'own' + "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id = #{user.id})" + else + '1=0' + end + end + end + # Returns true if usr or current user is allowed to view the issue def visible?(usr=nil) - (usr || User.current).allowed_to?(:view_issues, self.project) + (usr || User.current).allowed_to?(:view_issues, self.project) do |role, user| + case role.issues_visibility + when 'all' + true + when 'default' + !self.is_private? || self.author == user || self.assigned_to == user + when 'own' + self.author == user || self.assigned_to == user + else + false + end + end end - + def after_initialize if new_record? # set default values for new records only @@ -103,12 +125,12 @@ self.priority ||= IssuePriority.default end end - + # Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields def available_custom_fields - (project && tracker) ? project.all_issue_custom_fields.select {|c| tracker.custom_fields.include? c } : [] + (project && tracker) ? (project.all_issue_custom_fields & tracker.custom_fields.all) : [] end - + def copy_from(arg) issue = arg.is_a?(Issue) ? arg : Issue.visible.find(arg) self.attributes = issue.attributes.dup.except("id", "root_id", "parent_id", "lft", "rgt", "created_on", "updated_on") @@ -116,7 +138,7 @@ self.status = issue.status self end - + # Moves/copies an issue to a new project and tracker # Returns the moved/copied issue on success, false on failure def move_to_project(*args) @@ -124,11 +146,11 @@ move_to_project_without_transaction(*args) || raise(ActiveRecord::Rollback) end || false end - + def move_to_project_without_transaction(new_project, new_tracker = nil, options = {}) options ||= {} issue = options[:copy] ? self.class.new.copy_from(self) : self - + if new_project && issue.project_id != new_project.id # delete issue relations unless Setting.cross_project_issue_relations? @@ -153,6 +175,7 @@ issue.reset_custom_values! end if options[:copy] + issue.author = User.current issue.custom_field_values = self.custom_field_values.inject({}) {|h,v| h[v.custom_field_id] = v.value; h} issue.status = if options[:attributes] && options[:attributes][:status_id] IssueStatus.find_by_id(options[:attributes][:status_id]) @@ -165,10 +188,16 @@ issue.attributes = options[:attributes] end if issue.save - unless options[:copy] + if options[:copy] + if current_journal && current_journal.notes.present? + issue.init_journal(current_journal.user, current_journal.notes) + issue.current_journal.notify = false + issue.save + end + else # Manually update project_id on related time entries TimeEntry.update_all("project_id = #{new_project.id}", {:issue_id => id}) - + issue.children.each do |child| unless child.move_to_project_without_transaction(new_project) # Move failed and transaction was rollback'd @@ -186,7 +215,7 @@ self.status = nil write_attribute(:status_id, sid) end - + def priority_id=(pid) self.priority = nil write_attribute(:priority_id, pid) @@ -198,7 +227,7 @@ @custom_field_values = nil result end - + # Overrides attributes= so that tracker_id gets assigned first def attributes_with_tracker_first=(new_attributes, *args) return if new_attributes.nil? @@ -210,11 +239,11 @@ end # Do not redefine alias chain on reload (see #4838) alias_method_chain(:attributes=, :tracker_first) unless method_defined?(:attributes_without_tracker_first=) - + def estimated_hours=(h) write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h) end - + safe_attributes 'tracker_id', 'status_id', 'parent_issue_id', @@ -232,13 +261,19 @@ 'custom_fields', 'lock_version', :if => lambda {|issue, user| issue.new_record? || user.allowed_to?(:edit_issues, issue.project) } - + safe_attributes 'status_id', 'assigned_to_id', 'fixed_version_id', 'done_ratio', :if => lambda {|issue, user| issue.new_statuses_allowed_to(user).any? } + safe_attributes 'is_private', + :if => lambda {|issue, user| + user.allowed_to?(:set_issues_private, issue.project) || + (issue.author == user && user.allowed_to?(:set_own_issues_private, issue.project)) + } + # Safely sets attributes # Should be called from controllers instead of #attributes= # attr_accessible is too rough because we still want things like @@ -246,26 +281,26 @@ # TODO: move workflow/permission checks from controllers to here def safe_attributes=(attrs, user=User.current) return unless attrs.is_a?(Hash) - + # User can change issue attributes only if he has :edit permission or if a workflow transition is allowed attrs = delete_unsafe_attributes(attrs, user) - return if attrs.empty? - + return if attrs.empty? + # Tracker must be set before since new_statuses_allowed_to depends on it. if t = attrs.delete('tracker_id') self.tracker_id = t end - + if attrs['status_id'] unless new_statuses_allowed_to(user).collect(&:id).include?(attrs['status_id'].to_i) attrs.delete('status_id') end end - + unless leaf? attrs.reject! {|k,v| %w(priority_id done_ratio start_date due_date estimated_hours).include?(k)} end - + if attrs.has_key?('parent_issue_id') if !user.allowed_to?(:manage_subtasks, project) attrs.delete('parent_issue_id') @@ -273,10 +308,10 @@ attrs.delete('parent_issue_id') unless Issue.visible(user).exists?(attrs['parent_issue_id'].to_i) end end - + self.attributes = attrs end - + def done_ratio if Issue.use_status_for_done_ratio? && status && status.default_done_ratio status.default_done_ratio @@ -292,20 +327,20 @@ def self.use_field_for_done_ratio? Setting.issue_done_ratio == 'issue_field' end - + def validate if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty? errors.add :due_date, :not_a_date end - + if self.due_date and self.start_date and self.due_date < self.start_date errors.add :due_date, :greater_than_start_date end - + if start_date && soonest_start && start_date < soonest_start errors.add :start_date, :invalid end - + if fixed_version if !assignable_versions.include?(fixed_version) errors.add :fixed_version_id, :inclusion @@ -313,14 +348,14 @@ errors.add_to_base I18n.t(:error_can_not_reopen_issue_on_closed_version) end end - + # Checks that the issue can not be added/moved to a disabled tracker if project && (tracker_id_changed? || project_id_changed?) unless project.trackers.include?(tracker) errors.add :tracker_id, :inclusion end end - + # Checks parent issue assignment if @parent_issue if @parent_issue.project_id != project_id @@ -337,7 +372,7 @@ end end end - + # Set the done_ratio using the status if that setting is set. This will keep the done_ratios # even if the user turns off the setting later def update_done_ratio_from_issue_status @@ -345,7 +380,7 @@ self.done_ratio = status.default_done_ratio end end - + def init_journal(user, notes = "") @current_journal ||= Journal.new(:journalized => self, :user => user, :notes => notes) @issue_before_change = self.clone @@ -356,12 +391,12 @@ updated_on_will_change! @current_journal end - + # Return true if the issue is closed, otherwise false def closed? self.status.is_closed? end - + # Return true if the issue is being reopened def reopened? if !new_record? && status_id_changed? @@ -385,7 +420,7 @@ end false end - + # Returns true if the issue is overdue def overdue? !due_date.nil? && (due_date < Date.today) && !status.is_closed? @@ -402,24 +437,24 @@ def children? !leaf? end - + # Users the issue can be assigned to def assignable_users users = project.assignable_users users << author if author users.uniq.sort end - + # Versions that the issue can be assigned to def assignable_versions @assignable_versions ||= (project.shared_versions.open + [Version.find_by_id(fixed_version_id_was)]).compact.uniq.sort end - + # Returns true if this issue is blocked by another issue that is still open def blocked? !relations_to.detect {|ir| ir.relation_type == 'blocks' && !ir.issue_from.closed?}.nil? end - + # Returns an array of status that user is able to apply def new_statuses_allowed_to(user, include_default=false) statuses = status.find_new_statuses_allowed_to( @@ -433,7 +468,7 @@ statuses = statuses.uniq.sort blocked? ? statuses.reject {|s| s.is_closed?} : statuses end - + # Returns the mail adresses of users that should be notified def recipients notified = project.notified_users @@ -446,7 +481,7 @@ notified.reject! {|user| !visible?(user)} notified.collect(&:mail) end - + # Returns the total number of hours spent on this issue and its descendants # # Example: @@ -455,50 +490,50 @@ def spent_hours @spent_hours ||= self_and_descendants.sum("#{TimeEntry.table_name}.hours", :include => :time_entries).to_f || 0.0 end - + def relations (relations_from + relations_to).sort end - - def all_dependent_issues(except=nil) - except ||= self + + def all_dependent_issues(except=[]) + except << self dependencies = [] relations_from.each do |relation| - if relation.issue_to && relation.issue_to != except + if relation.issue_to && !except.include?(relation.issue_to) dependencies << relation.issue_to dependencies += relation.issue_to.all_dependent_issues(except) end end dependencies end - + # Returns an array of issues that duplicate this one def duplicates relations_to.select {|r| r.relation_type == IssueRelation::TYPE_DUPLICATES}.collect {|r| r.issue_from} end - + # Returns the due date or the target due date if any # Used on gantt chart def due_before due_date || (fixed_version ? fixed_version.effective_date : nil) end - + # Returns the time scheduled for this issue. - # + # # Example: # Start Date: 2/26/09, End Date: 3/04/09 # duration => 6 def duration (start_date && due_date) ? due_date - start_date : 0 end - + def soonest_start @soonest_start ||= ( relations_to.collect{|relation| relation.successor_soonest_start} + ancestors.collect(&:soonest_start) ).compact.max end - + def reschedule_after(date) return if date.nil? if leaf? @@ -512,7 +547,7 @@ end end end - + def <=>(issue) if issue.nil? -1 @@ -522,17 +557,20 @@ (lft || 0) <=> (issue.lft || 0) end end - + def to_s "#{tracker} ##{id}: #{subject}" end - + # Returns a string of css classes that apply to the issue def css_classes s = "issue status-#{status.position} " s << "priority-#{priority.position}" s << ' closed' if closed? s << ' overdue' if overdue? + s << ' child' if child? + s << ' parent' unless leaf? + s << ' private' if is_private? s << ' created-by-me' if User.current.logged? && author_id == User.current.id s << ' assigned-to-me' if User.current.logged? && assigned_to_id == User.current.id s @@ -542,7 +580,7 @@ # Returns false if save fails def save_issue_with_child_records(params, existing_time_entry=nil) Issue.transaction do - if params[:time_entry] && params[:time_entry][:hours].present? && User.current.allowed_to?(:log_time, project) + if params[:time_entry] && (params[:time_entry][:hours].present? || params[:time_entry][:comments].present?) && User.current.allowed_to?(:log_time, project) @time_entry = existing_time_entry || TimeEntry.new @time_entry.project = project @time_entry.issue = self @@ -551,10 +589,10 @@ @time_entry.attributes = params[:time_entry] self.time_entries << @time_entry end - + if valid? attachments = Attachment.attach_files(self, params[:attachments]) - + attachments[:files].each {|a| @current_journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)} # TODO: Rename hook Redmine::Hook.call_hook(:controller_issues_edit_before_save, { :params => params, :issue => self, :time_entry => @time_entry, :journal => @current_journal}) @@ -579,7 +617,7 @@ # Update issues assigned to the version update_versions(["#{Issue.table_name}.fixed_version_id = ?", version.id]) end - + # Unassigns issues from versions that are no longer shared # after +project+ was moved def self.update_versions_from_hierarchy_change(project) @@ -597,7 +635,7 @@ nil end end - + def parent_issue_id if instance_variable_defined? :@parent_issue @parent_issue.nil? ? nil : @parent_issue.id @@ -646,17 +684,19 @@ def self.by_subproject(project) ActiveRecord::Base.connection.select_all("select s.id as status_id, s.is_closed as closed, - i.project_id as project_id, - count(i.id) as total + #{Issue.table_name}.project_id as project_id, + count(#{Issue.table_name}.id) as total from - #{Issue.table_name} i, #{IssueStatus.table_name} s + #{Issue.table_name}, #{Project.table_name}, #{IssueStatus.table_name} s where - i.status_id=s.id - and i.project_id IN (#{project.descendants.active.collect{|p| p.id}.join(',')}) - group by s.id, s.is_closed, i.project_id") if project.descendants.active.any? + #{Issue.table_name}.status_id=s.id + and #{Issue.table_name}.project_id = #{Project.table_name}.id + and #{visible_condition(User.current, :project => project, :with_subprojects => true)} + and #{Issue.table_name}.project_id <> #{project.id} + group by s.id, s.is_closed, #{Issue.table_name}.project_id") if project.descendants.active.any? end # End ReportsController extraction - + # Returns an array of projects that current user can move issues to def self.allowed_target_projects_on_move projects = [] @@ -672,9 +712,9 @@ end projects end - + private - + def update_nested_set_attributes if root_id.nil? # issue was just created @@ -721,7 +761,7 @@ end remove_instance_variable(:@parent_issue) if instance_variable_defined?(:@parent_issue) end - + def update_parent_attributes recalculate_attributes_for(parent_id) if parent_id end @@ -732,14 +772,14 @@ if priority_position = p.children.maximum("#{IssuePriority.table_name}.position", :include => :priority) p.priority = IssuePriority.find_by_position(priority_position) end - + # start/due dates = lowest/highest dates of children p.start_date = p.children.minimum(:start_date) p.due_date = p.children.maximum(:due_date) if p.start_date && p.due_date && p.due_date < p.start_date p.start_date, p.due_date = p.due_date, p.start_date end - + # done ratio = weighted average ratio of leaves unless Issue.use_status_for_done_ratio? && p.status && p.status.default_done_ratio leaves_count = p.leaves.count @@ -753,16 +793,16 @@ p.done_ratio = progress.round end end - + # estimate = sum of leaves estimates p.estimated_hours = p.leaves.sum(:estimated_hours).to_f p.estimated_hours = nil if p.estimated_hours == 0.0 - + # ancestors will be recursively updated p.save(false) end end - + # Update issues so their versions are not pointing to a # fixed_version that is not shared with the issue's project def self.update_versions(conditions=nil) @@ -782,7 +822,7 @@ end end end - + # Callback on attachment deletion def attachment_removed(obj) journal = init_journal(User.current) @@ -791,7 +831,7 @@ :old_value => obj.filename) journal.save end - + # Default assignment based on category def default_assign if assigned_to.nil? && category && category.assigned_to @@ -824,7 +864,7 @@ end end end - + # Saves the changes in a Journal # Called after_save def create_journal @@ -840,11 +880,11 @@ custom_values.each {|c| next if (@custom_values_before_change[c.custom_field_id]==c.value || (@custom_values_before_change[c.custom_field_id].blank? && c.value.blank?)) - @current_journal.details << JournalDetail.new(:property => 'cf', + @current_journal.details << JournalDetail.new(:property => 'cf', :prop_key => c.custom_field_id, :old_value => @custom_values_before_change[c.custom_field_id], :value => c.value) - } + } @current_journal.save # reset current journal init_journal @current_journal.user, @current_journal.notes @@ -863,20 +903,19 @@ select_field = options.delete(:field) joins = options.delete(:joins) - where = "i.#{select_field}=j.id" - + where = "#{Issue.table_name}.#{select_field}=j.id" + ActiveRecord::Base.connection.select_all("select s.id as status_id, s.is_closed as closed, j.id as #{select_field}, - count(i.id) as total + count(#{Issue.table_name}.id) as total from - #{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} j + #{Issue.table_name}, #{Project.table_name}, #{IssueStatus.table_name} s, #{joins} j where - i.status_id=s.id + #{Issue.table_name}.status_id=s.id and #{where} - and i.project_id=#{project.id} + and #{Issue.table_name}.project_id=#{Project.table_name}.id + and #{visible_condition(User.current, :project => project)} group by s.id, s.is_closed, j.id") end - - end diff -r adc8466df404 -r 753f1380d6bc app/models/journal.rb --- a/app/models/journal.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/journal.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -32,12 +32,16 @@ :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.issue.id, :anchor => "change-#{o.id}"}} acts_as_activity_provider :type => 'issues', - :permission => :view_issues, :author_key => :user_id, :find_options => {:include => [{:issue => :project}, :details, :user], :conditions => "#{Journal.table_name}.journalized_type = 'Issue' AND" + " (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')"} + named_scope :visible, lambda {|*args| { + :include => {:issue => :project}, + :conditions => Issue.visible_condition(args.shift || User.current, *args) + }} + def save(*args) # Do not save an empty journal (details.empty? && notes.blank?) ? false : super @@ -73,4 +77,12 @@ s << ' has-details' unless details.blank? s end + + def notify? + @notify != false + end + + def notify=(arg) + @notify = arg + end end diff -r adc8466df404 -r 753f1380d6bc app/models/journal_detail.rb --- a/app/models/journal_detail.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/journal_detail.rb Mon Jun 06 14:41:04 2011 +0100 @@ -17,4 +17,22 @@ class JournalDetail < ActiveRecord::Base belongs_to :journal + before_save :normalize_values + + private + + def normalize_values + self.value = normalize(value) + self.old_value = normalize(old_value) + end + + def normalize(v) + if v == true + "1" + elsif v == false + "0" + else + v + end + end end diff -r adc8466df404 -r 753f1380d6bc app/models/journal_observer.rb --- a/app/models/journal_observer.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/journal_observer.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,10 +17,12 @@ class JournalObserver < ActiveRecord::Observer def after_create(journal) - if Setting.notified_events.include?('issue_updated') || - (Setting.notified_events.include?('issue_note_added') && journal.notes.present?) || - (Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) || - (Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?) + if journal.notify? && + (Setting.notified_events.include?('issue_updated') || + (Setting.notified_events.include?('issue_note_added') && journal.notes.present?) || + (Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) || + (Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?) + ) Mailer.deliver_issue_edit(journal) end end diff -r adc8466df404 -r 753f1380d6bc app/models/mail_handler.rb --- a/app/models/mail_handler.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/mail_handler.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,25 +21,25 @@ class UnauthorizedAction < StandardError; end class MissingInformation < StandardError; end - + attr_reader :email, :user def self.receive(email, options={}) @@handler_options = options.dup - + @@handler_options[:issue] ||= {} - + @@handler_options[:allow_override] = @@handler_options[:allow_override].split(',').collect(&:strip) if @@handler_options[:allow_override].is_a?(String) @@handler_options[:allow_override] ||= [] # Project needs to be overridable if not specified @@handler_options[:allow_override] << 'project' unless @@handler_options[:issue].has_key?(:project) # Status overridable by default - @@handler_options[:allow_override] << 'status' unless @@handler_options[:issue].has_key?(:status) - + @@handler_options[:allow_override] << 'status' unless @@handler_options[:issue].has_key?(:status) + @@handler_options[:no_permission_check] = (@@handler_options[:no_permission_check].to_s == '1' ? true : false) super email end - + # Processes incoming emails # Returns the created object (eg. an issue, a message) or false def receive(email) @@ -78,13 +78,13 @@ User.current = @user dispatch end - + private MESSAGE_ID_RE = %r{^ custom_field_values_from_keywords(issue)} + journal.notes = cleaned_up_text_body add_attachments(issue) issue.save! logger.info "MailHandler: issue ##{issue.id} updated by #{user}" if logger && logger.info journal end - + # Reply will be added to the issue def receive_journal_reply(journal_id) journal = Journal.find_by_id(journal_id) @@ -171,17 +172,17 @@ receive_issue_reply(journal.journalized_id) end end - + # Receives a reply to a forum message def receive_message_reply(message_id) message = Message.find_by_id(message_id) if message message = message.root - + unless @@handler_options[:no_permission_check] raise UnauthorizedAction unless user.allowed_to?(:add_messages, message.project) end - + if !message.locked? reply = Message.new(:subject => email.subject.gsub(%r{^.*msg\d+\]}, '').strip, :content => cleaned_up_text_body) @@ -195,7 +196,7 @@ end end end - + def add_attachments(obj) if email.has_attachments? email.attachments.each do |attachment| @@ -206,7 +207,7 @@ end end end - + # Adds To and Cc as watchers of the given object if the sender has the # appropriate permission def add_watchers(obj) @@ -218,7 +219,7 @@ end end end - + def get_keyword(attr, options={}) @keywords ||= {} if @keywords.has_key?(attr) @@ -233,7 +234,7 @@ end end end - + # Destructively extracts the value for +attr+ in +text+ # Returns nil if no matching keyword found def extract_keyword!(text, attr, format=nil) @@ -257,12 +258,12 @@ raise MissingInformation.new('Unable to determine target project') if target.nil? target end - + # Returns a Hash of issue attributes extracted from keywords in the email body def issue_attributes_from_keywords(issue) assigned_to = (k = get_keyword(:assigned_to, :override => true)) && find_user_from_keyword(k) assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to) - + attrs = { 'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id), 'status_id' => (k = get_keyword(:status)) && IssueStatus.find_by_name(k).try(:id), @@ -275,16 +276,16 @@ 'estimated_hours' => get_keyword(:estimated_hours, :override => true), 'done_ratio' => get_keyword(:done_ratio, :override => true, :format => '(\d|10)?0') }.delete_if {|k, v| v.blank? } - + if issue.new_record? && attrs['tracker_id'].nil? attrs['tracker_id'] = issue.project.trackers.find(:first).try(:id) end - + attrs end - + # Returns a Hash of issue custom field values extracted from keywords in the email body - def custom_field_values_from_keywords(customized) + def custom_field_values_from_keywords(customized) customized.custom_field_values.inject({}) do |h, v| if value = get_keyword(v.custom_field.name, :override => true) h[v.custom_field.id.to_s] = value @@ -292,7 +293,7 @@ h end end - + # Returns the text/plain part of the email # If not found (eg. HTML-only email), returns the body with tags removed def plain_text_body @@ -313,7 +314,7 @@ @plain_text_body.strip! @plain_text_body end - + def cleaned_up_text_body cleanup_body(plain_text_body) end @@ -321,19 +322,19 @@ def self.full_sanitizer @full_sanitizer ||= HTML::FullSanitizer.new end - + # Creates a user account for the +email+ sender def self.create_user_from_email(email) addr = email.from_addrs.to_a.first if addr && !addr.spec.blank? user = User.new user.mail = addr.spec - + names = addr.name.blank? ? addr.spec.gsub(/@.*$/, '').split('.') : addr.name.split user.firstname = names.shift user.lastname = names.join(' ') user.lastname = '-' if user.lastname.blank? - + user.login = user.mail user.password = ActiveSupport::SecureRandom.hex(5) user.language = Setting.default_language @@ -342,7 +343,7 @@ end private - + # Removes the email body of text after the truncation configurations. def cleanup_body(body) delimiters = Setting.mail_handler_body_delimiters.to_s.split(/[\r\n]+/).reject(&:blank?).map {|s| Regexp.escape(s)} diff -r adc8466df404 -r 753f1380d6bc app/models/mailer.rb --- a/app/models/mailer.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/mailer.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -31,7 +31,7 @@ h = h.to_s.gsub(%r{\/.*$}, '') unless Redmine::Utils.relative_url_root.blank? { :host => h, :protocol => Setting.protocol } end - + # Builds a tmail object used to email recipients of the added issue. # # Example: @@ -85,7 +85,7 @@ subject l(:mail_subject_reminder, :count => issues.size, :days => days) body :issues => issues, :days => days, - :issues_url => url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => user.id, :sort_key => 'due_date', :sort_order => 'asc') + :issues_url => url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => user.id, :sort => 'due_date:asc') render_multipart('reminder', body) end @@ -114,11 +114,11 @@ added_to_url = '' case container.class.name when 'Project' - added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container) + added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container) added_to = "#{l(:label_project)}: #{container}" recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail} when 'Version' - added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container.project_id) + added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container.project) added_to = "#{l(:label_version)}: #{container.name}" recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail} when 'Document' @@ -133,7 +133,7 @@ :added_to_url => added_to_url render_multipart('attachments_added', body) end - + # Builds a tmail object used to email recipients of a news' project when a news item is added. # # Example: @@ -149,7 +149,25 @@ render_multipart('news_added', body) end - # Builds a tmail object used to email the recipients of the specified message that was posted. + # Builds a tmail object used to email recipients of a news' project when a news comment is added. + # + # Example: + # news_comment_added(comment) => tmail object + # Mailer.news_comment_added(comment) => sends an email to the news' project recipients + def news_comment_added(comment) + news = comment.commented + redmine_headers 'Project' => news.project.identifier + message_id comment + recipients news.recipients + cc news.watcher_recipients + subject "Re: [#{news.project.name}] #{l(:label_news)}: #{news.title}" + body :news => news, + :comment => comment, + :news_url => url_for(:controller => 'news', :action => 'show', :id => news) + render_multipart('news_comment_added', body) + end + + # Builds a tmail object used to email the recipients of the specified message that was posted. # # Example: # message_posted(message) => tmail object @@ -166,8 +184,8 @@ :message_url => url_for(message.event_url) render_multipart('message_posted', body) end - - # Builds a tmail object used to email the recipients of a project of the specified wiki content was added. + + # Builds a tmail object used to email the recipients of a project of the specified wiki content was added. # # Example: # wiki_content_added(wiki_content) => tmail object @@ -183,8 +201,8 @@ :wiki_content_url => url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title) render_multipart('wiki_content_added', body) end - - # Builds a tmail object used to email the recipients of a project of the specified wiki content was updated. + + # Builds a tmail object used to email the recipients of a project of the specified wiki content was updated. # # Example: # wiki_content_updated(wiki_content) => tmail object @@ -278,7 +296,7 @@ return false if (recipients.nil? || recipients.empty?) && (cc.nil? || cc.empty?) && (bcc.nil? || bcc.empty?) - + # Set Message-Id and References if @message_id_object mail.message_id = self.class.message_id_for(@message_id_object) @@ -286,7 +304,7 @@ if @references_objects mail.references = @references_objects.collect {|o| self.class.message_id_for(o)} end - + # Log errors when raise_delivery_errors is set to false, Rails does not raise_errors = self.class.raise_delivery_errors self.class.raise_delivery_errors = true @@ -326,10 +344,10 @@ :conditions => s.conditions ).group_by(&:assigned_to) issues_by_assignee.each do |assignee, issues| - deliver_reminder(assignee, issues, days) unless assignee.nil? + deliver_reminder(assignee, issues, days) if assignee && assignee.active? end end - + # Activates/desactivates email deliveries during +block+ def self.with_deliveries(enabled = true, &block) was_enabled = ActionMailer::Base.perform_deliveries @@ -345,7 +363,7 @@ @initial_language = current_language set_language_if_valid Setting.default_language from Setting.mail_from - + # Common headers headers 'X-Mailer' => 'Redmine', 'X-Redmine-Host' => Setting.host_name, @@ -368,11 +386,11 @@ recipients.delete(@author.mail) if recipients cc.delete(@author.mail) if cc end - + notified_users = [recipients, cc].flatten.compact.uniq # Rails would log recipients only, not cc and bcc mylogger.info "Sending email notification to: #{notified_users.join(', ')}" if mylogger - + # Blind carbon copy recipients if Setting.bcc_recipients? bcc(notified_users) @@ -388,7 +406,7 @@ # # https://rails.lighthouseapp.com/projects/8994/tickets/2338-actionmailer-mailer-views-and-content-type # https://rails.lighthouseapp.com/projects/8994/tickets/1799-actionmailer-doesnt-set-template_format-when-rendering-layouts - + def render_multipart(method_name, body) if Setting.plain_text_mail? content_type "text/plain" @@ -404,29 +422,29 @@ def self.controller_path '' end unless respond_to?('controller_path') - + # Returns a predictable Message-Id for the given object def self.message_id_for(object) # id + timestamp should reduce the odds of a collision # as far as we don't send multiple emails for the same object - timestamp = object.send(object.respond_to?(:created_on) ? :created_on : :updated_on) + timestamp = object.send(object.respond_to?(:created_on) ? :created_on : :updated_on) hash = "redmine.#{object.class.name.demodulize.underscore}-#{object.id}.#{timestamp.strftime("%Y%m%d%H%M%S")}" host = Setting.mail_from.to_s.gsub(%r{^.*@}, '') host = "#{::Socket.gethostname}.redmine" if host.empty? "<#{hash}@#{host}>" end - + private - + def message_id(object) @message_id_object = object end - + def references(object) @references_objects ||= [] @references_objects << object end - + def mylogger RAILS_DEFAULT_LOGGER end diff -r adc8466df404 -r 753f1380d6bc app/models/message.rb --- a/app/models/message.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/message.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,10 +21,10 @@ acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC" acts_as_attachable belongs_to :last_reply, :class_name => 'Message', :foreign_key => 'last_reply_id' - + acts_as_searchable :columns => ['subject', 'content'], :include => {:board => :project}, - :project_key => 'project_id', + :project_key => "#{Board.table_name}.project_id", :date_column => "#{table_name}.created_on" acts_as_event :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"}, :description => :content, @@ -35,32 +35,32 @@ acts_as_activity_provider :find_options => {:include => [{:board => :project}, :author]}, :author_key => :author_id acts_as_watchable - + attr_protected :locked, :sticky validates_presence_of :board, :subject, :content validates_length_of :subject, :maximum => 255 - + after_create :add_author_as_watcher - + named_scope :visible, lambda {|*args| { :include => {:board => :project}, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_messages) } } - + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end - + def validate_on_create # Can not reply to a locked topic errors.add_to_base 'Topic is locked' if root.locked? && self != root end - + def after_create if parent parent.reload.update_attribute(:last_reply_id, self.id) end board.reset_counters! end - + def after_update if board_id_changed? Message.update_all("board_id = #{board_id}", ["id = ? OR parent_id = ?", root.id, root.id]) @@ -68,19 +68,19 @@ Board.reset_counters!(board_id) end end - + def after_destroy board.reset_counters! end - + def sticky=(arg) write_attribute :sticky, (arg == true || arg.to_s == '1' ? 1 : 0) end - + def sticky? sticky == 1 end - + def project board.project end @@ -92,9 +92,9 @@ def destroyable_by?(usr) usr && usr.logged? && (usr.allowed_to?(:delete_messages, project) || (self.author == usr && usr.allowed_to?(:delete_own_messages, project))) end - + private - + def add_author_as_watcher Watcher.create(:watchable => self.root, :user => author) end diff -r adc8466df404 -r 753f1380d6bc app/models/message_observer.rb --- a/app/models/message_observer.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/message_observer.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff -r adc8466df404 -r 753f1380d6bc app/models/news.rb --- a/app/models/news.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/news.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -19,7 +19,7 @@ belongs_to :project belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' has_many :comments, :as => :commented, :dependent => :delete_all, :order => "created_on" - + validates_presence_of :title, :description validates_length_of :title, :maximum => 60 validates_length_of :summary, :maximum => 255 @@ -28,18 +28,27 @@ acts_as_event :url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.id}} acts_as_activity_provider :find_options => {:include => [:project, :author]}, :author_key => :author_id - - named_scope :visible, lambda {|*args| { + acts_as_watchable + + after_create :add_author_as_watcher + + named_scope :visible, lambda {|*args| { :include => :project, - :conditions => Project.allowed_to_condition(args.first || User.current, :view_news) + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_news, *args) }} - + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_news, project) end - + # returns latest news for projects visible by user def self.latest(user = User.current, count = 5) find(:all, :limit => count, :conditions => Project.allowed_to_condition(user, :view_news), :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC") end + + private + + def add_author_as_watcher + Watcher.create(:watchable => self, :user => author) + end end diff -r adc8466df404 -r 753f1380d6bc app/models/project.rb --- a/app/models/project.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/project.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -43,7 +43,7 @@ has_many :time_entries, :dependent => :delete_all has_many :queries, :dependent => :delete_all has_many :documents, :dependent => :destroy - has_many :news, :dependent => :delete_all, :include => :author + has_many :news, :dependent => :destroy, :include => :author has_many :issue_categories, :dependent => :delete_all, :order => "#{IssueCategory.table_name}.name" has_many :boards, :dependent => :destroy, :order => "position ASC" has_one :repository, :dependent => :destroy @@ -56,7 +56,7 @@ :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :association_foreign_key => 'custom_field_id' - acts_as_nested_set :order => 'name' + acts_as_nested_set :order => 'name', :dependent => :destroy acts_as_attachable :view_permission => :view_files, :delete_permission => :manage_files @@ -79,12 +79,12 @@ # reserved words validates_exclusion_of :identifier, :in => %w( new ) - before_destroy :delete_all_members, :destroy_children + before_destroy :delete_all_members named_scope :has_module, lambda { |mod| { :conditions => ["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s] } } named_scope :active, { :conditions => "#{Project.table_name}.status = #{STATUS_ACTIVE}"} named_scope :all_public, { :conditions => { :is_public => true } } - named_scope :visible, lambda { { :conditions => Project.visible_by(User.current) } } + named_scope :visible, lambda {|*args| {:conditions => Project.visible_condition(args.shift || User.current, *args) }} named_scope :visible_roots, lambda { { :conditions => Project.root_visible_by(User.current) } } def initialize(attributes = nil) @@ -116,31 +116,35 @@ # returns latest created projects # non public projects will be returned only if user is a member of those def self.latest(user=nil, count=5) - find(:all, :limit => count, :conditions => visible_by(user), :order => "created_on DESC") + visible(user).find(:all, :limit => count, :order => "created_on DESC") end - # Returns a SQL :conditions string used to find all active projects for the specified user. + def self.visible_by(user=nil) + ActiveSupport::Deprecation.warn "Project.visible_by is deprecated and will be removed in Redmine 1.3.0. Use Project.visible_condition instead." + visible_condition(user || User.current) + end + + # Returns a SQL conditions string used to find all projects visible by the specified user. # # Examples: - # Projects.visible_by(admin) => "projects.status = 1" - # Projects.visible_by(normal_user) => "projects.status = 1 AND projects.is_public = 1" - def self.visible_by(user=nil) - user ||= User.current - if user && user.admin? - return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}" - elsif user && user.memberships.any? - return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND (#{Project.table_name}.is_public = #{connection.quoted_true} or #{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')}))" - else - return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND #{Project.table_name}.is_public = #{connection.quoted_true}" - end + # Project.visible_condition(admin) => "projects.status = 1" + # Project.visible_condition(normal_user) => "((projects.status = 1) AND (projects.is_public = 1 OR projects.id IN (1,3,4)))" + # Project.visible_condition(anonymous) => "((projects.status = 1) AND (projects.is_public = 1))" + def self.visible_condition(user, options={}) + allowed_to_condition(user, :view_project, options) end def self.root_visible_by(user=nil) return "#{Project.table_name}.parent_id IS NULL AND " + visible_by(user) end + # Returns a SQL conditions string used to find all projects for which +user+ has the given +permission+ + # + # Valid options: + # * :project => limit the condition to project + # * :with_subprojects => limit the condition to project and its subprojects + # * :member => limit the condition to the user projects def self.allowed_to_condition(user, permission, options={}) - statements = [] base_statement = "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}" if perm = Redmine::AccessControl.permission(permission) unless perm.project_module.nil? @@ -153,24 +157,37 @@ project_statement << " OR (#{Project.table_name}.lft > #{options[:project].lft} AND #{Project.table_name}.rgt < #{options[:project].rgt})" if options[:with_subprojects] base_statement = "(#{project_statement}) AND (#{base_statement})" end + if user.admin? - # no restriction + base_statement else - statements << "1=0" + statement_by_role = {} + unless options[:member] + role = user.logged? ? Role.non_member : Role.anonymous + if role.allowed_to?(permission) + statement_by_role[role] = "#{Project.table_name}.is_public = #{connection.quoted_true}" + end + end if user.logged? - if Role.non_member.allowed_to?(permission) && !options[:member] - statements << "#{Project.table_name}.is_public = #{connection.quoted_true}" + user.projects_by_role.each do |role, projects| + if role.allowed_to?(permission) + statement_by_role[role] = "#{Project.table_name}.id IN (#{projects.collect(&:id).join(',')})" + end end - allowed_project_ids = user.memberships.select {|m| m.roles.detect {|role| role.allowed_to?(permission)}}.collect {|m| m.project_id} - statements << "#{Project.table_name}.id IN (#{allowed_project_ids.join(',')})" if allowed_project_ids.any? + end + if statement_by_role.empty? + "1=0" else - if Role.anonymous.allowed_to?(permission) && !options[:member] - # anonymous user allowed on public project - statements << "#{Project.table_name}.is_public = #{connection.quoted_true}" - end + if block_given? + statement_by_role.each do |role, statement| + if s = yield(role, user) + statement_by_role[role] = "(#{statement} AND (#{s}))" + end + end + end + "((#{base_statement}) AND (#{statement_by_role.values.join(' OR ')}))" end end - statements.empty? ? base_statement : "((#{base_statement}) AND (#{statements.join(' OR ')}))" end # Returns the Systemwide and project specific activities @@ -352,7 +369,7 @@ # Returns an array of the trackers used by the project and its active sub projects def rolled_up_trackers @rolled_up_trackers ||= - Tracker.find(:all, :include => :projects, + Tracker.find(:all, :joins => :projects, :select => "DISTINCT #{Tracker.table_name}.*", :conditions => ["#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ? AND #{Project.table_name}.status = #{STATUS_ACTIVE}", lft, rgt], :order => "#{Tracker.table_name}.position") @@ -378,15 +395,17 @@ # Returns a scope of the Versions used by the project def shared_versions - @shared_versions ||= + @shared_versions ||= begin + r = root? ? self : root Version.scoped(:include => :project, :conditions => "#{Project.table_name}.id = #{id}" + " OR (#{Project.table_name}.status = #{Project::STATUS_ACTIVE} AND (" + " #{Version.table_name}.sharing = 'system'" + - " OR (#{Project.table_name}.lft >= #{root.lft} AND #{Project.table_name}.rgt <= #{root.rgt} AND #{Version.table_name}.sharing = 'tree')" + + " OR (#{Project.table_name}.lft >= #{r.lft} AND #{Project.table_name}.rgt <= #{r.rgt} AND #{Version.table_name}.sharing = 'tree')" + " OR (#{Project.table_name}.lft < #{lft} AND #{Project.table_name}.rgt > #{rgt} AND #{Version.table_name}.sharing IN ('hierarchy', 'descendants'))" + " OR (#{Project.table_name}.lft > #{lft} AND #{Project.table_name}.rgt < #{rgt} AND #{Version.table_name}.sharing = 'hierarchy')" + "))") + end end # Returns a hash of project users grouped by role @@ -428,6 +447,12 @@ def all_issue_custom_fields @all_issue_custom_fields ||= (IssueCustomField.for_all + issue_custom_fields).uniq.sort end + + # Returns an array of all custom fields enabled for project time entries + # (explictly associated custom fields and custom fields enabled for all projects) + def all_time_entry_custom_fields + @all_time_entry_custom_fields ||= (TimeEntryCustomField.for_all + time_entry_custom_fields).uniq.sort + end def project self @@ -521,10 +546,7 @@ def enabled_module_names=(module_names) if module_names && module_names.is_a?(Array) module_names = module_names.collect(&:to_s).reject(&:blank?) - # remove disabled modules - enabled_modules.each {|mod| mod.destroy unless module_names.include?(mod.name)} - # add new modules - module_names.reject {|name| module_enabled?(name)}.each {|name| enabled_modules << EnabledModule.new(:name => name)} + self.enabled_modules = module_names.collect {|name| enabled_modules.detect {|mod| mod.name == name} || EnabledModule.new(:name => name)} else enabled_modules.clear end @@ -633,13 +655,6 @@ private - # Destroys children before destroying self - def destroy_children - children.each do |child| - child.destroy - end - end - # Copies wiki from +project+ def copy_wiki(project) # Check that the source project has a wiki first @@ -686,6 +701,7 @@ end # Copies issues from +project+ + # Note: issues assigned to a closed version won't be copied due to validation rules def copy_issues(project) # Stores the source issue id as a key and the copied issues as the # value. Used to map the two togeather for issue relations. diff -r adc8466df404 -r 753f1380d6bc app/models/query.rb --- a/app/models/query.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/query.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,24 +1,24 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -class QueryColumn +class QueryColumn attr_accessor :name, :sortable, :groupable, :default_order include Redmine::I18n - + def initialize(name, options={}) self.name = name self.sortable = options[:sortable] @@ -29,19 +29,23 @@ self.default_order = options[:default_order] @caption_key = options[:caption] || "field_#{name}" end - + def caption l(@caption_key) end - + # Returns true if the column is sortable, otherwise false def sortable? !sortable.nil? end - + def value(issue) issue.send name end + + def css_classes + name + end end class QueryCustomFieldColumn < QueryColumn @@ -55,37 +59,41 @@ self.groupable ||= false @cf = custom_field end - + def caption @cf.name end - + def custom_field @cf end - + def value(issue) cv = issue.custom_values.detect {|v| v.custom_field_id == @cf.id} cv && @cf.cast_value(cv.value) end + + def css_classes + @css_classes ||= "#{name} #{@cf.field_format}" + end end class Query < ActiveRecord::Base class StatementInvalid < ::ActiveRecord::StatementInvalid end - + belongs_to :project belongs_to :user serialize :filters serialize :column_names serialize :sort_criteria, Array - + attr_protected :project_id, :user_id - + validates_presence_of :name, :on => :save validates_length_of :name, :maximum => 255 - - @@operators = { "=" => :label_equals, + + @@operators = { "=" => :label_equals, "!" => :label_not_equals, "o" => :label_open_issues, "c" => :label_closed_issues, @@ -105,7 +113,7 @@ "!~" => :label_not_contains } cattr_reader :operators - + @@operators_by_filter_type = { :list => [ "=", "!" ], :list_status => [ "o", "=", "!", "c", "*" ], :list_optional => [ "=", "!", "!*", "*" ], @@ -137,27 +145,27 @@ QueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on", :default_order => 'desc'), ] cattr_reader :available_columns - + def initialize(attributes = nil) super attributes self.filters ||= { 'status_id' => {:operator => "o", :values => [""]} } end - + def after_initialize # Store the fact that project is nil (used in #editable_by?) @is_for_all = project.nil? end - + def validate filters.each_key do |field| - errors.add label_for(field), :blank unless + errors.add label_for(field), :blank unless # filter requires one or more values - (values_for(field) and !values_for(field).first.blank?) or + (values_for(field) and !values_for(field).first.blank?) or # filter doesn't require any value ["o", "c", "!*", "*", "t", "w"].include? operator_for(field) end if filters end - + def editable_by?(user) return false unless user # Admin can edit them all and regular users can edit their private queries @@ -165,23 +173,23 @@ # Members can not edit public queries that are for all project (only admin is allowed to) is_public && !@is_for_all && user.allowed_to?(:manage_public_queries, project) end - + def available_filters return @available_filters if @available_filters - + trackers = project.nil? ? Tracker.find(:all, :order => 'position') : project.rolled_up_trackers - - @available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } }, - "tracker_id" => { :type => :list, :order => 2, :values => trackers.collect{|s| [s.name, s.id.to_s] } }, + + @available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } }, + "tracker_id" => { :type => :list, :order => 2, :values => trackers.collect{|s| [s.name, s.id.to_s] } }, "priority_id" => { :type => :list, :order => 3, :values => IssuePriority.all.collect{|s| [s.name, s.id.to_s] } }, - "subject" => { :type => :text, :order => 8 }, - "created_on" => { :type => :date_past, :order => 9 }, + "subject" => { :type => :text, :order => 8 }, + "created_on" => { :type => :date_past, :order => 9 }, "updated_on" => { :type => :date_past, :order => 10 }, "start_date" => { :type => :date, :order => 11 }, "due_date" => { :type => :date, :order => 12 }, "estimated_hours" => { :type => :integer, :order => 13 }, "done_ratio" => { :type => :integer, :order => 14 }} - + user_values = [] user_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? if project @@ -191,7 +199,7 @@ if all_projects.any? # members of visible projects user_values += User.active.find(:all, :conditions => ["#{User.table_name}.id IN (SELECT DISTINCT user_id FROM members WHERE project_id IN (?))", all_projects.collect(&:id)]).sort.collect{|s| [s.name, s.id.to_s] } - + # project filter project_values = [] Project.project_tree(all_projects) do |p, level| @@ -209,21 +217,26 @@ role_values = Role.givable.collect {|r| [r.name, r.id.to_s] } @available_filters["assigned_to_role"] = { :type => :list_optional, :order => 7, :values => role_values } unless role_values.empty? - + if User.current.logged? @available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] } end - + if project # project specific filters - unless @project.issue_categories.empty? - @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } } + categories = @project.issue_categories.all + unless categories.empty? + @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => categories.collect{|s| [s.name, s.id.to_s] } } end - unless @project.shared_versions.empty? - @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.shared_versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } + versions = @project.shared_versions.all + unless versions.empty? + @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } end - unless @project.descendants.active.empty? - @available_filters["subproject_id"] = { :type => :list_subprojects, :order => 13, :values => @project.descendants.visible.collect{|s| [s.name, s.id.to_s] } } + unless @project.leaf? + subprojects = @project.descendants.visible.all + unless subprojects.empty? + @available_filters["subproject_id"] = { :type => :list_subprojects, :order => 13, :values => subprojects.collect{|s| [s.name, s.id.to_s] } } + end end add_custom_fields_filters(@project.all_issue_custom_fields) else @@ -236,7 +249,7 @@ end @available_filters end - + def add_filter(field, operator, values) # values must be an array return unless values and values.is_a? Array # and !values.first.empty? @@ -251,7 +264,7 @@ filters[field] = {:operator => operator, :values => values } end end - + def add_short_filter(field, expression) return unless expression parms = expression.scan(/^(o|c|!\*|!|\*)?(.*)$/).first @@ -266,19 +279,19 @@ end end end - + def has_filter?(field) filters and filters[field] end - + def operator_for(field) has_filter?(field) ? filters[field][:operator] : nil end - + def values_for(field) has_filter?(field) ? filters[field][:values] : nil end - + def label_for(field) label = available_filters[field][:name] if available_filters.has_key?(field) label ||= field.gsub(/\_id$/, "") @@ -290,17 +303,17 @@ @available_columns += (project ? project.all_issue_custom_fields : IssueCustomField.find(:all) - ).collect {|cf| QueryCustomFieldColumn.new(cf) } + ).collect {|cf| QueryCustomFieldColumn.new(cf) } end def self.available_columns=(v) self.available_columns = (v) end - + def self.add_available_column(column) self.available_columns << (column) if column.is_a?(QueryColumn) end - + # Returns an array of columns that can be used to group the results def groupable_columns available_columns.select {|c| c.groupable} @@ -313,7 +326,7 @@ h }) end - + def columns if has_default_columns? available_columns.select do |c| @@ -325,7 +338,7 @@ column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact end end - + def column_names=(names) if names names = names.select {|n| n.is_a?(Symbol) || !n.blank? } @@ -337,15 +350,15 @@ end write_attribute(:column_names, names) end - + def has_column?(column) column_names && column_names.include?(column.name) end - + def has_default_columns? column_names.nil? || column_names.empty? end - + def sort_criteria=(arg) c = [] if arg.is_a?(Hash) @@ -354,19 +367,19 @@ c = arg.select {|k,o| !k.to_s.blank?}.slice(0,3).collect {|k,o| [k.to_s, o == 'desc' ? o : 'asc']} write_attribute(:sort_criteria, c) end - + def sort_criteria read_attribute(:sort_criteria) || [] end - + def sort_criteria_key(arg) sort_criteria && sort_criteria[arg] && sort_criteria[arg].first end - + def sort_criteria_order(arg) sort_criteria && sort_criteria[arg] && sort_criteria[arg].last end - + # Returns the SQL sort order that should be prepended for grouping def group_by_sort_order if grouped? && (column = group_by_column) @@ -375,20 +388,20 @@ "#{column.sortable} #{column.default_order}" end end - + # Returns true if the query is a grouped query def grouped? !group_by_column.nil? end - + def group_by_column groupable_columns.detect {|c| c.groupable && c.name.to_s == group_by} end - + def group_by_statement group_by_column.try(:groupable) end - + def project_statement project_clauses = [] if project && !@project.descendants.active.empty? @@ -411,8 +424,7 @@ elsif project project_clauses << "#{Project.table_name}.id = %d" % project.id end - project_clauses << Project.allowed_to_condition(User.current, :view_issues) - project_clauses.join(' AND ') + project_clauses.any? ? project_clauses.join(' AND ') : nil end def statement @@ -423,12 +435,12 @@ v = values_for(field).clone next unless v and !v.empty? operator = operator_for(field) - + # "me" value subsitution if %w(assigned_to_id author_id watcher_id).include?(field) v.push(User.current.logged? ? User.current.id.to_s : "0") if v.delete("me") end - + sql = '' if field =~ /^cf_(\d+)$/ # custom field @@ -460,7 +472,7 @@ end user_ids.flatten.uniq.compact }.sort.collect(&:to_s) - + sql << '(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')' elsif field == "assigned_to_role" # named field @@ -474,14 +486,14 @@ roles = Role.givable.find_all_by_id(v) end roles ||= [] - + members_of_roles = roles.inject([]) {|user_ids, role| if role && role.members user_ids << role.members.collect(&:user_id) end user_ids.flatten.uniq.compact }.sort.collect(&:to_s) - + sql << '(' + sql_for_field("assigned_to_id", operator, members_of_roles, Issue.table_name, "assigned_to_id", false) + ')' else # regular field @@ -490,26 +502,29 @@ sql << '(' + sql_for_field(field, operator, v, db_table, db_field) + ')' end filters_clauses << sql - + end if filters and valid? - - (filters_clauses << project_statement).join(' AND ') + + filters_clauses << project_statement + filters_clauses.reject!(&:blank?) + + filters_clauses.any? ? filters_clauses.join(' AND ') : nil end - + # Returns the issue count def issue_count Issue.count(:include => [:status, :project], :conditions => statement) rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + # Returns the issue count by group or nil if query is not grouped def issue_count_by_group r = nil if grouped? begin # Rails will raise an (unexpected) RecordNotFound if there's only a nil group value - r = Issue.count(:group => group_by_statement, :include => [:status, :project], :conditions => statement) + r = Issue.visible.count(:group => group_by_statement, :include => [:status, :project], :conditions => statement) rescue ActiveRecord::RecordNotFound r = {nil => issue_count} end @@ -522,14 +537,14 @@ rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + # Returns the issues # Valid options are :order, :offset, :limit, :include, :conditions def issues(options={}) order_option = [group_by_sort_order, options[:order]].reject {|s| s.blank?}.join(',') order_option = nil if order_option.blank? - - Issue.find :all, :include => ([:status, :project] + (options[:include] || [])).uniq, + + Issue.visible.find :all, :include => ([:status, :project] + (options[:include] || [])).uniq, :conditions => Query.merge_conditions(statement, options[:conditions]), :order => order_option, :limit => options[:limit], @@ -541,7 +556,7 @@ # Returns the journals # Valid options are :order, :offset, :limit def journals(options={}) - Journal.find :all, :include => [:details, :user, {:issue => [:project, :author, :tracker, :status]}], + Journal.visible.find :all, :include => [:details, :user, {:issue => [:project, :author, :tracker, :status]}], :conditions => statement, :order => options[:order], :limit => options[:limit], @@ -549,18 +564,18 @@ rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + # Returns the versions # Valid options are :conditions def versions(options={}) - Version.find :all, :include => :project, + Version.visible.find :all, :include => :project, :conditions => Query.merge_conditions(project_statement, options[:conditions]) rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end - + private - + # Helper method to generate the WHERE sql for a +field+, +operator+ and a +value+ def sql_for_field(field, operator, value, db_table, db_field, is_custom_filter=false) sql = '' @@ -608,24 +623,22 @@ when "t" sql = date_range_clause(db_table, db_field, 0, 0) when "w" - from = l(:general_first_day_of_week) == '7' ? - # week starts on sunday - ((Date.today.cwday == 7) ? Time.now.at_beginning_of_day : Time.now.at_beginning_of_week - 1.day) : - # week starts on monday (Rails default) - Time.now.at_beginning_of_week - sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)] + first_day_of_week = l(:general_first_day_of_week).to_i + day_of_week = Date.today.cwday + days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week) + sql = date_range_clause(db_table, db_field, - days_ago, - days_ago + 6) when "~" sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'" when "!~" sql = "LOWER(#{db_table}.#{db_field}) NOT LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'" end - + return sql end - + def add_custom_fields_filters(custom_fields) @available_filters ||= {} - + custom_fields.select(&:is_filter?).each do |field| case field.field_format when "text" @@ -636,13 +649,16 @@ options = { :type => :date, :order => 20 } when "bool" options = { :type => :list, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]], :order => 20 } + when "user", "version" + next unless project + options = { :type => :list_optional, :values => field.possible_values_options(project), :order => 20} else options = { :type => :string, :order => 20 } end @available_filters["cf_#{field.id}"] = options.merge({ :name => field.name }) end end - + # Returns a SQL clause for a date or datetime field. def date_range_clause(table, field, from, to) s = [] diff -r adc8466df404 -r 753f1380d6bc app/models/repository.rb --- a/app/models/repository.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,35 +1,45 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Repository < ActiveRecord::Base include Redmine::Ciphering - + belongs_to :project has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC" has_many :changes, :through => :changesets - + + serialize :extra_info + # Raw SQL to delete changesets and changes in the database # has_many :changesets, :dependent => :destroy is too slow for big repositories before_destroy :clear_changesets - + validates_length_of :password, :maximum => 255, :allow_nil => true # Checks if the SCM is enabled when creating a repository validate_on_create { |r| r.errors.add(:type, :invalid) unless Setting.enabled_scm.include?(r.class.name.demodulize) } + def self.human_attribute_name(attribute_key_name) + attr_name = attribute_key_name + if attr_name == "log_encoding" + attr_name = "commit_logs_encoding" + end + super(attr_name) + end + # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) @@ -39,11 +49,11 @@ def root_url=(arg) write_attribute(:root_url, arg ? arg.to_s.strip : nil) end - + def password read_ciphered_attribute(:password) end - + def password=(arg) write_ciphered_attribute(:password, arg) end @@ -63,6 +73,17 @@ self.class.scm_name end + def merge_extra_info(arg) + h = extra_info || {} + return h if arg.nil? + h.merge!(arg) + write_attribute(:extra_info, h) + end + + def report_last_commit + true + end + def supports_cat? scm.supports_cat? end @@ -70,11 +91,19 @@ def supports_annotate? scm.supports_annotate? end - + + def supports_all_revisions? + true + end + + def supports_directory_revisions? + false + end + def entry(path=nil, identifier=nil) scm.entry(path, identifier) end - + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end @@ -90,15 +119,15 @@ def default_branch scm.default_branch end - + def properties(path, identifier=nil) scm.properties(path, identifier) end - + def cat(path, identifier=nil) scm.cat(path, identifier) end - + def diff(path, rev, rev_to) scm.diff(path, rev, rev_to) end @@ -118,7 +147,8 @@ # Finds and returns a revision with a number or the beginning of a hash def find_changeset_by_name(name) return nil if name.blank? - changesets.find(:first, :conditions => (name.match(/^\d*$/) ? ["revision = ?", name.to_s] : ["revision LIKE ?", name + '%'])) + changesets.find(:first, :conditions => (name.match(/^\d*$/) ? + ["revision = ?", name.to_s] : ["revision LIKE ?", name + '%'])) end def latest_changeset @@ -129,26 +159,32 @@ # Default behaviour is to search in cached changesets def latest_changesets(path, rev, limit=10) if path.blank? - changesets.find(:all, :include => :user, - :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", - :limit => limit) + changesets.find( + :all, + :include => :user, + :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", + :limit => limit) else - changes.find(:all, :include => {:changeset => :user}, - :conditions => ["path = ?", path.with_leading_slash], - :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", - :limit => limit).collect(&:changeset) + changes.find( + :all, + :include => {:changeset => :user}, + :conditions => ["path = ?", path.with_leading_slash], + :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", + :limit => limit + ).collect(&:changeset) end end - + def scan_changesets_for_issue_ids self.changesets.each(&:scan_comment_for_issue_ids) end # Returns an array of committers usernames and associated user_id def committers - @committers ||= Changeset.connection.select_rows("SELECT DISTINCT committer, user_id FROM #{Changeset.table_name} WHERE repository_id = #{id}") + @committers ||= Changeset.connection.select_rows( + "SELECT DISTINCT committer, user_id FROM #{Changeset.table_name} WHERE repository_id = #{id}") end - + # Maps committers username to a user ids def committer_ids=(h) if h.is_a?(Hash) @@ -156,17 +192,19 @@ new_user_id = h[committer] if new_user_id && (new_user_id.to_i != user_id.to_i) new_user_id = (new_user_id.to_i > 0 ? new_user_id.to_i : nil) - Changeset.update_all("user_id = #{ new_user_id.nil? ? 'NULL' : new_user_id }", ["repository_id = ? AND committer = ?", id, committer]) + Changeset.update_all( + "user_id = #{ new_user_id.nil? ? 'NULL' : new_user_id }", + ["repository_id = ? AND committer = ?", id, committer]) end end - @committers = nil + @committers = nil @found_committer_users = nil true else false end end - + # Returns the Redmine User corresponding to the given +committer+ # It will return nil if the committer is not yet mapped and if no User # with the same username or email was found @@ -174,7 +212,7 @@ unless committer.blank? @found_committer_users ||= {} return @found_committer_users[committer] if @found_committer_users.has_key?(committer) - + user = nil c = changesets.find(:first, :conditions => {:committer => committer}, :include => :user) if c && c.user @@ -218,7 +256,7 @@ def self.scm_name 'Abstract' end - + def self.available_scm subclasses.collect {|klass| [klass.scm_name, klass.name]} end @@ -238,7 +276,7 @@ ret = "" begin ret = self.scm_adapter_class.client_command if self.scm_adapter_class - rescue Redmine::Scm::Adapters::CommandFailed => e + rescue Exception => e logger.error "scm: error during get command: #{e.message}" end ret @@ -248,7 +286,7 @@ ret = "" begin ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class - rescue Redmine::Scm::Adapters::CommandFailed => e + rescue Exception => e logger.error "scm: error during get version string: #{e.message}" end ret @@ -257,8 +295,8 @@ def self.scm_available ret = false begin - ret = self.scm_adapter_class.client_available if self.scm_adapter_class - rescue Redmine::Scm::Adapters::CommandFailed => e + ret = self.scm_adapter_class.client_available if self.scm_adapter_class + rescue Exception => e logger.error "scm: error during get scm available: #{e.message}" end ret @@ -272,7 +310,7 @@ root_url.strip! true end - + def clear_changesets cs, ch, ci = Changeset.table_name, Change.table_name, "#{table_name_prefix}changesets_issues#{table_name_suffix}" connection.delete("DELETE FROM #{ch} WHERE #{ch}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/entries --- a/app/models/repository/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/models/repository +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/models/repository http://redmine.rubyforge.org/svn -2011-03-01T10:27:30.170724Z -4982 +2011-05-19T22:58:38.288878Z +5858 tmaruyama @@ -32,10 +32,10 @@ -2011-03-03T11:40:18.000000Z -b9f366b3f38bd42149e09e6ed0ed8755 -2011-02-28T12:09:32.515358Z -4962 +2011-06-06T13:18:33.000000Z +2950b88e98eed34048c7f007a8f7fb21 +2011-05-12T07:15:39.740135Z +5751 tmaruyama has-props @@ -58,7 +58,7 @@ -3358 +3397 bazaar.rb file @@ -66,10 +66,10 @@ -2011-03-03T11:40:18.000000Z -d6a230859a110341c0d64865248db51c -2011-03-01T10:27:30.170724Z -4982 +2011-06-06T13:18:33.000000Z +d4568bac22baf6121a7ea8883b59c58c +2011-05-18T07:11:41.584755Z +5834 tmaruyama has-props @@ -92,7 +92,7 @@ -3877 +3916 git.rb file @@ -100,10 +100,10 @@ -2011-03-03T11:40:18.000000Z -dfce133f28c5c85af0740865903d5320 -2011-03-01T05:14:03.146872Z -4975 +2011-06-06T13:18:33.000000Z +b12b4b9bf012b30d430ddabf73eb4962 +2011-05-19T22:58:38.288878Z +5858 tmaruyama has-props @@ -126,7 +126,7 @@ -4245 +5213 mercurial.rb file @@ -134,10 +134,10 @@ -2011-03-03T11:40:18.000000Z -d659744391dfa02d54481d4dd8752930 -2011-03-01T05:14:03.146872Z -4975 +2011-06-06T13:18:33.000000Z +c02be7ffad5bb78d0cc096a7f88c45fc +2011-05-12T07:52:14.217350Z +5756 tmaruyama has-props @@ -160,7 +160,7 @@ -4022 +5217 filesystem.rb file @@ -168,10 +168,10 @@ -2011-03-03T11:40:18.000000Z -994276556c2feac05d149117eea01413 -2011-03-01T05:14:03.146872Z -4975 +2011-06-06T13:18:33.000000Z +a2170e3cb1161b0ea016414b724438f0 +2011-05-12T07:41:08.517774Z +5754 tmaruyama has-props @@ -194,7 +194,7 @@ -1451 +1491 cvs.rb file @@ -202,10 +202,10 @@ -2011-03-03T11:40:18.000000Z -5eecf7abe1216489c4d1c2f6a107c36b -2011-03-01T10:27:30.170724Z -4982 +2011-06-06T13:18:33.000000Z +a5f74e302ec1d5d5d4a0677b6537c399 +2011-05-12T07:16:20.564757Z +5753 tmaruyama has-props @@ -228,7 +228,7 @@ -6952 +7651 darcs.rb file @@ -236,10 +236,10 @@ -2011-03-03T11:40:18.000000Z -03bf9128aa09528266cabb76ff0808a9 -2011-03-01T10:27:30.170724Z -4982 +2011-06-06T13:18:33.000000Z +5fa94193e544a8c9d94a2cb501a273de +2011-05-12T07:41:29.099665Z +5755 tmaruyama has-props @@ -262,5 +262,5 @@ -3826 +3881 diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/text-base/bazaar.rb.svn-base --- a/app/models/repository/.svn/text-base/bazaar.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/text-base/bazaar.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,12 +21,12 @@ attr_protected :root_url validates_presence_of :url, :log_encoding - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - "log_encoding" => "Commit messages encoding", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -47,19 +47,24 @@ full_path = File.join(root_url, e.path) e.size = File.stat(full_path).size if File.file?(full_path) end - c = Change.find(:first, - :include => :changeset, - :conditions => ["#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", e.lastrev.revision, id], - :order => "#{Changeset.table_name}.revision DESC") + c = Change.find( + :first, + :include => :changeset, + :conditions => [ + "#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", + e.lastrev.revision, + id + ], + :order => "#{Changeset.table_name}.revision DESC") if c e.lastrev.identifier = c.changeset.revision - e.lastrev.name = c.changeset.revision - e.lastrev.author = c.changeset.committer + e.lastrev.name = c.changeset.revision + e.lastrev.author = c.changeset.committer end end end end - + def fetch_changesets scm_info = scm.info if scm_info @@ -76,18 +81,18 @@ revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true) transaction do revisions.reverse_each do |revision| - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :committer => revision.author, + changeset = Changeset.create(:repository => self, + :revision => revision.identifier, + :committer => revision.author, :committed_on => revision.time, - :scmid => revision.scmid, - :comments => revision.message) - + :scmid => revision.scmid, + :comments => revision.message) + revision.paths.each do |change| Change.create(:changeset => changeset, - :action => change[:action], - :path => change[:path], - :revision => change[:revision]) + :action => change[:action], + :path => change[:path], + :revision => change[:revision]) end end end unless revisions.nil? diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/text-base/cvs.rb.svn-base --- a/app/models/repository/.svn/text-base/cvs.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/text-base/cvs.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,13 +21,14 @@ class Repository::Cvs < Repository validates_presence_of :url, :root_url, :log_encoding - ATTRIBUTE_KEY_NAMES = { - "url" => "CVSROOT", - "root_url" => "Module", - "log_encoding" => "Commit messages encoding", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "root_url" + attr_name = "cvsroot" + elsif attr_name == "url" + attr_name = "cvs_module" + end + super(attr_name) end def self.scm_adapter_class @@ -42,53 +43,71 @@ rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, rev.nil? ? nil : rev.committed_on) end - + def entries(path=nil, identifier=nil) - rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) + rev = nil + if ! identifier.nil? + rev = changesets.find_by_revision(identifier) + return nil if rev.nil? + end entries = scm.entries(path, rev.nil? ? nil : rev.committed_on) if entries entries.each() do |entry| - unless entry.lastrev.nil? || entry.lastrev.identifier - change=changes.find_by_revision_and_path( entry.lastrev.revision, scm.with_leading_slash(entry.path) ) + if ( ! entry.lastrev.nil? ) && ( ! entry.lastrev.revision.nil? ) + change=changes.find_by_revision_and_path( + entry.lastrev.revision, + scm.with_leading_slash(entry.path) ) if change - entry.lastrev.identifier=change.changeset.revision - entry.lastrev.author=change.changeset.committer - entry.lastrev.revision=change.revision - entry.lastrev.branch=change.branch + entry.lastrev.identifier = change.changeset.revision + entry.lastrev.revision = change.changeset.revision + entry.lastrev.author = change.changeset.committer + # entry.lastrev.branch = change.branch end end end end entries end - + def cat(path, identifier=nil) - rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) + rev = nil + if ! identifier.nil? + rev = changesets.find_by_revision(identifier) + return nil if rev.nil? + end scm.cat(path, rev.nil? ? nil : rev.committed_on) end - + + def annotate(path, identifier=nil) + rev = nil + if ! identifier.nil? + rev = changesets.find_by_revision(identifier) + return nil if rev.nil? + end + scm.annotate(path, rev.nil? ? nil : rev.committed_on) + end + def diff(path, rev, rev_to) - #convert rev to revision. CVS can't handle changesets here + # convert rev to revision. CVS can't handle changesets here diff=[] - changeset_from=changesets.find_by_revision(rev) - if rev_to.to_i > 0 - changeset_to=changesets.find_by_revision(rev_to) + changeset_from = changesets.find_by_revision(rev) + if rev_to.to_i > 0 + changeset_to = changesets.find_by_revision(rev_to) end changeset_from.changes.each() do |change_from| - - revision_from=nil - revision_to=nil - - revision_from=change_from.revision if path.nil? || (change_from.path.starts_with? scm.with_leading_slash(path)) - + revision_from = nil + revision_to = nil + if path.nil? || (change_from.path.starts_with? scm.with_leading_slash(path)) + revision_from = change_from.revision + end if revision_from if changeset_to changeset_to.changes.each() do |change_to| - revision_to=change_to.revision if change_to.path==change_from.path + revision_to = change_to.revision if change_to.path == change_from.path end end unless revision_to - revision_to=scm.get_previous_revision(revision_from) + revision_to = scm.get_previous_revision(revision_from) end file_diff = scm.diff(change_from.path, revision_from, revision_to) diff = diff + file_diff unless file_diff.nil? @@ -96,79 +115,85 @@ end return diff end - + def fetch_changesets # some nifty bits to introduce a commit-id with cvs - # natively cvs doesn't provide any kind of changesets, there is only a revision per file. + # natively cvs doesn't provide any kind of changesets, + # there is only a revision per file. # we now take a guess using the author, the commitlog and the commit-date. - - # last one is the next step to take. the commit-date is not equal for all + + # last one is the next step to take. the commit-date is not equal for all # commits in one changeset. cvs update the commit-date when the *,v file was touched. so # we use a small delta here, to merge all changes belonging to _one_ changeset - time_delta=10.seconds - + time_delta = 10.seconds fetch_since = latest_changeset ? latest_changeset.committed_on : nil transaction do tmp_rev_num = 1 - scm.revisions('', fetch_since, nil, :with_paths => true) do |revision| + scm.revisions('', fetch_since, nil, :log_encoding => repo_log_encoding) do |revision| # only add the change to the database, if it doen't exists. the cvs log - # is not exclusive at all. + # is not exclusive at all. tmp_time = revision.time.clone unless changes.find_by_path_and_revision( - scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) + scm.with_leading_slash(revision.paths[0][:path]), + revision.paths[0][:revision] + ) cmt = Changeset.normalize_comments(revision.message, repo_log_encoding) - cs = changesets.find(:first, :conditions=>{ - :committed_on=>tmp_time - time_delta .. tmp_time + time_delta, - :committer=>revision.author, - :comments=>cmt - }) - - # create a new changeset.... + author_utf8 = Changeset.to_utf8(revision.author, repo_log_encoding) + cs = changesets.find( + :first, + :conditions => { + :committed_on => tmp_time - time_delta .. tmp_time + time_delta, + :committer => author_utf8, + :comments => cmt + } + ) + # create a new changeset.... unless cs # we use a temporaray revision number here (just for inserting) # later on, we calculate a continous positive number tmp_time2 = tmp_time.clone.gmtime - branch = revision.paths[0][:branch] - scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S") - cs = Changeset.create(:repository => self, - :revision => "tmp#{tmp_rev_num}", - :scmid => scmid, - :committer => revision.author, + branch = revision.paths[0][:branch] + scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S") + cs = Changeset.create(:repository => self, + :revision => "tmp#{tmp_rev_num}", + :scmid => scmid, + :committer => revision.author, :committed_on => tmp_time, - :comments => revision.message) + :comments => revision.message) tmp_rev_num += 1 end - - #convert CVS-File-States to internal Action-abbrevations - #default action is (M)odified - action="M" - if revision.paths[0][:action]=="Exp" && revision.paths[0][:revision]=="1.1" - action="A" #add-action always at first revision (= 1.1) - elsif revision.paths[0][:action]=="dead" - action="D" #dead-state is similar to Delete + # convert CVS-File-States to internal Action-abbrevations + # default action is (M)odified + action = "M" + if revision.paths[0][:action] == "Exp" && revision.paths[0][:revision] == "1.1" + action = "A" # add-action always at first revision (= 1.1) + elsif revision.paths[0][:action] == "dead" + action = "D" # dead-state is similar to Delete end - - Change.create(:changeset => cs, - :action => action, - :path => scm.with_leading_slash(revision.paths[0][:path]), - :revision => revision.paths[0][:revision], - :branch => revision.paths[0][:branch] - ) + Change.create( + :changeset => cs, + :action => action, + :path => scm.with_leading_slash(revision.paths[0][:path]), + :revision => revision.paths[0][:revision], + :branch => revision.paths[0][:branch] + ) end end - + # Renumber new changesets in chronological order changesets.find( - :all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'" + :all, + :order => 'committed_on ASC, id ASC', + :conditions => "revision LIKE 'tmp%'" ).each do |changeset| changeset.update_attribute :revision, next_revision_number end end # transaction @current_revision_number = nil end - + private - + # Returns the next revision number to assign to a CVS changeset def next_revision_number # Need to retrieve existing revision numbers to sort them as integers diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/text-base/darcs.rb.svn-base --- a/app/models/repository/.svn/text-base/darcs.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/text-base/darcs.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -20,12 +20,12 @@ class Repository::Darcs < Repository validates_presence_of :url, :log_encoding - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - "log_encoding" => "Commit messages encoding", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -36,34 +36,44 @@ 'Darcs' end + def supports_directory_revisions? + true + end + def entry(path=nil, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, patch.nil? ? nil : patch.scmid) end - + def entries(path=nil, identifier=nil) - patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) + patch = nil + if ! identifier.nil? + patch = changesets.find_by_revision(identifier) + return nil if patch.nil? + end entries = scm.entries(path, patch.nil? ? nil : patch.scmid) if entries entries.each do |entry| # Search the DB for the entry's last change - changeset = changesets.find_by_scmid(entry.lastrev.scmid) if entry.lastrev && !entry.lastrev.scmid.blank? + if entry.lastrev && !entry.lastrev.scmid.blank? + changeset = changesets.find_by_scmid(entry.lastrev.scmid) + end if changeset entry.lastrev.identifier = changeset.revision - entry.lastrev.name = changeset.revision - entry.lastrev.time = changeset.committed_on - entry.lastrev.author = changeset.committer + entry.lastrev.name = changeset.revision + entry.lastrev.time = changeset.committed_on + entry.lastrev.author = changeset.committer end end end entries end - + def cat(path, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier.to_s) scm.cat(path, patch.nil? ? nil : patch.scmid) end - + def diff(path, rev, rev_to) patch_from = changesets.find_by_revision(rev) return nil if patch_from.nil? @@ -73,25 +83,24 @@ end patch_from ? scm.diff(path, patch_from.scmid, patch_to ? patch_to.scmid : nil) : nil end - + def fetch_changesets scm_info = scm.info if scm_info db_last_id = latest_changeset ? latest_changeset.scmid : nil - next_rev = latest_changeset ? latest_changeset.revision.to_i + 1 : 1 + next_rev = latest_changeset ? latest_changeset.revision.to_i + 1 : 1 # latest revision in the repository - scm_revision = scm_info.lastrev.scmid + scm_revision = scm_info.lastrev.scmid unless changesets.find_by_scmid(scm_revision) revisions = scm.revisions('', db_last_id, nil, :with_path => true) transaction do revisions.reverse_each do |revision| - changeset = Changeset.create(:repository => self, - :revision => next_rev, - :scmid => revision.scmid, - :committer => revision.author, + changeset = Changeset.create(:repository => self, + :revision => next_rev, + :scmid => revision.scmid, + :committer => revision.author, :committed_on => revision.time, - :comments => revision.message) - + :comments => revision.message) revision.paths.each do |change| changeset.create_change(change) end diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/text-base/filesystem.rb.svn-base --- a/app/models/repository/.svn/text-base/filesystem.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/text-base/filesystem.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # FileSystem adapter # File written by Paul Rivier, at Demotera. @@ -8,12 +8,12 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -24,11 +24,12 @@ attr_protected :root_url validates_presence_of :url - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "root_directory" + end + super(attr_name) end def self.scm_adapter_class @@ -39,6 +40,10 @@ 'Filesystem' end + def supports_all_revisions? + false + end + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end @@ -46,5 +51,4 @@ def fetch_changesets nil end - end diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/text-base/git.rb.svn-base --- a/app/models/repository/.svn/text-base/git.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/text-base/git.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,17 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2007 Patrick Aljord patcito@ŋmail.com +# # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,11 +22,12 @@ attr_protected :root_url validates_presence_of :url - ATTRIBUTE_KEY_NAMES = { - "url" => "Path to repository", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -36,6 +38,21 @@ 'Git' end + def report_last_commit + extra_report_last_commit + end + + def extra_report_last_commit + return false if extra_info.nil? + v = extra_info["extra_report_last_commit"] + return false if v.nil? + v.to_s != '0' + end + + def supports_directory_revisions? + true + end + def repo_log_encoding 'UTF-8' end @@ -65,63 +82,92 @@ changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"]) end - # With SCM's that have a sequential commit numbering, redmine is able to be - # clever and only fetch changesets going forward from the most recent one - # it knows about. However, with git, you never know if people have merged - # commits into the middle of the repository history, so we should parse - # the entire log. Since it's way too slow for large repositories, we only - # parse 1 week before the last known commit. + def entries(path=nil, identifier=nil) + scm.entries(path, + identifier, + options = {:report_last_commit => extra_report_last_commit}) + end + + # In Git and Mercurial, revisions are not in date order. + # Redmine Mercurial fixed issues. + # * Redmine Takes Too Long On Large Mercurial Repository + # http://www.redmine.org/issues/3449 + # * Sorting for changesets might go wrong on Mercurial repos + # http://www.redmine.org/issues/3567 + # + # Database revision column is text, so Redmine can not sort by revision. + # Mercurial has revision number, and revision number guarantees revision order. + # Redmine Mercurial model stored revisions ordered by database id to database. + # So, Redmine Mercurial model can use correct ordering revisions. + # + # Redmine Mercurial adapter uses "hg log -r 0:tip --limit 10" + # to get limited revisions from old to new. + # But, Git 1.7.3.4 does not support --reverse with -n or --skip. + # # The repository can still be fully reloaded by calling #clear_changesets # before fetching changesets (eg. for offline resync) def fetch_changesets - c = changesets.find(:first, :order => 'committed_on DESC') - since = (c ? c.committed_on - 7.days : nil) - - revisions = scm.revisions('', nil, nil, :all => true, :since => since) - return if revisions.nil? || revisions.empty? - - recent_changesets = changesets.find(:all, :conditions => ['committed_on >= ?', since]) - - # Clean out revisions that are no longer in git - recent_changesets.each {|c| c.destroy unless revisions.detect {|r| r.scmid.to_s == c.scmid.to_s }} - - # Subtract revisions that redmine already knows about - recent_revisions = recent_changesets.map{|c| c.scmid} - revisions.reject!{|r| recent_revisions.include?(r.scmid)} - - # Save the remaining ones to the database - unless revisions.nil? - revisions.each do |rev| + scm_brs = branches + return if scm_brs.nil? || scm_brs.empty? + h1 = extra_info || {} + h = h1.dup + h["branches"] ||= {} + h["db_consistent"] ||= {} + if changesets.count == 0 + h["db_consistent"]["ordering"] = 1 + merge_extra_info(h) + self.save + elsif ! h["db_consistent"].has_key?("ordering") + h["db_consistent"]["ordering"] = 0 + merge_extra_info(h) + self.save + end + scm_brs.each do |br| + from_scmid = nil + from_scmid = h["branches"][br]["last_scmid"] if h["branches"][br] + h["branches"][br] ||= {} + scm.revisions('', from_scmid, br, {:reverse => true}) do |rev| + db_rev = find_changeset_by_name(rev.revision) transaction do - changeset = Changeset.new( - :repository => self, - :revision => rev.identifier, - :scmid => rev.scmid, - :committer => rev.author, - :committed_on => rev.time, - :comments => rev.message) - - if changeset.save - rev.paths.each do |file| - Change.create( - :changeset => changeset, - :action => file[:action], - :path => file[:path]) - end + if db_rev.nil? + save_revision(rev) end + h["branches"][br]["last_scmid"] = rev.scmid + merge_extra_info(h) + self.save end end end end + def save_revision(rev) + changeset = Changeset.new( + :repository => self, + :revision => rev.identifier, + :scmid => rev.scmid, + :committer => rev.author, + :committed_on => rev.time, + :comments => rev.message + ) + if changeset.save + rev.paths.each do |file| + Change.create( + :changeset => changeset, + :action => file[:action], + :path => file[:path]) + end + end + end + private :save_revision + def latest_changesets(path,rev,limit=10) revisions = scm.revisions(path, nil, rev, :limit => limit, :all => false) return [] if revisions.nil? || revisions.empty? changesets.find( - :all, + :all, :conditions => [ - "scmid IN (?)", + "scmid IN (?)", revisions.map!{|c| c.scmid} ], :order => 'committed_on DESC' diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/text-base/mercurial.rb.svn-base --- a/app/models/repository/.svn/text-base/mercurial.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/text-base/mercurial.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -26,11 +26,12 @@ FETCH_AT_ONCE = 100 # number of changesets to fetch at once - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -41,6 +42,10 @@ 'Mercurial' end + def supports_directory_revisions? + true + end + def repo_log_encoding 'UTF-8' end @@ -55,14 +60,6 @@ changeset.scmid end - def branches - nil - end - - def tags - nil - end - def diff_format_revisions(cs, cs_to, sep=':') super(cs, cs_to, ' ') end @@ -80,19 +77,50 @@ end # Returns the latest changesets for +path+; sorted by revision number - # Default behavior is to search in cached changesets + # + # Because :order => 'id DESC' is defined at 'has_many', + # there is no need to set 'order'. + # But, MySQL test fails. + # Sqlite3 and PostgreSQL pass. + # Is this MySQL bug? def latest_changesets(path, rev, limit=10) - if path.blank? - changesets.find(:all, :include => :user, :limit => limit) - else - changesets.find(:all, :select => "DISTINCT #{Changeset.table_name}.*", - :joins => :changes, - :conditions => ["#{Change.table_name}.path = ? OR #{Change.table_name}.path LIKE ? ESCAPE ?", - path.with_leading_slash, - "#{path.with_leading_slash.gsub(/[%_\\]/) { |s| "\\#{s}" }}/%", '\\'], - :include => :user, :limit => limit) + changesets.find(:all, :include => :user, + :conditions => latest_changesets_cond(path, rev, limit), + :limit => limit, :order => "#{Changeset.table_name}.id DESC") + end + + def latest_changesets_cond(path, rev, limit) + cond, args = [], [] + if scm.branchmap.member? rev + # Mercurial named branch is *stable* in each revision. + # So, named branch can be stored in database. + # Mercurial provides *bookmark* which is equivalent with git branch. + # But, bookmark is not implemented. + cond << "#{Changeset.table_name}.scmid IN (?)" + # Revisions in root directory and sub directory are not equal. + # So, in order to get correct limit, we need to get all revisions. + # But, it is very heavy. + # Mercurial does not treat direcotry. + # So, "hg log DIR" is very heavy. + branch_limit = path.blank? ? limit : ( limit * 5 ) + args << scm.nodes_in_branch(rev, :limit => branch_limit) + elsif last = rev ? find_changeset_by_name(scm.tagmap[rev] || rev) : nil + cond << "#{Changeset.table_name}.id <= ?" + args << last.id end + + unless path.blank? + cond << "EXISTS (SELECT * FROM #{Change.table_name} + WHERE #{Change.table_name}.changeset_id = #{Changeset.table_name}.id + AND (#{Change.table_name}.path = ? + OR #{Change.table_name}.path LIKE ? ESCAPE ?))" + args << path.with_leading_slash + args << "#{path.with_leading_slash.gsub(/[%_\\]/) { |s| "\\#{s}" }}/%" << '\\' + end + + [cond.join(' AND '), *args] unless cond.empty? end + private :latest_changesets_cond def fetch_changesets scm_rev = scm.info.lastrev.revision.to_i diff -r adc8466df404 -r 753f1380d6bc app/models/repository/.svn/text-base/subversion.rb.svn-base --- a/app/models/repository/.svn/text-base/subversion.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/.svn/text-base/subversion.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -30,6 +30,10 @@ 'Subversion' end + def supports_directory_revisions? + true + end + def repo_log_encoding 'UTF-8' end @@ -38,12 +42,12 @@ revisions = scm.revisions(path, rev, nil, :limit => limit) revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : [] end - + # Returns a path relative to the url of the repository def relative_path(path) path.gsub(Regexp.new("^\/?#{Regexp.escape(relative_url)}"), '') end - + def fetch_changesets scm_info = scm.info if scm_info @@ -60,12 +64,12 @@ revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true) revisions.reverse_each do |revision| transaction do - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :committer => revision.author, + changeset = Changeset.create(:repository => self, + :revision => revision.identifier, + :committer => revision.author, :committed_on => revision.time, - :comments => revision.message) - + :comments => revision.message) + revision.paths.each do |change| changeset.create_change(change) end unless changeset.new_record? @@ -76,9 +80,9 @@ end end end - + private - + # Returns the relative url of the repository # Eg: root_url = file:///var/svn/foo # url = file:///var/svn/foo/bar diff -r adc8466df404 -r 753f1380d6bc app/models/repository/bazaar.rb --- a/app/models/repository/bazaar.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/bazaar.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,12 +21,12 @@ attr_protected :root_url validates_presence_of :url, :log_encoding - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - "log_encoding" => "Commit messages encoding", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -47,19 +47,24 @@ full_path = File.join(root_url, e.path) e.size = File.stat(full_path).size if File.file?(full_path) end - c = Change.find(:first, - :include => :changeset, - :conditions => ["#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", e.lastrev.revision, id], - :order => "#{Changeset.table_name}.revision DESC") + c = Change.find( + :first, + :include => :changeset, + :conditions => [ + "#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", + e.lastrev.revision, + id + ], + :order => "#{Changeset.table_name}.revision DESC") if c e.lastrev.identifier = c.changeset.revision - e.lastrev.name = c.changeset.revision - e.lastrev.author = c.changeset.committer + e.lastrev.name = c.changeset.revision + e.lastrev.author = c.changeset.committer end end end end - + def fetch_changesets scm_info = scm.info if scm_info @@ -76,18 +81,18 @@ revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true) transaction do revisions.reverse_each do |revision| - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :committer => revision.author, + changeset = Changeset.create(:repository => self, + :revision => revision.identifier, + :committer => revision.author, :committed_on => revision.time, - :scmid => revision.scmid, - :comments => revision.message) - + :scmid => revision.scmid, + :comments => revision.message) + revision.paths.each do |change| Change.create(:changeset => changeset, - :action => change[:action], - :path => change[:path], - :revision => change[:revision]) + :action => change[:action], + :path => change[:path], + :revision => change[:revision]) end end end unless revisions.nil? diff -r adc8466df404 -r 753f1380d6bc app/models/repository/cvs.rb --- a/app/models/repository/cvs.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/cvs.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,13 +21,14 @@ class Repository::Cvs < Repository validates_presence_of :url, :root_url, :log_encoding - ATTRIBUTE_KEY_NAMES = { - "url" => "CVSROOT", - "root_url" => "Module", - "log_encoding" => "Commit messages encoding", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "root_url" + attr_name = "cvsroot" + elsif attr_name == "url" + attr_name = "cvs_module" + end + super(attr_name) end def self.scm_adapter_class @@ -42,53 +43,71 @@ rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, rev.nil? ? nil : rev.committed_on) end - + def entries(path=nil, identifier=nil) - rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) + rev = nil + if ! identifier.nil? + rev = changesets.find_by_revision(identifier) + return nil if rev.nil? + end entries = scm.entries(path, rev.nil? ? nil : rev.committed_on) if entries entries.each() do |entry| - unless entry.lastrev.nil? || entry.lastrev.identifier - change=changes.find_by_revision_and_path( entry.lastrev.revision, scm.with_leading_slash(entry.path) ) + if ( ! entry.lastrev.nil? ) && ( ! entry.lastrev.revision.nil? ) + change=changes.find_by_revision_and_path( + entry.lastrev.revision, + scm.with_leading_slash(entry.path) ) if change - entry.lastrev.identifier=change.changeset.revision - entry.lastrev.author=change.changeset.committer - entry.lastrev.revision=change.revision - entry.lastrev.branch=change.branch + entry.lastrev.identifier = change.changeset.revision + entry.lastrev.revision = change.changeset.revision + entry.lastrev.author = change.changeset.committer + # entry.lastrev.branch = change.branch end end end end entries end - + def cat(path, identifier=nil) - rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) + rev = nil + if ! identifier.nil? + rev = changesets.find_by_revision(identifier) + return nil if rev.nil? + end scm.cat(path, rev.nil? ? nil : rev.committed_on) end - + + def annotate(path, identifier=nil) + rev = nil + if ! identifier.nil? + rev = changesets.find_by_revision(identifier) + return nil if rev.nil? + end + scm.annotate(path, rev.nil? ? nil : rev.committed_on) + end + def diff(path, rev, rev_to) - #convert rev to revision. CVS can't handle changesets here + # convert rev to revision. CVS can't handle changesets here diff=[] - changeset_from=changesets.find_by_revision(rev) - if rev_to.to_i > 0 - changeset_to=changesets.find_by_revision(rev_to) + changeset_from = changesets.find_by_revision(rev) + if rev_to.to_i > 0 + changeset_to = changesets.find_by_revision(rev_to) end changeset_from.changes.each() do |change_from| - - revision_from=nil - revision_to=nil - - revision_from=change_from.revision if path.nil? || (change_from.path.starts_with? scm.with_leading_slash(path)) - + revision_from = nil + revision_to = nil + if path.nil? || (change_from.path.starts_with? scm.with_leading_slash(path)) + revision_from = change_from.revision + end if revision_from if changeset_to changeset_to.changes.each() do |change_to| - revision_to=change_to.revision if change_to.path==change_from.path + revision_to = change_to.revision if change_to.path == change_from.path end end unless revision_to - revision_to=scm.get_previous_revision(revision_from) + revision_to = scm.get_previous_revision(revision_from) end file_diff = scm.diff(change_from.path, revision_from, revision_to) diff = diff + file_diff unless file_diff.nil? @@ -96,79 +115,85 @@ end return diff end - + def fetch_changesets # some nifty bits to introduce a commit-id with cvs - # natively cvs doesn't provide any kind of changesets, there is only a revision per file. + # natively cvs doesn't provide any kind of changesets, + # there is only a revision per file. # we now take a guess using the author, the commitlog and the commit-date. - - # last one is the next step to take. the commit-date is not equal for all + + # last one is the next step to take. the commit-date is not equal for all # commits in one changeset. cvs update the commit-date when the *,v file was touched. so # we use a small delta here, to merge all changes belonging to _one_ changeset - time_delta=10.seconds - + time_delta = 10.seconds fetch_since = latest_changeset ? latest_changeset.committed_on : nil transaction do tmp_rev_num = 1 - scm.revisions('', fetch_since, nil, :with_paths => true) do |revision| + scm.revisions('', fetch_since, nil, :log_encoding => repo_log_encoding) do |revision| # only add the change to the database, if it doen't exists. the cvs log - # is not exclusive at all. + # is not exclusive at all. tmp_time = revision.time.clone unless changes.find_by_path_and_revision( - scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) + scm.with_leading_slash(revision.paths[0][:path]), + revision.paths[0][:revision] + ) cmt = Changeset.normalize_comments(revision.message, repo_log_encoding) - cs = changesets.find(:first, :conditions=>{ - :committed_on=>tmp_time - time_delta .. tmp_time + time_delta, - :committer=>revision.author, - :comments=>cmt - }) - - # create a new changeset.... + author_utf8 = Changeset.to_utf8(revision.author, repo_log_encoding) + cs = changesets.find( + :first, + :conditions => { + :committed_on => tmp_time - time_delta .. tmp_time + time_delta, + :committer => author_utf8, + :comments => cmt + } + ) + # create a new changeset.... unless cs # we use a temporaray revision number here (just for inserting) # later on, we calculate a continous positive number tmp_time2 = tmp_time.clone.gmtime - branch = revision.paths[0][:branch] - scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S") - cs = Changeset.create(:repository => self, - :revision => "tmp#{tmp_rev_num}", - :scmid => scmid, - :committer => revision.author, + branch = revision.paths[0][:branch] + scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S") + cs = Changeset.create(:repository => self, + :revision => "tmp#{tmp_rev_num}", + :scmid => scmid, + :committer => revision.author, :committed_on => tmp_time, - :comments => revision.message) + :comments => revision.message) tmp_rev_num += 1 end - - #convert CVS-File-States to internal Action-abbrevations - #default action is (M)odified - action="M" - if revision.paths[0][:action]=="Exp" && revision.paths[0][:revision]=="1.1" - action="A" #add-action always at first revision (= 1.1) - elsif revision.paths[0][:action]=="dead" - action="D" #dead-state is similar to Delete + # convert CVS-File-States to internal Action-abbrevations + # default action is (M)odified + action = "M" + if revision.paths[0][:action] == "Exp" && revision.paths[0][:revision] == "1.1" + action = "A" # add-action always at first revision (= 1.1) + elsif revision.paths[0][:action] == "dead" + action = "D" # dead-state is similar to Delete end - - Change.create(:changeset => cs, - :action => action, - :path => scm.with_leading_slash(revision.paths[0][:path]), - :revision => revision.paths[0][:revision], - :branch => revision.paths[0][:branch] - ) + Change.create( + :changeset => cs, + :action => action, + :path => scm.with_leading_slash(revision.paths[0][:path]), + :revision => revision.paths[0][:revision], + :branch => revision.paths[0][:branch] + ) end end - + # Renumber new changesets in chronological order changesets.find( - :all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'" + :all, + :order => 'committed_on ASC, id ASC', + :conditions => "revision LIKE 'tmp%'" ).each do |changeset| changeset.update_attribute :revision, next_revision_number end end # transaction @current_revision_number = nil end - + private - + # Returns the next revision number to assign to a CVS changeset def next_revision_number # Need to retrieve existing revision numbers to sort them as integers diff -r adc8466df404 -r 753f1380d6bc app/models/repository/darcs.rb --- a/app/models/repository/darcs.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/darcs.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -20,12 +20,12 @@ class Repository::Darcs < Repository validates_presence_of :url, :log_encoding - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - "log_encoding" => "Commit messages encoding", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -36,34 +36,44 @@ 'Darcs' end + def supports_directory_revisions? + true + end + def entry(path=nil, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, patch.nil? ? nil : patch.scmid) end - + def entries(path=nil, identifier=nil) - patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) + patch = nil + if ! identifier.nil? + patch = changesets.find_by_revision(identifier) + return nil if patch.nil? + end entries = scm.entries(path, patch.nil? ? nil : patch.scmid) if entries entries.each do |entry| # Search the DB for the entry's last change - changeset = changesets.find_by_scmid(entry.lastrev.scmid) if entry.lastrev && !entry.lastrev.scmid.blank? + if entry.lastrev && !entry.lastrev.scmid.blank? + changeset = changesets.find_by_scmid(entry.lastrev.scmid) + end if changeset entry.lastrev.identifier = changeset.revision - entry.lastrev.name = changeset.revision - entry.lastrev.time = changeset.committed_on - entry.lastrev.author = changeset.committer + entry.lastrev.name = changeset.revision + entry.lastrev.time = changeset.committed_on + entry.lastrev.author = changeset.committer end end end entries end - + def cat(path, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier.to_s) scm.cat(path, patch.nil? ? nil : patch.scmid) end - + def diff(path, rev, rev_to) patch_from = changesets.find_by_revision(rev) return nil if patch_from.nil? @@ -73,25 +83,24 @@ end patch_from ? scm.diff(path, patch_from.scmid, patch_to ? patch_to.scmid : nil) : nil end - + def fetch_changesets scm_info = scm.info if scm_info db_last_id = latest_changeset ? latest_changeset.scmid : nil - next_rev = latest_changeset ? latest_changeset.revision.to_i + 1 : 1 + next_rev = latest_changeset ? latest_changeset.revision.to_i + 1 : 1 # latest revision in the repository - scm_revision = scm_info.lastrev.scmid + scm_revision = scm_info.lastrev.scmid unless changesets.find_by_scmid(scm_revision) revisions = scm.revisions('', db_last_id, nil, :with_path => true) transaction do revisions.reverse_each do |revision| - changeset = Changeset.create(:repository => self, - :revision => next_rev, - :scmid => revision.scmid, - :committer => revision.author, + changeset = Changeset.create(:repository => self, + :revision => next_rev, + :scmid => revision.scmid, + :committer => revision.author, :committed_on => revision.time, - :comments => revision.message) - + :comments => revision.message) revision.paths.each do |change| changeset.create_change(change) end diff -r adc8466df404 -r 753f1380d6bc app/models/repository/filesystem.rb --- a/app/models/repository/filesystem.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/filesystem.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # FileSystem adapter # File written by Paul Rivier, at Demotera. @@ -8,12 +8,12 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -24,11 +24,12 @@ attr_protected :root_url validates_presence_of :url - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "root_directory" + end + super(attr_name) end def self.scm_adapter_class @@ -39,6 +40,10 @@ 'Filesystem' end + def supports_all_revisions? + false + end + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end @@ -46,5 +51,4 @@ def fetch_changesets nil end - end diff -r adc8466df404 -r 753f1380d6bc app/models/repository/git.rb --- a/app/models/repository/git.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/git.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,17 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2007 Patrick Aljord patcito@ŋmail.com +# # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -21,11 +22,12 @@ attr_protected :root_url validates_presence_of :url - ATTRIBUTE_KEY_NAMES = { - "url" => "Path to repository", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -36,6 +38,21 @@ 'Git' end + def report_last_commit + extra_report_last_commit + end + + def extra_report_last_commit + return false if extra_info.nil? + v = extra_info["extra_report_last_commit"] + return false if v.nil? + v.to_s != '0' + end + + def supports_directory_revisions? + true + end + def repo_log_encoding 'UTF-8' end @@ -65,63 +82,92 @@ changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"]) end - # With SCM's that have a sequential commit numbering, redmine is able to be - # clever and only fetch changesets going forward from the most recent one - # it knows about. However, with git, you never know if people have merged - # commits into the middle of the repository history, so we should parse - # the entire log. Since it's way too slow for large repositories, we only - # parse 1 week before the last known commit. + def entries(path=nil, identifier=nil) + scm.entries(path, + identifier, + options = {:report_last_commit => extra_report_last_commit}) + end + + # In Git and Mercurial, revisions are not in date order. + # Redmine Mercurial fixed issues. + # * Redmine Takes Too Long On Large Mercurial Repository + # http://www.redmine.org/issues/3449 + # * Sorting for changesets might go wrong on Mercurial repos + # http://www.redmine.org/issues/3567 + # + # Database revision column is text, so Redmine can not sort by revision. + # Mercurial has revision number, and revision number guarantees revision order. + # Redmine Mercurial model stored revisions ordered by database id to database. + # So, Redmine Mercurial model can use correct ordering revisions. + # + # Redmine Mercurial adapter uses "hg log -r 0:tip --limit 10" + # to get limited revisions from old to new. + # But, Git 1.7.3.4 does not support --reverse with -n or --skip. + # # The repository can still be fully reloaded by calling #clear_changesets # before fetching changesets (eg. for offline resync) def fetch_changesets - c = changesets.find(:first, :order => 'committed_on DESC') - since = (c ? c.committed_on - 7.days : nil) - - revisions = scm.revisions('', nil, nil, :all => true, :since => since) - return if revisions.nil? || revisions.empty? - - recent_changesets = changesets.find(:all, :conditions => ['committed_on >= ?', since]) - - # Clean out revisions that are no longer in git - recent_changesets.each {|c| c.destroy unless revisions.detect {|r| r.scmid.to_s == c.scmid.to_s }} - - # Subtract revisions that redmine already knows about - recent_revisions = recent_changesets.map{|c| c.scmid} - revisions.reject!{|r| recent_revisions.include?(r.scmid)} - - # Save the remaining ones to the database - unless revisions.nil? - revisions.each do |rev| + scm_brs = branches + return if scm_brs.nil? || scm_brs.empty? + h1 = extra_info || {} + h = h1.dup + h["branches"] ||= {} + h["db_consistent"] ||= {} + if changesets.count == 0 + h["db_consistent"]["ordering"] = 1 + merge_extra_info(h) + self.save + elsif ! h["db_consistent"].has_key?("ordering") + h["db_consistent"]["ordering"] = 0 + merge_extra_info(h) + self.save + end + scm_brs.each do |br| + from_scmid = nil + from_scmid = h["branches"][br]["last_scmid"] if h["branches"][br] + h["branches"][br] ||= {} + scm.revisions('', from_scmid, br, {:reverse => true}) do |rev| + db_rev = find_changeset_by_name(rev.revision) transaction do - changeset = Changeset.new( - :repository => self, - :revision => rev.identifier, - :scmid => rev.scmid, - :committer => rev.author, - :committed_on => rev.time, - :comments => rev.message) - - if changeset.save - rev.paths.each do |file| - Change.create( - :changeset => changeset, - :action => file[:action], - :path => file[:path]) - end + if db_rev.nil? + save_revision(rev) end + h["branches"][br]["last_scmid"] = rev.scmid + merge_extra_info(h) + self.save end end end end + def save_revision(rev) + changeset = Changeset.new( + :repository => self, + :revision => rev.identifier, + :scmid => rev.scmid, + :committer => rev.author, + :committed_on => rev.time, + :comments => rev.message + ) + if changeset.save + rev.paths.each do |file| + Change.create( + :changeset => changeset, + :action => file[:action], + :path => file[:path]) + end + end + end + private :save_revision + def latest_changesets(path,rev,limit=10) revisions = scm.revisions(path, nil, rev, :limit => limit, :all => false) return [] if revisions.nil? || revisions.empty? changesets.find( - :all, + :all, :conditions => [ - "scmid IN (?)", + "scmid IN (?)", revisions.map!{|c| c.scmid} ], :order => 'committed_on DESC' diff -r adc8466df404 -r 753f1380d6bc app/models/repository/mercurial.rb --- a/app/models/repository/mercurial.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/mercurial.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -26,11 +26,12 @@ FETCH_AT_ONCE = 100 # number of changesets to fetch at once - ATTRIBUTE_KEY_NAMES = { - "url" => "Root directory", - } def self.human_attribute_name(attribute_key_name) - ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + attr_name = attribute_key_name + if attr_name == "url" + attr_name = "path_to_repository" + end + super(attr_name) end def self.scm_adapter_class @@ -41,6 +42,10 @@ 'Mercurial' end + def supports_directory_revisions? + true + end + def repo_log_encoding 'UTF-8' end @@ -55,15 +60,6 @@ changeset.scmid end - def branches - bras = scm.branches - bras.sort unless bras == %w|default| - end - - def tags - nil - end - def diff_format_revisions(cs, cs_to, sep=':') super(cs, cs_to, ' ') end @@ -81,19 +77,50 @@ end # Returns the latest changesets for +path+; sorted by revision number - # Default behavior is to search in cached changesets + # + # Because :order => 'id DESC' is defined at 'has_many', + # there is no need to set 'order'. + # But, MySQL test fails. + # Sqlite3 and PostgreSQL pass. + # Is this MySQL bug? def latest_changesets(path, rev, limit=10) - if path.blank? - changesets.find(:all, :include => :user, :limit => limit) - else - changesets.find(:all, :select => "DISTINCT #{Changeset.table_name}.*", - :joins => :changes, - :conditions => ["#{Change.table_name}.path = ? OR #{Change.table_name}.path LIKE ? ESCAPE ?", - path.with_leading_slash, - "#{path.with_leading_slash.gsub(/[%_\\]/) { |s| "\\#{s}" }}/%", '\\'], - :include => :user, :limit => limit) + changesets.find(:all, :include => :user, + :conditions => latest_changesets_cond(path, rev, limit), + :limit => limit, :order => "#{Changeset.table_name}.id DESC") + end + + def latest_changesets_cond(path, rev, limit) + cond, args = [], [] + if scm.branchmap.member? rev + # Mercurial named branch is *stable* in each revision. + # So, named branch can be stored in database. + # Mercurial provides *bookmark* which is equivalent with git branch. + # But, bookmark is not implemented. + cond << "#{Changeset.table_name}.scmid IN (?)" + # Revisions in root directory and sub directory are not equal. + # So, in order to get correct limit, we need to get all revisions. + # But, it is very heavy. + # Mercurial does not treat direcotry. + # So, "hg log DIR" is very heavy. + branch_limit = path.blank? ? limit : ( limit * 5 ) + args << scm.nodes_in_branch(rev, :limit => branch_limit) + elsif last = rev ? find_changeset_by_name(scm.tagmap[rev] || rev) : nil + cond << "#{Changeset.table_name}.id <= ?" + args << last.id end + + unless path.blank? + cond << "EXISTS (SELECT * FROM #{Change.table_name} + WHERE #{Change.table_name}.changeset_id = #{Changeset.table_name}.id + AND (#{Change.table_name}.path = ? + OR #{Change.table_name}.path LIKE ? ESCAPE ?))" + args << path.with_leading_slash + args << "#{path.with_leading_slash.gsub(/[%_\\]/) { |s| "\\#{s}" }}/%" << '\\' + end + + [cond.join(' AND '), *args] unless cond.empty? end + private :latest_changesets_cond def fetch_changesets scm_rev = scm.info.lastrev.revision.to_i diff -r adc8466df404 -r 753f1380d6bc app/models/repository/subversion.rb --- a/app/models/repository/subversion.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/repository/subversion.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -30,6 +30,10 @@ 'Subversion' end + def supports_directory_revisions? + true + end + def repo_log_encoding 'UTF-8' end @@ -38,12 +42,12 @@ revisions = scm.revisions(path, rev, nil, :limit => limit) revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : [] end - + # Returns a path relative to the url of the repository def relative_path(path) path.gsub(Regexp.new("^\/?#{Regexp.escape(relative_url)}"), '') end - + def fetch_changesets scm_info = scm.info if scm_info @@ -60,12 +64,12 @@ revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true) revisions.reverse_each do |revision| transaction do - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :committer => revision.author, + changeset = Changeset.create(:repository => self, + :revision => revision.identifier, + :committer => revision.author, :committed_on => revision.time, - :comments => revision.message) - + :comments => revision.message) + revision.paths.each do |change| changeset.create_change(change) end unless changeset.new_record? @@ -76,9 +80,9 @@ end end end - + private - + # Returns the relative url of the repository # Eg: root_url = file:///var/svn/foo # url = file:///var/svn/foo/bar diff -r adc8466df404 -r 753f1380d6bc app/models/role.rb --- a/app/models/role.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/role.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -19,6 +19,12 @@ # Built-in roles BUILTIN_NON_MEMBER = 1 BUILTIN_ANONYMOUS = 2 + + ISSUES_VISIBILITY_OPTIONS = [ + ['all', :label_issues_visibility_all], + ['default', :label_issues_visibility_public], + ['own', :label_issues_visibility_own] + ] named_scope :givable, { :conditions => "builtin = 0", :order => 'position' } named_scope :builtin, lambda { |*args| @@ -43,7 +49,10 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - + validates_inclusion_of :issues_visibility, + :in => ISSUES_VISIBILITY_OPTIONS.collect(&:first), + :if => lambda {|role| role.respond_to?(:issues_visibility)} + def permissions read_attribute(:permissions) || [] end @@ -84,6 +93,14 @@ name end + def name + case builtin + when 1; l(:label_role_non_member, :default => read_attribute(:name)) + when 2; l(:label_role_anonymous, :default => read_attribute(:name)) + else; read_attribute(:name) + end + end + # Return true if the role is a builtin role def builtin? self.builtin != 0 diff -r adc8466df404 -r 753f1380d6bc app/models/setting.rb --- a/app/models/setting.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/setting.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -28,12 +28,12 @@ '%b %d, %Y', '%B %d, %Y' ] - + TIME_FORMATS = [ '%H:%M', '%I:%M %p' ] - + ENCODINGS = %w(US-ASCII windows-1250 windows-1251 @@ -73,22 +73,22 @@ Big5 Big5-HKSCS TIS-620) - + cattr_accessor :available_settings @@available_settings = YAML::load(File.open("#{RAILS_ROOT}/config/settings.yml")) Redmine::Plugin.all.each do |plugin| next unless plugin.settings - @@available_settings["plugin_#{plugin.id}"] = {'default' => plugin.settings[:default], 'serialized' => true} + @@available_settings["plugin_#{plugin.id}"] = {'default' => plugin.settings[:default], 'serialized' => true} end - + validates_uniqueness_of :name validates_inclusion_of :name, :in => @@available_settings.keys - validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' } + validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' } # Hash used to cache setting values @cached_settings = {} @cached_cleared_on = Time.now - + def value v = read_attribute(:value) # Unserialize serialized settings @@ -96,18 +96,18 @@ v = v.to_sym if @@available_settings[name]['format'] == 'symbol' && !v.blank? v end - + def value=(v) v = v.to_yaml if v && @@available_settings[name] && @@available_settings[name]['serialized'] write_attribute(:value, v.to_s) end - + # Returns the value of the setting named name def self.[](name) v = @cached_settings[name] v ? v : (@cached_settings[name] = find_or_default(name).value) end - + def self.[]=(name, v) setting = find_or_default(name) setting.value = (v ? v : "") @@ -115,7 +115,7 @@ setting.save setting.value end - + # Defines getter and setter for each setting # Then setting values can be read using: Setting.some_setting_name # or set using Setting.some_setting_name = "some value" @@ -135,16 +135,16 @@ END_SRC class_eval src, __FILE__, __LINE__ end - + # Helper that returns an array based on per_page_options setting def self.per_page_options_array per_page_options.split(%r{[\s,]}).collect(&:to_i).select {|n| n > 0}.sort end - + def self.openid? Object.const_defined?(:OpenID) && self[:openid].to_i > 0 end - + # Checks if settings have changed since the values were read # and clears the cache hash if it's the case # Called once per request @@ -156,13 +156,13 @@ logger.info "Settings cache cleared." if logger end end - + private # Returns the Setting instance for the setting named name # (record found in database or new record with default value) def self.find_or_default(name) name = name.to_s - raise "There's no setting named #{name}" unless @@available_settings.has_key?(name) + raise "There's no setting named #{name}" unless @@available_settings.has_key?(name) setting = find_by_name(name) setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name end diff -r adc8466df404 -r 753f1380d6bc app/models/time_entry.rb --- a/app/models/time_entry.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/time_entry.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -22,7 +22,7 @@ belongs_to :issue belongs_to :user belongs_to :activity, :class_name => 'TimeEntryActivity', :foreign_key => 'activity_id' - + attr_protected :project_id, :user_id, :tyear, :tmonth, :tweek acts_as_customizable @@ -33,12 +33,17 @@ acts_as_activity_provider :timestamp => "#{table_name}.created_on", :author_key => :user_id, - :find_options => {:include => :project} + :find_options => {:include => :project} validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on validates_numericality_of :hours, :allow_nil => true, :message => :invalid validates_length_of :comments, :maximum => 255, :allow_nil => true + named_scope :visible, lambda {|*args| { + :include => :project, + :conditions => Project.allowed_to_condition(args.shift || User.current, :view_time_entries, *args) + }} + def after_initialize if new_record? && self.activity.nil? if default_activity = TimeEntryActivity.default @@ -47,21 +52,21 @@ self.hours = nil if hours == 0 end end - + def before_validation self.project = issue.project if issue && project.nil? end - + def validate errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000) errors.add :project_id, :invalid if project.nil? errors.add :issue_id, :invalid if (issue_id && !issue) || (issue && project!=issue.project) end - + def hours=(h) write_attribute :hours, (h.is_a?(String) ? (h.to_hours || h) : h) end - + # tyear, tmonth, tweek assigned where setting spent_on attributes # these attributes make time aggregations easier def spent_on=(date) @@ -73,13 +78,15 @@ self.tmonth = spent_on ? spent_on.month : nil self.tweek = spent_on ? Date.civil(spent_on.year, spent_on.month, spent_on.day).cweek : nil end - + # Returns true if the time entry can be edited by usr, otherwise false def editable_by?(usr) (usr == user && usr.allowed_to?(:edit_own_time_entries, project)) || usr.allowed_to?(:edit_time_entries, project) end - + + # TODO: remove this method in 1.3.0 def self.visible_by(usr) + ActiveSupport::Deprecation.warn "TimeEntry.visible_by is deprecated and will be removed in Redmine 1.3.0. Use the visible scope instead." with_scope(:find => { :conditions => Project.allowed_to_condition(usr, :view_time_entries) }) do yield end diff -r adc8466df404 -r 753f1380d6bc app/models/user.rb --- a/app/models/user.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/user.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -84,6 +84,15 @@ validates_acceptance_of :terms_and_conditions, :on => :create, :message => :must_accept_terms_and_conditions + named_scope :in_group, lambda {|group| + group_id = group.is_a?(Group) ? group.id : group.to_i + { :conditions => ["#{User.table_name}.id IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id] } + } + named_scope :not_in_group, lambda {|group| + group_id = group.is_a?(Group) ? group.id : group.to_i + { :conditions => ["#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id] } + } + def before_create self.mail_notification = Setting.default_notification_option if self.mail_notification.blank? true @@ -98,6 +107,7 @@ def reload(*args) @name = nil + @projects_by_role = nil super end @@ -373,16 +383,33 @@ !roles_for_project(project).detect {|role| role.member?}.nil? end + # Returns a hash of user's projects grouped by roles + def projects_by_role + return @projects_by_role if @projects_by_role + + @projects_by_role = Hash.new {|h,k| h[k]=[]} + memberships.each do |membership| + membership.roles.each do |role| + @projects_by_role[role] << membership.project if membership.project + end + end + @projects_by_role.each do |role, projects| + projects.uniq! + end + + @projects_by_role + end + # Return true if the user is allowed to do the specified action on a specific context # Action can be: # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit') # * a permission Symbol (eg. :edit_project) # Context can be: # * a project : returns true if user is allowed to do the specified action on this project - # * a group of projects : returns true if user is allowed on every project + # * an array of projects : returns true if user is allowed on every project # * nil with options[:global] set : check if user has at least one role allowed for this action, # or falls back to Non Member / Anonymous permissions depending if the user is logged - def allowed_to?(action, context, options={}) + def allowed_to?(action, context, options={}, &block) if context && context.is_a?(Project) # No action allowed on archived projects return false unless context.active? @@ -393,12 +420,15 @@ roles = roles_for_project(context) return false unless roles - roles.detect {|role| (context.is_public? || role.member?) && role.allowed_to?(action)} - + roles.detect {|role| + (context.is_public? || role.member?) && + role.allowed_to?(action) && + (block_given? ? yield(role, self) : true) + } elsif context && context.is_a?(Array) # Authorize if user is authorized on every element of the array context.map do |project| - allowed_to?(action,project,options) + allowed_to?(action, project, options, &block) end.inject do |memo,allowed| memo && allowed end @@ -408,7 +438,11 @@ # authorize if user has at least one role that has this permission roles = memberships.collect {|m| m.roles}.flatten.uniq - roles.detect {|r| r.allowed_to?(action)} || (self.logged? ? Role.non_member.allowed_to?(action) : Role.anonymous.allowed_to?(action)) + roles << (self.logged? ? Role.non_member : Role.anonymous) + roles.detect {|role| + role.allowed_to?(action) && + (block_given? ? yield(role, self) : true) + } else false end @@ -416,8 +450,8 @@ # Is the user allowed to do the specified action on any project? # See allowed_to? for the actions and valid options. - def allowed_to_globally?(action, options) - allowed_to?(action, nil, options.reverse_merge(:global => true)) + def allowed_to_globally?(action, options, &block) + allowed_to?(action, nil, options.reverse_merge(:global => true), &block) end safe_attributes 'login', diff -r adc8466df404 -r 753f1380d6bc app/models/wiki.rb --- a/app/models/wiki.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/wiki.rb Mon Jun 06 14:41:04 2011 +0100 @@ -44,17 +44,26 @@ # find the page with the given title def find_page(title, options = {}) + @page_found_with_redirect = false title = start_page if title.blank? title = Wiki.titleize(title) - page = pages.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) + page = pages.first(:conditions => ["LOWER(title) = LOWER(?)", title]) if !page && !(options[:with_redirect] == false) # search for a redirect - redirect = redirects.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) - page = find_page(redirect.redirects_to, :with_redirect => false) if redirect + redirect = redirects.first(:conditions => ["LOWER(title) = LOWER(?)", title]) + if redirect + page = find_page(redirect.redirects_to, :with_redirect => false) + @page_found_with_redirect = true + end end page end + # Returns true if the last page was found with a redirect + def page_found_with_redirect? + @page_found_with_redirect + end + # Finds a page by title # The given string can be of one of the forms: "title" or "project:title" # Examples: diff -r adc8466df404 -r 753f1380d6bc app/models/wiki_content.rb --- a/app/models/wiki_content.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/wiki_content.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# RedMine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -23,28 +23,28 @@ belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' validates_presence_of :text validates_length_of :comments, :maximum => 255, :allow_nil => true - + acts_as_versioned - + def visible?(user=User.current) page.visible?(user) end - + def project page.project end - + def attachments page.nil? ? [] : page.attachments end - + # Returns the mail adresses of users that should be notified def recipients notified = project.notified_users notified.reject! {|user| !visible?(user)} notified.collect(&:mail) end - + class Version belongs_to :page, :class_name => '::WikiPage', :foreign_key => 'page_id' belongs_to :author, :class_name => '::User', :foreign_key => 'author_id' @@ -84,7 +84,7 @@ end plain end - + def text @text ||= case compression when 'gzip' @@ -92,16 +92,16 @@ else # uncompressed data data - end + end end - + def project page.project end - + # Returns the previous version or nil def previous - @previous ||= WikiContent::Version.find(:first, + @previous ||= WikiContent::Version.find(:first, :order => 'version DESC', :include => :author, :conditions => ["wiki_content_id = ? AND version < ?", wiki_content_id, version]) diff -r adc8466df404 -r 753f1380d6bc app/models/wiki_page.rb --- a/app/models/wiki_page.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/models/wiki_page.rb Mon Jun 06 14:41:04 2011 +0100 @@ -32,6 +32,7 @@ acts_as_searchable :columns => ['title', 'text'], :include => [{:wiki => :project}, :content], + :permission => :view_wiki_pages, :project_key => "#{Wiki.table_name}.project_id" attr_accessor :redirect_existing_links @@ -41,6 +42,12 @@ validates_uniqueness_of :title, :scope => :wiki_id, :case_sensitive => false validates_associated :content + # eager load information about last updates, without loading text + named_scope :with_updated_on, { + :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on", + :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id" + } + # Wiki pages that are protected by default DEFAULT_PROTECTED_PAGES = %w(sidebar) @@ -121,6 +128,18 @@ content.text if content end + def updated_on + unless @updated_on + if time = read_attribute(:updated_on) + # content updated_on was eager loaded with the page + @updated_on = Time.parse(time) rescue nil + else + @updated_on = content && content.updated_on + end + end + @updated_on + end + # Returns true if usr is allowed to edit the page, otherwise false def editable_by?(usr) !protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project) diff -r adc8466df404 -r 753f1380d6bc app/sweepers/.svn/entries --- a/app/sweepers/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/sweepers/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/sweepers +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/sweepers http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc app/views/.svn/all-wcprops --- a/app/views/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 34 -/svn/!svn/ver/4983/trunk/app/views +V 48 +/svn/!svn/ver/5961/branches/1.2-stable/app/views END diff -r adc8466df404 -r 753f1380d6bc app/views/.svn/entries --- a/app/views/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views http://redmine.rubyforge.org/svn -2011-03-01T10:27:51.597350Z -4983 -tmaruyama +2011-05-29T12:06:05.086159Z +5961 +jplang diff -r adc8466df404 -r 753f1380d6bc app/views/account/.svn/entries --- a/app/views/account/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/account/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/account +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/account http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 232ce32581d2f869b81c300244decff5 2010-01-28T18:54:51.800438Z 3341 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z cf3d603bbb4825640988086c7871c165 2007-09-22T13:17:49.935719Z 747 @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 82c6920dc6c95e35b0248de4be82885b 2009-04-21T13:43:57.529967Z 2678 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 72b586f183037fcab519bc7575d3b2b5 2010-03-03T20:21:05.265018Z 3530 diff -r adc8466df404 -r 753f1380d6bc app/views/activities/.svn/entries --- a/app/views/activities/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/activities/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/activities +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/activities http://redmine.rubyforge.org/svn -2010-08-27T14:05:54.014502Z -4047 -edavis10 +2011-04-03T14:01:32.419875Z +5301 +jplang @@ -32,11 +32,11 @@ -2011-03-03T11:05:11.000000Z -9e6d9091be2c8769f8e262500d974f84 -2010-08-27T14:05:54.014502Z -4047 -edavis10 +2011-06-06T13:18:33.000000Z +842302ab754ce754f88204a7074c4b9d +2011-04-03T14:01:32.419875Z +5301 +jplang has-props @@ -58,5 +58,5 @@ -3266 +2936 diff -r adc8466df404 -r 753f1380d6bc app/views/activities/.svn/text-base/index.html.erb.svn-base --- a/app/views/activities/.svn/text-base/index.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/activities/.svn/text-base/index.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -21,16 +21,14 @@ <%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
    -<%= link_to_remote(('« ' + l(:label_previous)), - {:update => "content", :url => params.merge(:from => @date_to - @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'}, - {:href => url_for(params.merge(:from => @date_to - @days - 1)), - :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))}) %> +<%= link_to_content_update('« ' + l(:label_previous), + params.merge(:from => @date_to - @days - 1), + :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))) %>
    -<%= link_to_remote((l(:label_next) + ' »'), - {:update => "content", :url => params.merge(:from => @date_to + @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'}, - {:href => url_for(params.merge(:from => @date_to + @days - 1)), - :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))}) unless @date_to >= Date.today %> +<%= link_to_content_update(l(:label_next) + ' »', + params.merge(:from => @date_to + @days - 1), + :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))) unless @date_to >= Date.today %>
      <% other_formats_links do |f| %> diff -r adc8466df404 -r 753f1380d6bc app/views/activities/index.html.erb --- a/app/views/activities/index.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/activities/index.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -21,16 +21,14 @@ <%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
    -<%= link_to_remote(('« ' + l(:label_previous)), - {:update => "content", :url => params.merge(:from => @date_to - @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'}, - {:href => url_for(params.merge(:from => @date_to - @days - 1)), - :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))}) %> +<%= link_to_content_update('« ' + l(:label_previous), + params.merge(:from => @date_to - @days - 1), + :title => l(:label_date_from_to, :start => format_date(@date_to - 2*@days), :end => format_date(@date_to - @days - 1))) %>
    -<%= link_to_remote((l(:label_next) + ' »'), - {:update => "content", :url => params.merge(:from => @date_to + @days - 1), :method => :get, :complete => 'window.scrollTo(0,0)'}, - {:href => url_for(params.merge(:from => @date_to + @days - 1)), - :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))}) unless @date_to >= Date.today %> +<%= link_to_content_update(l(:label_next) + ' »', + params.merge(:from => @date_to + @days - 1), + :title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1))) unless @date_to >= Date.today %>
      <% other_formats_links do |f| %> diff -r adc8466df404 -r 753f1380d6bc app/views/admin/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/admin/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/5878/branches/1.2-stable/app/views/admin +END diff -r adc8466df404 -r 753f1380d6bc app/views/admin/.svn/entries --- a/app/views/admin/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/admin/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/admin +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/admin http://redmine.rubyforge.org/svn -2010-10-22T15:11:04.321155Z -4271 -jplang +2011-04-28T12:35:25.773529Z +5562 +tmaruyama @@ -32,11 +32,11 @@ -2011-03-03T11:05:11.000000Z -a7b3d0461b8dac7e68d5b758e6b93b45 -2009-12-19T20:33:24.113306Z -3200 -jplang +2011-06-06T13:18:33.000000Z +7890b8a0425776aeb77070710f89d8ce +2011-04-28T12:35:25.773529Z +5562 +tmaruyama has-props @@ -58,7 +58,7 @@ -456 +498 plugins.rhtml file @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z aacfd3ff934f52585eba4f460f52df31 2008-11-16T17:12:02.001794Z 2041 @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z a2dcf50c0d70604e64f18cd28f15280b 2010-08-04T00:38:22.739166Z 3909 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 8db715728d1f5851c242e085110f2bb6 2008-01-05T11:33:49.132886Z 1040 @@ -168,7 +168,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 35378eb3f0e385475e3bd0586f22324a 2009-12-17T18:21:02.630202Z 3176 @@ -202,10 +202,10 @@ -2011-03-03T11:05:11.000000Z -9aaefdc17951db18479f38fb0db73ea7 -2010-10-22T15:11:04.321155Z -4271 +2011-06-06T13:18:33.000000Z +9b6daf583836b76e9183e9e125ca7ced +2011-03-16T18:23:51.946930Z +5151 jplang has-props @@ -228,5 +228,5 @@ -2136 +2247 diff -r adc8466df404 -r 753f1380d6bc app/views/admin/.svn/text-base/info.rhtml.svn-base --- a/app/views/admin/.svn/text-base/info.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/admin/.svn/text-base/info.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -4,10 +4,11 @@ <% @checklist.each do |label, result| %> - - - - + + + + <% end %>
    <%= l(label) %><%= image_tag((result ? 'true.png' : 'exclamation.png'), :style => "vertical-align:bottom;") %>
    <%= l(label) %><%= image_tag((result ? 'true.png' : 'exclamation.png'), + :style => "vertical-align:bottom;") %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/admin/.svn/text-base/projects.rhtml.svn-base --- a/app/views/admin/.svn/text-base/projects.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/admin/.svn/text-base/projects.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -11,6 +11,7 @@ <%= text_field_tag 'name', params[:name], :size => 30 %> <%= submit_tag l(:button_apply), :class => "small", :name => nil %> +<%= link_to l(:button_clear), {:controller => 'admin', :action => 'projects'}, :class => 'icon icon-reload' %> <% end %>   diff -r adc8466df404 -r 753f1380d6bc app/views/admin/info.rhtml --- a/app/views/admin/info.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/admin/info.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -4,10 +4,11 @@ <% @checklist.each do |label, result| %> - - - - + + + + <% end %>
    <%= l(label) %><%= image_tag((result ? 'true.png' : 'exclamation.png'), :style => "vertical-align:bottom;") %>
    <%= l(label) %><%= image_tag((result ? 'true.png' : 'exclamation.png'), + :style => "vertical-align:bottom;") %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/admin/projects.rhtml --- a/app/views/admin/projects.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/admin/projects.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -11,6 +11,7 @@ <%= text_field_tag 'name', params[:name], :size => 30 %> <%= submit_tag l(:button_apply), :class => "small", :name => nil %> +<%= link_to l(:button_clear), {:controller => 'admin', :action => 'projects'}, :class => 'icon icon-reload' %> <% end %>   diff -r adc8466df404 -r 753f1380d6bc app/views/attachments/.svn/entries --- a/app/views/attachments/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/attachments/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/attachments +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/attachments http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 6f5329a1a81f3798a84a26b0261f5000 2008-12-09T16:54:46.963649Z 2116 @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z b8bc854a91c56c3e3d45390e8ed4bb8d 2009-04-25T09:35:14.494071Z 2693 @@ -100,7 +100,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 9cd3f9685ce632814961d9f7e67c4d26 2010-07-25T10:34:55.569539Z 3879 @@ -134,7 +134,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 43e4ae1b5703daa55b37eb438a169304 2009-04-25T09:35:14.494071Z 2693 diff -r adc8466df404 -r 753f1380d6bc app/views/auth_sources/.svn/entries --- a/app/views/auth_sources/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/auth_sources/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/auth_sources +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/auth_sources http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 2f1b944eb2979ed37624c653969fa6bf 2010-02-15T16:41:21.789274Z 3436 @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 6f4f645b6d66417180eaadb0e204a56e 2007-03-12T17:59:02.654744Z 333 @@ -100,7 +100,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 4ea0fc7f46738e3709d552778de7a756 2010-05-23T03:16:31.304135Z 3744 @@ -134,7 +134,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 1cc2f5049536de6e5d6d4e926f96ab38 2007-03-12T17:59:02.654744Z 333 diff -r adc8466df404 -r 753f1380d6bc app/views/auto_completes/.svn/entries --- a/app/views/auto_completes/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/auto_completes/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/auto_completes +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/auto_completes http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z d325b0677890591680b96985e16a0139 2010-08-17T15:03:58.074505Z 3945 diff -r adc8466df404 -r 753f1380d6bc app/views/boards/.svn/all-wcprops --- a/app/views/boards/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 41 -/svn/!svn/ver/4889/trunk/app/views/boards -END -show.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4889/trunk/app/views/boards/show.rhtml -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/529/trunk/app/views/boards/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/529/trunk/app/views/boards/edit.rhtml -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4047/trunk/app/views/boards/index.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/529/trunk/app/views/boards/new.rhtml -END diff -r adc8466df404 -r 753f1380d6bc app/views/boards/.svn/entries --- a/app/views/boards/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/boards/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/boards +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/boards http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 0f9b1735f403a56ed575c63dc474a611 2011-02-20T13:11:10.508449Z 4889 @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 0416740cf4bf599b0da68e597c0cd44c 2007-05-13T17:09:56.765659Z 529 @@ -100,7 +100,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 00f3643ebd3d5af2322b92c885a6eec6 2007-05-13T17:09:56.765659Z 529 @@ -134,7 +134,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 5c323ebf8fea05f556896ed49186773b 2010-08-27T14:05:54.014502Z 4047 @@ -168,7 +168,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z b951b4d73988508c5a42fdb7b7df695c 2007-05-13T17:09:56.765659Z 529 diff -r adc8466df404 -r 753f1380d6bc app/views/calendars/.svn/all-wcprops --- a/app/views/calendars/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4911/trunk/app/views/calendars -END -show.html.erb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/4911/trunk/app/views/calendars/show.html.erb -END diff -r adc8466df404 -r 753f1380d6bc app/views/calendars/.svn/entries --- a/app/views/calendars/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/calendars/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/calendars +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/calendars http://redmine.rubyforge.org/svn -2011-02-21T14:02:22.565987Z -4911 +2011-04-01T14:34:44.070899Z +5276 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:40:18.000000Z -7da8933c1cb08241ebe459d9cabe8043 -2011-02-21T14:02:22.565987Z -4911 +2011-06-06T13:18:33.000000Z +ab4018273a0ea22e0fb58209d1f88be7 +2011-04-01T14:34:44.070899Z +5276 jplang has-props @@ -58,5 +58,5 @@ -2007 +1686 diff -r adc8466df404 -r 753f1380d6bc app/views/calendars/.svn/text-base/show.html.erb.svn-base --- a/app/views/calendars/.svn/text-base/show.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/calendars/.svn/text-base/show.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,7 +1,7 @@

    <%= @query.new_record? ? l(:label_calendar) : h(@query.name) %>

    -<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %> - <%= hidden_field_tag('project_id', @project.to_param) if @project%> +<% form_tag({:controller => 'calendars', :action => 'show', :project_id => @project}, :method => :get, :id => 'query_form') do %> +<%= hidden_field_tag 'set_filter', '1' %>
    "> <%= l(:label_filter_plural) %>
    "> @@ -10,7 +10,7 @@

    - <%= link_to_previous_month(@year, @month, :project => @project) %> | <%= link_to_next_month(@year, @month, :project => @project) %> + <%= link_to_previous_month(@year, @month) %> | <%= link_to_next_month(@year, @month) %>

    @@ -19,17 +19,8 @@ <%= label_tag('year', l(:label_year)) %> <%= select_year(@year, :prefix => "year", :discard_type => true) %> -<%= link_to_remote l(:button_apply), - { :url => { :set_filter => 1 }, - :update => "content", - :with => "Form.serialize('query_form')" - }, :class => 'icon icon-checked' %> - -<%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => 1 }, - :method => :put, - :update => "content", - }, :class => 'icon icon-reload' %> +<%= link_to_function l(:button_apply), '$("query_form").submit()', :class => 'icon icon-checked' %> +<%= link_to l(:button_clear), { :project_id => @project, :set_filter => 1 }, :class => 'icon icon-reload' %>

    <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/calendars/show.html.erb --- a/app/views/calendars/show.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/calendars/show.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -1,7 +1,7 @@

    <%= @query.new_record? ? l(:label_calendar) : h(@query.name) %>

    -<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %> - <%= hidden_field_tag('project_id', @project.to_param) if @project%> +<% form_tag({:controller => 'calendars', :action => 'show', :project_id => @project}, :method => :get, :id => 'query_form') do %> +<%= hidden_field_tag 'set_filter', '1' %>
    "> <%= l(:label_filter_plural) %>
    "> @@ -10,7 +10,7 @@

    - <%= link_to_previous_month(@year, @month, :project => @project) %> | <%= link_to_next_month(@year, @month, :project => @project) %> + <%= link_to_previous_month(@year, @month) %> | <%= link_to_next_month(@year, @month) %>

    @@ -19,17 +19,8 @@ <%= label_tag('year', l(:label_year)) %> <%= select_year(@year, :prefix => "year", :discard_type => true) %> -<%= link_to_remote l(:button_apply), - { :url => { :set_filter => 1 }, - :update => "content", - :with => "Form.serialize('query_form')" - }, :class => 'icon icon-checked' %> - -<%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => 1 }, - :method => :put, - :update => "content", - }, :class => 'icon icon-reload' %> +<%= link_to_function l(:button_apply), '$("query_form").submit()', :class => 'icon icon-checked' %> +<%= link_to l(:button_clear), { :project_id => @project, :set_filter => 1 }, :class => 'icon icon-reload' %>

    <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/common/.svn/all-wcprops --- a/app/views/common/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/common/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,47 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 41 -/svn/!svn/ver/4604/trunk/app/views/common +V 55 +/svn/!svn/ver/5878/branches/1.2-stable/app/views/common END -_file.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3585/trunk/app/views/common/_file.rhtml -END -error.html.erb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4286/trunk/app/views/common/error.html.erb -END -feed.atom.rxml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2768/trunk/app/views/common/feed.atom.rxml -END -_preview.rhtml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/1699/trunk/app/views/common/_preview.rhtml -END -_diff.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4604/trunk/app/views/common/_diff.rhtml -END -_calendar.rhtml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/3790/trunk/app/views/common/_calendar.rhtml -END -_tabs.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3174/trunk/app/views/common/_tabs.rhtml -END diff -r adc8466df404 -r 753f1380d6bc app/views/common/.svn/entries --- a/app/views/common/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/common/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/common +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/common http://redmine.rubyforge.org/svn -2011-01-01T13:40:36.520874Z -4604 -jplang +2011-05-21T04:26:15.661225Z +5872 +tmaruyama @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z f95c4268a6ac374ab617da665e57a3ad 2010-03-14T13:22:50.317701Z 3585 @@ -66,11 +66,12 @@ -2011-03-03T11:05:11.000000Z -882dace2c9ea129616067a2052cebef4 -2010-10-23T11:07:04.019894Z -4286 -jplang +2011-06-06T13:18:33.000000Z +df19ed70179aa9f6d4ffc2403ac593bc +2011-05-21T04:26:15.661225Z +5872 +tmaruyama +has-props @@ -91,8 +92,7 @@ - -156 +150 feed.atom.rxml file @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z e2b0309f637e9a49ef39f8401f3190c5 2009-05-26T08:28:36.964305Z 2768 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z d03b1c3719bd49af7d930d210a8e8328 2008-07-26T12:54:54.604420Z 1699 @@ -168,10 +168,10 @@ -2011-03-03T11:05:11.000000Z -1938ad8ac1793e75074891018e795398 -2011-01-01T13:40:36.520874Z -4604 +2011-06-06T13:18:33.000000Z +358b5f24bf743ee83c21cf15289b0a60 +2011-03-11T20:23:29.177962Z +5094 jplang has-props @@ -194,7 +194,7 @@ -2520 +1541 _calendar.rhtml file @@ -202,7 +202,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 18b2d631fabd5720aa07d369da11d0de 2010-06-19T22:52:15.523619Z 3790 @@ -236,7 +236,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 6e7716818f87ed1ad9839c6e9a92ed1b 2009-12-14T20:13:29.438642Z 3174 diff -r adc8466df404 -r 753f1380d6bc app/views/common/.svn/text-base/_diff.rhtml.svn-base --- a/app/views/common/.svn/text-base/_diff.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/common/.svn/text-base/_diff.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,66 +1,56 @@ <% diff = Redmine::UnifiedDiff.new(diff, :type => diff_type, :max_lines => Setting.diff_max_lines_displayed.to_i) -%> + <% diff.each do |table_file| -%>
    -<% if diff_type == 'sbs' -%> +<% if diff.diff_type == 'sbs' -%> -<% prev_line_left, prev_line_right = nil, nil -%> -<% table_file.keys.sort.each do |key| -%> -<% if prev_line_left && prev_line_right && (table_file[key].nb_line_left != prev_line_left+1) && (table_file[key].nb_line_right != prev_line_right+1) -%> +<% table_file.each_line do |spacing, line| -%> +<% if spacing -%> - + + <% end -%> - - + - - + -<% prev_line_left, prev_line_right = table_file[key].nb_line_left.to_i, table_file[key].nb_line_right.to_i -%> <% end -%>
    <%=to_utf8 table_file.file_name %>
    ............
    <%= table_file[key].nb_line_left %> -
    <%=to_utf8 table_file[key].line_left %>
    +
    <%= line.nb_line_left %> +
    <%=to_utf8 line.html_line_left %>
    <%= table_file[key].nb_line_right %> -
    <%=to_utf8 table_file[key].line_right %>
    +
    <%= line.nb_line_right %> +
    <%=to_utf8 line.html_line_right %>
    <% else -%> - +
    -<% prev_line_left, prev_line_right = nil, nil -%> -<% table_file.keys.sort.each do |key, line| %> -<% if prev_line_left && prev_line_right && (table_file[key].nb_line_left != prev_line_left+1) && (table_file[key].nb_line_right != prev_line_right+1) -%> +<% table_file.each_line do |spacing, line| %> +<% if spacing -%> - + <% end -%> - - - <% if table_file[key].line_left.empty? -%> - + + - <% else -%> - - <% end -%> -<% prev_line_left = table_file[key].nb_line_left.to_i if table_file[key].nb_line_left.to_i > 0 -%> -<% prev_line_right = table_file[key].nb_line_right.to_i if table_file[key].nb_line_right.to_i > 0 -%> <% end -%>
    <%=to_utf8 table_file.file_name %>
    ............
    <%= table_file[key].nb_line_left %><%= table_file[key].nb_line_right %> -
    <%=to_utf8 table_file[key].line_right %>
    +
    <%= line.nb_line_left %><%= line.nb_line_right %> +
    <%=to_utf8 line.html_line %>
    -
    <%=to_utf8 table_file[key].line_left %>
    -
    <% end -%> -
    <% end -%> diff -r adc8466df404 -r 753f1380d6bc app/views/common/.svn/text-base/error.html.erb.svn-base --- a/app/views/common/.svn/text-base/error.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/common/.svn/text-base/error.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,6 +1,6 @@ -

    <%=h @status %>

    - -

    <%=h @message %>

    -

    Back

    - -<% html_title @status %> +

    <%=h @status %>

    + +

    <%=h @message %>

    +

    Back

    + +<% html_title @status %> diff -r adc8466df404 -r 753f1380d6bc app/views/common/_diff.rhtml --- a/app/views/common/_diff.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/common/_diff.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -1,66 +1,56 @@ <% diff = Redmine::UnifiedDiff.new(diff, :type => diff_type, :max_lines => Setting.diff_max_lines_displayed.to_i) -%> + <% diff.each do |table_file| -%>
    -<% if diff_type == 'sbs' -%> +<% if diff.diff_type == 'sbs' -%> -<% prev_line_left, prev_line_right = nil, nil -%> -<% table_file.keys.sort.each do |key| -%> -<% if prev_line_left && prev_line_right && (table_file[key].nb_line_left != prev_line_left+1) && (table_file[key].nb_line_right != prev_line_right+1) -%> +<% table_file.each_line do |spacing, line| -%> +<% if spacing -%> - + + <% end -%> - - + - - + -<% prev_line_left, prev_line_right = table_file[key].nb_line_left.to_i, table_file[key].nb_line_right.to_i -%> <% end -%>
    <%=to_utf8 table_file.file_name %>
    ............
    <%= table_file[key].nb_line_left %> -
    <%=to_utf8 table_file[key].line_left %>
    +
    <%= line.nb_line_left %> +
    <%=to_utf8 line.html_line_left %>
    <%= table_file[key].nb_line_right %> -
    <%=to_utf8 table_file[key].line_right %>
    +
    <%= line.nb_line_right %> +
    <%=to_utf8 line.html_line_right %>
    <% else -%> - +
    -<% prev_line_left, prev_line_right = nil, nil -%> -<% table_file.keys.sort.each do |key, line| %> -<% if prev_line_left && prev_line_right && (table_file[key].nb_line_left != prev_line_left+1) && (table_file[key].nb_line_right != prev_line_right+1) -%> +<% table_file.each_line do |spacing, line| %> +<% if spacing -%> - + <% end -%> - - - <% if table_file[key].line_left.empty? -%> - + + - <% else -%> - - <% end -%> -<% prev_line_left = table_file[key].nb_line_left.to_i if table_file[key].nb_line_left.to_i > 0 -%> -<% prev_line_right = table_file[key].nb_line_right.to_i if table_file[key].nb_line_right.to_i > 0 -%> <% end -%>
    <%=to_utf8 table_file.file_name %>
    ............
    <%= table_file[key].nb_line_left %><%= table_file[key].nb_line_right %> -
    <%=to_utf8 table_file[key].line_right %>
    +
    <%= line.nb_line_left %><%= line.nb_line_right %> +
    <%=to_utf8 line.html_line %>
    -
    <%=to_utf8 table_file[key].line_left %>
    -
    <% end -%> -
    <% end -%> diff -r adc8466df404 -r 753f1380d6bc app/views/common/error.html.erb --- a/app/views/common/error.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/common/error.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -1,6 +1,6 @@ -

    <%=h @status %>

    - -

    <%=h @message %>

    -

    Back

    - -<% html_title @status %> +

    <%=h @status %>

    + +

    <%=h @message %>

    +

    Back

    + +<% html_title @status %> diff -r adc8466df404 -r 753f1380d6bc app/views/context_menus/.svn/entries --- a/app/views/context_menus/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/context_menus/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/context_menus +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/context_menus http://redmine.rubyforge.org/svn -2010-11-16T19:49:08.085592Z -4409 +2011-04-17T15:17:18.418900Z +5495 jplang @@ -26,16 +26,50 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 +time_entries.html.erb +file + + + + +2011-06-06T13:18:33.000000Z +d021ca3ed499dc32afd907dfd0529b38 +2011-04-04T11:54:47.184431Z +5316 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +1879 + issues.html.erb file -2011-03-03T11:05:10.000000Z -1a873e0d09f011b6b274e955460d35a1 -2010-11-16T19:49:08.085592Z -4409 +2011-06-06T13:18:33.000000Z +71478da35c13199e1b5b3f0a2a33168f +2011-04-17T15:17:18.418900Z +5495 jplang has-props @@ -58,5 +92,5 @@ -6698 +6706 diff -r adc8466df404 -r 753f1380d6bc app/views/context_menus/.svn/text-base/issues.html.erb.svn-base --- a/app/views/context_menus/.svn/text-base/issues.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/context_menus/.svn/text-base/issues.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -115,7 +115,7 @@
  • <%= context_menu_link l(:button_move), new_issue_move_path(:ids => @issues.collect(&:id)), :class => 'icon-move', :disabled => !@can[:move] %>
  • <%= context_menu_link l(:button_delete), {:controller => 'issues', :action => 'destroy', :ids => @issues.collect(&:id), :back_url => @back}, - :method => :post, :confirm => l(:text_issues_destroy_confirmation), :class => 'icon-del', :disabled => !@can[:delete] %>
  • + :method => :post, :confirm => issues_destroy_confirmation_message(@issues), :class => 'icon-del', :disabled => !@can[:delete] %> <%= call_hook(:view_issues_context_menu_end, {:issues => @issues, :can => @can, :back => @back }) %>
diff -r adc8466df404 -r 753f1380d6bc app/views/context_menus/issues.html.erb --- a/app/views/context_menus/issues.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/context_menus/issues.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -115,7 +115,7 @@
  • <%= context_menu_link l(:button_move), new_issue_move_path(:ids => @issues.collect(&:id)), :class => 'icon-move', :disabled => !@can[:move] %>
  • <%= context_menu_link l(:button_delete), {:controller => 'issues', :action => 'destroy', :ids => @issues.collect(&:id), :back_url => @back}, - :method => :post, :confirm => l(:text_issues_destroy_confirmation), :class => 'icon-del', :disabled => !@can[:delete] %>
  • + :method => :post, :confirm => issues_destroy_confirmation_message(@issues), :class => 'icon-del', :disabled => !@can[:delete] %> <%= call_hook(:view_issues_context_menu_end, {:issues => @issues, :can => @can, :back => @back }) %> diff -r adc8466df404 -r 753f1380d6bc app/views/context_menus/time_entries.html.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/context_menus/time_entries.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,33 @@ +
      + <% if !@time_entry.nil? -%> +
    • <%= context_menu_link l(:button_edit), {:controller => 'timelog', :action => 'edit', :id => @time_entry}, + :class => 'icon-edit', :disabled => !@can[:edit] %>
    • + <% else %> +
    • <%= context_menu_link l(:button_edit), {:controller => 'timelog', :action => 'bulk_edit', :ids => @time_entries.collect(&:id)}, + :class => 'icon-edit', :disabled => !@can[:edit] %>
    • + <% end %> + + <%= call_hook(:view_time_entries_context_menu_start, {:time_entries => @time_entries, :can => @can, :back => @back }) %> + + <% if @activities.present? -%> +
    • + <%= l(:field_activity) %> +
        + <% @activities.each do |u| -%> +
      • <%= context_menu_link u.name, {:controller => 'timelog', :action => 'bulk_edit', :ids => @time_entries.collect(&:id), :time_entry => {'activity_id' => u}, :back_url => @back}, :method => :post, + :selected => (@time_entry && u == @time_entry.activity), :disabled => !@can[:update] %>
      • + <% end -%> +
      • <%= context_menu_link l(:label_nobody), {:controller => 'timelog', :action => 'bulk_edit', :ids => @time_entries.collect(&:id), :time_entry => {'activity_id' => 'none'}, :back_url => @back}, :method => :post, + :selected => (@time_entry && @time_entry.activity.nil?), :disabled => !@can[:update] %>
      • +
      +
    • + <% end %> + + <%= call_hook(:view_time_entries_context_menu_end, {:time_entries => @time_entries, :can => @can, :back => @back }) %> + +
    • + <%= context_menu_link l(:button_delete), + {:controller => 'timelog', :action => 'destroy', :ids => @time_entries.collect(&:id), :back_url => @back}, + :method => :delete, :confirm => l(:text_time_entries_destroy_confirmation), :class => 'icon-del', :disabled => !@can[:delete] %> +
    • +
    diff -r adc8466df404 -r 753f1380d6bc app/views/custom_fields/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/custom_fields/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/5878/branches/1.2-stable/app/views/custom_fields +END diff -r adc8466df404 -r 753f1380d6bc app/views/custom_fields/.svn/entries --- a/app/views/custom_fields/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/custom_fields/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/custom_fields +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/custom_fields http://redmine.rubyforge.org/svn -2010-11-07T14:15:01.891476Z -4382 +2011-04-01T13:44:58.700463Z +5272 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:05:10.000000Z -7c1accc3dd22bd872e2e9b6a7f02a5c2 -2010-11-07T14:15:01.891476Z -4382 +2011-06-06T13:18:33.000000Z +a4379295fd24c6f633dc6f53e755c63a +2011-04-01T13:44:58.700463Z +5272 jplang has-props @@ -58,7 +58,7 @@ -3960 +4190 edit.rhtml file @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 0c149f63c965988c70ecf48bde3222b3 2009-12-09T10:49:58.529326Z 3144 @@ -100,7 +100,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 3372a4aeafa9f940744f07c4ce8ca434 2010-04-16T15:33:49.924704Z 3672 @@ -134,7 +134,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 6441c559d374310cabfc9649eb5b3617 2009-09-12T09:13:13.676884Z 2871 @@ -168,7 +168,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 7658107f6af4536cedfc075202ad3f7c 2009-12-09T10:49:58.529326Z 3144 diff -r adc8466df404 -r 753f1380d6bc app/views/custom_fields/.svn/text-base/_form.rhtml.svn-base --- a/app/views/custom_fields/.svn/text-base/_form.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/custom_fields/.svn/text-base/_form.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -18,33 +18,41 @@ Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); if (p_searchable) Element.show(p_searchable.parentNode); - Element.show(p_values); + Element.show(p_values.parentNode); break; case "bool": p_default.setAttribute('type','checkbox'); Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); if (p_searchable) Element.hide(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; case "date": Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); if (p_searchable) Element.hide(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; case "float": case "int": Element.show(p_length.parentNode); Element.show(p_regexp.parentNode); if (p_searchable) Element.hide(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; + case "user": + case "version": + Element.hide(p_length.parentNode); + Element.hide(p_regexp.parentNode); + if (p_searchable) Element.hide(p_searchable.parentNode); + Element.hide(p_values.parentNode); + Element.hide(p_default.parentNode); + break; default: Element.show(p_length.parentNode); Element.show(p_regexp.parentNode); if (p_searchable) Element.show(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; } } @@ -54,16 +62,16 @@

    <%= f.text_field :name, :required => true %>

    -

    <%= f.select :field_format, custom_field_formats_for_select, {}, :onchange => "toggle_custom_field_format();", +

    <%= f.select :field_format, custom_field_formats_for_select(@custom_field), {}, :onchange => "toggle_custom_field_format();", :disabled => !@custom_field.new_record? %>

    <%= f.text_field :min_length, :size => 5, :no_label => true %> - <%= f.text_field :max_length, :size => 5, :no_label => true %>
    (<%=l(:text_min_max_length_info)%>)

    <%= f.text_field :regexp, :size => 50 %>
    (<%=l(:text_regexp_info)%>)

    -

    <%= f.text_area :possible_values, :value => @custom_field.possible_values.to_a.join("\n"), - :cols => 20, - :rows => 15 %> -
    <%= l(:text_custom_field_possible_values_info) %>

    +

    + <%= f.text_area :possible_values, :value => @custom_field.possible_values.to_a.join("\n"), :rows => 15 %> +
    <%= l(:text_custom_field_possible_values_info) %> +

    <%= @custom_field.field_format == 'bool' ? f.check_box(:default_value) : f.text_field(:default_value) %>

    <%= call_hook(:view_custom_fields_form_upper_box, :custom_field => @custom_field, :form => f) %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/custom_fields/_form.rhtml --- a/app/views/custom_fields/_form.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/custom_fields/_form.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -18,33 +18,41 @@ Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); if (p_searchable) Element.show(p_searchable.parentNode); - Element.show(p_values); + Element.show(p_values.parentNode); break; case "bool": p_default.setAttribute('type','checkbox'); Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); if (p_searchable) Element.hide(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; case "date": Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); if (p_searchable) Element.hide(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; case "float": case "int": Element.show(p_length.parentNode); Element.show(p_regexp.parentNode); if (p_searchable) Element.hide(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; + case "user": + case "version": + Element.hide(p_length.parentNode); + Element.hide(p_regexp.parentNode); + if (p_searchable) Element.hide(p_searchable.parentNode); + Element.hide(p_values.parentNode); + Element.hide(p_default.parentNode); + break; default: Element.show(p_length.parentNode); Element.show(p_regexp.parentNode); if (p_searchable) Element.show(p_searchable.parentNode); - Element.hide(p_values); + Element.hide(p_values.parentNode); break; } } @@ -54,16 +62,16 @@

    <%= f.text_field :name, :required => true %>

    -

    <%= f.select :field_format, custom_field_formats_for_select, {}, :onchange => "toggle_custom_field_format();", +

    <%= f.select :field_format, custom_field_formats_for_select(@custom_field), {}, :onchange => "toggle_custom_field_format();", :disabled => !@custom_field.new_record? %>

    <%= f.text_field :min_length, :size => 5, :no_label => true %> - <%= f.text_field :max_length, :size => 5, :no_label => true %>
    (<%=l(:text_min_max_length_info)%>)

    <%= f.text_field :regexp, :size => 50 %>
    (<%=l(:text_regexp_info)%>)

    -

    <%= f.text_area :possible_values, :value => @custom_field.possible_values.to_a.join("\n"), - :cols => 20, - :rows => 15 %> -
    <%= l(:text_custom_field_possible_values_info) %>

    +

    + <%= f.text_area :possible_values, :value => @custom_field.possible_values.to_a.join("\n"), :rows => 15 %> +
    <%= l(:text_custom_field_possible_values_info) %> +

    <%= @custom_field.field_format == 'bool' ? f.check_box(:default_value) : f.text_field(:default_value) %>

    <%= call_hook(:view_custom_fields_form_upper_box, :custom_field => @custom_field, :form => f) %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/documents/.svn/entries --- a/app/views/documents/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/documents/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/documents +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/documents http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 755690362ea0b5f92a82326872d3b0ea 2010-03-18T20:02:17.358992Z 3602 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z a7c10b428fb4d74827a6ffdcc3651a25 2010-03-18T20:06:16.936785Z 3603 @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 9d05f76602471c3dc339d8c54d2f4abc 2009-05-30T23:30:36.923541Z 2777 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 41a0e984e939e8fad03f2be67b33a4fc 2007-03-12T17:59:02.654744Z 333 @@ -168,7 +168,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z cf8b8406d31262625c1f2ab2b66020b2 2009-01-22T16:34:54.303755Z 2295 @@ -202,7 +202,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 60e54f2c42af4454d69bfc812bbf55ca 2008-02-29T19:46:58.834023Z 1180 diff -r adc8466df404 -r 753f1380d6bc app/views/enumerations/.svn/entries --- a/app/views/enumerations/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/enumerations/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/enumerations +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/enumerations http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z b4f45f24d2fb9546e609fd3299912be6 2010-05-09T11:19:15.980195Z 3734 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 0a47386b406e4f425fe541d12c780467 2009-10-21T22:34:28.905707Z 2946 @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 668687299206262ccf34ac3a44f57c33 2009-07-05T12:22:02.133266Z 2810 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z b9c8a97c172197a30cbb6c08000a9fa7 2008-06-17T19:10:54.015252Z 1558 @@ -168,7 +168,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z e6eaade1aac54267080f56f5a09d3fd1 2009-07-05T12:22:02.133266Z 2810 diff -r adc8466df404 -r 753f1380d6bc app/views/files/.svn/entries --- a/app/views/files/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/files/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/files +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 05986f09d13424caeb68601c7c9ff16b 2010-10-22T14:45:02.987126Z 4268 @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 7cd15d28fd27afa1f10b921c8b35cd7a 2010-09-14T16:24:07.840869Z 4085 diff -r adc8466df404 -r 753f1380d6bc app/views/gantts/.svn/entries --- a/app/views/gantts/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/gantts/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/gantts +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/gantts http://redmine.rubyforge.org/svn -2011-02-21T15:06:11.321114Z -4913 +2011-04-03T14:01:32.419875Z +5301 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:40:18.000000Z -6f609d119b323e4fd1a249dfbd614e38 -2011-02-21T15:06:11.321114Z -4913 +2011-06-06T13:18:33.000000Z +cd7362f337d3c416c33f6033220b22d5 +2011-04-03T14:01:32.419875Z +5301 jplang has-props @@ -58,5 +58,5 @@ -6326 +5863 diff -r adc8466df404 -r 753f1380d6bc app/views/gantts/.svn/text-base/show.html.erb.svn-base --- a/app/views/gantts/.svn/text-base/show.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/gantts/.svn/text-base/show.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ <% @gantt.view = self %>

    <%= @query.new_record? ? l(:label_gantt) : h(@query.name) %>

    -<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %> - <%= hidden_field_tag('project_id', @project.to_param) if @project%> +<% form_tag({:controller => 'gantts', :action => 'show', :project_id => @project, :month => params[:month], :year => params[:year], :months => params[:months]}, :method => :get, :id => 'query_form') do %> +<%= hidden_field_tag 'set_filter', '1' %>
    "> <%= l(:label_filter_plural) %>
    "> @@ -22,17 +22,8 @@ <%= select_year(@gantt.year_from, :prefix => "year", :discard_type => true) %> <%= hidden_field_tag 'zoom', @gantt.zoom %> -<%= link_to_remote l(:button_apply), - { :url => { :set_filter => 1 }, - :update => "content", - :with => "Form.serialize('query_form')" - }, :class => 'icon icon-checked' %> - -<%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => 1 }, - :method => :put, - :update => "content", - }, :class => 'icon icon-reload' %> +<%= link_to_function l(:button_apply), '$("query_form").submit()', :class => 'icon icon-checked' %> +<%= link_to l(:button_clear), { :project_id => @project, :set_filter => 1 }, :class => 'icon icon-reload' %>

    <% end %> @@ -178,14 +169,14 @@ - - + +
    <%= link_to_remote ('« ' + l(:label_previous)), {:url => @gantt.params_previous, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %><%= link_to_remote (l(:label_next) + ' »'), {:url => @gantt.params_next, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %><%= link_to_content_update('« ' + l(:label_previous), params.merge(@gantt.params_previous)) %><%= link_to_content_update(l(:label_next) + ' »', params.merge(@gantt.params_next)) %>
    <% other_formats_links do |f| %> - <%= f.link_to 'PDF', :url => @gantt.params %> - <%= f.link_to('PNG', :url => @gantt.params) if @gantt.respond_to?('to_image') %> + <%= f.link_to 'PDF', :url => params.merge(@gantt.params) %> + <%= f.link_to('PNG', :url => params.merge(@gantt.params)) if @gantt.respond_to?('to_image') %> <% end %> <% end # query.valid? %> diff -r adc8466df404 -r 753f1380d6bc app/views/gantts/show.html.erb --- a/app/views/gantts/show.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/gantts/show.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ <% @gantt.view = self %>

    <%= @query.new_record? ? l(:label_gantt) : h(@query.name) %>

    -<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %> - <%= hidden_field_tag('project_id', @project.to_param) if @project%> +<% form_tag({:controller => 'gantts', :action => 'show', :project_id => @project, :month => params[:month], :year => params[:year], :months => params[:months]}, :method => :get, :id => 'query_form') do %> +<%= hidden_field_tag 'set_filter', '1' %>
    "> <%= l(:label_filter_plural) %>
    "> @@ -22,17 +22,8 @@ <%= select_year(@gantt.year_from, :prefix => "year", :discard_type => true) %> <%= hidden_field_tag 'zoom', @gantt.zoom %> -<%= link_to_remote l(:button_apply), - { :url => { :set_filter => 1 }, - :update => "content", - :with => "Form.serialize('query_form')" - }, :class => 'icon icon-checked' %> - -<%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => 1 }, - :method => :put, - :update => "content", - }, :class => 'icon icon-reload' %> +<%= link_to_function l(:button_apply), '$("query_form").submit()', :class => 'icon icon-checked' %> +<%= link_to l(:button_clear), { :project_id => @project, :set_filter => 1 }, :class => 'icon icon-reload' %>

    <% end %> @@ -178,14 +169,14 @@ - - + +
    <%= link_to_remote ('« ' + l(:label_previous)), {:url => @gantt.params_previous, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %><%= link_to_remote (l(:label_next) + ' »'), {:url => @gantt.params_next, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %><%= link_to_content_update('« ' + l(:label_previous), params.merge(@gantt.params_previous)) %><%= link_to_content_update(l(:label_next) + ' »', params.merge(@gantt.params_next)) %>
    <% other_formats_links do |f| %> - <%= f.link_to 'PDF', :url => @gantt.params %> - <%= f.link_to('PNG', :url => @gantt.params) if @gantt.respond_to?('to_image') %> + <%= f.link_to 'PDF', :url => params.merge(@gantt.params) %> + <%= f.link_to('PNG', :url => params.merge(@gantt.params)) if @gantt.respond_to?('to_image') %> <% end %> <% end # query.valid? %> diff -r adc8466df404 -r 753f1380d6bc app/views/groups/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/groups/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/5878/branches/1.2-stable/app/views/groups +END diff -r adc8466df404 -r 753f1380d6bc app/views/groups/.svn/entries --- a/app/views/groups/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/groups/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/groups +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/groups http://redmine.rubyforge.org/svn -2010-10-30T16:47:33.260585Z -4312 -jbbarth +2011-04-01T16:47:30.350690Z +5284 +jplang @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 8798190a9ed51cd47a32f7fa3b14962b 2009-09-11T21:11:20.141433Z 2864 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 77b68adb1216f00c034d0afa77a50bff 2009-09-12T09:13:13.676884Z 2871 @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 61731ddfe926e25ea2108a99a7dc594d 2009-07-05T11:38:40.659710Z 2807 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z f122118621575d0b74331d392b4aba4b 2010-02-06T13:26:29.318273Z 3375 @@ -168,7 +168,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 5fc442e9118fe012a7d4049daa4d68b4 2009-09-12T16:12:42.876344Z 2879 @@ -202,7 +202,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 5f484ae9be041e266944cc2710caa394 2010-05-09T11:19:15.980195Z 3734 @@ -236,11 +236,11 @@ -2011-03-03T11:05:11.000000Z -7738dc0db4c4ad48e82613829c1e991a -2010-10-30T16:47:33.260585Z -4312 -jbbarth +2011-06-06T13:18:33.000000Z +9578abaa4df41ed89c0663dcbd1ed17c +2011-04-01T16:47:30.350690Z +5284 +jplang has-props @@ -262,7 +262,7 @@ -1625 +1624 show.html.erb file @@ -270,7 +270,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z ee1e9b07710ccd0b0dee7791dddc93bb 2009-07-05T13:54:34.821434Z 2812 @@ -304,7 +304,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 09eeec211f50994f28b31bcff9be43ef 2009-09-05T11:19:00.617770Z 2858 diff -r adc8466df404 -r 753f1380d6bc app/views/groups/.svn/text-base/_users.html.erb.svn-base --- a/app/views/groups/.svn/text-base/_users.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/groups/.svn/text-base/_users.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -24,7 +24,7 @@
    -<% users = User.active.find(:all, :limit => 100) - @group.users %> +<% users = User.active.not_in_group(@group).all(:limit => 100) %> <% if users.any? %> <% remote_form_for(:group, @group, :url => {:controller => 'groups', :action => 'add_users', :id => @group}, :method => :post) do |f| %>
    <%=l(:label_user_new)%> diff -r adc8466df404 -r 753f1380d6bc app/views/groups/_users.html.erb --- a/app/views/groups/_users.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/groups/_users.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -24,7 +24,7 @@
    -<% users = User.active.find(:all, :limit => 100) - @group.users %> +<% users = User.active.not_in_group(@group).all(:limit => 100) %> <% if users.any? %> <% remote_form_for(:group, @group, :url => {:controller => 'groups', :action => 'add_users', :id => @group}, :method => :post) do |f| %>
    <%=l(:label_user_new)%> diff -r adc8466df404 -r 753f1380d6bc app/views/issue_categories/.svn/entries --- a/app/views/issue_categories/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issue_categories/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/issue_categories +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/issue_categories http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 61ef938e10897a71008d145439614aa8 2010-03-06T18:43:00.594668Z 3549 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z e0d28729320423a7b8fcb6309b58de9a 2010-11-07T14:56:12.614499Z 4385 @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z fc3f04670edce3c08e645d254198a89c 2007-09-14T11:34:08.234701Z 725 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z f7b34c60cf2f117d3c53be7b0840fe28 2008-02-29T22:54:07.325361Z 1182 diff -r adc8466df404 -r 753f1380d6bc app/views/issue_moves/.svn/entries --- a/app/views/issue_moves/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issue_moves/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/issue_moves +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/issue_moves http://redmine.rubyforge.org/svn -2010-12-29T20:48:51.915261Z -4583 +2011-04-12T19:22:44.432354Z +5443 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:05:10.000000Z -9a221a421165c46becefe4e15dc6266c -2010-12-29T20:48:51.915261Z -4583 +2011-06-06T13:18:33.000000Z +1adceabf61b6f698270cbf4b97c42a83 +2011-04-12T19:22:44.432354Z +5443 jplang has-props @@ -58,5 +58,5 @@ -2874 +2946 diff -r adc8466df404 -r 753f1380d6bc app/views/issue_moves/.svn/text-base/new.rhtml.svn-base --- a/app/views/issue_moves/.svn/text-base/new.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issue_moves/.svn/text-base/new.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -74,3 +74,6 @@ <%= submit_tag l(:button_move_and_follow), :name => 'follow' %> <% end %> <% end %> +<% content_for :header_tags do %> + <%= robot_exclusion_tag %> +<% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issue_moves/new.rhtml --- a/app/views/issue_moves/new.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issue_moves/new.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -74,3 +74,6 @@ <%= submit_tag l(:button_move_and_follow), :name => 'follow' %> <% end %> <% end %> +<% content_for :header_tags do %> + <%= robot_exclusion_tag %> +<% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issue_relations/.svn/entries --- a/app/views/issue_relations/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issue_relations/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/issue_relations +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/issue_relations http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 7024ae266ddb4d218d7c24c3b17fa790 2010-12-12T16:04:28.950669Z 4502 diff -r adc8466df404 -r 753f1380d6bc app/views/issue_statuses/.svn/entries --- a/app/views/issue_statuses/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issue_statuses/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/issue_statuses +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/issue_statuses http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 2d8b318bb1dbbe6dbb478716d52e65e9 2010-03-17T20:46:22.413470Z 3600 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z e4ea04eeab7c1f7265858a9dd09f1b7b 2009-12-12T10:33:12.138303Z 3157 @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 21f8b2f134a83413d09ae7e4d004c642 2009-07-05T12:22:02.133266Z 2810 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z af751ca552f43d9954a0cb1bbdb6e362 2009-07-05T12:22:02.133266Z 2810 diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/all-wcprops --- a/app/views/issues/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,125 +1,5 @@ -K 25 -svn:wc:ra_dav:version-url -V 41 -/svn/!svn/ver/4908/trunk/app/views/issues -END -_relations.rhtml -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/4741/trunk/app/views/issues/_relations.rhtml -END -_history.rhtml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4062/trunk/app/views/issues/_history.rhtml -END -_action_menu.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4258/trunk/app/views/issues/_action_menu.rhtml -END -bulk_edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4533/trunk/app/views/issues/bulk_edit.rhtml -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4311/trunk/app/views/issues/_form.rhtml -END -_form_update.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3151/trunk/app/views/issues/_form_update.rhtml -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4093/trunk/app/views/issues/index.rhtml -END -_sidebar.rhtml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4908/trunk/app/views/issues/_sidebar.rhtml -END -_list.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4056/trunk/app/views/issues/_list.rhtml -END -index.api.rsb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4489/trunk/app/views/issues/index.api.rsb +/svn/!svn/ver/5878/branches/1.2-stable/app/views/issues END -show.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4530/trunk/app/views/issues/show.rhtml -END -_form_custom_fields.rhtml -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/2827/trunk/app/views/issues/_form_custom_fields.rhtml -END -_list_simple.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3924/trunk/app/views/issues/_list_simple.rhtml -END -_changesets.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4652/trunk/app/views/issues/_changesets.rhtml -END -_edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3946/trunk/app/views/issues/_edit.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/1129/trunk/app/views/issues/edit.rhtml -END -_attributes.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4090/trunk/app/views/issues/_attributes.rhtml -END -show.api.rsb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4741/trunk/app/views/issues/show.api.rsb -END -destroy.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/2685/trunk/app/views/issues/destroy.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4311/trunk/app/views/issues/new.rhtml -END diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/entries --- a/app/views/issues/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/issues +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/issues http://redmine.rubyforge.org/svn -2011-02-21T13:34:33.010064Z -4908 +2011-04-17T15:17:18.418900Z +5495 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:05:11.000000Z -071e7d5deebfed5ec01c6fa478e57a6d -2011-01-22T13:28:20.816262Z -4741 +2011-06-06T13:18:33.000000Z +c18fc1bae24038d3386be81993a37678 +2011-04-12T19:37:56.793879Z +5444 jplang has-props @@ -58,7 +58,41 @@ -1763 +2023 + +_action_menu.rhtml +file + + + + +2011-06-06T13:18:33.000000Z +c7a3bc51851c2b924a4af2ac51c6a22d +2011-04-17T15:17:18.418900Z +5495 +jplang + + + + + + + + + + + + + + + + + + + + + +1154 _history.rhtml file @@ -66,11 +100,11 @@ -2011-03-03T11:05:11.000000Z -8d719ade30044f529f104cda9dcdd6f4 -2010-09-05T22:57:20.669640Z -4062 -edavis10 +2011-06-06T13:18:33.000000Z +0c7fe4dc90630a9b92d43aad7ad1db70 +2011-03-28T20:04:48.692581Z +5240 +jplang has-props @@ -92,19 +126,20 @@ -859 +1019 -_action_menu.rhtml +_form.rhtml file -2011-03-03T11:05:11.000000Z -74c6e939ebb113c49a367fff0f463f63 -2010-10-15T23:11:05.712143Z -4258 -edavis10 +2011-06-06T13:18:33.000000Z +7e86b1795a1640748d794c3439ddab1d +2011-04-15T13:23:13.506236Z +5466 +jplang +has-props @@ -125,8 +160,7 @@ - -1285 +1915 bulk_edit.rhtml file @@ -134,10 +168,10 @@ -2011-03-03T11:05:11.000000Z -f3bdc270087564333ffdacd38f1d363c -2010-12-18T14:14:04.023240Z -4533 +2011-06-06T13:18:33.000000Z +5a6cefefd1c00a9d9c0f4ee125cbe147 +2011-04-07T16:34:58.239484Z +5354 jplang has-props @@ -160,41 +194,7 @@ -3443 - -_form.rhtml -file - - - - -2011-03-03T11:05:11.000000Z -7c3d2a41291eabbd1c7e28139be69e49 -2010-10-30T16:15:31.867344Z -4311 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -2033 +3826 _form_update.rhtml file @@ -202,7 +202,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 00a1336147a304d10f556a97f7105a83 2009-12-11T18:48:34.197724Z 3151 @@ -236,11 +236,11 @@ -2011-03-03T11:05:11.000000Z -5a8516dceeaac8769ab1780f8e9cccd9 -2010-09-16T21:33:49.399868Z -4093 -jbbarth +2011-06-06T13:18:33.000000Z +dda747decb5c11cd589cd5592a2d5bfa +2011-04-01T14:34:44.070899Z +5276 +jplang has-props @@ -262,7 +262,7 @@ -4097 +3557 _sidebar.rhtml file @@ -270,7 +270,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z b9c2ef98cde787dfe8b1b0b4df497613 2011-02-21T13:34:33.010064Z 4908 @@ -304,11 +304,11 @@ -2011-03-03T11:05:11.000000Z -b5bd20e1b16f321b87b14ec6d0b7a9e7 -2010-09-03T19:59:49.465806Z -4056 -jbbarth +2011-06-06T13:18:33.000000Z +da2cbff6bc215672172e60589b16c9dd +2011-04-05T22:18:49.170029Z +5332 +jplang has-props @@ -330,7 +330,7 @@ -1772 +1918 index.api.rsb file @@ -338,7 +338,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z db6f5533a330ebdcd1dd5e4c47098024 2010-12-11T13:13:49.013705Z 4489 @@ -372,10 +372,10 @@ -2011-03-03T11:05:11.000000Z -f147a1cbca0263a122d10bf674d6dcbf -2010-12-18T13:40:50.641112Z -4530 +2011-06-06T13:18:33.000000Z +16879c3e81700c198a7bfac049e25f20 +2011-04-12T19:53:14.178577Z +5447 jplang has-props @@ -398,7 +398,7 @@ -5468 +5420 _form_custom_fields.rhtml file @@ -406,7 +406,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 5cac68d4655699c1a4ce40ef17da7b0a 2009-07-29T19:04:27.717761Z 2827 @@ -434,13 +434,47 @@ 353 +_changesets.rhtml +file + + + + +2011-06-06T13:18:33.000000Z +161df5bf4aad48f815ece5d61f73b5bf +2011-04-03T12:33:27.904025Z +5300 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +457 + _list_simple.rhtml file -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 334ec8cd87b661a181185092c242c41d 2010-08-08T07:07:20.961363Z 3924 @@ -468,47 +502,13 @@ 989 -_changesets.rhtml -file - - - - -2011-03-03T11:05:11.000000Z -eca2b7cfea14ef6185c358e55f1b8b48 -2011-01-08T00:19:51.192586Z -4652 -tmaruyama -has-props - - - - - - - - - - - - - - - - - - - - -470 - _edit.rhtml file -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z ebae2e20ea4028620967382b877b5860 2010-08-18T15:01:35.032314Z 3946 @@ -542,10 +542,10 @@ -2011-03-03T11:05:11.000000Z -4b6048de503364b0ef668df08cceb602 -2008-02-09T16:11:18.249226Z -1129 +2011-06-06T13:18:33.000000Z +5b30673e11cba7d16c5d3b9d58ac17c7 +2011-04-12T19:22:44.432354Z +5443 jplang has-props @@ -568,7 +568,7 @@ -90 +165 _attributes.rhtml file @@ -576,11 +576,11 @@ -2011-03-03T11:05:11.000000Z -e2c801f0755567e34186cdbbc510d29d -2010-09-16T18:27:33.887969Z -4090 -edavis10 +2011-06-06T13:18:33.000000Z +95ca7e4a068d06c8efedc1c0cc4718d2 +2011-04-11T18:01:25.736617Z +5418 +jplang has-props @@ -602,7 +602,7 @@ -2461 +2791 show.api.rsb file @@ -610,7 +610,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z cdb3db6cd78da1f46578c9da61923c4e 2011-01-22T13:28:20.816262Z 4741 @@ -644,7 +644,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z b429d0e7dd6b3ef7bc1a28bdf0aeaf34 2009-04-24T17:18:36.117696Z 2685 @@ -678,11 +678,11 @@ -2011-03-03T11:05:11.000000Z -9889d4cce0dfd6d224e85fc1f489c623 -2010-10-30T16:15:31.867344Z -4311 -jbbarth +2011-06-06T13:18:33.000000Z +952a57c3e6f5fc66fde1304569b7eb5d +2011-04-12T19:22:44.432354Z +5443 +jplang has-props @@ -704,5 +704,5 @@ -1154 +1185 diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/_action_menu.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_action_menu.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/_action_menu.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,10 +1,9 @@
    <%= link_to_if_authorized(l(:button_update), {:controller => 'issues', :action => 'edit', :id => @issue }, :onclick => 'showAndScrollTo("update", "notes"); return false;', :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %> <%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'new', :issue_id => @issue}, :class => 'icon icon-time-add' %> -<% replace_watcher ||= 'watcher' %> -<%= watcher_tag(@issue, User.current, {:id => replace_watcher, :replace => ['watcher','watcher2']}) %> +<%= watcher_tag(@issue, User.current) %> <%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %> <%= link_to_if_authorized l(:button_copy), {:controller => 'issue_moves', :action => 'new', :id => @issue, :copy_options => {:copy => 't'}}, :class => 'icon icon-copy' %> <%= link_to_if_authorized l(:button_move), {:controller => 'issue_moves', :action => 'new', :id => @issue}, :class => 'icon icon-move' %> -<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => (@issue.leaf? ? l(:text_are_you_sure) : l(:text_are_you_sure_with_children)), :method => :post, :class => 'icon icon-del' %> +<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => issues_destroy_confirmation_message(@issue), :method => :post, :class => 'icon icon-del' %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/_attributes.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_attributes.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/_attributes.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -31,6 +31,11 @@
    +<% if User.current.allowed_to?(:manage_subtasks, @project) %> +

    <%= f.text_field :parent_issue_id, :size => 10 %>

    +
    +<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> +<% end %>

    <%= f.text_field :start_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_start_date') if @issue.leaf? %>

    <%= f.text_field :due_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_due_date') if @issue.leaf? %>

    <%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf? %> <%= l(:field_hours) %>

    diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/_changesets.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_changesets.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/_changesets.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -3,7 +3,7 @@

    <%= link_to_revision(changeset, changeset.project, :text => "#{l(:label_revision)} #{changeset.format_identifier}") %>
    <%= authoring(changeset.committed_on, changeset.author) %>

    -
    +
    <%= textilizable(changeset, :comments) %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/_form.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_form.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/_form.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,19 +1,17 @@ <%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>
    > +<% if @issue.safe_attribute_names.include?('is_private') %> +

    + +

    +<% end %>

    <%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %>

    <%= observe_field :issue_tracker_id, :url => { :action => :new, :project_id => @project, :id => @issue }, :update => :attributes, :with => "Form.serialize('issue-form')" %>

    <%= f.text_field :subject, :size => 80, :required => true %>

    - -<% if User.current.allowed_to?(:manage_subtasks, @project) %> -

    <%= f.text_field :parent_issue_id, :size => 10 %>

    -
    -<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> -<% end %> -

    <%= f.text_area :description, :cols => 60, :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min), diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/_history.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_history.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/_history.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -17,3 +17,5 @@

    <%= call_hook(:view_issues_history_journal_bottom, { :journal => journal }) %> <% end %> + +<% heads_for_wiki_formatter if User.current.allowed_to?(:edit_issue_notes, issue.project) || User.current.allowed_to?(:edit_own_issue_notes, issue.project) %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/_list.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_list.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/_list.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -20,6 +20,7 @@   <%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> (<%= @issue_count_by_group[group] %>) + <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %> <% previous_group = group %> @@ -27,7 +28,7 @@ "> <%= check_box_tag("ids[]", issue.id, false, :id => nil) %> <%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %> - <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %> + <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.css_classes %><% end %> <% end -%> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/_relations.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_relations.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/_relations.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@
    -<% if authorize_for('issue_relations', 'new') %> +<% if User.current.allowed_to?(:manage_issue_relations, @project) %> <%= toggle_link l(:button_add), 'new-relation-form', {:focus => 'relation_issue_to_id'} %> <% end %>
    @@ -7,22 +7,25 @@

    <%=l(:label_related_issues)%>

    <% if @relations.present? %> - + +
    <% @relations.each do |relation| %> - - + + - - - - + + + <% end %>
    <%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %> +
    <%= check_box_tag("ids[]", relation.other_issue(@issue).id, false, :id => nil) %><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %> <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %> <%= link_to_issue(relation.other_issue(@issue), :truncate => 60) %> <%= relation.other_issue(@issue).status.name %><%= format_date(relation.other_issue(@issue).start_date) %><%= format_date(relation.other_issue(@issue).due_date) %><%= link_to_remote(image_tag('delete.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :issue_id => @issue, :id => relation}, +<%= relation.other_issue(@issue).status.name %><%= format_date(relation.other_issue(@issue).start_date) %><%= format_date(relation.other_issue(@issue).due_date) %><%= link_to_remote(image_tag('link_break.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :issue_id => @issue, :id => relation}, :method => :post }, :title => l(:label_relation_delete)) if authorize_for('issue_relations', 'destroy') %>
    + <% end %> <% remote_form_for(:relation, @relation, diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/bulk_edit.rhtml.svn-base --- a/app/views/issues/.svn/text-base/bulk_edit.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/bulk_edit.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -48,13 +48,21 @@ <% end %> <% @custom_fields.each do |custom_field| %> -

    <%= custom_field_tag_for_bulk_edit('issue', custom_field) %>

    +

    <%= custom_field_tag_for_bulk_edit('issue', custom_field, @projects) %>

    <% end %> <%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
    +<% if @project && User.current.allowed_to?(:manage_subtasks, @project) %> +

    + + <%= text_field_tag 'issue[parent_issue_id]', '', :size => 10 %> +

    +
    +<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:project_id => @project) }')" %> +<% end %>

    <%= text_field_tag 'issue[start_date]', '', :size => 10 %><%= calendar_for('issue_start_date') %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/edit.rhtml.svn-base --- a/app/views/issues/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/edit.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,6 @@

    <%=h "#{@issue.tracker.name} ##{@issue.id}" %>

    <%= render :partial => 'edit' %> +<% content_for :header_tags do %> + <%= robot_exclusion_tag %> +<% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/index.rhtml.svn-base --- a/app/views/issues/.svn/text-base/index.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/index.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -8,8 +8,8 @@

    <%= @query.new_record? ? l(:label_issue_plural) : h(@query.name) %>

    <% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %> -<% form_tag({ :controller => 'queries', :action => 'new' }, :id => 'query_form') do %> - <%= hidden_field_tag('project_id', @project.to_param) if @project %> +<% form_tag({ :controller => 'issues', :action => 'index', :project_id => @project }, :method => :get, :id => 'query_form') do %> + <%= hidden_field_tag 'set_filter', '1' %>
    "> <%= l(:label_filter_plural) %> @@ -35,22 +35,10 @@

    - <%= link_to_remote l(:button_apply), - { :url => { :set_filter => 1 }, - :before => 'selectAllOptions("selected_columns");', - :update => "content", - :complete => "apply_filters_observer()", - :with => "Form.serialize('query_form')" - }, :class => 'icon icon-checked' %> - - <%= link_to_remote l(:button_clear), - { :url => { :set_filter => 1, :project_id => @project }, - :method => :get, - :update => "content", - }, :class => 'icon icon-reload' %> - + <%= link_to_function l(:button_apply), 'submit_query_form("query_form")', :class => 'icon icon-checked' %> + <%= link_to l(:button_clear), { :set_filter => 1, :project_id => @project }, :class => 'icon icon-reload' %> <% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %> - <%= link_to l(:button_save), {}, :onclick => "selectAllOptions('selected_columns'); $('query_form').submit(); return false;", :class => 'icon icon-save' %> + <%= link_to_function l(:button_save), "$('query_form').action='#{ url_for :controller => 'queries', :action => 'new', :project_id => @project }'; submit_query_form('query_form')", :class => 'icon icon-save' %> <% end %>

    <% end %> @@ -65,9 +53,9 @@ <% end %> <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => { :project_id => @project, :query_id => (@query.new_record? ? nil : @query), :key => User.current.rss_key } %> - <%= f.link_to 'CSV', :url => { :project_id => @project } %> - <%= f.link_to 'PDF', :url => { :project_id => @project } %> + <%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %> + <%= f.link_to 'CSV', :url => params %> + <%= f.link_to 'PDF', :url => params %> <% end %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/new.rhtml.svn-base --- a/app/views/issues/.svn/text-base/new.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/new.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -23,4 +23,5 @@ <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> + <%= robot_exclusion_tag %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/.svn/text-base/show.rhtml.svn-base --- a/app/views/issues/.svn/text-base/show.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/.svn/text-base/show.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,6 +1,6 @@ <%= render :partial => 'action_menu' %> -

    <%= @issue.tracker.name %> #<%= @issue.id %>

    +

    <%= issue_heading(@issue) %>

    <%= avatar(@issue.author, :size => "50") %> @@ -73,7 +73,7 @@
    <% end %> -<% if authorize_for('issue_relations', 'new') || @issue.relations.present? %> +<% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %>
    <%= render :partial => 'relations' %> @@ -98,7 +98,7 @@
    -<%= render :partial => 'action_menu', :locals => {:replace_watcher => 'watcher2' } %> +<%= render :partial => 'action_menu' %>
    <% if authorize_for('issues', 'edit') %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/_action_menu.rhtml --- a/app/views/issues/_action_menu.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/_action_menu.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -1,10 +1,9 @@
    <%= link_to_if_authorized(l(:button_update), {:controller => 'issues', :action => 'edit', :id => @issue }, :onclick => 'showAndScrollTo("update", "notes"); return false;', :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %> <%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'new', :issue_id => @issue}, :class => 'icon icon-time-add' %> -<% replace_watcher ||= 'watcher' %> -<%= watcher_tag(@issue, User.current, {:id => replace_watcher, :replace => ['watcher','watcher2']}) %> +<%= watcher_tag(@issue, User.current) %> <%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %> <%= link_to_if_authorized l(:button_copy), {:controller => 'issue_moves', :action => 'new', :id => @issue, :copy_options => {:copy => 't'}}, :class => 'icon icon-copy' %> <%= link_to_if_authorized l(:button_move), {:controller => 'issue_moves', :action => 'new', :id => @issue}, :class => 'icon icon-move' %> -<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => (@issue.leaf? ? l(:text_are_you_sure) : l(:text_are_you_sure_with_children)), :method => :post, :class => 'icon icon-del' %> +<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => issues_destroy_confirmation_message(@issue), :method => :post, :class => 'icon icon-del' %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/issues/_attributes.rhtml --- a/app/views/issues/_attributes.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/_attributes.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -31,6 +31,11 @@
    +<% if User.current.allowed_to?(:manage_subtasks, @project) %> +

    <%= f.text_field :parent_issue_id, :size => 10 %>

    +
    +<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> +<% end %>

    <%= f.text_field :start_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_start_date') if @issue.leaf? %>

    <%= f.text_field :due_date, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for('issue_due_date') if @issue.leaf? %>

    <%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf? %> <%= l(:field_hours) %>

    diff -r adc8466df404 -r 753f1380d6bc app/views/issues/_changesets.rhtml --- a/app/views/issues/_changesets.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/_changesets.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -3,7 +3,7 @@

    <%= link_to_revision(changeset, changeset.project, :text => "#{l(:label_revision)} #{changeset.format_identifier}") %>
    <%= authoring(changeset.committed_on, changeset.author) %>

    -
    +
    <%= textilizable(changeset, :comments) %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/issues/_form.rhtml --- a/app/views/issues/_form.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/_form.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -1,21 +1,17 @@ <%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>
    > +<% if @issue.safe_attribute_names.include?('is_private') %> +

    + +

    +<% end %>

    <%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %>

    <%= observe_field :issue_tracker_id, :url => { :action => :new, :project_id => @project, :id => @issue }, :update => :attributes, :with => "Form.serialize('issue-form')" %>

    <%= f.text_field :subject, :size => 80, :required => true %>

    - -<% if User.current.allowed_to?(:manage_subtasks, @project) %> -

    <%= f.text_field :parent_issue_id, :size => 10, :autocomplete => :on %> -
    - <%=l(:text_issue_parent_issue_info)%> -

    -
    - <%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> -<% end %>

    <%= f.text_area :description, :cols => 60, diff -r adc8466df404 -r 753f1380d6bc app/views/issues/_history.rhtml --- a/app/views/issues/_history.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/_history.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -17,3 +17,5 @@

    <%= call_hook(:view_issues_history_journal_bottom, { :journal => journal }) %> <% end %> + +<% heads_for_wiki_formatter if User.current.allowed_to?(:edit_issue_notes, issue.project) || User.current.allowed_to?(:edit_own_issue_notes, issue.project) %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/_list.rhtml --- a/app/views/issues/_list.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/_list.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -20,6 +20,7 @@   <%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> (<%= @issue_count_by_group[group] %>) + <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %> <% previous_group = group %> @@ -27,7 +28,7 @@ "> <%= check_box_tag("ids[]", issue.id, false, :id => nil) %> <%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %> - <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %> + <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.css_classes %><% end %> <% end -%> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/_relations.rhtml --- a/app/views/issues/_relations.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/_relations.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@
    -<% if authorize_for('issue_relations', 'new') %> +<% if User.current.allowed_to?(:manage_issue_relations, @project) %> <%= toggle_link l(:button_add), 'new-relation-form', {:focus => 'relation_issue_to_id'} %> <% end %>
    @@ -7,22 +7,25 @@

    <%=l(:label_related_issues)%>

    <% if @relations.present? %> - + +
    <% @relations.each do |relation| %> - - + + - - - - + + + <% end %>
    <%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %> +
    <%= check_box_tag("ids[]", relation.other_issue(@issue).id, false, :id => nil) %><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %> <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %> <%= link_to_issue(relation.other_issue(@issue), :truncate => 60) %> <%= relation.other_issue(@issue).status.name %><%= format_date(relation.other_issue(@issue).start_date) %><%= format_date(relation.other_issue(@issue).due_date) %><%= link_to_remote(image_tag('delete.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :issue_id => @issue, :id => relation}, +<%= relation.other_issue(@issue).status.name %><%= format_date(relation.other_issue(@issue).start_date) %><%= format_date(relation.other_issue(@issue).due_date) %><%= link_to_remote(image_tag('link_break.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :issue_id => @issue, :id => relation}, :method => :post }, :title => l(:label_relation_delete)) if authorize_for('issue_relations', 'destroy') %>
    + <% end %> <% remote_form_for(:relation, @relation, diff -r adc8466df404 -r 753f1380d6bc app/views/issues/bulk_edit.rhtml --- a/app/views/issues/bulk_edit.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/bulk_edit.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -48,13 +48,21 @@ <% end %> <% @custom_fields.each do |custom_field| %> -

    <%= custom_field_tag_for_bulk_edit('issue', custom_field) %>

    +

    <%= custom_field_tag_for_bulk_edit('issue', custom_field, @projects) %>

    <% end %> <%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
    +<% if @project && User.current.allowed_to?(:manage_subtasks, @project) %> +

    + + <%= text_field_tag 'issue[parent_issue_id]', '', :size => 10 %> +

    +
    +<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:project_id => @project) }')" %> +<% end %>

    <%= text_field_tag 'issue[start_date]', '', :size => 10 %><%= calendar_for('issue_start_date') %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/edit.rhtml --- a/app/views/issues/edit.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/edit.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -1,3 +1,6 @@

    <%=h "#{@issue.tracker.name} ##{@issue.id}" %>

    <%= render :partial => 'edit' %> +<% content_for :header_tags do %> + <%= robot_exclusion_tag %> +<% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/index.rhtml --- a/app/views/issues/index.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/index.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -8,8 +8,8 @@

    <%= @query.new_record? ? l(:label_issue_plural) : h(@query.name) %>

    <% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %> -<% form_tag({ :controller => 'queries', :action => 'new' }, :id => 'query_form') do %> - <%= hidden_field_tag('project_id', @project.to_param) if @project %> +<% form_tag({ :controller => 'issues', :action => 'index', :project_id => @project }, :method => :get, :id => 'query_form') do %> + <%= hidden_field_tag 'set_filter', '1' %>
    "> <%= l(:label_filter_plural) %> @@ -35,22 +35,10 @@

    - <%= link_to_remote l(:button_apply), - { :url => { :set_filter => 1 }, - :before => 'selectAllOptions("selected_columns");', - :update => "content", - :complete => "apply_filters_observer()", - :with => "Form.serialize('query_form')" - }, :class => 'icon icon-checked' %> - - <%= link_to_remote l(:button_clear), - { :url => { :set_filter => 1, :project_id => @project }, - :method => :get, - :update => "content", - }, :class => 'icon icon-reload' %> - + <%= link_to_function l(:button_apply), 'submit_query_form("query_form")', :class => 'icon icon-checked' %> + <%= link_to l(:button_clear), { :set_filter => 1, :project_id => @project }, :class => 'icon icon-reload' %> <% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %> - <%= link_to l(:button_save), {}, :onclick => "selectAllOptions('selected_columns'); $('query_form').submit(); return false;", :class => 'icon icon-save' %> + <%= link_to_function l(:button_save), "$('query_form').action='#{ url_for :controller => 'queries', :action => 'new', :project_id => @project }'; submit_query_form('query_form')", :class => 'icon icon-save' %> <% end %>

    <% end %> @@ -65,9 +53,9 @@ <% end %> <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => { :project_id => @project, :query_id => (@query.new_record? ? nil : @query), :key => User.current.rss_key } %> - <%= f.link_to 'CSV', :url => { :project_id => @project } %> - <%= f.link_to 'PDF', :url => { :project_id => @project } %> + <%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %> + <%= f.link_to 'CSV', :url => params %> + <%= f.link_to 'PDF', :url => params %> <% end %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/new.rhtml --- a/app/views/issues/new.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/new.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -23,4 +23,5 @@ <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> + <%= robot_exclusion_tag %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/issues/show.rhtml --- a/app/views/issues/show.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/issues/show.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -1,6 +1,6 @@ <%= render :partial => 'action_menu' %> -

    <%= @issue.tracker.name %> #<%= @issue.id %>

    +

    <%= issue_heading(@issue) %>

    <%= avatar(@issue.author, :size => "50") %> @@ -73,7 +73,7 @@
    <% end %> -<% if authorize_for('issue_relations', 'new') || @issue.relations.present? %> +<% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %>
    <%= render :partial => 'relations' %> @@ -98,7 +98,7 @@
    -<%= render :partial => 'action_menu', :locals => {:replace_watcher => 'watcher2' } %> +<%= render :partial => 'action_menu' %>
    <% if authorize_for('issues', 'edit') %> diff -r adc8466df404 -r 753f1380d6bc app/views/journals/.svn/all-wcprops --- a/app/views/journals/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/journals/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,35 +1,5 @@ -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4954/trunk/app/views/journals -END -_notes_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/2924/trunk/app/views/journals/_notes_form.rhtml -END -update.rjs -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3596/trunk/app/views/journals/update.rjs -END -edit.rjs -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/1105/trunk/app/views/journals/edit.rjs -END -diff.html.erb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4954/trunk/app/views/journals/diff.html.erb +/svn/!svn/ver/5878/branches/1.2-stable/app/views/journals END -index.rxml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4034/trunk/app/views/journals/index.rxml -END diff -r adc8466df404 -r 753f1380d6bc app/views/journals/.svn/entries --- a/app/views/journals/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/journals/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/journals +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/journals http://redmine.rubyforge.org/svn -2011-02-27T13:34:41.060565Z -4954 +2011-03-28T21:45:30.892324Z +5246 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:05:10.000000Z -fb8a5b1bfdbadbbaaa17ce7fc1dfcf3c -2009-10-11T10:36:11.599175Z -2924 +2011-06-06T13:18:33.000000Z +6f96a31cd9e465b7b9324190b604aac1 +2011-03-28T21:45:30.892324Z +5246 jplang has-props @@ -58,7 +58,7 @@ -656 +1304 update.rjs file @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 269ec86216a5d0340e02940f1b190d51 2010-03-17T04:13:05.342620Z 3596 @@ -100,7 +100,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z ce552c52f7c423630412d0593cc1ee61 2008-02-02T10:50:31.694950Z 1105 @@ -134,7 +134,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 073352211ae7cecb9e1ff5ea1ce17150 2011-02-27T13:34:41.060565Z 4954 @@ -168,7 +168,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z ef7f777c9318cee52e909377c4f96e8b 2010-08-23T15:04:36.844654Z 4034 diff -r adc8466df404 -r 753f1380d6bc app/views/journals/.svn/text-base/_notes_form.rhtml.svn-base --- a/app/views/journals/.svn/text-base/_notes_form.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/journals/.svn/text-base/_notes_form.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,21 @@ <% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %> - <%= text_area_tag :notes, @journal.notes, :class => 'wiki-edit', - :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> + <%= text_area_tag :notes, @journal.notes, + :id => "journal_#{@journal.id}_notes", + :class => 'wiki-edit', + :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>

    <%= submit_tag l(:button_save) %> + <%= link_to_remote l(:label_preview), + { :url => preview_issue_path(:project_id => @project, :id => @journal.issue), + :method => 'post', + :update => "journal_#{@journal.id}_preview", + :with => "Form.serialize('journal-#{@journal.id}-form')", + :complete => "Element.scrollTo('journal_#{@journal.id}_preview')" + }, :accesskey => accesskey(:preview) %> + | <%= link_to l(:button_cancel), '#', :onclick => "Element.remove('journal-#{@journal.id}-form'); " + "Element.show('journal-#{@journal.id}-notes'); return false;" %>

    + +
    <% end %> +<%= wikitoolbar_for "journal_#{@journal.id}_notes" %> diff -r adc8466df404 -r 753f1380d6bc app/views/journals/_notes_form.rhtml --- a/app/views/journals/_notes_form.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/journals/_notes_form.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,21 @@ <% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %> - <%= text_area_tag :notes, @journal.notes, :class => 'wiki-edit', - :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> + <%= text_area_tag :notes, @journal.notes, + :id => "journal_#{@journal.id}_notes", + :class => 'wiki-edit', + :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>

    <%= submit_tag l(:button_save) %> + <%= link_to_remote l(:label_preview), + { :url => preview_issue_path(:project_id => @project, :id => @journal.issue), + :method => 'post', + :update => "journal_#{@journal.id}_preview", + :with => "Form.serialize('journal-#{@journal.id}-form')", + :complete => "Element.scrollTo('journal_#{@journal.id}_preview')" + }, :accesskey => accesskey(:preview) %> + | <%= link_to l(:button_cancel), '#', :onclick => "Element.remove('journal-#{@journal.id}-form'); " + "Element.show('journal-#{@journal.id}-notes'); return false;" %>

    + +
    <% end %> +<%= wikitoolbar_for "journal_#{@journal.id}_notes" %> diff -r adc8466df404 -r 753f1380d6bc app/views/layouts/.svn/all-wcprops --- a/app/views/layouts/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/layouts/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,29 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 42 -/svn/!svn/ver/4965/trunk/app/views/layouts +V 56 +/svn/!svn/ver/5878/branches/1.2-stable/app/views/layouts END -base.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4965/trunk/app/views/layouts/base.rhtml -END -mailer.text.plain.erb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4362/trunk/app/views/layouts/mailer.text.plain.erb -END -mailer.text.html.erb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4362/trunk/app/views/layouts/mailer.text.html.erb -END -admin.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3176/trunk/app/views/layouts/admin.rhtml -END diff -r adc8466df404 -r 753f1380d6bc app/views/layouts/.svn/entries --- a/app/views/layouts/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/layouts/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/layouts +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/layouts http://redmine.rubyforge.org/svn -2011-02-28T16:44:02.921792Z -4965 +2011-03-28T19:59:35.933790Z +5239 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:40:18.000000Z -be984c02903b5fdba04df41a14c73242 -2011-02-28T16:44:02.921792Z -4965 +2011-06-06T13:18:33.000000Z +b4bb84ecaf9a28dd92d63bc219ca26e0 +2011-03-28T19:59:35.933790Z +5239 jplang has-props @@ -58,7 +58,7 @@ -2912 +3029 mailer.text.plain.erb file @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 490231bbc42932a0f9e1735a94d06260 2010-11-02T19:00:36.834304Z 4362 @@ -100,7 +100,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 5073a425d4e7896c725996f9cf35f74b 2010-11-02T19:00:36.834304Z 4362 @@ -134,7 +134,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z cc6ca08e56314fb510561e8eeb4ede46 2009-12-17T18:21:02.630202Z 3176 diff -r adc8466df404 -r 753f1380d6bc app/views/layouts/.svn/text-base/base.rhtml.svn-base --- a/app/views/layouts/.svn/text-base/base.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/layouts/.svn/text-base/base.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -5,12 +5,12 @@ <%=h html_title %> +<%= csrf_meta_tag %> <%= favicon %> <%= stylesheet_link_tag 'application', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_heads %> <%= heads_for_theme %> -<%= heads_for_wiki_formatter %> +
    +

    <%=l(:label_information_plural)%>

    <%= f.text_field :login, :required => true, :size => 25 %>

    <%= f.text_field :firstname, :required => true %>

    @@ -19,8 +22,8 @@ <%= call_hook(:view_users_form, :user => @user, :form => f) %>
    +

    <%=l(:label_authentication)%>

    -

    <%=l(:label_authentication)%>

    <% unless @auth_sources.empty? %>

    <%= f.select :auth_source_id, ([[l(:label_internal), ""]] + @auth_sources.collect { |a| [a.name, a.id] }), {}, :onchange => "if (this.value=='') {Element.show('password_fields');} else {Element.hide('password_fields');}" %>

    <% end %> @@ -30,14 +33,19 @@

    <%= f.password_field :password_confirmation, :required => true, :size => 25 %>

    +
    +
    +

    <%=l(:field_mail_notification)%>

    -

    <%=l(:field_mail_notification)%>

    <%= render :partial => 'users/mail_notifications' %>
    +

    <%=l(:label_preferences)%>

    -

    <%=l(:label_preferences)%>

    <%= render :partial => 'users/preferences' %>
    +
    +
    +
    diff -r adc8466df404 -r 753f1380d6bc app/views/users/.svn/text-base/index.rhtml.svn-base --- a/app/views/users/.svn/text-base/index.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/users/.svn/text-base/index.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -8,9 +8,16 @@
    <%= l(:label_filter_plural) %> <%= select_tag 'status', users_status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;" %> + +<% if @groups.present? %> + +<%= select_tag 'group_id', '' + options_from_collection_for_select(@groups, :id, :name, params[:group_id].to_i), :onchange => "this.form.submit(); return false;" %> +<% end %> + <%= text_field_tag 'name', params[:name], :size => 30 %> <%= submit_tag l(:button_apply), :class => "small", :name => nil %> +<%= link_to l(:button_clear), users_path, :class => 'icon icon-reload' %>
    <% end %>   diff -r adc8466df404 -r 753f1380d6bc app/views/users/_form.rhtml --- a/app/views/users/_form.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/users/_form.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -3,7 +3,10 @@ <%= error_messages_for 'user' %> +
    +
    +

    <%=l(:label_information_plural)%>

    <%= f.text_field :login, :required => true, :size => 25 %>

    <%= f.text_field :firstname, :required => true %>

    @@ -49,8 +52,8 @@ +

    <%=l(:label_authentication)%>

    -

    <%=l(:label_authentication)%>

    <% unless @auth_sources.empty? %>

    <%= f.select :auth_source_id, ([[l(:label_internal), ""]] + @auth_sources.collect { |a| [a.name, a.id] }), {}, :onchange => "if (this.value=='') {Element.show('password_fields');} else {Element.hide('password_fields');}" %>

    <% end %> @@ -60,14 +63,19 @@

    <%= f.password_field :password_confirmation, :required => true, :size => 25 %>

    +
    +
    +

    <%=l(:field_mail_notification)%>

    -

    <%=l(:field_mail_notification)%>

    <%= render :partial => 'users/mail_notifications' %>
    +

    <%=l(:label_preferences)%>

    -

    <%=l(:label_preferences)%>

    <%= render :partial => 'users/preferences' %>
    +
    +
    +
    diff -r adc8466df404 -r 753f1380d6bc app/views/users/index.rhtml --- a/app/views/users/index.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/users/index.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -8,9 +8,16 @@
    <%= l(:label_filter_plural) %> <%= select_tag 'status', users_status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;" %> + +<% if @groups.present? %> + +<%= select_tag 'group_id', '' + options_from_collection_for_select(@groups, :id, :name, params[:group_id].to_i), :onchange => "this.form.submit(); return false;" %> +<% end %> + <%= text_field_tag 'name', params[:name], :size => 30 %> <%= submit_tag l(:button_apply), :class => "small", :name => nil %> +<%= link_to l(:button_clear), users_path, :class => 'icon icon-reload' %>
    <% end %>   diff -r adc8466df404 -r 753f1380d6bc app/views/versions/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/versions/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 57 +/svn/!svn/ver/5878/branches/1.2-stable/app/views/versions +END diff -r adc8466df404 -r 753f1380d6bc app/views/versions/.svn/entries --- a/app/views/versions/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/versions/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/versions +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/versions http://redmine.rubyforge.org/svn -2010-10-29T22:40:02.439890Z -4307 -jbbarth +2011-04-29T12:18:00.028904Z +5600 +jplang @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z a50c2acc01c8d25be8e2c8cd082a2272 2010-09-11T14:00:23.147923Z 4082 @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z d53190d87d1c24abce0fc949f816a706 2010-09-17T15:55:08.377083Z 4097 @@ -100,11 +100,11 @@ -2011-03-03T11:05:10.000000Z -ae897448ea943e1856633a3683c17a79 -2010-10-29T22:40:02.439890Z -4307 -jbbarth +2011-06-06T13:18:33.000000Z +8bc9f038d11ff8852a4188b5aaf95621 +2011-04-29T12:18:00.028904Z +5600 +jplang has-props @@ -126,7 +126,7 @@ -1993 +2228 _form.rhtml file @@ -134,7 +134,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z acf01b501fb1e345fd7abf572233ead9 2009-12-06T10:28:20.099964Z 3123 @@ -168,11 +168,11 @@ -2011-03-03T11:05:10.000000Z -b5364f2d6f4cb92d1f747cd3dda5098f -2010-09-17T16:11:43.740142Z -4098 -edavis10 +2011-06-06T13:18:33.000000Z +c7f3d61502256cfc878dce17dba3360c +2011-03-21T20:08:16.105748Z +5187 +jplang has-props @@ -194,7 +194,7 @@ -1350 +1382 _overview.rhtml file @@ -202,7 +202,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 6e68f24a6d6571388df3018bc915d37a 2009-11-15T15:22:55.021661Z 3064 @@ -236,7 +236,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 85ddc3502659176221220bebef002d6c 2010-09-17T15:55:08.377083Z 4097 diff -r adc8466df404 -r 753f1380d6bc app/views/versions/.svn/text-base/_issue_counts.rhtml.svn-base --- a/app/views/versions/.svn/text-base/_issue_counts.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/versions/.svn/text-base/_issue_counts.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -19,8 +19,8 @@ :action => 'index', :project_id => version.project, :set_filter => 1, - :fixed_version_id => version, - "#{criteria}_id" => count[:group]} %> + :status_id => '*', + :fixed_version_id => version}.merge("#{criteria}_id".to_sym => count[:group]) %> <%= progress_bar((count[:closed].to_f / count[:total])*100, diff -r adc8466df404 -r 753f1380d6bc app/views/versions/.svn/text-base/show.rhtml.svn-base --- a/app/views/versions/.svn/text-base/show.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/versions/.svn/text-base/show.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -6,6 +6,10 @@

    <%= h(@version.name) %>

    +
    +<%= render :partial => 'versions/overview', :locals => {:version => @version} %> +<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %> +
    <% if @version.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %>
    <%= l(:label_time_tracking) %> @@ -29,18 +33,19 @@
    -
    -<%= render :partial => 'versions/overview', :locals => {:version => @version} %> -<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %> - <% if @issues.present? %> - +<% form_tag({}) do -%> + + + <%- @issues.each do |issue| -%> + + + + + <% end %> + +<% end %> +<%= context_menu issues_context_menu_path %> <% end %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/versions/_issue_counts.rhtml --- a/app/views/versions/_issue_counts.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/versions/_issue_counts.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -19,8 +19,8 @@ :action => 'index', :project_id => version.project, :set_filter => 1, - :fixed_version_id => version, - "#{criteria}_id" => count[:group]} %> + :status_id => '*', + :fixed_version_id => version}.merge("#{criteria}_id".to_sym => count[:group]) %> <%= progress_bar((count[:closed].to_f / count[:total])*100, diff -r adc8466df404 -r 753f1380d6bc app/views/versions/show.rhtml --- a/app/views/versions/show.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/versions/show.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -6,6 +6,10 @@

    <%= h(@version.name) %>

    +
    +<%= render :partial => 'versions/overview', :locals => {:version => @version} %> +<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %> +
    <% if @version.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %>
    <%= l(:label_time_tracking) %> @@ -29,18 +33,19 @@
    -
    -<%= render :partial => 'versions/overview', :locals => {:version => @version} %> -<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %> - <% if @issues.present? %> - +<% form_tag({}) do -%> + + + <%- @issues.each do |issue| -%> + + + + + <% end %> + +<% end %> +<%= context_menu issues_context_menu_path %> <% end %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/watchers/.svn/entries --- a/app/views/watchers/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/watchers/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/watchers +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/watchers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 7ece4fb161c765ac7e63c30883733d99 2010-03-13T17:45:41.194736Z 3579 diff -r adc8466df404 -r 753f1380d6bc app/views/welcome/.svn/entries --- a/app/views/welcome/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/welcome/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/welcome +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/welcome http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z df32441c6802182ffb9a205c97ec8f3b 2010-08-27T14:05:54.014502Z 4047 @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z dbe04ed0b787a5470a99a1f286c0685e 2009-01-27T17:27:50.299725Z 2319 diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/.svn/all-wcprops --- a/app/views/wiki/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,83 +1,5 @@ -K 25 -svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4953/trunk/app/views/wiki -END -export_multiple.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3026/trunk/app/views/wiki/export_multiple.rhtml -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4290/trunk/app/views/wiki/index.html.erb -END -show.rhtml -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/4303/trunk/app/views/wiki/show.rhtml -END -export.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3026/trunk/app/views/wiki/export.rhtml -END -history.rhtml K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4740/trunk/app/views/wiki/history.rhtml +/svn/!svn/ver/5878/branches/1.2-stable/app/views/wiki END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/4303/trunk/app/views/wiki/edit.rhtml -END -rename.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4375/trunk/app/views/wiki/rename.rhtml -END -_sidebar.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4296/trunk/app/views/wiki/_sidebar.rhtml -END -diff.rhtml -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/4953/trunk/app/views/wiki/diff.rhtml -END -_content.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/897/trunk/app/views/wiki/_content.rhtml -END -annotate.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4296/trunk/app/views/wiki/annotate.rhtml -END -date_index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4303/trunk/app/views/wiki/date_index.html.erb -END -destroy.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4296/trunk/app/views/wiki/destroy.rhtml -END diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/.svn/entries --- a/app/views/wiki/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/wiki +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/wiki http://redmine.rubyforge.org/svn -2011-02-27T12:50:47.369941Z -4953 +2011-04-12T19:22:44.432354Z +5443 jplang @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 071f00658656d063a029ff9efcfda553 2009-11-11T11:10:03.406528Z 3026 @@ -66,11 +66,11 @@ -2011-03-03T11:05:11.000000Z -d47125b655bae6af3af29514ca23ec15 -2010-10-25T16:16:46.309025Z -4290 -edavis10 +2011-06-06T13:18:33.000000Z +5acf1f1f7e7549bce688ef4c07bb3485 +2011-03-21T18:10:04.628386Z +5186 +jplang has-props @@ -92,7 +92,7 @@ -894 +921 show.rhtml file @@ -100,7 +100,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 1ebc19864533a067dc46a3bc6f3e9b22 2010-10-28T21:25:38.778234Z 4303 @@ -134,7 +134,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 2ec7fba790578844437bd62bf95a9856 2009-11-11T11:10:03.406528Z 3026 @@ -168,7 +168,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 032cfe657db049a60473a31d2d0391a2 2011-01-22T13:21:24.424880Z 4740 @@ -202,11 +202,11 @@ -2011-03-03T11:05:11.000000Z -cc9828c34998619dbd4b4925bf511be8 -2010-10-28T21:25:38.778234Z -4303 -edavis10 +2011-06-06T13:18:33.000000Z +caa64ac229cf303f19f5e0380bb3f7e7 +2011-04-12T19:22:44.432354Z +5443 +jplang has-props @@ -228,7 +228,7 @@ -1282 +1311 rename.rhtml file @@ -236,7 +236,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z b45d32467f7beb06dbe055ecf7fdb247 2010-11-06T14:30:32.528294Z 4375 @@ -270,7 +270,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 619db9d2a58a28c4b5c4baeaee88cc41 2010-10-27T16:27:06.240747Z 4296 @@ -304,7 +304,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 954230b09809d40bbd6f6514fb1fcc59 2011-02-27T12:50:47.369941Z 4953 @@ -338,7 +338,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 8705c97ebf1405603afbbd8614ee9d2b 2007-11-12T14:36:33.182682Z 897 @@ -372,7 +372,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 36a354ea1a705ec4843972e520ce2bd6 2010-10-27T16:27:06.240747Z 4296 @@ -406,11 +406,11 @@ -2011-03-03T11:05:11.000000Z -5edb3698546c4aad9913945d39005221 -2010-10-28T21:25:38.778234Z -4303 -edavis10 +2011-06-06T13:18:33.000000Z +101923ebcb5dcf22fb0fe6083ed0f033 +2011-03-21T18:10:04.628386Z +5186 +jplang has-props @@ -432,7 +432,7 @@ -1117 +1119 destroy.rhtml file @@ -440,7 +440,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 5f032c821889bfc8bf9e6eeca1023f58 2010-10-27T16:27:06.240747Z 4296 diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/.svn/text-base/date_index.html.erb.svn-base --- a/app/views/wiki/.svn/text-base/date_index.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/.svn/text-base/date_index.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -23,11 +23,11 @@ <% unless @pages.empty? %> <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> + <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> <%= f.link_to('HTML', :url => {:action => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %> <% end %> <% end %> <% content_for :header_tags do %> -<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> +<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/.svn/text-base/edit.rhtml.svn-base --- a/app/views/wiki/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/.svn/text-base/edit.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -23,6 +23,7 @@ <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> + <%= robot_exclusion_tag %> <% end %> <% html_title @page.pretty_title %> diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/.svn/text-base/index.html.erb.svn-base --- a/app/views/wiki/.svn/text-base/index.html.erb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/.svn/text-base/index.html.erb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -8,7 +8,7 @@

    <%= l(:label_no_data) %>

    <% end %> -<%= render_page_hierarchy(@pages_by_parent_id) %> +<%= render_page_hierarchy(@pages_by_parent_id, nil, :timestamp => true) %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> @@ -16,11 +16,11 @@ <% unless @pages.empty? %> <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> + <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> <%= f.link_to('HTML', :url => {:action => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %> <% end %> <% end %> <% content_for :header_tags do %> -<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> +<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/date_index.html.erb --- a/app/views/wiki/date_index.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/date_index.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -23,11 +23,11 @@ <% unless @pages.empty? %> <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> + <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> <%= f.link_to('HTML', :url => {:action => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %> <% end %> <% end %> <% content_for :header_tags do %> -<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> +<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/edit.rhtml --- a/app/views/wiki/edit.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/edit.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -23,6 +23,7 @@ <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> + <%= robot_exclusion_tag %> <% end %> <% html_title @page.pretty_title %> diff -r adc8466df404 -r 753f1380d6bc app/views/wiki/index.html.erb --- a/app/views/wiki/index.html.erb Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wiki/index.html.erb Mon Jun 06 14:41:04 2011 +0100 @@ -8,7 +8,7 @@

    <%= l(:label_no_data) %>

    <% end %> -<%= render_page_hierarchy(@pages_by_parent_id) %> +<%= render_page_hierarchy(@pages_by_parent_id, nil, :timestamp => true) %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> @@ -16,11 +16,11 @@ <% unless @pages.empty? %> <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> + <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> <%= f.link_to('HTML', :url => {:action => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %> <% end %> <% end %> <% content_for :header_tags do %> -<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'show', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> +<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> <% end %> diff -r adc8466df404 -r 753f1380d6bc app/views/wikis/.svn/entries --- a/app/views/wikis/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/wikis/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/wikis +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/wikis http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:14:59.000000Z 6edeee3130b12027d4d8dbfeca809abb 2007-09-14T11:34:08.234701Z 725 diff -r adc8466df404 -r 753f1380d6bc app/views/workflows/.svn/all-wcprops --- a/app/views/workflows/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/workflows/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,35 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4895/trunk/app/views/workflows +V 58 +/svn/!svn/ver/5878/branches/1.2-stable/app/views/workflows END -copy.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3154/trunk/app/views/workflows/copy.rhtml -END -_action_menu.rhtml -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3154/trunk/app/views/workflows/_action_menu.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4895/trunk/app/views/workflows/edit.rhtml -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4890/trunk/app/views/workflows/index.rhtml -END -_form.html.erb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4895/trunk/app/views/workflows/_form.html.erb -END diff -r adc8466df404 -r 753f1380d6bc app/views/workflows/.svn/entries --- a/app/views/workflows/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/workflows/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/app/views/workflows +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/app/views/workflows http://redmine.rubyforge.org/svn -2011-02-20T15:38:07.840581Z -4895 +2011-03-30T16:56:52.761894Z +5264 jplang @@ -32,7 +32,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z d7c2b6481788394f541fe6af5dadd598 2009-12-12T10:06:07.860865Z 3154 @@ -66,7 +66,7 @@ -2011-03-03T11:05:10.000000Z +2011-06-06T13:14:59.000000Z 2457a85600aa051fcf9edf06010e6fcc 2009-12-12T10:06:07.860865Z 3154 @@ -100,10 +100,10 @@ -2011-03-03T11:40:18.000000Z -f52bc187d855a23aea0bc36061a8d179 -2011-02-20T15:38:07.840581Z -4895 +2011-06-06T13:18:33.000000Z +3d867dc08990e317641df2e09eb711b8 +2011-03-30T16:56:52.761894Z +5264 jplang has-props @@ -126,7 +126,7 @@ -2211 +2179 index.rhtml file @@ -134,7 +134,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 0943677a780ac0d9c0ba1a7000148f13 2011-02-20T13:13:10.623157Z 4890 @@ -168,7 +168,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z a2442c53d709a008d9026746d5f3cfd3 2011-02-20T15:38:07.840581Z 4895 diff -r adc8466df404 -r 753f1380d6bc app/views/workflows/.svn/text-base/edit.rhtml.svn-base --- a/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -28,7 +28,7 @@ <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %>
    - Autorisations supplémentaires lorsque l'utilisateur a créé la demande + <%= l(:label_additional_workflow_transitions_for_author) %>
    <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %>
    @@ -36,7 +36,7 @@ <%= javascript_tag "hideFieldset($('author_workflows'))" unless @workflows['author'].present? %>
    - Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur + <%= l(:label_additional_workflow_transitions_for_assignee) %>
    <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %>
    diff -r adc8466df404 -r 753f1380d6bc app/views/workflows/edit.rhtml --- a/app/views/workflows/edit.rhtml Thu Mar 03 15:08:45 2011 +0000 +++ b/app/views/workflows/edit.rhtml Mon Jun 06 14:41:04 2011 +0100 @@ -28,7 +28,7 @@ <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %>
    - Autorisations supplémentaires lorsque l'utilisateur a créé la demande + <%= l(:label_additional_workflow_transitions_for_author) %>
    <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %>
    @@ -36,7 +36,7 @@ <%= javascript_tag "hideFieldset($('author_workflows'))" unless @workflows['author'].present? %>
    - Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur + <%= l(:label_additional_workflow_transitions_for_assignee) %>
    <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %>
    diff -r adc8466df404 -r 753f1380d6bc config/.svn/all-wcprops --- a/config/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/config/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,47 +1,17 @@ K 25 svn:wc:ra_dav:version-url -V 31 -/svn/!svn/ver/4955/trunk/config -END -settings.yml -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4513/trunk/config/settings.yml -END -configuration.yml.example -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4950/trunk/config/configuration.yml.example +V 45 +/svn/!svn/ver/5998/branches/1.2-stable/config END routes.rb K 25 svn:wc:ra_dav:version-url -V 41 -/svn/!svn/ver/4729/trunk/config/routes.rb -END -boot.rb -K 25 -svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4516/trunk/config/boot.rb +V 55 +/svn/!svn/ver/5878/branches/1.2-stable/config/routes.rb END environment.rb K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4904/trunk/config/environment.rb +V 60 +/svn/!svn/ver/5878/branches/1.2-stable/config/environment.rb END -additional_environment.rb.example -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/3018/trunk/config/additional_environment.rb.example -END -database.yml.example -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4753/trunk/config/database.yml.example -END diff -r adc8466df404 -r 753f1380d6bc config/.svn/entries --- a/config/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/config/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/config +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/config http://redmine.rubyforge.org/svn -2011-02-27T13:43:18.863191Z -4955 -jplang +2011-06-02T08:26:02.080563Z +5998 +tmaruyama has-props @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 0f6fe2db3317d8b40af42a6d534da87e 2010-12-15T21:18:06.237327Z 4513 @@ -66,7 +66,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 69243d1b5b9b111da631c7034d51ba71 2011-02-26T13:09:25.657748Z 4950 @@ -103,11 +103,11 @@ -2011-03-03T11:05:14.000000Z -b03599e0dc8d0a6b03c3173864eb57bd -2011-01-16T15:23:11.666065Z -4729 -jplang +2011-06-06T13:20:53.000000Z +f1eebe0f75a51707ede6d40175e2f15c +2011-04-04T11:53:29.801553Z +5313 +tmaruyama has-props @@ -129,7 +129,7 @@ -14402 +15093 boot.rb file @@ -137,7 +137,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 2969e2a7b5ab1b2a014b5f0c94bac872 2010-12-17T08:34:29.830642Z 4516 @@ -174,10 +174,10 @@ -2011-03-03T11:40:18.000000Z -cc9c7d7f9a4bd800d2c4a8737147e4c3 -2011-02-21T11:02:18.659691Z -4904 +2011-06-06T13:20:53.000000Z +e67b4e0a2d4ca847d47fa960eeb2a55d +2011-03-04T14:32:58.878627Z +5003 jplang has-props @@ -200,7 +200,7 @@ -2553 +2572 environments dir @@ -211,7 +211,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 6b63489cdd262e653712af1aa96cd390 2009-11-08T02:16:42.659918Z 3018 @@ -245,7 +245,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z f33e1e1bf73ba5d10ef3a6f170da3088 2011-01-23T10:25:48.265995Z 4753 diff -r adc8466df404 -r 753f1380d6bc config/.svn/text-base/environment.rb.svn-base --- a/config/.svn/text-base/environment.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/.svn/text-base/environment.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -36,7 +36,7 @@ # Activate observers that should always be running # config.active_record.observers = :cacher, :garbage_collector - config.active_record.observers = :message_observer, :issue_observer, :journal_observer, :news_observer, :document_observer, :wiki_content_observer + config.active_record.observers = :message_observer, :issue_observer, :journal_observer, :news_observer, :document_observer, :wiki_content_observer, :comment_observer # Make Active Record use UTC-base instead of local time # config.active_record.default_timezone = :utc diff -r adc8466df404 -r 753f1380d6bc config/.svn/text-base/routes.rb.svn-base --- a/config/.svn/text-base/routes.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/.svn/text-base/routes.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -14,13 +14,21 @@ map.connect 'roles/workflow/:id/:role_id/:tracker_id', :controller => 'roles', :action => 'workflow' map.connect 'help/:ctrl/:page', :controller => 'help' - map.connect 'projects/:project_id/time_entries/report', :controller => 'time_entry_reports', :action => 'report' map.with_options :controller => 'time_entry_reports', :action => 'report',:conditions => {:method => :get} do |time_report| + time_report.connect 'projects/:project_id/issues/:issue_id/time_entries/report' + time_report.connect 'projects/:project_id/issues/:issue_id/time_entries/report.:format' + time_report.connect 'projects/:project_id/time_entries/report' + time_report.connect 'projects/:project_id/time_entries/report.:format' time_report.connect 'time_entries/report' time_report.connect 'time_entries/report.:format' - time_report.connect 'projects/:project_id/time_entries/report.:format' end + map.bulk_edit_time_entry 'time_entries/bulk_edit', + :controller => 'timelog', :action => 'bulk_edit', :conditions => { :method => :get } + map.bulk_update_time_entry 'time_entries/bulk_edit', + :controller => 'timelog', :action => 'bulk_update', :conditions => { :method => :post } + map.time_entries_context_menu '/time_entries/context_menu', + :controller => 'context_menus', :action => 'time_entries' # TODO: wasteful since this is also nested under issues, projects, and projects/issues map.resources :time_entries, :controller => 'timelog' @@ -80,10 +88,16 @@ map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new', :id => /\d+/, :conditions => { :method => :post } map.connect '/issues/:id/destroy', :controller => 'issues', :action => 'destroy', :conditions => { :method => :post } # legacy - map.resource :gantt, :path_prefix => '/issues', :controller => 'gantts', :only => [:show, :update] - map.resource :gantt, :path_prefix => '/projects/:project_id/issues', :controller => 'gantts', :only => [:show, :update] - map.resource :calendar, :path_prefix => '/issues', :controller => 'calendars', :only => [:show, :update] - map.resource :calendar, :path_prefix => '/projects/:project_id/issues', :controller => 'calendars', :only => [:show, :update] + map.with_options :controller => 'gantts', :action => 'show' do |gantts_routes| + gantts_routes.connect '/projects/:project_id/issues/gantt' + gantts_routes.connect '/projects/:project_id/issues/gantt.:format' + gantts_routes.connect '/issues/gantt.:format' + end + + map.with_options :controller => 'calendars', :action => 'show' do |calendars_routes| + calendars_routes.connect '/projects/:project_id/issues/calendar' + calendars_routes.connect '/issues/calendar' + end map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports| reports.connect 'projects/:id/issues/report', :action => 'issue_report' @@ -215,6 +229,7 @@ map.resources :groups #left old routes at the bottom for backwards compat + map.connect 'projects/:project_id/queries/:action', :controller => 'queries' map.connect 'projects/:project_id/issues/:action', :controller => 'issues' map.connect 'projects/:project_id/documents/:action', :controller => 'documents' map.connect 'projects/:project_id/boards/:action/:id', :controller => 'boards' diff -r adc8466df404 -r 753f1380d6bc config/environment.rb --- a/config/environment.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/config/environment.rb Mon Jun 06 14:41:04 2011 +0100 @@ -36,7 +36,7 @@ # Activate observers that should always be running # config.active_record.observers = :cacher, :garbage_collector - config.active_record.observers = :message_observer, :issue_observer, :journal_observer, :news_observer, :document_observer, :wiki_content_observer + config.active_record.observers = :message_observer, :issue_observer, :journal_observer, :news_observer, :document_observer, :wiki_content_observer, :comment_observer # Make Active Record use UTC-base instead of local time # config.active_record.default_timezone = :utc diff -r adc8466df404 -r 753f1380d6bc config/environments/.svn/entries --- a/config/environments/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/config/environments/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/config/environments +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/config/environments http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 08b25fdea5e3e041116340c3c3090b18 2010-11-14T15:14:19.280754Z 4405 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 02eadf22aa59353271c702e4865138b1 2007-12-10T17:58:07.273873Z 975 @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 213279c73e8c922d0a9d43f3c1cc6943 2010-02-08T18:53:07.634937Z 3397 @@ -134,7 +134,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z d08152d4dda4608f254785b23840140a 2007-09-27T22:30:57.196220Z 772 @@ -168,7 +168,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 213279c73e8c922d0a9d43f3c1cc6943 2010-02-08T18:53:07.634937Z 3397 @@ -202,7 +202,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 17a6fbb168f3951191541f0f5a554454 2010-09-26T16:54:38.112012Z 4182 diff -r adc8466df404 -r 753f1380d6bc config/initializers/.svn/entries --- a/config/initializers/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/config/initializers/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/config/initializers +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/config/initializers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z acc71445fc1c65ebe6fdeba695fea714 2009-09-20T14:06:57.257282Z 2895 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 45627c8ad9bafcee93e6ce01b92b57d1 2011-01-10T18:25:12.105765Z 4679 @@ -100,7 +100,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:14:59.000000Z 17f5c9eadec957cb8fb2b6d1f07b61ae 2011-02-21T11:02:18.659691Z 4904 @@ -134,7 +134,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z ca8db2f40b067cb8615263fa5a238517 2009-09-20T14:06:57.257282Z 2895 @@ -168,7 +168,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z 0005ed7b233f71646e0f75b9994cf219 2008-09-10T18:26:13.133776Z 1797 @@ -202,7 +202,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:14:59.000000Z a7948d8e86bcd799c74945fe91b4a8b1 2009-09-20T14:06:57.257282Z 2895 diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/all-wcprops --- a/config/locales/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,269 +1,269 @@ K 25 svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4955/trunk/config/locales +V 53 +/svn/!svn/ver/5998/branches/1.2-stable/config/locales END lt.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/lt.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/lt.yml END sr-YU.yml K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4955/trunk/config/locales/sr-YU.yml +V 63 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/sr-YU.yml END ro.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/ro.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/ro.yml END lv.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/lv.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/lv.yml END zh.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/zh.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/zh.yml END pt.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/pt.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/pt.yml END ca.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/ca.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/ca.yml END pt-BR.yml K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4955/trunk/config/locales/pt-BR.yml +V 63 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/pt-BR.yml END tr.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/tr.yml +V 60 +/svn/!svn/ver/5998/branches/1.2-stable/config/locales/tr.yml END ru.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/ru.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/ru.yml END en-GB.yml K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4955/trunk/config/locales/en-GB.yml +V 63 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/en-GB.yml END id.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/id.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/id.yml END el.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/el.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/el.yml END en.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4954/trunk/config/locales/en.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/en.yml END gl.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/gl.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/gl.yml END cs.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/cs.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/cs.yml +END +es.yml +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/es.yml END mk.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/mk.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/mk.yml END -es.yml +zh-TW.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/es.yml +V 63 +/svn/!svn/ver/5971/branches/1.2-stable/config/locales/zh-TW.yml +END +eu.yml +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/eu.yml END ko.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/ko.yml -END -eu.yml -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/eu.yml -END -zh-TW.yml -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4955/trunk/config/locales/zh-TW.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/ko.yml END mn.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/mn.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/mn.yml END it.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/it.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/it.yml END sk.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/sk.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/sk.yml END sl.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/sl.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/sl.yml END uk.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/uk.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/uk.yml +END +sr.yml +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/sr.yml END da.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/da.yml -END -sr.yml -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/sr.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/da.yml END fa.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/fa.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/fa.yml +END +de.yml +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/5987/branches/1.2-stable/config/locales/de.yml +END +bg.yml +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/5963/branches/1.2-stable/config/locales/bg.yml END sv.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/sv.yml -END -bg.yml -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/bg.yml -END -de.yml -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/de.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/sv.yml END ja.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/ja.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/ja.yml END he.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/he.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/he.yml END fi.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/fi.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/fi.yml END bs.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/bs.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/bs.yml END fr.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4954/trunk/config/locales/fr.yml +V 60 +/svn/!svn/ver/5966/branches/1.2-stable/config/locales/fr.yml END nl.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/nl.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/nl.yml END hr.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/hr.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/hr.yml END pl.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/pl.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/pl.yml END th.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/th.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/th.yml END no.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/no.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/no.yml END hu.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/hu.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/hu.yml END vi.yml K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4955/trunk/config/locales/vi.yml +V 60 +/svn/!svn/ver/5961/branches/1.2-stable/config/locales/vi.yml END diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/entries --- a/config/locales/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/config/locales +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/config/locales http://redmine.rubyforge.org/svn -2011-02-27T13:43:18.863191Z -4955 -jplang +2011-06-02T08:26:02.080563Z +5998 +tmaruyama @@ -32,10 +32,10 @@ -2011-03-03T11:40:18.000000Z -3542e97eeeee34df7a3d6d64a4ce0407 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +5e7b7f486912e5d0f86ef826213fdba6 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -58,7 +58,7 @@ -44029 +46015 sr-YU.yml file @@ -66,33 +66,33 @@ -2011-03-03T11:40:18.000000Z -b05d928becf91c52a78271c93715bb1b -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +48ebc431f92eb9909461b86595623d53 +2011-05-29T12:06:05.086159Z +5961 jplang - - - - - - - - - - - - - - - - - - - - - -42299 +has-props + + + + + + + + + + + + + + + + + + + + +43343 ro.yml file @@ -100,10 +100,10 @@ -2011-03-03T11:40:18.000000Z -dd9fb4aae0fa69165e4f4e1100c3fa26 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +c89831e13c892860c203da66ef7cde39 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -126,7 +126,7 @@ -40417 +42401 lv.yml file @@ -134,33 +134,33 @@ -2011-03-03T11:40:18.000000Z -12f9b4e9c849923a86334f56fbb65f1a -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +dd21f6353eda45c24f513402301a86ae +2011-05-29T12:06:05.086159Z +5961 jplang - - - - - - - - - - - - - - - - - - - - - -42305 +has-props + + + + + + + + + + + + + + + + + + + + +43354 zh.yml file @@ -168,10 +168,10 @@ -2011-03-03T11:40:18.000000Z -dde46f425abed5caa3d8d3afe9049fb7 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +7a72ffc7de1ff3a52e782463729ddbc7 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -194,7 +194,7 @@ -38303 +40191 pt.yml file @@ -202,10 +202,10 @@ -2011-03-03T11:40:18.000000Z -017dbb90319bfa26bab5a45296b337b3 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +ec11cbc0584c8ac119cfc6c29081f56f +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -228,7 +228,7 @@ -41777 +43934 ca.yml file @@ -236,10 +236,10 @@ -2011-03-03T11:40:18.000000Z -55d3137cb8850d53bce7337a8a0cf720 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +a3707360ad2b2de97d4ed95701a94356 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -262,7 +262,7 @@ -42226 +44212 pt-BR.yml file @@ -270,10 +270,10 @@ -2011-03-03T11:40:18.000000Z -0714d61f3439e9e8058f26487eae91b2 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +b49afa84dd5f8734f8002419fe90d051 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -296,7 +296,7 @@ -41661 +43759 tr.yml file @@ -304,11 +304,11 @@ -2011-03-03T11:40:18.000000Z -5bc442cb54c4373e1aeea7dd56e30bd0 -2011-02-27T13:43:18.863191Z -4955 -jplang +2011-06-06T13:20:53.000000Z +7bb800f58917300c44761e96f4d5032f +2011-06-02T08:26:02.080563Z +5998 +tmaruyama has-props @@ -330,7 +330,7 @@ -40295 +43367 ru.yml file @@ -338,10 +338,10 @@ -2011-03-03T11:40:18.000000Z -6a3741281160ebb7f27f6d2bb03499c8 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +4ea5a627a00e7c1a8eda2636477032c0 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -364,7 +364,7 @@ -62124 +65360 en-GB.yml file @@ -372,33 +372,33 @@ -2011-03-03T11:40:18.000000Z -831604fd1ce5d6f72e64688ce6f62581 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +f78e8de5b513009213f9c69fc66247c0 +2011-05-29T12:06:05.086159Z +5961 jplang - - - - - - - - - - - - - - - - - - - - - -39685 +has-props + + + + + + + + + + + + + + + + + + + + +40744 id.yml file @@ -406,10 +406,10 @@ -2011-03-03T11:40:18.000000Z -eb45d7f2bc3d3e7fd8ab01db1a3041a4 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +9d2d1e06b1b49d66819cc25def6eaa12 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -432,7 +432,7 @@ -40037 +42018 el.yml file @@ -440,10 +440,10 @@ -2011-03-03T11:40:18.000000Z -98b4f21cce1a0242221eecb23f5fc727 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +a3900a53db9dd482bca160bc630f12d3 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -466,7 +466,7 @@ -55145 +57131 en.yml file @@ -474,10 +474,10 @@ -2011-03-03T11:40:18.000000Z -4265d626f893cc08f2142d0a254e2ac7 -2011-02-27T13:34:41.060565Z -4954 +2011-06-06T13:20:53.000000Z +2c7af38389b9234860de6bb7fe1f1803 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -500,7 +500,7 @@ -38787 +40720 gl.yml file @@ -508,10 +508,10 @@ -2011-03-03T11:40:18.000000Z -03aa773b8d01d5bc421b8896fc9c861b -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +1246246f8c76fcfd296387509aa5b2cd +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -534,7 +534,7 @@ -40895 +42875 cs.yml file @@ -542,10 +542,10 @@ -2011-03-03T11:40:18.000000Z -85ac61a4067ad6dda83d43acbf874cf6 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +ecf7a07f4da1d9b7941892d52f8636e8 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -568,7 +568,7 @@ -41752 +43747 mk.yml file @@ -576,33 +576,33 @@ -2011-03-03T11:40:18.000000Z -626a66d6d98190418f4a4fd43077734f -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +3b5cb975840d7ff4a5f669be5607b37d +2011-05-29T12:06:05.086159Z +5961 jplang - - - - - - - - - - - - - - - - - - - - - -49418 +has-props + + + + + + + + + + + + + + + + + + + + +50462 es.yml file @@ -610,10 +610,10 @@ -2011-03-03T11:40:18.000000Z -6ef7d2fb0af3cce0f6afbdea3ff9ab17 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +702907e64c5219e59b0343b0f9be2532 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -636,7 +636,7 @@ -43670 +45659 ko.yml file @@ -644,10 +644,10 @@ -2011-03-03T11:40:18.000000Z -1ff250f0b17ecb9465add49dfcf9bb91 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +905023ea1e51638dc8be8ae0649a48ca +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -670,7 +670,7 @@ -44501 +46485 eu.yml file @@ -678,33 +678,33 @@ -2011-03-03T11:40:18.000000Z -b3ba93d14600b4b992e65fbd243759ae -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +c03eeee6ca05c7f7301960370e6f0e7c +2011-05-29T12:06:05.086159Z +5961 jplang - - - - - - - - - - - - - - - - - - - - - -42568 +has-props + + + + + + + + + + + + + + + + + + + + +43750 zh-TW.yml file @@ -712,11 +712,11 @@ -2011-03-03T11:40:18.000000Z -f4c6a612b84e5087ed4d023414dab628 -2011-02-27T13:43:18.863191Z -4955 -jplang +2011-06-06T13:20:53.000000Z +6e15c0de02a38cd855ec6ec008799a2e +2011-05-31T03:48:27.658498Z +5971 +tmaruyama has-props @@ -738,7 +738,7 @@ -42608 +44611 mn.yml file @@ -746,33 +746,33 @@ -2011-03-03T11:40:18.000000Z -b9e2987cb3cbaab826c7388d09b74f75 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +d125d8a5d37d483faa77d2dab780d4b9 +2011-05-29T12:06:05.086159Z +5961 jplang - - - - - - - - - - - - - - - - - - - - - -54082 +has-props + + + + + + + + + + + + + + + + + + + + +55125 it.yml file @@ -780,10 +780,10 @@ -2011-03-03T11:40:18.000000Z -f80f107e4d9318b8a8cea65b2e13d579 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +85dcefefac13070b7aa284c6bf6c8787 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -806,7 +806,7 @@ -41436 +43417 sk.yml file @@ -814,10 +814,10 @@ -2011-03-03T11:40:18.000000Z -e7901c1e26424f863f96dd86164419c2 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +5d12e8694bbdc394e64f118e56e6ee2d +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -840,7 +840,7 @@ -41687 +43673 sl.yml file @@ -848,10 +848,10 @@ -2011-03-03T11:40:18.000000Z -808c04baadb112b6be492be9dc78ef89 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +e2c9983529b81f1cb0f75f921f5ed40a +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -874,7 +874,7 @@ -39863 +41849 uk.yml file @@ -882,10 +882,10 @@ -2011-03-03T11:40:18.000000Z -430d26c543f2d9d31ffe77c9ef3eb4f8 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +f55dca5aa01e0404de280fbdafe0e79c +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -908,7 +908,7 @@ -47441 +49427 da.yml file @@ -916,10 +916,10 @@ -2011-03-03T11:40:18.000000Z -a7ae693463d0d34fb5fd212ccbda0aff -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +5e1975c634cd0435fac3d988ae0c56ec +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -942,7 +942,7 @@ -39983 +41978 sr.yml file @@ -950,10 +950,10 @@ -2011-03-03T11:40:18.000000Z -adf2619297b8e142957c327c6a76c786 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +fab2e1c089f2d129ba1ef8ac29de2930 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -976,7 +976,7 @@ -54555 +56541 fa.yml file @@ -984,10 +984,10 @@ -2011-03-03T11:40:18.000000Z -6f585dcad4e6b03d987ea0f5e7d7e91f -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +dc9aa9dc1c76e148671ab6d121ff3b89 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1010,7 +1010,7 @@ -51085 +53601 bg.yml file @@ -1018,11 +1018,11 @@ -2011-03-03T11:40:18.000000Z -e0df426fe104bb05be553a362f46610b -2011-02-27T13:43:18.863191Z -4955 -jplang +2011-06-06T13:20:53.000000Z +9a059cba7f432b990cef9cfd84a6c2c2 +2011-05-29T14:54:06.800463Z +5963 +tmaruyama has-props @@ -1044,7 +1044,7 @@ -54718 +57818 de.yml file @@ -1052,11 +1052,11 @@ -2011-03-03T11:40:18.000000Z -80e835963312388a9077a8f27452d429 -2011-02-27T13:43:18.863191Z -4955 -jplang +2011-06-06T13:20:53.000000Z +69079d50061a1719565236cdf639960e +2011-06-01T08:09:23.285027Z +5987 +tmaruyama has-props @@ -1078,7 +1078,7 @@ -42574 +44841 sv.yml file @@ -1086,10 +1086,10 @@ -2011-03-03T11:40:18.000000Z -59f72f202281205f1ed729183db2a402 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +5466cb2f059c427e478b892659b04824 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1112,7 +1112,7 @@ -42180 +44295 ja.yml file @@ -1120,10 +1120,10 @@ -2011-03-03T11:40:18.000000Z -03fac78c16fdf9c77069f24fec7b2796 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +d6e75928ee638a76ad5120697fee360b +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1146,7 +1146,7 @@ -46191 +48520 he.yml file @@ -1154,10 +1154,10 @@ -2011-03-03T11:40:18.000000Z -03045c9539de31b255a14c9207fb8eaa -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +87a07cb160ea8fcd984e5ef254454861 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1180,7 +1180,7 @@ -45433 +47411 fi.yml file @@ -1188,10 +1188,10 @@ -2011-03-03T11:40:18.000000Z -18dd7ae78913bad4b75e0d5f16068290 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +6f7134b22b56cdb1713c7a3dbf38b742 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1214,7 +1214,7 @@ -40941 +42923 bs.yml file @@ -1222,10 +1222,10 @@ -2011-03-03T11:40:18.000000Z -0fdc9e453941e547e3b40fee917fcf02 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +46ab17e98f32862b0526430b9337c764 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1248,7 +1248,7 @@ -40878 +42866 fr.yml file @@ -1256,10 +1256,10 @@ -2011-03-03T11:40:18.000000Z -95995431647aa0e13c850df4250a57d0 -2011-02-27T13:34:41.060565Z -4954 +2011-06-06T13:20:53.000000Z +89004e3fd348f579a5119c4f19054774 +2011-05-30T16:40:17.424028Z +5966 jplang has-props @@ -1282,7 +1282,7 @@ -43081 +45156 nl.yml file @@ -1290,10 +1290,10 @@ -2011-03-03T11:40:18.000000Z -06358d3f035a3fcc20cde865e7295023 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +1ca85bc2a1fabda051687f7bbb97db90 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1316,7 +1316,7 @@ -40433 +42618 hr.yml file @@ -1324,10 +1324,10 @@ -2011-03-03T11:40:18.000000Z -3fbb52f4fa0ba97dfd179ad0c8e020c3 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +89ef8a359d83eaeebfc88f637be23163 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1350,7 +1350,7 @@ -40541 +42529 pl.yml file @@ -1358,10 +1358,10 @@ -2011-03-03T11:40:18.000000Z -afca79760eefe54e70833751f3d9b0bb -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +d44215277c85a0010b522b5d87f1ef9a +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1384,7 +1384,7 @@ -42836 +44826 th.yml file @@ -1392,10 +1392,10 @@ -2011-03-03T11:40:18.000000Z -e9737687144c1c4fd63eacb68f2682f1 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +54b9b765101bb126998397790b5d189a +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1418,7 +1418,7 @@ -53301 +55287 no.yml file @@ -1426,10 +1426,10 @@ -2011-03-03T11:40:18.000000Z -8fff009aa1fe3602b8b4dff6210f8497 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +56c04554c393102c0d5d7142609a52eb +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1452,7 +1452,7 @@ -38744 +40727 hu.yml file @@ -1460,10 +1460,10 @@ -2011-03-03T11:40:18.000000Z -5c2041121ebd0cd3bcf252d54e21786b -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +91dbf51d0aebef5b2518ef387d0bd131 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1486,7 +1486,7 @@ -43268 +45718 vi.yml file @@ -1494,10 +1494,10 @@ -2011-03-03T11:40:18.000000Z -37a28f575513649d20833ce31e5fce23 -2011-02-27T13:43:18.863191Z -4955 +2011-06-06T13:20:53.000000Z +287ab5f3b5571371f14ad0ee81fc534a +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -1520,5 +1520,5 @@ -43836 +45820 diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/bg.yml.svn-base --- a/config/locales/.svn/text-base/bg.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/bg.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -17,7 +17,10 @@ month_names: [~, Януари, Февруари, Март, Април, Май, Юни, Юли, Август, Септември, Октомври, Ноември, Декември] abbr_month_names: [~, Яну, Фев, Мар, Апр, Май, Юни, Юли, Авг, Сеп, Окт, Ное, Дек] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -268,7 +271,7 @@ field_attr_mail: Атрибут Email field_onthefly: Динамично създаване на потребител field_start_date: Начална дата - field_done_ratio: % Прогрес + field_done_ratio: "% Прогрес" field_auth_source: Начин на оторизация field_hide_mail: Скрий e-mail адреса ми field_comments: Коментар @@ -304,7 +307,15 @@ field_text: Текстово поле field_visible: Видим field_warn_on_leaving_unsaved: Предупреди ме, когато напускам страница с незаписано съдържание - + field_issues_visibility: Видимост на задачите + field_is_private: Лична + field_commit_logs_encoding: Кодова таблица на съобщенията при поверяване + field_scm_path_encoding: Кодова таблица на пътищата (path) + field_path_to_repository: Път до хранилището + field_root_directory: Коренна директория (папка) + field_cvsroot: CVSROOT + field_cvs_module: Модул + setting_app_title: Заглавие setting_app_subtitle: Описание setting_welcome_text: Допълнителен текст @@ -331,7 +342,6 @@ setting_cross_project_issue_relations: Релации на задачи между проекти setting_issue_list_default_columns: Показвани колони по подразбиране setting_repositories_encodings: Кодови таблици - setting_commit_logs_encoding: Кодова таблица на съобщенията при поверяване setting_emails_header: Emails header setting_emails_footer: Подтекст за e-mail setting_protocol: Протокол @@ -376,7 +386,9 @@ permission_add_issues: Добавяне на задачи permission_edit_issues: Редактиране на задачи permission_manage_issue_relations: Управление на връзките между задачите - permission_add_issue_notes: Добаване на бележки + permission_set_own_issues_private: Установяване на собствените задачи публични или лични + permission_set_issues_private: Установяване на задачите публични или лични + permission_add_issue_notes: Добавяне на бележки permission_edit_issue_notes: Редактиране на бележки permission_edit_own_issue_notes: Редактиране на собствени бележки permission_move_issues: Преместване на задачи @@ -451,6 +463,9 @@ label_issues_by: "Задачи по %{value}" label_issue_added: Добавена задача label_issue_updated: Обновена задача + label_issue_note_added: Добавена бележка + label_issue_status_updated: Обновено състояние + label_issue_priority_updated: Обновен приоритет label_document: Документ label_document_new: Нов документ label_document_plural: Документи @@ -459,6 +474,8 @@ label_role_plural: Роли label_role_new: Нова роля label_role_and_permissions: Роли и права + label_role_anonymous: Анонимен + label_role_non_member: Не член label_member: Член label_member_new: Нов член label_member_plural: Членове @@ -537,6 +554,7 @@ label_news_latest: Последни новини label_news_view_all: Виж всички label_news_added: Добавена новина + label_news_comment_added: Добавен коментар към новина label_settings: Настройки label_overview: Общ изглед label_version: Версия @@ -733,7 +751,8 @@ label_changeset_plural: Ревизии label_default_columns: По подразбиране label_no_change_option: (Без промяна) - label_bulk_edit_selected_issues: Редактиране на задачи + label_bulk_edit_selected_issues: Групово редактиране на задачи + label_bulk_edit_selected_time_entries: Групово редактиране на записи за използвано време label_theme: Тема label_default: По подразбиране label_search_titles_only: Само в заглавията @@ -795,12 +814,20 @@ label_project_copy_notifications: Изпращане на Send e-mail известия по време на копирането на проекта label_principal_search: "Търсене на потребител или група:" label_user_search: "Търсене на потребител:" + label_additional_workflow_transitions_for_author: Позволени са допълнителни преходи, когато потребителят е авторът + label_additional_workflow_transitions_for_assignee: Позволени са допълнителни преходи, когато потребителят е назначеният към задачата + label_issues_visibility_all: Всички задачи + label_issues_visibility_public: Всички не-лични задачи + label_issues_visibility_own: Задачи, създадени от или назначени на потребителя + label_git_report_last_commit: Извеждане на последното поверяване за файлове и папки button_login: Вход button_submit: Прикачване button_save: Запис button_check_all: Избор на всички button_uncheck_all: Изчистване на всички + button_collapse_all: Скриване всички + button_expand_all: Разгъване всички button_delete: Изтриване button_create: Създаване button_create_and_continue: Създаване и продължаване @@ -860,6 +887,7 @@ text_are_you_sure: Сигурни ли сте? text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? text_journal_changed: "%{label} променен от %{old} на %{new}" + text_journal_changed_no_detail: "%{label} променен" text_journal_set_to: "%{label} установен на %{value}" text_journal_deleted: "%{label} изтрит (%{old})" text_journal_added: "Добавено %{label} %{value}" @@ -887,6 +915,8 @@ text_status_changed_by_changeset: "Приложено с ревизия %{value}." text_time_logged_by_changeset: Приложено в ревизия %{value}. text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?' + text_issues_destroy_descendants_confirmation: Тази операция ще премахне и %{count} подзадача(и). + text_time_entries_destroy_confirmation: Сигурен ли сте, че изтриете избраните записи за изразходвано време? text_select_project_modules: 'Изберете активните модули за този проект:' text_default_administrator_account_changed: Сменен фабричния администраторски профил text_file_repository_writable: Възможност за писане в хранилището с файлове @@ -911,6 +941,13 @@ text_zoom_in: Увеличаване text_zoom_out: Намаляване text_warn_on_leaving_unsaved: Страницата съдържа незаписано съдържание, което може да бъде загубено, ако я напуснете. + text_scm_path_encoding_note: "По подразбиране: UTF-8" + text_git_repository_note: Празно и локално хранилище (например /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Локално хранилище (например /hgrepo, c:\hgrepo) + text_scm_command: SCM команда + text_scm_command_version: Версия + text_scm_config: Можете да конфигурирате SCM командите в config/configuration.yml. За да активирате промените, рестартирайте Redmine. + text_scm_command_not_available: SCM командата не е налична или достъпна. Проверете конфигурацията в административния панел. default_role_manager: Мениджър default_role_developer: Разработчик @@ -938,5 +975,3 @@ enumeration_doc_categories: Категории документи enumeration_activities: Дейности (time tracking) enumeration_system_activity: Системна активност - - text_journal_changed_no_detail: "%{label} updated" diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/bs.yml.svn-base --- a/config/locales/.svn/text-base/bs.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/bs.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -15,7 +15,10 @@ month_names: [~, Januar, Februar, Mart, April, Maj, Jun, Jul, Avgust, Septembar, Oktobar, Novembar, Decembar] abbr_month_names: [~, Jan, Feb, Mar, Apr, Maj, Jun, Jul, Avg, Sep, Okt, Nov, Dec] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -145,8 +148,8 @@ general_lang_name: 'Bosanski' general_csv_separator: ',' general_csv_decimal_separator: '.' - general_csv_encoding: utf8 - general_pdf_encoding: utf8 + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_activated: Vaš nalog je aktiviran. Možete se prijaviti. @@ -257,7 +260,7 @@ field_attr_mail: Atribut za email field_onthefly: 'Kreiranje korisnika "On-the-fly"' field_start_date: Početak - field_done_ratio: % Realizovano + field_done_ratio: "% Realizovano" field_auth_source: Mod za authentifikaciju field_hide_mail: Sakrij moju email adresu field_comments: Komentar @@ -312,7 +315,6 @@ setting_cross_project_issue_relations: Omogući relacije između aktivnosti na različitim projektima setting_issue_list_default_columns: Podrazumjevane koleone za prikaz na listi aktivnosti setting_repositories_encodings: Enkodiranje repozitorija - setting_commit_logs_encoding: 'Enkodiranje "commit" poruka' setting_emails_footer: Potpis na email-ovima setting_protocol: Protokol setting_per_page_options: Broj objekata po stranici @@ -954,3 +956,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: 'Enkodiranje "commit" poruka' + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/ca.yml.svn-base --- a/config/locales/.svn/text-base/ca.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/ca.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -20,7 +20,10 @@ month_names: [~, Gener, Febrer, Març, Abril, Maig, Juny, Juliol, Agost, Setembre, Octubre, Novembre, Desembre] abbr_month_names: [~, Gen, Feb, Mar, Abr, Mai, Jun, Jul, Ago, Set, Oct, Nov, Des] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -138,7 +141,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-15 - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: "El compte s'ha actualitzat correctament." @@ -161,7 +164,7 @@ notice_email_error: "S'ha produït un error en enviar el correu (%{value})" notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del RSS." notice_api_access_key_reseted: "S'ha reiniciat la clau d'accés a l'API." - notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de %{count} seleccionats: %{ids}." + notice_failed_to_save_issues: "No s'han pogut desar %{count} assumptes de %{total} seleccionats: %{ids}." notice_failed_to_save_members: "No s'han pogut desar els membres: %{errors}." notice_no_issue_selected: "No s'ha seleccionat cap assumpte. Activeu els assumptes que voleu editar." notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador." @@ -269,7 +272,7 @@ field_attr_mail: Atribut del correu electrònic field_onthefly: "Creació de l'usuari «al vol»" field_start_date: Inici - field_done_ratio: % realitzat + field_done_ratio: "% realitzat" field_auth_source: "Mode d'autenticació" field_hide_mail: "Oculta l'adreça de correu electrònic" field_comments: Comentari @@ -327,7 +330,6 @@ setting_cross_project_issue_relations: "Permet les relacions d'assumptes entre projectes" setting_issue_list_default_columns: "Columnes mostrades per defecte en la llista d'assumptes" setting_repositories_encodings: Codificacions del dipòsit - setting_commit_logs_encoding: Codificació dels missatges publicats setting_emails_footer: Peu dels correus electrònics setting_protocol: Protocol setting_per_page_options: Opcions dels objectes per pàgina @@ -943,3 +945,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificació dels missatges publicats + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/cs.yml.svn-base --- a/config/locales/.svn/text-base/cs.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/cs.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -21,7 +21,10 @@ month_names: [~, Leden, Únor, Březen, Duben, Květen, Červen, Červenec, Srpen, Září, Říjen, Listopad, Prosinec] abbr_month_names: [~, Led, Úno, Bře, Dub, Kvě, Čer, Čec, Srp, Zář, Říj, Lis, Pro] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -272,7 +275,7 @@ field_attr_mail: Email (atribut) field_onthefly: Automatické vytváření uživatelů field_start_date: Začátek - field_done_ratio: % Hotovo + field_done_ratio: "% Hotovo" field_auth_source: Autentifikační mód field_hide_mail: Nezobrazovat můj email field_comments: Komentář @@ -334,7 +337,6 @@ setting_cross_project_issue_relations: Povolit vazby úkolů napříč projekty setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů setting_repositories_encodings: Kódování - setting_commit_logs_encoding: Kódování zpráv při commitu setting_emails_header: Hlavička emailů setting_emails_footer: Patička emailů setting_protocol: Protokol @@ -349,7 +351,7 @@ setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů setting_gravatar_enabled: Použít uživatelské ikony Gravatar setting_gravatar_default: Výchozí Gravatar - setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů + setting_diff_max_lines_displayed: Maximální počet zobrazených řádků rozdílů setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru setting_openid: Umožnit přihlašování a registrace s OpenID @@ -840,7 +842,7 @@ button_update: Aktualizovat button_configure: Konfigurovat button_quote: Citovat - button_duplicate: Duplikát + button_duplicate: Duplikovat button_show: Zobrazit status_active: aktivní @@ -901,7 +903,7 @@ text_user_wrote: "%{value} napsal:" text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě." text_enumeration_category_reassign_to: 'Přeřadit je do této:' - text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci." + text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci." text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky." text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.' text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' @@ -944,3 +946,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kódování zpráv při commitu + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/da.yml.svn-base --- a/config/locales/.svn/text-base/da.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/da.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -14,7 +14,10 @@ abbr_day_names: [sø, ma, ti, 'on', to, fr, lø] month_names: [~, januar, februar, marts, april, maj, juni, juli, august, september, oktober, november, december] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -134,7 +137,7 @@ greater_than_start_date: "skal være senere end startdatoen" not_same_project: "hører ikke til samme projekt" circular_dependency: "Denne relation vil skabe et afhængighedsforhold" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "En sag kan ikke relateres til en af dens underopgaver" template: header: @@ -151,7 +154,7 @@ general_lang_name: 'Danish (Dansk)' general_csv_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Kontoen er opdateret. @@ -183,7 +186,7 @@ error_scm_command_failed: "En fejl opstod under forbindelsen til det valgte repository: %{value}" mail_subject_lost_password: "Dit %{value} kodeord" - mail_body_lost_password: 'For at ændre dit kodeord, klik på dette link:' + mail_body_lost_password: 'Klik på dette link for at ændre dit kodeord:' mail_subject_register: "%{value} kontoaktivering" mail_body_register: 'Klik på dette link for at aktivere din konto:' mail_body_account_information_external: "Du kan bruge din %{value} konto til at logge ind." @@ -227,7 +230,7 @@ field_due_date: Deadline field_assigned_to: Tildelt til field_priority: Prioritet - field_fixed_version: Target version + field_fixed_version: Udgave field_user: Bruger field_role: Rolle field_homepage: Hjemmeside @@ -254,8 +257,8 @@ field_attr_lastname: Efternavn attribut field_attr_mail: Email attribut field_onthefly: løbende brugeroprettelse - field_start_date: Start date - field_done_ratio: % Færdig + field_start_date: Start dato + field_done_ratio: "% færdig" field_auth_source: Sikkerhedsmetode field_hide_mail: Skjul min email field_comments: Kommentar @@ -349,7 +352,7 @@ label_tracker_new: Ny type label_workflow: Arbejdsgang label_issue_status: Sagsstatus - label_issue_status_plural: Sagsstatuser + label_issue_status_plural: Sagsstatusser label_issue_status_new: Ny status label_issue_category: Sagskategori label_issue_category_plural: Sagskategorier @@ -373,8 +376,8 @@ label_logout: Log ud label_help: Hjælp label_reported_issues: Rapporterede sager - label_assigned_to_me_issues: Sager tildelt mig - label_last_login: Sidste login tidspunkt + label_assigned_to_me_issues: Sager tildelt til mig + label_last_login: Sidste logintidspunkt label_registered_on: Registreret den label_activity: Aktivitet label_new: Ny @@ -489,7 +492,7 @@ label_date_range: Dato interval label_less_than_ago: mindre end dage siden label_more_than_ago: mere end dage siden - label_ago: days siden + label_ago: dage siden label_contains: indeholder label_not_contains: ikke indeholder label_day_plural: dage @@ -500,7 +503,7 @@ label_modification_plural: "%{count} ændringer" label_revision: Revision label_revision_plural: Revisioner - label_associated_revisions: Tilnyttede revisioner + label_associated_revisions: Tilknyttede revisioner label_added: tilføjet label_modified: ændret label_deleted: slettet @@ -530,7 +533,7 @@ label_preview: Forhåndsvisning label_feed_plural: Feeds label_changes_details: Detaljer for alle ændringer - label_issue_tracking: Sags søgning + label_issue_tracking: Sagssøgning label_spent_time: Anvendt tid label_f_hour: "%{value} time" label_f_hour_plural: "%{value} timer" @@ -547,7 +550,7 @@ label_permissions_report: Godkendelsesrapport label_watched_issues: Overvågede sager label_related_issues: Relaterede sager - label_applied_status: Anvendte statuser + label_applied_status: Anvendte statusser label_loading: Indlæser... label_relation_new: Ny relation label_relation_delete: Slet relation @@ -590,7 +593,7 @@ label_jump_to_a_project: Skift til projekt... label_file_plural: Filer label_changeset_plural: Ændringer - label_default_columns: Standard kolonner + label_default_columns: Standardkolonner label_no_change_option: (Ingen ændringer) label_bulk_edit_selected_issues: Masse-ret de valgte sager label_theme: Tema @@ -678,20 +681,20 @@ text_issue_category_destroy_assignments: Slet tildelinger af kategori text_issue_category_reassign_to: Tildel sager til denne kategori text_user_mail_option: "For ikke-valgte projekter vil du kun modtage beskeder omhandlende ting du er involveret i eller overvåger (f.eks. sager du har indberettet eller ejer)." - text_no_configuration_data: "Roller, typer, sagsstatuser og arbejdsgange er endnu ikke konfigureret.\nDet er anbefalet at indlæse standardopsætningen. Du vil kunne ændre denne når den er indlæst." + text_no_configuration_data: "Roller, typer, sagsstatusser og arbejdsgange er endnu ikke konfigureret.\nDet er anbefalet at indlæse standardopsætningen. Du vil kunne ændre denne når den er indlæst." text_load_default_configuration: Indlæs standardopsætningen text_status_changed_by_changeset: "Anvendt i ændring %{value}." text_issues_destroy_confirmation: 'Er du sikker på du ønsker at slette den/de valgte sag(er)?' text_select_project_modules: 'Vælg moduler er skal være aktiveret for dette projekt:' - text_default_administrator_account_changed: Standard administratorkonto ændret + text_default_administrator_account_changed: Standardadministratorkonto ændret text_file_repository_writable: Filarkiv er skrivbar text_rmagick_available: RMagick tilgængelig (valgfri) default_role_manager: Leder default_role_developer: Udvikler default_role_reporter: Rapportør - default_tracker_bug: Bug - default_tracker_feature: Feature + default_tracker_bug: Fejl + default_tracker_feature: Funktion default_tracker_support: Support default_issue_status_new: Ny default_issue_status_in_progress: Igangværende @@ -720,12 +723,12 @@ error_issue_not_found_in_project: 'Sagen blev ikke fundet eller tilhører ikke dette projekt' text_assign_time_entries_to_project: Tildel raporterede timer til projektet setting_display_subprojects_issues: Vis sager for underprojekter på hovedprojektet som standard - label_optional_description: Optionel beskrivelse + label_optional_description: Valgfri beskrivelse text_destroy_time_entries: Slet registrerede timer field_comments_sorting: Vis kommentar text_reassign_time_entries: 'Tildel registrerede timer til denne sag igen' label_reverse_chronological_order: I omvendt kronologisk rækkefølge - label_preferences: Preferences + label_preferences: Præferencer label_overall_activity: Overordnet aktivitet setting_default_projects_public: Nye projekter er offentlige som standard error_scm_annotate: "Filen findes ikke, eller kunne ikke annoteres." @@ -759,7 +762,7 @@ permission_add_issue_watchers: Tilføj overvågere warning_attachments_not_saved: "der var %{count} fil(er), som ikke kunne gemmes." permission_comment_news: Kommentér nyheder - text_enumeration_category_reassign_to: 'FLyt dem til denne værdi:' + text_enumeration_category_reassign_to: 'Flyt dem til denne værdi:' permission_select_project_modules: Vælg projektmoduler permission_view_gantt: Se Gantt diagram permission_delete_messages: Slet beskeder @@ -786,9 +789,9 @@ label_and_its_subprojects: "%{value} og dets underprojekter" permission_view_calendar: Se kalender button_create_and_continue: Opret og fortsæt - setting_gravatar_enabled: Anvend Gravatar bruger ikoner + setting_gravatar_enabled: Anvend Gravatar brugerikoner label_updated_time_by: "Opdateret af %{author} for %{age} siden" - text_diff_truncated: '... Listen over forskelle er bleve afkortet da den overstiger den maksimale størrelse der kan vises.' + text_diff_truncated: '... Listen over forskelle er blevet afkortet da den overstiger den maksimale størrelse der kan vises.' text_user_wrote: "%{value} skrev:" setting_mail_handler_api_enabled: Aktiver webservice for indkomne emails permission_delete_issues: Slet sager @@ -809,7 +812,6 @@ permission_edit_project: Redigér projekt permission_save_queries: Gem forespørgsler label_copied: kopieret - setting_commit_logs_encoding: Kodning af Commit beskeder text_repository_usernames_mapping: "Vælg eller opdatér de Redmine brugere der svarer til de enkelte brugere fundet i repository loggen.\nBrugere med samme brugernavn eller email adresse i både Redmine og det valgte repository bliver automatisk koblet sammen." permission_edit_time_entries: Redigér tidsregistreringer general_csv_decimal_separator: ',' @@ -847,7 +849,7 @@ label_tag: Tag label_branch: Branch error_no_tracker_in_project: Der er ingen sagshåndtering for dette projekt. Kontrollér venligst projektindstillingerne. - error_no_default_issue_status: Der er ikek defineret en standardstatus. Kontrollér venligst indstillingernen (Gå til "Administration -> Sagsstatuser"). + error_no_default_issue_status: Der er ikke defineret en standardstatus. Kontrollér venligst indstillingerne (gå til "Administration -> Sagsstatusser"). text_journal_changed: "%{label} ændret fra %{old} til %{new}" text_journal_set_to: "%{label} sat til %{value}" text_journal_deleted: "%{label} slettet (%{old})" @@ -862,34 +864,34 @@ version_status_closed: lukket version_status_locked: låst version_status_open: åben - error_can_not_reopen_issue_on_closed_version: En sag tildelt en lukket version, kan ikke genåbnes + error_can_not_reopen_issue_on_closed_version: En sag tildelt en lukket version kan ikke genåbnes label_user_anonymous: Anonym button_move_and_follow: Flyt og overvåg setting_default_projects_modules: Standard moduler, aktiveret for nye projekter setting_gravatar_default: Standard Gravatar billede field_sharing: Delning - label_version_sharing_hierarchy: Med projekt hierarki + label_version_sharing_hierarchy: Med projekthierarki label_version_sharing_system: Med alle projekter - label_version_sharing_descendants: Med under projekter - label_version_sharing_tree: Med projekt træ + label_version_sharing_descendants: Med underprojekter + label_version_sharing_tree: Med projekttræ label_version_sharing_none: Ikke delt error_can_not_archive_project: Dette projekt kan ikke arkiveres button_duplicate: Duplikér button_copy_and_follow: Kopiér og overvåg label_copy_source: Kilde setting_issue_done_ratio: Beregn sagsløsning ratio - setting_issue_done_ratio_issue_status: Benyt sags status + setting_issue_done_ratio_issue_status: Benyt sagsstatus error_issue_done_ratios_not_updated: Sagsløsnings ratio, ikke opdateret. - error_workflow_copy_target: Vælg venligst mål tracker og rolle(r) - setting_issue_done_ratio_issue_field: Benyt sags felt + error_workflow_copy_target: Vælg venligst måltracker og rolle(r) + setting_issue_done_ratio_issue_field: Benyt sagsfelt label_copy_same_as_target: Samme som mål label_copy_target: Mål - notice_issue_done_ratios_updated: Sagsløsnings ratio opdateret. - error_workflow_copy_source: Vælg venligst en kilde tracker eller rolle - label_update_issue_done_ratios: Opdater sagsløsnings ratio + notice_issue_done_ratios_updated: Sagsløsningsratio opdateret. + error_workflow_copy_source: Vælg venligst en kildetracker eller rolle + label_update_issue_done_ratios: Opdater sagsløsningsratio setting_start_of_week: Start kalendre på permission_view_issues: Vis sager - label_display_used_statuses_only: Vis kun statuser der er benyttet af denne tracker + label_display_used_statuses_only: Vis kun statusser der er benyttet af denne tracker label_revision_id: Revision %{value} label_api_access_key: API nøgle label_api_access_key_created_on: API nøgle genereret %{value} siden @@ -911,12 +913,12 @@ label_board_locked: Låst permission_export_wiki_pages: Eksporter wiki sider setting_cache_formatted_text: Cache formatteret tekst - permission_manage_project_activities: Administrer projekt aktiviteter - error_unable_delete_issue_status: Det var ikke muligt at slette sags status + permission_manage_project_activities: Administrer projektaktiviteter + error_unable_delete_issue_status: Det var ikke muligt at slette sagsstatus label_profile: Profil - permission_manage_subtasks: Administrer under opgaver - field_parent_issue: Hoved opgave - label_subtask_plural: Under opgaver + permission_manage_subtasks: Administrer underopgaver + field_parent_issue: Hovedopgave + label_subtask_plural: Underopgaver label_project_copy_notifications: Send email notifikationer, mens projektet kopieres error_can_not_delete_custom_field: Kan ikke slette brugerdefineret felt error_unable_to_connect: Kan ikke forbinde (%{value}) @@ -926,7 +928,7 @@ label_my_page_block: blok notice_failed_to_save_members: "Fejl under lagring af medlem(mer): %{errors}." text_zoom_out: Zoom ud - text_zoom_in: Zoom in + text_zoom_in: Zoom ind notice_unable_delete_time_entry: Kan ikke slette tidsregistrering. label_overall_spent_time: Overordnet forbrug af tid field_time_entries: Log tid @@ -935,24 +937,59 @@ button_edit_associated_wikipage: "Redigér tilknyttet Wiki side: %{page_title}" text_are_you_sure_with_children: Slet sag og alle undersager? field_text: Tekstfelt - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Medlem af Gruppe - field_assigned_to_role: Medlem af Rolle - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible + label_user_mail_option_only_owner: Kun for ting jeg er ejer af + setting_default_notification_option: Standardpåmindelsesmulighed + label_user_mail_option_only_my_events: Kun for ting jeg overvåger eller er involveret i + label_user_mail_option_only_assigned: Kun for ting jeg er tildelt + label_user_mail_option_none: Ingen hændelser + field_member_of_group: Medlem af gruppe + field_assigned_to_role: Medlem af rolle + notice_not_authorized_archived_project: Projektet du prøver at tilgå, er blevet arkiveret. + label_principal_search: "Søg efter bruger eller gruppe:" + label_user_search: "Søg efter bruger:" + field_visible: Synlig setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + setting_commit_logtime_activity_id: Aktivitet for registreret tid + text_time_logged_by_changeset: Anvendt i changeset %{value}. + setting_commit_logtime_enabled: Aktiver tidsregistrering + notice_gantt_chart_truncated: Kortet er blevet afkortet, fordi det overstiger det maksimale antal elementer, der kan vises (%{max}) + setting_gantt_items_limit: Maksimalt antal af elementer der kan vises på gantt kortet + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodning af Commit beskeder + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/de.yml.svn-base --- a/config/locales/.svn/text-base/de.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/de.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ # German translations for Ruby on Rails # by Clemens Kofler (clemens@railway.at) +# additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com) de: direction: ltr @@ -19,7 +20,10 @@ month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] # Used in date_select and datime_select. - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -152,7 +156,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Konto wurde erfolgreich aktualisiert. @@ -283,7 +287,7 @@ field_attr_mail: E-Mail-Attribut field_onthefly: On-the-fly-Benutzererstellung field_start_date: Beginn - field_done_ratio: % erledigt + field_done_ratio: "% erledigt" field_auth_source: Authentifizierungs-Modus field_hide_mail: E-Mail-Adresse nicht anzeigen field_comments: Kommentar @@ -341,7 +345,6 @@ setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben setting_issue_list_default_columns: Default-Spalten in der Ticket-Auflistung setting_repositories_encodings: Kodierungen der Projektarchive - setting_commit_logs_encoding: Kodierung der Commit-Log-Meldungen setting_emails_footer: E-Mail-Fußzeile setting_protocol: Protokoll setting_per_page_options: Objekte pro Seite @@ -947,13 +950,48 @@ field_member_of_group: Zuständigkeitsgruppe field_assigned_to_role: Zuständigkeitsrolle field_visible: Sichtbar - setting_emails_header: Emailkopf + setting_emails_header: E-Mail Betreffzeile setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung text_time_logged_by_changeset: Angewendet in Changeset %{value}. setting_commit_logtime_enabled: Aktiviere Zeitlogging notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max}) setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden. - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen + text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen. + label_my_queries: Meine eigenen Abfragen + text_journal_changed_no_detail: "%{label} aktualisiert" + label_news_comment_added: Kommentar zu einer News hinzugefügt + button_expand_all: Alle ausklappen + button_collapse_all: Alle einklappen + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten + text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Zeitaufwände löschen möchten? + label_role_anonymous: Anonymous + label_role_non_member: Nichtmitglied + label_issue_note_added: Notiz hinzugefügt + label_issue_status_updated: Status aktualisiert + label_issue_priority_updated: Priorität aktualisiert + label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind + field_issues_visibility: Ticket Sichtbarkeit + label_issues_visibility_all: Alle Tickets + permission_set_own_issues_private: Eigene Tickets privat oder öffentlich markieren + field_is_private: Privat + permission_set_issues_private: Tickets privat oder öffentlich markieren + label_issues_visibility_public: Alle nicht privaten Tickets + text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n löschen. + field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen + field_scm_path_encoding: Pfad Kodierung + text_scm_path_encoding_note: "Standard: UTF-8" + field_path_to_repository: Pfad zum repository + field_root_directory: Wurzelverzeichnis + field_cvs_module: Modul + field_cvsroot: CVSROOT + text_git_repository_note: Bare und lokales repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Kommando + text_scm_command_version: Version + label_git_report_last_commit: Bericht des letzten Commits für Dateien und Verzeichnisse + text_scm_config: Sie können Ihre scm Kommandos in config/configuration.yml ändern. Bitte starten Sie die Anwendung nach dem ändern neu. + text_scm_command_not_available: Scm Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel. + diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/el.yml.svn-base --- a/config/locales/.svn/text-base/el.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/el.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -19,7 +19,10 @@ month_names: [~, Ιανουάριος, Φεβρουάριος, Μάρτιος, Απρίλιος, Μάϊος, Ιούνιος, Ιούλιος, Αύγουστος, Σεπτέμβριος, Οκτώβριος, Νοέμβριος, Δεκέμβριος] abbr_month_names: [~, Ιαν, Φεβ, Μαρ, Απρ, Μαϊ, Ιον, Ιολ, Αυγ, Σεπ, Οκτ, Νοε, Δεκ] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -252,7 +255,7 @@ field_attr_mail: Ιδιότητα email field_onthefly: Άμεση δημιουργία χρήστη field_start_date: Εκκίνηση - field_done_ratio: % επιτεύχθη + field_done_ratio: "% επιτεύχθη" field_auth_source: Τρόπος πιστοποίησης field_hide_mail: Απόκρυψη διεύθυνσης email field_comments: Σχόλιο @@ -307,7 +310,6 @@ setting_cross_project_issue_relations: Επιτρέψτε συσχετισμό θεμάτων σε διασταύρωση-έργων setting_issue_list_default_columns: Προκαθορισμένες εμφανιζόμενες στήλες στη λίστα θεμάτων setting_repositories_encodings: Κωδικοποίηση χαρακτήρων αποθετηρίου - setting_commit_logs_encoding: Κωδικοποίηση μηνυμάτων commit setting_emails_footer: Υποσέλιδο στα email setting_protocol: Πρωτόκολο setting_per_page_options: Αντικείμενα ανά σελίδα επιλογών @@ -940,3 +942,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Κωδικοποίηση μηνυμάτων commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/en-GB.yml.svn-base --- a/config/locales/.svn/text-base/en-GB.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/en-GB.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,946 +1,981 @@ -en-GB: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d/%m/%Y" - short: "%d %b" - long: "%d %B, %Y" - - day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] - abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] - abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] - # Used in date_select and datime_select. - order: [ :year, :month, :day ] - - time: - formats: - default: "%d/%m/%Y %I:%M %p" - time: "%I:%M %p" - short: "%d %b %H:%M" - long: "%d %B, %Y %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "half a minute" - less_than_x_seconds: - one: "less than 1 second" - other: "less than %{count} seconds" - x_seconds: - one: "1 second" - other: "%{count} seconds" - less_than_x_minutes: - one: "less than a minute" - other: "less than %{count} minutes" - x_minutes: - one: "1 minute" - other: "%{count} minutes" - about_x_hours: - one: "about 1 hour" - other: "about %{count} hours" - x_days: - one: "1 day" - other: "%{count} days" - about_x_months: - one: "about 1 month" - other: "about %{count} months" - x_months: - one: "1 month" - other: "%{count} months" - about_x_years: - one: "about 1 year" - other: "about %{count} years" - over_x_years: - one: "over 1 year" - other: "over %{count} years" - almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" - - number: - format: - separator: "." - delimiter: " " - precision: 3 - - currency: - format: - format: "%u%n" - unit: "£" - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "kB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "and" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "is not included in the list" - exclusion: "is reserved" - invalid: "is invalid" - confirmation: "doesn't match confirmation" - accepted: "must be accepted" - empty: "can't be empty" - blank: "can't be blank" - too_long: "is too long (maximum is %{count} characters)" - too_short: "is too short (minimum is %{count} characters)" - wrong_length: "is the wrong length (should be %{count} characters)" - taken: "has already been taken" - not_a_number: "is not a number" - not_a_date: "is not a valid date" - greater_than: "must be greater than %{count}" - greater_than_or_equal_to: "must be greater than or equal to %{count}" - equal_to: "must be equal to %{count}" - less_than: "must be less than %{count}" - less_than_or_equal_to: "must be less than or equal to %{count}" - odd: "must be odd" - even: "must be even" - greater_than_start_date: "must be greater than start date" - not_same_project: "doesn't belong to the same project" - circular_dependency: "This relation would create a circular dependency" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" - - actionview_instancetag_blank_option: Please select - - general_text_No: 'No' - general_text_Yes: 'Yes' - general_text_no: 'no' - general_text_yes: 'yes' - general_lang_name: 'English (British)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 - general_first_day_of_week: '1' - - notice_account_updated: Account was successfully updated. - notice_account_invalid_creditentials: Invalid user or password - notice_account_password_updated: Password was successfully updated. - notice_account_wrong_password: Wrong password - notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. - notice_account_unknown_email: Unknown user. - notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. - notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. - notice_account_activated: Your account has been activated. You can now log in. - notice_successful_create: Successful creation. - notice_successful_update: Successful update. - notice_successful_delete: Successful deletion. - notice_successful_connection: Successful connection. - notice_file_not_found: The page you were trying to access doesn't exist or has been removed. - notice_locking_conflict: Data has been updated by another user. - notice_not_authorized: You are not authorised to access this page. - notice_email_sent: "An email was sent to %{value}" - notice_email_error: "An error occurred while sending mail (%{value})" - notice_feeds_access_key_reseted: Your RSS access key was reset. - notice_api_access_key_reseted: Your API access key was reset. - notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." - notice_account_pending: "Your account was created and is now pending administrator approval." - notice_default_data_loaded: Default configuration successfully loaded. - notice_unable_delete_version: Unable to delete version. - notice_issue_done_ratios_updated: Issue done ratios updated. - - error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" - error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or can not be annotated." - error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - - warning_attachments_not_saved: "%{count} file(s) could not be saved." - - mail_subject_lost_password: "Your %{value} password" - mail_body_lost_password: 'To change your password, click on the following link:' - mail_subject_register: "Your %{value} account activation" - mail_body_register: 'To activate your account, click on the following link:' - mail_body_account_information_external: "You can use your %{value} account to log in." - mail_body_account_information: Your account information - mail_subject_account_activation_request: "%{value} account activation request" - mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 error - gui_validation_error_plural: "%{count} errors" - - field_name: Name - field_description: Description - field_summary: Summary - field_is_required: Required - field_firstname: Firstname - field_lastname: Lastname - field_mail: Email - field_filename: File - field_filesize: Size - field_downloads: Downloads - field_author: Author - field_created_on: Created - field_updated_on: Updated - field_field_format: Format - field_is_for_all: For all projects - field_possible_values: Possible values - field_regexp: Regular expression - field_min_length: Minimum length - field_max_length: Maximum length - field_value: Value - field_category: Category - field_title: Title - field_project: Project - field_issue: Issue - field_status: Status - field_notes: Notes - field_is_closed: Issue closed - field_is_default: Default value - field_tracker: Tracker - field_subject: Subject - field_due_date: Due date - field_assigned_to: Assignee - field_priority: Priority - field_fixed_version: Target version - field_user: User - field_role: Role - field_homepage: Homepage - field_is_public: Public - field_parent: Subproject of - field_is_in_roadmap: Issues displayed in roadmap - field_login: Login - field_mail_notification: Email notifications - field_admin: Administrator - field_last_login_on: Last connection - field_language: Language - field_effective_date: Date - field_password: Password - field_new_password: New password - field_password_confirmation: Confirmation - field_version: Version - field_type: Type - field_host: Host - field_port: Port - field_account: Account - field_base_dn: Base DN - field_attr_login: Login attribute - field_attr_firstname: Firstname attribute - field_attr_lastname: Lastname attribute - field_attr_mail: Email attribute - field_onthefly: On-the-fly user creation - field_start_date: Start date - field_done_ratio: % Done - field_auth_source: Authentication mode - field_hide_mail: Hide my email address - field_comments: Comment - field_url: URL - field_start_page: Start page - field_subproject: Subproject - field_hours: Hours - field_activity: Activity - field_spent_on: Date - field_identifier: Identifier - field_is_filter: Used as a filter - field_issue_to: Related issue - field_delay: Delay - field_assignable: Issues can be assigned to this role - field_redirect_existing_links: Redirect existing links - field_estimated_hours: Estimated time - field_column_names: Columns - field_time_zone: Time zone - field_searchable: Searchable - field_default_value: Default value - field_comments_sorting: Display comments - field_parent_title: Parent page - field_editable: Editable - field_watcher: Watcher - field_identity_url: OpenID URL - field_content: Content - field_group_by: Group results by - field_sharing: Sharing - - setting_app_title: Application title - setting_app_subtitle: Application subtitle - setting_welcome_text: Welcome text - setting_default_language: Default language - setting_login_required: Authentication required - setting_self_registration: Self-registration - setting_attachment_max_size: Attachment max. size - setting_issues_export_limit: Issues export limit - setting_mail_from: Emission email address - setting_bcc_recipients: Blind carbon copy recipients (bcc) - setting_plain_text_mail: Plain text mail (no HTML) - setting_host_name: Host name and path - setting_text_formatting: Text formatting - setting_wiki_compression: Wiki history compression - setting_feeds_limit: Feed content limit - setting_default_projects_public: New projects are public by default - setting_autofetch_changesets: Autofetch commits - setting_sys_api_enabled: Enable WS for repository management - setting_commit_ref_keywords: Referencing keywords - setting_commit_fix_keywords: Fixing keywords - setting_autologin: Autologin - setting_date_format: Date format - setting_time_format: Time format - setting_cross_project_issue_relations: Allow cross-project issue relations - setting_issue_list_default_columns: Default columns displayed on the issue list - setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding - setting_emails_footer: Emails footer - setting_protocol: Protocol - setting_per_page_options: Objects per page options - setting_user_format: Users display format - setting_activity_days_default: Days displayed on project activity - setting_display_subprojects_issues: Display subprojects issues on main projects by default - setting_enabled_scm: Enabled SCM - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Enable WS for incoming emails - setting_mail_handler_api_key: API key - setting_sequential_project_identifiers: Generate sequential project identifiers - setting_gravatar_enabled: Use Gravatar user icons - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Max number of diff lines displayed - setting_file_max_size_displayed: Max size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Allow OpenID login and registration - setting_password_min_length: Minimum password length - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - - permission_add_project: Create project - permission_add_subprojects: Create subprojects - permission_edit_project: Edit project - permission_select_project_modules: Select project modules - permission_manage_members: Manage members - permission_manage_project_activities: Manage project activities - permission_manage_versions: Manage versions - permission_manage_categories: Manage issue categories - permission_view_issues: View Issues - permission_add_issues: Add issues - permission_edit_issues: Edit issues - permission_manage_issue_relations: Manage issue relations - permission_add_issue_notes: Add notes - permission_edit_issue_notes: Edit notes - permission_edit_own_issue_notes: Edit own notes - permission_move_issues: Move issues - permission_delete_issues: Delete issues - permission_manage_public_queries: Manage public queries - permission_save_queries: Save queries - permission_view_gantt: View gantt chart - permission_view_calendar: View calendar - permission_view_issue_watchers: View watchers list - permission_add_issue_watchers: Add watchers - permission_delete_issue_watchers: Delete watchers - permission_log_time: Log spent time - permission_view_time_entries: View spent time - permission_edit_time_entries: Edit time logs - permission_edit_own_time_entries: Edit own time logs - permission_manage_news: Manage news - permission_comment_news: Comment news - permission_manage_documents: Manage documents - permission_view_documents: View documents - permission_manage_files: Manage files - permission_view_files: View files - permission_manage_wiki: Manage wiki - permission_rename_wiki_pages: Rename wiki pages - permission_delete_wiki_pages: Delete wiki pages - permission_view_wiki_pages: View wiki - permission_view_wiki_edits: View wiki history - permission_edit_wiki_pages: Edit wiki pages - permission_delete_wiki_pages_attachments: Delete attachments - permission_protect_wiki_pages: Protect wiki pages - permission_manage_repository: Manage repository - permission_browse_repository: Browse repository - permission_view_changesets: View changesets - permission_commit_access: Commit access - permission_manage_boards: Manage boards - permission_view_messages: View messages - permission_add_messages: Post messages - permission_edit_messages: Edit messages - permission_edit_own_messages: Edit own messages - permission_delete_messages: Delete messages - permission_delete_own_messages: Delete own messages - permission_export_wiki_pages: Export wiki pages - - project_module_issue_tracking: Issue tracking - project_module_time_tracking: Time tracking - project_module_news: News - project_module_documents: Documents - project_module_files: Files - project_module_wiki: Wiki - project_module_repository: Repository - project_module_boards: Boards - - label_user: User - label_user_plural: Users - label_user_new: New user - label_user_anonymous: Anonymous - label_project: Project - label_project_new: New project - label_project_plural: Projects - label_x_projects: - zero: no projects - one: 1 project - other: "%{count} projects" - label_project_all: All Projects - label_project_latest: Latest projects - label_issue: Issue - label_issue_new: New issue - label_issue_plural: Issues - label_issue_view_all: View all issues - label_issues_by: "Issues by %{value}" - label_issue_added: Issue added - label_issue_updated: Issue updated - label_document: Document - label_document_new: New document - label_document_plural: Documents - label_document_added: Document added - label_role: Role - label_role_plural: Roles - label_role_new: New role - label_role_and_permissions: Roles and permissions - label_member: Member - label_member_new: New member - label_member_plural: Members - label_tracker: Tracker - label_tracker_plural: Trackers - label_tracker_new: New tracker - label_workflow: Workflow - label_issue_status: Issue status - label_issue_status_plural: Issue statuses - label_issue_status_new: New status - label_issue_category: Issue category - label_issue_category_plural: Issue categories - label_issue_category_new: New category - label_custom_field: Custom field - label_custom_field_plural: Custom fields - label_custom_field_new: New custom field - label_enumerations: Enumerations - label_enumeration_new: New value - label_information: Information - label_information_plural: Information - label_please_login: Please log in - label_register: Register - label_login_with_open_id_option: or login with OpenID - label_password_lost: Lost password - label_home: Home - label_my_page: My page - label_my_account: My account - label_my_projects: My projects - label_administration: Administration - label_login: Sign in - label_logout: Sign out - label_help: Help - label_reported_issues: Reported issues - label_assigned_to_me_issues: Issues assigned to me - label_last_login: Last connection - label_registered_on: Registered on - label_activity: Activity - label_overall_activity: Overall activity - label_user_activity: "%{value}'s activity" - label_new: New - label_logged_as: Logged in as - label_environment: Environment - label_authentication: Authentication - label_auth_source: Authentication mode - label_auth_source_new: New authentication mode - label_auth_source_plural: Authentication modes - label_subproject_plural: Subprojects - label_subproject_new: New subproject - label_and_its_subprojects: "%{value} and its subprojects" - label_min_max_length: Min - Max length - label_list: List - label_date: Date - label_integer: Integer - label_float: Float - label_boolean: Boolean - label_string: Text - label_text: Long text - label_attribute: Attribute - label_attribute_plural: Attributes - label_download: "%{count} Download" - label_download_plural: "%{count} Downloads" - label_no_data: No data to display - label_change_status: Change status - label_history: History - label_attachment: File - label_attachment_new: New file - label_attachment_delete: Delete file - label_attachment_plural: Files - label_file_added: File added - label_report: Report - label_report_plural: Reports - label_news: News - label_news_new: Add news - label_news_plural: News - label_news_latest: Latest news - label_news_view_all: View all news - label_news_added: News added - label_settings: Settings - label_overview: Overview - label_version: Version - label_version_new: New version - label_version_plural: Versions - label_close_versions: Close completed versions - label_confirmation: Confirmation - label_export_to: 'Also available in:' - label_read: Read... - label_public_projects: Public projects - label_open_issues: open - label_open_issues_plural: open - label_closed_issues: closed - label_closed_issues_plural: closed - label_x_open_issues_abbr_on_total: - zero: 0 open / %{total} - one: 1 open / %{total} - other: "%{count} open / %{total}" - label_x_open_issues_abbr: - zero: 0 open - one: 1 open - other: "%{count} open" - label_x_closed_issues_abbr: - zero: 0 closed - one: 1 closed - other: "%{count} closed" - label_total: Total - label_permissions: Permissions - label_current_status: Current status - label_new_statuses_allowed: New statuses allowed - label_all: all - label_none: none - label_nobody: nobody - label_next: Next - label_previous: Previous - label_used_by: Used by - label_details: Details - label_add_note: Add a note - label_per_page: Per page - label_calendar: Calendar - label_months_from: months from - label_gantt: Gantt - label_internal: Internal - label_last_changes: "last %{count} changes" - label_change_view_all: View all changes - label_personalize_page: Personalise this page - label_comment: Comment - label_comment_plural: Comments - label_x_comments: - zero: no comments - one: 1 comment - other: "%{count} comments" - label_comment_add: Add a comment - label_comment_added: Comment added - label_comment_delete: Delete comments - label_query: Custom query - label_query_plural: Custom queries - label_query_new: New query - label_filter_add: Add filter - label_filter_plural: Filters - label_equals: is - label_not_equals: is not - label_in_less_than: in less than - label_in_more_than: in more than - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: in - label_today: today - label_all_time: all time - label_yesterday: yesterday - label_this_week: this week - label_last_week: last week - label_last_n_days: "last %{count} days" - label_this_month: this month - label_last_month: last month - label_this_year: this year - label_date_range: Date range - label_less_than_ago: less than days ago - label_more_than_ago: more than days ago - label_ago: days ago - label_contains: contains - label_not_contains: doesn't contain - label_day_plural: days - label_repository: Repository - label_repository_plural: Repositories - label_browse: Browse - label_modification: "%{count} change" - label_modification_plural: "%{count} changes" - label_branch: Branch - label_tag: Tag - label_revision: Revision - label_revision_plural: Revisions - label_revision_id: "Revision %{value}" - label_associated_revisions: Associated revisions - label_added: added - label_modified: modified - label_copied: copied - label_renamed: renamed - label_deleted: deleted - label_latest_revision: Latest revision - label_latest_revision_plural: Latest revisions - label_view_revisions: View revisions - label_view_all_revisions: View all revisions - label_max_size: Maximum size - label_sort_highest: Move to top - label_sort_higher: Move up - label_sort_lower: Move down - label_sort_lowest: Move to bottom - label_roadmap: Roadmap - label_roadmap_due_in: "Due in %{value}" - label_roadmap_overdue: "%{value} late" - label_roadmap_no_issues: No issues for this version - label_search: Search - label_result_plural: Results - label_all_words: All words - label_wiki: Wiki - label_wiki_edit: Wiki edit - label_wiki_edit_plural: Wiki edits - label_wiki_page: Wiki page - label_wiki_page_plural: Wiki pages - label_index_by_title: Index by title - label_index_by_date: Index by date - label_current_version: Current version - label_preview: Preview - label_feed_plural: Feeds - label_changes_details: Details of all changes - label_issue_tracking: Issue tracking - label_spent_time: Spent time - label_f_hour: "%{value} hour" - label_f_hour_plural: "%{value} hours" - label_time_tracking: Time tracking - label_change_plural: Changes - label_statistics: Statistics - label_commits_per_month: Commits per month - label_commits_per_author: Commits per author - label_view_diff: View differences - label_diff_inline: inline - label_diff_side_by_side: side by side - label_options: Options - label_copy_workflow_from: Copy workflow from - label_permissions_report: Permissions report - label_watched_issues: Watched issues - label_related_issues: Related issues - label_applied_status: Applied status - label_loading: Loading... - label_relation_new: New relation - label_relation_delete: Delete relation - label_relates_to: related to - label_duplicates: duplicates - label_duplicated_by: duplicated by - label_blocks: blocks - label_blocked_by: blocked by - label_precedes: precedes - label_follows: follows - label_end_to_start: end to start - label_end_to_end: end to end - label_start_to_start: start to start - label_start_to_end: start to end - label_stay_logged_in: Stay logged in - label_disabled: disabled - label_show_completed_versions: Show completed versions - label_me: me - label_board: Forum - label_board_new: New forum - label_board_plural: Forums - label_board_locked: Locked - label_board_sticky: Sticky - label_topic_plural: Topics - label_message_plural: Messages - label_message_last: Last message - label_message_new: New message - label_message_posted: Message added - label_reply_plural: Replies - label_send_information: Send account information to the user - label_year: Year - label_month: Month - label_week: Week - label_date_from: From - label_date_to: To - label_language_based: Based on user's language - label_sort_by: "Sort by %{value}" - label_send_test_email: Send a test email - label_feeds_access_key: RSS access key - label_missing_feeds_access_key: Missing a RSS access key - label_feeds_access_key_created_on: "RSS access key created %{value} ago" - label_module_plural: Modules - label_added_time_by: "Added by %{author} %{age} ago" - label_updated_time_by: "Updated by %{author} %{age} ago" - label_updated_time: "Updated %{value} ago" - label_jump_to_a_project: Jump to a project... - label_file_plural: Files - label_changeset_plural: Changesets - label_default_columns: Default columns - label_no_change_option: (No change) - label_bulk_edit_selected_issues: Bulk edit selected issues - label_theme: Theme - label_default: Default - label_search_titles_only: Search titles only - label_user_mail_option_all: "For any event on all my projects" - label_user_mail_option_selected: "For any event on the selected projects only..." - label_user_mail_option_none: "No events" - label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" - label_registration_activation_by_email: account activation by email - label_registration_manual_activation: manual account activation - label_registration_automatic_activation: automatic account activation - label_display_per_page: "Per page: %{value}" - label_age: Age - label_change_properties: Change properties - label_general: General - label_more: More - label_scm: SCM - label_plugins: Plugins - label_ldap_authentication: LDAP authentication - label_downloads_abbr: D/L - label_optional_description: Optional description - label_add_another_file: Add another file - label_preferences: Preferences - label_chronological_order: In chronological order - label_reverse_chronological_order: In reverse chronological order - label_planning: Planning - label_incoming_emails: Incoming emails - label_generate_key: Generate a key - label_issue_watchers: Watchers - label_example: Example - label_display: Display - label_sort: Sort - label_ascending: Ascending - label_descending: Descending - label_date_from_to: From %{start} to %{end} - label_wiki_content_added: Wiki page added - label_wiki_content_updated: Wiki page updated - label_group: Group - label_group_plural: Groups - label_group_new: New group - label_time_entry_plural: Spent time - label_version_sharing_none: Not shared - label_version_sharing_descendants: With subprojects - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_tree: With project tree - label_version_sharing_system: With all projects - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Source - label_copy_target: Target - label_copy_same_as_target: Same as target - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API access key - label_missing_api_access_key: Missing an API access key - label_api_access_key_created_on: "API access key created %{value} ago" - - button_login: Login - button_submit: Submit - button_save: Save - button_check_all: Check all - button_uncheck_all: Uncheck all - button_delete: Delete - button_create: Create - button_create_and_continue: Create and continue - button_test: Test - button_edit: Edit - button_add: Add - button_change: Change - button_apply: Apply - button_clear: Clear - button_lock: Lock - button_unlock: Unlock - button_download: Download - button_list: List - button_view: View - button_move: Move - button_move_and_follow: Move and follow - button_back: Back - button_cancel: Cancel - button_activate: Activate - button_sort: Sort - button_log_time: Log time - button_rollback: Rollback to this version - button_watch: Watch - button_unwatch: Unwatch - button_reply: Reply - button_archive: Archive - button_unarchive: Unarchive - button_reset: Reset - button_rename: Rename - button_change_password: Change password - button_copy: Copy - button_copy_and_follow: Copy and follow - button_annotate: Annotate - button_update: Update - button_configure: Configure - button_quote: Quote - button_duplicate: Duplicate - button_show: Show - - status_active: active - status_registered: registered - status_locked: locked - - version_status_open: open - version_status_locked: locked - version_status_closed: closed - - field_active: Active - - text_select_mail_notifications: Select actions for which email notifications should be sent. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 means no restriction - text_project_destroy_confirmation: Are you sure you want to delete this project and related data? - text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." - text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Are you sure? - text_journal_changed: "%{label} changed from %{old} to %{new}" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} deleted (%{old})" - text_journal_added: "%{label} %{value} added" - text_tip_issue_begin_day: task beginning this day - text_tip_issue_end_day: task ending this day - text_tip_issue_begin_end_day: task beginning and ending this day - text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier can not be changed.' - text_caracters_maximum: "%{count} characters maximum." - text_caracters_minimum: "Must be at least %{count} characters long." - text_length_between: "Length between %{min} and %{max} characters." - text_tracker_no_workflow: No workflow defined for this tracker - text_unallowed_characters: Unallowed characters - text_comma_separated: Multiple values allowed (comma separated). - text_line_separated: Multiple values allowed (one line for each value). - text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Issue %{id} has been reported by %{author}." - text_issue_updated: "Issue %{id} has been updated by %{author}." - text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? - text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" - text_issue_category_destroy_assignments: Remove category assignments - text_issue_category_reassign_to: Reassign issues to this category - text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." - text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." - text_load_default_configuration: Load the default configuration - text_status_changed_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' - text_select_project_modules: 'Select modules to enable for this project:' - text_default_administrator_account_changed: Default administrator account changed - text_file_repository_writable: Attachments directory writable - text_plugin_assets_writable: Plugin assets directory writable - text_rmagick_available: RMagick available (optional) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" - text_destroy_time_entries: Delete reported hours - text_assign_time_entries_to_project: Assign reported hours to the project - text_reassign_time_entries: 'Reassign reported hours to this issue:' - text_user_wrote: "%{value} wrote:" - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." - text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - - default_role_manager: Manager - default_role_developer: Developer - default_role_reporter: Reporter - default_tracker_bug: Bug - default_tracker_feature: Feature - default_tracker_support: Support - default_issue_status_new: New - default_issue_status_in_progress: In Progress - default_issue_status_resolved: Resolved - default_issue_status_feedback: Feedback - default_issue_status_closed: Closed - default_issue_status_rejected: Rejected - default_doc_category_user: User documentation - default_doc_category_tech: Technical documentation - default_priority_low: Low - default_priority_normal: Normal - default_priority_high: High - default_priority_urgent: Urgent - default_priority_immediate: Immediate - default_activity_design: Design - default_activity_development: Development - - enumeration_issue_priorities: Issue priorities - enumeration_doc_categories: Document categories - enumeration_activities: Activities (time tracking) - enumeration_system_activity: System Activity - - notice_unable_delete_time_entry: Unable to delete time log entry. - error_can_not_delete_custom_field: Unable to delete custom field - permission_manage_subtasks: Manage subtasks - label_profile: Profile - error_unable_to_connect: Unable to connect (%{value}) - label_overall_spent_time: Overall spent time - error_can_not_remove_role: This role is in use and can not be deleted. - field_principal: Principal - field_parent_issue: Parent task - label_my_page_block: My page block - text_zoom_out: Zoom out - text_zoom_in: Zoom in - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - label_project_copy_notifications: Send email notifications during the project copy - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - field_member_of_group: Member of Group - field_assigned_to_role: Member of Role - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +en-GB: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d/%m/%Y" + short: "%d %b" + long: "%d %B, %Y" + + day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] + abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] + abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] + # Used in date_select and datime_select. + order: + - :year + - :month + - :day + + time: + formats: + default: "%d/%m/%Y %I:%M %p" + time: "%I:%M %p" + short: "%d %b %H:%M" + long: "%d %B, %Y %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "half a minute" + less_than_x_seconds: + one: "less than 1 second" + other: "less than %{count} seconds" + x_seconds: + one: "1 second" + other: "%{count} seconds" + less_than_x_minutes: + one: "less than a minute" + other: "less than %{count} minutes" + x_minutes: + one: "1 minute" + other: "%{count} minutes" + about_x_hours: + one: "about 1 hour" + other: "about %{count} hours" + x_days: + one: "1 day" + other: "%{count} days" + about_x_months: + one: "about 1 month" + other: "about %{count} months" + x_months: + one: "1 month" + other: "%{count} months" + about_x_years: + one: "about 1 year" + other: "about %{count} years" + over_x_years: + one: "over 1 year" + other: "over %{count} years" + almost_x_years: + one: "almost 1 year" + other: "almost %{count} years" + + number: + format: + separator: "." + delimiter: " " + precision: 3 + + currency: + format: + format: "%u%n" + unit: "£" + + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "kB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "and" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "is not included in the list" + exclusion: "is reserved" + invalid: "is invalid" + confirmation: "doesn't match confirmation" + accepted: "must be accepted" + empty: "can't be empty" + blank: "can't be blank" + too_long: "is too long (maximum is %{count} characters)" + too_short: "is too short (minimum is %{count} characters)" + wrong_length: "is the wrong length (should be %{count} characters)" + taken: "has already been taken" + not_a_number: "is not a number" + not_a_date: "is not a valid date" + greater_than: "must be greater than %{count}" + greater_than_or_equal_to: "must be greater than or equal to %{count}" + equal_to: "must be equal to %{count}" + less_than: "must be less than %{count}" + less_than_or_equal_to: "must be less than or equal to %{count}" + odd: "must be odd" + even: "must be even" + greater_than_start_date: "must be greater than start date" + not_same_project: "doesn't belong to the same project" + circular_dependency: "This relation would create a circular dependency" + cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" + + actionview_instancetag_blank_option: Please select + + general_text_No: 'No' + general_text_Yes: 'Yes' + general_text_no: 'no' + general_text_yes: 'yes' + general_lang_name: 'English (British)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Account was successfully updated. + notice_account_invalid_creditentials: Invalid user or password + notice_account_password_updated: Password was successfully updated. + notice_account_wrong_password: Wrong password + notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. + notice_account_unknown_email: Unknown user. + notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. + notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. + notice_account_activated: Your account has been activated. You can now log in. + notice_successful_create: Successful creation. + notice_successful_update: Successful update. + notice_successful_delete: Successful deletion. + notice_successful_connection: Successful connection. + notice_file_not_found: The page you were trying to access doesn't exist or has been removed. + notice_locking_conflict: Data has been updated by another user. + notice_not_authorized: You are not authorised to access this page. + notice_not_authorized_archived_project: The project you're trying to access has been archived. + notice_email_sent: "An email was sent to %{value}" + notice_email_error: "An error occurred while sending mail (%{value})" + notice_feeds_access_key_reseted: Your RSS access key was reset. + notice_api_access_key_reseted: Your API access key was reset. + notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_default_data_loaded: Default configuration successfully loaded. + notice_unable_delete_version: Unable to delete version. + notice_unable_delete_time_entry: Unable to delete time log entry. + notice_issue_done_ratios_updated: Issue done ratios updated. + notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" + + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" + error_scm_annotate: "The entry does not exist or cannot be annotated." + error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_delete_custom_field: Unable to delete custom field + error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted." + error_can_not_remove_role: "This role is in use and cannot be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' + error_can_not_archive_project: This project cannot be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + error_unable_delete_issue_status: 'Unable to delete issue status' + error_unable_to_connect: "Unable to connect (%{value})" + warning_attachments_not_saved: "%{count} file(s) could not be saved." + + mail_subject_lost_password: "Your %{value} password" + mail_body_lost_password: 'To change your password, click on the following link:' + mail_subject_register: "Your %{value} account activation" + mail_body_register: 'To activate your account, click on the following link:' + mail_body_account_information_external: "You can use your %{value} account to log in." + mail_body_account_information: Your account information + mail_subject_account_activation_request: "%{value} account activation request" + mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 error + gui_validation_error_plural: "%{count} errors" + + field_name: Name + field_description: Description + field_summary: Summary + field_is_required: Required + field_firstname: First name + field_lastname: Last name + field_mail: Email + field_filename: File + field_filesize: Size + field_downloads: Downloads + field_author: Author + field_created_on: Created + field_updated_on: Updated + field_field_format: Format + field_is_for_all: For all projects + field_possible_values: Possible values + field_regexp: Regular expression + field_min_length: Minimum length + field_max_length: Maximum length + field_value: Value + field_category: Category + field_title: Title + field_project: Project + field_issue: Issue + field_status: Status + field_notes: Notes + field_is_closed: Issue closed + field_is_default: Default value + field_tracker: Tracker + field_subject: Subject + field_due_date: Due date + field_assigned_to: Assignee + field_priority: Priority + field_fixed_version: Target version + field_user: User + field_principal: Principal + field_role: Role + field_homepage: Homepage + field_is_public: Public + field_parent: Subproject of + field_is_in_roadmap: Issues displayed in roadmap + field_login: Login + field_mail_notification: Email notifications + field_admin: Administrator + field_last_login_on: Last connection + field_language: Language + field_effective_date: Date + field_password: Password + field_new_password: New password + field_password_confirmation: Confirmation + field_version: Version + field_type: Type + field_host: Host + field_port: Port + field_account: Account + field_base_dn: Base DN + field_attr_login: Login attribute + field_attr_firstname: Firstname attribute + field_attr_lastname: Lastname attribute + field_attr_mail: Email attribute + field_onthefly: On-the-fly user creation + field_start_date: Start date + field_done_ratio: "% Done" + field_auth_source: Authentication mode + field_hide_mail: Hide my email address + field_comments: Comment + field_url: URL + field_start_page: Start page + field_subproject: Subproject + field_hours: Hours + field_activity: Activity + field_spent_on: Date + field_identifier: Identifier + field_is_filter: Used as a filter + field_issue_to: Related issue + field_delay: Delay + field_assignable: Issues can be assigned to this role + field_redirect_existing_links: Redirect existing links + field_estimated_hours: Estimated time + field_column_names: Columns + field_time_entries: Log time + field_time_zone: Time zone + field_searchable: Searchable + field_default_value: Default value + field_comments_sorting: Display comments + field_parent_title: Parent page + field_editable: Editable + field_watcher: Watcher + field_identity_url: OpenID URL + field_content: Content + field_group_by: Group results by + field_sharing: Sharing + field_parent_issue: Parent task + field_member_of_group: "Assignee's group" + field_assigned_to_role: "Assignee's role" + field_text: Text field + field_visible: Visible + field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" + + setting_app_title: Application title + setting_app_subtitle: Application subtitle + setting_welcome_text: Welcome text + setting_default_language: Default language + setting_login_required: Authentication required + setting_self_registration: Self-registration + setting_attachment_max_size: Attachment max. size + setting_issues_export_limit: Issues export limit + setting_mail_from: Emission email address + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_plain_text_mail: Plain text mail (no HTML) + setting_host_name: Host name and path + setting_text_formatting: Text formatting + setting_wiki_compression: Wiki history compression + setting_feeds_limit: Feed content limit + setting_default_projects_public: New projects are public by default + setting_autofetch_changesets: Autofetch commits + setting_sys_api_enabled: Enable WS for repository management + setting_commit_ref_keywords: Referencing keywords + setting_commit_fix_keywords: Fixing keywords + setting_autologin: Autologin + setting_date_format: Date format + setting_time_format: Time format + setting_cross_project_issue_relations: Allow cross-project issue relations + setting_issue_list_default_columns: Default columns displayed on the issue list + setting_repositories_encodings: Repositories encodings + setting_emails_header: Emails header + setting_emails_footer: Emails footer + setting_protocol: Protocol + setting_per_page_options: Objects per page options + setting_user_format: Users display format + setting_activity_days_default: Days displayed on project activity + setting_display_subprojects_issues: Display subprojects issues on main projects by default + setting_enabled_scm: Enabled SCM + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Enable WS for incoming emails + setting_mail_handler_api_key: API key + setting_sequential_project_identifiers: Generate sequential project identifiers + setting_gravatar_enabled: Use Gravatar user icons + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Max number of diff lines displayed + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Allow OpenID login and registration + setting_password_min_length: Minimum password length + setting_new_project_user_role_id: Role given to a non-admin user who creates a project + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + setting_default_notification_option: Default notification option + setting_commit_logtime_enabled: Enable time logging + setting_commit_logtime_activity_id: Activity for logged time + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + + permission_add_project: Create project + permission_add_subprojects: Create subprojects + permission_edit_project: Edit project + permission_select_project_modules: Select project modules + permission_manage_members: Manage members + permission_manage_project_activities: Manage project activities + permission_manage_versions: Manage versions + permission_manage_categories: Manage issue categories + permission_view_issues: View Issues + permission_add_issues: Add issues + permission_edit_issues: Edit issues + permission_manage_issue_relations: Manage issue relations + permission_add_issue_notes: Add notes + permission_edit_issue_notes: Edit notes + permission_edit_own_issue_notes: Edit own notes + permission_move_issues: Move issues + permission_delete_issues: Delete issues + permission_manage_public_queries: Manage public queries + permission_save_queries: Save queries + permission_view_gantt: View gantt chart + permission_view_calendar: View calendar + permission_view_issue_watchers: View watchers list + permission_add_issue_watchers: Add watchers + permission_delete_issue_watchers: Delete watchers + permission_log_time: Log spent time + permission_view_time_entries: View spent time + permission_edit_time_entries: Edit time logs + permission_edit_own_time_entries: Edit own time logs + permission_manage_news: Manage news + permission_comment_news: Comment news + permission_manage_documents: Manage documents + permission_view_documents: View documents + permission_manage_files: Manage files + permission_view_files: View files + permission_manage_wiki: Manage wiki + permission_rename_wiki_pages: Rename wiki pages + permission_delete_wiki_pages: Delete wiki pages + permission_view_wiki_pages: View wiki + permission_view_wiki_edits: View wiki history + permission_edit_wiki_pages: Edit wiki pages + permission_delete_wiki_pages_attachments: Delete attachments + permission_protect_wiki_pages: Protect wiki pages + permission_manage_repository: Manage repository + permission_browse_repository: Browse repository + permission_view_changesets: View changesets + permission_commit_access: Commit access + permission_manage_boards: Manage forums + permission_view_messages: View messages + permission_add_messages: Post messages + permission_edit_messages: Edit messages + permission_edit_own_messages: Edit own messages + permission_delete_messages: Delete messages + permission_delete_own_messages: Delete own messages + permission_export_wiki_pages: Export wiki pages + permission_manage_subtasks: Manage subtasks + + project_module_issue_tracking: Issue tracking + project_module_time_tracking: Time tracking + project_module_news: News + project_module_documents: Documents + project_module_files: Files + project_module_wiki: Wiki + project_module_repository: Repository + project_module_boards: Forums + project_module_calendar: Calendar + project_module_gantt: Gantt + + label_user: User + label_user_plural: Users + label_user_new: New user + label_user_anonymous: Anonymous + label_project: Project + label_project_new: New project + label_project_plural: Projects + label_x_projects: + zero: no projects + one: 1 project + other: "%{count} projects" + label_project_all: All Projects + label_project_latest: Latest projects + label_issue: Issue + label_issue_new: New issue + label_issue_plural: Issues + label_issue_view_all: View all issues + label_issues_by: "Issues by %{value}" + label_issue_added: Issue added + label_issue_updated: Issue updated + label_document: Document + label_document_new: New document + label_document_plural: Documents + label_document_added: Document added + label_role: Role + label_role_plural: Roles + label_role_new: New role + label_role_and_permissions: Roles and permissions + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_member: Member + label_member_new: New member + label_member_plural: Members + label_tracker: Tracker + label_tracker_plural: Trackers + label_tracker_new: New tracker + label_workflow: Workflow + label_issue_status: Issue status + label_issue_status_plural: Issue statuses + label_issue_status_new: New status + label_issue_category: Issue category + label_issue_category_plural: Issue categories + label_issue_category_new: New category + label_custom_field: Custom field + label_custom_field_plural: Custom fields + label_custom_field_new: New custom field + label_enumerations: Enumerations + label_enumeration_new: New value + label_information: Information + label_information_plural: Information + label_please_login: Please log in + label_register: Register + label_login_with_open_id_option: or login with OpenID + label_password_lost: Lost password + label_home: Home + label_my_page: My page + label_my_account: My account + label_my_projects: My projects + label_my_page_block: My page block + label_administration: Administration + label_login: Sign in + label_logout: Sign out + label_help: Help + label_reported_issues: Reported issues + label_assigned_to_me_issues: Issues assigned to me + label_last_login: Last connection + label_registered_on: Registered on + label_activity: Activity + label_overall_activity: Overall activity + label_user_activity: "%{value}'s activity" + label_new: New + label_logged_as: Logged in as + label_environment: Environment + label_authentication: Authentication + label_auth_source: Authentication mode + label_auth_source_new: New authentication mode + label_auth_source_plural: Authentication modes + label_subproject_plural: Subprojects + label_subproject_new: New subproject + label_and_its_subprojects: "%{value} and its subprojects" + label_min_max_length: Min - Max length + label_list: List + label_date: Date + label_integer: Integer + label_float: Float + label_boolean: Boolean + label_string: Text + label_text: Long text + label_attribute: Attribute + label_attribute_plural: Attributes + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" + label_no_data: No data to display + label_change_status: Change status + label_history: History + label_attachment: File + label_attachment_new: New file + label_attachment_delete: Delete file + label_attachment_plural: Files + label_file_added: File added + label_report: Report + label_report_plural: Reports + label_news: News + label_news_new: Add news + label_news_plural: News + label_news_latest: Latest news + label_news_view_all: View all news + label_news_added: News added + label_news_comment_added: Comment added to a news + label_settings: Settings + label_overview: Overview + label_version: Version + label_version_new: New version + label_version_plural: Versions + label_close_versions: Close completed versions + label_confirmation: Confirmation + label_export_to: 'Also available in:' + label_read: Read... + label_public_projects: Public projects + label_open_issues: open + label_open_issues_plural: open + label_closed_issues: closed + label_closed_issues_plural: closed + label_x_open_issues_abbr_on_total: + zero: 0 open / %{total} + one: 1 open / %{total} + other: "%{count} open / %{total}" + label_x_open_issues_abbr: + zero: 0 open + one: 1 open + other: "%{count} open" + label_x_closed_issues_abbr: + zero: 0 closed + one: 1 closed + other: "%{count} closed" + label_total: Total + label_permissions: Permissions + label_current_status: Current status + label_new_statuses_allowed: New statuses allowed + label_all: all + label_none: none + label_nobody: nobody + label_next: Next + label_previous: Previous + label_used_by: Used by + label_details: Details + label_add_note: Add a note + label_per_page: Per page + label_calendar: Calendar + label_months_from: months from + label_gantt: Gantt + label_internal: Internal + label_last_changes: "last %{count} changes" + label_change_view_all: View all changes + label_personalize_page: Personalise this page + label_comment: Comment + label_comment_plural: Comments + label_x_comments: + zero: no comments + one: 1 comment + other: "%{count} comments" + label_comment_add: Add a comment + label_comment_added: Comment added + label_comment_delete: Delete comments + label_query: Custom query + label_query_plural: Custom queries + label_query_new: New query + label_my_queries: My custom queries + label_filter_add: Add filter + label_filter_plural: Filters + label_equals: is + label_not_equals: is not + label_in_less_than: in less than + label_in_more_than: in more than + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: in + label_today: today + label_all_time: all time + label_yesterday: yesterday + label_this_week: this week + label_last_week: last week + label_last_n_days: "last %{count} days" + label_this_month: this month + label_last_month: last month + label_this_year: this year + label_date_range: Date range + label_less_than_ago: less than days ago + label_more_than_ago: more than days ago + label_ago: days ago + label_contains: contains + label_not_contains: doesn't contain + label_day_plural: days + label_repository: Repository + label_repository_plural: Repositories + label_browse: Browse + label_modification: "%{count} change" + label_modification_plural: "%{count} changes" + label_branch: Branch + label_tag: Tag + label_revision: Revision + label_revision_plural: Revisions + label_revision_id: "Revision %{value}" + label_associated_revisions: Associated revisions + label_added: added + label_modified: modified + label_copied: copied + label_renamed: renamed + label_deleted: deleted + label_latest_revision: Latest revision + label_latest_revision_plural: Latest revisions + label_view_revisions: View revisions + label_view_all_revisions: View all revisions + label_max_size: Maximum size + label_sort_highest: Move to top + label_sort_higher: Move up + label_sort_lower: Move down + label_sort_lowest: Move to bottom + label_roadmap: Roadmap + label_roadmap_due_in: "Due in %{value}" + label_roadmap_overdue: "%{value} late" + label_roadmap_no_issues: No issues for this version + label_search: Search + label_result_plural: Results + label_all_words: All words + label_wiki: Wiki + label_wiki_edit: Wiki edit + label_wiki_edit_plural: Wiki edits + label_wiki_page: Wiki page + label_wiki_page_plural: Wiki pages + label_index_by_title: Index by title + label_index_by_date: Index by date + label_current_version: Current version + label_preview: Preview + label_feed_plural: Feeds + label_changes_details: Details of all changes + label_issue_tracking: Issue tracking + label_spent_time: Spent time + label_overall_spent_time: Overall spent time + label_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" + label_time_tracking: Time tracking + label_change_plural: Changes + label_statistics: Statistics + label_commits_per_month: Commits per month + label_commits_per_author: Commits per author + label_view_diff: View differences + label_diff_inline: inline + label_diff_side_by_side: side by side + label_options: Options + label_copy_workflow_from: Copy workflow from + label_permissions_report: Permissions report + label_watched_issues: Watched issues + label_related_issues: Related issues + label_applied_status: Applied status + label_loading: Loading... + label_relation_new: New relation + label_relation_delete: Delete relation + label_relates_to: related to + label_duplicates: duplicates + label_duplicated_by: duplicated by + label_blocks: blocks + label_blocked_by: blocked by + label_precedes: precedes + label_follows: follows + label_end_to_start: end to start + label_end_to_end: end to end + label_start_to_start: start to start + label_start_to_end: start to end + label_stay_logged_in: Stay logged in + label_disabled: disabled + label_show_completed_versions: Show completed versions + label_me: me + label_board: Forum + label_board_new: New forum + label_board_plural: Forums + label_board_locked: Locked + label_board_sticky: Sticky + label_topic_plural: Topics + label_message_plural: Messages + label_message_last: Last message + label_message_new: New message + label_message_posted: Message added + label_reply_plural: Replies + label_send_information: Send account information to the user + label_year: Year + label_month: Month + label_week: Week + label_date_from: From + label_date_to: To + label_language_based: Based on user's language + label_sort_by: "Sort by %{value}" + label_send_test_email: Send a test email + label_feeds_access_key: RSS access key + label_missing_feeds_access_key: Missing a RSS access key + label_feeds_access_key_created_on: "RSS access key created %{value} ago" + label_module_plural: Modules + label_added_time_by: "Added by %{author} %{age} ago" + label_updated_time_by: "Updated by %{author} %{age} ago" + label_updated_time: "Updated %{value} ago" + label_jump_to_a_project: Jump to a project... + label_file_plural: Files + label_changeset_plural: Changesets + label_default_columns: Default columns + label_no_change_option: (No change) + label_bulk_edit_selected_issues: Bulk edit selected issues + label_theme: Theme + label_default: Default + label_search_titles_only: Search titles only + label_user_mail_option_all: "For any event on all my projects" + label_user_mail_option_selected: "For any event on the selected projects only..." + label_user_mail_option_none: "No events" + label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in" + label_user_mail_option_only_assigned: "Only for things I am assigned to" + label_user_mail_option_only_owner: "Only for things I am the owner of" + label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" + label_registration_activation_by_email: account activation by email + label_registration_manual_activation: manual account activation + label_registration_automatic_activation: automatic account activation + label_display_per_page: "Per page: %{value}" + label_age: Age + label_change_properties: Change properties + label_general: General + label_more: More + label_scm: SCM + label_plugins: Plugins + label_ldap_authentication: LDAP authentication + label_downloads_abbr: D/L + label_optional_description: Optional description + label_add_another_file: Add another file + label_preferences: Preferences + label_chronological_order: In chronological order + label_reverse_chronological_order: In reverse chronological order + label_planning: Planning + label_incoming_emails: Incoming emails + label_generate_key: Generate a key + label_issue_watchers: Watchers + label_example: Example + label_display: Display + label_sort: Sort + label_ascending: Ascending + label_descending: Descending + label_date_from_to: From %{start} to %{end} + label_wiki_content_added: Wiki page added + label_wiki_content_updated: Wiki page updated + label_group: Group + label_group_plural: Groups + label_group_new: New group + label_time_entry_plural: Spent time + label_version_sharing_none: Not shared + label_version_sharing_descendants: With subprojects + label_version_sharing_hierarchy: With project hierarchy + label_version_sharing_tree: With project tree + label_version_sharing_system: With all projects + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Source + label_copy_target: Target + label_copy_same_as_target: Same as target + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API access key + label_missing_api_access_key: Missing an API access key + label_api_access_key_created_on: "API access key created %{value} ago" + label_profile: Profile + label_subtask_plural: Subtasks + label_project_copy_notifications: Send email notifications during the project copy + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + + button_login: Login + button_submit: Submit + button_save: Save + button_check_all: Check all + button_uncheck_all: Uncheck all + button_collapse_all: Collapse all + button_expand_all: Expand all + button_delete: Delete + button_create: Create + button_create_and_continue: Create and continue + button_test: Test + button_edit: Edit + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + button_add: Add + button_change: Change + button_apply: Apply + button_clear: Clear + button_lock: Lock + button_unlock: Unlock + button_download: Download + button_list: List + button_view: View + button_move: Move + button_move_and_follow: Move and follow + button_back: Back + button_cancel: Cancel + button_activate: Activate + button_sort: Sort + button_log_time: Log time + button_rollback: Rollback to this version + button_watch: Watch + button_unwatch: Unwatch + button_reply: Reply + button_archive: Archive + button_unarchive: Unarchive + button_reset: Reset + button_rename: Rename + button_change_password: Change password + button_copy: Copy + button_copy_and_follow: Copy and follow + button_annotate: Annotate + button_update: Update + button_configure: Configure + button_quote: Quote + button_duplicate: Duplicate + button_show: Show + + status_active: active + status_registered: registered + status_locked: locked + + version_status_open: open + version_status_locked: locked + version_status_closed: closed + + field_active: Active + + text_select_mail_notifications: Select actions for which email notifications should be sent. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 means no restriction + text_project_destroy_confirmation: Are you sure you want to delete this project and related data? + text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." + text_workflow_edit: Select a role and a tracker to edit the workflow + text_are_you_sure: Are you sure? + text_are_you_sure_with_children: "Delete issue and all child issues?" + text_journal_changed: "%{label} changed from %{old} to %{new}" + text_journal_changed_no_detail: "%{label} updated" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" + text_journal_added: "%{label} %{value} added" + text_tip_issue_begin_day: task beginning this day + text_tip_issue_end_day: task ending this day + text_tip_issue_begin_end_day: task beginning and ending this day + text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier cannot be changed.' + text_caracters_maximum: "%{count} characters maximum." + text_caracters_minimum: "Must be at least %{count} characters long." + text_length_between: "Length between %{min} and %{max} characters." + text_tracker_no_workflow: No workflow defined for this tracker + text_unallowed_characters: Unallowed characters + text_comma_separated: Multiple values allowed (comma separated). + text_line_separated: Multiple values allowed (one line for each value). + text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." + text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? + text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" + text_issue_category_destroy_assignments: Remove category assignments + text_issue_category_reassign_to: Reassign issues to this category + text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." + text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_load_default_configuration: Load the default configuration + text_status_changed_by_changeset: "Applied in changeset %{value}." + text_time_logged_by_changeset: "Applied in changeset %{value}." + text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' + text_select_project_modules: 'Select modules to enable for this project:' + text_default_administrator_account_changed: Default administrator account changed + text_file_repository_writable: Attachments directory writable + text_plugin_assets_writable: Plugin assets directory writable + text_rmagick_available: RMagick available (optional) + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" + text_destroy_time_entries: Delete reported hours + text_assign_time_entries_to_project: Assign reported hours to the project + text_reassign_time_entries: 'Reassign reported hours to this issue:' + text_user_wrote: "%{value} wrote:" + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." + text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." + text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + text_zoom_in: Zoom in + text_zoom_out: Zoom out + text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." + + default_role_manager: Manager + default_role_developer: Developer + default_role_reporter: Reporter + default_tracker_bug: Bug + default_tracker_feature: Feature + default_tracker_support: Support + default_issue_status_new: New + default_issue_status_in_progress: In Progress + default_issue_status_resolved: Resolved + default_issue_status_feedback: Feedback + default_issue_status_closed: Closed + default_issue_status_rejected: Rejected + default_doc_category_user: User documentation + default_doc_category_tech: Technical documentation + default_priority_low: Low + default_priority_normal: Normal + default_priority_high: High + default_priority_urgent: Urgent + default_priority_immediate: Immediate + default_activity_design: Design + default_activity_development: Development + + enumeration_issue_priorities: Issue priorities + enumeration_doc_categories: Document categories + enumeration_activities: Activities (time tracking) + enumeration_system_activity: System Activity + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/en.yml.svn-base --- a/config/locales/.svn/text-base/en.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/en.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -17,7 +17,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -66,11 +69,11 @@ other: "almost %{count} years" number: - # Default format for numbers format: separator: "." delimiter: "" precision: 3 + human: format: delimiter: "" @@ -123,7 +126,7 @@ greater_than_start_date: "must be greater than start date" not_same_project: "doesn't belong to the same project" circular_dependency: "This relation would create a circular dependency" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" actionview_instancetag_blank_option: Please select @@ -135,7 +138,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: Account was successfully updated. @@ -172,15 +175,15 @@ error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or can not be annotated." + error_scm_annotate: "The entry does not exist or cannot be annotated." error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' error_can_not_delete_custom_field: Unable to delete custom field - error_can_not_delete_tracker: "This tracker contains issues and can't be deleted." - error_can_not_remove_role: "This role is in use and can not be deleted." - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived + error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted." + error_can_not_remove_role: "This role is in use and cannot be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' + error_can_not_archive_project: This project cannot be archived error_issue_done_ratios_not_updated: "Issue done ratios not updated." error_workflow_copy_source: 'Please select a source tracker or role' error_workflow_copy_target: 'Please select target tracker(s) and role(s)' @@ -210,8 +213,8 @@ field_description: Description field_summary: Summary field_is_required: Required - field_firstname: Firstname - field_lastname: Lastname + field_firstname: First name + field_lastname: Last name field_mail: Email field_filename: File field_filesize: Size @@ -268,7 +271,7 @@ field_attr_mail: Email attribute field_onthefly: On-the-fly user creation field_start_date: Start date - field_done_ratio: % Done + field_done_ratio: "% Done" field_auth_source: Authentication mode field_hide_mail: Hide my email address field_comments: Comment @@ -304,7 +307,15 @@ field_text: Text field field_visible: Visible field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" - + field_issues_visibility: Issues visibility + field_is_private: Private + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvsroot: CVSROOT + field_cvs_module: Module + setting_app_title: Application title setting_app_subtitle: Application subtitle setting_welcome_text: Welcome text @@ -331,7 +342,6 @@ setting_cross_project_issue_relations: Allow cross-project issue relations setting_issue_list_default_columns: Default columns displayed on the issue list setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding setting_emails_header: Emails header setting_emails_footer: Emails footer setting_protocol: Protocol @@ -376,6 +386,8 @@ permission_add_issues: Add issues permission_edit_issues: Edit issues permission_manage_issue_relations: Manage issue relations + permission_set_issues_private: Set issues public or private + permission_set_own_issues_private: Set own issues public or private permission_add_issue_notes: Add notes permission_edit_issue_notes: Edit notes permission_edit_own_issue_notes: Edit own notes @@ -410,7 +422,7 @@ permission_browse_repository: Browse repository permission_view_changesets: View changesets permission_commit_access: Commit access - permission_manage_boards: Manage boards + permission_manage_boards: Manage forums permission_view_messages: View messages permission_add_messages: Post messages permission_edit_messages: Edit messages @@ -427,7 +439,7 @@ project_module_files: Files project_module_wiki: Wiki project_module_repository: Repository - project_module_boards: Boards + project_module_boards: Forums project_module_calendar: Calendar project_module_gantt: Gantt @@ -451,6 +463,9 @@ label_issues_by: "Issues by %{value}" label_issue_added: Issue added label_issue_updated: Issue updated + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated label_document: Document label_document_new: New document label_document_plural: Documents @@ -459,6 +474,8 @@ label_role_plural: Roles label_role_new: New role label_role_and_permissions: Roles and permissions + label_role_anonymous: Anonymous + label_role_non_member: Non member label_member: Member label_member_new: New member label_member_plural: Members @@ -537,6 +554,7 @@ label_news_latest: Latest news label_news_view_all: View all news label_news_added: News added + label_news_comment_added: Comment added to a news label_settings: Settings label_overview: Overview label_version: Version @@ -734,6 +752,7 @@ label_default_columns: Default columns label_no_change_option: (No change) label_bulk_edit_selected_issues: Bulk edit selected issues + label_bulk_edit_selected_time_entries: Bulk edit selected time entries label_theme: Theme label_default: Default label_search_titles_only: Search titles only @@ -795,12 +814,20 @@ label_project_copy_notifications: Send email notifications during the project copy label_principal_search: "Search for user or group:" label_user_search: "Search for user:" - + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_issues_visibility_all: All issues + label_issues_visibility_public: All non private issues + label_issues_visibility_own: Issues created by or assigned to the user + label_git_report_last_commit: Report last commit for files and directories + button_login: Login button_submit: Submit button_save: Save button_check_all: Check all button_uncheck_all: Uncheck all + button_collapse_all: Collapse all + button_expand_all: Expand all button_delete: Delete button_create: Create button_create_and_continue: Create and continue @@ -840,24 +867,24 @@ button_quote: Quote button_duplicate: Duplicate button_show: Show - + status_active: active status_registered: registered status_locked: locked - + version_status_open: open version_status_locked: locked version_status_closed: closed field_active: Active - + text_select_mail_notifications: Select actions for which email notifications should be sent. text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 means no restriction - text_project_destroy_confirmation: Are you sure you want to delete this project and related data ? + text_project_destroy_confirmation: Are you sure you want to delete this project and related data? text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Are you sure ? + text_are_you_sure: Are you sure? text_are_you_sure_with_children: "Delete issue and all child issues?" text_journal_changed: "%{label} changed from %{old} to %{new}" text_journal_changed_no_detail: "%{label} updated" @@ -867,7 +894,7 @@ text_tip_issue_begin_day: issue beginning this day text_tip_issue_end_day: issue ending this day text_tip_issue_begin_end_day: issue beginning and ending this day - text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier can not be changed.' + text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier cannot be changed.' text_caracters_maximum: "%{count} characters maximum." text_caracters_minimum: "Must be at least %{count} characters long." text_length_between: "Length between %{min} and %{max} characters." @@ -878,8 +905,8 @@ text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_issue_added: "Issue %{id} has been reported by %{author}." text_issue_updated: "Issue %{id} has been updated by %{author}." - text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ? - text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do ?" + text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? + text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" text_issue_category_destroy_assignments: Remove category assignments text_issue_category_reassign_to: Reassign issues to this category text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." @@ -887,13 +914,15 @@ text_load_default_configuration: Load the default configuration text_status_changed_by_changeset: "Applied in changeset %{value}." text_time_logged_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?' + text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' + text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)." + text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?' text_select_project_modules: 'Select modules to enable for this project:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Attachments directory writable text_plugin_assets_writable: Plugin assets directory writable text_rmagick_available: RMagick available (optional) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?" + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" text_destroy_time_entries: Delete reported hours text_assign_time_entries_to_project: Assign reported hours to the project text_reassign_time_entries: 'Reassign reported hours to this issue:' @@ -912,7 +941,14 @@ text_zoom_in: Zoom in text_zoom_out: Zoom out text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." - + text_scm_path_encoding_note: "Default: UTF-8" + text_git_repository_note: "Bare and local repository (e.g. /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "Local repository (e.g. /hgrepo, c:\hgrepo)" + text_scm_command: Command + text_scm_command_version: Version + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. + default_role_manager: Manager default_role_developer: Developer default_role_reporter: Reporter @@ -934,9 +970,8 @@ default_priority_immediate: Immediate default_activity_design: Design default_activity_development: Development - + enumeration_issue_priorities: Issue priorities enumeration_doc_categories: Document categories enumeration_activities: Activities (time tracking) enumeration_system_activity: System Activity - diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/es.yml.svn-base --- a/config/locales/.svn/text-base/es.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/es.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -159,7 +159,10 @@ month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Setiembre, Octubre, Noviembre, Diciembre] abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Set, Oct, Nov, Dic] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -264,7 +267,7 @@ field_default_value: Estado por defecto field_delay: Retraso field_description: Descripción - field_done_ratio: % Realizado + field_done_ratio: "% Realizado" field_downloads: Descargas field_due_date: Fecha fin field_effective_date: Fecha @@ -333,7 +336,7 @@ general_csv_separator: ';' general_first_day_of_week: '1' general_lang_name: 'Español' - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_text_No: 'No' general_text_Yes: 'Sí' general_text_no: 'no' @@ -677,7 +680,7 @@ notice_default_data_loaded: Configuración por defecto cargada correctamente. notice_email_error: "Ha ocurrido un error mientras enviando el correo (%{value})" notice_email_sent: "Se ha enviado un correo a %{value}" - notice_failed_to_save_issues: "Imposible grabar %s peticion(es) en %{count} seleccionado: %{ids}." + notice_failed_to_save_issues: "Imposible grabar %{count} peticion(es) de %{total} seleccionada(s): %{ids}." notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada. notice_file_not_found: La página a la que intenta acceder no existe. notice_locking_conflict: Los datos han sido modificados por otro usuario. @@ -752,7 +755,6 @@ setting_autologin: Conexión automática setting_bcc_recipients: Ocultar las copias de carbón (bcc) setting_commit_fix_keywords: Palabras clave para la corrección - setting_commit_logs_encoding: Codificación de los mensajes de commit setting_commit_ref_keywords: Palabras clave para la referencia setting_cross_project_issue_relations: Permitir relacionar peticiones de distintos proyectos setting_date_format: Formato de fecha @@ -977,3 +979,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificación de los mensajes de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/eu.yml.svn-base --- a/config/locales/.svn/text-base/eu.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/eu.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,946 +1,982 @@ -# Redmine EU language -# Author: Ales Zabala Alava (Shagi), -# 2010-01-25 -# Distributed under the same terms as the Redmine itself. -eu: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%Y/%m/%d" - short: "%b %d" - long: "%Y %B %d" - - day_names: [Igandea, Astelehena, Asteartea, Asteazkena, Osteguna, Ostirala, Larunbata] - abbr_day_names: [Ig., Al., Ar., Az., Og., Or., La.] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua] - abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe] - # Used in date_select and datime_select. - order: [ :year, :month, :day ] - - time: - formats: - default: "%Y/%m/%d %H:%M" - time: "%H:%M" - short: "%b %d %H:%M" - long: "%Y %B %d %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "minutu erdi" - less_than_x_seconds: - one: "segundu bat baino gutxiago" - other: "%{count} segundu baino gutxiago" - x_seconds: - one: "segundu 1" - other: "%{count} segundu" - less_than_x_minutes: - one: "minutu bat baino gutxiago" - other: "%{count} minutu baino gutxiago" - x_minutes: - one: "minutu 1" - other: "%{count} minutu" - about_x_hours: - one: "ordu 1 inguru" - other: "%{count} ordu inguru" - x_days: - one: "egun 1" - other: "%{count} egun" - about_x_months: - one: "hilabete 1 inguru" - other: "%{count} hilabete inguru" - x_months: - one: "hilabete 1" - other: "%{count} hilabete" - about_x_years: - one: "urte 1 inguru" - other: "%{count} urte inguru" - over_x_years: - one: "urte 1 baino gehiago" - other: "%{count} urte baino gehiago" - almost_x_years: - one: "ia urte 1" - other: "ia %{count} urte" - - number: - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Byte" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "eta" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "Errore batek %{model} hau godetzea galarazi du." - other: "%{count} errorek %{model} hau gordetzea galarazi dute." - messages: - inclusion: "ez dago zerrendan" - exclusion: "erreserbatuta dago" - invalid: "baliogabea da" - confirmation: "ez du berrespenarekin bat egiten" - accepted: "onartu behar da" - empty: "ezin da hutsik egon" - blank: "ezin da hutsik egon" - too_long: "luzeegia da (maximoa %{count} karaktere dira)" - too_short: "laburregia da (minimoa %{count} karaktere dira)" - wrong_length: "luzera ezegokia da (%{count} karakter izan beharko litzake)" - taken: "dagoeneko hartuta dago" - not_a_number: "ez da zenbaki bat" - not_a_date: "ez da baliozko data" - greater_than: "%{count} baino handiagoa izan behar du" - greater_than_or_equal_to: "%{count} edo handiagoa izan behar du" - equal_to: "%{count} izan behar du" - less_than: "%{count} baino gutxiago izan behar du" - less_than_or_equal_to: "%{count} edo gutxiago izan behar du" - odd: "bakoitia izan behar du" - even: "bikoitia izan behar du" - greater_than_start_date: "hasiera data baino handiagoa izan behar du" - not_same_project: "ez dago proiektu berdinean" - circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke" - cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu." - - actionview_instancetag_blank_option: Hautatu mesedez - - general_text_No: 'Ez' - general_text_Yes: 'Bai' - general_text_no: 'ez' - general_text_yes: 'bai' - general_lang_name: 'Euskara' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Kontua ongi eguneratu da. - notice_account_invalid_creditentials: Erabiltzaile edo pasahitz ezegokia - notice_account_password_updated: Pasahitza ongi eguneratu da. - notice_account_wrong_password: Pasahitz ezegokia. - notice_account_register_done: Kontua ongi sortu da. Kontua gaitzeko klikatu epostan adierazi zaizun estekan. - notice_account_unknown_email: Erabiltzaile ezezaguna. - notice_can_t_change_password: Kontu honek kanpoko autentikazio bat erabiltzen du. Ezinezkoa da pasahitza aldatzea. - notice_account_lost_email_sent: Pasahitz berria aukeratzeko jarraibideak dituen eposta bat bidali zaizu. - notice_account_activated: Zure kontua gaituta dago. Orain saioa has dezakezu - notice_successful_create: Sortze arrakastatsua. - notice_successful_update: Eguneratze arrakastatsua. - notice_successful_delete: Ezabaketa arrakastatsua. - notice_successful_connection: Konexio arrakastatsua. - notice_file_not_found: Atzitu nahi duzun orria ez da exisitzen edo ezabatua izan da. - notice_locking_conflict: Beste erabiltzaile batek datuak eguneratu ditu. - notice_not_authorized: Ez duzu orri hau atzitzeko baimenik. - notice_email_sent: "%{value} helbidera eposta bat bidali da" - notice_email_error: "Errorea eposta bidaltzean (%{value})" - notice_feeds_access_key_reseted: Zure RSS atzipen giltza berrezarri da. - notice_api_access_key_reseted: Zure API atzipen giltza berrezarri da. - notice_failed_to_save_issues: "Hautatutako %{total} zereginetatik %{count} ezin izan dira konpondu: %{ids}." - notice_no_issue_selected: "Ez da zereginik hautatu! Mesedez, editatu nahi dituzun arazoak markatu." - notice_account_pending: "Zure kontua sortu da, orain kudeatzailearen onarpenaren zain dago." - notice_default_data_loaded: Lehenetsitako konfigurazioa ongi kargatu da. - notice_unable_delete_version: Ezin da bertsioa ezabatu. - notice_issue_done_ratios_updated: Burututako zereginen erlazioa eguneratu da. - - error_can_t_load_default_data: "Ezin izan da lehenetsitako konfigurazioa kargatu: %{value}" - error_scm_not_found: "Sarrera edo berrikuspena ez da biltegian topatu." - error_scm_command_failed: "Errorea gertatu da biltegia atzitzean: %{value}" - error_scm_annotate: "Sarrera ez da existitzen edo ezin da anotatu." - error_issue_not_found_in_project: 'Zeregina ez da topatu edo ez da proiektu honetakoa' - error_no_tracker_in_project: 'Proiektu honek ez du aztarnaririk esleituta. Mesedez egiaztatu Proiektuaren ezarpenak.' - error_no_default_issue_status: 'Zereginek ez dute lehenetsitako egoerarik. Mesedez egiaztatu zure konfigurazioa ("Kudeaketa -> Arazoen egoerak" atalera joan).' - error_can_not_reopen_issue_on_closed_version: 'Itxitako bertsio batera esleitutako zereginak ezin dira berrireki' - error_can_not_archive_project: Proiektu hau ezin da artxibatu - error_issue_done_ratios_not_updated: "Burututako zereginen erlazioa ez da eguneratu." - error_workflow_copy_source: 'Mesedez hautatu iturburuko aztarnari edo rola' - error_workflow_copy_target: 'Mesedez hautatu helburuko aztarnari(ak) edo rola(k)' - - warning_attachments_not_saved: "%{count} fitxategi ezin izan d(ir)a gorde." - - mail_subject_lost_password: "Zure %{value} pasahitza" - mail_body_lost_password: 'Zure pasahitza aldatzeko hurrengo estekan klikatu:' - mail_subject_register: "Zure %{value} kontuaren gaitzea" - mail_body_register: 'Zure kontua gaitzeko hurrengo estekan klikatu:' - mail_body_account_information_external: "Zure %{value} kontua erabil dezakezu saioa hasteko." - mail_body_account_information: Zure kontuaren informazioa - mail_subject_account_activation_request: "%{value} kontu gaitzeko eskaera" - mail_body_account_activation_request: "Erabiltzaile berri bat (%{value}) erregistratu da. Kontua zure onarpenaren zain dago:" - mail_subject_reminder: "%{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a" - mail_body_reminder: "Zuri esleituta dauden %{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a:" - mail_subject_wiki_content_added: "'%{id}' wiki orria gehitu da" - mail_body_wiki_content_added: "%{author}-(e)k '%{id}' wiki orria gehitu du." - mail_subject_wiki_content_updated: "'%{id}' wiki orria eguneratu da" - mail_body_wiki_content_updated: "%{author}-(e)k '%{id}' wiki orria eguneratu du." - - gui_validation_error: akats 1 - gui_validation_error_plural: "%{count} akats" - - field_name: Izena - field_description: Deskribapena - field_summary: Laburpena - field_is_required: Beharrezkoa - field_firstname: Izena - field_lastname: Abizenak - field_mail: Eposta - field_filename: Fitxategia - field_filesize: Tamaina - field_downloads: Deskargak - field_author: Egilea - field_created_on: Sortuta - field_updated_on: Eguneratuta - field_field_format: Formatua - field_is_for_all: Proiektu guztietarako - field_possible_values: Balio posibleak - field_regexp: Expresio erregularra - field_min_length: Luzera minimoa - field_max_length: Luzera maxioma - field_value: Balioa - field_category: Kategoria - field_title: Izenburua - field_project: Proiektua - field_issue: Zeregina - field_status: Egoera - field_notes: Oharrak - field_is_closed: Itxitako arazoa - field_is_default: Lehenetsitako balioa - field_tracker: Aztarnaria - field_subject: Gaia - field_due_date: Amaiera data - field_assigned_to: Esleituta - field_priority: Lehentasuna - field_fixed_version: Helburuko bertsioa - field_user: Erabiltzilea - field_role: Rola - field_homepage: Orri nagusia - field_is_public: Publikoa - field_parent: "Honen azpiproiektua:" - field_is_in_chlog: Zereginak aldaketa egunkarian ikusten dira - field_is_in_roadmap: Arazoak ibilbide-mapan erakutsi - field_login: Erabiltzaile izena - field_mail_notification: Eposta jakinarazpenak - field_admin: Kudeatzailea - field_last_login_on: Azken konexioa - field_language: Hizkuntza - field_effective_date: Data - field_password: Pasahitza - field_new_password: Pasahitz berria - field_password_confirmation: Berrespena - field_version: Bertsioa - field_type: Mota - field_host: Ostalaria - field_port: Portua - field_account: Kontua - field_base_dn: Base DN - field_attr_login: Erabiltzaile atributua - field_attr_firstname: Izena atributua - field_attr_lastname: Abizenak atributua - field_attr_mail: Eposta atributua - field_onthefly: Zuzeneko erabiltzaile sorrera - field_start_date: Hasiera - field_done_ratio: Egindako % - field_auth_source: Autentikazio modua - field_hide_mail: Nire eposta helbidea ezkutatu - field_comments: Iruzkina - field_url: URL - field_start_page: Hasierako orria - field_subproject: Azpiproiektua - field_hours: Ordu - field_activity: Jarduera - field_spent_on: Data - field_identifier: Identifikatzailea - field_is_filter: Iragazki moduan erabilita - field_issue_to: Erlazionatutako zereginak - field_delay: Atzerapena - field_assignable: Arazoak rol honetara esleitu daitezke - field_redirect_existing_links: Existitzen diren estekak berbideratu - field_estimated_hours: Estimatutako denbora - field_column_names: Zutabeak - field_time_zone: Ordu zonaldea - field_searchable: Bilagarria - field_default_value: Lehenetsitako balioa - field_comments_sorting: Iruzkinak erakutsi - field_parent_title: Orri gurasoa - field_editable: Editagarria - field_watcher: Behatzailea - field_identity_url: OpenID URLa - field_content: Edukia - field_group_by: Emaitzak honegatik taldekatu - field_sharing: Partekatzea - - setting_app_title: Aplikazioaren izenburua - setting_app_subtitle: Aplikazioaren azpizenburua - setting_welcome_text: Ongietorriko testua - setting_default_language: Lehenetsitako hizkuntza - setting_login_required: Autentikazioa derrigorrezkoa - setting_self_registration: Norberak erregistratu - setting_attachment_max_size: Eranskinen tamaina max. - setting_issues_export_limit: Zereginen esportatze limitea - setting_mail_from: Igorlearen eposta helbidea - setting_bcc_recipients: Hartzaileak ezkutuko kopian (bcc) - setting_plain_text_mail: Testu soileko epostak (HTML-rik ez) - setting_host_name: Ostalari izena eta bidea - setting_text_formatting: Testu formatua - setting_wiki_compression: Wikiaren historia konprimitu - setting_feeds_limit: Jarioaren edukiera limitea - setting_default_projects_public: Proiektu berriak defektuz publikoak dira - setting_autofetch_changesets: Commit-ak automatikoki hartu - setting_sys_api_enabled: Biltegien kudeaketarako WS gaitu - setting_commit_ref_keywords: Erreferentzien gako-hitzak - setting_commit_fix_keywords: Konpontze gako-hitzak - setting_autologin: Saioa automatikoki hasi - setting_date_format: Data formatua - setting_time_format: Ordu formatua - setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu - setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak - setting_repositories_encodings: Biltegien kodeketak - setting_commit_logs_encoding: Commit-en egunkarien kodetzea - setting_emails_footer: Eposten oina - setting_protocol: Protokoloa - setting_per_page_options: Orriko objektuen aukerak - setting_user_format: Erabiltzaileak erakusteko formatua - setting_activity_days_default: Proiektuen jardueran erakusteko egunak - setting_display_subprojects_issues: Azpiproiektuen zereginak proiektu nagusian erakutsi defektuz - setting_enabled_scm: Gaitutako IKKak - setting_mail_handler_body_delimiters: "Lerro hauteko baten ondoren epostak moztu" - setting_mail_handler_api_enabled: Sarrerako epostentzako WS gaitu - setting_mail_handler_api_key: API giltza - setting_sequential_project_identifiers: Proiektuen identifikadore sekuentzialak sortu - setting_gravatar_enabled: Erabili Gravatar erabiltzaile ikonoak - setting_gravatar_default: Lehenetsitako Gravatar irudia - setting_diff_max_lines_displayed: Erakutsiko diren diff lerro kopuru maximoa - setting_file_max_size_displayed: Barnean erakuzten diren testu fitxategien tamaina maximoa - setting_repository_log_display_limit: Egunkari fitxategian erakutsiko diren berrikuspen kopuru maximoa. - setting_openid: Baimendu OpenID saio hasiera eta erregistatzea - setting_password_min_length: Pasahitzen luzera minimoa - setting_new_project_user_role_id: Proiektu berriak sortzerakoan kudeatzaile ez diren erabiltzaileei esleitutako rola - setting_default_projects_modules: Proiektu berrientzako defektuz gaitutako moduluak - setting_issue_done_ratio: "Zereginen burututako tasa kalkulatzean erabili:" - setting_issue_done_ratio_issue_field: Zeregin eremua erabili - setting_issue_done_ratio_issue_status: Zeregin egoera erabili - setting_start_of_week: "Egutegiak noiz hasi:" - setting_rest_api_enabled: Gaitu REST web zerbitzua - - permission_add_project: Proiektua sortu - permission_add_subprojects: Azpiproiektuak sortu - permission_edit_project: Proiektua editatu - permission_select_project_modules: Proiektuaren moduluak hautatu - permission_manage_members: Kideak kudeatu - permission_manage_versions: Bertsioak kudeatu - permission_manage_categories: Arazoen kategoriak kudeatu - permission_view_issues: Zereginak ikusi - permission_add_issues: Zereginak gehitu - permission_edit_issues: Zereginak aldatu - permission_manage_issue_relations: Zereginen erlazioak kudeatu - permission_add_issue_notes: Oharrak gehitu - permission_edit_issue_notes: Oharrak aldatu - permission_edit_own_issue_notes: Nork bere oharrak aldatu - permission_move_issues: Zereginak mugitu - permission_delete_issues: Zereginak ezabatu - permission_manage_public_queries: Galdera publikoak kudeatu - permission_save_queries: Galderak gorde - permission_view_gantt: Gantt grafikoa ikusi - permission_view_calendar: Egutegia ikusi - permission_view_issue_watchers: Behatzaileen zerrenda ikusi - permission_add_issue_watchers: Behatzaileak gehitu - permission_delete_issue_watchers: Behatzaileak ezabatu - permission_log_time: Igarotako denbora erregistratu - permission_view_time_entries: Igarotako denbora ikusi - permission_edit_time_entries: Denbora egunkariak editatu - permission_edit_own_time_entries: Nork bere denbora egunkariak editatu - permission_manage_news: Berriak kudeatu - permission_comment_news: Berrien iruzkinak egin - permission_manage_documents: Dokumentuak kudeatu - permission_view_documents: Dokumentuak ikusi - permission_manage_files: Fitxategiak kudeatu - permission_view_files: Fitxategiak ikusi - permission_manage_wiki: Wikia kudeatu - permission_rename_wiki_pages: Wiki orriak berrizendatu - permission_delete_wiki_pages: Wiki orriak ezabatu - permission_view_wiki_pages: Wikia ikusi - permission_view_wiki_edits: Wikiaren historia ikusi - permission_edit_wiki_pages: Wiki orriak editatu - permission_delete_wiki_pages_attachments: Eranskinak ezabatu - permission_protect_wiki_pages: Wiki orriak babestu - permission_manage_repository: Biltegiak kudeatu - permission_browse_repository: Biltegia arakatu - permission_view_changesets: Aldaketak ikusi - permission_commit_access: Commit atzipena - permission_manage_boards: Foroak kudeatu - permission_view_messages: Mezuak ikusi - permission_add_messages: Mezuak bidali - permission_edit_messages: Mezuak aldatu - permission_edit_own_messages: Nork bere mezuak aldatu - permission_delete_messages: Mezuak ezabatu - permission_delete_own_messages: Nork bere mezuak ezabatu - - project_module_issue_tracking: Zereginen jarraipena - project_module_time_tracking: Denbora jarraipena - project_module_news: Berriak - project_module_documents: Dokumentuak - project_module_files: Fitxategiak - project_module_wiki: Wiki - project_module_repository: Biltegia - project_module_boards: Foroak - - label_user: Erabiltzailea - label_user_plural: Erabiltzaileak - label_user_new: Erabiltzaile berria - label_user_anonymous: Ezezaguna - label_project: Proiektua - label_project_new: Proiektu berria - label_project_plural: Proiektuak - label_x_projects: - zero: proiekturik ez - one: proiektu bat - other: "%{count} proiektu" - label_project_all: Proiektu guztiak - label_project_latest: Azken proiektuak - label_issue: Zeregina - label_issue_new: Zeregin berria - label_issue_plural: Zereginak - label_issue_view_all: Zeregin guztiak ikusi - label_issues_by: "Zereginak honengatik: %{value}" - label_issue_added: Zeregina gehituta - label_issue_updated: Zeregina eguneratuta - label_document: Dokumentua - label_document_new: Dokumentu berria - label_document_plural: Dokumentuak - label_document_added: Dokumentua gehituta - label_role: Rola - label_role_plural: Rolak - label_role_new: Rol berria - label_role_and_permissions: Rolak eta baimenak - label_member: Kidea - label_member_new: Kide berria - label_member_plural: Kideak - label_tracker: Aztarnaria - label_tracker_plural: Aztarnariak - label_tracker_new: Aztarnari berria - label_workflow: Lan-fluxua - label_issue_status: Zeregin egoera - label_issue_status_plural: Zeregin egoerak - label_issue_status_new: Egoera berria - label_issue_category: Zeregin kategoria - label_issue_category_plural: Zeregin kategoriak - label_issue_category_new: Kategoria berria - label_custom_field: Eremu pertsonalizatua - label_custom_field_plural: Eremu pertsonalizatuak - label_custom_field_new: Eremu pertsonalizatu berria - label_enumerations: Enumerazioak - label_enumeration_new: Balio berria - label_information: Informazioa - label_information_plural: Informazioa - label_please_login: Saioa hasi mesedez - label_register: Erregistratu - label_login_with_open_id_option: edo OpenID-rekin saioa hasi - label_password_lost: Pasahitza galduta - label_home: Hasiera - label_my_page: Nire orria - label_my_account: Nire kontua - label_my_projects: Nire proiektuak - label_administration: Kudeaketa - label_login: Saioa hasi - label_logout: Saioa bukatu - label_help: Laguntza - label_reported_issues: Berri emandako zereginak - label_assigned_to_me_issues: Niri esleitutako arazoak - label_last_login: Azken konexioa - label_registered_on: Noiz erregistratuta - label_activity: Jarduerak - label_overall_activity: Jarduera guztiak - label_user_activity: "%{value}-(r)en jarduerak" - label_new: Berria - label_logged_as: "Sartutako erabiltzailea:" - label_environment: Ingurune - label_authentication: Autentikazioa - label_auth_source: Autentikazio modua - label_auth_source_new: Autentikazio modu berria - label_auth_source_plural: Autentikazio moduak - label_subproject_plural: Azpiproiektuak - label_subproject_new: Azpiproiektu berria - label_and_its_subprojects: "%{value} eta bere azpiproiektuak" - label_min_max_length: Luzera min - max - label_list: Zerrenda - label_date: Data - label_integer: Osokoa - label_float: Koma higikorrekoa - label_boolean: Boolearra - label_string: Testua - label_text: Testu luzea - label_attribute: Atributua - label_attribute_plural: Atributuak - label_download: "Deskarga %{count}" - label_download_plural: "%{count} Deskarga" - label_no_data: Ez dago erakusteko daturik - label_change_status: Egoera aldatu - label_history: Historikoa - label_attachment: Fitxategia - label_attachment_new: Fitxategi berria - label_attachment_delete: Fitxategia ezabatu - label_attachment_plural: Fitxategiak - label_file_added: Fitxategia gehituta - label_report: Berri ematea - label_report_plural: Berri emateak - label_news: Berria - label_news_new: Berria gehitu - label_news_plural: Berriak - label_news_latest: Azken berriak - label_news_view_all: Berri guztiak ikusi - label_news_added: Berria gehituta - label_change_log: Aldaketa egunkaria - label_settings: Ezarpenak - label_overview: Gainbegirada - label_version: Bertsioa - label_version_new: Bertsio berria - label_version_plural: Bertsioak - label_close_versions: Burututako bertsioak itxi - label_confirmation: Baieztapena - label_export_to: 'Eskuragarri baita:' - label_read: Irakurri... - label_public_projects: Proiektu publikoak - label_open_issues: irekita - label_open_issues_plural: irekiak - label_closed_issues: itxita - label_closed_issues_plural: itxiak - label_x_open_issues_abbr_on_total: - zero: 0 irekita / %{total} - one: 1 irekita / %{total} - other: "%{count} irekiak / %{total}" - label_x_open_issues_abbr: - zero: 0 irekita - one: 1 irekita - other: "%{count} irekiak" - label_x_closed_issues_abbr: - zero: 0 itxita - one: 1 itxita - other: "%{count} itxiak" - label_total: Guztira - label_permissions: Baimenak - label_current_status: Uneko egoera - label_new_statuses_allowed: Baimendutako egoera berriak - label_all: guztiak - label_none: ezer - label_nobody: inor - label_next: Hurrengoa - label_previous: Aurrekoak - label_used_by: Erabilita - label_details: Xehetasunak - label_add_note: Oharra gehitu - label_per_page: Orriko - label_calendar: Egutegia - label_months_from: hilabete noiztik - label_gantt: Gantt - label_internal: Barnekoa - label_last_changes: "azken %{count} aldaketak" - label_change_view_all: Aldaketa guztiak ikusi - label_personalize_page: Orri hau pertsonalizatu - label_comment: Iruzkin - label_comment_plural: Iruzkinak - label_x_comments: - zero: iruzkinik ez - one: iruzkin 1 - other: "%{count} iruzkin" - label_comment_add: Iruzkina gehitu - label_comment_added: Iruzkina gehituta - label_comment_delete: Iruzkinak ezabatu - label_query: Galdera pertsonalizatua - label_query_plural: Pertsonalizatutako galderak - label_query_new: Galdera berria - label_filter_add: Iragazkia gehitu - label_filter_plural: Iragazkiak - label_equals: da - label_not_equals: ez da - label_in_less_than: baino gutxiagotan - label_in_more_than: baino gehiagotan - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: hauetan - label_today: gaur - label_all_time: denbora guztia - label_yesterday: atzo - label_this_week: aste honetan - label_last_week: pasadan astean - label_last_n_days: "azken %{count} egunetan" - label_this_month: hilabete hau - label_last_month: pasadan hilabetea - label_this_year: urte hau - label_date_range: Data tartea - label_less_than_ago: egun hauek baino gutxiago - label_more_than_ago: egun hauek baino gehiago - label_ago: orain dela - label_contains: dauka - label_not_contains: ez dauka - label_day_plural: egun - label_repository: Biltegia - label_repository_plural: Biltegiak - label_browse: Arakatu - label_modification: "aldaketa %{count}" - label_modification_plural: "%{count} aldaketa" - label_branch: Adarra - label_tag: Etiketa - label_revision: Berrikuspena - label_revision_plural: Berrikuspenak - label_revision_id: "%{value} berrikuspen" - label_associated_revisions: Elkartutako berrikuspenak - label_added: gehituta - label_modified: aldatuta - label_copied: kopiatuta - label_renamed: berrizendatuta - label_deleted: ezabatuta - label_latest_revision: Azken berrikuspena - label_latest_revision_plural: Azken berrikuspenak - label_view_revisions: Berrikuspenak ikusi - label_view_all_revisions: Berrikuspen guztiak ikusi - label_max_size: Tamaina maximoa - label_sort_highest: Goraino mugitu - label_sort_higher: Gora mugitu - label_sort_lower: Behera mugitu - label_sort_lowest: Beheraino mugitu - label_roadmap: Ibilbide-mapa - label_roadmap_due_in: "Epea: %{value}" - label_roadmap_overdue: "%{value} berandu" - label_roadmap_no_issues: Ez dago zereginik bertsio honetan - label_search: Bilatu - label_result_plural: Emaitzak - label_all_words: hitz guztiak - label_wiki: Wikia - label_wiki_edit: Wiki edizioa - label_wiki_edit_plural: Wiki edizioak - label_wiki_page: Wiki orria - label_wiki_page_plural: Wiki orriak - label_index_by_title: Izenburuaren araberako indizea - label_index_by_date: Dataren araberako indizea - label_current_version: Uneko bertsioa - label_preview: Aurreikusi - label_feed_plural: Jarioak - label_changes_details: Aldaketa guztien xehetasunak - label_issue_tracking: Zeregin jarraipena - label_spent_time: Igarotako denbora - label_f_hour: "ordu %{value}" - label_f_hour_plural: "%{value} ordu" - label_time_tracking: Denbora jarraipena - label_change_plural: Aldaketak - label_statistics: Estatistikak - label_commits_per_month: Commit-ak hilabeteka - label_commits_per_author: Commit-ak egileka - label_view_diff: Ezberdintasunak ikusi - label_diff_inline: barnean - label_diff_side_by_side: aldez alde - label_options: Aukerak - label_copy_workflow_from: Kopiatu workflow-a hemendik - label_permissions_report: Baimenen txostena - label_watched_issues: Behatutako zereginak - label_related_issues: Erlazionatutako zereginak - label_applied_status: Aplikatutako egoera - label_loading: Kargatzen... - label_relation_new: Erlazio berria - label_relation_delete: Erlazioa ezabatu - label_relates_to: erlazionatuta dago - label_duplicates: bikoizten du - label_duplicated_by: honek bikoiztuta - label_blocks: blokeatzen du - label_blocked_by: honek blokeatuta - label_precedes: aurretik doa - label_follows: jarraitzen du - label_end_to_start: bukaeratik hasierara - label_end_to_end: bukaeratik bukaerara - label_start_to_start: hasieratik hasierhasieratik bukaerara - label_start_to_end: hasieratik bukaerara - label_stay_logged_in: Saioa mantendu - label_disabled: ezgaituta - label_show_completed_versions: Bukatutako bertsioak ikusi - label_me: ni - label_board: Foroa - label_board_new: Foro berria - label_board_plural: Foroak - label_topic_plural: Gaiak - label_message_plural: Mezuak - label_message_last: Azken mezua - label_message_new: Mezu berria - label_message_posted: Mesua gehituta - label_reply_plural: Erantzunak - label_send_information: Erabiltzaileai kontuaren informazioa bidali - label_year: Urtea - label_month: Hilabetea - label_week: Astea - label_date_from: Nork - label_date_to: Nori - label_language_based: Erabiltzailearen hizkuntzaren arabera - label_sort_by: "Ordenazioa: %{value}" - label_send_test_email: Frogako mezua bidali - label_feeds_access_key: RSS atzipen giltza - label_missing_feeds_access_key: RSS atzipen giltza falta da - label_feeds_access_key_created_on: "RSS atzipen giltza orain dela %{value} sortuta" - label_module_plural: Moduluak - label_added_time_by: "%{author}, orain dela %{age} gehituta" - label_updated_time_by: "%{author}, orain dela %{age} eguneratuta" - label_updated_time: "Orain dela %{value} eguneratuta" - label_jump_to_a_project: Joan proiektura... - label_file_plural: Fitxategiak - label_changeset_plural: Aldaketak - label_default_columns: Lehenetsitako zutabeak - label_no_change_option: (Aldaketarik ez) - label_bulk_edit_selected_issues: Hautatutako zereginak batera editatu - label_theme: Itxura - label_default: Lehenetsia - label_search_titles_only: Izenburuetan bakarrik bilatu - label_user_mail_option_all: "Nire proiektu guztietako gertakari guztientzat" - label_user_mail_option_selected: "Hautatutako proiektuetako edozein gertakarientzat..." - label_user_mail_no_self_notified: "Ez dut nik egiten ditudan aldeketen jakinarazpenik jaso nahi" - label_registration_activation_by_email: kontuak epostaz gaitu - label_registration_manual_activation: kontuak eskuz gaitu - label_registration_automatic_activation: kontuak automatikoki gaitu - label_display_per_page: "Orriko: %{value}" - label_age: Adina - label_change_properties: Propietateak aldatu - label_general: Orokorra - label_more: Gehiago - label_scm: IKK - label_plugins: Pluginak - label_ldap_authentication: LDAP autentikazioa - label_downloads_abbr: Desk. - label_optional_description: Aukerako deskribapena - label_add_another_file: Beste fitxategia gehitu - label_preferences: Hobespenak - label_chronological_order: Orden kronologikoan - label_reverse_chronological_order: Alderantzizko orden kronologikoan - label_planning: Planifikazioa - label_incoming_emails: Sarrerako epostak - label_generate_key: Giltza sortu - label_issue_watchers: Behatzaileak - label_example: Adibidea - label_display: Bistaratzea - label_sort: Ordenatu - label_ascending: Gorantz - label_descending: Beherantz - label_date_from_to: "%{start}-tik %{end}-ra" - label_wiki_content_added: Wiki orria gehituta - label_wiki_content_updated: Wiki orria eguneratuta - label_group: Taldea - label_group_plural: Taldeak - label_group_new: Talde berria - label_time_entry_plural: Igarotako denbora - label_version_sharing_none: Ez partekatuta - label_version_sharing_descendants: Azpiproiektuekin - label_version_sharing_hierarchy: Proiektu Hierarkiarekin - label_version_sharing_tree: Proiektu zuhaitzarekin - label_version_sharing_system: Proiektu guztiekin - label_update_issue_done_ratios: Zereginen burututako erlazioa eguneratu - label_copy_source: Iturburua - label_copy_target: Helburua - label_copy_same_as_target: Helburuaren berdina - label_display_used_statuses_only: Aztarnari honetan erabiltzen diren egoerak bakarrik erakutsi - label_api_access_key: API atzipen giltza - label_missing_api_access_key: API atzipen giltza falta da - label_api_access_key_created_on: "API atzipen giltza sortuta orain dela %{value}" - - button_login: Saioa hasi - button_submit: Bidali - button_save: Gorde - button_check_all: Guztiak markatu - button_uncheck_all: Guztiak desmarkatu - button_delete: Ezabatu - button_create: Sortu - button_create_and_continue: Sortu eta jarraitu - button_test: Frogatu - button_edit: Editatu - button_add: Gehitu - button_change: Aldatu - button_apply: Aplikatu - button_clear: Garbitu - button_lock: Blokeatu - button_unlock: Desblokeatu - button_download: Deskargatu - button_list: Zerrenda - button_view: Ikusi - button_move: Mugitu - button_move_and_follow: Mugitu eta jarraitu - button_back: Atzera - button_cancel: Ezeztatu - button_activate: Gahitu - button_sort: Ordenatu - button_log_time: Denbora erregistratu - button_rollback: Itzuli bertsio honetara - button_watch: Behatu - button_unwatch: Behatzen utzi - button_reply: Erantzun - button_archive: Artxibatu - button_unarchive: Desartxibatu - button_reset: Berrezarri - button_rename: Berrizendatu - button_change_password: Pasahitza aldatu - button_copy: Kopiatu - button_copy_and_follow: Kopiatu eta jarraitu - button_annotate: Anotatu - button_update: Eguneratu - button_configure: Konfiguratu - button_quote: Aipatu - button_duplicate: Bikoiztu - button_show: Ikusi - - status_active: gaituta - status_registered: izena emanda - status_locked: blokeatuta - - version_status_open: irekita - version_status_locked: blokeatuta - version_status_closed: itxita - - field_active: Gaituta - - text_select_mail_notifications: Jakinarazpenak zein ekintzetarako bidaliko diren hautatu. - text_regexp_info: adib. ^[A-Z0-9]+$ - text_min_max_length_info: 0k mugarik gabe esan nahi du - text_project_destroy_confirmation: Ziur zaude proiektu hau eta erlazionatutako datu guztiak ezabatu nahi dituzula? - text_subprojects_destroy_warning: "%{value} azpiproiektuak ere ezabatuko dira." - text_workflow_edit: Hautatu rola eta aztarnaria workflow-a editatzeko - text_are_you_sure: Ziur zaude? - text_journal_changed: "%{label} %{old}-(e)tik %{new}-(e)ra aldatuta" - text_journal_set_to: "%{label}-k %{value} balioa hartu du" - text_journal_deleted: "%{label} ezabatuta (%{old})" - text_journal_added: "%{label} %{value} gehituta" - text_tip_issue_begin_day: gaur hasten diren zereginak - text_tip_issue_end_day: gaur bukatzen diren zereginak - text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak - text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
    Gorde eta gero identifikadorea ezin da aldatu.' - text_caracters_maximum: "%{count} karaktere gehienez." - text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du." - text_length_between: "Luzera %{min} eta %{max} karaktereen artekoa." - text_tracker_no_workflow: Ez da workflow-rik definitu aztarnari honentzako - text_unallowed_characters: Debekatutako karaktereak - text_comma_separated: Balio anitz izan daitezke (komaz banatuta). - text_line_separated: Balio anitz izan daitezke (balio bakoitza lerro batean). - text_issues_ref_in_commit_messages: Commit-en mezuetan zereginak erlazionatu eta konpontzen - text_issue_added: "%{id} zeregina %{author}-(e)k jakinarazi du." - text_issue_updated: "%{id} zeregina %{author}-(e)k eguneratu du." - text_wiki_destroy_confirmation: Ziur zaude wiki hau eta bere eduki guztiak ezabatu nahi dituzula? - text_issue_category_destroy_question: "Zeregin batzuk (%{count}) kategoria honetara esleituta daude. Zer egin nahi duzu?" - text_issue_category_destroy_assignments: Kategoria esleipenak kendu - text_issue_category_reassign_to: Zereginak kategoria honetara esleitu - text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)." - text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu." - text_load_default_configuration: Lehenetsitako konfigurazioa kargatu - text_status_changed_by_changeset: "%{value} aldaketan aplikatuta." - text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?' - text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:' - text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta - text_file_repository_writable: Eranskinen direktorioan idatz daiteke - text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke - text_rmagick_available: RMagick eskuragarri (aukerazkoa) - text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?" - text_destroy_time_entries: Ezabatu berri emandako orduak - text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu - text_reassign_time_entries: 'Berri emandako orduak zeregin honetara esleitu:' - text_user_wrote: "%{value}-(e)k idatzi zuen:" - text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude." - text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:' - text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." - text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira." - text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.' - text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko' - text_wiki_page_destroy_question: "Orri honek %{descendants} orri seme eta ondorengo ditu. Zer egin nahi duzu?" - text_wiki_page_nullify_children: "Orri semeak erro orri moduan mantendu" - text_wiki_page_destroy_children: "Orri semeak eta beraien ondorengo guztiak ezabatu" - text_wiki_page_reassign_children: "Orri semeak orri guraso honetara esleitu" - text_own_membership_delete_confirmation: "Zure baimen batzuk (edo guztiak) kentzera zoaz eta baliteke horren ondoren proiektu hau ezin editatzea.\n Ziur zaude jarraitu nahi duzula?" - - default_role_manager: Kudeatzailea - default_role_developer: Garatzailea - default_role_reporter: Berriemailea - default_tracker_bug: Errorea - default_tracker_feature: Eginbidea - default_tracker_support: Laguntza - default_issue_status_new: Berria - default_issue_status_in_progress: Lanean - default_issue_status_resolved: Ebatzita - default_issue_status_feedback: Berrelikadura - default_issue_status_closed: Itxita - default_issue_status_rejected: Baztertua - default_doc_category_user: Erabiltzaile dokumentazioa - default_doc_category_tech: Dokumentazio teknikoa - default_priority_low: Baxua - default_priority_normal: Normala - default_priority_high: Altua - default_priority_urgent: Larria - default_priority_immediate: Berehalakoa - default_activity_design: Diseinua - default_activity_development: Garapena - - enumeration_issue_priorities: Zeregin lehentasunak - enumeration_doc_categories: Dokumentu kategoriak - enumeration_activities: Jarduerak (denbora kontrola)) - enumeration_system_activity: Sistemako Jarduera - label_board_sticky: Itsaskorra - label_board_locked: Blokeatuta - permission_export_wiki_pages: Wiki orriak esportatu - setting_cache_formatted_text: Formatudun testua katxeatu - permission_manage_project_activities: Proiektuaren jarduerak kudeatu - error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu - label_profile: Profila - permission_manage_subtasks: Azpiatazak kudeatu - field_parent_issue: Zeregin gurasoa - label_subtask_plural: Azpiatazak - label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali - error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu - error_unable_to_connect: Ezin da konektatu (%{value}) - error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu. - error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu. - field_principal: Ekintzaile - label_my_page_block: "Nire orriko blokea" - notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}." - text_zoom_out: Zooma txikiagotu - text_zoom_in: Zooma handiagotu - notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu." - label_overall_spent_time: Igarotako denbora guztira - field_time_entries: "Denbora erregistratu" - project_module_gantt: Gantt - project_module_calendar: Egutegia - button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}" - text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?" - field_text: Testu eremua - label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik" - setting_default_notification_option: "Lehenetsitako ohartarazpen aukera" - label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik" - label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik" - label_user_mail_option_none: "Gertakaririk ez" - field_member_of_group: "Esleituta duenaren taldea" - field_assigned_to_role: "Esleituta duenaren rola" - notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da." - label_principal_search: "Bilatu erabiltzaile edo taldea:" - label_user_search: "Erabiltzailea bilatu:" - field_visible: Ikusgai - setting_emails_header: "Eposten goiburua" - setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera" - text_time_logged_by_changeset: "%{value} aldaketan egindakoa." - setting_commit_logtime_enabled: "Erregistrutako denbora gaitu" - notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max}) - setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa" - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +# Redmine EU language +# Author: Ales Zabala Alava (Shagi), +# 2010-01-25 +# Distributed under the same terms as the Redmine itself. +eu: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%Y/%m/%d" + short: "%b %d" + long: "%Y %B %d" + + day_names: [Igandea, Astelehena, Asteartea, Asteazkena, Osteguna, Ostirala, Larunbata] + abbr_day_names: [Ig., Al., Ar., Az., Og., Or., La.] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua] + abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe] + # Used in date_select and datime_select. + order: + - :year + - :month + - :day + + time: + formats: + default: "%Y/%m/%d %H:%M" + time: "%H:%M" + short: "%b %d %H:%M" + long: "%Y %B %d %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "minutu erdi" + less_than_x_seconds: + one: "segundu bat baino gutxiago" + other: "%{count} segundu baino gutxiago" + x_seconds: + one: "segundu 1" + other: "%{count} segundu" + less_than_x_minutes: + one: "minutu bat baino gutxiago" + other: "%{count} minutu baino gutxiago" + x_minutes: + one: "minutu 1" + other: "%{count} minutu" + about_x_hours: + one: "ordu 1 inguru" + other: "%{count} ordu inguru" + x_days: + one: "egun 1" + other: "%{count} egun" + about_x_months: + one: "hilabete 1 inguru" + other: "%{count} hilabete inguru" + x_months: + one: "hilabete 1" + other: "%{count} hilabete" + about_x_years: + one: "urte 1 inguru" + other: "%{count} urte inguru" + over_x_years: + one: "urte 1 baino gehiago" + other: "%{count} urte baino gehiago" + almost_x_years: + one: "ia urte 1" + other: "ia %{count} urte" + + number: + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Byte" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "eta" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "Errore batek %{model} hau godetzea galarazi du." + other: "%{count} errorek %{model} hau gordetzea galarazi dute." + messages: + inclusion: "ez dago zerrendan" + exclusion: "erreserbatuta dago" + invalid: "baliogabea da" + confirmation: "ez du berrespenarekin bat egiten" + accepted: "onartu behar da" + empty: "ezin da hutsik egon" + blank: "ezin da hutsik egon" + too_long: "luzeegia da (maximoa %{count} karaktere dira)" + too_short: "laburregia da (minimoa %{count} karaktere dira)" + wrong_length: "luzera ezegokia da (%{count} karakter izan beharko litzake)" + taken: "dagoeneko hartuta dago" + not_a_number: "ez da zenbaki bat" + not_a_date: "ez da baliozko data" + greater_than: "%{count} baino handiagoa izan behar du" + greater_than_or_equal_to: "%{count} edo handiagoa izan behar du" + equal_to: "%{count} izan behar du" + less_than: "%{count} baino gutxiago izan behar du" + less_than_or_equal_to: "%{count} edo gutxiago izan behar du" + odd: "bakoitia izan behar du" + even: "bikoitia izan behar du" + greater_than_start_date: "hasiera data baino handiagoa izan behar du" + not_same_project: "ez dago proiektu berdinean" + circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke" + cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu." + + actionview_instancetag_blank_option: Hautatu mesedez + + general_text_No: 'Ez' + general_text_Yes: 'Bai' + general_text_no: 'ez' + general_text_yes: 'bai' + general_lang_name: 'Euskara' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Kontua ongi eguneratu da. + notice_account_invalid_creditentials: Erabiltzaile edo pasahitz ezegokia + notice_account_password_updated: Pasahitza ongi eguneratu da. + notice_account_wrong_password: Pasahitz ezegokia. + notice_account_register_done: Kontua ongi sortu da. Kontua gaitzeko klikatu epostan adierazi zaizun estekan. + notice_account_unknown_email: Erabiltzaile ezezaguna. + notice_can_t_change_password: Kontu honek kanpoko autentikazio bat erabiltzen du. Ezinezkoa da pasahitza aldatzea. + notice_account_lost_email_sent: Pasahitz berria aukeratzeko jarraibideak dituen eposta bat bidali zaizu. + notice_account_activated: Zure kontua gaituta dago. Orain saioa has dezakezu + notice_successful_create: Sortze arrakastatsua. + notice_successful_update: Eguneratze arrakastatsua. + notice_successful_delete: Ezabaketa arrakastatsua. + notice_successful_connection: Konexio arrakastatsua. + notice_file_not_found: Atzitu nahi duzun orria ez da exisitzen edo ezabatua izan da. + notice_locking_conflict: Beste erabiltzaile batek datuak eguneratu ditu. + notice_not_authorized: Ez duzu orri hau atzitzeko baimenik. + notice_email_sent: "%{value} helbidera eposta bat bidali da" + notice_email_error: "Errorea eposta bidaltzean (%{value})" + notice_feeds_access_key_reseted: Zure RSS atzipen giltza berrezarri da. + notice_api_access_key_reseted: Zure API atzipen giltza berrezarri da. + notice_failed_to_save_issues: "Hautatutako %{total} zereginetatik %{count} ezin izan dira konpondu: %{ids}." + notice_no_issue_selected: "Ez da zereginik hautatu! Mesedez, editatu nahi dituzun arazoak markatu." + notice_account_pending: "Zure kontua sortu da, orain kudeatzailearen onarpenaren zain dago." + notice_default_data_loaded: Lehenetsitako konfigurazioa ongi kargatu da. + notice_unable_delete_version: Ezin da bertsioa ezabatu. + notice_issue_done_ratios_updated: Burututako zereginen erlazioa eguneratu da. + + error_can_t_load_default_data: "Ezin izan da lehenetsitako konfigurazioa kargatu: %{value}" + error_scm_not_found: "Sarrera edo berrikuspena ez da biltegian topatu." + error_scm_command_failed: "Errorea gertatu da biltegia atzitzean: %{value}" + error_scm_annotate: "Sarrera ez da existitzen edo ezin da anotatu." + error_issue_not_found_in_project: 'Zeregina ez da topatu edo ez da proiektu honetakoa' + error_no_tracker_in_project: 'Proiektu honek ez du aztarnaririk esleituta. Mesedez egiaztatu Proiektuaren ezarpenak.' + error_no_default_issue_status: 'Zereginek ez dute lehenetsitako egoerarik. Mesedez egiaztatu zure konfigurazioa ("Kudeaketa -> Arazoen egoerak" atalera joan).' + error_can_not_reopen_issue_on_closed_version: 'Itxitako bertsio batera esleitutako zereginak ezin dira berrireki' + error_can_not_archive_project: Proiektu hau ezin da artxibatu + error_issue_done_ratios_not_updated: "Burututako zereginen erlazioa ez da eguneratu." + error_workflow_copy_source: 'Mesedez hautatu iturburuko aztarnari edo rola' + error_workflow_copy_target: 'Mesedez hautatu helburuko aztarnari(ak) edo rola(k)' + + warning_attachments_not_saved: "%{count} fitxategi ezin izan d(ir)a gorde." + + mail_subject_lost_password: "Zure %{value} pasahitza" + mail_body_lost_password: 'Zure pasahitza aldatzeko hurrengo estekan klikatu:' + mail_subject_register: "Zure %{value} kontuaren gaitzea" + mail_body_register: 'Zure kontua gaitzeko hurrengo estekan klikatu:' + mail_body_account_information_external: "Zure %{value} kontua erabil dezakezu saioa hasteko." + mail_body_account_information: Zure kontuaren informazioa + mail_subject_account_activation_request: "%{value} kontu gaitzeko eskaera" + mail_body_account_activation_request: "Erabiltzaile berri bat (%{value}) erregistratu da. Kontua zure onarpenaren zain dago:" + mail_subject_reminder: "%{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a" + mail_body_reminder: "Zuri esleituta dauden %{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a:" + mail_subject_wiki_content_added: "'%{id}' wiki orria gehitu da" + mail_body_wiki_content_added: "%{author}-(e)k '%{id}' wiki orria gehitu du." + mail_subject_wiki_content_updated: "'%{id}' wiki orria eguneratu da" + mail_body_wiki_content_updated: "%{author}-(e)k '%{id}' wiki orria eguneratu du." + + gui_validation_error: akats 1 + gui_validation_error_plural: "%{count} akats" + + field_name: Izena + field_description: Deskribapena + field_summary: Laburpena + field_is_required: Beharrezkoa + field_firstname: Izena + field_lastname: Abizenak + field_mail: Eposta + field_filename: Fitxategia + field_filesize: Tamaina + field_downloads: Deskargak + field_author: Egilea + field_created_on: Sortuta + field_updated_on: Eguneratuta + field_field_format: Formatua + field_is_for_all: Proiektu guztietarako + field_possible_values: Balio posibleak + field_regexp: Expresio erregularra + field_min_length: Luzera minimoa + field_max_length: Luzera maxioma + field_value: Balioa + field_category: Kategoria + field_title: Izenburua + field_project: Proiektua + field_issue: Zeregina + field_status: Egoera + field_notes: Oharrak + field_is_closed: Itxitako arazoa + field_is_default: Lehenetsitako balioa + field_tracker: Aztarnaria + field_subject: Gaia + field_due_date: Amaiera data + field_assigned_to: Esleituta + field_priority: Lehentasuna + field_fixed_version: Helburuko bertsioa + field_user: Erabiltzilea + field_role: Rola + field_homepage: Orri nagusia + field_is_public: Publikoa + field_parent: "Honen azpiproiektua:" + field_is_in_chlog: Zereginak aldaketa egunkarian ikusten dira + field_is_in_roadmap: Arazoak ibilbide-mapan erakutsi + field_login: Erabiltzaile izena + field_mail_notification: Eposta jakinarazpenak + field_admin: Kudeatzailea + field_last_login_on: Azken konexioa + field_language: Hizkuntza + field_effective_date: Data + field_password: Pasahitza + field_new_password: Pasahitz berria + field_password_confirmation: Berrespena + field_version: Bertsioa + field_type: Mota + field_host: Ostalaria + field_port: Portua + field_account: Kontua + field_base_dn: Base DN + field_attr_login: Erabiltzaile atributua + field_attr_firstname: Izena atributua + field_attr_lastname: Abizenak atributua + field_attr_mail: Eposta atributua + field_onthefly: Zuzeneko erabiltzaile sorrera + field_start_date: Hasiera + field_done_ratio: Egindako % + field_auth_source: Autentikazio modua + field_hide_mail: Nire eposta helbidea ezkutatu + field_comments: Iruzkina + field_url: URL + field_start_page: Hasierako orria + field_subproject: Azpiproiektua + field_hours: Ordu + field_activity: Jarduera + field_spent_on: Data + field_identifier: Identifikatzailea + field_is_filter: Iragazki moduan erabilita + field_issue_to: Erlazionatutako zereginak + field_delay: Atzerapena + field_assignable: Arazoak rol honetara esleitu daitezke + field_redirect_existing_links: Existitzen diren estekak berbideratu + field_estimated_hours: Estimatutako denbora + field_column_names: Zutabeak + field_time_zone: Ordu zonaldea + field_searchable: Bilagarria + field_default_value: Lehenetsitako balioa + field_comments_sorting: Iruzkinak erakutsi + field_parent_title: Orri gurasoa + field_editable: Editagarria + field_watcher: Behatzailea + field_identity_url: OpenID URLa + field_content: Edukia + field_group_by: Emaitzak honegatik taldekatu + field_sharing: Partekatzea + + setting_app_title: Aplikazioaren izenburua + setting_app_subtitle: Aplikazioaren azpizenburua + setting_welcome_text: Ongietorriko testua + setting_default_language: Lehenetsitako hizkuntza + setting_login_required: Autentikazioa derrigorrezkoa + setting_self_registration: Norberak erregistratu + setting_attachment_max_size: Eranskinen tamaina max. + setting_issues_export_limit: Zereginen esportatze limitea + setting_mail_from: Igorlearen eposta helbidea + setting_bcc_recipients: Hartzaileak ezkutuko kopian (bcc) + setting_plain_text_mail: Testu soileko epostak (HTML-rik ez) + setting_host_name: Ostalari izena eta bidea + setting_text_formatting: Testu formatua + setting_wiki_compression: Wikiaren historia konprimitu + setting_feeds_limit: Jarioaren edukiera limitea + setting_default_projects_public: Proiektu berriak defektuz publikoak dira + setting_autofetch_changesets: Commit-ak automatikoki hartu + setting_sys_api_enabled: Biltegien kudeaketarako WS gaitu + setting_commit_ref_keywords: Erreferentzien gako-hitzak + setting_commit_fix_keywords: Konpontze gako-hitzak + setting_autologin: Saioa automatikoki hasi + setting_date_format: Data formatua + setting_time_format: Ordu formatua + setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu + setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak + setting_repositories_encodings: Biltegien kodeketak + setting_emails_footer: Eposten oina + setting_protocol: Protokoloa + setting_per_page_options: Orriko objektuen aukerak + setting_user_format: Erabiltzaileak erakusteko formatua + setting_activity_days_default: Proiektuen jardueran erakusteko egunak + setting_display_subprojects_issues: Azpiproiektuen zereginak proiektu nagusian erakutsi defektuz + setting_enabled_scm: Gaitutako IKKak + setting_mail_handler_body_delimiters: "Lerro hauteko baten ondoren epostak moztu" + setting_mail_handler_api_enabled: Sarrerako epostentzako WS gaitu + setting_mail_handler_api_key: API giltza + setting_sequential_project_identifiers: Proiektuen identifikadore sekuentzialak sortu + setting_gravatar_enabled: Erabili Gravatar erabiltzaile ikonoak + setting_gravatar_default: Lehenetsitako Gravatar irudia + setting_diff_max_lines_displayed: Erakutsiko diren diff lerro kopuru maximoa + setting_file_max_size_displayed: Barnean erakuzten diren testu fitxategien tamaina maximoa + setting_repository_log_display_limit: Egunkari fitxategian erakutsiko diren berrikuspen kopuru maximoa. + setting_openid: Baimendu OpenID saio hasiera eta erregistatzea + setting_password_min_length: Pasahitzen luzera minimoa + setting_new_project_user_role_id: Proiektu berriak sortzerakoan kudeatzaile ez diren erabiltzaileei esleitutako rola + setting_default_projects_modules: Proiektu berrientzako defektuz gaitutako moduluak + setting_issue_done_ratio: "Zereginen burututako tasa kalkulatzean erabili:" + setting_issue_done_ratio_issue_field: Zeregin eremua erabili + setting_issue_done_ratio_issue_status: Zeregin egoera erabili + setting_start_of_week: "Egutegiak noiz hasi:" + setting_rest_api_enabled: Gaitu REST web zerbitzua + + permission_add_project: Proiektua sortu + permission_add_subprojects: Azpiproiektuak sortu + permission_edit_project: Proiektua editatu + permission_select_project_modules: Proiektuaren moduluak hautatu + permission_manage_members: Kideak kudeatu + permission_manage_versions: Bertsioak kudeatu + permission_manage_categories: Arazoen kategoriak kudeatu + permission_view_issues: Zereginak ikusi + permission_add_issues: Zereginak gehitu + permission_edit_issues: Zereginak aldatu + permission_manage_issue_relations: Zereginen erlazioak kudeatu + permission_add_issue_notes: Oharrak gehitu + permission_edit_issue_notes: Oharrak aldatu + permission_edit_own_issue_notes: Nork bere oharrak aldatu + permission_move_issues: Zereginak mugitu + permission_delete_issues: Zereginak ezabatu + permission_manage_public_queries: Galdera publikoak kudeatu + permission_save_queries: Galderak gorde + permission_view_gantt: Gantt grafikoa ikusi + permission_view_calendar: Egutegia ikusi + permission_view_issue_watchers: Behatzaileen zerrenda ikusi + permission_add_issue_watchers: Behatzaileak gehitu + permission_delete_issue_watchers: Behatzaileak ezabatu + permission_log_time: Igarotako denbora erregistratu + permission_view_time_entries: Igarotako denbora ikusi + permission_edit_time_entries: Denbora egunkariak editatu + permission_edit_own_time_entries: Nork bere denbora egunkariak editatu + permission_manage_news: Berriak kudeatu + permission_comment_news: Berrien iruzkinak egin + permission_manage_documents: Dokumentuak kudeatu + permission_view_documents: Dokumentuak ikusi + permission_manage_files: Fitxategiak kudeatu + permission_view_files: Fitxategiak ikusi + permission_manage_wiki: Wikia kudeatu + permission_rename_wiki_pages: Wiki orriak berrizendatu + permission_delete_wiki_pages: Wiki orriak ezabatu + permission_view_wiki_pages: Wikia ikusi + permission_view_wiki_edits: Wikiaren historia ikusi + permission_edit_wiki_pages: Wiki orriak editatu + permission_delete_wiki_pages_attachments: Eranskinak ezabatu + permission_protect_wiki_pages: Wiki orriak babestu + permission_manage_repository: Biltegiak kudeatu + permission_browse_repository: Biltegia arakatu + permission_view_changesets: Aldaketak ikusi + permission_commit_access: Commit atzipena + permission_manage_boards: Foroak kudeatu + permission_view_messages: Mezuak ikusi + permission_add_messages: Mezuak bidali + permission_edit_messages: Mezuak aldatu + permission_edit_own_messages: Nork bere mezuak aldatu + permission_delete_messages: Mezuak ezabatu + permission_delete_own_messages: Nork bere mezuak ezabatu + + project_module_issue_tracking: Zereginen jarraipena + project_module_time_tracking: Denbora jarraipena + project_module_news: Berriak + project_module_documents: Dokumentuak + project_module_files: Fitxategiak + project_module_wiki: Wiki + project_module_repository: Biltegia + project_module_boards: Foroak + + label_user: Erabiltzailea + label_user_plural: Erabiltzaileak + label_user_new: Erabiltzaile berria + label_user_anonymous: Ezezaguna + label_project: Proiektua + label_project_new: Proiektu berria + label_project_plural: Proiektuak + label_x_projects: + zero: proiekturik ez + one: proiektu bat + other: "%{count} proiektu" + label_project_all: Proiektu guztiak + label_project_latest: Azken proiektuak + label_issue: Zeregina + label_issue_new: Zeregin berria + label_issue_plural: Zereginak + label_issue_view_all: Zeregin guztiak ikusi + label_issues_by: "Zereginak honengatik: %{value}" + label_issue_added: Zeregina gehituta + label_issue_updated: Zeregina eguneratuta + label_document: Dokumentua + label_document_new: Dokumentu berria + label_document_plural: Dokumentuak + label_document_added: Dokumentua gehituta + label_role: Rola + label_role_plural: Rolak + label_role_new: Rol berria + label_role_and_permissions: Rolak eta baimenak + label_member: Kidea + label_member_new: Kide berria + label_member_plural: Kideak + label_tracker: Aztarnaria + label_tracker_plural: Aztarnariak + label_tracker_new: Aztarnari berria + label_workflow: Lan-fluxua + label_issue_status: Zeregin egoera + label_issue_status_plural: Zeregin egoerak + label_issue_status_new: Egoera berria + label_issue_category: Zeregin kategoria + label_issue_category_plural: Zeregin kategoriak + label_issue_category_new: Kategoria berria + label_custom_field: Eremu pertsonalizatua + label_custom_field_plural: Eremu pertsonalizatuak + label_custom_field_new: Eremu pertsonalizatu berria + label_enumerations: Enumerazioak + label_enumeration_new: Balio berria + label_information: Informazioa + label_information_plural: Informazioa + label_please_login: Saioa hasi mesedez + label_register: Erregistratu + label_login_with_open_id_option: edo OpenID-rekin saioa hasi + label_password_lost: Pasahitza galduta + label_home: Hasiera + label_my_page: Nire orria + label_my_account: Nire kontua + label_my_projects: Nire proiektuak + label_administration: Kudeaketa + label_login: Saioa hasi + label_logout: Saioa bukatu + label_help: Laguntza + label_reported_issues: Berri emandako zereginak + label_assigned_to_me_issues: Niri esleitutako arazoak + label_last_login: Azken konexioa + label_registered_on: Noiz erregistratuta + label_activity: Jarduerak + label_overall_activity: Jarduera guztiak + label_user_activity: "%{value}-(r)en jarduerak" + label_new: Berria + label_logged_as: "Sartutako erabiltzailea:" + label_environment: Ingurune + label_authentication: Autentikazioa + label_auth_source: Autentikazio modua + label_auth_source_new: Autentikazio modu berria + label_auth_source_plural: Autentikazio moduak + label_subproject_plural: Azpiproiektuak + label_subproject_new: Azpiproiektu berria + label_and_its_subprojects: "%{value} eta bere azpiproiektuak" + label_min_max_length: Luzera min - max + label_list: Zerrenda + label_date: Data + label_integer: Osokoa + label_float: Koma higikorrekoa + label_boolean: Boolearra + label_string: Testua + label_text: Testu luzea + label_attribute: Atributua + label_attribute_plural: Atributuak + label_download: "Deskarga %{count}" + label_download_plural: "%{count} Deskarga" + label_no_data: Ez dago erakusteko daturik + label_change_status: Egoera aldatu + label_history: Historikoa + label_attachment: Fitxategia + label_attachment_new: Fitxategi berria + label_attachment_delete: Fitxategia ezabatu + label_attachment_plural: Fitxategiak + label_file_added: Fitxategia gehituta + label_report: Berri ematea + label_report_plural: Berri emateak + label_news: Berria + label_news_new: Berria gehitu + label_news_plural: Berriak + label_news_latest: Azken berriak + label_news_view_all: Berri guztiak ikusi + label_news_added: Berria gehituta + label_change_log: Aldaketa egunkaria + label_settings: Ezarpenak + label_overview: Gainbegirada + label_version: Bertsioa + label_version_new: Bertsio berria + label_version_plural: Bertsioak + label_close_versions: Burututako bertsioak itxi + label_confirmation: Baieztapena + label_export_to: 'Eskuragarri baita:' + label_read: Irakurri... + label_public_projects: Proiektu publikoak + label_open_issues: irekita + label_open_issues_plural: irekiak + label_closed_issues: itxita + label_closed_issues_plural: itxiak + label_x_open_issues_abbr_on_total: + zero: 0 irekita / %{total} + one: 1 irekita / %{total} + other: "%{count} irekiak / %{total}" + label_x_open_issues_abbr: + zero: 0 irekita + one: 1 irekita + other: "%{count} irekiak" + label_x_closed_issues_abbr: + zero: 0 itxita + one: 1 itxita + other: "%{count} itxiak" + label_total: Guztira + label_permissions: Baimenak + label_current_status: Uneko egoera + label_new_statuses_allowed: Baimendutako egoera berriak + label_all: guztiak + label_none: ezer + label_nobody: inor + label_next: Hurrengoa + label_previous: Aurrekoak + label_used_by: Erabilita + label_details: Xehetasunak + label_add_note: Oharra gehitu + label_per_page: Orriko + label_calendar: Egutegia + label_months_from: hilabete noiztik + label_gantt: Gantt + label_internal: Barnekoa + label_last_changes: "azken %{count} aldaketak" + label_change_view_all: Aldaketa guztiak ikusi + label_personalize_page: Orri hau pertsonalizatu + label_comment: Iruzkin + label_comment_plural: Iruzkinak + label_x_comments: + zero: iruzkinik ez + one: iruzkin 1 + other: "%{count} iruzkin" + label_comment_add: Iruzkina gehitu + label_comment_added: Iruzkina gehituta + label_comment_delete: Iruzkinak ezabatu + label_query: Galdera pertsonalizatua + label_query_plural: Pertsonalizatutako galderak + label_query_new: Galdera berria + label_filter_add: Iragazkia gehitu + label_filter_plural: Iragazkiak + label_equals: da + label_not_equals: ez da + label_in_less_than: baino gutxiagotan + label_in_more_than: baino gehiagotan + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: hauetan + label_today: gaur + label_all_time: denbora guztia + label_yesterday: atzo + label_this_week: aste honetan + label_last_week: pasadan astean + label_last_n_days: "azken %{count} egunetan" + label_this_month: hilabete hau + label_last_month: pasadan hilabetea + label_this_year: urte hau + label_date_range: Data tartea + label_less_than_ago: egun hauek baino gutxiago + label_more_than_ago: egun hauek baino gehiago + label_ago: orain dela + label_contains: dauka + label_not_contains: ez dauka + label_day_plural: egun + label_repository: Biltegia + label_repository_plural: Biltegiak + label_browse: Arakatu + label_modification: "aldaketa %{count}" + label_modification_plural: "%{count} aldaketa" + label_branch: Adarra + label_tag: Etiketa + label_revision: Berrikuspena + label_revision_plural: Berrikuspenak + label_revision_id: "%{value} berrikuspen" + label_associated_revisions: Elkartutako berrikuspenak + label_added: gehituta + label_modified: aldatuta + label_copied: kopiatuta + label_renamed: berrizendatuta + label_deleted: ezabatuta + label_latest_revision: Azken berrikuspena + label_latest_revision_plural: Azken berrikuspenak + label_view_revisions: Berrikuspenak ikusi + label_view_all_revisions: Berrikuspen guztiak ikusi + label_max_size: Tamaina maximoa + label_sort_highest: Goraino mugitu + label_sort_higher: Gora mugitu + label_sort_lower: Behera mugitu + label_sort_lowest: Beheraino mugitu + label_roadmap: Ibilbide-mapa + label_roadmap_due_in: "Epea: %{value}" + label_roadmap_overdue: "%{value} berandu" + label_roadmap_no_issues: Ez dago zereginik bertsio honetan + label_search: Bilatu + label_result_plural: Emaitzak + label_all_words: hitz guztiak + label_wiki: Wikia + label_wiki_edit: Wiki edizioa + label_wiki_edit_plural: Wiki edizioak + label_wiki_page: Wiki orria + label_wiki_page_plural: Wiki orriak + label_index_by_title: Izenburuaren araberako indizea + label_index_by_date: Dataren araberako indizea + label_current_version: Uneko bertsioa + label_preview: Aurreikusi + label_feed_plural: Jarioak + label_changes_details: Aldaketa guztien xehetasunak + label_issue_tracking: Zeregin jarraipena + label_spent_time: Igarotako denbora + label_f_hour: "ordu %{value}" + label_f_hour_plural: "%{value} ordu" + label_time_tracking: Denbora jarraipena + label_change_plural: Aldaketak + label_statistics: Estatistikak + label_commits_per_month: Commit-ak hilabeteka + label_commits_per_author: Commit-ak egileka + label_view_diff: Ezberdintasunak ikusi + label_diff_inline: barnean + label_diff_side_by_side: aldez alde + label_options: Aukerak + label_copy_workflow_from: Kopiatu workflow-a hemendik + label_permissions_report: Baimenen txostena + label_watched_issues: Behatutako zereginak + label_related_issues: Erlazionatutako zereginak + label_applied_status: Aplikatutako egoera + label_loading: Kargatzen... + label_relation_new: Erlazio berria + label_relation_delete: Erlazioa ezabatu + label_relates_to: erlazionatuta dago + label_duplicates: bikoizten du + label_duplicated_by: honek bikoiztuta + label_blocks: blokeatzen du + label_blocked_by: honek blokeatuta + label_precedes: aurretik doa + label_follows: jarraitzen du + label_end_to_start: bukaeratik hasierara + label_end_to_end: bukaeratik bukaerara + label_start_to_start: hasieratik hasierhasieratik bukaerara + label_start_to_end: hasieratik bukaerara + label_stay_logged_in: Saioa mantendu + label_disabled: ezgaituta + label_show_completed_versions: Bukatutako bertsioak ikusi + label_me: ni + label_board: Foroa + label_board_new: Foro berria + label_board_plural: Foroak + label_topic_plural: Gaiak + label_message_plural: Mezuak + label_message_last: Azken mezua + label_message_new: Mezu berria + label_message_posted: Mezua gehituta + label_reply_plural: Erantzunak + label_send_information: Erabiltzaileai kontuaren informazioa bidali + label_year: Urtea + label_month: Hilabetea + label_week: Astea + label_date_from: Nork + label_date_to: Nori + label_language_based: Erabiltzailearen hizkuntzaren arabera + label_sort_by: "Ordenazioa: %{value}" + label_send_test_email: Frogako mezua bidali + label_feeds_access_key: RSS atzipen giltza + label_missing_feeds_access_key: RSS atzipen giltza falta da + label_feeds_access_key_created_on: "RSS atzipen giltza orain dela %{value} sortuta" + label_module_plural: Moduluak + label_added_time_by: "%{author}, orain dela %{age} gehituta" + label_updated_time_by: "%{author}, orain dela %{age} eguneratuta" + label_updated_time: "Orain dela %{value} eguneratuta" + label_jump_to_a_project: Joan proiektura... + label_file_plural: Fitxategiak + label_changeset_plural: Aldaketak + label_default_columns: Lehenetsitako zutabeak + label_no_change_option: (Aldaketarik ez) + label_bulk_edit_selected_issues: Hautatutako zereginak batera editatu + label_theme: Itxura + label_default: Lehenetsia + label_search_titles_only: Izenburuetan bakarrik bilatu + label_user_mail_option_all: "Nire proiektu guztietako gertakari guztientzat" + label_user_mail_option_selected: "Hautatutako proiektuetako edozein gertakarientzat..." + label_user_mail_no_self_notified: "Ez dut nik egiten ditudan aldeketen jakinarazpenik jaso nahi" + label_registration_activation_by_email: kontuak epostaz gaitu + label_registration_manual_activation: kontuak eskuz gaitu + label_registration_automatic_activation: kontuak automatikoki gaitu + label_display_per_page: "Orriko: %{value}" + label_age: Adina + label_change_properties: Propietateak aldatu + label_general: Orokorra + label_more: Gehiago + label_scm: IKK + label_plugins: Pluginak + label_ldap_authentication: LDAP autentikazioa + label_downloads_abbr: Desk. + label_optional_description: Aukerako deskribapena + label_add_another_file: Beste fitxategia gehitu + label_preferences: Hobespenak + label_chronological_order: Orden kronologikoan + label_reverse_chronological_order: Alderantzizko orden kronologikoan + label_planning: Planifikazioa + label_incoming_emails: Sarrerako epostak + label_generate_key: Giltza sortu + label_issue_watchers: Behatzaileak + label_example: Adibidea + label_display: Bistaratzea + label_sort: Ordenatu + label_ascending: Gorantz + label_descending: Beherantz + label_date_from_to: "%{start}-tik %{end}-ra" + label_wiki_content_added: Wiki orria gehituta + label_wiki_content_updated: Wiki orria eguneratuta + label_group: Taldea + label_group_plural: Taldeak + label_group_new: Talde berria + label_time_entry_plural: Igarotako denbora + label_version_sharing_none: Ez partekatuta + label_version_sharing_descendants: Azpiproiektuekin + label_version_sharing_hierarchy: Proiektu Hierarkiarekin + label_version_sharing_tree: Proiektu zuhaitzarekin + label_version_sharing_system: Proiektu guztiekin + label_update_issue_done_ratios: Zereginen burututako erlazioa eguneratu + label_copy_source: Iturburua + label_copy_target: Helburua + label_copy_same_as_target: Helburuaren berdina + label_display_used_statuses_only: Aztarnari honetan erabiltzen diren egoerak bakarrik erakutsi + label_api_access_key: API atzipen giltza + label_missing_api_access_key: API atzipen giltza falta da + label_api_access_key_created_on: "API atzipen giltza sortuta orain dela %{value}" + + button_login: Saioa hasi + button_submit: Bidali + button_save: Gorde + button_check_all: Guztiak markatu + button_uncheck_all: Guztiak desmarkatu + button_delete: Ezabatu + button_create: Sortu + button_create_and_continue: Sortu eta jarraitu + button_test: Frogatu + button_edit: Editatu + button_add: Gehitu + button_change: Aldatu + button_apply: Aplikatu + button_clear: Garbitu + button_lock: Blokeatu + button_unlock: Desblokeatu + button_download: Deskargatu + button_list: Zerrenda + button_view: Ikusi + button_move: Mugitu + button_move_and_follow: Mugitu eta jarraitu + button_back: Atzera + button_cancel: Ezeztatu + button_activate: Gahitu + button_sort: Ordenatu + button_log_time: Denbora erregistratu + button_rollback: Itzuli bertsio honetara + button_watch: Behatu + button_unwatch: Behatzen utzi + button_reply: Erantzun + button_archive: Artxibatu + button_unarchive: Desartxibatu + button_reset: Berrezarri + button_rename: Berrizendatu + button_change_password: Pasahitza aldatu + button_copy: Kopiatu + button_copy_and_follow: Kopiatu eta jarraitu + button_annotate: Anotatu + button_update: Eguneratu + button_configure: Konfiguratu + button_quote: Aipatu + button_duplicate: Bikoiztu + button_show: Ikusi + + status_active: gaituta + status_registered: izena emanda + status_locked: blokeatuta + + version_status_open: irekita + version_status_locked: blokeatuta + version_status_closed: itxita + + field_active: Gaituta + + text_select_mail_notifications: Jakinarazpenak zein ekintzetarako bidaliko diren hautatu. + text_regexp_info: adib. ^[A-Z0-9]+$ + text_min_max_length_info: 0k mugarik gabe esan nahi du + text_project_destroy_confirmation: Ziur zaude proiektu hau eta erlazionatutako datu guztiak ezabatu nahi dituzula? + text_subprojects_destroy_warning: "%{value} azpiproiektuak ere ezabatuko dira." + text_workflow_edit: Hautatu rola eta aztarnaria workflow-a editatzeko + text_are_you_sure: Ziur zaude? + text_journal_changed: "%{label} %{old}-(e)tik %{new}-(e)ra aldatuta" + text_journal_set_to: "%{label}-k %{value} balioa hartu du" + text_journal_deleted: "%{label} ezabatuta (%{old})" + text_journal_added: "%{label} %{value} gehituta" + text_tip_issue_begin_day: gaur hasten diren zereginak + text_tip_issue_end_day: gaur bukatzen diren zereginak + text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak + text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
    Gorde eta gero identifikadorea ezin da aldatu.' + text_caracters_maximum: "%{count} karaktere gehienez." + text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du." + text_length_between: "Luzera %{min} eta %{max} karaktereen artekoa." + text_tracker_no_workflow: Ez da workflow-rik definitu aztarnari honentzako + text_unallowed_characters: Debekatutako karaktereak + text_comma_separated: Balio anitz izan daitezke (komaz banatuta). + text_line_separated: Balio anitz izan daitezke (balio bakoitza lerro batean). + text_issues_ref_in_commit_messages: Commit-en mezuetan zereginak erlazionatu eta konpontzen + text_issue_added: "%{id} zeregina %{author}-(e)k jakinarazi du." + text_issue_updated: "%{id} zeregina %{author}-(e)k eguneratu du." + text_wiki_destroy_confirmation: Ziur zaude wiki hau eta bere eduki guztiak ezabatu nahi dituzula? + text_issue_category_destroy_question: "Zeregin batzuk (%{count}) kategoria honetara esleituta daude. Zer egin nahi duzu?" + text_issue_category_destroy_assignments: Kategoria esleipenak kendu + text_issue_category_reassign_to: Zereginak kategoria honetara esleitu + text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)." + text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu." + text_load_default_configuration: Lehenetsitako konfigurazioa kargatu + text_status_changed_by_changeset: "%{value} aldaketan aplikatuta." + text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?' + text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:' + text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta + text_file_repository_writable: Eranskinen direktorioan idatz daiteke + text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke + text_rmagick_available: RMagick eskuragarri (aukerazkoa) + text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?" + text_destroy_time_entries: Ezabatu berri emandako orduak + text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu + text_reassign_time_entries: 'Berri emandako orduak zeregin honetara esleitu:' + text_user_wrote: "%{value}-(e)k idatzi zuen:" + text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude." + text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:' + text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." + text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira." + text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.' + text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko' + text_wiki_page_destroy_question: "Orri honek %{descendants} orri seme eta ondorengo ditu. Zer egin nahi duzu?" + text_wiki_page_nullify_children: "Orri semeak erro orri moduan mantendu" + text_wiki_page_destroy_children: "Orri semeak eta beraien ondorengo guztiak ezabatu" + text_wiki_page_reassign_children: "Orri semeak orri guraso honetara esleitu" + text_own_membership_delete_confirmation: "Zure baimen batzuk (edo guztiak) kentzera zoaz eta baliteke horren ondoren proiektu hau ezin editatzea.\n Ziur zaude jarraitu nahi duzula?" + + default_role_manager: Kudeatzailea + default_role_developer: Garatzailea + default_role_reporter: Berriemailea + default_tracker_bug: Errorea + default_tracker_feature: Eginbidea + default_tracker_support: Laguntza + default_issue_status_new: Berria + default_issue_status_in_progress: Lanean + default_issue_status_resolved: Ebatzita + default_issue_status_feedback: Berrelikadura + default_issue_status_closed: Itxita + default_issue_status_rejected: Baztertua + default_doc_category_user: Erabiltzaile dokumentazioa + default_doc_category_tech: Dokumentazio teknikoa + default_priority_low: Baxua + default_priority_normal: Normala + default_priority_high: Altua + default_priority_urgent: Larria + default_priority_immediate: Berehalakoa + default_activity_design: Diseinua + default_activity_development: Garapena + + enumeration_issue_priorities: Zeregin lehentasunak + enumeration_doc_categories: Dokumentu kategoriak + enumeration_activities: Jarduerak (denbora kontrola)) + enumeration_system_activity: Sistemako Jarduera + label_board_sticky: Itsaskorra + label_board_locked: Blokeatuta + permission_export_wiki_pages: Wiki orriak esportatu + setting_cache_formatted_text: Formatudun testua katxeatu + permission_manage_project_activities: Proiektuaren jarduerak kudeatu + error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu + label_profile: Profila + permission_manage_subtasks: Azpiatazak kudeatu + field_parent_issue: Zeregin gurasoa + label_subtask_plural: Azpiatazak + label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali + error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu + error_unable_to_connect: Ezin da konektatu (%{value}) + error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu. + error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu. + field_principal: Ekintzaile + label_my_page_block: "Nire orriko blokea" + notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}." + text_zoom_out: Zooma txikiagotu + text_zoom_in: Zooma handiagotu + notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu." + label_overall_spent_time: Igarotako denbora guztira + field_time_entries: "Denbora erregistratu" + project_module_gantt: Gantt + project_module_calendar: Egutegia + button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}" + text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?" + field_text: Testu eremua + label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik" + setting_default_notification_option: "Lehenetsitako ohartarazpen aukera" + label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik" + label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik" + label_user_mail_option_none: "Gertakaririk ez" + field_member_of_group: "Esleituta duenaren taldea" + field_assigned_to_role: "Esleituta duenaren rola" + notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da." + label_principal_search: "Bilatu erabiltzaile edo taldea:" + label_user_search: "Erabiltzailea bilatu:" + field_visible: Ikusgai + setting_emails_header: "Eposten goiburua" + setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera" + text_time_logged_by_changeset: "%{value} aldaketan egindakoa." + setting_commit_logtime_enabled: "Erregistrutako denbora gaitu" + notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max}) + setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa" + field_warn_on_leaving_unsaved: Gorde gabeko testua duen orri batetik ateratzen naizenean ohartarazi + text_warn_on_leaving_unsaved: Uneko orritik joaten bazara gorde gabeko testua galduko da. + label_my_queries: Nire galdera pertsonalizatuak + text_journal_changed_no_detail: "%{label} eguneratuta" + label_news_comment_added: Berri batera iruzkina gehituta + button_expand_all: Guztia zabaldu + button_collapse_all: Guztia tolestu + label_additional_workflow_transitions_for_assignee: Erabiltzaileak esleitua duenean baimendutako transtsizio gehigarriak + label_additional_workflow_transitions_for_author: Erabiltzailea egilea denean baimendutako transtsizio gehigarriak + label_bulk_edit_selected_time_entries: Hautatutako denbora egunkariak batera editatu + text_time_entries_destroy_confirmation: Ziur zaude hautatutako denbora egunkariak ezabatu nahi dituzula? + label_role_anonymous: Ezezaguna + label_role_non_member: Ez kidea + label_issue_note_added: Oharra gehituta + label_issue_status_updated: Egoera eguneratuta + label_issue_priority_updated: Lehentasuna eguneratuta + label_issues_visibility_own: Erabiltzaileak sortu edo esleituta dituen zereginak + field_issues_visibility: Zeregin ikusgarritasuna + label_issues_visibility_all: Zeregin guztiak + permission_set_own_issues_private: Nork bere zereginak publiko edo pribatu jarri + field_is_private: Pribatu + permission_set_issues_private: Zereginak publiko edo pribatu jarri + label_issues_visibility_public: Pribatu ez diren zeregin guztiak + text_issues_destroy_descendants_confirmation: Honek %{count} azpiataza ezabatuko ditu baita ere. + field_commit_logs_encoding: Commit-en egunkarien kodetzea + field_scm_path_encoding: Bidearen kodeketa + text_scm_path_encoding_note: "Lehentsita: UTF-8" + field_path_to_repository: Biltegirako bidea + field_root_directory: Erro direktorioa + field_cvs_module: Modulua + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Biltegi locala (adib. /hgrepo, c:\hgrepo) + text_scm_command: Komandoa + text_scm_command_version: Bertsioa + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/fa.yml.svn-base --- a/config/locales/.svn/text-base/fa.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/fa.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -17,16 +17,19 @@ month_names: [~, ژانویه, فوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] abbr_month_names: [~, ژان, فور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: - default: "%Y/%m/%d %p %I:%M" - time: "%p %I:%M" + default: "%Y/%m/%d - %H:%M" + time: "%H:%M" short: "%d %b %H:%M" - long: "%B %d, %Y %H:%M" - am: "ق.ظ" - pm: "ب.ظ" + long: "%d %B %Y ساعت %H:%M" + am: "صبح" + pm: "عصر" datetime: distance_in_words: @@ -207,7 +210,7 @@ gui_validation_error_plural: "%{count} ایراد" field_name: نام - field_description: توضیح + field_description: یادداشت field_summary: خلاصه field_is_required: الزامی field_firstname: نام کوچک @@ -231,7 +234,7 @@ field_project: پروژه field_issue: پیامد field_status: وضعیت - field_notes: یادداشت‌ها + field_notes: یادداشت field_is_closed: پیامد بسته شده field_is_default: مقدار پیش‌گزیده field_tracker: پیگرد @@ -246,7 +249,7 @@ field_homepage: برگه خانه field_is_public: همگانی field_parent: پروژه پدر - field_is_in_roadmap: این پیامدها در نقشه راه نشان داده شوند + field_is_in_roadmap: این پیامدها در چشم‌انداز نشان داده شوند field_login: ورود field_mail_notification: آگاه سازی‌های ایمیلی field_admin: سرپرست @@ -276,7 +279,7 @@ field_start_page: برگه آغاز field_subproject: زیر پروژه field_hours: ساعت‌ - field_activity: فعالیت + field_activity: گزارش field_spent_on: در تاریخ field_identifier: شناسه field_is_filter: پالایش پذیر @@ -330,13 +333,12 @@ setting_cross_project_issue_relations: توانایی وابستگی میان پروژه‌ای پیامدها setting_issue_list_default_columns: ستون‌های پیش‌گزیده نمایش داده شده در فهرست پیامدها setting_repositories_encodings: کدگذاری انباره‌ها - setting_commit_logs_encoding: کدگذاری پیام‌های انباره setting_emails_header: سرنویس ایمیل‌ها setting_emails_footer: پانویس ایمیل‌ها setting_protocol: پیوندنامه setting_per_page_options: گزینه‌های اندازه داده‌های هر برگ setting_user_format: قالب نمایشی کاربران - setting_activity_days_default: روزهای نمایش داده شده در فعالیت پروژه + setting_activity_days_default: روزهای نمایش داده شده در گزارش پروژه setting_display_subprojects_issues: پیش‌گزیده نمایش پیامدهای زیرپروژه در پروژه پدر setting_enabled_scm: فعالسازی SCM setting_mail_handler_body_delimiters: "بریدن ایمیل‌ها پس از یکی از این ردیف‌ها" @@ -360,7 +362,7 @@ setting_cache_formatted_text: نهان سازی نوشته‌های قالب بندی شده setting_default_notification_option: آگاه سازی پیش‌گزیده setting_commit_logtime_enabled: فعالسازی زمان گذاشته شده - setting_commit_logtime_activity_id: فعالیت زمان گذاشته شده + setting_commit_logtime_activity_id: کار زمان گذاشته شده setting_gantt_items_limit: بیشترین شمار بخش‌های نمایش داده شده در نمودار گانت permission_add_project: ساخت پروژه @@ -368,15 +370,15 @@ permission_edit_project: ویرایش پروژه permission_select_project_modules: گزینش پیمانه‌های پروژه permission_manage_members: سرپرستی اعضا - permission_manage_project_activities: سرپرستی فعالیت‌های پروژه + permission_manage_project_activities: سرپرستی کارهای پروژه permission_manage_versions: سرپرستی نگارش‌ها permission_manage_categories: سرپرستی دسته‌های پیامد permission_view_issues: دیدن پیامدها permission_add_issues: افزودن پیامدها permission_edit_issues: ویرایش پیامدها permission_manage_issue_relations: سرپرستی وابستگی پیامدها - permission_add_issue_notes: افزودن یادداشت‌ها - permission_edit_issue_notes: ویرایش یادداشت‌ها + permission_add_issue_notes: افزودن یادداشت + permission_edit_issue_notes: ویرایش یادداشت permission_edit_own_issue_notes: ویرایش یادداشت خود permission_move_issues: جابجایی پیامدها permission_delete_issues: پاک کردن پیامدها @@ -447,7 +449,7 @@ label_issue_new: پیامد تازه label_issue_plural: پیامد label_issue_view_all: دیدن همه پیامدها - label_issues_by: "پیامدهای دست%{value}" + label_issues_by: "دسته‌بندی پیامدها با %{value}" label_issue_added: پیامد افزوده شد label_issue_updated: پیامد بروز شد label_document: نوشتار @@ -495,9 +497,9 @@ label_assigned_to_me_issues: پیامدهای واگذار شده به من label_last_login: آخرین ورود label_registered_on: نام نویسی شده در - label_activity: فعالیت - label_overall_activity: فعالیت روی هم رفته - label_user_activity: "فعالیت %{value}" + label_activity: گزارش + label_overall_activity: گزارش روی هم رفته + label_user_activity: "گزارش %{value}" label_new: تازه label_logged_as: "نام کاربری:" label_environment: محیط @@ -537,7 +539,7 @@ label_news_view_all: دیدن همه رویدادها label_news_added: رویداد افزوده شد label_settings: پیکربندی - label_overview: دورنما + label_overview: در یک نگاه label_version: نگارش label_version_new: نگارش تازه label_version_plural: نگارش @@ -644,7 +646,7 @@ label_sort_higher: بردن به بالا label_sort_lower: بردن به پایین label_sort_lowest: بردن به پایان - label_roadmap: نقشه راه + label_roadmap: چشم‌انداز label_roadmap_due_in: "سررسید در %{value}" label_roadmap_overdue: "%{value} دیرکرد" label_roadmap_no_issues: هیچ پیامدی برای این نگارش نیست @@ -754,7 +756,7 @@ label_plugins: افزونه‌ها label_ldap_authentication: شناساییLDAP label_downloads_abbr: دریافت - label_optional_description: توضیح اختیاری + label_optional_description: یادداشت دلخواه label_add_another_file: افزودن پرونده دیگر label_preferences: پسندها label_chronological_order: به ترتیب تاریخ @@ -933,13 +935,47 @@ enumeration_issue_priorities: برتری‌های پیامد enumeration_doc_categories: دسته‌های نوشتار - enumeration_activities: فعالیت‌ها (پیگیری زمان) - enumeration_system_activity: فعالیت سامانه + enumeration_activities: کارها (پیگیری زمان) + enumeration_system_activity: کار سامانه - text_tip_issue_begin_day: issue beginning this day - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_tip_issue_begin_end_day: issue beginning and ending this day - text_tip_issue_end_day: issue ending this day - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + text_tip_issue_begin_day: پیامد در این روز آغاز می‌شود + field_warn_on_leaving_unsaved: هنگام ترک برگه‌ای که نوشته‌های آن نگهداری نشده، به من هشدار بده + text_tip_issue_begin_end_day: پیامد در این روز آغاز می‌شود و پایان می‌پذیرد + text_tip_issue_end_day: پیامد در این روز پایان می‌پذیرد + text_warn_on_leaving_unsaved: این برگه دارای نوشته‌های نگهداری نشده است که اگر آن را ترک کنید، از میان می‌روند. + label_my_queries: جستارهای سفارشی من + text_journal_changed_no_detail: "%{label} بروز شد" + label_news_comment_added: دیدگاه به یک رویداد افزوده شد + button_expand_all: باز کردن همه + button_collapse_all: بستن همه + label_additional_workflow_transitions_for_assignee: زمانی که به کاربر واگذار شده، گذارهای بیشتر پذیرفته می‌شود + label_additional_workflow_transitions_for_author: زمانی که کاربر نویسنده است، گذارهای بیشتر پذیرفته می‌شود + label_bulk_edit_selected_time_entries: ویرایش دسته‌ای زمان‌های گزارش شده گزینش شده + text_time_entries_destroy_confirmation: آیا می‌خواهید زمان‌های گزارش شده گزینش شده پاک شوند؟ + label_role_anonymous: ناشناس + label_role_non_member: غیر عضو + label_issue_note_added: یادداشت افزوده شد + label_issue_status_updated: وضعیت بروز شد + label_issue_priority_updated: برتری بروز شد + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: کدگذاری پیام‌های انباره + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/fi.yml.svn-base --- a/config/locales/.svn/text-base/fi.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/fi.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -13,7 +13,10 @@ abbr_day_names: [Su, Ma, Ti, Ke, To, Pe, La] month_names: [~, Tammikuu, Helmikuu, Maaliskuu, Huhtikuu, Toukokuu, Kesäkuu, Heinäkuu, Elokuu, Syyskuu, Lokakuu, Marraskuu, Joulukuu] abbr_month_names: [~, Tammi, Helmi, Maalis, Huhti, Touko, Kesä, Heinä, Elo, Syys, Loka, Marras, Joulu] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -159,7 +162,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-15 - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Tilin päivitys onnistui. @@ -263,7 +266,7 @@ field_attr_mail: Sähköpostinmääre field_onthefly: Automaattinen käyttäjien luonti field_start_date: Alku - field_done_ratio: % Tehty + field_done_ratio: "% Tehty" field_auth_source: Varmennusmuoto field_hide_mail: Piiloita sähköpostiosoitteeni field_comments: Kommentti @@ -755,7 +758,6 @@ label_issue_watchers: Tapahtuman seuraajat button_quote: Vastaa setting_sequential_project_identifiers: Luo peräkkäiset projektien tunnisteet - setting_commit_logs_encoding: Tee viestien koodaus notice_unable_delete_version: Version poisto epäonnistui label_renamed: uudelleennimetty label_copied: kopioitu @@ -961,3 +963,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Tee viestien koodaus + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/fr.yml.svn-base --- a/config/locales/.svn/text-base/fr.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/fr.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -17,7 +17,10 @@ abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam] month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre] abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -151,7 +154,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Le compte a été mis à jour avec succès. @@ -275,7 +278,7 @@ field_attr_mail: Attribut Email field_onthefly: Création des utilisateurs à la volée field_start_date: Début - field_done_ratio: % réalisé + field_done_ratio: "% réalisé" field_auth_source: Mode d'authentification field_hide_mail: Cacher mon adresse mail field_comments: Commentaire @@ -308,7 +311,10 @@ field_parent_issue: Tâche parente field_visible: Visible field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardé" - + field_issues_visibility: Visibilité des demandes + field_is_private: Privée + field_commit_logs_encoding: Encodage des messages de commit + setting_app_title: Titre de l'application setting_app_subtitle: Sous-titre de l'application setting_welcome_text: Texte d'accueil @@ -335,7 +341,6 @@ setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes setting_repositories_encodings: Encodages des dépôts - setting_commit_logs_encoding: Encodage des messages de commit setting_emails_footer: Pied-de-page des emails setting_protocol: Protocole setting_per_page_options: Options d'objets affichés par page @@ -377,6 +382,8 @@ permission_add_issues: Créer des demandes permission_edit_issues: Modifier les demandes permission_manage_issue_relations: Gérer les relations + permission_set_issues_private: Rendre les demandes publiques ou privées + permission_set_own_issues_private: Rendre ses propres demandes publiques ou privées permission_add_issue_notes: Ajouter des notes permission_edit_issue_notes: Modifier les notes permission_edit_own_issue_notes: Modifier ses propres notes @@ -462,6 +469,8 @@ label_role_plural: Rôles label_role_new: Nouveau rôle label_role_and_permissions: Rôles et permissions + label_role_anonymous: Anonyme + label_role_non_member: Non membre label_member: Membre label_member_new: Nouveau membre label_member_plural: Membres @@ -540,6 +549,7 @@ label_news_latest: Dernières annonces label_news_view_all: Voir toutes les annonces label_news_added: Annonce ajoutée + label_news_comment_added: Commentaire ajouté à une annonce label_settings: Configuration label_overview: Aperçu label_version: Version @@ -786,12 +796,19 @@ label_project_copy_notifications: Envoyer les notifications durant la copie du projet label_principal_search: "Rechercher un utilisateur ou un groupe :" label_user_search: "Rechercher un utilisateur :" + label_additional_workflow_transitions_for_author: Autorisations supplémentaires lorsque l'utilisateur a créé la demande + label_additional_workflow_transitions_for_assignee: Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur + label_issues_visibility_all: Toutes les demandes + label_issues_visibility_public: Toutes les demandes non privées + label_issues_visibility_own: Demandes créées par ou assignées à l'utilisateur button_login: Connexion button_submit: Soumettre button_save: Sauvegarder button_check_all: Tout cocher button_uncheck_all: Tout décocher + button_collapse_all: Plier tout + button_expand_all: Déplier tout button_delete: Supprimer button_create: Créer button_create_and_continue: Créer et continuer @@ -869,7 +886,8 @@ text_load_default_configuration: Charger le paramétrage par défaut text_status_changed_by_changeset: "Appliqué par commit %{value}." text_time_logged_by_changeset: "Appliqué par commit %{value}" - text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer le(s) demandes(s) selectionnée(s) ?' + text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer la ou les demandes(s) selectionnée(s) ?' + text_issues_destroy_descendants_confirmation: "Cela entrainera également la suppression de %{count} sous-tâche(s)." text_select_project_modules: 'Sélectionner les modules à activer pour ce projet :' text_default_administrator_account_changed: Compte administrateur par défaut changé text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture @@ -944,7 +962,7 @@ text_zoom_in: Zoom avant notice_unable_delete_time_entry: Impossible de supprimer le temps passé. label_overall_spent_time: Temps passé global - field_time_entries: Log time + field_time_entries: Temps passé project_module_gantt: Gantt project_module_calendar: Calendrier button_edit_associated_wikipage: "Modifier la page wiki associée: %{page_title}" @@ -957,4 +975,19 @@ label_user_mail_option_none: Aucune notification field_member_of_group: Groupe de l'assigné field_assigned_to_role: Rôle de l'assigné - setting_emails_header: Emails header + setting_emails_header: En-tête des emails + label_bulk_edit_selected_time_entries: Modifier les temps passés sélectionnées + text_time_entries_destroy_confirmation: "Etes-vous sûr de vouloir supprimer les temps passés sélectionnés ?" + field_scm_path_encoding: Encodage des chemins + text_scm_path_encoding_note: "Défaut : UTF-8" + field_path_to_repository: Chemin du dépôt + field_root_directory: Répertoire racine + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: "Dépôt nu (bare) et local (exemples : /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "Dépôt local (exemples : /hgrepo, c:\hgrepo)" + text_scm_command: Commande + text_scm_command_version: Version + label_git_report_last_commit: Afficher le dernier commit des fichiers et répertoires + text_scm_config: Vous pouvez configurer les commandes des SCM dans config/configuration.yml. Redémarrer l'application après modification. + text_scm_command_not_available: Ce SCM n'est pas disponible. Vérifier les paramètres dans la section administration. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/gl.yml.svn-base --- a/config/locales/.svn/text-base/gl.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/gl.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -55,7 +55,10 @@ abbr_day_names: [Dom, Lun, Mar, Mer, Xov, Ven, Sab] month_names: [~, Xaneiro, Febreiro, Marzo, Abril, Maio, Xunio, Xullo, Agosto, Setembro, Outubro, Novembro, Decembro] abbr_month_names: [~, Xan, Feb, Maz, Abr, Mai, Xun, Xul, Ago, Set, Out, Nov, Dec] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -241,7 +244,7 @@ field_default_value: Estado por defecto field_delay: Retraso field_description: Descrición - field_done_ratio: % Realizado + field_done_ratio: "% Realizado" field_downloads: Descargas field_due_date: Data fin field_effective_date: Data @@ -310,7 +313,7 @@ general_csv_separator: ';' general_first_day_of_week: '1' general_lang_name: 'Galego' - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_text_No: 'Non' general_text_Yes: 'Si' general_text_no: 'non' @@ -654,7 +657,7 @@ notice_default_data_loaded: Configuración por defecto cargada correctamente. notice_email_error: "Ocorreu un error enviando o correo (%{value})" notice_email_sent: "Enviouse un correo a %{value}" - notice_failed_to_save_issues: "Imposible gravar %s petición(s) en %{count} seleccionado: %{ids}." + notice_failed_to_save_issues: "Imposible gravar %{count} petición(s) de %{total} seleccionada(s): %{ids}." notice_feeds_access_key_reseted: A súa clave de acceso para RSS reiniciouse. notice_file_not_found: A páxina á que tenta acceder non existe. notice_locking_conflict: Os datos modificáronse por outro usuario. @@ -729,7 +732,6 @@ setting_autologin: Conexión automática setting_bcc_recipients: Ocultar as copias de carbón (bcc) setting_commit_fix_keywords: Palabras clave para a corrección - setting_commit_logs_encoding: Codificación das mensaxes de commit setting_commit_ref_keywords: Palabras clave para a referencia setting_cross_project_issue_relations: Permitir relacionar peticións de distintos proxectos setting_date_format: Formato da data @@ -952,3 +954,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificación das mensaxes de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/he.yml.svn-base --- a/config/locales/.svn/text-base/he.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/he.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -15,7 +15,10 @@ abbr_day_names: ["א'", "ב'", "ג'", "ד'", "ה'", "ו'", "ש'"] month_names: [~, ינואר, פברואר, מרץ, אפריל, מאי, יוני, יולי, אוגוסט, ספטמבר, אוקטובר, נובמבר, דצמבר] abbr_month_names: [~, יאנ, פבר, מרץ, אפר, מאי, יונ, יול, אוג, ספט, אוק, נוב, דצמ] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -139,7 +142,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-8 - general_pdf_encoding: ISO-8859-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: החשבון עודכן בהצלחה! @@ -163,7 +166,7 @@ notice_email_error: "ארעה שגיאה בעת שליחת הדואל (%{value})" notice_feeds_access_key_reseted: מפתח ה־RSS שלך אופס. notice_api_access_key_reseted: מפתח הגישה שלך ל־API אופס. - notice_failed_to_save_issues: "נכשרת בשמירת %{count} נושא\ים ב %{total} נבחרו: %{ids}." + notice_failed_to_save_issues: "נכשרת בשמירת %{count} נושאים ב %{total} נבחרו: %{ids}." notice_failed_to_save_members: "כשלון בשמירת חבר(ים): %{errors}." notice_no_issue_selected: "לא נבחר אף נושא! בחר בבקשה את הנושאים שברצונך לערוך." notice_account_pending: "החשבון שלך נוצר ועתה מחכה לאישור מנהל המערכת." @@ -271,7 +274,7 @@ field_attr_mail: תכונת דוא"ל field_onthefly: יצירת משתמשים זריזה field_start_date: תאריך התחלה - field_done_ratio: % גמור + field_done_ratio: "% גמור" field_auth_source: מקור הזדהות field_hide_mail: החבא את כתובת הדוא"ל שלי field_comments: הערות @@ -330,7 +333,6 @@ setting_cross_project_issue_relations: הרשה קישור נושאים בין פרויקטים setting_issue_list_default_columns: עמודות ברירת מחדל המוצגות ברשימת הנושאים setting_repositories_encodings: קידוד המאגרים - setting_commit_logs_encoding: קידוד הודעות הפקדה setting_emails_footer: תחתית דוא"ל setting_protocol: פרוטוקול setting_per_page_options: אפשרויות אוביקטים לפי דף @@ -846,7 +848,7 @@ text_regexp_info: כגון. ^[A-Z0-9]+$ text_min_max_length_info: 0 משמעו ללא הגבלות text_project_destroy_confirmation: האם אתה בטוח שברצונך למחוק את הפרויקט ואת כל המידע הקשור אליו? - text_subprojects_destroy_warning: "תת־הפרויקט\ים: %{value} ימחקו גם כן." + text_subprojects_destroy_warning: "תת־הפרויקטים: %{value} ימחקו גם כן." text_workflow_edit: בחר תפקיד וסיווג כדי לערוך את זרימת העבודה text_are_you_sure: האם אתה בטוח? text_are_you_sure_with_children: האם למחוק את הנושא ואת כל בניו? @@ -876,7 +878,7 @@ text_no_configuration_data: "לא הוגדרה תצורה עבור תפקידים, סיווגים, מצבי נושא וזרימת עבודה.\nמומלץ מאד לטעון את תצורת ברירת המחדל. תוכל לשנותה מאוחר יותר." text_load_default_configuration: טען את אפשרויות ברירת המחדל text_status_changed_by_changeset: "הוחל בסדרת השינויים %{value}." - text_issues_destroy_confirmation: 'האם אתה בטוח שברצונך למחוק את הנושא\ים?' + text_issues_destroy_confirmation: 'האם אתה בטוח שברצונך למחוק את הנושאים?' text_select_project_modules: 'בחר מודולים להחיל על פרויקט זה:' text_default_administrator_account_changed: מנהל המערכת ברירת המחדל שונה text_file_repository_writable: מאגר הקבצים ניתן לכתיבה @@ -945,3 +947,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: קידוד הודעות הפקדה + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/hr.yml.svn-base --- a/config/locales/.svn/text-base/hr.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/hr.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -19,7 +19,10 @@ month_names: [~, Sijecanj, Veljaca, Ožujak, Travanj, Svibanj, Lipanj, Srpanj, Kolovoz, Rujan, Listopad, Studeni, Prosinac] abbr_month_names: [~, Sij, Velj, Ožu, Tra, Svi, Lip, Srp, Kol, Ruj, List, Stu, Pro] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -132,8 +135,8 @@ general_lang_name: 'Hrvatski' general_csv_separator: ',' general_csv_decimal_separator: '.' - general_csv_encoding: utf8 - general_pdf_encoding: utf8 + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: Vaš profil je uspješno promijenjen. @@ -258,7 +261,7 @@ field_attr_mail: Atribut e-pošte field_onthefly: "Izrada korisnika \"u hodu\"" field_start_date: Pocetak - field_done_ratio: % Učinjeno + field_done_ratio: "% Učinjeno" field_auth_source: Vrsta prijavljivanja field_hide_mail: Sakrij moju adresu e-pošte field_comments: Komentar @@ -313,7 +316,6 @@ setting_cross_project_issue_relations: Dozvoli povezivanje predmeta izmedu različitih projekata setting_issue_list_default_columns: Stupci prikazani na listi predmeta setting_repositories_encodings: Kodna stranica - setting_commit_logs_encoding: Commit messages encoding setting_emails_footer: Zaglavlje e-pošte setting_protocol: Protokol setting_per_page_options: Objekata po stranici opcija @@ -947,3 +949,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/hu.yml.svn-base --- a/config/locales/.svn/text-base/hu.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/hu.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ abbr_day_names: [v., h., k., sze., cs., p., szo.] month_names: [~, január, február, március, április, május, június, július, augusztus, szeptember, október, november, december] abbr_month_names: [~, jan., febr., márc., ápr., máj., jún., júl., aug., szept., okt., nov., dec.] - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -155,7 +158,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-2 - general_pdf_encoding: ISO-8859-2 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: A fiók adatai sikeresen frissítve. @@ -751,7 +754,6 @@ text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/configuration.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." field_parent_title: Szülő oldal label_issue_watchers: Megfigyelők - setting_commit_logs_encoding: Commit üzenetek kódlapja button_quote: Hozzászólás / Idézet setting_sequential_project_identifiers: Szekvenciális projekt azonosítók generálása notice_unable_delete_version: A verziót nem lehet törölni @@ -931,31 +933,65 @@ text_zoom_out: Kicsinyít text_zoom_in: Nagyít notice_unable_delete_time_entry: Az időrögzítés nem törölhető - label_overall_spent_time: Összes rászánt idő - field_time_entries: Log time + label_overall_spent_time: Összes ráfordított idő + field_time_entries: Idő rögzítés project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + project_module_calendar: Naptár + button_edit_associated_wikipage: "Hozzárendelt Wiki oldal szerkesztése: %{page_title}" + text_are_you_sure_with_children: A feladat törlése az összes alfeladattal együtt? + field_text: Szöveg mező + label_user_mail_option_only_owner: Csak arról, aminek én vagyok a tulajdonosa + setting_default_notification_option: Alapértelmezett értesítési beállítások + label_user_mail_option_only_my_events: Csak az általam megfigyelt dolgokról vagy amiben részt veszek + label_user_mail_option_only_assigned: Csak a hozzámrendelt dolgokról + label_user_mail_option_none: Semilyen eseményről + field_member_of_group: Hozzárendelt csoport + field_assigned_to_role: Hozzárendelt szerepkör + notice_not_authorized_archived_project: A projekt, amihez hozzá szeretnél férni archiválva lett. + label_principal_search: "Felhasználó vagy csoport keresése:" + label_user_search: "Felhasználó keresése:" + field_visible: Látható + setting_emails_header: Emailek fejléce + setting_commit_logtime_activity_id: A rögzített időhöz tartozó tevékenység + text_time_logged_by_changeset: Alkalmazva a %{value} changeset-ben. + setting_commit_logtime_enabled: Időrögzítés engedélyezése + notice_gantt_chart_truncated: A diagram le lett vágva, mert elérte a maximálisan megjeleníthető elemek számát (%{max}) + setting_gantt_items_limit: A gantt diagrammon megjeleníthető maximális elemek száma + field_warn_on_leaving_unsaved: Figyelmeztessen, nem mentett módosításokat tartalmazó oldal elhagyásakor + text_warn_on_leaving_unsaved: A jelenlegi oldal nem mentett módosításokat tartalmaz, ami elvész, ha elhagyja az oldalt. + label_my_queries: Egyéni lekérdezéseim + text_journal_changed_no_detail: "%{label} módosítva" + label_news_comment_added: Megjegyzés hozzáadva a hírhez + button_expand_all: Mindet kibont + button_collapse_all: Mindet összecsuk + label_additional_workflow_transitions_for_assignee: További átmenetek engedélyezettek, ha a felhasználó a hozzárendelt + label_additional_workflow_transitions_for_author: További átmenetek engedélyezettek, ha a felhasználó a szerző + label_bulk_edit_selected_time_entries: A kiválasztott idő bejegyzések csoportos szerkesztése + text_time_entries_destroy_confirmation: Biztos benne, hogy törölni szeretné a kiválasztott idő bejegyzés(eke)t? + label_role_anonymous: Anonymous + label_role_non_member: Nem tag + label_issue_note_added: Jegyzet hozzáadva + label_issue_status_updated: Állapot módosítva + label_issue_priority_updated: Prioritás módosítva + label_issues_visibility_own: A felhasználó által létrehozott vagy hozzárendelt feladatok + field_issues_visibility: Feladatok láthatósága + label_issues_visibility_all: Minden feladat + permission_set_own_issues_private: Saját feladatok beállítása nyilvánosra vagy privátra + field_is_private: Privát + permission_set_issues_private: Feladatok beállítása nyilvánosra vagy privátra + label_issues_visibility_public: Minden nem privát feladat + text_issues_destroy_descendants_confirmation: Ezzel törölni fog %{count} alfeladatot is. + field_commit_logs_encoding: Commit üzenetek kódlapja + field_scm_path_encoding: Elérési útvonal kódlapja + text_scm_path_encoding_note: "Alapértelmezett: UTF-8" + field_path_to_repository: A repository elérési útja + field_root_directory: Gyökér könyvtár + field_cvs_module: Modul + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Helyi repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Parancs + text_scm_command_version: Verzió + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/id.yml.svn-base --- a/config/locales/.svn/text-base/id.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/id.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -14,7 +14,10 @@ month_names: [~, Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] abbr_month_names: [~, Jan, Feb, Mar, Apr, Mei, Jun, Jul, Agu, Sep, Okt, Nov, Des] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -135,7 +138,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: Akun sudah berhasil diperbarui. @@ -256,7 +259,7 @@ field_attr_mail: Atribut email field_onthefly: Pembuatan pengguna seketika field_start_date: Mulai - field_done_ratio: % Selesai + field_done_ratio: "% Selesai" field_auth_source: Mode otentikasi field_hide_mail: Sembunyikan email saya field_comments: Komentar @@ -312,7 +315,6 @@ setting_cross_project_issue_relations: Perbolehkan kaitan masalah proyek berbeda setting_issue_list_default_columns: Kolom default ditampilkan di daftar masalah setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding setting_emails_footer: Footer untuk email setting_protocol: Protokol setting_per_page_options: Pilihan obyek per halaman @@ -948,3 +950,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/it.yml.svn-base --- a/config/locales/.svn/text-base/it.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/it.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ abbr_day_names: [Dom, Lun, Mar, Mer, Gio, Ven, Sab] month_names: [~, Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] abbr_month_names: [~, Gen, Feb, Mar, Apr, Mag, Giu, Lug, Ago, Set, Ott, Nov, Dic] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -136,10 +139,10 @@ general_text_no: 'no' general_text_yes: 'sì' general_lang_name: 'Italiano' - general_csv_separator: ',' - general_csv_decimal_separator: '.' + general_csv_separator: ';' + general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: L'utente è stato aggiornato. @@ -234,7 +237,7 @@ field_attr_mail: Attributo email field_onthefly: Creazione utente "al volo" field_start_date: Inizio - field_done_ratio: % completato + field_done_ratio: "% completato" field_auth_source: Modalità di autenticazione field_hide_mail: Nascondi il mio indirizzo email field_comments: Commento @@ -733,7 +736,6 @@ text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/configuration.yml e riavvia l'applicazione per abilitarle." field_parent_title: Pagina principale label_issue_watchers: Osservatori - setting_commit_logs_encoding: Codifica dei messaggi di commit button_quote: Quota setting_sequential_project_identifiers: Genera progetti con identificativi in sequenza notice_unable_delete_version: Impossibile eliminare la versione @@ -941,3 +943,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codifica dei messaggi di commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/ja.yml.svn-base --- a/config/locales/.svn/text-base/ja.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/ja.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,4 +1,4 @@ -# Japanese translations for Ruby on Rails +# Japanese translations for Ruby on Rails # by Akira Matsuda (ronnie@dio.jp) # AR error messages are basically taken from Ruby-GetText-Package. Thanks to Masao Mutoh. @@ -12,15 +12,18 @@ default: "%Y/%m/%d" short: "%m/%d" long: "%Y年%m月%d日(%a)" - + day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日] abbr_day_names: [日, 月, 火, 水, 木, 金, 土] - + # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -30,7 +33,7 @@ long: "%Y年%m月%d日(%a) %H時%M分%S秒 %Z" am: "午前" pm: "午後" - + datetime: distance_in_words: half_a_minute: "30秒前後" @@ -105,13 +108,12 @@ gb: "GB" tb: "TB" - # Used in array.to_sentence. support: array: sentence_connector: "及び" skip_last_comma: true - + activerecord: errors: template: @@ -147,7 +149,7 @@ cant_link_an_issue_with_a_descendant: "指定したチケットとは親子関係になっているため関連づけられません" actionview_instancetag_blank_option: 選んでください - + general_text_No: 'いいえ' general_text_Yes: 'はい' general_text_no: 'いいえ' @@ -158,7 +160,7 @@ general_csv_encoding: CP932 general_pdf_encoding: CP932 general_first_day_of_week: '7' - + notice_account_updated: アカウントが更新されました。 notice_account_invalid_creditentials: ユーザ名もしくはパスワードが無効 notice_account_password_updated: パスワードが更新されました。 @@ -189,7 +191,7 @@ notice_unable_delete_time_entry: 作業時間を削除できません notice_issue_done_ratios_updated: チケットの進捗が更新されました。 notice_gantt_chart_truncated: ガントチャートは、最大表示項目数(%{max})を超えたたため切り捨てられました。 - + error_can_t_load_default_data: "デフォルト設定がロードできませんでした: %{value}" error_scm_not_found: リポジトリに、エントリ/リビジョンが存在しません。 error_scm_command_failed: "リポジトリへアクセスしようとしてエラーになりました: %{value}" @@ -207,9 +209,9 @@ error_workflow_copy_source: 'コピー元となるトラッカーまたはロールを選択してください' error_workflow_copy_target: 'コピー先となるトラッカーとロールを選択してください' error_can_not_delete_tracker: 'このトラッカーは使用されています。削除できません。' - + warning_attachments_not_saved: "%{count}個の添付ファイルが保存できませんでした。" - + mail_subject_lost_password: "%{value} パスワード再発行" mail_body_lost_password: 'パスワードを変更するには、以下のリンクをクリックしてください:' mail_subject_register: "%{value} アカウント登録の確認" @@ -224,10 +226,10 @@ mail_body_wiki_content_added: "%{author} によってWikiページ %{id} が追加されました。" mail_subject_wiki_content_updated: "Wikiページ %{id} が更新されました" mail_body_wiki_content_updated: "%{author} によってWikiページ %{id} が更新されました。" - + gui_validation_error: 1件のエラー gui_validation_error_plural: "%{count}件のエラー" - + field_name: 名称 field_description: 説明 field_summary: サマリー @@ -325,7 +327,14 @@ field_assigned_to_role: 担当者のロール field_text: テキスト field_visible: 表示 - + field_warn_on_leaving_unsaved: データを保存せずにページから移動するときに警告 + field_commit_logs_encoding: コミットメッセージのエンコーディング + field_scm_path_encoding: パスのエンコーディング + field_path_to_repository: リポジトリのパス + field_root_directory: ルートディレクトリ + field_cvsroot: CVSROOT + field_cvs_module: モジュール + setting_app_title: アプリケーションのタイトル setting_app_subtitle: アプリケーションのサブタイトル setting_welcome_text: ウェルカムメッセージ @@ -353,7 +362,6 @@ setting_cross_project_issue_relations: 異なるプロジェクトのチケット間で関係の設定を許可 setting_issue_list_default_columns: チケットの一覧で表示する項目 setting_repositories_encodings: リポジトリのエンコーディング - setting_commit_logs_encoding: コミットメッセージのエンコーディング setting_emails_header: メールのヘッダ setting_emails_footer: メールのフッタ setting_protocol: プロトコル @@ -384,7 +392,7 @@ setting_commit_logtime_enabled: コミット時に作業時間を記録する setting_commit_logtime_activity_id: 作業時間の作業分類 setting_gantt_items_limit: ガントチャート最大表示項目数 - + permission_add_project: プロジェクトの追加 permission_add_subprojects: サブプロジェクトの追加 permission_edit_project: プロジェクトの編集 @@ -440,7 +448,7 @@ permission_delete_messages: メッセージの削除 permission_delete_own_messages: 自身が記入したメッセージの削除 permission_manage_subtasks: 子チケットの管理 - + project_module_issue_tracking: チケットトラッキング project_module_time_tracking: 時間トラッキング project_module_news: ニュース @@ -451,7 +459,7 @@ project_module_boards: フォーラム project_module_gantt: ガントチャート project_module_calendar: カレンダー - + label_user: ユーザ label_user_plural: ユーザ label_user_new: 新しいユーザ @@ -469,7 +477,7 @@ label_issue: チケット label_issue_new: 新しいチケット label_issue_plural: チケット - label_issue_view_all: 全てのチケットを見る + label_issue_view_all: すべてのチケットを見る label_issues_by: "%{value} 別のチケット" label_issue_added: チケットが追加されました label_issue_updated: チケットが更新されました @@ -519,7 +527,7 @@ label_last_login: 最近の接続 label_registered_on: 登録日 label_activity: 活動 - label_overall_activity: 全ての活動 + label_overall_activity: すべての活動 label_user_activity: "%{value} の活動" label_new: 新しく作成 label_logged_as: ログイン中: @@ -557,8 +565,9 @@ label_news_new: ニュースを追加 label_news_plural: ニュース label_news_latest: 最新ニュース - label_news_view_all: 全てのニュースを見る + label_news_view_all: すべてのニュースを見る label_news_added: ニュースが追加されました + label_news_comment_added: ニュースにコメントが追加されました label_settings: 設定 label_overview: 概要 label_version: バージョン @@ -589,7 +598,7 @@ label_permissions: 権限 label_current_status: 現在のステータス label_new_statuses_allowed: ステータスの移行先 - label_all: 全て + label_all: すべて label_none: なし label_nobody: 無記名 label_next: 次 @@ -603,7 +612,7 @@ label_gantt: ガントチャート label_internal: 内部 label_last_changes: "最新の変更 %{count}件" - label_change_view_all: 全ての変更を見る + label_change_view_all: すべての変更を見る label_personalize_page: このページをパーソナライズする label_comment: コメント label_comment_plural: コメント @@ -617,6 +626,7 @@ label_query: カスタムクエリ label_query_plural: カスタムクエリ label_query_new: 新しいクエリ + label_my_queries: マイカスタムクエリ label_filter_add: フィルタ追加 label_filter_plural: フィルタ label_equals: 等しい @@ -629,13 +639,13 @@ label_today: 今日 label_all_time: 全期間 label_yesterday: 昨日 - label_this_week: この週 + label_this_week: 今週 label_last_week: 先週 - label_last_n_days: "最後の%{count}日間" + label_last_n_days: "直近%{count}日間" label_this_month: 今月 label_last_month: 先月 label_this_year: 今年 - label_date_range: 日付の範囲 + label_date_range: 期間 label_less_than_ago: が今日より○日前以降 label_more_than_ago: が今日より○日前以前 label_ago: 日前 @@ -661,7 +671,7 @@ label_latest_revision: 最新リビジョン label_latest_revision_plural: 最新リビジョン label_view_revisions: リビジョンを見る - label_view_all_revisions: 全てのリビジョンを見る + label_view_all_revisions: すべてのリビジョンを見る label_max_size: 最大サイズ label_sort_highest: 一番上へ label_sort_higher: 上へ @@ -687,7 +697,7 @@ label_changes_details: 全変更の詳細 label_issue_tracking: チケットトラッキング label_spent_time: 作業時間の記録 - label_overall_spent_time: 全ての作業時間の記録 + label_overall_spent_time: すべての作業時間の記録 label_f_hour: "%{value}時間" label_f_hour_plural: "%{value}時間" label_time_tracking: 時間トラッキング @@ -758,8 +768,8 @@ label_theme: テーマ label_default: 既定 label_search_titles_only: タイトルのみ - label_user_mail_option_all: "参加しているプロジェクトの全ての通知" - label_user_mail_option_selected: "選択したプロジェクトの全ての通知..." + label_user_mail_option_all: "参加しているプロジェクトのすべての通知" + label_user_mail_option_selected: "選択したプロジェクトのすべての通知..." label_user_mail_option_none: "通知しない" label_user_mail_option_only_my_events: "ウォッチまたは関係している事柄のみ" label_user_mail_option_only_assigned: "自分が担当している事柄のみ" @@ -815,12 +825,15 @@ label_project_copy_notifications: コピーしたチケットのメール通知を送信する label_principal_search: "ユーザまたはグループの検索:" label_user_search: "ユーザの検索:" - + label_git_report_last_commit: ファイルとディレクトリの最新コミットを表示する + button_login: ログイン button_submit: 変更 button_save: 保存 - button_check_all: 全てにチェックをつける - button_uncheck_all: 全てのチェックを外す + button_check_all: すべてにチェックをつける + button_uncheck_all: すべてのチェックを外す + button_expand_all: 展開 + button_collapse_all: 折りたたみ button_delete: 削除 button_create: 作成 button_create_and_continue: 連続作成 @@ -870,16 +883,17 @@ version_status_closed: 終了 field_active: 有効 - + text_select_mail_notifications: どのメール通知を送信するか、アクションを選択してください。 text_regexp_info: 例) ^[A-Z0-9]+$ text_min_max_length_info: 0だと無制限になります - text_project_destroy_confirmation: 本当にこのプロジェクトと関連データを削除してもよろしいですか? + text_project_destroy_confirmation: 本当にこのプロジェクトと関連データを削除しますか? text_subprojects_destroy_warning: "サブプロジェクト %{value} も削除されます。" text_workflow_edit: ワークフローを編集するロールとトラッカーを選んでください text_are_you_sure: よろしいですか? - text_are_you_sure_with_children: チケットとその子チケット全てを削除しますか? + text_are_you_sure_with_children: チケットとその子チケットすべてを削除しますか? text_journal_changed: "%{label} を %{old} から %{new} に変更" + text_journal_changed_no_detail: "%{label} を更新" text_journal_set_to: "%{label} を %{value} にセット" text_journal_deleted: "%{label} を削除 (%{old})" text_journal_added: "%{label} %{value} を追加" @@ -897,7 +911,7 @@ text_issues_ref_in_commit_messages: コミットメッセージ内でチケットの参照/修正 text_issue_added: "チケット %{id} が %{author} によって報告されました。" text_issue_updated: "チケット %{id} が %{author} によって更新されました。" - text_wiki_destroy_confirmation: 本当にこのwikiとその内容の全てを削除しますか? + text_wiki_destroy_confirmation: 本当にこのwikiとその内容のすべてを削除しますか? text_issue_category_destroy_question: "%{count}件のチケットがこのカテゴリに割り当てられています。" text_issue_category_destroy_assignments: カテゴリの割り当てを削除する text_issue_category_reassign_to: チケットをこのカテゴリに再割り当てする @@ -927,10 +941,18 @@ text_wiki_page_nullify_children: "子ページをメインページ配下に移動する" text_wiki_page_destroy_children: "配下の子孫ページも削除する" text_wiki_page_reassign_children: "子ページを次の親ページの配下に移動する" - text_own_membership_delete_confirmation: "いくつかまたはすべての権限をあなた自身から剥奪しようとしているため、このプロジェクトを編集できなくなるかもしれません。\n本当に続けてもよろしいですか?" + text_own_membership_delete_confirmation: "一部またはすべての権限を自分自身から剥奪しようとしているため、このプロジェクトを編集できなくなる可能性があります。\n本当に続けますか?" text_zoom_in: 拡大 text_zoom_out: 縮小 - + text_warn_on_leaving_unsaved: このページから移動すると、保存されていないデータが失われます。 + text_scm_path_encoding_note: "デフォルト: UTF-8" + text_git_repository_note: "Bare、かつ、ローカルリポジトリ (例: /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "ローカルリポジトリ (例: /hgrepo, c:\hgrepo)" + text_scm_command: コマンド + text_scm_command_version: バージョン + text_scm_config: バージョン管理システムのコマンドをconfig/configuration.ymlで設定できます。設定後、Redmineを再起動してください。 + text_scm_command_not_available: バージョン管理システムのコマンドが利用できません。管理画面にて設定を確認してください。 + default_role_manager: 管理者 default_role_developer: 開発者 default_role_reporter: 報告者 @@ -957,7 +979,22 @@ enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作業分類 (時間トラッキング) enumeration_system_activity: システム作業分類 - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + label_additional_workflow_transitions_for_assignee: チケット担当者に追加で許可する遷移 + label_additional_workflow_transitions_for_author: チケット作成者に追加で許可する遷移 + label_bulk_edit_selected_time_entries: 作業時間の一括編集 + text_time_entries_destroy_confirmation: 本当に選択した作業時間を削除しますか? + + label_role_anonymous: Anonymous + label_role_non_member: Non member + + label_issue_note_added: 注記が追加されました + label_issue_status_updated: ステータスが更新されました + label_issue_priority_updated: 優先度が更新されました + label_issues_visibility_own: 作成者か担当者であるチケット + field_issues_visibility: 表示できるチケット + label_issues_visibility_all: すべてのチケット + permission_set_own_issues_private: 自分のチケットをプライベートに設定 + field_is_private: プライベート + permission_set_issues_private: チケットをプライベートに設定 + label_issues_visibility_public: プライベートチケット以外 + text_issues_destroy_descendants_confirmation: %{count}個の子チケットも削除されます。 diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/ko.yml.svn-base --- a/config/locales/.svn/text-base/ko.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/ko.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -21,7 +21,10 @@ month_names: [~, 1월, 2월, 3월, 4월, 5월, 6월, 7월, 8월, 9월, 10월, 11월, 12월] abbr_month_names: [~, 1월, 2월, 3월, 4월, 5월, 6월, 7월, 8월, 9월, 10월, 11월, 12월] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -355,7 +358,6 @@ setting_cross_project_issue_relations: 다른 프로젝트의 일감과 연결하는 것을 허용 setting_issue_list_default_columns: 일감 목록에 표시할 항목 setting_repositories_encodings: 저장소 인코딩 - setting_commit_logs_encoding: 제출(commit) 기록 인코딩 setting_emails_footer: 메일 꼬리 setting_protocol: 프로토콜 setting_per_page_options: 목록에서, 한 페이지에 표시할 행 @@ -992,3 +994,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: 제출(commit) 기록 인코딩 + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/lt.yml.svn-base --- a/config/locales/.svn/text-base/lt.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/lt.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -22,7 +22,10 @@ month_names: [~, sausio, vasario, kovo, balandžio, gegužės, birželio, liepos, rugpjūčio, rugsėjo, spalio, lapkričio, gruodžio] abbr_month_names: [~, Sau, Vas, Kov, Bal, Geg, Bir, Lie, Rgp, Rgs, Spa, Lap, Grd] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -311,7 +314,7 @@ field_attr_mail: Elektroninio pašto požymis field_onthefly: Automatinis vartotojų registravimas field_start_date: Pradėti - field_done_ratio: % atlikta + field_done_ratio: "% atlikta" field_auth_source: Autentiškumo nustatymo būdas field_hide_mail: Paslėpkite mano elektroninio pašto adresą field_comments: Komentaras @@ -368,7 +371,6 @@ setting_cross_project_issue_relations: Leisti tarprojektinius darbų ryšius setting_issue_list_default_columns: Numatytosios skiltys darbų sąraše setting_repositories_encodings: Saugyklos koduotė - setting_commit_logs_encoding: Commit pranešimų koduotė setting_emails_footer: elektroninio pašto puslapinė poraštė setting_protocol: Protokolas setting_per_page_options: Įrašų puslapyje nustatimas @@ -1000,3 +1002,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit pranešimų koduotė + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/lv.yml.svn-base --- a/config/locales/.svn/text-base/lv.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/lv.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,937 +1,973 @@ -# translated by Dzintars Bergs (dzintars.bergs@gmail.com) - -lv: - direction: ltr - date: - formats: - default: "%d.%m.%Y" - short: "%d %b" - long: "%d %B %Y" - - day_names: [Svētdiena, Pirmdiena, Otrdiena, Trešdiena, Ceturtdiena, Piektdiena, Sestdiena] - abbr_day_names: [Sv, Pr, Ot, Tr, Ct, Pk, St] - - month_names: [~, Janvāris, Februāris, Marts, Aprīlis , Maijs, Jūnijs, Jūlijs, Augusts, Septembris, Oktobris, Novembris, Decembris] - abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, Jūn, Jūl, Aug, Sep, Okt, Nov, Dec] - order: [ :day, :month, :year ] - - time: - formats: - default: "%a, %d %b %Y, %H:%M:%S %z" - time: "%H:%M" - short: "%d %b, %H:%M" - long: "%B %d, %Y %H:%M" - am: "rītā" - pm: "vakarā" - - datetime: - distance_in_words: - half_a_minute: "pus minūte" - less_than_x_seconds: - one: "mazāk kā 1 sekunde" - other: "mazāk kā %{count} sekundes" - x_seconds: - one: "1 sekunde" - other: "%{count} sekundes" - less_than_x_minutes: - one: "mazāk kā minūte" - other: "mazāk kā %{count} minūtes" - x_minutes: - one: "1 minūte" - other: "%{count} minūtes" - about_x_hours: - one: "aptuveni 1 stunda" - other: "aptuveni %{count} stundas" - x_days: - one: "1 diena" - other: "%{count} dienas" - about_x_months: - one: "aptuveni 1 mēnesis" - other: "aptuveni %{count} mēneši" - x_months: - one: "1 mēnesis" - other: "%{count} mēneši" - about_x_years: - one: "aptuveni 1 gads" - other: "aptuveni %{count} gadi" - over_x_years: - one: "ilgāk par 1 gadu" - other: "ilgāk par %{count} gadiem" - almost_x_years: - one: "gandrīz 1 gadu" - other: "gandrīz %{count} gadus" - - number: - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: " " - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Baits" - other: "Baiti" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - - support: - array: - sentence_connector: "un" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "nav iekļauts sarakstā" - exclusion: "ir rezervēts" - invalid: "nederīgs" - confirmation: "apstiprinājums nesakrīt" - accepted: "jābūt akceptētam" - empty: "nevar būt tukšs" - blank: "nevar būt neaizpildīts" - too_long: "ir pārāk gara(š) (maksimālais garums ir %{count} simboli)" - too_short: "ir pārāk īsa(s) (minimālais garums ir %{count} simboli)" - wrong_length: "ir nepareiza garuma (vajadzētu būt %{count} simboli)" - taken: "eksistē" - not_a_number: "nav skaitlis" - not_a_date: "nav derīgs datums" - greater_than: "jābūt lielākam par %{count}" - greater_than_or_equal_to: "jābūt lielākam vai vienādam ar %{count}" - equal_to: "jābūt vienādam ar %{count}" - less_than: "jābūt mazākam kā %{count}" - less_than_or_equal_to: "jābūt mazākam vai vienādam ar %{count}" - odd: "jāatšķirās" - even: "jāsakrīt" - greater_than_start_date: "jābūt vēlākam par sākuma datumu" - not_same_project: "nepieder pie tā paša projekta" - circular_dependency: "Šī relācija radītu ciklisku atkarību" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" - - actionview_instancetag_blank_option: Izvēlieties - - general_text_No: 'Nē' - general_text_Yes: 'Jā' - general_text_no: 'nē' - general_text_yes: 'jā' - general_lang_name: 'Latvian (Latviešu)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Konts tika atjaunots veiksmīgi. - notice_account_invalid_creditentials: Nepareizs lietotāja vārds vai parole. - notice_account_password_updated: Parole tika veiksmīgi atjaunota. - notice_account_wrong_password: Nepareiza parole - notice_account_register_done: Konts veiksmīgi izveidots. Lai aktivizētu kontu, spiediet uz saites, kas Jums tika nosūtīta. - notice_account_unknown_email: Nezināms lietotājs - notice_can_t_change_password: Šis konts izmanto ārēju pilnvarošanas avotu. Nav iespējams nomainīt paroli. - notice_account_lost_email_sent: Jums tika nosūtīts e-pasts ar instrukcijām, kā izveidot jaunu paroli. - notice_account_activated: Jūsu konts ir aktivizēts. Varat pieslēgties sistēmai. - notice_successful_create: Veiksmīga izveide. - notice_successful_update: Veiksmīga atjaunošana. - notice_successful_delete: Veiksmīga dzēšana. - notice_successful_connection: Veiksmīgs savienojums. - notice_file_not_found: Lapa, ko Jūs mēģināt atvērt, neeksistē vai ir pārvietota. - notice_locking_conflict: Datus ir atjaunojis cits lietotājs. - notice_not_authorized: Jums nav tiesību piekļūt šai lapai. - notice_email_sent: "E-pasts tika nosūtīts uz %{value}" - notice_email_error: "Kļūda sūtot e-pastu (%{value})" - notice_feeds_access_key_reseted: Jūsu RSS pieejas atslēga tika iestatīta sākuma stāvoklī. - notice_api_access_key_reseted: Jūsu API pieejas atslēga tika iestatīta sākuma stāvoklī. - notice_failed_to_save_issues: "Neizdevās saglabāt %{count} uzdevumu(us) no %{total} izvēlēti: %{ids}." - notice_no_issue_selected: "Nav izvēlēts uzdevums! Lūdzu, atzīmējiet uzdevumus, kurus vēlaties rediģēt!" - notice_account_pending: "Jūsu konts tika izveidots un šobrīd gaida administratora apstiprinājumu." - notice_default_data_loaded: Noklusētā konfigurācija tika veiksmīgi ielādēta. - notice_unable_delete_version: Neizdevās dzēst versiju. - notice_issue_done_ratios_updated: Uzdevuma izpildes koeficients atjaunots. - - error_can_t_load_default_data: "Nevar ielādēt noklusētos konfigurācijas datus: %{value}" - error_scm_not_found: "Ieraksts vai versija nebija repozitorijā." - error_scm_command_failed: "Mēģinot piekļūt repozitorijam, notika kļūda: %{value}" - error_scm_annotate: "Ieraksts neeksistē vai tam nevar tikt pievienots paskaidrojums." - error_issue_not_found_in_project: 'Uzdevums netika atrasts vai nepieder šim projektam.' - error_no_tracker_in_project: 'Neviens trakeris nav saistīts ar šo projektu. Pārbaudiet projekta iestatījumus.' - error_no_default_issue_status: 'Nav definēts uzdevuma noklusētais statuss. Pārbaudiet konfigurāciju (Ejat uz: "Administrācija -> Uzdevumu statusi")!' - error_can_not_reopen_issue_on_closed_version: 'Nevar pievienot atsauksmi uzdevumam, kas saistīts ar slēgtu versiju.' - error_can_not_archive_project: Šis projekts nevar tikt arhivēts - error_issue_done_ratios_not_updated: "Uzdevuma izpildes koeficients nav atjaunots." - error_workflow_copy_source: 'Lūdzu izvēlieties avota trakeri vai lomu' - error_workflow_copy_target: 'Lūdzu izvēlēties mērķa trakeri(us) un lomu(as)' - - warning_attachments_not_saved: "%{count} datnes netika saglabātas." - - mail_subject_lost_password: "Jūsu %{value} parole" - mail_body_lost_password: 'Lai mainītu paroli, spiediet uz šīs saites:' - mail_subject_register: "Jūsu %{value} konta aktivizācija" - mail_body_register: 'Lai izveidotu kontu, spiediet uz šīs saites:' - mail_body_account_information_external: "Varat izmantot Jūsu %{value} kontu, lai pieslēgtos." - mail_body_account_information: Jūsu konta informācija - mail_subject_account_activation_request: "%{value} konta aktivizācijas pieprasījums" - mail_body_account_activation_request: "Jauns lietotājs (%{value}) ir reģistrēts. Lietotāja konts gaida Jūsu apstiprinājumu:" - mail_subject_reminder: "%{count} uzdevums(i) sagaidāms(i) tuvākajās %{days} dienās" - mail_body_reminder: "%{count} uzdevums(i), kurš(i) ir nozīmēts(i) Jums, sagaidāms(i) tuvākajās %{days} dienās:" - mail_subject_wiki_content_added: "'%{id}' Wiki lapa pievienota" - mail_body_wiki_content_added: "The '%{id}' Wiki lapu pievienojis %{author}." - mail_subject_wiki_content_updated: "'%{id}' Wiki lapa atjaunota" - mail_body_wiki_content_updated: "The '%{id}' Wiki lapu atjaunojis %{author}." - - gui_validation_error: 1 kļūda - gui_validation_error_plural: "%{count} kļūdas" - - field_name: Nosaukums - field_description: Apraksts - field_summary: Kopsavilkums - field_is_required: Nepieciešams - field_firstname: Vārds - field_lastname: Uzvārds - field_mail: "E-pasts" - field_filename: Datne - field_filesize: Izmērs - field_downloads: Lejupielādes - field_author: Autors - field_created_on: Izveidots - field_updated_on: Atjaunots - field_field_format: Formāts - field_is_for_all: Visiem projektiem - field_possible_values: Iespējamās vērtības - field_regexp: Regulārā izteiksme - field_min_length: Minimālais garums - field_max_length: Maksimālais garums - field_value: Vērtība - field_category: Kategorija - field_title: Nosaukums - field_project: Projekts - field_issue: Uzdevums - field_status: Statuss - field_notes: Piezīmes - field_is_closed: Uzdevums slēgts - field_is_default: Noklusētā vērtība - field_tracker: Trakeris - field_subject: Temats - field_due_date: Sagaidāmais datums - field_assigned_to: Piešķirts - field_priority: Prioritāte - field_fixed_version: Mērķa versija - field_user: Lietotājs - field_role: Loma - field_homepage: Vietne - field_is_public: Publisks - field_parent: Apakšprojekts projektam - field_is_in_roadmap: Ceļvedī parādītie uzdevumi - field_login: Pieslēgties - field_mail_notification: "E-pasta paziņojumi" - field_admin: Administrators - field_last_login_on: Pēdējo reizi pieslēdzies - field_language: Valoda - field_effective_date: Datums - field_password: Parole - field_new_password: Janā parole - field_password_confirmation: Paroles apstiprinājums - field_version: Versija - field_type: Tips - field_host: Hosts - field_port: Ports - field_account: Konts - field_base_dn: Base DN - field_attr_login: Pieslēgšanās atribūts - field_attr_firstname: Vārda atribūts - field_attr_lastname: Uzvārda atribūts - field_attr_mail: "E-pasta atribūts" - field_onthefly: "Lietotāja izveidošana on-the-fly" - field_start_date: Sākuma datums - field_done_ratio: % padarīti - field_auth_source: Pilnvarošanas režīms - field_hide_mail: "Paslēpt manu e-pasta adresi" - field_comments: Komentārs - field_url: URL - field_start_page: Sākuma lapa - field_subproject: Apakšprojekts - field_hours: Stundas - field_activity: Aktivitāte - field_spent_on: Datums - field_identifier: Identifikators - field_is_filter: Izmantots kā filtrs - field_issue_to: Saistīts uzdevums - field_delay: Kavējums - field_assignable: Uzdevums var tikt piesaistīts šai lomai - field_redirect_existing_links: Pāradresēt eksistējošās saites - field_estimated_hours: Paredzētais laiks - field_column_names: Kolonnas - field_time_zone: Laika zona - field_searchable: Meklējams - field_default_value: Noklusētā vērtība - field_comments_sorting: Rādīt komentārus - field_parent_title: Vecāka lapa - field_editable: Rediģējams - field_watcher: Vērotājs - field_identity_url: OpenID URL - field_content: Saturs - field_group_by: Grupēt rezultātus pēc - field_sharing: Koplietošana - - setting_app_title: Programmas nosaukums - setting_app_subtitle: Programmas apakš-nosaukums - setting_welcome_text: Sveiciena teksts - setting_default_language: Noklusētā valoda - setting_login_required: Nepieciešama pilnvarošana - setting_self_registration: Pašreģistrēšanās - setting_attachment_max_size: Pielikuma maksimālais izmērs - setting_issues_export_limit: Uzdevumu eksporta ierobežojums - setting_mail_from: "E-pasta adrese informācijas nosūtīšanai" - setting_bcc_recipients: "Saņēmēju adreses neparādīsies citu saņēmēju vēstulēs (bcc)" - setting_plain_text_mail: "Vēstule brīvā tekstā (bez HTML)" - setting_host_name: Hosta nosaukums un piekļuves ceļš - setting_text_formatting: Teksta formatēšana - setting_wiki_compression: Wiki vēstures saspiešana - setting_feeds_limit: Barotnes satura ierobežojums - setting_default_projects_public: Jaunie projekti noklusēti ir publiski pieejami - setting_autofetch_changesets: "Automātiski lietot jaunāko versiju, pieslēdzoties repozitorijam (Autofetch)" - setting_sys_api_enabled: Ieslēgt WS repozitoriju menedžmentam - setting_commit_ref_keywords: Norādes atslēgvārdi - setting_commit_fix_keywords: Fiksējošie atslēgvārdi - setting_autologin: Automātiskā pieslēgšanās - setting_date_format: Datuma formāts - setting_time_format: Laika formāts - setting_cross_project_issue_relations: "Atļaut starp-projektu uzdevumu relācijas" - setting_issue_list_default_columns: Noklusēti rādītās kolonnas uzdevumu sarakstā - setting_repositories_encodings: Repozitoriju kodējumi - setting_commit_logs_encoding: Kodēt ziņojumus - setting_emails_footer: "E-pastu kājene" - setting_protocol: Protokols - setting_per_page_options: Objekti vienā lapā - setting_user_format: Lietotāju rādīšanas formāts - setting_activity_days_default: Dienus skaits aktivitāšu rādīšanai aktivitāšu sadaļā - setting_display_subprojects_issues: Rādīt apakšprojekta uzdevumus galvenajā projektā pēc noklusējuma - setting_enabled_scm: Lietot SCM - setting_mail_handler_body_delimiters: "Saīsināt pēc vienas no šim rindām" - setting_mail_handler_api_enabled: "Lietot WS ienākošajiem e-pastiem" - setting_mail_handler_api_key: API atslēga - setting_sequential_project_identifiers: Ģenerēt secīgus projektu identifikatorus - setting_gravatar_enabled: Izmantot Gravatar lietotāju ikonas - setting_gravatar_default: Noklusētais Gravatar attēls - setting_diff_max_lines_displayed: Maksimālais rādīto diff rindu skaits - setting_file_max_size_displayed: Maksimālais izmērs iekļautajiem teksta failiem - setting_repository_log_display_limit: Maksimālais žurnāla datnē rādīto revīziju skaits - setting_openid: Atļaut OpenID pieslēgšanos un reģistrēšanos - setting_password_min_length: Minimālais paroles garums - setting_new_project_user_role_id: Loma, kura tiek piešķirta ne-administratora lietotājam, kurš izveido projektu - setting_default_projects_modules: Noklusētie lietotie moduļi jaunam projektam - setting_issue_done_ratio: Aprēķināt uzdevuma izpildes koeficientu ar - setting_issue_done_ratio_issue_field: uzdevuma lauku - setting_issue_done_ratio_issue_status: uzdevuma statusu - setting_start_of_week: Sākt kalendāru ar - setting_rest_api_enabled: Lietot REST web-servisu - setting_cache_formatted_text: Kešot formatētu tekstu - - permission_add_project: Izveidot projektu - permission_add_subprojects: Izveidot apakšprojektu - permission_edit_project: Rediģēt projektu - permission_select_project_modules: Izvēlēties projekta moduļus - permission_manage_members: Pārvaldīt dalībniekus - permission_manage_project_activities: Pārvaldīt projekta aktivitātes - permission_manage_versions: Pārvaldīt versijas - permission_manage_categories: Pārvaldīt uzdevumu kategorijas - permission_view_issues: Apskatīt uzdevumus - permission_add_issues: Pievienot uzdevumus - permission_edit_issues: Rediģēt uzdevumus - permission_manage_issue_relations: Pārvaldīt uzdevumu relācijas - permission_add_issue_notes: Pievienot piezīmes - permission_edit_issue_notes: Rediģēt piezīmes - permission_edit_own_issue_notes: Rediģēt paša piezīmes - permission_move_issues: Pārvietot uzdevumus - permission_delete_issues: Dzēst uzdevumus - permission_manage_public_queries: Pārvaldīt publiskos pieprasījumus - permission_save_queries: Saglabāt pieprasījumus - permission_view_gantt: Skatīt Ganta diagrammu - permission_view_calendar: Skatīt kalendāru - permission_view_issue_watchers: Skatīt vērotāju sarakstu - permission_add_issue_watchers: Pievienot vērotājus - permission_delete_issue_watchers: Dzēst vērotājus - permission_log_time: Piereģistrēt pavadīto laiku - permission_view_time_entries: Skatīt pavadīto laiku - permission_edit_time_entries: Rdiģēt laika reģistrus - permission_edit_own_time_entries: Rediģēt savus laika reģistrus - permission_manage_news: Pārvaldīt jaunumus - permission_comment_news: Komentēt jaunumus - permission_manage_documents: Pārvaldīt dokumentus - permission_view_documents: Skatīt dokumentus - permission_manage_files: Pārvaldīt failus - permission_view_files: Skatīt failus - permission_manage_wiki: Pārvaldīt wiki - permission_rename_wiki_pages: Pārsaukt wiki lapas - permission_delete_wiki_pages: Dzēst wiki lapas - permission_view_wiki_pages: Skatīt wiki - permission_view_wiki_edits: Skatīt wiki vēsturi - permission_edit_wiki_pages: Rdiģēt wiki lapas - permission_delete_wiki_pages_attachments: Dzēst pielikumus - permission_protect_wiki_pages: Projekta wiki lapas - permission_manage_repository: Pārvaldīt repozitoriju - permission_browse_repository: Pārlūkot repozitoriju - permission_view_changesets: Skatīt izmaiņu kopumus - permission_commit_access: Atļaut piekļuvi - permission_manage_boards: Pārvaldīt ziņojumu dēļus - permission_view_messages: Skatīt ziņas - permission_add_messages: Publicēt ziņas - permission_edit_messages: Rediģēt ziņas - permission_edit_own_messages: Rediģēt savas ziņas - permission_delete_messages: Dzēst ziņas - permission_delete_own_messages: Dzēst savas ziņas - permission_export_wiki_pages: Eksportēt Wiki lapas - - project_module_issue_tracking: Uzdevumu uzskaite - project_module_time_tracking: Laika uzskaite - project_module_news: Jaunumi - project_module_documents: Dokumenti - project_module_files: Datnes - project_module_wiki: Wiki - project_module_repository: Repozitorijs - project_module_boards: Ziņojumu dēļi - - label_user: Lietotājs - label_user_plural: Lietotāji - label_user_new: Jauns lietotājs - label_user_anonymous: Anonīms - label_project: Projekts - label_project_new: Jauns projekts - label_project_plural: Projekti - label_x_projects: - zero: nav projektu - one: 1 projekts - other: "%{count} projekti" - label_project_all: Visi projekti - label_project_latest: Jaunākie projekti - label_issue: Uzdevums - label_issue_new: Jauns uzdevums - label_issue_plural: Uzdevumi - label_issue_view_all: Skatīt visus uzdevumus - label_issues_by: "Kārtot pēc %{value}" - label_issue_added: Uzdevums pievienots - label_issue_updated: Uzdevums atjaunots - label_document: Dokuments - label_document_new: Jauns dokuments - label_document_plural: Dokumenti - label_document_added: Dokuments pievienots - label_role: Loma - label_role_plural: Lomas - label_role_new: Jauna loma - label_role_and_permissions: Lomas un atļaujas - label_member: Dalībnieks - label_member_new: Jauns dalībnieks - label_member_plural: Dalībnieki - label_tracker: Trakeris - label_tracker_plural: Trakeri - label_tracker_new: Jauns trakeris - label_workflow: Darba gaita - label_issue_status: Uzdevuma statuss - label_issue_status_plural: Uzdevumu statusi - label_issue_status_new: Jauns statuss - label_issue_category: Uzdevuma kategorija - label_issue_category_plural: Uzdevumu kategorijas - label_issue_category_new: Jauna kategorija - label_custom_field: Pielāgojams lauks - label_custom_field_plural: Pielāgojami lauki - label_custom_field_new: Jauns pielāgojams lauks - label_enumerations: Uzskaitījumi - label_enumeration_new: Jauna vērtība - label_information: Informācija - label_information_plural: Informācija - label_please_login: Lūdzu pieslēdzieties - label_register: Reģistrēties - label_login_with_open_id_option: vai pieslēgties ar OpenID - label_password_lost: Nozaudēta parole - label_home: Sākums - label_my_page: Mana lapa - label_my_account: Mans konts - label_my_projects: Mani projekti - label_administration: Administrācija - label_login: Pieslēgties - label_logout: Atslēgties - label_help: Palīdzība - label_reported_issues: Ziņotie uzdevumi - label_assigned_to_me_issues: Man piesaistītie uzdevumi - label_last_login: Pēdējā pieslēgšanās - label_registered_on: Reģistrējies - label_activity: Aktivitāte - label_overall_activity: Kopējās aktivitātes - label_user_activity: "Lietotāja %{value} aktivitātes" - label_new: Jauns - label_logged_as: Pieslēdzies kā - label_environment: Vide - label_authentication: Pilnvarošana - label_auth_source: Pilnvarošanas režīms - label_auth_source_new: Jauns pilnvarošanas režīms - label_auth_source_plural: Pilnvarošanas režīmi - label_subproject_plural: Apakšprojekti - label_subproject_new: Jauns apakšprojekts - label_and_its_subprojects: "%{value} un tā apakšprojekti" - label_min_max_length: Minimālais - Maksimālais garums - label_list: Saraksts - label_date: Datums - label_integer: Vesels skaitlis - label_float: Decimālskaitlis - label_boolean: Patiesuma vērtība - label_string: Teksts - label_text: Garš teksts - label_attribute: Atribūts - label_attribute_plural: Atribūti - label_download: "%{count} Lejupielāde" - label_download_plural: "%{count} Lejupielādes" - label_no_data: Nav datu, ko parādīt - label_change_status: Mainīt statusu - label_history: Vēsture - label_attachment: Pielikums - label_attachment_new: Jauns pielikums - label_attachment_delete: Dzēst pielikumu - label_attachment_plural: Pielikumi - label_file_added: Lauks pievienots - label_report: Atskaite - label_report_plural: Atskaites - label_news: Ziņa - label_news_new: Pievienot ziņu - label_news_plural: Ziņas - label_news_latest: Jaunākās ziņas - label_news_view_all: Skatīt visas ziņas - label_news_added: Ziņas pievienotas - label_settings: Iestatījumi - label_overview: Pārskats - label_version: Versija - label_version_new: Jauna versija - label_version_plural: Versijas - label_close_versions: Aizvērt pabeigtās versijas - label_confirmation: Apstiprinājums - label_export_to: 'Pieejams arī:' - label_read: Lasīt... - label_public_projects: Publiskie projekti - label_open_issues: atvērts - label_open_issues_plural: atvērti - label_closed_issues: slēgts - label_closed_issues_plural: slēgti - label_x_open_issues_abbr_on_total: - zero: 0 atvērti / %{total} - one: 1 atvērts / %{total} - other: "%{count} atvērti / %{total}" - label_x_open_issues_abbr: - zero: 0 atvērti - one: 1 atvērts - other: "%{count} atvērti" - label_x_closed_issues_abbr: - zero: 0 slēgti - one: 1 slēgts - other: "%{count} slēgti" - label_total: Kopā - label_permissions: Atļaujas - label_current_status: Pašreizējais statuss - label_new_statuses_allowed: Jauni statusi atļauti - label_all: visi - label_none: neviens - label_nobody: nekas - label_next: Nākošais - label_previous: Iepriekšējais - label_used_by: Izmanto - label_details: Detaļas - label_add_note: Pievienot piezīmi - label_per_page: katrā lapā - label_calendar: Kalendārs - label_months_from: mēneši no - label_gantt: Ganta diagramma - label_internal: Iekšējais - label_last_changes: "pēdējās %{count} izmaiņas" - label_change_view_all: Skatīt visas izmaiņas - label_personalize_page: Pielāgot šo lapu - label_comment: Komentārs - label_comment_plural: Komentāri - label_x_comments: - zero: nav komentāru - one: 1 komentārs - other: "%{count} komentāri" - label_comment_add: Pievienot komentāru - label_comment_added: Komentārs pievienots - label_comment_delete: Dzēst komentārus - label_query: Pielāgots pieprasījums - label_query_plural: Pielāgoti pieprasījumi - label_query_new: Jauns pieprasījums - label_filter_add: Pievienot filtru - label_filter_plural: Filtri - label_equals: ir - label_not_equals: nav - label_in_less_than: ir mazāk kā - label_in_more_than: ir vairāk kā - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: iekš - label_today: šodien - label_all_time: visu laiku - label_yesterday: vakar - label_this_week: šonedēļ - label_last_week: pagājušo šonedēļ - label_last_n_days: "pēdējās %{count} dienas" - label_this_month: šomēnes - label_last_month: pagājušo mēnes - label_this_year: šogad - label_date_range: Datumu apgabals - label_less_than_ago: mazāk kā dienas iepriekš - label_more_than_ago: vairāk kā dienas iepriekš - label_ago: dienas iepriekš - label_contains: satur - label_not_contains: nesatur - label_day_plural: dienas - label_repository: Repozitorijs - label_repository_plural: Repozitoriji - label_browse: Pārlūkot - label_modification: "%{count} izmaiņa" - label_modification_plural: "%{count} izmaiņas" - label_branch: Zars - label_tag: Birka - label_revision: Revīzija - label_revision_plural: Revīzijas - label_revision_id: "Revīzija %{value}" - label_associated_revisions: Saistītās revīzijas - label_added: pievienots - label_modified: modificēts - label_copied: nokopēts - label_renamed: pārsaukts - label_deleted: dzēsts - label_latest_revision: Pēdējā revīzija - label_latest_revision_plural: Pēdējās revīzijas - label_view_revisions: Skatīt revīzijas - label_view_all_revisions: Skatīt visas revīzijas - label_max_size: Maksimālais izmērs - label_sort_highest: Pārvietot uz augšu - label_sort_higher: Pārvietot soli augšup - label_sort_lower: Pārvietot uz leju - label_sort_lowest: Pārvietot vienu soli uz leju - label_roadmap: Ceļvedis - label_roadmap_due_in: "Sagaidāms pēc %{value}" - label_roadmap_overdue: "nokavēts %{value}" - label_roadmap_no_issues: Šai versijai nav uzdevumu - label_search: Meklēt - label_result_plural: Rezultāti - label_all_words: Visi vārdi - label_wiki: Wiki - label_wiki_edit: Wiki labojums - label_wiki_edit_plural: Wiki labojumi - label_wiki_page: Wiki lapa - label_wiki_page_plural: Wiki lapas - label_index_by_title: Indeksēt pēc nosaukuma - label_index_by_date: Indeksēt pēc datuma - label_current_version: Tekošā versija - label_preview: Priekšskatījums - label_feed_plural: Barotnes - label_changes_details: Visu izmaiņu detaļas - label_issue_tracking: Uzdevumu uzskaite - label_spent_time: Pavadītais laiks - label_f_hour: "%{value} stunda" - label_f_hour_plural: "%{value} stundas" - label_time_tracking: Laika uzskaite - label_change_plural: Izmaiņas - label_statistics: Statistika - label_commits_per_month: Nodevumi mēnesī - label_commits_per_author: Nodevumi no autora - label_view_diff: Skatīt atšķirības - label_diff_inline: iekļauts - label_diff_side_by_side: blakus - label_options: Opcijas - label_copy_workflow_from: Kopēt darba plūsmu no - label_permissions_report: Atļauju atskaite - label_watched_issues: Vērotie uzdevumi - label_related_issues: Saistītie uzdevumi - label_applied_status: Piešķirtais statuss - label_loading: Lādējas... - label_relation_new: Jauna relācija - label_relation_delete: Dzēst relāciju - label_relates_to: saistīts ar - label_duplicates: dublikāti - label_duplicated_by: dublējas ar - label_blocks: bloķē - label_blocked_by: nobloķējis - label_precedes: pirms - label_follows: seko - label_end_to_start: no beigām uz sākumu - label_end_to_end: no beigām uz beigām - label_start_to_start: no sākuma uz sākumu - label_start_to_end: no sākuma uz beigām - label_stay_logged_in: Atcerēties mani - label_disabled: izslēgts - label_show_completed_versions: Rādīt pabeigtās versijas - label_me: es - label_board: Forums - label_board_new: Jauns forums - label_board_plural: Forumi - label_board_locked: Slēgts - label_board_sticky: Svarīgs - label_topic_plural: Tēmas - label_message_plural: Ziņas - label_message_last: Pēdējā ziņa - label_message_new: Jauna ziņa - label_message_posted: Ziņa pievienota - label_reply_plural: Atbildes - label_send_information: Sūtīt konta informāciju lietotājam - label_year: Gads - label_month: Mēnesis - label_week: Nedēļa - label_date_from: No - label_date_to: Kam - label_language_based: Izmantot lietotāja valodu - label_sort_by: "Kārtot pēc %{value}" - label_send_test_email: "Sūtīt testa e-pastu" - label_feeds_access_key: RSS piekļuves atslēga - label_missing_feeds_access_key: Trūkst RSS piekļuves atslēgas - label_feeds_access_key_created_on: "RSS piekļuves atslēga izveidota pirms %{value}" - label_module_plural: Moduļi - label_added_time_by: "Pievienojis %{author} pirms %{age}" - label_updated_time_by: "Atjaunojis %{author} pirms %{age}" - label_updated_time: "Atjaunots pirms %{value}" - label_jump_to_a_project: Pāriet uz projektu... - label_file_plural: Datnes - label_changeset_plural: Izmaiņu kopumi - label_default_columns: Noklusētās kolonnas - label_no_change_option: (Nav izmaiņu) - label_bulk_edit_selected_issues: Labot visus izvēlētos uzdevumus - label_theme: Tēma - label_default: Noklusēts - label_search_titles_only: Meklēt tikai nosaukumos - label_user_mail_option_all: "Par visiem notikumiem visos manos projektos" - label_user_mail_option_selected: "Par visiem notikumiem tikai izvēlētajos projektos..." - label_user_mail_no_self_notified: "Neziņot man par izmaiņām, kuras veicu es pats" - label_registration_activation_by_email: "konta aktivizācija caur e-pastu" - label_registration_manual_activation: manuālā konta aktivizācija - label_registration_automatic_activation: automātiskā konta aktivizācija - label_display_per_page: "Rādīt vienā lapā: %{value}" - label_age: Vecums - label_change_properties: Mainīt atribūtus - label_general: Galvenais - label_more: Vēl - label_scm: SCM - label_plugins: Spraudņi - label_ldap_authentication: LDAP pilnvarošana - label_downloads_abbr: L-lād. - label_optional_description: "Apraksts (neobligāts)" - label_add_another_file: Pievienot citu failu - label_preferences: Priekšrocības - label_chronological_order: Hronoloģiskā kārtībā - label_reverse_chronological_order: Apgriezti hronoloģiskā kārtībā - label_planning: Plānošana - label_incoming_emails: "Ienākošie e-pasti" - label_generate_key: Ģenerēt atslēgu - label_issue_watchers: Vērotāji - label_example: Piemērs - label_display: Rādīt - label_sort: Kārtot - label_ascending: Augoši - label_descending: Dilstoši - label_date_from_to: "No %{start} līdz %{end}" - label_wiki_content_added: Wiki lapa pievienota - label_wiki_content_updated: Wiki lapa atjaunota - label_group: Grupa - label_group_plural: Grupas - label_group_new: Jauna grupa - label_time_entry_plural: Pavadītais laiks - label_version_sharing_none: Nav koplietošanai - label_version_sharing_descendants: Ar apakšprojektiem - label_version_sharing_hierarchy: Ar projektu hierarhiju - label_version_sharing_tree: Ar projekta koku - label_version_sharing_system: Ar visiem projektiem - label_update_issue_done_ratios: Atjaunot uzdevuma veikuma attiecību - label_copy_source: Avots - label_copy_target: Mērķis - label_copy_same_as_target: Tāds pats kā mērķis - label_display_used_statuses_only: "Rādīt tikai statusus, ko lieto šis trakeris" - label_api_access_key: API pieejas atslēga - label_missing_api_access_key: Trūkst API pieejas atslēga - label_api_access_key_created_on: "API pieejas atslēga izveidota pirms %{value}" - - button_login: Pieslēgties - button_submit: Nosūtīt - button_save: Saglabāt - button_check_all: Atzīmēt visu - button_uncheck_all: Noņemt visus atzīmējumus - button_delete: Dzēst - button_create: Izveidot - button_create_and_continue: Izveidot un turpināt - button_test: Testēt - button_edit: Labot - button_add: Pievienot - button_change: Mainīt - button_apply: Apstiprināt - button_clear: Notīrīt - button_lock: Slēgt - button_unlock: Atslēgt - button_download: Lejuplādēt - button_list: Saraksts - button_view: Skats - button_move: Pārvietot - button_move_and_follow: Pārvietot un sekot - button_back: Atpakaļ - button_cancel: Atcelt - button_activate: Aktivizēt - button_sort: Kārtot - button_log_time: Ilgs laiks - button_rollback: Atjaunot uz šo versiju - button_watch: Vērot - button_unwatch: Nevērot - button_reply: Atbildēt - button_archive: Arhivēt - button_unarchive: Atarhivēt - button_reset: Atiestatīt - button_rename: Pārsaukt - button_change_password: Mainīt paroli - button_copy: Kopēt - button_copy_and_follow: Kopēt un sekot - button_annotate: Pierakstīt paskaidrojumu - button_update: Atjaunot - button_configure: Konfigurēt - button_quote: Citāts - button_duplicate: Dublēt - button_show: Rādīt - - status_active: aktīvs - status_registered: reģistrēts - status_locked: slēgts - - version_status_open: atvērta - version_status_locked: slēgta - version_status_closed: aizvērta - - field_active: Aktīvs - - text_select_mail_notifications: "Izvēlieties darbības, par kurām vēlaties saņemt ziņojumus e-pastā" - text_regexp_info: "piem. ^[A-Z0-9]+$" - text_min_max_length_info: "0 nozīmē, ka nav ierobežojumu" - text_project_destroy_confirmation: "Vai tiešām vēlaties dzēst šo projektu un ar to saistītos datus?" - text_subprojects_destroy_warning: "Tā apakšprojekts(i): %{value} arī tiks dzēsts(i)." - text_workflow_edit: Lai labotu darba plūsmu, izvēlieties lomu un trakeri - text_are_you_sure: "Vai esat pārliecināts?" - text_journal_changed: "%{label} mainīts no %{old} uz %{new}" - text_journal_set_to: "%{label} iestatīts uz %{value}" - text_journal_deleted: "%{label} dzēsts (%{old})" - text_journal_added: "%{label} %{value} pievienots" - text_tip_issue_begin_day: uzdevums sākas šodien - text_tip_issue_end_day: uzdevums beidzas šodien - text_tip_issue_begin_end_day: uzdevums sākas un beidzas šodien - text_project_identifier_info: 'Tikai mazie burti (a-z), cipari un domuzīmes ir atļauti.
    Kad saglabāts, identifikators nevar tikt mainīts.' - text_caracters_maximum: "%{count} simboli maksimāli." - text_caracters_minimum: "Jābūt vismaz %{count} simbolu garumā." - text_length_between: "Garums starp %{min} un %{max} simboliem." - text_tracker_no_workflow: Šim trakerim nav definēta darba plūsma - text_unallowed_characters: Neatļauti simboli - text_comma_separated: "Atļautas vairākas vērtības (atdalīt ar komatu)." - text_line_separated: "Atļautas vairākas vērtības (rakstīt katru savā rindā)." - text_issues_ref_in_commit_messages: "Izmaiņu salīdzināšana izejot no ziņojumiem" - text_issue_added: "Uzdevumu %{id} pievienojis %{author}." - text_issue_updated: "Uzdevumu %{id} atjaunojis %{author}." - text_wiki_destroy_confirmation: "Vai esat drošs, ka vēlaties dzēst šo wiki un visu tās saturu?" - text_issue_category_destroy_question: "Daži uzdevumi (%{count}) ir nozīmēti šai kategorijai. Ko Jūs vēlaties darīt?" - text_issue_category_destroy_assignments: Dzēst kategoriju nozīmējumus - text_issue_category_reassign_to: Nozīmēt uzdevumus šai kategorijai - text_user_mail_option: "No neizvēlētajiem projektiem Jūs saņemsiet ziņojumus e-pastā tikai par notikumiem, kuriem Jūs sekojat vai kuros esat iesaistīts." - text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plūsmas vēl nav konfigurētas.\nĻoti ieteicams ielādēt noklusēto konfigurāciju. Pēc ielādēšanas to būs iespējams modificēt." - text_load_default_configuration: Ielādēt noklusēto konfigurāciju - text_status_changed_by_changeset: "Apstiprināts izmaiņu kopumā %{value}." - text_issues_destroy_confirmation: 'Vai tiešām vēlaties dzēst izvēlēto uzdevumu(us)?' - text_select_project_modules: 'Izvēlieties moduļus šim projektam:' - text_default_administrator_account_changed: Noklusētais administratora konts mainīts - text_file_repository_writable: Pielikumu direktorijā atļauts rakstīt - text_plugin_assets_writable: Spraudņu kataloga direktorijā atļauts rakstīt - text_rmagick_available: "RMagick pieejams (neobligāts)" - text_destroy_time_entries_question: "%{hours} stundas tika ziņotas par uzdevumu, ko vēlaties dzēst. Ko darīt?" - text_destroy_time_entries: Dzēst ziņotās stundas - text_assign_time_entries_to_project: Piešķirt ziņotās stundas projektam - text_reassign_time_entries: 'Piešķirt ziņotās stundas uzdevumam:' - text_user_wrote: "%{value} rakstīja:" - text_enumeration_destroy_question: "%{count} objekti ir piešķirti šai vērtībai." - text_enumeration_category_reassign_to: 'Piešķirt tos šai vērtībai:' - text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/configuration.yml un pārstartējiet lietotni." - text_repository_usernames_mapping: "Izvēlieties vai atjaunojiet Redmine lietotāju, saistītu ar katru lietotājvārdu, kas atrodams repozitorija žurnālā.\nLietotāji ar to pašu Redmine un repozitorija lietotājvārdu būs saistīti automātiski." - text_diff_truncated: '... Šis diff tika nošķelts, jo tas pārsniedz maksimālo izmēru, ko var parādīt.' - text_custom_field_possible_values_info: 'Katra vērtības savā rindā' - text_wiki_page_destroy_question: "Šij lapai ir %{descendants} apakšlapa(as) un pēcnācēji. Ko darīt?" - text_wiki_page_nullify_children: "Paturēt apakšlapas kā pamatlapas" - text_wiki_page_destroy_children: "Dzēst apakšlapas un visus pēcnācējus" - text_wiki_page_reassign_children: "Piešķirt apakšlapas šai lapai" - text_own_membership_delete_confirmation: "Jūs tūlīt dzēsīsiet dažas vai visas atļaujas, un Jums pēc tam var nebūt atļauja labot šo projektu.\nVai turpināt?" - - default_role_manager: Menedžeris - default_role_developer: Izstrādātājs - default_role_reporter: Ziņotājs - default_tracker_bug: Kļūda - default_tracker_feature: Iezīme - default_tracker_support: Atbalsts - default_issue_status_new: Jauns - default_issue_status_in_progress: Attīstībā - default_issue_status_resolved: Atrisināts - default_issue_status_feedback: Atsauksmes - default_issue_status_closed: Slēgts - default_issue_status_rejected: Noraidīts - default_doc_category_user: Lietotāja dokumentācija - default_doc_category_tech: Tehniskā dokumentācija - default_priority_low: Zema - default_priority_normal: Normāla - default_priority_high: Augsta - default_priority_urgent: Steidzama - default_priority_immediate: Tūlītēja - default_activity_design: Dizains - default_activity_development: Izstrādāšana - - enumeration_issue_priorities: Uzdevumu prioritātes - enumeration_doc_categories: Dokumentu kategorijas - enumeration_activities: Aktivitātes (laika uzskaite) - enumeration_system_activity: Sistēmas aktivitātes - - error_can_not_delete_custom_field: Unable to delete custom field - permission_manage_subtasks: Manage subtasks - label_profile: Profile - error_unable_to_connect: Unable to connect (%{value}) - error_can_not_remove_role: This role is in use and can not be deleted. - field_parent_issue: Parent task - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - label_project_copy_notifications: Send email notifications during the project copy - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +# translated by Dzintars Bergs (dzintars.bergs@gmail.com) + +lv: + direction: ltr + date: + formats: + default: "%d.%m.%Y" + short: "%d %b" + long: "%d %B %Y" + + day_names: [Svētdiena, Pirmdiena, Otrdiena, Trešdiena, Ceturtdiena, Piektdiena, Sestdiena] + abbr_day_names: [Sv, Pr, Ot, Tr, Ct, Pk, St] + + month_names: [~, Janvāris, Februāris, Marts, Aprīlis , Maijs, Jūnijs, Jūlijs, Augusts, Septembris, Oktobris, Novembris, Decembris] + abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, Jūn, Jūl, Aug, Sep, Okt, Nov, Dec] + order: + - :day + - :month + - :year + + time: + formats: + default: "%a, %d %b %Y, %H:%M:%S %z" + time: "%H:%M" + short: "%d %b, %H:%M" + long: "%B %d, %Y %H:%M" + am: "rītā" + pm: "vakarā" + + datetime: + distance_in_words: + half_a_minute: "pus minūte" + less_than_x_seconds: + one: "mazāk kā 1 sekunde" + other: "mazāk kā %{count} sekundes" + x_seconds: + one: "1 sekunde" + other: "%{count} sekundes" + less_than_x_minutes: + one: "mazāk kā minūte" + other: "mazāk kā %{count} minūtes" + x_minutes: + one: "1 minūte" + other: "%{count} minūtes" + about_x_hours: + one: "aptuveni 1 stunda" + other: "aptuveni %{count} stundas" + x_days: + one: "1 diena" + other: "%{count} dienas" + about_x_months: + one: "aptuveni 1 mēnesis" + other: "aptuveni %{count} mēneši" + x_months: + one: "1 mēnesis" + other: "%{count} mēneši" + about_x_years: + one: "aptuveni 1 gads" + other: "aptuveni %{count} gadi" + over_x_years: + one: "ilgāk par 1 gadu" + other: "ilgāk par %{count} gadiem" + almost_x_years: + one: "gandrīz 1 gadu" + other: "gandrīz %{count} gadus" + + number: + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: " " + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Baits" + other: "Baiti" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + + support: + array: + sentence_connector: "un" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "nav iekļauts sarakstā" + exclusion: "ir rezervēts" + invalid: "nederīgs" + confirmation: "apstiprinājums nesakrīt" + accepted: "jābūt akceptētam" + empty: "nevar būt tukšs" + blank: "nevar būt neaizpildīts" + too_long: "ir pārāk gara(š) (maksimālais garums ir %{count} simboli)" + too_short: "ir pārāk īsa(s) (minimālais garums ir %{count} simboli)" + wrong_length: "ir nepareiza garuma (vajadzētu būt %{count} simboli)" + taken: "eksistē" + not_a_number: "nav skaitlis" + not_a_date: "nav derīgs datums" + greater_than: "jābūt lielākam par %{count}" + greater_than_or_equal_to: "jābūt lielākam vai vienādam ar %{count}" + equal_to: "jābūt vienādam ar %{count}" + less_than: "jābūt mazākam kā %{count}" + less_than_or_equal_to: "jābūt mazākam vai vienādam ar %{count}" + odd: "jāatšķirās" + even: "jāsakrīt" + greater_than_start_date: "jābūt vēlākam par sākuma datumu" + not_same_project: "nepieder pie tā paša projekta" + circular_dependency: "Šī relācija radītu ciklisku atkarību" + cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + + actionview_instancetag_blank_option: Izvēlieties + + general_text_No: 'Nē' + general_text_Yes: 'Jā' + general_text_no: 'nē' + general_text_yes: 'jā' + general_lang_name: 'Latvian (Latviešu)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Konts tika atjaunots veiksmīgi. + notice_account_invalid_creditentials: Nepareizs lietotāja vārds vai parole. + notice_account_password_updated: Parole tika veiksmīgi atjaunota. + notice_account_wrong_password: Nepareiza parole + notice_account_register_done: Konts veiksmīgi izveidots. Lai aktivizētu kontu, spiediet uz saites, kas Jums tika nosūtīta. + notice_account_unknown_email: Nezināms lietotājs + notice_can_t_change_password: Šis konts izmanto ārēju pilnvarošanas avotu. Nav iespējams nomainīt paroli. + notice_account_lost_email_sent: Jums tika nosūtīts e-pasts ar instrukcijām, kā izveidot jaunu paroli. + notice_account_activated: Jūsu konts ir aktivizēts. Varat pieslēgties sistēmai. + notice_successful_create: Veiksmīga izveide. + notice_successful_update: Veiksmīga atjaunošana. + notice_successful_delete: Veiksmīga dzēšana. + notice_successful_connection: Veiksmīgs savienojums. + notice_file_not_found: Lapa, ko Jūs mēģināt atvērt, neeksistē vai ir pārvietota. + notice_locking_conflict: Datus ir atjaunojis cits lietotājs. + notice_not_authorized: Jums nav tiesību piekļūt šai lapai. + notice_email_sent: "E-pasts tika nosūtīts uz %{value}" + notice_email_error: "Kļūda sūtot e-pastu (%{value})" + notice_feeds_access_key_reseted: Jūsu RSS pieejas atslēga tika iestatīta sākuma stāvoklī. + notice_api_access_key_reseted: Jūsu API pieejas atslēga tika iestatīta sākuma stāvoklī. + notice_failed_to_save_issues: "Neizdevās saglabāt %{count} uzdevumu(us) no %{total} izvēlēti: %{ids}." + notice_no_issue_selected: "Nav izvēlēts uzdevums! Lūdzu, atzīmējiet uzdevumus, kurus vēlaties rediģēt!" + notice_account_pending: "Jūsu konts tika izveidots un šobrīd gaida administratora apstiprinājumu." + notice_default_data_loaded: Noklusētā konfigurācija tika veiksmīgi ielādēta. + notice_unable_delete_version: Neizdevās dzēst versiju. + notice_issue_done_ratios_updated: Uzdevuma izpildes koeficients atjaunots. + + error_can_t_load_default_data: "Nevar ielādēt noklusētos konfigurācijas datus: %{value}" + error_scm_not_found: "Ieraksts vai versija nebija repozitorijā." + error_scm_command_failed: "Mēģinot piekļūt repozitorijam, notika kļūda: %{value}" + error_scm_annotate: "Ieraksts neeksistē vai tam nevar tikt pievienots paskaidrojums." + error_issue_not_found_in_project: 'Uzdevums netika atrasts vai nepieder šim projektam.' + error_no_tracker_in_project: 'Neviens trakeris nav saistīts ar šo projektu. Pārbaudiet projekta iestatījumus.' + error_no_default_issue_status: 'Nav definēts uzdevuma noklusētais statuss. Pārbaudiet konfigurāciju (Ejat uz: "Administrācija -> Uzdevumu statusi")!' + error_can_not_reopen_issue_on_closed_version: 'Nevar pievienot atsauksmi uzdevumam, kas saistīts ar slēgtu versiju.' + error_can_not_archive_project: Šis projekts nevar tikt arhivēts + error_issue_done_ratios_not_updated: "Uzdevuma izpildes koeficients nav atjaunots." + error_workflow_copy_source: 'Lūdzu izvēlieties avota trakeri vai lomu' + error_workflow_copy_target: 'Lūdzu izvēlēties mērķa trakeri(us) un lomu(as)' + + warning_attachments_not_saved: "%{count} datnes netika saglabātas." + + mail_subject_lost_password: "Jūsu %{value} parole" + mail_body_lost_password: 'Lai mainītu paroli, spiediet uz šīs saites:' + mail_subject_register: "Jūsu %{value} konta aktivizācija" + mail_body_register: 'Lai izveidotu kontu, spiediet uz šīs saites:' + mail_body_account_information_external: "Varat izmantot Jūsu %{value} kontu, lai pieslēgtos." + mail_body_account_information: Jūsu konta informācija + mail_subject_account_activation_request: "%{value} konta aktivizācijas pieprasījums" + mail_body_account_activation_request: "Jauns lietotājs (%{value}) ir reģistrēts. Lietotāja konts gaida Jūsu apstiprinājumu:" + mail_subject_reminder: "%{count} uzdevums(i) sagaidāms(i) tuvākajās %{days} dienās" + mail_body_reminder: "%{count} uzdevums(i), kurš(i) ir nozīmēts(i) Jums, sagaidāms(i) tuvākajās %{days} dienās:" + mail_subject_wiki_content_added: "'%{id}' Wiki lapa pievienota" + mail_body_wiki_content_added: "The '%{id}' Wiki lapu pievienojis %{author}." + mail_subject_wiki_content_updated: "'%{id}' Wiki lapa atjaunota" + mail_body_wiki_content_updated: "The '%{id}' Wiki lapu atjaunojis %{author}." + + gui_validation_error: 1 kļūda + gui_validation_error_plural: "%{count} kļūdas" + + field_name: Nosaukums + field_description: Apraksts + field_summary: Kopsavilkums + field_is_required: Nepieciešams + field_firstname: Vārds + field_lastname: Uzvārds + field_mail: "E-pasts" + field_filename: Datne + field_filesize: Izmērs + field_downloads: Lejupielādes + field_author: Autors + field_created_on: Izveidots + field_updated_on: Atjaunots + field_field_format: Formāts + field_is_for_all: Visiem projektiem + field_possible_values: Iespējamās vērtības + field_regexp: Regulārā izteiksme + field_min_length: Minimālais garums + field_max_length: Maksimālais garums + field_value: Vērtība + field_category: Kategorija + field_title: Nosaukums + field_project: Projekts + field_issue: Uzdevums + field_status: Statuss + field_notes: Piezīmes + field_is_closed: Uzdevums slēgts + field_is_default: Noklusētā vērtība + field_tracker: Trakeris + field_subject: Temats + field_due_date: Sagaidāmais datums + field_assigned_to: Piešķirts + field_priority: Prioritāte + field_fixed_version: Mērķa versija + field_user: Lietotājs + field_role: Loma + field_homepage: Vietne + field_is_public: Publisks + field_parent: Apakšprojekts projektam + field_is_in_roadmap: Ceļvedī parādītie uzdevumi + field_login: Pieslēgties + field_mail_notification: "E-pasta paziņojumi" + field_admin: Administrators + field_last_login_on: Pēdējo reizi pieslēdzies + field_language: Valoda + field_effective_date: Datums + field_password: Parole + field_new_password: Janā parole + field_password_confirmation: Paroles apstiprinājums + field_version: Versija + field_type: Tips + field_host: Hosts + field_port: Ports + field_account: Konts + field_base_dn: Base DN + field_attr_login: Pieslēgšanās atribūts + field_attr_firstname: Vārda atribūts + field_attr_lastname: Uzvārda atribūts + field_attr_mail: "E-pasta atribūts" + field_onthefly: "Lietotāja izveidošana on-the-fly" + field_start_date: Sākuma datums + field_done_ratio: "% padarīti" + field_auth_source: Pilnvarošanas režīms + field_hide_mail: "Paslēpt manu e-pasta adresi" + field_comments: Komentārs + field_url: URL + field_start_page: Sākuma lapa + field_subproject: Apakšprojekts + field_hours: Stundas + field_activity: Aktivitāte + field_spent_on: Datums + field_identifier: Identifikators + field_is_filter: Izmantots kā filtrs + field_issue_to: Saistīts uzdevums + field_delay: Kavējums + field_assignable: Uzdevums var tikt piesaistīts šai lomai + field_redirect_existing_links: Pāradresēt eksistējošās saites + field_estimated_hours: Paredzētais laiks + field_column_names: Kolonnas + field_time_zone: Laika zona + field_searchable: Meklējams + field_default_value: Noklusētā vērtība + field_comments_sorting: Rādīt komentārus + field_parent_title: Vecāka lapa + field_editable: Rediģējams + field_watcher: Vērotājs + field_identity_url: OpenID URL + field_content: Saturs + field_group_by: Grupēt rezultātus pēc + field_sharing: Koplietošana + + setting_app_title: Programmas nosaukums + setting_app_subtitle: Programmas apakš-nosaukums + setting_welcome_text: Sveiciena teksts + setting_default_language: Noklusētā valoda + setting_login_required: Nepieciešama pilnvarošana + setting_self_registration: Pašreģistrēšanās + setting_attachment_max_size: Pielikuma maksimālais izmērs + setting_issues_export_limit: Uzdevumu eksporta ierobežojums + setting_mail_from: "E-pasta adrese informācijas nosūtīšanai" + setting_bcc_recipients: "Saņēmēju adreses neparādīsies citu saņēmēju vēstulēs (bcc)" + setting_plain_text_mail: "Vēstule brīvā tekstā (bez HTML)" + setting_host_name: Hosta nosaukums un piekļuves ceļš + setting_text_formatting: Teksta formatēšana + setting_wiki_compression: Wiki vēstures saspiešana + setting_feeds_limit: Barotnes satura ierobežojums + setting_default_projects_public: Jaunie projekti noklusēti ir publiski pieejami + setting_autofetch_changesets: "Automātiski lietot jaunāko versiju, pieslēdzoties repozitorijam (Autofetch)" + setting_sys_api_enabled: Ieslēgt WS repozitoriju menedžmentam + setting_commit_ref_keywords: Norādes atslēgvārdi + setting_commit_fix_keywords: Fiksējošie atslēgvārdi + setting_autologin: Automātiskā pieslēgšanās + setting_date_format: Datuma formāts + setting_time_format: Laika formāts + setting_cross_project_issue_relations: "Atļaut starp-projektu uzdevumu relācijas" + setting_issue_list_default_columns: Noklusēti rādītās kolonnas uzdevumu sarakstā + setting_repositories_encodings: Repozitoriju kodējumi + setting_emails_footer: "E-pastu kājene" + setting_protocol: Protokols + setting_per_page_options: Objekti vienā lapā + setting_user_format: Lietotāju rādīšanas formāts + setting_activity_days_default: Dienus skaits aktivitāšu rādīšanai aktivitāšu sadaļā + setting_display_subprojects_issues: Rādīt apakšprojekta uzdevumus galvenajā projektā pēc noklusējuma + setting_enabled_scm: Lietot SCM + setting_mail_handler_body_delimiters: "Saīsināt pēc vienas no šim rindām" + setting_mail_handler_api_enabled: "Lietot WS ienākošajiem e-pastiem" + setting_mail_handler_api_key: API atslēga + setting_sequential_project_identifiers: Ģenerēt secīgus projektu identifikatorus + setting_gravatar_enabled: Izmantot Gravatar lietotāju ikonas + setting_gravatar_default: Noklusētais Gravatar attēls + setting_diff_max_lines_displayed: Maksimālais rādīto diff rindu skaits + setting_file_max_size_displayed: Maksimālais izmērs iekļautajiem teksta failiem + setting_repository_log_display_limit: Maksimālais žurnāla datnē rādīto revīziju skaits + setting_openid: Atļaut OpenID pieslēgšanos un reģistrēšanos + setting_password_min_length: Minimālais paroles garums + setting_new_project_user_role_id: Loma, kura tiek piešķirta ne-administratora lietotājam, kurš izveido projektu + setting_default_projects_modules: Noklusētie lietotie moduļi jaunam projektam + setting_issue_done_ratio: Aprēķināt uzdevuma izpildes koeficientu ar + setting_issue_done_ratio_issue_field: uzdevuma lauku + setting_issue_done_ratio_issue_status: uzdevuma statusu + setting_start_of_week: Sākt kalendāru ar + setting_rest_api_enabled: Lietot REST web-servisu + setting_cache_formatted_text: Kešot formatētu tekstu + + permission_add_project: Izveidot projektu + permission_add_subprojects: Izveidot apakšprojektu + permission_edit_project: Rediģēt projektu + permission_select_project_modules: Izvēlēties projekta moduļus + permission_manage_members: Pārvaldīt dalībniekus + permission_manage_project_activities: Pārvaldīt projekta aktivitātes + permission_manage_versions: Pārvaldīt versijas + permission_manage_categories: Pārvaldīt uzdevumu kategorijas + permission_view_issues: Apskatīt uzdevumus + permission_add_issues: Pievienot uzdevumus + permission_edit_issues: Rediģēt uzdevumus + permission_manage_issue_relations: Pārvaldīt uzdevumu relācijas + permission_add_issue_notes: Pievienot piezīmes + permission_edit_issue_notes: Rediģēt piezīmes + permission_edit_own_issue_notes: Rediģēt paša piezīmes + permission_move_issues: Pārvietot uzdevumus + permission_delete_issues: Dzēst uzdevumus + permission_manage_public_queries: Pārvaldīt publiskos pieprasījumus + permission_save_queries: Saglabāt pieprasījumus + permission_view_gantt: Skatīt Ganta diagrammu + permission_view_calendar: Skatīt kalendāru + permission_view_issue_watchers: Skatīt vērotāju sarakstu + permission_add_issue_watchers: Pievienot vērotājus + permission_delete_issue_watchers: Dzēst vērotājus + permission_log_time: Piereģistrēt pavadīto laiku + permission_view_time_entries: Skatīt pavadīto laiku + permission_edit_time_entries: Rdiģēt laika reģistrus + permission_edit_own_time_entries: Rediģēt savus laika reģistrus + permission_manage_news: Pārvaldīt jaunumus + permission_comment_news: Komentēt jaunumus + permission_manage_documents: Pārvaldīt dokumentus + permission_view_documents: Skatīt dokumentus + permission_manage_files: Pārvaldīt failus + permission_view_files: Skatīt failus + permission_manage_wiki: Pārvaldīt wiki + permission_rename_wiki_pages: Pārsaukt wiki lapas + permission_delete_wiki_pages: Dzēst wiki lapas + permission_view_wiki_pages: Skatīt wiki + permission_view_wiki_edits: Skatīt wiki vēsturi + permission_edit_wiki_pages: Rdiģēt wiki lapas + permission_delete_wiki_pages_attachments: Dzēst pielikumus + permission_protect_wiki_pages: Projekta wiki lapas + permission_manage_repository: Pārvaldīt repozitoriju + permission_browse_repository: Pārlūkot repozitoriju + permission_view_changesets: Skatīt izmaiņu kopumus + permission_commit_access: Atļaut piekļuvi + permission_manage_boards: Pārvaldīt ziņojumu dēļus + permission_view_messages: Skatīt ziņas + permission_add_messages: Publicēt ziņas + permission_edit_messages: Rediģēt ziņas + permission_edit_own_messages: Rediģēt savas ziņas + permission_delete_messages: Dzēst ziņas + permission_delete_own_messages: Dzēst savas ziņas + permission_export_wiki_pages: Eksportēt Wiki lapas + + project_module_issue_tracking: Uzdevumu uzskaite + project_module_time_tracking: Laika uzskaite + project_module_news: Jaunumi + project_module_documents: Dokumenti + project_module_files: Datnes + project_module_wiki: Wiki + project_module_repository: Repozitorijs + project_module_boards: Ziņojumu dēļi + + label_user: Lietotājs + label_user_plural: Lietotāji + label_user_new: Jauns lietotājs + label_user_anonymous: Anonīms + label_project: Projekts + label_project_new: Jauns projekts + label_project_plural: Projekti + label_x_projects: + zero: nav projektu + one: 1 projekts + other: "%{count} projekti" + label_project_all: Visi projekti + label_project_latest: Jaunākie projekti + label_issue: Uzdevums + label_issue_new: Jauns uzdevums + label_issue_plural: Uzdevumi + label_issue_view_all: Skatīt visus uzdevumus + label_issues_by: "Kārtot pēc %{value}" + label_issue_added: Uzdevums pievienots + label_issue_updated: Uzdevums atjaunots + label_document: Dokuments + label_document_new: Jauns dokuments + label_document_plural: Dokumenti + label_document_added: Dokuments pievienots + label_role: Loma + label_role_plural: Lomas + label_role_new: Jauna loma + label_role_and_permissions: Lomas un atļaujas + label_member: Dalībnieks + label_member_new: Jauns dalībnieks + label_member_plural: Dalībnieki + label_tracker: Trakeris + label_tracker_plural: Trakeri + label_tracker_new: Jauns trakeris + label_workflow: Darba gaita + label_issue_status: Uzdevuma statuss + label_issue_status_plural: Uzdevumu statusi + label_issue_status_new: Jauns statuss + label_issue_category: Uzdevuma kategorija + label_issue_category_plural: Uzdevumu kategorijas + label_issue_category_new: Jauna kategorija + label_custom_field: Pielāgojams lauks + label_custom_field_plural: Pielāgojami lauki + label_custom_field_new: Jauns pielāgojams lauks + label_enumerations: Uzskaitījumi + label_enumeration_new: Jauna vērtība + label_information: Informācija + label_information_plural: Informācija + label_please_login: Lūdzu pieslēdzieties + label_register: Reģistrēties + label_login_with_open_id_option: vai pieslēgties ar OpenID + label_password_lost: Nozaudēta parole + label_home: Sākums + label_my_page: Mana lapa + label_my_account: Mans konts + label_my_projects: Mani projekti + label_administration: Administrācija + label_login: Pieslēgties + label_logout: Atslēgties + label_help: Palīdzība + label_reported_issues: Ziņotie uzdevumi + label_assigned_to_me_issues: Man piesaistītie uzdevumi + label_last_login: Pēdējā pieslēgšanās + label_registered_on: Reģistrējies + label_activity: Aktivitāte + label_overall_activity: Kopējās aktivitātes + label_user_activity: "Lietotāja %{value} aktivitātes" + label_new: Jauns + label_logged_as: Pieslēdzies kā + label_environment: Vide + label_authentication: Pilnvarošana + label_auth_source: Pilnvarošanas režīms + label_auth_source_new: Jauns pilnvarošanas režīms + label_auth_source_plural: Pilnvarošanas režīmi + label_subproject_plural: Apakšprojekti + label_subproject_new: Jauns apakšprojekts + label_and_its_subprojects: "%{value} un tā apakšprojekti" + label_min_max_length: Minimālais - Maksimālais garums + label_list: Saraksts + label_date: Datums + label_integer: Vesels skaitlis + label_float: Decimālskaitlis + label_boolean: Patiesuma vērtība + label_string: Teksts + label_text: Garš teksts + label_attribute: Atribūts + label_attribute_plural: Atribūti + label_download: "%{count} Lejupielāde" + label_download_plural: "%{count} Lejupielādes" + label_no_data: Nav datu, ko parādīt + label_change_status: Mainīt statusu + label_history: Vēsture + label_attachment: Pielikums + label_attachment_new: Jauns pielikums + label_attachment_delete: Dzēst pielikumu + label_attachment_plural: Pielikumi + label_file_added: Lauks pievienots + label_report: Atskaite + label_report_plural: Atskaites + label_news: Ziņa + label_news_new: Pievienot ziņu + label_news_plural: Ziņas + label_news_latest: Jaunākās ziņas + label_news_view_all: Skatīt visas ziņas + label_news_added: Ziņas pievienotas + label_settings: Iestatījumi + label_overview: Pārskats + label_version: Versija + label_version_new: Jauna versija + label_version_plural: Versijas + label_close_versions: Aizvērt pabeigtās versijas + label_confirmation: Apstiprinājums + label_export_to: 'Pieejams arī:' + label_read: Lasīt... + label_public_projects: Publiskie projekti + label_open_issues: atvērts + label_open_issues_plural: atvērti + label_closed_issues: slēgts + label_closed_issues_plural: slēgti + label_x_open_issues_abbr_on_total: + zero: 0 atvērti / %{total} + one: 1 atvērts / %{total} + other: "%{count} atvērti / %{total}" + label_x_open_issues_abbr: + zero: 0 atvērti + one: 1 atvērts + other: "%{count} atvērti" + label_x_closed_issues_abbr: + zero: 0 slēgti + one: 1 slēgts + other: "%{count} slēgti" + label_total: Kopā + label_permissions: Atļaujas + label_current_status: Pašreizējais statuss + label_new_statuses_allowed: Jauni statusi atļauti + label_all: visi + label_none: neviens + label_nobody: nekas + label_next: Nākošais + label_previous: Iepriekšējais + label_used_by: Izmanto + label_details: Detaļas + label_add_note: Pievienot piezīmi + label_per_page: katrā lapā + label_calendar: Kalendārs + label_months_from: mēneši no + label_gantt: Ganta diagramma + label_internal: Iekšējais + label_last_changes: "pēdējās %{count} izmaiņas" + label_change_view_all: Skatīt visas izmaiņas + label_personalize_page: Pielāgot šo lapu + label_comment: Komentārs + label_comment_plural: Komentāri + label_x_comments: + zero: nav komentāru + one: 1 komentārs + other: "%{count} komentāri" + label_comment_add: Pievienot komentāru + label_comment_added: Komentārs pievienots + label_comment_delete: Dzēst komentārus + label_query: Pielāgots pieprasījums + label_query_plural: Pielāgoti pieprasījumi + label_query_new: Jauns pieprasījums + label_filter_add: Pievienot filtru + label_filter_plural: Filtri + label_equals: ir + label_not_equals: nav + label_in_less_than: ir mazāk kā + label_in_more_than: ir vairāk kā + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: iekš + label_today: šodien + label_all_time: visu laiku + label_yesterday: vakar + label_this_week: šonedēļ + label_last_week: pagājušo šonedēļ + label_last_n_days: "pēdējās %{count} dienas" + label_this_month: šomēnes + label_last_month: pagājušo mēnes + label_this_year: šogad + label_date_range: Datumu apgabals + label_less_than_ago: mazāk kā dienas iepriekš + label_more_than_ago: vairāk kā dienas iepriekš + label_ago: dienas iepriekš + label_contains: satur + label_not_contains: nesatur + label_day_plural: dienas + label_repository: Repozitorijs + label_repository_plural: Repozitoriji + label_browse: Pārlūkot + label_modification: "%{count} izmaiņa" + label_modification_plural: "%{count} izmaiņas" + label_branch: Zars + label_tag: Birka + label_revision: Revīzija + label_revision_plural: Revīzijas + label_revision_id: "Revīzija %{value}" + label_associated_revisions: Saistītās revīzijas + label_added: pievienots + label_modified: modificēts + label_copied: nokopēts + label_renamed: pārsaukts + label_deleted: dzēsts + label_latest_revision: Pēdējā revīzija + label_latest_revision_plural: Pēdējās revīzijas + label_view_revisions: Skatīt revīzijas + label_view_all_revisions: Skatīt visas revīzijas + label_max_size: Maksimālais izmērs + label_sort_highest: Pārvietot uz augšu + label_sort_higher: Pārvietot soli augšup + label_sort_lower: Pārvietot uz leju + label_sort_lowest: Pārvietot vienu soli uz leju + label_roadmap: Ceļvedis + label_roadmap_due_in: "Sagaidāms pēc %{value}" + label_roadmap_overdue: "nokavēts %{value}" + label_roadmap_no_issues: Šai versijai nav uzdevumu + label_search: Meklēt + label_result_plural: Rezultāti + label_all_words: Visi vārdi + label_wiki: Wiki + label_wiki_edit: Wiki labojums + label_wiki_edit_plural: Wiki labojumi + label_wiki_page: Wiki lapa + label_wiki_page_plural: Wiki lapas + label_index_by_title: Indeksēt pēc nosaukuma + label_index_by_date: Indeksēt pēc datuma + label_current_version: Tekošā versija + label_preview: Priekšskatījums + label_feed_plural: Barotnes + label_changes_details: Visu izmaiņu detaļas + label_issue_tracking: Uzdevumu uzskaite + label_spent_time: Pavadītais laiks + label_f_hour: "%{value} stunda" + label_f_hour_plural: "%{value} stundas" + label_time_tracking: Laika uzskaite + label_change_plural: Izmaiņas + label_statistics: Statistika + label_commits_per_month: Nodevumi mēnesī + label_commits_per_author: Nodevumi no autora + label_view_diff: Skatīt atšķirības + label_diff_inline: iekļauts + label_diff_side_by_side: blakus + label_options: Opcijas + label_copy_workflow_from: Kopēt darba plūsmu no + label_permissions_report: Atļauju atskaite + label_watched_issues: Vērotie uzdevumi + label_related_issues: Saistītie uzdevumi + label_applied_status: Piešķirtais statuss + label_loading: Lādējas... + label_relation_new: Jauna relācija + label_relation_delete: Dzēst relāciju + label_relates_to: saistīts ar + label_duplicates: dublikāti + label_duplicated_by: dublējas ar + label_blocks: bloķē + label_blocked_by: nobloķējis + label_precedes: pirms + label_follows: seko + label_end_to_start: no beigām uz sākumu + label_end_to_end: no beigām uz beigām + label_start_to_start: no sākuma uz sākumu + label_start_to_end: no sākuma uz beigām + label_stay_logged_in: Atcerēties mani + label_disabled: izslēgts + label_show_completed_versions: Rādīt pabeigtās versijas + label_me: es + label_board: Forums + label_board_new: Jauns forums + label_board_plural: Forumi + label_board_locked: Slēgts + label_board_sticky: Svarīgs + label_topic_plural: Tēmas + label_message_plural: Ziņas + label_message_last: Pēdējā ziņa + label_message_new: Jauna ziņa + label_message_posted: Ziņa pievienota + label_reply_plural: Atbildes + label_send_information: Sūtīt konta informāciju lietotājam + label_year: Gads + label_month: Mēnesis + label_week: Nedēļa + label_date_from: No + label_date_to: Kam + label_language_based: Izmantot lietotāja valodu + label_sort_by: "Kārtot pēc %{value}" + label_send_test_email: "Sūtīt testa e-pastu" + label_feeds_access_key: RSS piekļuves atslēga + label_missing_feeds_access_key: Trūkst RSS piekļuves atslēgas + label_feeds_access_key_created_on: "RSS piekļuves atslēga izveidota pirms %{value}" + label_module_plural: Moduļi + label_added_time_by: "Pievienojis %{author} pirms %{age}" + label_updated_time_by: "Atjaunojis %{author} pirms %{age}" + label_updated_time: "Atjaunots pirms %{value}" + label_jump_to_a_project: Pāriet uz projektu... + label_file_plural: Datnes + label_changeset_plural: Izmaiņu kopumi + label_default_columns: Noklusētās kolonnas + label_no_change_option: (Nav izmaiņu) + label_bulk_edit_selected_issues: Labot visus izvēlētos uzdevumus + label_theme: Tēma + label_default: Noklusēts + label_search_titles_only: Meklēt tikai nosaukumos + label_user_mail_option_all: "Par visiem notikumiem visos manos projektos" + label_user_mail_option_selected: "Par visiem notikumiem tikai izvēlētajos projektos..." + label_user_mail_no_self_notified: "Neziņot man par izmaiņām, kuras veicu es pats" + label_registration_activation_by_email: "konta aktivizācija caur e-pastu" + label_registration_manual_activation: manuālā konta aktivizācija + label_registration_automatic_activation: automātiskā konta aktivizācija + label_display_per_page: "Rādīt vienā lapā: %{value}" + label_age: Vecums + label_change_properties: Mainīt atribūtus + label_general: Galvenais + label_more: Vēl + label_scm: SCM + label_plugins: Spraudņi + label_ldap_authentication: LDAP pilnvarošana + label_downloads_abbr: L-lād. + label_optional_description: "Apraksts (neobligāts)" + label_add_another_file: Pievienot citu failu + label_preferences: Priekšrocības + label_chronological_order: Hronoloģiskā kārtībā + label_reverse_chronological_order: Apgriezti hronoloģiskā kārtībā + label_planning: Plānošana + label_incoming_emails: "Ienākošie e-pasti" + label_generate_key: Ģenerēt atslēgu + label_issue_watchers: Vērotāji + label_example: Piemērs + label_display: Rādīt + label_sort: Kārtot + label_ascending: Augoši + label_descending: Dilstoši + label_date_from_to: "No %{start} līdz %{end}" + label_wiki_content_added: Wiki lapa pievienota + label_wiki_content_updated: Wiki lapa atjaunota + label_group: Grupa + label_group_plural: Grupas + label_group_new: Jauna grupa + label_time_entry_plural: Pavadītais laiks + label_version_sharing_none: Nav koplietošanai + label_version_sharing_descendants: Ar apakšprojektiem + label_version_sharing_hierarchy: Ar projektu hierarhiju + label_version_sharing_tree: Ar projekta koku + label_version_sharing_system: Ar visiem projektiem + label_update_issue_done_ratios: Atjaunot uzdevuma veikuma attiecību + label_copy_source: Avots + label_copy_target: Mērķis + label_copy_same_as_target: Tāds pats kā mērķis + label_display_used_statuses_only: "Rādīt tikai statusus, ko lieto šis trakeris" + label_api_access_key: API pieejas atslēga + label_missing_api_access_key: Trūkst API pieejas atslēga + label_api_access_key_created_on: "API pieejas atslēga izveidota pirms %{value}" + + button_login: Pieslēgties + button_submit: Nosūtīt + button_save: Saglabāt + button_check_all: Atzīmēt visu + button_uncheck_all: Noņemt visus atzīmējumus + button_delete: Dzēst + button_create: Izveidot + button_create_and_continue: Izveidot un turpināt + button_test: Testēt + button_edit: Labot + button_add: Pievienot + button_change: Mainīt + button_apply: Apstiprināt + button_clear: Notīrīt + button_lock: Slēgt + button_unlock: Atslēgt + button_download: Lejuplādēt + button_list: Saraksts + button_view: Skats + button_move: Pārvietot + button_move_and_follow: Pārvietot un sekot + button_back: Atpakaļ + button_cancel: Atcelt + button_activate: Aktivizēt + button_sort: Kārtot + button_log_time: Ilgs laiks + button_rollback: Atjaunot uz šo versiju + button_watch: Vērot + button_unwatch: Nevērot + button_reply: Atbildēt + button_archive: Arhivēt + button_unarchive: Atarhivēt + button_reset: Atiestatīt + button_rename: Pārsaukt + button_change_password: Mainīt paroli + button_copy: Kopēt + button_copy_and_follow: Kopēt un sekot + button_annotate: Pierakstīt paskaidrojumu + button_update: Atjaunot + button_configure: Konfigurēt + button_quote: Citāts + button_duplicate: Dublēt + button_show: Rādīt + + status_active: aktīvs + status_registered: reģistrēts + status_locked: slēgts + + version_status_open: atvērta + version_status_locked: slēgta + version_status_closed: aizvērta + + field_active: Aktīvs + + text_select_mail_notifications: "Izvēlieties darbības, par kurām vēlaties saņemt ziņojumus e-pastā" + text_regexp_info: "piem. ^[A-Z0-9]+$" + text_min_max_length_info: "0 nozīmē, ka nav ierobežojumu" + text_project_destroy_confirmation: "Vai tiešām vēlaties dzēst šo projektu un ar to saistītos datus?" + text_subprojects_destroy_warning: "Tā apakšprojekts(i): %{value} arī tiks dzēsts(i)." + text_workflow_edit: Lai labotu darba plūsmu, izvēlieties lomu un trakeri + text_are_you_sure: "Vai esat pārliecināts?" + text_journal_changed: "%{label} mainīts no %{old} uz %{new}" + text_journal_set_to: "%{label} iestatīts uz %{value}" + text_journal_deleted: "%{label} dzēsts (%{old})" + text_journal_added: "%{label} %{value} pievienots" + text_tip_issue_begin_day: uzdevums sākas šodien + text_tip_issue_end_day: uzdevums beidzas šodien + text_tip_issue_begin_end_day: uzdevums sākas un beidzas šodien + text_project_identifier_info: 'Tikai mazie burti (a-z), cipari un domuzīmes ir atļauti.
    Kad saglabāts, identifikators nevar tikt mainīts.' + text_caracters_maximum: "%{count} simboli maksimāli." + text_caracters_minimum: "Jābūt vismaz %{count} simbolu garumā." + text_length_between: "Garums starp %{min} un %{max} simboliem." + text_tracker_no_workflow: Šim trakerim nav definēta darba plūsma + text_unallowed_characters: Neatļauti simboli + text_comma_separated: "Atļautas vairākas vērtības (atdalīt ar komatu)." + text_line_separated: "Atļautas vairākas vērtības (rakstīt katru savā rindā)." + text_issues_ref_in_commit_messages: "Izmaiņu salīdzināšana izejot no ziņojumiem" + text_issue_added: "Uzdevumu %{id} pievienojis %{author}." + text_issue_updated: "Uzdevumu %{id} atjaunojis %{author}." + text_wiki_destroy_confirmation: "Vai esat drošs, ka vēlaties dzēst šo wiki un visu tās saturu?" + text_issue_category_destroy_question: "Daži uzdevumi (%{count}) ir nozīmēti šai kategorijai. Ko Jūs vēlaties darīt?" + text_issue_category_destroy_assignments: Dzēst kategoriju nozīmējumus + text_issue_category_reassign_to: Nozīmēt uzdevumus šai kategorijai + text_user_mail_option: "No neizvēlētajiem projektiem Jūs saņemsiet ziņojumus e-pastā tikai par notikumiem, kuriem Jūs sekojat vai kuros esat iesaistīts." + text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plūsmas vēl nav konfigurētas.\nĻoti ieteicams ielādēt noklusēto konfigurāciju. Pēc ielādēšanas to būs iespējams modificēt." + text_load_default_configuration: Ielādēt noklusēto konfigurāciju + text_status_changed_by_changeset: "Apstiprināts izmaiņu kopumā %{value}." + text_issues_destroy_confirmation: 'Vai tiešām vēlaties dzēst izvēlēto uzdevumu(us)?' + text_select_project_modules: 'Izvēlieties moduļus šim projektam:' + text_default_administrator_account_changed: Noklusētais administratora konts mainīts + text_file_repository_writable: Pielikumu direktorijā atļauts rakstīt + text_plugin_assets_writable: Spraudņu kataloga direktorijā atļauts rakstīt + text_rmagick_available: "RMagick pieejams (neobligāts)" + text_destroy_time_entries_question: "%{hours} stundas tika ziņotas par uzdevumu, ko vēlaties dzēst. Ko darīt?" + text_destroy_time_entries: Dzēst ziņotās stundas + text_assign_time_entries_to_project: Piešķirt ziņotās stundas projektam + text_reassign_time_entries: 'Piešķirt ziņotās stundas uzdevumam:' + text_user_wrote: "%{value} rakstīja:" + text_enumeration_destroy_question: "%{count} objekti ir piešķirti šai vērtībai." + text_enumeration_category_reassign_to: 'Piešķirt tos šai vērtībai:' + text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/configuration.yml un pārstartējiet lietotni." + text_repository_usernames_mapping: "Izvēlieties vai atjaunojiet Redmine lietotāju, saistītu ar katru lietotājvārdu, kas atrodams repozitorija žurnālā.\nLietotāji ar to pašu Redmine un repozitorija lietotājvārdu būs saistīti automātiski." + text_diff_truncated: '... Šis diff tika nošķelts, jo tas pārsniedz maksimālo izmēru, ko var parādīt.' + text_custom_field_possible_values_info: 'Katra vērtības savā rindā' + text_wiki_page_destroy_question: "Šij lapai ir %{descendants} apakšlapa(as) un pēcnācēji. Ko darīt?" + text_wiki_page_nullify_children: "Paturēt apakšlapas kā pamatlapas" + text_wiki_page_destroy_children: "Dzēst apakšlapas un visus pēcnācējus" + text_wiki_page_reassign_children: "Piešķirt apakšlapas šai lapai" + text_own_membership_delete_confirmation: "Jūs tūlīt dzēsīsiet dažas vai visas atļaujas, un Jums pēc tam var nebūt atļauja labot šo projektu.\nVai turpināt?" + + default_role_manager: Menedžeris + default_role_developer: Izstrādātājs + default_role_reporter: Ziņotājs + default_tracker_bug: Kļūda + default_tracker_feature: Iezīme + default_tracker_support: Atbalsts + default_issue_status_new: Jauns + default_issue_status_in_progress: Attīstībā + default_issue_status_resolved: Atrisināts + default_issue_status_feedback: Atsauksmes + default_issue_status_closed: Slēgts + default_issue_status_rejected: Noraidīts + default_doc_category_user: Lietotāja dokumentācija + default_doc_category_tech: Tehniskā dokumentācija + default_priority_low: Zema + default_priority_normal: Normāla + default_priority_high: Augsta + default_priority_urgent: Steidzama + default_priority_immediate: Tūlītēja + default_activity_design: Dizains + default_activity_development: Izstrādāšana + + enumeration_issue_priorities: Uzdevumu prioritātes + enumeration_doc_categories: Dokumentu kategorijas + enumeration_activities: Aktivitātes (laika uzskaite) + enumeration_system_activity: Sistēmas aktivitātes + + error_can_not_delete_custom_field: Unable to delete custom field + permission_manage_subtasks: Manage subtasks + label_profile: Profile + error_unable_to_connect: Unable to connect (%{value}) + error_can_not_remove_role: This role is in use and can not be deleted. + field_parent_issue: Parent task + error_unable_delete_issue_status: Unable to delete issue status + label_subtask_plural: Subtasks + error_can_not_delete_tracker: This tracker contains issues and can't be deleted. + label_project_copy_notifications: Send email notifications during the project copy + field_principal: Principal + label_my_page_block: My page block + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + text_zoom_out: Zoom out + text_zoom_in: Zoom in + notice_unable_delete_time_entry: Unable to delete time log entry. + label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodēt ziņojumus + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/mk.yml.svn-base --- a/config/locales/.svn/text-base/mk.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/mk.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,942 +1,978 @@ -mk: - # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d/%m/%Y" - short: "%d %b" - long: "%d %B, %Y" - - day_names: [недела, понеделник, вторник, среда, четврток, петок, сабота] - abbr_day_names: [нед, пон, вто, сре, чет, пет, саб] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, јануари, февруари, март, април, мај, јуни, јули, август, септември, октомври, ноември, декември] - abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, сеп, окт, ное, дек] - # Used in date_select and datime_select. - order: [ :day, :month, :year ] - - time: - formats: - default: "%d/%m/%Y %H:%M" - time: "%H:%M" - short: "%d %b %H:%M" - long: "%d %B, %Y %H:%M" - am: "предпладне" - pm: "попладне" - - datetime: - distance_in_words: - half_a_minute: "пола минута" - less_than_x_seconds: - one: "помалку од 1 секунда" - other: "помалку од %{count} секунди" - x_seconds: - one: "1 секунда" - other: "%{count} секунди" - less_than_x_minutes: - one: "помалку од 1 минута" - other: "помалку од %{count} минути" - x_minutes: - one: "1 минута" - other: "%{count} минути" - about_x_hours: - one: "околу 1 час" - other: "околу %{count} часа" - x_days: - one: "1 ден" - other: "%{count} дена" - about_x_months: - one: "околу 1 месец" - other: "околу %{count} месеци" - x_months: - one: "1 месец" - other: "%{count} месеци" - about_x_years: - one: "околу 1 година" - other: "околу %{count} години" - over_x_years: - one: "преку 1 година" - other: "преку %{count} години" - almost_x_years: - one: "скоро 1 година" - other: "скоро %{count} години" - - number: - # Default format for numbers - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "и" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "не е вклучено во листата" - exclusion: "е резервирано" - invalid: "е невалидно" - confirmation: "не се совпаѓа со потврдата" - accepted: "мора да е прифатено" - empty: "неможе да е празно" - blank: "неможе да е празно" - too_long: "е предолго (макс. %{count} знаци)" - too_short: "е прекратко (мин. %{count} знаци)" - wrong_length: "е погрешна должина (треба да е %{count} знаци)" - taken: "е веќе зафатено" - not_a_number: "не е број" - not_a_date: "не е валидна дата" - greater_than: "мора да е поголемо од %{count}" - greater_than_or_equal_to: "мора да е поголемо или еднакво на %{count}" - equal_to: "мора да е еднакво на %{count}" - less_than: "мора да е помало од %{count}" - less_than_or_equal_to: "мора да е помало или еднакво на %{count}" - odd: "мора да е непарно" - even: "мора да е парно" - greater_than_start_date: "мора да е поголема од почетната дата" - not_same_project: "не припаѓа на истиот проект" - circular_dependency: "Оваа врска ќе креира кружна зависност" - cant_link_an_issue_with_a_descendant: "Задача неможе да се поврзе со една од нејзините подзадачи" - - actionview_instancetag_blank_option: Изберете - - general_text_No: 'Не' - general_text_Yes: 'Да' - general_text_no: 'не' - general_text_yes: 'да' - general_lang_name: 'Macedonian (Македонски)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Профилот е успешно ажуриран. - notice_account_invalid_creditentials: Неточен корисник или лозинка - notice_account_password_updated: Лозинката е успешно ажурирана. - notice_account_wrong_password: Погрешна лозинка - notice_account_register_done: Профилот е успешно креиран. За активација, клкнете на врската што ви е пратена по е-пошта. - notice_account_unknown_email: Непознат корисник. - notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. - notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. - notice_account_activated: Your account has been activated. You can now log in. - notice_successful_create: Успешно креирање. - notice_successful_update: Успешно ажурирање. - notice_successful_delete: Успешно бришење. - notice_successful_connection: Успешна конекција. - notice_file_not_found: The page you were trying to access doesn't exist or has been removed. - notice_locking_conflict: Data has been updated by another user. - notice_not_authorized: You are not authorized to access this page. - notice_email_sent: "Е-порака е пратена на %{value}" - notice_email_error: "Се случи грешка при праќање на е-пораката (%{value})" - notice_feeds_access_key_reseted: Вашиот RSS клуч за пристап е reset. - notice_api_access_key_reseted: Вашиот API клуч за пристап е reset. - notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." - notice_account_pending: "Your account was created and is now pending administrator approval." - notice_default_data_loaded: Default configuration successfully loaded. - notice_unable_delete_version: Unable to delete version. - notice_unable_delete_time_entry: Unable to delete time log entry. - notice_issue_done_ratios_updated: Issue done ratios updated. - - error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" - error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or can not be annotated." - error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_delete_custom_field: Unable to delete custom field - error_can_not_delete_tracker: "This tracker contains issues and can't be deleted." - error_can_not_remove_role: "This role is in use and can not be deleted." - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - error_unable_delete_issue_status: 'Unable to delete issue status' - error_unable_to_connect: "Unable to connect (%{value})" - warning_attachments_not_saved: "%{count} file(s) could not be saved." - - mail_subject_lost_password: "Вашата %{value} лозинка" - mail_body_lost_password: 'To change your password, click on the following link:' - mail_subject_register: "Your %{value} account activation" - mail_body_register: 'To activate your account, click on the following link:' - mail_body_account_information_external: "You can use your %{value} account to log in." - mail_body_account_information: Your account information - mail_subject_account_activation_request: "%{value} account activation request" - mail_body_account_activation_request: "Нов корисник (%{value}) е регистриран. The account is pending your approval:" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 грешка - gui_validation_error_plural: "%{count} грешки" - - field_name: Име - field_description: Опис - field_summary: Краток опис - field_is_required: Задолжително - field_firstname: Име - field_lastname: Презиме - field_mail: Е-пошта - field_filename: Датотека - field_filesize: Големина - field_downloads: Превземања - field_author: Автор - field_created_on: Креиран - field_updated_on: Ажурирано - field_field_format: Формат - field_is_for_all: За сите проекти - field_possible_values: Можни вредности - field_regexp: Regular expression - field_min_length: Минимална должина - field_max_length: Максимална должина - field_value: Вредност - field_category: Категорија - field_title: Наслов - field_project: Проект - field_issue: Задача - field_status: Статус - field_notes: Белешки - field_is_closed: Задачата е затворена - field_is_default: Default value - field_tracker: Tracker - field_subject: Наслов - field_due_date: Краен рок - field_assigned_to: Доделена на - field_priority: Приоритет - field_fixed_version: Target version - field_user: Корисник - field_principal: Principal - field_role: Улога - field_homepage: Веб страна - field_is_public: Јавен - field_parent: Подпроект на - field_is_in_roadmap: Issues displayed in roadmap - field_login: Корисник - field_mail_notification: Известувања по e-пошта - field_admin: Администратор - field_last_login_on: Последна најава - field_language: Јазик - field_effective_date: Дата - field_password: Лозинка - field_new_password: Нова лозинка - field_password_confirmation: Потврда - field_version: Верзија - field_type: Тип - field_host: Хост - field_port: Порт - field_account: Account - field_base_dn: Base DN - field_attr_login: Login attribute - field_attr_firstname: Firstname attribute - field_attr_lastname: Lastname attribute - field_attr_mail: Email attribute - field_onthefly: Моментално (On-the-fly) креирање на корисници - field_start_date: Почеток - field_done_ratio: % Завршено - field_auth_source: Режим на автентикација - field_hide_mail: Криј ја мојата адреса на е-пошта - field_comments: Коментар - field_url: URL - field_start_page: Почетна страна - field_subproject: Подпроект - field_hours: Часови - field_activity: Активност - field_spent_on: Дата - field_identifier: Идентификатор - field_is_filter: Користи како филтер - field_issue_to: Поврзана задача - field_delay: Доцнење - field_assignable: На оваа улога може да се доделуваат задачи - field_redirect_existing_links: Пренасочи ги постоечките врски - field_estimated_hours: Проценето време - field_column_names: Колони - field_time_entries: Бележи време - field_time_zone: Временска зона - field_searchable: Може да се пребарува - field_default_value: Default value - field_comments_sorting: Прикажувај коментари - field_parent_title: Parent page - field_editable: Може да се уредува - field_watcher: Watcher - field_identity_url: OpenID URL - field_content: Содржина - field_group_by: Групирај ги резултатите според - field_sharing: Споделување - field_parent_issue: Parent task - - setting_app_title: Наслов на апликацијата - setting_app_subtitle: Поднаслов на апликацијата - setting_welcome_text: Текст за добредојде - setting_default_language: Default јазик - setting_login_required: Задолжителна автентикација - setting_self_registration: Само-регистрација - setting_attachment_max_size: Макс. големина на прилог - setting_issues_export_limit: Issues export limit - setting_mail_from: Emission email address - setting_bcc_recipients: Blind carbon copy recipients (bcc) - setting_plain_text_mail: Текстуални е-пораки (без HTML) - setting_host_name: Име на хост и патека - setting_text_formatting: Форматирање на текст - setting_wiki_compression: Компресија на историјата на вики - setting_feeds_limit: Feed content limit - setting_default_projects_public: Новите проекти се иницијално јавни - setting_autofetch_changesets: Autofetch commits - setting_sys_api_enabled: Enable WS for repository management - setting_commit_ref_keywords: Referencing keywords - setting_commit_fix_keywords: Fixing keywords - setting_autologin: Автоматска најава - setting_date_format: Формат на дата - setting_time_format: Формат на време - setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти - setting_issue_list_default_columns: Default columns displayed on the issue list - setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding - setting_emails_footer: Emails footer - setting_protocol: Протокол - setting_per_page_options: Objects per page options - setting_user_format: Приказ на корисниците - setting_activity_days_default: Денови прикажана во активноста на проектот - setting_display_subprojects_issues: Прикажи ги задачите на подпроектите во главните проекти - setting_enabled_scm: Овозможи SCM - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Enable WS for incoming emails - setting_mail_handler_api_key: API клуч - setting_sequential_project_identifiers: Генерирај последователни идентификатори на проекти - setting_gravatar_enabled: Користи Gravatar кориснички икони - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Max number of diff lines displayed - setting_file_max_size_displayed: Max size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Дозволи OpenID најава и регистрација - setting_password_min_length: Мин. должина на лозинка - setting_new_project_user_role_id: Улога доделена на неадминистраторски корисник кој креира проект - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - - permission_add_project: Креирај проекти - permission_add_subprojects: Креирај подпроекти - permission_edit_project: Уреди проект - permission_select_project_modules: Изберете модули за проект - permission_manage_members: Manage members - permission_manage_project_activities: Manage project activities - permission_manage_versions: Manage versions - permission_manage_categories: Manage issue categories - permission_view_issues: Прегледај задачи - permission_add_issues: Додавај задачи - permission_edit_issues: Уредувај задачи - permission_manage_issue_relations: Manage issue relations - permission_add_issue_notes: Додавај белешки - permission_edit_issue_notes: Уредувај белешки - permission_edit_own_issue_notes: Уредувај сопствени белешки - permission_move_issues: Преместувај задачи - permission_delete_issues: Бриши задачи - permission_manage_public_queries: Manage public queries - permission_save_queries: Save queries - permission_view_gantt: View gantt chart - permission_view_calendar: View calendar - permission_view_issue_watchers: View watchers list - permission_add_issue_watchers: Add watchers - permission_delete_issue_watchers: Delete watchers - permission_log_time: Бележи потрошено време - permission_view_time_entries: Прегледај потрошено време - permission_edit_time_entries: Уредувај белешки за потрошено време - permission_edit_own_time_entries: Уредувај сопствени белешки за потрошено време - permission_manage_news: Manage news - permission_comment_news: Коментирај на вести - permission_manage_documents: Manage documents - permission_view_documents: Прегледувај документи - permission_manage_files: Manage files - permission_view_files: Прегледувај датотеки - permission_manage_wiki: Manage wiki - permission_rename_wiki_pages: Преименувај вики страници - permission_delete_wiki_pages: Бриши вики страници - permission_view_wiki_pages: Прегледувај вики - permission_view_wiki_edits: Прегледувај вики историја - permission_edit_wiki_pages: Уредувај вики страници - permission_delete_wiki_pages_attachments: Бриши прилози - permission_protect_wiki_pages: Заштитувај вики страници - permission_manage_repository: Manage repository - permission_browse_repository: Browse repository - permission_view_changesets: View changesets - permission_commit_access: Commit access - permission_manage_boards: Manage boards - permission_view_messages: View messages - permission_add_messages: Post messages - permission_edit_messages: Уредувај пораки - permission_edit_own_messages: Уредувај сопствени пораки - permission_delete_messages: Бриши пораки - permission_delete_own_messages: Бриши сопствени пораки - permission_export_wiki_pages: Export wiki pages - permission_manage_subtasks: Manage subtasks - - project_module_issue_tracking: Следење на задачи - project_module_time_tracking: Следење на време - project_module_news: Вести - project_module_documents: Документи - project_module_files: Датотеки - project_module_wiki: Вики - project_module_repository: Repository - project_module_boards: Форуми - project_module_calendar: Календар - project_module_gantt: Gantt - - label_user: Корисник - label_user_plural: Корисници - label_user_new: Нов корисник - label_user_anonymous: Анонимен - label_project: Проект - label_project_new: Нов проект - label_project_plural: Проекти - label_x_projects: - zero: нема проекти - one: 1 проект - other: "%{count} проекти" - label_project_all: Сите проекти - label_project_latest: Последните проекти - label_issue: Задача - label_issue_new: Нова задача - label_issue_plural: Задачи - label_issue_view_all: Прегледај ги сите задачи - label_issues_by: "Задачи по %{value}" - label_issue_added: Задачата е додадена - label_issue_updated: Задачата е ажурирана - label_document: Документ - label_document_new: Нов документ - label_document_plural: Документи - label_document_added: Документот е додаден - label_role: Улога - label_role_plural: Улоги - label_role_new: Нова улога - label_role_and_permissions: Улоги и овластувања - label_member: Член - label_member_new: Нов член - label_member_plural: Членови - label_tracker: Tracker - label_tracker_plural: Trackers - label_tracker_new: New tracker - label_workflow: Workflow - label_issue_status: Статус на задача - label_issue_status_plural: Статуси на задачи - label_issue_status_new: Нов статус - label_issue_category: Категорија на задача - label_issue_category_plural: Категории на задачи - label_issue_category_new: Нова категорија - label_custom_field: Прилагодено поле - label_custom_field_plural: Прилагодени полиња - label_custom_field_new: Ново прилагодено поле - label_enumerations: Enumerations - label_enumeration_new: Нова вредност - label_information: Информација - label_information_plural: Информации - label_please_login: Најави се - label_register: Регистрирај се - label_login_with_open_id_option: или најави се со OpenID - label_password_lost: Изгубена лозинка - label_home: Почетна - label_my_page: Мојата страна - label_my_account: Мојот профил - label_my_projects: Мои проекти - label_my_page_block: Блок елемент - label_administration: Администрација - label_login: Најави се - label_logout: Одјави се - label_help: Помош - label_reported_issues: Пријавени задачи - label_assigned_to_me_issues: Задачи доделени на мене - label_last_login: Последна најава - label_registered_on: Регистриран на - label_activity: Активност - label_overall_activity: Севкупна активност - label_user_activity: "Активност на %{value}" - label_new: Нова - label_logged_as: Најавени сте како - label_environment: Опкружување - label_authentication: Автентикација - label_auth_source: Режим на автентикација - label_auth_source_new: Нов режим на автентикација - label_auth_source_plural: Режими на автентикација - label_subproject_plural: Подпроекти - label_subproject_new: Нов подпроект - label_and_its_subprojects: "%{value} и неговите подпроекти" - label_min_max_length: Мин. - Макс. должина - label_list: Листа - label_date: Дата - label_integer: Integer - label_float: Float - label_boolean: Boolean - label_string: Текст - label_text: Долг текст - label_attribute: Атрибут - label_attribute_plural: Атрибути - label_download: "%{count} превземање" - label_download_plural: "%{count} превземања" - label_no_data: Нема податоци за прикажување - label_change_status: Промени статус - label_history: Историја - label_attachment: Датотека - label_attachment_new: Нова датотека - label_attachment_delete: Избриши датотека - label_attachment_plural: Датотеки - label_file_added: Датотеката е додадена - label_report: Извештај - label_report_plural: Извештаи - label_news: Новост - label_news_new: Додади новост - label_news_plural: Новости - label_news_latest: Последни новости - label_news_view_all: Прегледај ги сите новости - label_news_added: Новостта е додадена - label_settings: Settings - label_overview: Преглед - label_version: Верзија - label_version_new: Нова верзија - label_version_plural: Верзии - label_close_versions: Затвори ги завршените врзии - label_confirmation: Потврда - label_export_to: 'Достапно и во:' - label_read: Прочитај... - label_public_projects: Јавни проекти - label_open_issues: отворена - label_open_issues_plural: отворени - label_closed_issues: затворена - label_closed_issues_plural: затворени - label_x_open_issues_abbr_on_total: - zero: 0 отворени / %{total} - one: 1 отворена / %{total} - other: "%{count} отворени / %{total}" - label_x_open_issues_abbr: - zero: 0 отворени - one: 1 отворена - other: "%{count} отворени" - label_x_closed_issues_abbr: - zero: 0 затворени - one: 1 затворена - other: "%{count} затворени" - label_total: Вкупно - label_permissions: Овластувања - label_current_status: Моментален статус - label_new_statuses_allowed: Дозволени нови статуси - label_all: сите - label_none: ниеден - label_nobody: никој - label_next: Следно - label_previous: Претходно - label_used_by: Користено од - label_details: Детали - label_add_note: Додади белешка - label_per_page: По страна - label_calendar: Календар - label_months_from: месеци од - label_gantt: Gantt - label_internal: Internal - label_last_changes: "последни %{count} промени" - label_change_view_all: Прегледај ги сите промени - label_personalize_page: Прилагоди ја странава - label_comment: Коментар - label_comment_plural: Коментари - label_x_comments: - zero: нема коментари - one: 1 коментар - other: "%{count} коментари" - label_comment_add: Додади коментар - label_comment_added: Коментарот е додаден - label_comment_delete: Избриши коментари - label_query: Custom query - label_query_plural: Custom queries - label_query_new: New query - label_filter_add: Додади филтер - label_filter_plural: Филтри - label_equals: е - label_not_equals: не е - label_in_less_than: за помалку од - label_in_more_than: за повеќе од - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: во - label_today: денес - label_all_time: цело време - label_yesterday: вчера - label_this_week: оваа недела - label_last_week: минатата недела - label_last_n_days: "последните %{count} дена" - label_this_month: овој месец - label_last_month: минатиот месец - label_this_year: оваа година - label_date_range: Date range - label_less_than_ago: пред помалку од денови - label_more_than_ago: пред повеќе од денови - label_ago: пред денови - label_contains: содржи - label_not_contains: не содржи - label_day_plural: денови - label_repository: Складиште - label_repository_plural: Складишта - label_browse: Прелистувај - label_modification: "%{count} промени" - label_modification_plural: "%{count} промени" - label_branch: Гранка - label_tag: Tag - label_revision: Ревизија - label_revision_plural: Ревизии - label_revision_id: "Ревизија %{value}" - label_associated_revisions: Associated revisions - label_added: added - label_modified: modified - label_copied: copied - label_renamed: renamed - label_deleted: deleted - label_latest_revision: Последна ревизија - label_latest_revision_plural: Последни ревизии - label_view_revisions: Прегледај ги ревизиите - label_view_all_revisions: Прегледај ги сите ревизии - label_max_size: Макс. големина - label_sort_highest: Премести најгоре - label_sort_higher: Премести нагоре - label_sort_lower: Премести надоле - label_sort_lowest: Премести најдоле - label_roadmap: Roadmap - label_roadmap_due_in: "Due in %{value}" - label_roadmap_overdue: "Касни %{value}" - label_roadmap_no_issues: Нема задачи за оваа верзија - label_search: Барај - label_result_plural: Резултати - label_all_words: Сите зборови - label_wiki: Вики - label_wiki_edit: Вики уредување - label_wiki_edit_plural: Вики уредувања - label_wiki_page: Вики страница - label_wiki_page_plural: Вики страници - label_index_by_title: Индекс по наслов - label_index_by_date: Индекс по дата - label_current_version: Current version - label_preview: Preview - label_feed_plural: Feeds - label_changes_details: Детали за сите промени - label_issue_tracking: Следење на задачи - label_spent_time: Потрошено време - label_overall_spent_time: Вкупно потрошено време - label_f_hour: "%{value} час" - label_f_hour_plural: "%{value} часа" - label_time_tracking: Следење на време - label_change_plural: Промени - label_statistics: Статистики - label_commits_per_month: Commits per month - label_commits_per_author: Commits per author - label_view_diff: View differences - label_diff_inline: inline - label_diff_side_by_side: side by side - label_options: Опции - label_copy_workflow_from: Copy workflow from - label_permissions_report: Permissions report - label_watched_issues: Watched issues - label_related_issues: Поврзани задачи - label_applied_status: Applied status - label_loading: Loading... - label_relation_new: Нова релација - label_relation_delete: Избриши релација - label_relates_to: related to - label_duplicates: дупликати - label_duplicated_by: duplicated by - label_blocks: blocks - label_blocked_by: блокирано од - label_precedes: претходи - label_follows: следи - label_end_to_start: крај до почеток - label_end_to_end: крај до крај - label_start_to_start: почеток до почеток - label_start_to_end: почеток до крај - label_stay_logged_in: Останете најавени - label_disabled: disabled - label_show_completed_versions: Show completed versions - label_me: јас - label_board: Форум - label_board_new: Нов форум - label_board_plural: Форуми - label_board_locked: Заклучен - label_board_sticky: Sticky - label_topic_plural: Теми - label_message_plural: Пораки - label_message_last: Последна порака - label_message_new: Нова порака - label_message_posted: Поракате е додадена - label_reply_plural: Одговори - label_send_information: Испрати ги информациите за профилот на корисникот - label_year: Година - label_month: Месец - label_week: Недела - label_date_from: Од - label_date_to: До - label_language_based: Според јазикот на корисникот - label_sort_by: "Подреди според %{value}" - label_send_test_email: Испрати тест е-порака - label_feeds_access_key: RSS клуч за пристап - label_missing_feeds_access_key: Недостика RSS клуч за пристап - label_feeds_access_key_created_on: "RSS клучот за пристап креиран пред %{value}" - label_module_plural: Модули - label_added_time_by: "Додадено од %{author} пред %{age}" - label_updated_time_by: "Ажурирано од %{author} пред %{age}" - label_updated_time: "Ажурирано пред %{value}" - label_jump_to_a_project: Префрли се на проект... - label_file_plural: Датотеки - label_changeset_plural: Changesets - label_default_columns: Основни колони - label_no_change_option: (Без промена) - label_bulk_edit_selected_issues: Групно уредување на задачи - label_theme: Тема - label_default: Default - label_search_titles_only: Пребарувај само наслови - label_user_mail_option_all: "За било кој настан во сите мои проекти" - label_user_mail_option_selected: "За било кој настан само во избраните проекти..." - label_user_mail_no_self_notified: "Не ме известувај за промените што јас ги правам" - label_registration_activation_by_email: активација на профил преку е-пошта - label_registration_manual_activation: мануелна активација на профил - label_registration_automatic_activation: автоматска активација на профил - label_display_per_page: "По страна: %{value}" - label_age: Age - label_change_properties: Change properties - label_general: Општо - label_more: Повеќе - label_scm: SCM - label_plugins: Додатоци - label_ldap_authentication: LDAP автентикација - label_downloads_abbr: Превземања - label_optional_description: Опис (незадолжително) - label_add_another_file: Додади уште една датотека - label_preferences: Preferences - label_chronological_order: Во хронолошки ред - label_reverse_chronological_order: In reverse chronological order - label_planning: Планирање - label_incoming_emails: Дојдовни е-пораки - label_generate_key: Генерирај клуч - label_issue_watchers: Watchers - label_example: Пример - label_display: Прикажи - label_sort: Подреди - label_ascending: Растечки - label_descending: Опаѓачки - label_date_from_to: Од %{start} до %{end} - label_wiki_content_added: Вики страница додадена - label_wiki_content_updated: Вики страница ажурирана - label_group: Група - label_group_plural: Групи - label_group_new: Нова група - label_time_entry_plural: Потрошено време - label_version_sharing_none: Не споделено - label_version_sharing_descendants: Со сите подпроекти - label_version_sharing_hierarchy: Со хиерархијата на проектот - label_version_sharing_tree: Со дрвото на проектот - label_version_sharing_system: Со сите проекти - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Извор - label_copy_target: Дестинација - label_copy_same_as_target: Исто како дестинацијата - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API клуч за пристап - label_missing_api_access_key: Недостига API клуч за пристап - label_api_access_key_created_on: "API клучот за пристап е креиран пред %{value}" - label_profile: Профил - label_subtask_plural: Подзадачи - label_project_copy_notifications: Праќај известувања по е-пошта при копирање на проект - - button_login: Најави се - button_submit: Испрати - button_save: Зачувај - button_check_all: Штиклирај ги сите - button_uncheck_all: Одштиклирај ги сите - button_delete: Избриши - button_create: Креирај - button_create_and_continue: Креирај и продолжи - button_test: Тест - button_edit: Уреди - button_add: Додади - button_change: Промени - button_apply: Примени - button_clear: Избриши - button_lock: Заклучи - button_unlock: Отклучи - button_download: Превземи - button_list: List - button_view: Прегледај - button_move: Премести - button_move_and_follow: Премести и следи - button_back: Back - button_cancel: Откажи - button_activate: Активирај - button_sort: Подреди - button_log_time: Бележи време - button_rollback: Rollback to this version - button_watch: Следи - button_unwatch: Не следи - button_reply: Одговори - button_archive: Архивирај - button_unarchive: Одархивирај - button_reset: Reset - button_rename: Преименувај - button_change_password: Промени лозинка - button_copy: Копирај - button_copy_and_follow: Копирај и следи - button_annotate: Annotate - button_update: Ажурирај - button_configure: Конфигурирај - button_quote: Цитирај - button_duplicate: Копирај - button_show: Show - - status_active: активни - status_registered: регистрирани - status_locked: заклучени - - version_status_open: отворени - version_status_locked: заклучени - version_status_closed: затворени - - field_active: Active - - text_select_mail_notifications: Изберете за кои настани да се праќаат известувања по е-пошта да се праќаат. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 значи без ограничување - text_project_destroy_confirmation: Дали сте сигурни дека сакате да го избришете проектот и сите поврзани податоци? - text_subprojects_destroy_warning: "Неговите подпроекти: %{value} исто така ќе бидат избришани." - text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Дали сте сигурни? - text_journal_changed: "%{label} променето од %{old} во %{new}" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} избришан (%{old})" - text_journal_added: "%{label} %{value} додаден" - text_tip_issue_begin_day: задачи што почнуваат овој ден - text_tip_issue_end_day: задачи што завршуваат овој ден - text_tip_issue_begin_end_day: задачи што почнуваат и завршуваат овој ден - text_project_identifier_info: 'Само мали букви (a-z), бројки и dashes се дозволени
    По зачувувањето, идентификаторот неможе да се смени.' - text_caracters_maximum: "%{count} знаци максимум." - text_caracters_minimum: "Мора да е најмалку %{count} знаци долго." - text_length_between: "Должина помеѓу %{min} и %{max} знаци." - text_tracker_no_workflow: No workflow defined for this tracker - text_unallowed_characters: Недозволени знаци - text_comma_separated: Дозволени се повеќе вредности (разделени со запирка). - text_line_separated: Дозволени се повеќе вредности (една линија за секоја вредност). - text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Задачата %{id} е пријавена од %{author}." - text_issue_updated: "Задачата %{id} е ажурирана од %{author}." - text_wiki_destroy_confirmation: Дали сте сигурни дека сакате да го избришете ова вики и целата негова содржина? - text_issue_category_destroy_question: "Некои задачи (%{count}) се доделени на оваа категорија. Што сакате да правите?" - text_issue_category_destroy_assignments: Remove category assignments - text_issue_category_reassign_to: Додели ги задачите на оваа категорија - text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." - text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." - text_load_default_configuration: Load the default configuration - text_status_changed_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Дали сте сигурни дека сакате да ги избришете избраните задачи?' - text_select_project_modules: 'Изберете модули за овој проект:' - text_default_administrator_account_changed: Default administrator account changed - text_file_repository_writable: Во папката за прилози може да се запишува - text_plugin_assets_writable: Во папката за додатоци може да се запишува - text_rmagick_available: RMagick available (незадолжително) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?" - text_destroy_time_entries: Delete reported hours - text_assign_time_entries_to_project: Додели ги пријавените часови на проектот - text_reassign_time_entries: 'Reassign reported hours to this issue:' - text_user_wrote: "%{value} напиша:" - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/configuration.yml и рестартирајте ја апликацијата." - text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - text_zoom_in: Zoom in - text_zoom_out: Zoom out - - default_role_manager: Менаџер - default_role_developer: Developer - default_role_reporter: Reporter - default_tracker_bug: Грешка - default_tracker_feature: Функционалност - default_tracker_support: Поддршка - default_issue_status_new: Нова - default_issue_status_in_progress: Во прогрес - default_issue_status_resolved: Разрешена - default_issue_status_feedback: Feedback - default_issue_status_closed: Затворена - default_issue_status_rejected: Одбиена - default_doc_category_user: Корисничка документација - default_doc_category_tech: Техничка документација - default_priority_low: Низок - default_priority_normal: Нормален - default_priority_high: Висок - default_priority_urgent: Итно - default_priority_immediate: Веднаш - default_activity_design: Дизајн - default_activity_development: Развој - - enumeration_issue_priorities: Приоритети на задача - enumeration_doc_categories: Категории на документ - enumeration_activities: Активности (следење на време) - enumeration_system_activity: Системска активност - - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +mk: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d/%m/%Y" + short: "%d %b" + long: "%d %B, %Y" + + day_names: [недела, понеделник, вторник, среда, четврток, петок, сабота] + abbr_day_names: [нед, пон, вто, сре, чет, пет, саб] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, јануари, февруари, март, април, мај, јуни, јули, август, септември, октомври, ноември, декември] + abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, сеп, окт, ное, дек] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%d/%m/%Y %H:%M" + time: "%H:%M" + short: "%d %b %H:%M" + long: "%d %B, %Y %H:%M" + am: "предпладне" + pm: "попладне" + + datetime: + distance_in_words: + half_a_minute: "пола минута" + less_than_x_seconds: + one: "помалку од 1 секунда" + other: "помалку од %{count} секунди" + x_seconds: + one: "1 секунда" + other: "%{count} секунди" + less_than_x_minutes: + one: "помалку од 1 минута" + other: "помалку од %{count} минути" + x_minutes: + one: "1 минута" + other: "%{count} минути" + about_x_hours: + one: "околу 1 час" + other: "околу %{count} часа" + x_days: + one: "1 ден" + other: "%{count} дена" + about_x_months: + one: "околу 1 месец" + other: "околу %{count} месеци" + x_months: + one: "1 месец" + other: "%{count} месеци" + about_x_years: + one: "околу 1 година" + other: "околу %{count} години" + over_x_years: + one: "преку 1 година" + other: "преку %{count} години" + almost_x_years: + one: "скоро 1 година" + other: "скоро %{count} години" + + number: + # Default format for numbers + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "и" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "не е вклучено во листата" + exclusion: "е резервирано" + invalid: "е невалидно" + confirmation: "не се совпаѓа со потврдата" + accepted: "мора да е прифатено" + empty: "неможе да е празно" + blank: "неможе да е празно" + too_long: "е предолго (макс. %{count} знаци)" + too_short: "е прекратко (мин. %{count} знаци)" + wrong_length: "е погрешна должина (треба да е %{count} знаци)" + taken: "е веќе зафатено" + not_a_number: "не е број" + not_a_date: "не е валидна дата" + greater_than: "мора да е поголемо од %{count}" + greater_than_or_equal_to: "мора да е поголемо или еднакво на %{count}" + equal_to: "мора да е еднакво на %{count}" + less_than: "мора да е помало од %{count}" + less_than_or_equal_to: "мора да е помало или еднакво на %{count}" + odd: "мора да е непарно" + even: "мора да е парно" + greater_than_start_date: "мора да е поголема од почетната дата" + not_same_project: "не припаѓа на истиот проект" + circular_dependency: "Оваа врска ќе креира кружна зависност" + cant_link_an_issue_with_a_descendant: "Задача неможе да се поврзе со една од нејзините подзадачи" + + actionview_instancetag_blank_option: Изберете + + general_text_No: 'Не' + general_text_Yes: 'Да' + general_text_no: 'не' + general_text_yes: 'да' + general_lang_name: 'Macedonian (Македонски)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Профилот е успешно ажуриран. + notice_account_invalid_creditentials: Неточен корисник или лозинка + notice_account_password_updated: Лозинката е успешно ажурирана. + notice_account_wrong_password: Погрешна лозинка + notice_account_register_done: Профилот е успешно креиран. За активација, клкнете на врската што ви е пратена по е-пошта. + notice_account_unknown_email: Непознат корисник. + notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. + notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. + notice_account_activated: Your account has been activated. You can now log in. + notice_successful_create: Успешно креирање. + notice_successful_update: Успешно ажурирање. + notice_successful_delete: Успешно бришење. + notice_successful_connection: Успешна конекција. + notice_file_not_found: The page you were trying to access doesn't exist or has been removed. + notice_locking_conflict: Data has been updated by another user. + notice_not_authorized: You are not authorized to access this page. + notice_email_sent: "Е-порака е пратена на %{value}" + notice_email_error: "Се случи грешка при праќање на е-пораката (%{value})" + notice_feeds_access_key_reseted: Вашиот RSS клуч за пристап е reset. + notice_api_access_key_reseted: Вашиот API клуч за пристап е reset. + notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_default_data_loaded: Default configuration successfully loaded. + notice_unable_delete_version: Unable to delete version. + notice_unable_delete_time_entry: Unable to delete time log entry. + notice_issue_done_ratios_updated: Issue done ratios updated. + + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" + error_scm_annotate: "The entry does not exist or can not be annotated." + error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_delete_custom_field: Unable to delete custom field + error_can_not_delete_tracker: "This tracker contains issues and can't be deleted." + error_can_not_remove_role: "This role is in use and can not be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' + error_can_not_archive_project: This project can not be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + error_unable_delete_issue_status: 'Unable to delete issue status' + error_unable_to_connect: "Unable to connect (%{value})" + warning_attachments_not_saved: "%{count} file(s) could not be saved." + + mail_subject_lost_password: "Вашата %{value} лозинка" + mail_body_lost_password: 'To change your password, click on the following link:' + mail_subject_register: "Your %{value} account activation" + mail_body_register: 'To activate your account, click on the following link:' + mail_body_account_information_external: "You can use your %{value} account to log in." + mail_body_account_information: Your account information + mail_subject_account_activation_request: "%{value} account activation request" + mail_body_account_activation_request: "Нов корисник (%{value}) е регистриран. The account is pending your approval:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 грешка + gui_validation_error_plural: "%{count} грешки" + + field_name: Име + field_description: Опис + field_summary: Краток опис + field_is_required: Задолжително + field_firstname: Име + field_lastname: Презиме + field_mail: Е-пошта + field_filename: Датотека + field_filesize: Големина + field_downloads: Превземања + field_author: Автор + field_created_on: Креиран + field_updated_on: Ажурирано + field_field_format: Формат + field_is_for_all: За сите проекти + field_possible_values: Можни вредности + field_regexp: Regular expression + field_min_length: Минимална должина + field_max_length: Максимална должина + field_value: Вредност + field_category: Категорија + field_title: Наслов + field_project: Проект + field_issue: Задача + field_status: Статус + field_notes: Белешки + field_is_closed: Задачата е затворена + field_is_default: Default value + field_tracker: Tracker + field_subject: Наслов + field_due_date: Краен рок + field_assigned_to: Доделена на + field_priority: Приоритет + field_fixed_version: Target version + field_user: Корисник + field_principal: Principal + field_role: Улога + field_homepage: Веб страна + field_is_public: Јавен + field_parent: Подпроект на + field_is_in_roadmap: Issues displayed in roadmap + field_login: Корисник + field_mail_notification: Известувања по e-пошта + field_admin: Администратор + field_last_login_on: Последна најава + field_language: Јазик + field_effective_date: Дата + field_password: Лозинка + field_new_password: Нова лозинка + field_password_confirmation: Потврда + field_version: Верзија + field_type: Тип + field_host: Хост + field_port: Порт + field_account: Account + field_base_dn: Base DN + field_attr_login: Login attribute + field_attr_firstname: Firstname attribute + field_attr_lastname: Lastname attribute + field_attr_mail: Email attribute + field_onthefly: Моментално (On-the-fly) креирање на корисници + field_start_date: Почеток + field_done_ratio: "% Завршено" + field_auth_source: Режим на автентикација + field_hide_mail: Криј ја мојата адреса на е-пошта + field_comments: Коментар + field_url: URL + field_start_page: Почетна страна + field_subproject: Подпроект + field_hours: Часови + field_activity: Активност + field_spent_on: Дата + field_identifier: Идентификатор + field_is_filter: Користи како филтер + field_issue_to: Поврзана задача + field_delay: Доцнење + field_assignable: На оваа улога може да се доделуваат задачи + field_redirect_existing_links: Пренасочи ги постоечките врски + field_estimated_hours: Проценето време + field_column_names: Колони + field_time_entries: Бележи време + field_time_zone: Временска зона + field_searchable: Може да се пребарува + field_default_value: Default value + field_comments_sorting: Прикажувај коментари + field_parent_title: Parent page + field_editable: Може да се уредува + field_watcher: Watcher + field_identity_url: OpenID URL + field_content: Содржина + field_group_by: Групирај ги резултатите според + field_sharing: Споделување + field_parent_issue: Parent task + + setting_app_title: Наслов на апликацијата + setting_app_subtitle: Поднаслов на апликацијата + setting_welcome_text: Текст за добредојде + setting_default_language: Default јазик + setting_login_required: Задолжителна автентикација + setting_self_registration: Само-регистрација + setting_attachment_max_size: Макс. големина на прилог + setting_issues_export_limit: Issues export limit + setting_mail_from: Emission email address + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_plain_text_mail: Текстуални е-пораки (без HTML) + setting_host_name: Име на хост и патека + setting_text_formatting: Форматирање на текст + setting_wiki_compression: Компресија на историјата на вики + setting_feeds_limit: Feed content limit + setting_default_projects_public: Новите проекти се иницијално јавни + setting_autofetch_changesets: Autofetch commits + setting_sys_api_enabled: Enable WS for repository management + setting_commit_ref_keywords: Referencing keywords + setting_commit_fix_keywords: Fixing keywords + setting_autologin: Автоматска најава + setting_date_format: Формат на дата + setting_time_format: Формат на време + setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти + setting_issue_list_default_columns: Default columns displayed on the issue list + setting_repositories_encodings: Repositories encodings + setting_emails_footer: Emails footer + setting_protocol: Протокол + setting_per_page_options: Objects per page options + setting_user_format: Приказ на корисниците + setting_activity_days_default: Денови прикажана во активноста на проектот + setting_display_subprojects_issues: Прикажи ги задачите на подпроектите во главните проекти + setting_enabled_scm: Овозможи SCM + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Enable WS for incoming emails + setting_mail_handler_api_key: API клуч + setting_sequential_project_identifiers: Генерирај последователни идентификатори на проекти + setting_gravatar_enabled: Користи Gravatar кориснички икони + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Max number of diff lines displayed + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Дозволи OpenID најава и регистрација + setting_password_min_length: Мин. должина на лозинка + setting_new_project_user_role_id: Улога доделена на неадминистраторски корисник кој креира проект + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + + permission_add_project: Креирај проекти + permission_add_subprojects: Креирај подпроекти + permission_edit_project: Уреди проект + permission_select_project_modules: Изберете модули за проект + permission_manage_members: Manage members + permission_manage_project_activities: Manage project activities + permission_manage_versions: Manage versions + permission_manage_categories: Manage issue categories + permission_view_issues: Прегледај задачи + permission_add_issues: Додавај задачи + permission_edit_issues: Уредувај задачи + permission_manage_issue_relations: Manage issue relations + permission_add_issue_notes: Додавај белешки + permission_edit_issue_notes: Уредувај белешки + permission_edit_own_issue_notes: Уредувај сопствени белешки + permission_move_issues: Преместувај задачи + permission_delete_issues: Бриши задачи + permission_manage_public_queries: Manage public queries + permission_save_queries: Save queries + permission_view_gantt: View gantt chart + permission_view_calendar: View calendar + permission_view_issue_watchers: View watchers list + permission_add_issue_watchers: Add watchers + permission_delete_issue_watchers: Delete watchers + permission_log_time: Бележи потрошено време + permission_view_time_entries: Прегледај потрошено време + permission_edit_time_entries: Уредувај белешки за потрошено време + permission_edit_own_time_entries: Уредувај сопствени белешки за потрошено време + permission_manage_news: Manage news + permission_comment_news: Коментирај на вести + permission_manage_documents: Manage documents + permission_view_documents: Прегледувај документи + permission_manage_files: Manage files + permission_view_files: Прегледувај датотеки + permission_manage_wiki: Manage wiki + permission_rename_wiki_pages: Преименувај вики страници + permission_delete_wiki_pages: Бриши вики страници + permission_view_wiki_pages: Прегледувај вики + permission_view_wiki_edits: Прегледувај вики историја + permission_edit_wiki_pages: Уредувај вики страници + permission_delete_wiki_pages_attachments: Бриши прилози + permission_protect_wiki_pages: Заштитувај вики страници + permission_manage_repository: Manage repository + permission_browse_repository: Browse repository + permission_view_changesets: View changesets + permission_commit_access: Commit access + permission_manage_boards: Manage boards + permission_view_messages: View messages + permission_add_messages: Post messages + permission_edit_messages: Уредувај пораки + permission_edit_own_messages: Уредувај сопствени пораки + permission_delete_messages: Бриши пораки + permission_delete_own_messages: Бриши сопствени пораки + permission_export_wiki_pages: Export wiki pages + permission_manage_subtasks: Manage subtasks + + project_module_issue_tracking: Следење на задачи + project_module_time_tracking: Следење на време + project_module_news: Вести + project_module_documents: Документи + project_module_files: Датотеки + project_module_wiki: Вики + project_module_repository: Repository + project_module_boards: Форуми + project_module_calendar: Календар + project_module_gantt: Gantt + + label_user: Корисник + label_user_plural: Корисници + label_user_new: Нов корисник + label_user_anonymous: Анонимен + label_project: Проект + label_project_new: Нов проект + label_project_plural: Проекти + label_x_projects: + zero: нема проекти + one: 1 проект + other: "%{count} проекти" + label_project_all: Сите проекти + label_project_latest: Последните проекти + label_issue: Задача + label_issue_new: Нова задача + label_issue_plural: Задачи + label_issue_view_all: Прегледај ги сите задачи + label_issues_by: "Задачи по %{value}" + label_issue_added: Задачата е додадена + label_issue_updated: Задачата е ажурирана + label_document: Документ + label_document_new: Нов документ + label_document_plural: Документи + label_document_added: Документот е додаден + label_role: Улога + label_role_plural: Улоги + label_role_new: Нова улога + label_role_and_permissions: Улоги и овластувања + label_member: Член + label_member_new: Нов член + label_member_plural: Членови + label_tracker: Tracker + label_tracker_plural: Trackers + label_tracker_new: New tracker + label_workflow: Workflow + label_issue_status: Статус на задача + label_issue_status_plural: Статуси на задачи + label_issue_status_new: Нов статус + label_issue_category: Категорија на задача + label_issue_category_plural: Категории на задачи + label_issue_category_new: Нова категорија + label_custom_field: Прилагодено поле + label_custom_field_plural: Прилагодени полиња + label_custom_field_new: Ново прилагодено поле + label_enumerations: Enumerations + label_enumeration_new: Нова вредност + label_information: Информација + label_information_plural: Информации + label_please_login: Најави се + label_register: Регистрирај се + label_login_with_open_id_option: или најави се со OpenID + label_password_lost: Изгубена лозинка + label_home: Почетна + label_my_page: Мојата страна + label_my_account: Мојот профил + label_my_projects: Мои проекти + label_my_page_block: Блок елемент + label_administration: Администрација + label_login: Најави се + label_logout: Одјави се + label_help: Помош + label_reported_issues: Пријавени задачи + label_assigned_to_me_issues: Задачи доделени на мене + label_last_login: Последна најава + label_registered_on: Регистриран на + label_activity: Активност + label_overall_activity: Севкупна активност + label_user_activity: "Активност на %{value}" + label_new: Нова + label_logged_as: Најавени сте како + label_environment: Опкружување + label_authentication: Автентикација + label_auth_source: Режим на автентикација + label_auth_source_new: Нов режим на автентикација + label_auth_source_plural: Режими на автентикација + label_subproject_plural: Подпроекти + label_subproject_new: Нов подпроект + label_and_its_subprojects: "%{value} и неговите подпроекти" + label_min_max_length: Мин. - Макс. должина + label_list: Листа + label_date: Дата + label_integer: Integer + label_float: Float + label_boolean: Boolean + label_string: Текст + label_text: Долг текст + label_attribute: Атрибут + label_attribute_plural: Атрибути + label_download: "%{count} превземање" + label_download_plural: "%{count} превземања" + label_no_data: Нема податоци за прикажување + label_change_status: Промени статус + label_history: Историја + label_attachment: Датотека + label_attachment_new: Нова датотека + label_attachment_delete: Избриши датотека + label_attachment_plural: Датотеки + label_file_added: Датотеката е додадена + label_report: Извештај + label_report_plural: Извештаи + label_news: Новост + label_news_new: Додади новост + label_news_plural: Новости + label_news_latest: Последни новости + label_news_view_all: Прегледај ги сите новости + label_news_added: Новостта е додадена + label_settings: Settings + label_overview: Преглед + label_version: Верзија + label_version_new: Нова верзија + label_version_plural: Верзии + label_close_versions: Затвори ги завршените врзии + label_confirmation: Потврда + label_export_to: 'Достапно и во:' + label_read: Прочитај... + label_public_projects: Јавни проекти + label_open_issues: отворена + label_open_issues_plural: отворени + label_closed_issues: затворена + label_closed_issues_plural: затворени + label_x_open_issues_abbr_on_total: + zero: 0 отворени / %{total} + one: 1 отворена / %{total} + other: "%{count} отворени / %{total}" + label_x_open_issues_abbr: + zero: 0 отворени + one: 1 отворена + other: "%{count} отворени" + label_x_closed_issues_abbr: + zero: 0 затворени + one: 1 затворена + other: "%{count} затворени" + label_total: Вкупно + label_permissions: Овластувања + label_current_status: Моментален статус + label_new_statuses_allowed: Дозволени нови статуси + label_all: сите + label_none: ниеден + label_nobody: никој + label_next: Следно + label_previous: Претходно + label_used_by: Користено од + label_details: Детали + label_add_note: Додади белешка + label_per_page: По страна + label_calendar: Календар + label_months_from: месеци од + label_gantt: Gantt + label_internal: Internal + label_last_changes: "последни %{count} промени" + label_change_view_all: Прегледај ги сите промени + label_personalize_page: Прилагоди ја странава + label_comment: Коментар + label_comment_plural: Коментари + label_x_comments: + zero: нема коментари + one: 1 коментар + other: "%{count} коментари" + label_comment_add: Додади коментар + label_comment_added: Коментарот е додаден + label_comment_delete: Избриши коментари + label_query: Custom query + label_query_plural: Custom queries + label_query_new: New query + label_filter_add: Додади филтер + label_filter_plural: Филтри + label_equals: е + label_not_equals: не е + label_in_less_than: за помалку од + label_in_more_than: за повеќе од + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: во + label_today: денес + label_all_time: цело време + label_yesterday: вчера + label_this_week: оваа недела + label_last_week: минатата недела + label_last_n_days: "последните %{count} дена" + label_this_month: овој месец + label_last_month: минатиот месец + label_this_year: оваа година + label_date_range: Date range + label_less_than_ago: пред помалку од денови + label_more_than_ago: пред повеќе од денови + label_ago: пред денови + label_contains: содржи + label_not_contains: не содржи + label_day_plural: денови + label_repository: Складиште + label_repository_plural: Складишта + label_browse: Прелистувај + label_modification: "%{count} промени" + label_modification_plural: "%{count} промени" + label_branch: Гранка + label_tag: Tag + label_revision: Ревизија + label_revision_plural: Ревизии + label_revision_id: "Ревизија %{value}" + label_associated_revisions: Associated revisions + label_added: added + label_modified: modified + label_copied: copied + label_renamed: renamed + label_deleted: deleted + label_latest_revision: Последна ревизија + label_latest_revision_plural: Последни ревизии + label_view_revisions: Прегледај ги ревизиите + label_view_all_revisions: Прегледај ги сите ревизии + label_max_size: Макс. големина + label_sort_highest: Премести најгоре + label_sort_higher: Премести нагоре + label_sort_lower: Премести надоле + label_sort_lowest: Премести најдоле + label_roadmap: Roadmap + label_roadmap_due_in: "Due in %{value}" + label_roadmap_overdue: "Касни %{value}" + label_roadmap_no_issues: Нема задачи за оваа верзија + label_search: Барај + label_result_plural: Резултати + label_all_words: Сите зборови + label_wiki: Вики + label_wiki_edit: Вики уредување + label_wiki_edit_plural: Вики уредувања + label_wiki_page: Вики страница + label_wiki_page_plural: Вики страници + label_index_by_title: Индекс по наслов + label_index_by_date: Индекс по дата + label_current_version: Current version + label_preview: Preview + label_feed_plural: Feeds + label_changes_details: Детали за сите промени + label_issue_tracking: Следење на задачи + label_spent_time: Потрошено време + label_overall_spent_time: Вкупно потрошено време + label_f_hour: "%{value} час" + label_f_hour_plural: "%{value} часа" + label_time_tracking: Следење на време + label_change_plural: Промени + label_statistics: Статистики + label_commits_per_month: Commits per month + label_commits_per_author: Commits per author + label_view_diff: View differences + label_diff_inline: inline + label_diff_side_by_side: side by side + label_options: Опции + label_copy_workflow_from: Copy workflow from + label_permissions_report: Permissions report + label_watched_issues: Watched issues + label_related_issues: Поврзани задачи + label_applied_status: Applied status + label_loading: Loading... + label_relation_new: Нова релација + label_relation_delete: Избриши релација + label_relates_to: related to + label_duplicates: дупликати + label_duplicated_by: duplicated by + label_blocks: blocks + label_blocked_by: блокирано од + label_precedes: претходи + label_follows: следи + label_end_to_start: крај до почеток + label_end_to_end: крај до крај + label_start_to_start: почеток до почеток + label_start_to_end: почеток до крај + label_stay_logged_in: Останете најавени + label_disabled: disabled + label_show_completed_versions: Show completed versions + label_me: јас + label_board: Форум + label_board_new: Нов форум + label_board_plural: Форуми + label_board_locked: Заклучен + label_board_sticky: Sticky + label_topic_plural: Теми + label_message_plural: Пораки + label_message_last: Последна порака + label_message_new: Нова порака + label_message_posted: Поракате е додадена + label_reply_plural: Одговори + label_send_information: Испрати ги информациите за профилот на корисникот + label_year: Година + label_month: Месец + label_week: Недела + label_date_from: Од + label_date_to: До + label_language_based: Според јазикот на корисникот + label_sort_by: "Подреди според %{value}" + label_send_test_email: Испрати тест е-порака + label_feeds_access_key: RSS клуч за пристап + label_missing_feeds_access_key: Недостика RSS клуч за пристап + label_feeds_access_key_created_on: "RSS клучот за пристап креиран пред %{value}" + label_module_plural: Модули + label_added_time_by: "Додадено од %{author} пред %{age}" + label_updated_time_by: "Ажурирано од %{author} пред %{age}" + label_updated_time: "Ажурирано пред %{value}" + label_jump_to_a_project: Префрли се на проект... + label_file_plural: Датотеки + label_changeset_plural: Changesets + label_default_columns: Основни колони + label_no_change_option: (Без промена) + label_bulk_edit_selected_issues: Групно уредување на задачи + label_theme: Тема + label_default: Default + label_search_titles_only: Пребарувај само наслови + label_user_mail_option_all: "За било кој настан во сите мои проекти" + label_user_mail_option_selected: "За било кој настан само во избраните проекти..." + label_user_mail_no_self_notified: "Не ме известувај за промените што јас ги правам" + label_registration_activation_by_email: активација на профил преку е-пошта + label_registration_manual_activation: мануелна активација на профил + label_registration_automatic_activation: автоматска активација на профил + label_display_per_page: "По страна: %{value}" + label_age: Age + label_change_properties: Change properties + label_general: Општо + label_more: Повеќе + label_scm: SCM + label_plugins: Додатоци + label_ldap_authentication: LDAP автентикација + label_downloads_abbr: Превземања + label_optional_description: Опис (незадолжително) + label_add_another_file: Додади уште една датотека + label_preferences: Preferences + label_chronological_order: Во хронолошки ред + label_reverse_chronological_order: In reverse chronological order + label_planning: Планирање + label_incoming_emails: Дојдовни е-пораки + label_generate_key: Генерирај клуч + label_issue_watchers: Watchers + label_example: Пример + label_display: Прикажи + label_sort: Подреди + label_ascending: Растечки + label_descending: Опаѓачки + label_date_from_to: Од %{start} до %{end} + label_wiki_content_added: Вики страница додадена + label_wiki_content_updated: Вики страница ажурирана + label_group: Група + label_group_plural: Групи + label_group_new: Нова група + label_time_entry_plural: Потрошено време + label_version_sharing_none: Не споделено + label_version_sharing_descendants: Со сите подпроекти + label_version_sharing_hierarchy: Со хиерархијата на проектот + label_version_sharing_tree: Со дрвото на проектот + label_version_sharing_system: Со сите проекти + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Извор + label_copy_target: Дестинација + label_copy_same_as_target: Исто како дестинацијата + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API клуч за пристап + label_missing_api_access_key: Недостига API клуч за пристап + label_api_access_key_created_on: "API клучот за пристап е креиран пред %{value}" + label_profile: Профил + label_subtask_plural: Подзадачи + label_project_copy_notifications: Праќај известувања по е-пошта при копирање на проект + + button_login: Најави се + button_submit: Испрати + button_save: Зачувај + button_check_all: Штиклирај ги сите + button_uncheck_all: Одштиклирај ги сите + button_delete: Избриши + button_create: Креирај + button_create_and_continue: Креирај и продолжи + button_test: Тест + button_edit: Уреди + button_add: Додади + button_change: Промени + button_apply: Примени + button_clear: Избриши + button_lock: Заклучи + button_unlock: Отклучи + button_download: Превземи + button_list: List + button_view: Прегледај + button_move: Премести + button_move_and_follow: Премести и следи + button_back: Back + button_cancel: Откажи + button_activate: Активирај + button_sort: Подреди + button_log_time: Бележи време + button_rollback: Rollback to this version + button_watch: Следи + button_unwatch: Не следи + button_reply: Одговори + button_archive: Архивирај + button_unarchive: Одархивирај + button_reset: Reset + button_rename: Преименувај + button_change_password: Промени лозинка + button_copy: Копирај + button_copy_and_follow: Копирај и следи + button_annotate: Annotate + button_update: Ажурирај + button_configure: Конфигурирај + button_quote: Цитирај + button_duplicate: Копирај + button_show: Show + + status_active: активни + status_registered: регистрирани + status_locked: заклучени + + version_status_open: отворени + version_status_locked: заклучени + version_status_closed: затворени + + field_active: Active + + text_select_mail_notifications: Изберете за кои настани да се праќаат известувања по е-пошта да се праќаат. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 значи без ограничување + text_project_destroy_confirmation: Дали сте сигурни дека сакате да го избришете проектот и сите поврзани податоци? + text_subprojects_destroy_warning: "Неговите подпроекти: %{value} исто така ќе бидат избришани." + text_workflow_edit: Select a role and a tracker to edit the workflow + text_are_you_sure: Дали сте сигурни? + text_journal_changed: "%{label} променето од %{old} во %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} избришан (%{old})" + text_journal_added: "%{label} %{value} додаден" + text_tip_issue_begin_day: задачи што почнуваат овој ден + text_tip_issue_end_day: задачи што завршуваат овој ден + text_tip_issue_begin_end_day: задачи што почнуваат и завршуваат овој ден + text_project_identifier_info: 'Само мали букви (a-z), бројки и dashes се дозволени
    По зачувувањето, идентификаторот неможе да се смени.' + text_caracters_maximum: "%{count} знаци максимум." + text_caracters_minimum: "Мора да е најмалку %{count} знаци долго." + text_length_between: "Должина помеѓу %{min} и %{max} знаци." + text_tracker_no_workflow: No workflow defined for this tracker + text_unallowed_characters: Недозволени знаци + text_comma_separated: Дозволени се повеќе вредности (разделени со запирка). + text_line_separated: Дозволени се повеќе вредности (една линија за секоја вредност). + text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages + text_issue_added: "Задачата %{id} е пријавена од %{author}." + text_issue_updated: "Задачата %{id} е ажурирана од %{author}." + text_wiki_destroy_confirmation: Дали сте сигурни дека сакате да го избришете ова вики и целата негова содржина? + text_issue_category_destroy_question: "Некои задачи (%{count}) се доделени на оваа категорија. Што сакате да правите?" + text_issue_category_destroy_assignments: Remove category assignments + text_issue_category_reassign_to: Додели ги задачите на оваа категорија + text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." + text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_load_default_configuration: Load the default configuration + text_status_changed_by_changeset: "Applied in changeset %{value}." + text_issues_destroy_confirmation: 'Дали сте сигурни дека сакате да ги избришете избраните задачи?' + text_select_project_modules: 'Изберете модули за овој проект:' + text_default_administrator_account_changed: Default administrator account changed + text_file_repository_writable: Во папката за прилози може да се запишува + text_plugin_assets_writable: Во папката за додатоци може да се запишува + text_rmagick_available: RMagick available (незадолжително) + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?" + text_destroy_time_entries: Delete reported hours + text_assign_time_entries_to_project: Додели ги пријавените часови на проектот + text_reassign_time_entries: 'Reassign reported hours to this issue:' + text_user_wrote: "%{value} напиша:" + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/configuration.yml и рестартирајте ја апликацијата." + text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." + text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + text_zoom_in: Zoom in + text_zoom_out: Zoom out + + default_role_manager: Менаџер + default_role_developer: Developer + default_role_reporter: Reporter + default_tracker_bug: Грешка + default_tracker_feature: Функционалност + default_tracker_support: Поддршка + default_issue_status_new: Нова + default_issue_status_in_progress: Во прогрес + default_issue_status_resolved: Разрешена + default_issue_status_feedback: Feedback + default_issue_status_closed: Затворена + default_issue_status_rejected: Одбиена + default_doc_category_user: Корисничка документација + default_doc_category_tech: Техничка документација + default_priority_low: Низок + default_priority_normal: Нормален + default_priority_high: Висок + default_priority_urgent: Итно + default_priority_immediate: Веднаш + default_activity_design: Дизајн + default_activity_development: Развој + + enumeration_issue_priorities: Приоритети на задача + enumeration_doc_categories: Категории на документ + enumeration_activities: Активности (следење на време) + enumeration_system_activity: Системска активност + + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/mn.yml.svn-base --- a/config/locales/.svn/text-base/mn.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/mn.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,943 +1,979 @@ -mn: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%Y/%m/%d" - short: "%b %d" - long: "%Y, %B %d" - - day_names: [Даваа, Мягмар, Лхагва, Пүрэв, Баасан, Бямба, Ням] - abbr_day_names: [Дав, Мяг, Лха, Пүр, Бсн, Бям, Ням] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, 1-р сар, 2-р сар, 3-р сар, 4-р сар, 5-р сар, 6-р сар, 7-р сар, 8-р сар, 9-р сар, 10-р сар, 11-р сар, 12-р сар] - abbr_month_names: [~, 1сар, 2сар, 3сар, 4сар, 5сар, 6сар, 7сар, 8сар, 9сар, 10сар, 11сар, 12сар] - # Used in date_select and datime_select. - order: [ :day, :month, :year ] - - time: - formats: - default: "%Y/%m/%d %I:%M %p" - time: "%I:%M %p" - short: "%d %b %H:%M" - long: "%Y, %B %d %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "хагас минут" - less_than_x_seconds: - one: "секунд орчим" - other: "%{count} секундээс бага хугацаа" - x_seconds: - one: "1 секунд" - other: "%{count} секунд" - less_than_x_minutes: - one: "минутаас бага хугацаа" - other: "%{count} минутаас бага хугацаа" - x_minutes: - one: "1 минут" - other: "%{count} минут" - about_x_hours: - one: "1 цаг орчим" - other: "ойролцоогоор %{count} цаг" - x_days: - one: "1 өдөр" - other: "%{count} өдөр" - about_x_months: - one: "1 сар орчим" - other: "ойролцоогоор %{count} сар" - x_months: - one: "1 сар" - other: "%{count} сар" - about_x_years: - one: "ойролцоогоор 1 жил" - other: "ойролцоогоор %{count} жил" - over_x_years: - one: "1 жилээс их" - other: "%{count} жилээс их" - almost_x_years: - one: "бараг 1 жил" - other: "бараг %{count} жил" - - number: - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Байт" - other: "Байт" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "бас" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "жагсаалтад заагдаагүй байна" - exclusion: "нөөцлөгдсөн" - invalid: "буруу" - confirmation: "баталгаажсан өгөгдөлтэй таарахгүй байна" - accepted: "хүлээж авах ёстой" - empty: "хоосон байж болохгүй" - blank: "бланк байж болохгүй" - too_long: "дэндүү урт байна (хамгийн ихдээ %{count} тэмдэгт)" - too_short: "дэндүү богино байна (хамгийн багадаа %{count} тэмдэгт)" - wrong_length: "буруу урттай байна (заавал %{count} тэмдэгт)" - taken: "аль хэдийнэ авсан байна" - not_a_number: "тоо биш байна" - not_a_date: "зөв огноо биш байна" - greater_than: "%{count} их байх ёстой" - greater_than_or_equal_to: "must be greater than or equal to %{count}" - equal_to: "must be equal to %{count}" - less_than: "must be less than %{count}" - less_than_or_equal_to: "must be less than or equal to %{count}" - odd: "заавал сондгой" - even: "заавал тэгш" - greater_than_start_date: "must be greater than start date" - not_same_project: "нэг ижил төсөлд хамаарахгүй байна" - circular_dependency: "Энэ харьцаа нь гинжин(рекурсив) харьцаа үүсгэх юм байна" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" - - actionview_instancetag_blank_option: Сонгоно уу - - general_text_No: 'Үгүй' - general_text_Yes: 'Тийм' - general_text_no: 'үгүй' - general_text_yes: 'тийм' - general_lang_name: 'Mongolian (Монгол)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '7' - - notice_account_updated: Дансыг амжилттай өөрчиллөө. - notice_account_invalid_creditentials: Хэрэглэгчийн нэр эсвэл нууц үг буруу байна - notice_account_password_updated: Нууц үгийг амжилттай өөрчиллөө. - notice_account_wrong_password: Буруу нууц үг - notice_account_register_done: Шинэ хэрэглэгч амжилттай үүсгэлээ. Идэвхжүүлэхийн тулд, бидний тань луу илгээсэн мэйл дотор байгаа холбоос дээр дараарай. - notice_account_unknown_email: Үл мэдэгдэх хэрэглэгч. - notice_can_t_change_password: Энэ эрх гадаад нэвтрэлтэд ашигладаг учраас нууц үгийг өөрчлөх боломжгүй. - notice_account_lost_email_sent: Бид таньд мэйлээр нууц үгээ өөрчлөх зааврыг илгээсэн байгаа. - notice_account_activated: Таны данс идэвхжлээ. Одоо нэвтэрч орж болно. - notice_successful_create: Амжилттай үүсгэлээ. - notice_successful_update: Амжилттай өөрчиллөө. - notice_successful_delete: Амжилттай устгалаа. - notice_successful_connection: Амжилттай холбогдлоо. - notice_file_not_found: Таны үзэх гэсэн хуудас байхгүй юмуу устгагдсан байна. - notice_locking_conflict: Өгөгдлийг өөр хүн өөрчилсөн байна. - notice_not_authorized: Танд энэ хуудсыг үзэх эрх байхгүй байна. - notice_email_sent: "%{value} - руу мэйл илгээлээ" - notice_email_error: "Мэйл илгээхэд алдаа гарлаа (%{value})" - notice_feeds_access_key_reseted: Таны RSS хандалтын түлхүүрийг дахин эхлүүллээ. - notice_api_access_key_reseted: Your API access key was reset. - notice_failed_to_save_issues: "%{total} асуудал сонгогдсоноос %{count} асуудлыг нь хадгалахад алдаа гарлаа: %{ids}." - notice_no_issue_selected: "Ямар ч асуудал сонгогдоогүй байна! Засварлах асуудлуудаа сонгоно уу." - notice_account_pending: "Таны дансыг үүсгэж дууслаа, администратор баталгаажуулах хүртэл хүлээнэ үү." - notice_default_data_loaded: Стандарт тохиргоог амжилттай ачааллаа. - notice_unable_delete_version: Хувилбарыг устгах боломжгүй. - notice_issue_done_ratios_updated: Issue done ratios updated. - - error_can_t_load_default_data: "Стандарт тохиргоог ачаалж чадсангүй: %{value}" - error_scm_not_found: "Repository дотор тухайн бичлэг эсвэл хувилбарыг олсонгүй." - error_scm_command_failed: "Repository-д хандахад алдаа гарлаа: %{value}" - error_scm_annotate: "Бичлэг байхгүй байна, эсвэл бичлэгт тайлбар хавсаргаж болохгүй." - error_issue_not_found_in_project: 'Сонгосон асуудал энэ төсөлд хамаардаггүй юм уу эсвэл системд байхгүй байна.' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - - warning_attachments_not_saved: "%{count} file(s) файлыг хадгалж чадсангүй." - - mail_subject_lost_password: "Таны %{value} нууц үг" - mail_body_lost_password: 'Нууц үгээ өөрчлөхийн тулд доорх холбоос дээр дарна уу:' - mail_subject_register: "Таны %{value} дансыг идэвхжүүлэх" - mail_body_register: 'Дансаа идэвхжүүлэхийн тулд доорх холбоос дээр дарна уу:' - mail_body_account_information_external: "Та өөрийнхөө %{value} дансыг ашиглаж холбогдож болно." - mail_body_account_information: Таны дансны тухай мэдээлэл - mail_subject_account_activation_request: "%{value} дансыг идэвхжүүлэх хүсэлт" - mail_body_account_activation_request: "Шинэ хэрэглэгч (%{value}) бүртгүүлсэн байна. Таны баталгаажуулахыг хүлээж байна:" - mail_subject_reminder: "Дараагийн өдрүүдэд %{count} асуудлыг шийдэх хэрэгтэй (%{days})" - mail_body_reminder: "Танд оноогдсон %{count} асуудлуудыг дараагийн %{days} өдрүүдэд шийдэх хэрэгтэй:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 алдаа - gui_validation_error_plural: "%{count} алдаа" - - field_name: Нэр - field_description: Тайлбар - field_summary: Дүгнэлт - field_is_required: Зайлшгүй - field_firstname: Таны нэр - field_lastname: Овог - field_mail: Имэйл - field_filename: Файл - field_filesize: Хэмжээ - field_downloads: Татаж авах зүйлс - field_author: Зохиогч - field_created_on: Үүссэн - field_updated_on: Өөрчилсөн - field_field_format: Формат - field_is_for_all: Бүх төслийн хувьд - field_possible_values: Боломжтой утгууд - field_regexp: Энгийн илэрхийлэл - field_min_length: Минимум урт - field_max_length: Максимум урт - field_value: Утга - field_category: Төрөл - field_title: Гарчиг - field_project: Төсөл - field_issue: Асуудал - field_status: Төлөв - field_notes: Тэмдэглэлүүд - field_is_closed: Асуудал хаагдсан - field_is_default: Стандарт утга - field_tracker: Чиглэл - field_subject: Гарчиг - field_due_date: Дуусах огноо - field_assigned_to: Оноогдсон - field_priority: Зэрэглэл - field_fixed_version: Хувилбар - field_user: Хэрэглэгч - field_role: Хандалтын эрх - field_homepage: Нүүр хуудас - field_is_public: Олон нийтийн - field_parent: Эцэг төсөл нь - field_is_in_roadmap: Асуудлуудыг явцын зураг дээр харуулах - field_login: Нэвтрэх нэр - field_mail_notification: Имэйл мэдэгдлүүд - field_admin: Администратор - field_last_login_on: Сүүлийн холбоо - field_language: Хэл - field_effective_date: Огноо - field_password: Нууц үг - field_new_password: Шннэ нууц үг - field_password_confirmation: Баталгаажуулах - field_version: Хувилбар - field_type: Төрөл - field_host: Хост - field_port: Порт - field_account: Данс - field_base_dn: Үндсэн ДН - field_attr_login: Нэвтрэх аттрибут - field_attr_firstname: Таны нэр аттрибут - field_attr_lastname: Овог аттрибут - field_attr_mail: Имэйл аттрибут - field_onthefly: Хүссэн үедээ хэрэглэгч үүсгэх - field_start_date: Эхлэл - field_done_ratio: %% Гүйцэтгэсэн - field_auth_source: Нэвтрэх арга - field_hide_mail: Миний имэйл хаягийг нуу - field_comments: Тайлбар - field_url: URL Хаяг - field_start_page: Тэргүүн хуудас - field_subproject: Дэд төсөл - field_hours: Цаг - field_activity: Үйл ажиллагаа - field_spent_on: Огноо - field_identifier: Төслийн глобал нэр - field_is_filter: Шүүлтүүр болгон хэрэглэгддэг - field_issue_to: Хамаатай асуудал - field_delay: Хоцролт - field_assignable: Энэ хандалтын эрхэд асуудлуудыг оноож өгч болно - field_redirect_existing_links: Байгаа холбоосуудыг дахин чиглүүлэх - field_estimated_hours: Барагцаалсан цаг - field_column_names: Баганууд - field_time_zone: Цагын бүс - field_searchable: Хайж болох - field_default_value: Стандарт утга - field_comments_sorting: Тайлбаруудыг харуул - field_parent_title: Эцэг хуудас - field_editable: Засварлагдана - field_watcher: Харна - field_identity_url: OpenID URL - field_content: Агуулга - field_group_by: Үр дүнгээр бүлэглэх - field_sharing: Sharing - - setting_app_title: Программын гарчиг - setting_app_subtitle: Программын дэд гарчиг - setting_welcome_text: Мэндчилгээ - setting_default_language: Стандарт хэл - setting_login_required: Нэвтрэх шаардлагатай - setting_self_registration: Өөрийгөө бүртгүүлэх - setting_attachment_max_size: Хавсралт файлын дээд хэмжээ - setting_issues_export_limit: Асуудал экспортлох хязгаар - setting_mail_from: Ямар имэйл хаяг үүсгэх - setting_bcc_recipients: BCC талбарын хаягууд (bcc) - setting_plain_text_mail: дан текст мэйл (HTML биш) - setting_host_name: Хостын нэр болон зам - setting_text_formatting: Текст хэлбэржүүлэлт - setting_wiki_compression: Вики хуудсуудын түүх дээр шахалт хийх - setting_feeds_limit: Фийд агуулгын хязгаар - setting_default_projects_public: Шинэ төслүүд автоматаар олон нийтийнх байна - setting_autofetch_changesets: Комитуудыг автоматаар татаж авах - setting_sys_api_enabled: Репозитори менежментэд зориулан WS-ийг идэвхжүүлэх - setting_commit_ref_keywords: Хамааруулах түлхүүр үгс - setting_commit_fix_keywords: Зоолттой түлхүүр үгс - setting_autologin: Компьютер дээр санах - setting_date_format: Огнооны формат - setting_time_format: Цагийн формат - setting_cross_project_issue_relations: Төсөл хооронд асуудал хамааруулахыг зөвшөөрөх - setting_issue_list_default_columns: Асуудлуудыг харуулах стандарт баганууд - setting_repositories_encodings: Репозиторийн энкодинг - setting_commit_logs_encoding: Коммит хийх үед харуулах текстүүдийн энкодинг - setting_emails_footer: Имэйлүүдийн хөл хэсэг - setting_protocol: Протокол - setting_per_page_options: Нэг хуудсанд байх обьектуудын тохиргоо - setting_user_format: Хэрэглэгчдийг харуулах формат - setting_activity_days_default: Төслийн үйл ажиллагаа хэсэгт үзүүлэх өдрийн тоо - setting_display_subprojects_issues: Дэд төслүүдийн асуудлуудыг автоматаар гол төсөл дээр харуулах - setting_enabled_scm: SCM - ийг идэвхжүүлэх - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Ирсэн мэйлүүдийн хувьд WS-ийг идэвхжүүлэх - setting_mail_handler_api_key: API түлхүүр - setting_sequential_project_identifiers: Дэс дараалсан төслийн глобал нэр үүсгэж байх - setting_gravatar_enabled: Gravatar дүрсүүдийг хэрэглэгчдэд хэрэглэж байх - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Ялгаатай мөрүүдийн тоо (дээд тал нь) - setting_file_max_size_displayed: Max size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Allow OpenID login and registration - setting_password_min_length: Minimum password length - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - - permission_add_project: Create project - permission_add_subprojects: Create subprojects - permission_edit_project: Төслийг засварлах - permission_select_project_modules: Төслийн модулуудийг сонгоно уу - permission_manage_members: Системийн хэрэглэгчид - permission_manage_project_activities: Manage project activities - permission_manage_versions: Хувилбарууд - permission_manage_categories: Асуудлын ангиллууд - permission_view_issues: Асуудлуудыг харах - permission_add_issues: Асуудлууд нэмэх - permission_edit_issues: Асуудлуудыг засварлах - permission_manage_issue_relations: Асуудлын хамаарлыг зохицуулах - permission_add_issue_notes: Тэмдэглэл нэмэх - permission_edit_issue_notes: Тэмдэглэлүүд засварлах - permission_edit_own_issue_notes: Өөрийн үлдээсэн тэмдэглэлүүдийг засварлах - permission_move_issues: Асуудлуудыг зөөх - permission_delete_issues: Асуудлуудыг устгах - permission_manage_public_queries: Олон нийтийн асуултууд - permission_save_queries: Асуултуудыг хадгалах - permission_view_gantt: Гант диаграмыг үзэх - permission_view_calendar: Календарь үзэх - permission_view_issue_watchers: Ажиглагчдын жагсаалтыг харах - permission_add_issue_watchers: Ажиглагчид нэмэх - permission_delete_issue_watchers: Ажиглагчдыг устгах - permission_log_time: Зарцуулсан хугацааг лог хийх - permission_view_time_entries: Зарцуулсан хугацааг харах - permission_edit_time_entries: Хугацааны логуудыг засварлах - permission_edit_own_time_entries: Өөрийн хугацааны логуудыг засварлах - permission_manage_news: Мэдээ мэдээллүүд - permission_comment_news: Мэдээнд тайлбар үлдээх - permission_manage_documents: Бичиг баримтууд - permission_view_documents: Бичиг баримтуудыг харах - permission_manage_files: Файлууд - permission_view_files: Файлуудыг харах - permission_manage_wiki: Вики удирдах - permission_rename_wiki_pages: Вики хуудсуудыг дахиж нэрлэх - permission_delete_wiki_pages: Вики хуудсуудыг устгах - permission_view_wiki_pages: Вики үзэх - permission_view_wiki_edits: Вики түүх үзэх - permission_edit_wiki_pages: Вики хуудсуудыг засварлах - permission_delete_wiki_pages_attachments: Хавсралтуудыг устгах - permission_protect_wiki_pages: Вики хуудсуудыг хамгаалах - permission_manage_repository: Репозитори - permission_browse_repository: Репозиторийг үзэх - permission_view_changesets: Өөрчлөлтүүдийг харах - permission_commit_access: Коммит хандалт - permission_manage_boards: Самбарууд - permission_view_messages: Зурвасуудыг харах - permission_add_messages: Зурвас илгээх - permission_edit_messages: Зурвасуудыг засварлах - permission_edit_own_messages: Өөрийн зурвасуудыг засварлах - permission_delete_messages: Зурвасуудыг устгах - permission_delete_own_messages: Өөрийн зурвасуудыг устгах - permission_export_wiki_pages: Вики хуудсуудыг экспорт хийх - - project_module_issue_tracking: Асуудал хянах - project_module_time_tracking: Хугацаа хянах - project_module_news: Мэдээ мэдээллүүд - project_module_documents: Бичиг баримтууд - project_module_files: Файлууд - project_module_wiki: Вики - project_module_repository: Репозитори - project_module_boards: Самбарууд - - label_user: Хэрэглэгч - label_user_plural: Хэрэглэгчид - label_user_new: Шинэ хэрэглэгч - label_user_anonymous: Хамаагүй хэрэглэгч - label_project: Төсөл - label_project_new: Шинэ төсөл - label_project_plural: Төслүүд - label_x_projects: - zero: төсөл байхгүй - one: 1 төсөл - other: "%{count} төслүүд" - label_project_all: Бүх Төслүүд - label_project_latest: Сүүлийн үеийн төслүүд - label_issue: Асуудал - label_issue_new: Шинэ асуудал - label_issue_plural: Асуудлууд - label_issue_view_all: Бүх асуудлуудыг харах - label_issues_by: "%{value} - н асуудлууд" - label_issue_added: Асуудал нэмэгдлээ - label_issue_updated: Асуудал өөрчлөгдлөө - label_document: Бичиг баримт - label_document_new: Шинэ бичиг баримт - label_document_plural: Бичиг баримтууд - label_document_added: Бичиг баримт нэмэгдлээ - label_role: Хандалтын эрх - label_role_plural: Хандалтын эрхүүд - label_role_new: Шинэ хандалтын эрх - label_role_and_permissions: Хандалтын эрхүүд болон зөвшөөрлүүд - label_member: Гишүүн - label_member_new: Шинэ гишүүн - label_member_plural: Гишүүд - label_tracker: Чиглэл - label_tracker_plural: Чиглэлүүд - label_tracker_new: Шинэ чиглэл - label_workflow: Ажлын дараалал - label_issue_status: Асуудлын төлөв - label_issue_status_plural: Асуудлын төлвүүд - label_issue_status_new: Шинэ төлөв - label_issue_category: Асуудлын ангилал - label_issue_category_plural: Асуудлын ангиллууд - label_issue_category_new: Шинэ ангилал - label_custom_field: Хэрэглэгчийн тодорхойлсон талбар - label_custom_field_plural: Хэрэглэгчийн тодорхойлсон талбарууд - label_custom_field_new: Шинээр хэрэглэгчийн тодорхойлсон талбар үүсгэх - label_enumerations: Ангиллууд - label_enumeration_new: Шинэ утга - label_information: Мэдээлэл - label_information_plural: Мэдээллүүд - label_please_login: Нэвтэрч орно уу - label_register: Бүртгүүлэх - label_login_with_open_id_option: or login with OpenID - label_password_lost: Нууц үгээ алдсан - label_home: Нүүр - label_my_page: Миний хуудас - label_my_account: Миний данс - label_my_projects: Миний төслүүд - label_administration: Админ хэсэг - label_login: Нэвтрэх - label_logout: Гарах - label_help: Тусламж - label_reported_issues: Мэдэгдсэн асуудлууд - label_assigned_to_me_issues: Надад оноогдсон асуудлууд - label_last_login: Сүүлийн холболт - label_registered_on: Бүртгүүлсэн огноо - label_activity: Үйл ажиллагаа - label_overall_activity: Ерөнхий үйл ажиллагаа - label_user_activity: "%{value}-ийн үйл ажиллагаа" - label_new: Шинэ - label_logged_as: Холбогдсон нэр - label_environment: Орчин - label_authentication: Нэвтрэх - label_auth_source: Нэвтрэх арга - label_auth_source_new: Шинэ нэвтрэх арга - label_auth_source_plural: Нэвтрэх аргууд - label_subproject_plural: Дэд төслүүд - label_subproject_new: Шинэ дэд төсөл - label_and_its_subprojects: "%{value} болон холбогдох дэд төслүүд" - label_min_max_length: Дээд - Доод урт - label_list: Жагсаалт - label_date: Огноо - label_integer: Бүхэл тоо - label_float: Бутархай тоо - label_boolean: Үнэн худал утга - label_string: Текст - label_text: Урт текст - label_attribute: Аттрибут - label_attribute_plural: Аттрибутууд - label_download: "%{count} Татаж авсан зүйл" - label_download_plural: "%{count} Татаж авсан зүйлс" - label_no_data: Үзүүлэх өгөгдөл байхгүй байна - label_change_status: Төлвийг өөрчлөх - label_history: Түүх - label_attachment: Файл - label_attachment_new: Шинэ файл - label_attachment_delete: Файл устгах - label_attachment_plural: Файлууд - label_file_added: Файл нэмэгдлээ - label_report: Тайлан - label_report_plural: Тайлангууд - label_news: Мэдээ - label_news_new: Шинэ мэдээ - label_news_plural: Мэдээ - label_news_latest: Сүүлийн үеийн мэдээнүүд - label_news_view_all: Бүх мэдээг харах - label_news_added: Мэдээ нэмэгдлээ - label_change_log: Өөрчлөлтийн лог - label_settings: Тохиргоо - label_overview: Эхлэл - label_version: Хувилбар - label_version_new: Шинэ хувилбар - label_version_plural: Хувилбарууд - label_close_versions: Гүйцэт хувилбаруудыг хаалаа - label_confirmation: Баталгаажуулах - label_export_to: 'Өөр авч болох формат:' - label_read: Унших... - label_public_projects: Олон нийтийн төслүүд - label_open_issues: нээлттэй - label_open_issues_plural: нээлттэй - label_closed_issues: хаалттай - label_closed_issues_plural: хаалттай - label_x_open_issues_abbr_on_total: - zero: 0 нээлттэй / %{total} - one: 1 нээлттэй / %{total} - other: "%{count} нээлттэй / %{total}" - label_x_open_issues_abbr: - zero: 0 нээлттэй - one: 1 нээлттэй - other: "%{count} нээлттэй" - label_x_closed_issues_abbr: - zero: 0 хаалттай - one: 1 хаалттай - other: "%{count} хаалттай" - label_total: Нийт - label_permissions: Зөвшөөрлүүд - label_current_status: Одоогийн төлөв - label_new_statuses_allowed: Шинээр олгож болох төлвүүд - label_all: бүгд - label_none: хоосон - label_nobody: хэн ч биш - label_next: Дараагийн - label_previous: Өмнөх - label_used_by: Хэрэглэгддэг - label_details: Дэлгэрэнгүй - label_add_note: Тэмдэглэл нэмэх - label_per_page: Нэг хуудсанд - label_calendar: Календарь - label_months_from: Саруудыг хаанаас - label_gantt: Гант диаграм - label_internal: Дотоод - label_last_changes: "сүүлийн %{count} өөрчлөлтүүд" - label_change_view_all: Бүх өөрчлөлтүүдийг харах - label_personalize_page: Энэ хуудсыг өөрт зориулан өөрчлөх - label_comment: Тайлбар - label_comment_plural: Тайлбарууд - label_x_comments: - zero: сэтгэгдэл байхгүй - one: 1 сэтгэгдэлтэй - other: "%{count} сэтгэгдэлтэй" - label_comment_add: Тайлбар нэмэх - label_comment_added: Тайлбар нэмэгдлээ - label_comment_delete: Тайлбарууд устгах - label_query: Хэрэглэгчийн тодорхойлсон асуулт - label_query_plural: Хэрэглэгчийн тодорхойлсон асуултууд - label_query_new: Шинээр хэрэглэгчийн тодорхойлсон асуулт үүсгэх - label_filter_add: Шүүлтүүр нэмэх - label_filter_plural: Шүүлтүүрүүд - label_equals: бол - label_not_equals: биш - label_in_less_than: аас бага - label_in_more_than: аас их - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: дотор - label_today: өнөөдөр - label_all_time: бүх хугацаа - label_yesterday: өчигдөр - label_this_week: энэ долоо хоног - label_last_week: өнгөрсөн долоо хоног - label_last_n_days: "сүүлийн %{count} өдрүүд" - label_this_month: энэ сар - label_last_month: сүүлийн сар - label_this_year: энэ жил - label_date_range: Хязгаар огноо - label_less_than_ago: бага өдрийн дотор - label_more_than_ago: их өдрийн дотор - label_ago: өдрийн өмнө - label_contains: агуулж байгаа - label_not_contains: агуулаагүй - label_day_plural: өдрүүд - label_repository: Репозитори - label_repository_plural: Репозиторууд - label_browse: Үзэх - label_modification: "%{count} өөрчлөлт" - label_modification_plural: "%{count} өөрчлөлтүүд" - label_branch: Салбар - label_tag: Шошго - label_revision: Хувилбар - label_revision_plural: Хувилбарууд - label_revision_id: "%{value} Хувилбар" - label_associated_revisions: Хамааралтай хувилбарууд - label_added: нэмэгдсэн - label_modified: өөрчлөгдсөн - label_copied: хуулсан - label_renamed: нэрийг нь өөрчилсөн - label_deleted: устгасан - label_latest_revision: Сүүлийн үеийн хувилбар - label_latest_revision_plural: Сүүлийн үеийн хувилбарууд - label_view_revisions: Хувилбаруудыг харах - label_view_all_revisions: Бүх хувилбаруудыг харах - label_max_size: Maximum size - label_sort_highest: Хамгийн дээр - label_sort_higher: Дээш нь - label_sort_lower: Доош нь - label_sort_lowest: Хамгийн доор - label_roadmap: Хөтөч - label_roadmap_due_in: "%{value} дотор дуусгах" - label_roadmap_overdue: "%{value} оройтсон" - label_roadmap_no_issues: Энэ хувилбарт асуудал байхгүй байна - label_search: Хайх - label_result_plural: Үр дүн - label_all_words: Бүх үгс - label_wiki: Вики - label_wiki_edit: Вики засвар - label_wiki_edit_plural: Вики засварууд - label_wiki_page: Вики хуудас - label_wiki_page_plural: Вики хуудас - label_index_by_title: Гарчгаар эрэмбэлэх - label_index_by_date: Огноогоор эрэмбэлэх - label_current_version: Одоогийн хувилбар - label_preview: Ямар харагдахыг шалгах - label_feed_plural: Feeds - label_changes_details: Бүх өөрчлөлтүүдийн дэлгэрэнгүй - label_issue_tracking: Асуудал хянах - label_spent_time: Зарцуулсан хугацаа - label_f_hour: "%{value} цаг" - label_f_hour_plural: "%{value} цаг" - label_time_tracking: Хугацааг хянах - label_change_plural: Өөрчлөлтүүд - label_statistics: Статистик - label_commits_per_month: Сард хийсэн коммитын тоо - label_commits_per_author: Зохиогч бүрийн хувьд коммитын тоо - label_view_diff: Ялгаануудыг харах - label_diff_inline: дотор нь - label_diff_side_by_side: зэрэгцүүлж - label_options: Тохиргоо - label_copy_workflow_from: Ажлын дарааллыг хуулах - label_permissions_report: Зөвшөөрлүүдийн таблиц - label_watched_issues: Ажиглагдаж байгаа асуудлууд - label_related_issues: Хамааралтай асуудлууд - label_applied_status: Олгосон төлөв - label_loading: Ачаалж байна... - label_relation_new: Шинэ хамаарал - label_relation_delete: Хамаарлыг устгах - label_relates_to: энгийн хамааралтай - label_duplicates: хос хамааралтай - label_duplicated_by: давхардуулсан эзэн - label_blocks: шаардах хамааралтай - label_blocked_by: блоколсон эзэн - label_precedes: урьдчилах хамааралтай - label_follows: дагаж - label_end_to_start: хойноос нь урагшаа - label_end_to_end: хойноос нь хойшоо - label_start_to_start: урдаас нь урагаа - label_start_to_end: урдаас нь хойшоо - label_stay_logged_in: Энэ комьютер дээр санах - label_disabled: идэвхгүй болсон - label_show_completed_versions: Гүйцэд хувилбаруудыг харуулах - label_me: би - label_board: Форум - label_board_new: Шинэ форум - label_board_plural: Форумууд - label_board_locked: Түгжээтэй - label_board_sticky: Sticky - label_topic_plural: Сэдвүүд - label_message_plural: Зурвасууд - label_message_last: Сүүлийн зурвас - label_message_new: Шинэ зурвас - label_message_posted: Зурвас нэмэгдлээ - label_reply_plural: Хариултууд - label_send_information: Дансны мэдээллийг хэрэглэгчид илгээх - label_year: Жил - label_month: Сар - label_week: Долоо хоног - label_date_from: Хэзээнээс - label_date_to: Хэдий хүртэл - label_language_based: Хэрэглэгчийн хэлнас шалтгаалан - label_sort_by: "%{value} талбараар нь эрэмбэлэх" - label_send_test_email: Турших мэйл илгээх - label_feeds_access_key: RSS хандах түлхүүр - label_missing_feeds_access_key: RSS хандах түлхүүр алга - label_feeds_access_key_created_on: "RSS хандалтын түлхүүр %{value}-ийн өмнө үүссэн" - label_module_plural: Модулууд - label_added_time_by: "%{author} %{age}-ийн өмнө нэмсэн" - label_updated_time_by: "%{author} %{age}-ийн өмнө өөрчилсөн" - label_updated_time: "%{value} -ийн өмнө өөрчлөгдсөн" - label_jump_to_a_project: Төсөл рүү очих... - label_file_plural: Файлууд - label_changeset_plural: Өөрчлөлтүүд - label_default_columns: Стандарт баганууд - label_no_change_option: (Өөрчлөлт байхгүй) - label_bulk_edit_selected_issues: Сонгогдсон асуудлуудыг бөөнөөр засварлах - label_theme: Системийн Дизайн - label_default: Стандарт - label_search_titles_only: Зөвхөн гарчиг хайх - label_user_mail_option_all: "Миний бүх төсөл дээрх бүх үзэгдлүүдийн хувьд" - label_user_mail_option_selected: "Сонгогдсон төслүүдийн хувьд бүх үзэгдэл дээр..." - label_user_mail_no_self_notified: "Миний өөрийн хийсэн өөрчлөлтүүдийн тухай надад мэдэгдэх хэрэггүй" - label_registration_activation_by_email: дансыг имэйлээр идэвхжүүлэх - label_registration_manual_activation: дансыг гараар идэвхжүүлэх - label_registration_automatic_activation: дансыг автоматаар идэвхжүүлэх - label_display_per_page: 'Нэг хуудсанд: %{value}' - label_age: Нас - label_change_properties: Тохиргоог өөрчлөх - label_general: Ерөнхий - label_more: Цааш нь - label_scm: SCM - label_plugins: Модулууд - label_ldap_authentication: LDAP нэвтрэх горим - label_downloads_abbr: D/L - label_optional_description: Дурын тайлбар - label_add_another_file: Дахин файл нэмэх - label_preferences: Тохиргоо - label_chronological_order: Цагаан толгойн үсгийн дарааллаар - label_reverse_chronological_order: Урвуу цагаан толгойн үсгийн дарааллаар - label_planning: Төлөвлөлт - label_incoming_emails: Ирсэн мэйлүүд - label_generate_key: Түлхүүр үүсгэх - label_issue_watchers: Ажиглагчид - label_example: Жишээ - label_display: Display - label_sort: Sort - label_ascending: Ascending - label_descending: Descending - label_date_from_to: From %{start} to %{end} - label_wiki_content_added: Wiki page added - label_wiki_content_updated: Wiki page updated - label_group: Group - label_group_plural: Groups - label_group_new: New group - label_time_entry_plural: Spent time - label_version_sharing_none: Not shared - label_version_sharing_descendants: With subprojects - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_tree: With project tree - label_version_sharing_system: With all projects - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Source - label_copy_target: Target - label_copy_same_as_target: Same as target - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API access key - label_missing_api_access_key: Missing an API access key - label_api_access_key_created_on: "API access key created %{value} ago" - - button_login: Нэвтрэх - button_submit: Илгээх - button_save: Хадгалах - button_check_all: Бүгдийг сонго - button_uncheck_all: Бүгдийг үл сонго - button_delete: Устгах - button_create: Үүсгэх - button_create_and_continue: Үүсгээд цааш үргэлжлүүлэх - button_test: Турших - button_edit: Засварлах - button_add: Нэмэх - button_change: Өөрчлөх - button_apply: Өөрчлөлтийг хадгалах - button_clear: Цэвэрлэх - button_lock: Түгжих - button_unlock: Түгжээг тайлах - button_download: Татах - button_list: Жагсаалт - button_view: Харах - button_move: Зөөх - button_move_and_follow: Зөө бас дага - button_back: Буцах - button_cancel: Болих - button_activate: Идэвхжүүлэх - button_sort: Эрэмбэлэх - button_log_time: Лог хийсэн хугацаа - button_rollback: Энэ хувилбар руу буцах - button_watch: Ажиглах - button_unwatch: Ажиглахаа болих - button_reply: Хариулах - button_archive: Архивлах - button_unarchive: Архивыг задлах - button_reset: Анхны утгууд - button_rename: Нэрийг нь солих - button_change_password: Нууц үгээ өөрчлөх - button_copy: Хуулах - button_copy_and_follow: Зөө бас дага - button_annotate: Тайлбар хавсаргах - button_update: Шинэчлэх - button_configure: Тохируулах - button_quote: Ишлэл - button_duplicate: Хуулбар - button_show: Үзэх - - status_active: идэвхтэй - status_registered: бүртгүүлсэн - status_locked: түгжээтэй - - version_status_open: нээлттэй - version_status_locked: түгжээтэй - version_status_closed: хаалттай - - field_active: идэвхтэй - - text_select_mail_notifications: Ямар үед имэйлээр мэдэгдэл илгээхийг сонгоно уу. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 гэвэл ямар ч хязгааргүй гэсэн үг - text_project_destroy_confirmation: Та энэ төсөл болоод бусад мэдээллийг нь үнэхээр устгамаар байна уу ? - text_subprojects_destroy_warning: "Уг төслийн дэд төслүүд : %{value} нь бас устгагдах болно." - text_workflow_edit: Ажлын дарааллыг өөрчлөхийн тулд хандалтын эрх болон асуудлын чиглэлийг сонгоно уу - text_are_you_sure: Та итгэлтэй байна уу ? - text_journal_changed: "%{label} %{old} байсан нь %{new} болов" - text_journal_set_to: "%{label} %{value} болгож өөрчиллөө" - text_journal_deleted: "%{label} устсан (%{old})" - text_journal_added: "%{label} %{value} нэмэгдсэн" - text_tip_issue_begin_day: энэ өдөр эхлэх ажил - text_tip_issue_end_day: энэ өдөр дуусах ажил - text_tip_issue_begin_end_day: энэ өдөр эхлээд мөн дуусч байгаа ажил - text_project_identifier_info: 'Зөвхөн жижиг үсгүүд болон (a-z), тоо and дундуур зураас ашиглаж болно.
    Нэгэнт хадгалсан хойно, төслийн глобал нэрийг өөрлчөх боломжгүй.' - text_caracters_maximum: "дээд тал нь %{count} үсэг." - text_caracters_minimum: "Хамгийн багадаа ядаж %{count} тэмдэгт байх." - text_length_between: "Урт нь багадаа %{min}, ихдээ %{max} тэмдэгт." - text_tracker_no_workflow: Энэхүү асуудлын чиглэлд ямар ч ажлын дараалал тодорхойлогдоогүй байна - text_unallowed_characters: Хэрэглэж болохгүй тэмдэгтүүд - text_comma_separated: Таслалаар зааглан олон утга оруулж болно. - text_line_separated: Multiple values allowed (one line for each value). - text_issues_ref_in_commit_messages: Коммитийн зурвасуудад хамааруулсан болон байнгын асуудлууд - text_issue_added: "Асуудал %{id} - ийг хэрэглэгч %{author} мэдэгдсэн байна." - text_issue_updated: "Асуудал %{id} - ийг хэрэглэгч %{author} өөрчилсөн байна." - text_wiki_destroy_confirmation: Та энэ вики болон холбогдох бүх мэдээллийг үнэхээр устгамаар байна уу ? - text_issue_category_destroy_question: "Энэ ангилалд зарим асуудлууд (%{count}) орсон байна. Та яах вэ ?" - text_issue_category_destroy_assignments: Асуудлуудыг энэ ангиллаас авах - text_issue_category_reassign_to: Асуудлуудыг энэ ангилалд дахин оноох - text_user_mail_option: "Сонгогдоогүй төслүүдийн хувьд, та зөвхөн өөрийнхөө ажиглаж байгаа зүйлс юмуу танд хамаатай зүйлсийн талаар мэдэгдэл авах болно (Таны оруулсан асуудал, эсвэл танд оноосон гэх мэт)." - text_no_configuration_data: "Хандалтын эрхүүд, чиглэлүүд, асуудлын төлвүүд болон ажлын дарааллын тухай мэдээллийг хараахан оруулаагүй байна.\nТа стандарт өгөгдлүүдийг даруйхан оруулахыг зөвлөж байна, оруулсан хойно та засварлаж болно." - text_load_default_configuration: Стандарт өгөгдлийг ачаалах - text_status_changed_by_changeset: "%{value} өөрчлөлтөд хийгдсэн." - text_issues_destroy_confirmation: 'Та сонгогдсон асуудлуудыг үнэхээр устгамаар байна уу ?' - text_select_project_modules: 'Энэ төслийн хувьд идэвхжүүлэх модулуудаа сонгоно уу:' - text_default_administrator_account_changed: Стандарт администраторын бүртгэл өөрчлөгдлөө - text_file_repository_writable: Хавсралт файл хадгалах хавтас руу бичих эрхтэй - text_plugin_assets_writable: Плагин модулийн ассет хавтас руу бичих эрхтэй - text_rmagick_available: RMagick суулгагдсан (заавал биш) - text_destroy_time_entries_question: "Таны устгах гэж байгаа асуудлууд дээр нийт %{hours} цаг зарцуулсан юм байна, та яах вэ ?" - text_destroy_time_entries: Мэдэгдсэн цагуудыг устгах - text_assign_time_entries_to_project: Мэдэгдсэн асуудлуудыг төсөлд оноох - text_reassign_time_entries: 'Мэдэгдсэн асуудлуудыг энэ асуудалд дахин оноо:' - text_user_wrote: "%{value} бичихдээ:" - text_enumeration_destroy_question: "Энэ утгад %{count} обьект оноогдсон байна." - text_enumeration_category_reassign_to: 'Тэдгээрийг энэ утгад дахин оноо:' - text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/configuration.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй." - text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх хэрэглэгчийн нэрүүдэд харгалзсан Төслийн Менежер системд бүртгэлтэй хэрэглэгчдийг Сонгох юмуу шинэчилнэ үү.\nТөслийн менежер болон репозиторид байгаа ижилхэн нэр юмуу имэйлтэй хэрэглэгчид харилцан харгалзна." - text_diff_truncated: '... Файлын ялгаврын хэмжээ үзүүлэхэд дэндүү урт байгаа учраас төгсгөлөөс нь хасч үзүүлэв.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - - default_role_manager: Менежер - default_role_developer: Хөгжүүлэгч - default_role_reporter: Мэдэгдэгч - default_tracker_bug: Алдаа - default_tracker_feature: Онцлог - default_tracker_support: Тусламж - default_issue_status_new: Шинэ - default_issue_status_in_progress: Ахицтай - default_issue_status_assigned: Оноогдсон - default_issue_status_resolved: Шийдвэрлэгдсэн - default_issue_status_feedback: Feedback - default_issue_status_closed: Хаагдсан - default_issue_status_rejected: Хүлээж аваагүй - default_doc_category_user: Хэрэглэгчийн бичиг баримт - default_doc_category_tech: Техникийн бичиг баримт - default_priority_low: Бага - default_priority_normal: Хэвийн - default_priority_high: Өндөр - default_priority_urgent: Нэн яаралтай - default_priority_immediate: Нэн даруй - default_activity_design: Дизайн - default_activity_development: Хөгжүүлэлт - - enumeration_issue_priorities: Асуудлын зэрэглэлүүд - enumeration_doc_categories: Бичиг баримтын ангиллууд - enumeration_activities: Үйл ажиллагаанууд (хугацааг хянах) - enumeration_system_activity: Системийн үйл ажиллагаа - - permission_manage_subtasks: Manage subtasks - label_profile: Profile - field_parent_issue: Parent task - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - error_can_not_delete_custom_field: Unable to delete custom field - error_unable_to_connect: Unable to connect (%{value}) - error_can_not_remove_role: This role is in use and can not be deleted. - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +mn: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%Y/%m/%d" + short: "%b %d" + long: "%Y, %B %d" + + day_names: [Даваа, Мягмар, Лхагва, Пүрэв, Баасан, Бямба, Ням] + abbr_day_names: [Дав, Мяг, Лха, Пүр, Бсн, Бям, Ням] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, 1-р сар, 2-р сар, 3-р сар, 4-р сар, 5-р сар, 6-р сар, 7-р сар, 8-р сар, 9-р сар, 10-р сар, 11-р сар, 12-р сар] + abbr_month_names: [~, 1сар, 2сар, 3сар, 4сар, 5сар, 6сар, 7сар, 8сар, 9сар, 10сар, 11сар, 12сар] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%Y/%m/%d %I:%M %p" + time: "%I:%M %p" + short: "%d %b %H:%M" + long: "%Y, %B %d %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "хагас минут" + less_than_x_seconds: + one: "секунд орчим" + other: "%{count} секундээс бага хугацаа" + x_seconds: + one: "1 секунд" + other: "%{count} секунд" + less_than_x_minutes: + one: "минутаас бага хугацаа" + other: "%{count} минутаас бага хугацаа" + x_minutes: + one: "1 минут" + other: "%{count} минут" + about_x_hours: + one: "1 цаг орчим" + other: "ойролцоогоор %{count} цаг" + x_days: + one: "1 өдөр" + other: "%{count} өдөр" + about_x_months: + one: "1 сар орчим" + other: "ойролцоогоор %{count} сар" + x_months: + one: "1 сар" + other: "%{count} сар" + about_x_years: + one: "ойролцоогоор 1 жил" + other: "ойролцоогоор %{count} жил" + over_x_years: + one: "1 жилээс их" + other: "%{count} жилээс их" + almost_x_years: + one: "бараг 1 жил" + other: "бараг %{count} жил" + + number: + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Байт" + other: "Байт" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "бас" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "жагсаалтад заагдаагүй байна" + exclusion: "нөөцлөгдсөн" + invalid: "буруу" + confirmation: "баталгаажсан өгөгдөлтэй таарахгүй байна" + accepted: "хүлээж авах ёстой" + empty: "хоосон байж болохгүй" + blank: "бланк байж болохгүй" + too_long: "дэндүү урт байна (хамгийн ихдээ %{count} тэмдэгт)" + too_short: "дэндүү богино байна (хамгийн багадаа %{count} тэмдэгт)" + wrong_length: "буруу урттай байна (заавал %{count} тэмдэгт)" + taken: "аль хэдийнэ авсан байна" + not_a_number: "тоо биш байна" + not_a_date: "зөв огноо биш байна" + greater_than: "%{count} их байх ёстой" + greater_than_or_equal_to: "must be greater than or equal to %{count}" + equal_to: "must be equal to %{count}" + less_than: "must be less than %{count}" + less_than_or_equal_to: "must be less than or equal to %{count}" + odd: "заавал сондгой" + even: "заавал тэгш" + greater_than_start_date: "must be greater than start date" + not_same_project: "нэг ижил төсөлд хамаарахгүй байна" + circular_dependency: "Энэ харьцаа нь гинжин(рекурсив) харьцаа үүсгэх юм байна" + cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + + actionview_instancetag_blank_option: Сонгоно уу + + general_text_No: 'Үгүй' + general_text_Yes: 'Тийм' + general_text_no: 'үгүй' + general_text_yes: 'тийм' + general_lang_name: 'Mongolian (Монгол)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '7' + + notice_account_updated: Дансыг амжилттай өөрчиллөө. + notice_account_invalid_creditentials: Хэрэглэгчийн нэр эсвэл нууц үг буруу байна + notice_account_password_updated: Нууц үгийг амжилттай өөрчиллөө. + notice_account_wrong_password: Буруу нууц үг + notice_account_register_done: Шинэ хэрэглэгч амжилттай үүсгэлээ. Идэвхжүүлэхийн тулд, бидний тань луу илгээсэн мэйл дотор байгаа холбоос дээр дараарай. + notice_account_unknown_email: Үл мэдэгдэх хэрэглэгч. + notice_can_t_change_password: Энэ эрх гадаад нэвтрэлтэд ашигладаг учраас нууц үгийг өөрчлөх боломжгүй. + notice_account_lost_email_sent: Бид таньд мэйлээр нууц үгээ өөрчлөх зааврыг илгээсэн байгаа. + notice_account_activated: Таны данс идэвхжлээ. Одоо нэвтэрч орж болно. + notice_successful_create: Амжилттай үүсгэлээ. + notice_successful_update: Амжилттай өөрчиллөө. + notice_successful_delete: Амжилттай устгалаа. + notice_successful_connection: Амжилттай холбогдлоо. + notice_file_not_found: Таны үзэх гэсэн хуудас байхгүй юмуу устгагдсан байна. + notice_locking_conflict: Өгөгдлийг өөр хүн өөрчилсөн байна. + notice_not_authorized: Танд энэ хуудсыг үзэх эрх байхгүй байна. + notice_email_sent: "%{value} - руу мэйл илгээлээ" + notice_email_error: "Мэйл илгээхэд алдаа гарлаа (%{value})" + notice_feeds_access_key_reseted: Таны RSS хандалтын түлхүүрийг дахин эхлүүллээ. + notice_api_access_key_reseted: Your API access key was reset. + notice_failed_to_save_issues: "%{total} асуудал сонгогдсоноос %{count} асуудлыг нь хадгалахад алдаа гарлаа: %{ids}." + notice_no_issue_selected: "Ямар ч асуудал сонгогдоогүй байна! Засварлах асуудлуудаа сонгоно уу." + notice_account_pending: "Таны дансыг үүсгэж дууслаа, администратор баталгаажуулах хүртэл хүлээнэ үү." + notice_default_data_loaded: Стандарт тохиргоог амжилттай ачааллаа. + notice_unable_delete_version: Хувилбарыг устгах боломжгүй. + notice_issue_done_ratios_updated: Issue done ratios updated. + + error_can_t_load_default_data: "Стандарт тохиргоог ачаалж чадсангүй: %{value}" + error_scm_not_found: "Repository дотор тухайн бичлэг эсвэл хувилбарыг олсонгүй." + error_scm_command_failed: "Repository-д хандахад алдаа гарлаа: %{value}" + error_scm_annotate: "Бичлэг байхгүй байна, эсвэл бичлэгт тайлбар хавсаргаж болохгүй." + error_issue_not_found_in_project: 'Сонгосон асуудал энэ төсөлд хамаардаггүй юм уу эсвэл системд байхгүй байна.' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' + error_can_not_archive_project: This project can not be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + + warning_attachments_not_saved: "%{count} file(s) файлыг хадгалж чадсангүй." + + mail_subject_lost_password: "Таны %{value} нууц үг" + mail_body_lost_password: 'Нууц үгээ өөрчлөхийн тулд доорх холбоос дээр дарна уу:' + mail_subject_register: "Таны %{value} дансыг идэвхжүүлэх" + mail_body_register: 'Дансаа идэвхжүүлэхийн тулд доорх холбоос дээр дарна уу:' + mail_body_account_information_external: "Та өөрийнхөө %{value} дансыг ашиглаж холбогдож болно." + mail_body_account_information: Таны дансны тухай мэдээлэл + mail_subject_account_activation_request: "%{value} дансыг идэвхжүүлэх хүсэлт" + mail_body_account_activation_request: "Шинэ хэрэглэгч (%{value}) бүртгүүлсэн байна. Таны баталгаажуулахыг хүлээж байна:" + mail_subject_reminder: "Дараагийн өдрүүдэд %{count} асуудлыг шийдэх хэрэгтэй (%{days})" + mail_body_reminder: "Танд оноогдсон %{count} асуудлуудыг дараагийн %{days} өдрүүдэд шийдэх хэрэгтэй:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 алдаа + gui_validation_error_plural: "%{count} алдаа" + + field_name: Нэр + field_description: Тайлбар + field_summary: Дүгнэлт + field_is_required: Зайлшгүй + field_firstname: Таны нэр + field_lastname: Овог + field_mail: Имэйл + field_filename: Файл + field_filesize: Хэмжээ + field_downloads: Татаж авах зүйлс + field_author: Зохиогч + field_created_on: Үүссэн + field_updated_on: Өөрчилсөн + field_field_format: Формат + field_is_for_all: Бүх төслийн хувьд + field_possible_values: Боломжтой утгууд + field_regexp: Энгийн илэрхийлэл + field_min_length: Минимум урт + field_max_length: Максимум урт + field_value: Утга + field_category: Төрөл + field_title: Гарчиг + field_project: Төсөл + field_issue: Асуудал + field_status: Төлөв + field_notes: Тэмдэглэлүүд + field_is_closed: Асуудал хаагдсан + field_is_default: Стандарт утга + field_tracker: Чиглэл + field_subject: Гарчиг + field_due_date: Дуусах огноо + field_assigned_to: Оноогдсон + field_priority: Зэрэглэл + field_fixed_version: Хувилбар + field_user: Хэрэглэгч + field_role: Хандалтын эрх + field_homepage: Нүүр хуудас + field_is_public: Олон нийтийн + field_parent: Эцэг төсөл нь + field_is_in_roadmap: Асуудлуудыг явцын зураг дээр харуулах + field_login: Нэвтрэх нэр + field_mail_notification: Имэйл мэдэгдлүүд + field_admin: Администратор + field_last_login_on: Сүүлийн холбоо + field_language: Хэл + field_effective_date: Огноо + field_password: Нууц үг + field_new_password: Шннэ нууц үг + field_password_confirmation: Баталгаажуулах + field_version: Хувилбар + field_type: Төрөл + field_host: Хост + field_port: Порт + field_account: Данс + field_base_dn: Үндсэн ДН + field_attr_login: Нэвтрэх аттрибут + field_attr_firstname: Таны нэр аттрибут + field_attr_lastname: Овог аттрибут + field_attr_mail: Имэйл аттрибут + field_onthefly: Хүссэн үедээ хэрэглэгч үүсгэх + field_start_date: Эхлэл + field_done_ratio: "%% Гүйцэтгэсэн" + field_auth_source: Нэвтрэх арга + field_hide_mail: Миний имэйл хаягийг нуу + field_comments: Тайлбар + field_url: URL Хаяг + field_start_page: Тэргүүн хуудас + field_subproject: Дэд төсөл + field_hours: Цаг + field_activity: Үйл ажиллагаа + field_spent_on: Огноо + field_identifier: Төслийн глобал нэр + field_is_filter: Шүүлтүүр болгон хэрэглэгддэг + field_issue_to: Хамаатай асуудал + field_delay: Хоцролт + field_assignable: Энэ хандалтын эрхэд асуудлуудыг оноож өгч болно + field_redirect_existing_links: Байгаа холбоосуудыг дахин чиглүүлэх + field_estimated_hours: Барагцаалсан цаг + field_column_names: Баганууд + field_time_zone: Цагын бүс + field_searchable: Хайж болох + field_default_value: Стандарт утга + field_comments_sorting: Тайлбаруудыг харуул + field_parent_title: Эцэг хуудас + field_editable: Засварлагдана + field_watcher: Харна + field_identity_url: OpenID URL + field_content: Агуулга + field_group_by: Үр дүнгээр бүлэглэх + field_sharing: Sharing + + setting_app_title: Программын гарчиг + setting_app_subtitle: Программын дэд гарчиг + setting_welcome_text: Мэндчилгээ + setting_default_language: Стандарт хэл + setting_login_required: Нэвтрэх шаардлагатай + setting_self_registration: Өөрийгөө бүртгүүлэх + setting_attachment_max_size: Хавсралт файлын дээд хэмжээ + setting_issues_export_limit: Асуудал экспортлох хязгаар + setting_mail_from: Ямар имэйл хаяг үүсгэх + setting_bcc_recipients: BCC талбарын хаягууд (bcc) + setting_plain_text_mail: дан текст мэйл (HTML биш) + setting_host_name: Хостын нэр болон зам + setting_text_formatting: Текст хэлбэржүүлэлт + setting_wiki_compression: Вики хуудсуудын түүх дээр шахалт хийх + setting_feeds_limit: Фийд агуулгын хязгаар + setting_default_projects_public: Шинэ төслүүд автоматаар олон нийтийнх байна + setting_autofetch_changesets: Комитуудыг автоматаар татаж авах + setting_sys_api_enabled: Репозитори менежментэд зориулан WS-ийг идэвхжүүлэх + setting_commit_ref_keywords: Хамааруулах түлхүүр үгс + setting_commit_fix_keywords: Зоолттой түлхүүр үгс + setting_autologin: Компьютер дээр санах + setting_date_format: Огнооны формат + setting_time_format: Цагийн формат + setting_cross_project_issue_relations: Төсөл хооронд асуудал хамааруулахыг зөвшөөрөх + setting_issue_list_default_columns: Асуудлуудыг харуулах стандарт баганууд + setting_repositories_encodings: Репозиторийн энкодинг + setting_emails_footer: Имэйлүүдийн хөл хэсэг + setting_protocol: Протокол + setting_per_page_options: Нэг хуудсанд байх обьектуудын тохиргоо + setting_user_format: Хэрэглэгчдийг харуулах формат + setting_activity_days_default: Төслийн үйл ажиллагаа хэсэгт үзүүлэх өдрийн тоо + setting_display_subprojects_issues: Дэд төслүүдийн асуудлуудыг автоматаар гол төсөл дээр харуулах + setting_enabled_scm: SCM - ийг идэвхжүүлэх + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Ирсэн мэйлүүдийн хувьд WS-ийг идэвхжүүлэх + setting_mail_handler_api_key: API түлхүүр + setting_sequential_project_identifiers: Дэс дараалсан төслийн глобал нэр үүсгэж байх + setting_gravatar_enabled: Gravatar дүрсүүдийг хэрэглэгчдэд хэрэглэж байх + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Ялгаатай мөрүүдийн тоо (дээд тал нь) + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Allow OpenID login and registration + setting_password_min_length: Minimum password length + setting_new_project_user_role_id: Role given to a non-admin user who creates a project + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + + permission_add_project: Create project + permission_add_subprojects: Create subprojects + permission_edit_project: Төслийг засварлах + permission_select_project_modules: Төслийн модулуудийг сонгоно уу + permission_manage_members: Системийн хэрэглэгчид + permission_manage_project_activities: Manage project activities + permission_manage_versions: Хувилбарууд + permission_manage_categories: Асуудлын ангиллууд + permission_view_issues: Асуудлуудыг харах + permission_add_issues: Асуудлууд нэмэх + permission_edit_issues: Асуудлуудыг засварлах + permission_manage_issue_relations: Асуудлын хамаарлыг зохицуулах + permission_add_issue_notes: Тэмдэглэл нэмэх + permission_edit_issue_notes: Тэмдэглэлүүд засварлах + permission_edit_own_issue_notes: Өөрийн үлдээсэн тэмдэглэлүүдийг засварлах + permission_move_issues: Асуудлуудыг зөөх + permission_delete_issues: Асуудлуудыг устгах + permission_manage_public_queries: Олон нийтийн асуултууд + permission_save_queries: Асуултуудыг хадгалах + permission_view_gantt: Гант диаграмыг үзэх + permission_view_calendar: Календарь үзэх + permission_view_issue_watchers: Ажиглагчдын жагсаалтыг харах + permission_add_issue_watchers: Ажиглагчид нэмэх + permission_delete_issue_watchers: Ажиглагчдыг устгах + permission_log_time: Зарцуулсан хугацааг лог хийх + permission_view_time_entries: Зарцуулсан хугацааг харах + permission_edit_time_entries: Хугацааны логуудыг засварлах + permission_edit_own_time_entries: Өөрийн хугацааны логуудыг засварлах + permission_manage_news: Мэдээ мэдээллүүд + permission_comment_news: Мэдээнд тайлбар үлдээх + permission_manage_documents: Бичиг баримтууд + permission_view_documents: Бичиг баримтуудыг харах + permission_manage_files: Файлууд + permission_view_files: Файлуудыг харах + permission_manage_wiki: Вики удирдах + permission_rename_wiki_pages: Вики хуудсуудыг дахиж нэрлэх + permission_delete_wiki_pages: Вики хуудсуудыг устгах + permission_view_wiki_pages: Вики үзэх + permission_view_wiki_edits: Вики түүх үзэх + permission_edit_wiki_pages: Вики хуудсуудыг засварлах + permission_delete_wiki_pages_attachments: Хавсралтуудыг устгах + permission_protect_wiki_pages: Вики хуудсуудыг хамгаалах + permission_manage_repository: Репозитори + permission_browse_repository: Репозиторийг үзэх + permission_view_changesets: Өөрчлөлтүүдийг харах + permission_commit_access: Коммит хандалт + permission_manage_boards: Самбарууд + permission_view_messages: Зурвасуудыг харах + permission_add_messages: Зурвас илгээх + permission_edit_messages: Зурвасуудыг засварлах + permission_edit_own_messages: Өөрийн зурвасуудыг засварлах + permission_delete_messages: Зурвасуудыг устгах + permission_delete_own_messages: Өөрийн зурвасуудыг устгах + permission_export_wiki_pages: Вики хуудсуудыг экспорт хийх + + project_module_issue_tracking: Асуудал хянах + project_module_time_tracking: Хугацаа хянах + project_module_news: Мэдээ мэдээллүүд + project_module_documents: Бичиг баримтууд + project_module_files: Файлууд + project_module_wiki: Вики + project_module_repository: Репозитори + project_module_boards: Самбарууд + + label_user: Хэрэглэгч + label_user_plural: Хэрэглэгчид + label_user_new: Шинэ хэрэглэгч + label_user_anonymous: Хамаагүй хэрэглэгч + label_project: Төсөл + label_project_new: Шинэ төсөл + label_project_plural: Төслүүд + label_x_projects: + zero: төсөл байхгүй + one: 1 төсөл + other: "%{count} төслүүд" + label_project_all: Бүх Төслүүд + label_project_latest: Сүүлийн үеийн төслүүд + label_issue: Асуудал + label_issue_new: Шинэ асуудал + label_issue_plural: Асуудлууд + label_issue_view_all: Бүх асуудлуудыг харах + label_issues_by: "%{value} - н асуудлууд" + label_issue_added: Асуудал нэмэгдлээ + label_issue_updated: Асуудал өөрчлөгдлөө + label_document: Бичиг баримт + label_document_new: Шинэ бичиг баримт + label_document_plural: Бичиг баримтууд + label_document_added: Бичиг баримт нэмэгдлээ + label_role: Хандалтын эрх + label_role_plural: Хандалтын эрхүүд + label_role_new: Шинэ хандалтын эрх + label_role_and_permissions: Хандалтын эрхүүд болон зөвшөөрлүүд + label_member: Гишүүн + label_member_new: Шинэ гишүүн + label_member_plural: Гишүүд + label_tracker: Чиглэл + label_tracker_plural: Чиглэлүүд + label_tracker_new: Шинэ чиглэл + label_workflow: Ажлын дараалал + label_issue_status: Асуудлын төлөв + label_issue_status_plural: Асуудлын төлвүүд + label_issue_status_new: Шинэ төлөв + label_issue_category: Асуудлын ангилал + label_issue_category_plural: Асуудлын ангиллууд + label_issue_category_new: Шинэ ангилал + label_custom_field: Хэрэглэгчийн тодорхойлсон талбар + label_custom_field_plural: Хэрэглэгчийн тодорхойлсон талбарууд + label_custom_field_new: Шинээр хэрэглэгчийн тодорхойлсон талбар үүсгэх + label_enumerations: Ангиллууд + label_enumeration_new: Шинэ утга + label_information: Мэдээлэл + label_information_plural: Мэдээллүүд + label_please_login: Нэвтэрч орно уу + label_register: Бүртгүүлэх + label_login_with_open_id_option: or login with OpenID + label_password_lost: Нууц үгээ алдсан + label_home: Нүүр + label_my_page: Миний хуудас + label_my_account: Миний данс + label_my_projects: Миний төслүүд + label_administration: Админ хэсэг + label_login: Нэвтрэх + label_logout: Гарах + label_help: Тусламж + label_reported_issues: Мэдэгдсэн асуудлууд + label_assigned_to_me_issues: Надад оноогдсон асуудлууд + label_last_login: Сүүлийн холболт + label_registered_on: Бүртгүүлсэн огноо + label_activity: Үйл ажиллагаа + label_overall_activity: Ерөнхий үйл ажиллагаа + label_user_activity: "%{value}-ийн үйл ажиллагаа" + label_new: Шинэ + label_logged_as: Холбогдсон нэр + label_environment: Орчин + label_authentication: Нэвтрэх + label_auth_source: Нэвтрэх арга + label_auth_source_new: Шинэ нэвтрэх арга + label_auth_source_plural: Нэвтрэх аргууд + label_subproject_plural: Дэд төслүүд + label_subproject_new: Шинэ дэд төсөл + label_and_its_subprojects: "%{value} болон холбогдох дэд төслүүд" + label_min_max_length: Дээд - Доод урт + label_list: Жагсаалт + label_date: Огноо + label_integer: Бүхэл тоо + label_float: Бутархай тоо + label_boolean: Үнэн худал утга + label_string: Текст + label_text: Урт текст + label_attribute: Аттрибут + label_attribute_plural: Аттрибутууд + label_download: "%{count} Татаж авсан зүйл" + label_download_plural: "%{count} Татаж авсан зүйлс" + label_no_data: Үзүүлэх өгөгдөл байхгүй байна + label_change_status: Төлвийг өөрчлөх + label_history: Түүх + label_attachment: Файл + label_attachment_new: Шинэ файл + label_attachment_delete: Файл устгах + label_attachment_plural: Файлууд + label_file_added: Файл нэмэгдлээ + label_report: Тайлан + label_report_plural: Тайлангууд + label_news: Мэдээ + label_news_new: Шинэ мэдээ + label_news_plural: Мэдээ + label_news_latest: Сүүлийн үеийн мэдээнүүд + label_news_view_all: Бүх мэдээг харах + label_news_added: Мэдээ нэмэгдлээ + label_change_log: Өөрчлөлтийн лог + label_settings: Тохиргоо + label_overview: Эхлэл + label_version: Хувилбар + label_version_new: Шинэ хувилбар + label_version_plural: Хувилбарууд + label_close_versions: Гүйцэт хувилбаруудыг хаалаа + label_confirmation: Баталгаажуулах + label_export_to: 'Өөр авч болох формат:' + label_read: Унших... + label_public_projects: Олон нийтийн төслүүд + label_open_issues: нээлттэй + label_open_issues_plural: нээлттэй + label_closed_issues: хаалттай + label_closed_issues_plural: хаалттай + label_x_open_issues_abbr_on_total: + zero: 0 нээлттэй / %{total} + one: 1 нээлттэй / %{total} + other: "%{count} нээлттэй / %{total}" + label_x_open_issues_abbr: + zero: 0 нээлттэй + one: 1 нээлттэй + other: "%{count} нээлттэй" + label_x_closed_issues_abbr: + zero: 0 хаалттай + one: 1 хаалттай + other: "%{count} хаалттай" + label_total: Нийт + label_permissions: Зөвшөөрлүүд + label_current_status: Одоогийн төлөв + label_new_statuses_allowed: Шинээр олгож болох төлвүүд + label_all: бүгд + label_none: хоосон + label_nobody: хэн ч биш + label_next: Дараагийн + label_previous: Өмнөх + label_used_by: Хэрэглэгддэг + label_details: Дэлгэрэнгүй + label_add_note: Тэмдэглэл нэмэх + label_per_page: Нэг хуудсанд + label_calendar: Календарь + label_months_from: Саруудыг хаанаас + label_gantt: Гант диаграм + label_internal: Дотоод + label_last_changes: "сүүлийн %{count} өөрчлөлтүүд" + label_change_view_all: Бүх өөрчлөлтүүдийг харах + label_personalize_page: Энэ хуудсыг өөрт зориулан өөрчлөх + label_comment: Тайлбар + label_comment_plural: Тайлбарууд + label_x_comments: + zero: сэтгэгдэл байхгүй + one: 1 сэтгэгдэлтэй + other: "%{count} сэтгэгдэлтэй" + label_comment_add: Тайлбар нэмэх + label_comment_added: Тайлбар нэмэгдлээ + label_comment_delete: Тайлбарууд устгах + label_query: Хэрэглэгчийн тодорхойлсон асуулт + label_query_plural: Хэрэглэгчийн тодорхойлсон асуултууд + label_query_new: Шинээр хэрэглэгчийн тодорхойлсон асуулт үүсгэх + label_filter_add: Шүүлтүүр нэмэх + label_filter_plural: Шүүлтүүрүүд + label_equals: бол + label_not_equals: биш + label_in_less_than: аас бага + label_in_more_than: аас их + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: дотор + label_today: өнөөдөр + label_all_time: бүх хугацаа + label_yesterday: өчигдөр + label_this_week: энэ долоо хоног + label_last_week: өнгөрсөн долоо хоног + label_last_n_days: "сүүлийн %{count} өдрүүд" + label_this_month: энэ сар + label_last_month: сүүлийн сар + label_this_year: энэ жил + label_date_range: Хязгаар огноо + label_less_than_ago: бага өдрийн дотор + label_more_than_ago: их өдрийн дотор + label_ago: өдрийн өмнө + label_contains: агуулж байгаа + label_not_contains: агуулаагүй + label_day_plural: өдрүүд + label_repository: Репозитори + label_repository_plural: Репозиторууд + label_browse: Үзэх + label_modification: "%{count} өөрчлөлт" + label_modification_plural: "%{count} өөрчлөлтүүд" + label_branch: Салбар + label_tag: Шошго + label_revision: Хувилбар + label_revision_plural: Хувилбарууд + label_revision_id: "%{value} Хувилбар" + label_associated_revisions: Хамааралтай хувилбарууд + label_added: нэмэгдсэн + label_modified: өөрчлөгдсөн + label_copied: хуулсан + label_renamed: нэрийг нь өөрчилсөн + label_deleted: устгасан + label_latest_revision: Сүүлийн үеийн хувилбар + label_latest_revision_plural: Сүүлийн үеийн хувилбарууд + label_view_revisions: Хувилбаруудыг харах + label_view_all_revisions: Бүх хувилбаруудыг харах + label_max_size: Maximum size + label_sort_highest: Хамгийн дээр + label_sort_higher: Дээш нь + label_sort_lower: Доош нь + label_sort_lowest: Хамгийн доор + label_roadmap: Хөтөч + label_roadmap_due_in: "%{value} дотор дуусгах" + label_roadmap_overdue: "%{value} оройтсон" + label_roadmap_no_issues: Энэ хувилбарт асуудал байхгүй байна + label_search: Хайх + label_result_plural: Үр дүн + label_all_words: Бүх үгс + label_wiki: Вики + label_wiki_edit: Вики засвар + label_wiki_edit_plural: Вики засварууд + label_wiki_page: Вики хуудас + label_wiki_page_plural: Вики хуудас + label_index_by_title: Гарчгаар эрэмбэлэх + label_index_by_date: Огноогоор эрэмбэлэх + label_current_version: Одоогийн хувилбар + label_preview: Ямар харагдахыг шалгах + label_feed_plural: Feeds + label_changes_details: Бүх өөрчлөлтүүдийн дэлгэрэнгүй + label_issue_tracking: Асуудал хянах + label_spent_time: Зарцуулсан хугацаа + label_f_hour: "%{value} цаг" + label_f_hour_plural: "%{value} цаг" + label_time_tracking: Хугацааг хянах + label_change_plural: Өөрчлөлтүүд + label_statistics: Статистик + label_commits_per_month: Сард хийсэн коммитын тоо + label_commits_per_author: Зохиогч бүрийн хувьд коммитын тоо + label_view_diff: Ялгаануудыг харах + label_diff_inline: дотор нь + label_diff_side_by_side: зэрэгцүүлж + label_options: Тохиргоо + label_copy_workflow_from: Ажлын дарааллыг хуулах + label_permissions_report: Зөвшөөрлүүдийн таблиц + label_watched_issues: Ажиглагдаж байгаа асуудлууд + label_related_issues: Хамааралтай асуудлууд + label_applied_status: Олгосон төлөв + label_loading: Ачаалж байна... + label_relation_new: Шинэ хамаарал + label_relation_delete: Хамаарлыг устгах + label_relates_to: энгийн хамааралтай + label_duplicates: хос хамааралтай + label_duplicated_by: давхардуулсан эзэн + label_blocks: шаардах хамааралтай + label_blocked_by: блоколсон эзэн + label_precedes: урьдчилах хамааралтай + label_follows: дагаж + label_end_to_start: хойноос нь урагшаа + label_end_to_end: хойноос нь хойшоо + label_start_to_start: урдаас нь урагаа + label_start_to_end: урдаас нь хойшоо + label_stay_logged_in: Энэ комьютер дээр санах + label_disabled: идэвхгүй болсон + label_show_completed_versions: Гүйцэд хувилбаруудыг харуулах + label_me: би + label_board: Форум + label_board_new: Шинэ форум + label_board_plural: Форумууд + label_board_locked: Түгжээтэй + label_board_sticky: Sticky + label_topic_plural: Сэдвүүд + label_message_plural: Зурвасууд + label_message_last: Сүүлийн зурвас + label_message_new: Шинэ зурвас + label_message_posted: Зурвас нэмэгдлээ + label_reply_plural: Хариултууд + label_send_information: Дансны мэдээллийг хэрэглэгчид илгээх + label_year: Жил + label_month: Сар + label_week: Долоо хоног + label_date_from: Хэзээнээс + label_date_to: Хэдий хүртэл + label_language_based: Хэрэглэгчийн хэлнас шалтгаалан + label_sort_by: "%{value} талбараар нь эрэмбэлэх" + label_send_test_email: Турших мэйл илгээх + label_feeds_access_key: RSS хандах түлхүүр + label_missing_feeds_access_key: RSS хандах түлхүүр алга + label_feeds_access_key_created_on: "RSS хандалтын түлхүүр %{value}-ийн өмнө үүссэн" + label_module_plural: Модулууд + label_added_time_by: "%{author} %{age}-ийн өмнө нэмсэн" + label_updated_time_by: "%{author} %{age}-ийн өмнө өөрчилсөн" + label_updated_time: "%{value} -ийн өмнө өөрчлөгдсөн" + label_jump_to_a_project: Төсөл рүү очих... + label_file_plural: Файлууд + label_changeset_plural: Өөрчлөлтүүд + label_default_columns: Стандарт баганууд + label_no_change_option: (Өөрчлөлт байхгүй) + label_bulk_edit_selected_issues: Сонгогдсон асуудлуудыг бөөнөөр засварлах + label_theme: Системийн Дизайн + label_default: Стандарт + label_search_titles_only: Зөвхөн гарчиг хайх + label_user_mail_option_all: "Миний бүх төсөл дээрх бүх үзэгдлүүдийн хувьд" + label_user_mail_option_selected: "Сонгогдсон төслүүдийн хувьд бүх үзэгдэл дээр..." + label_user_mail_no_self_notified: "Миний өөрийн хийсэн өөрчлөлтүүдийн тухай надад мэдэгдэх хэрэггүй" + label_registration_activation_by_email: дансыг имэйлээр идэвхжүүлэх + label_registration_manual_activation: дансыг гараар идэвхжүүлэх + label_registration_automatic_activation: дансыг автоматаар идэвхжүүлэх + label_display_per_page: 'Нэг хуудсанд: %{value}' + label_age: Нас + label_change_properties: Тохиргоог өөрчлөх + label_general: Ерөнхий + label_more: Цааш нь + label_scm: SCM + label_plugins: Модулууд + label_ldap_authentication: LDAP нэвтрэх горим + label_downloads_abbr: D/L + label_optional_description: Дурын тайлбар + label_add_another_file: Дахин файл нэмэх + label_preferences: Тохиргоо + label_chronological_order: Цагаан толгойн үсгийн дарааллаар + label_reverse_chronological_order: Урвуу цагаан толгойн үсгийн дарааллаар + label_planning: Төлөвлөлт + label_incoming_emails: Ирсэн мэйлүүд + label_generate_key: Түлхүүр үүсгэх + label_issue_watchers: Ажиглагчид + label_example: Жишээ + label_display: Display + label_sort: Sort + label_ascending: Ascending + label_descending: Descending + label_date_from_to: From %{start} to %{end} + label_wiki_content_added: Wiki page added + label_wiki_content_updated: Wiki page updated + label_group: Group + label_group_plural: Groups + label_group_new: New group + label_time_entry_plural: Spent time + label_version_sharing_none: Not shared + label_version_sharing_descendants: With subprojects + label_version_sharing_hierarchy: With project hierarchy + label_version_sharing_tree: With project tree + label_version_sharing_system: With all projects + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Source + label_copy_target: Target + label_copy_same_as_target: Same as target + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API access key + label_missing_api_access_key: Missing an API access key + label_api_access_key_created_on: "API access key created %{value} ago" + + button_login: Нэвтрэх + button_submit: Илгээх + button_save: Хадгалах + button_check_all: Бүгдийг сонго + button_uncheck_all: Бүгдийг үл сонго + button_delete: Устгах + button_create: Үүсгэх + button_create_and_continue: Үүсгээд цааш үргэлжлүүлэх + button_test: Турших + button_edit: Засварлах + button_add: Нэмэх + button_change: Өөрчлөх + button_apply: Өөрчлөлтийг хадгалах + button_clear: Цэвэрлэх + button_lock: Түгжих + button_unlock: Түгжээг тайлах + button_download: Татах + button_list: Жагсаалт + button_view: Харах + button_move: Зөөх + button_move_and_follow: Зөө бас дага + button_back: Буцах + button_cancel: Болих + button_activate: Идэвхжүүлэх + button_sort: Эрэмбэлэх + button_log_time: Лог хийсэн хугацаа + button_rollback: Энэ хувилбар руу буцах + button_watch: Ажиглах + button_unwatch: Ажиглахаа болих + button_reply: Хариулах + button_archive: Архивлах + button_unarchive: Архивыг задлах + button_reset: Анхны утгууд + button_rename: Нэрийг нь солих + button_change_password: Нууц үгээ өөрчлөх + button_copy: Хуулах + button_copy_and_follow: Зөө бас дага + button_annotate: Тайлбар хавсаргах + button_update: Шинэчлэх + button_configure: Тохируулах + button_quote: Ишлэл + button_duplicate: Хуулбар + button_show: Үзэх + + status_active: идэвхтэй + status_registered: бүртгүүлсэн + status_locked: түгжээтэй + + version_status_open: нээлттэй + version_status_locked: түгжээтэй + version_status_closed: хаалттай + + field_active: идэвхтэй + + text_select_mail_notifications: Ямар үед имэйлээр мэдэгдэл илгээхийг сонгоно уу. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 гэвэл ямар ч хязгааргүй гэсэн үг + text_project_destroy_confirmation: Та энэ төсөл болоод бусад мэдээллийг нь үнэхээр устгамаар байна уу ? + text_subprojects_destroy_warning: "Уг төслийн дэд төслүүд : %{value} нь бас устгагдах болно." + text_workflow_edit: Ажлын дарааллыг өөрчлөхийн тулд хандалтын эрх болон асуудлын чиглэлийг сонгоно уу + text_are_you_sure: Та итгэлтэй байна уу ? + text_journal_changed: "%{label} %{old} байсан нь %{new} болов" + text_journal_set_to: "%{label} %{value} болгож өөрчиллөө" + text_journal_deleted: "%{label} устсан (%{old})" + text_journal_added: "%{label} %{value} нэмэгдсэн" + text_tip_issue_begin_day: энэ өдөр эхлэх ажил + text_tip_issue_end_day: энэ өдөр дуусах ажил + text_tip_issue_begin_end_day: энэ өдөр эхлээд мөн дуусч байгаа ажил + text_project_identifier_info: 'Зөвхөн жижиг үсгүүд болон (a-z), тоо and дундуур зураас ашиглаж болно.
    Нэгэнт хадгалсан хойно, төслийн глобал нэрийг өөрлчөх боломжгүй.' + text_caracters_maximum: "дээд тал нь %{count} үсэг." + text_caracters_minimum: "Хамгийн багадаа ядаж %{count} тэмдэгт байх." + text_length_between: "Урт нь багадаа %{min}, ихдээ %{max} тэмдэгт." + text_tracker_no_workflow: Энэхүү асуудлын чиглэлд ямар ч ажлын дараалал тодорхойлогдоогүй байна + text_unallowed_characters: Хэрэглэж болохгүй тэмдэгтүүд + text_comma_separated: Таслалаар зааглан олон утга оруулж болно. + text_line_separated: Multiple values allowed (one line for each value). + text_issues_ref_in_commit_messages: Коммитийн зурвасуудад хамааруулсан болон байнгын асуудлууд + text_issue_added: "Асуудал %{id} - ийг хэрэглэгч %{author} мэдэгдсэн байна." + text_issue_updated: "Асуудал %{id} - ийг хэрэглэгч %{author} өөрчилсөн байна." + text_wiki_destroy_confirmation: Та энэ вики болон холбогдох бүх мэдээллийг үнэхээр устгамаар байна уу ? + text_issue_category_destroy_question: "Энэ ангилалд зарим асуудлууд (%{count}) орсон байна. Та яах вэ ?" + text_issue_category_destroy_assignments: Асуудлуудыг энэ ангиллаас авах + text_issue_category_reassign_to: Асуудлуудыг энэ ангилалд дахин оноох + text_user_mail_option: "Сонгогдоогүй төслүүдийн хувьд, та зөвхөн өөрийнхөө ажиглаж байгаа зүйлс юмуу танд хамаатай зүйлсийн талаар мэдэгдэл авах болно (Таны оруулсан асуудал, эсвэл танд оноосон гэх мэт)." + text_no_configuration_data: "Хандалтын эрхүүд, чиглэлүүд, асуудлын төлвүүд болон ажлын дарааллын тухай мэдээллийг хараахан оруулаагүй байна.\nТа стандарт өгөгдлүүдийг даруйхан оруулахыг зөвлөж байна, оруулсан хойно та засварлаж болно." + text_load_default_configuration: Стандарт өгөгдлийг ачаалах + text_status_changed_by_changeset: "%{value} өөрчлөлтөд хийгдсэн." + text_issues_destroy_confirmation: 'Та сонгогдсон асуудлуудыг үнэхээр устгамаар байна уу ?' + text_select_project_modules: 'Энэ төслийн хувьд идэвхжүүлэх модулуудаа сонгоно уу:' + text_default_administrator_account_changed: Стандарт администраторын бүртгэл өөрчлөгдлөө + text_file_repository_writable: Хавсралт файл хадгалах хавтас руу бичих эрхтэй + text_plugin_assets_writable: Плагин модулийн ассет хавтас руу бичих эрхтэй + text_rmagick_available: RMagick суулгагдсан (заавал биш) + text_destroy_time_entries_question: "Таны устгах гэж байгаа асуудлууд дээр нийт %{hours} цаг зарцуулсан юм байна, та яах вэ ?" + text_destroy_time_entries: Мэдэгдсэн цагуудыг устгах + text_assign_time_entries_to_project: Мэдэгдсэн асуудлуудыг төсөлд оноох + text_reassign_time_entries: 'Мэдэгдсэн асуудлуудыг энэ асуудалд дахин оноо:' + text_user_wrote: "%{value} бичихдээ:" + text_enumeration_destroy_question: "Энэ утгад %{count} обьект оноогдсон байна." + text_enumeration_category_reassign_to: 'Тэдгээрийг энэ утгад дахин оноо:' + text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/configuration.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй." + text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх хэрэглэгчийн нэрүүдэд харгалзсан Төслийн Менежер системд бүртгэлтэй хэрэглэгчдийг Сонгох юмуу шинэчилнэ үү.\nТөслийн менежер болон репозиторид байгаа ижилхэн нэр юмуу имэйлтэй хэрэглэгчид харилцан харгалзна." + text_diff_truncated: '... Файлын ялгаврын хэмжээ үзүүлэхэд дэндүү урт байгаа учраас төгсгөлөөс нь хасч үзүүлэв.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + + default_role_manager: Менежер + default_role_developer: Хөгжүүлэгч + default_role_reporter: Мэдэгдэгч + default_tracker_bug: Алдаа + default_tracker_feature: Онцлог + default_tracker_support: Тусламж + default_issue_status_new: Шинэ + default_issue_status_in_progress: Ахицтай + default_issue_status_assigned: Оноогдсон + default_issue_status_resolved: Шийдвэрлэгдсэн + default_issue_status_feedback: Feedback + default_issue_status_closed: Хаагдсан + default_issue_status_rejected: Хүлээж аваагүй + default_doc_category_user: Хэрэглэгчийн бичиг баримт + default_doc_category_tech: Техникийн бичиг баримт + default_priority_low: Бага + default_priority_normal: Хэвийн + default_priority_high: Өндөр + default_priority_urgent: Нэн яаралтай + default_priority_immediate: Нэн даруй + default_activity_design: Дизайн + default_activity_development: Хөгжүүлэлт + + enumeration_issue_priorities: Асуудлын зэрэглэлүүд + enumeration_doc_categories: Бичиг баримтын ангиллууд + enumeration_activities: Үйл ажиллагаанууд (хугацааг хянах) + enumeration_system_activity: Системийн үйл ажиллагаа + + permission_manage_subtasks: Manage subtasks + label_profile: Profile + field_parent_issue: Parent task + error_unable_delete_issue_status: Unable to delete issue status + label_subtask_plural: Subtasks + label_project_copy_notifications: Send email notifications during the project copy + error_can_not_delete_custom_field: Unable to delete custom field + error_unable_to_connect: Unable to connect (%{value}) + error_can_not_remove_role: This role is in use and can not be deleted. + error_can_not_delete_tracker: This tracker contains issues and can't be deleted. + field_principal: Principal + label_my_page_block: My page block + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + text_zoom_out: Zoom out + text_zoom_in: Zoom in + notice_unable_delete_time_entry: Unable to delete time log entry. + label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Коммит хийх үед харуулах текстүүдийн энкодинг + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/nl.yml.svn-base --- a/config/locales/.svn/text-base/nl.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/nl.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -5,25 +5,28 @@ # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! - default: "%Y-%m-%d" - short: "%b %d" - long: "%B %d, %Y" + default: "%d-%m-%Y" + short: "%e %b" + long: "%d %B, %Y" - day_names: [Zondag, Maandag, Dinsdag, Woensdag, Donderdag, Vrijdag, Zaterdag] - abbr_day_names: [Zo, Ma, Di, Woe, Do, Vr, Zat] + day_names: [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] + abbr_day_names: [zo, ma, di, wo, do, vr, za] # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Januari, Februari, Maart, April, Mei, Juni, Juli, Augustus, September, Oktober, November, December] - abbr_month_names: [~, Jan, Feb, Mar, Apr, Mei, Jun, Jul, Aug, Sep, Okt, Nov, Dec] + month_names: [~, januari, februari, maart, april, mei, juni, juli, augustus, september, oktober, november, december] + abbr_month_names: [~, jan, feb, mar, apr, mei, jun, jul, aug, sep, okt, nov, dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :day + - :month + - :year time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" - short: "%d %b %H:%M" - long: "%B %d, %Y %H:%M" + short: "%e %b %H:%M" + long: "%d %B, %Y %H:%M" am: "am" pm: "pm" @@ -32,7 +35,7 @@ half_a_minute: "halve minuut" less_than_x_seconds: one: "minder dan een seconde" - other: "mindera dan %{count} seconden" + other: "minder dan %{count} seconden" x_seconds: one: "1 seconde" other: "%{count} seconden" @@ -56,13 +59,13 @@ other: "%{count} maanden" about_x_years: one: "ongeveer 1 jaar" - other: "ongeveer %{count} jaren" + other: "ongeveer %{count} jaar" over_x_years: - one: "over 1 jaar" - other: "over %{count} jaren" + one: "meer dan 1 jaar" + other: "meer dan %{count} jaar" almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" + one: "bijna 1 jaar" + other: "bijna %{count} jaar" number: format: @@ -94,8 +97,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "Door een fout kon dit %{model} niet worden opgeslagen" + other: "Door %{count} fouten kon dit %{model} niet worden opgeslagen" messages: inclusion: "staat niet in de lijst" exclusion: "is gereserveerd" @@ -143,7 +146,7 @@ button_edit: Bewerk button_list: Lijst button_lock: Sluit - button_log_time: Log tijd + button_log_time: Registreer tijd button_login: Inloggen button_move: Verplaatsen button_quote: Citaat @@ -211,7 +214,7 @@ field_default_value: Standaardwaarde field_delay: Vertraging field_description: Beschrijving - field_done_ratio: % Gereed + field_done_ratio: "% Gereed" field_downloads: Downloads field_due_date: Verwachte datum gereed field_effective_date: Datum @@ -280,7 +283,7 @@ general_csv_separator: ';' general_first_day_of_week: '7' general_lang_name: 'Nederlands' - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_text_No: 'Nee' general_text_Yes: 'Ja' general_text_no: 'nee' @@ -513,9 +516,9 @@ one: 1 project other: "%{count} projects" label_public_projects: Publieke projecten - label_query: Eigen zoekvraag - label_query_new: Nieuwe zoekvraag - label_query_plural: Eigen zoekvragen + label_query: Eigen zoekopdracht + label_query_new: Nieuwe zoekopdracht + label_query_plural: Eigen zoekopdrachten label_read: Lees... label_register: Registreer label_registered_on: Geregistreerd op @@ -581,7 +584,7 @@ label_used_by: Gebruikt door label_user: Gebruiker label_user_activity: "%{value}'s activiteit" - label_user_mail_no_self_notified: "Ik wil niet op de hoogte gehouden worden van wijzigingen die ik zelf maak." + label_user_mail_no_self_notified: Ik wil niet op de hoogte gehouden worden van mijn eigen wijzigingen label_user_mail_option_all: "Bij elk gebeurtenis in al mijn projecten..." label_user_mail_option_selected: "Enkel bij elke gebeurtenis op het geselecteerde project..." label_user_new: Nieuwe gebruiker @@ -699,7 +702,6 @@ setting_autologin: Automatisch inloggen setting_bcc_recipients: Blind carbon copy ontvangers (bcc) setting_commit_fix_keywords: Gefixeerde trefwoorden - setting_commit_logs_encoding: Encodering van commit berichten setting_commit_ref_keywords: Refererende trefwoorden setting_cross_project_issue_relations: Sta crossproject issuerelaties toe setting_date_format: Datumformaat @@ -718,7 +720,7 @@ setting_mail_from: Afzender e-mail adres setting_mail_handler_api_enabled: Schakel WS in voor inkomende mail. setting_mail_handler_api_key: API sleutel - setting_per_page_options: Objects per pagina-opties + setting_per_page_options: Aantal objecten per pagina (opties) setting_plain_text_mail: platte tekst (geen HTML) setting_protocol: Protocol setting_repositories_encodings: Repositories coderingen @@ -742,7 +744,7 @@ text_destroy_time_entries: Verwijder gerapporteerde uren text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilde verwijderen. Wat wil u doen?" text_diff_truncated: '... Deze diff werd afgekort omdat het de maximale weer te geven karakters overschreed.' - text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren." + text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Mededelingen zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren." text_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:' text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: Bestandsrepository beschrijfbaar @@ -773,7 +775,7 @@ text_tip_issue_end_day: issue die op deze dag eindigt text_tracker_no_workflow: Geen workflow gedefinieerd voor deze tracker text_unallowed_characters: Niet toegestane tekens - text_user_mail_option: "Bij niet-geselecteerde projecten zult u enkel notificaties ontvangen voor issues die u monitort of waar u bij betrokken bent (als auteur of toegewezen persoon)." + text_user_mail_option: "Bij niet-geselecteerde projecten zult u enkel mededelingen ontvangen voor issues die u monitort of waar u bij betrokken bent (als auteur of toegewezen persoon)." text_user_wrote: "%{value} schreef:" text_wiki_destroy_confirmation: Weet u zeker dat u deze wiki en zijn inhoud wenst te verwijderen? text_workflow_edit: Selecteer een rol en een tracker om de workflow te wijzigen @@ -795,7 +797,7 @@ label_date_from_to: Van %{start} tot %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Deze pagina heeft %{descendants} subpagina's en onderliggende pagina's?. Wil wil je ermee doen? + text_wiki_page_destroy_question: Deze pagina heeft %{descendants} subpagina's en onderliggende pagina's?. Wat wilt u hiermee doen? text_wiki_page_reassign_children: Alle subpagina's toewijzen aan deze hoofdpagina text_wiki_page_nullify_children: Behoud subpagina's als hoofdpagina's text_wiki_page_destroy_children: Verwijder alle subpagina's en onderliggende pagina's @@ -804,9 +806,9 @@ mail_subject_wiki_content_updated: "'%{id}' wiki pagina is bijgewerkt" label_wiki_content_added: Wiki pagina toegevoegd mail_subject_wiki_content_added: "'%{id}' wiki pagina is toegevoegd" - mail_body_wiki_content_added: The '%{id}' wiki pagina is toegevoegd door %{author}. + mail_body_wiki_content_added: De '%{id}' wiki pagina is toegevoegd door %{author}. label_wiki_content_updated: Wiki pagina bijgewerkt - mail_body_wiki_content_updated: The '%{id}' wiki pagina is bijgewerkt door %{author}. + mail_body_wiki_content_updated: De '%{id}' wiki pagina is bijgewerkt door %{author}. permission_add_project: Maak project setting_new_project_user_role_id: Rol van gebruiker die een project maakt label_view_all_revisions: Bekijk alle revisies @@ -895,30 +897,64 @@ text_zoom_in: Zoom in notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer. label_overall_spent_time: Totaal bestede tijd - field_time_entries: Log tijd + field_time_entries: Registreer tijd project_module_gantt: Gantt project_module_calendar: Kalender - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events + button_edit_associated_wikipage: "Bewerk bijbehorende wiki pagina: %{page_title}" + text_are_you_sure_with_children: Verwijder issue en alle onderliggende issues? + field_text: Tekst veld + label_user_mail_option_only_owner: Alleen voor dingen waarvan ik de auteur ben + setting_default_notification_option: Standaard instelling voor mededelingen + label_user_mail_option_only_my_events: Alleen voor dingen die ik volg of bij betrokken ben + label_user_mail_option_only_assigned: Alleen voor dingen die aan mij zijn toegewezen + label_user_mail_option_none: Bij geen enkele gebeurtenis field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible + notice_not_authorized_archived_project: Het project dat u wilt bezoeken is gearchiveerd. + label_principal_search: "Zoek naar gebruiker of groep:" + label_user_search: "Zoek naar gebruiker:" + field_visible: Zichtbaar setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries + setting_commit_logtime_activity_id: Standaard activiteit voor tijdregistratie + text_time_logged_by_changeset: Toegepast in changeset %{value}. + setting_commit_logtime_enabled: Activeer tijdregistratie + notice_gantt_chart_truncated: De gantt chart is ingekort omdat het meer objecten bevat dan kan worden weergegeven, (%{max}) + setting_gantt_items_limit: Max. aantal objecten op gantt chart + field_warn_on_leaving_unsaved: Waarschuw me wanneer ik een pagina verlaat waarvan de tekst niet opgeslagen is + text_warn_on_leaving_unsaved: De huidige pagina bevat tekst die niet is opgeslagen en dit zal verloren gaan als u deze pagina nu verlaat. + label_my_queries: Mijn aangepaste zoekopdrachten text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Commentaar toegevoegd aan een nieuwsitem + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Encodering van commit berichten + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/no.yml.svn-base --- a/config/locales/.svn/text-base/no.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/no.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -13,7 +13,10 @@ abbr_day_names: [søn, man, tir, ons, tor, fre, lør] month_names: [~, januar, februar, mars, april, mai, juni, juli, august, september, oktober, november, desember] abbr_month_names: [~, jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: default: "%A, %e. %B %Y, %H:%M" @@ -124,7 +127,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Kontoen er oppdatert. @@ -232,7 +235,7 @@ field_attr_mail: E-post-attributt field_onthefly: On-the-fly brukeropprettelse field_start_date: Start - field_done_ratio: % Ferdig + field_done_ratio: "% Ferdig" field_auth_source: Autentifikasjonsmodus field_hide_mail: Skjul min e-post-adresse field_comments: Kommentarer @@ -719,7 +722,6 @@ text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet på nytt for å skru det på." field_parent_title: Foreldreside label_issue_watchers: Overvåkere - setting_commit_logs_encoding: Tegnkoding for innsendingsmeldinger button_quote: Sitat setting_sequential_project_identifiers: Generer sekvensielle prosjekt-IDer notice_unable_delete_version: Kan ikke slette versjonen @@ -927,3 +929,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Tegnkoding for innsendingsmeldinger + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/pl.yml.svn-base --- a/config/locales/.svn/text-base/pl.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/pl.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -45,7 +45,10 @@ month_names: [~, Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień] abbr_month_names: [~, sty, lut, mar, kwi, maj, cze, lip, sie, wrz, paź, lis, gru] - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -228,7 +231,7 @@ field_default_value: Domyślny field_delay: Opóźnienie field_description: Opis - field_done_ratio: % Wykonane + field_done_ratio: "% Wykonane" field_downloads: Pobrań field_due_date: Data oddania field_effective_date: Data @@ -294,9 +297,9 @@ field_version: Wersja field_vf_personnel: Personel field_vf_watcher: Obserwator - general_csv_decimal_separator: '.' + general_csv_decimal_separator: ',' general_csv_encoding: UTF-8 - general_csv_separator: ',' + general_csv_separator: ';' general_first_day_of_week: '1' general_lang_name: 'Polski' general_pdf_encoding: UTF-8 @@ -730,7 +733,6 @@ setting_autologin: Auto logowanie setting_bcc_recipients: Odbiorcy kopii tajnej (kt/bcc) setting_commit_fix_keywords: Słowa zmieniające status - setting_commit_logs_encoding: Kodowanie komentarzy zatwierdzeń setting_commit_ref_keywords: Słowa tworzące powiązania setting_cross_project_issue_relations: Zezwól na powiązania zagadnień między projektami setting_date_format: Format daty @@ -864,7 +866,7 @@ button_show: Pokaż error_can_not_archive_project: Ten projekt nie może zostać zarchiwizowany error_can_not_reopen_issue_on_closed_version: Zagadnienie przydzielone do zakończonej wersji nie może zostać ponownie otwarte - error_issue_done_ratios_not_updated: % wykonania zagadnienia nie został uaktualniony. + error_issue_done_ratios_not_updated: "% wykonania zagadnienia nie został uaktualniony." error_workflow_copy_source: Proszę wybrać źródłowy typ zagadnienia lub rolę error_workflow_copy_target: Proszę wybrać docelowe typ(y) zagadnień i rolę(e) field_sharing: Współdzielenie @@ -895,7 +897,7 @@ setting_default_projects_modules: Domyślnie włączone moduły dla nowo tworzonych projektów setting_gravatar_default: Domyślny obraz Gravatar setting_issue_done_ratio: Obliczaj postęp realizacji zagadnień za pomocą - setting_issue_done_ratio_issue_field: % Wykonania zagadnienia + setting_issue_done_ratio_issue_field: "% Wykonania zagadnienia" setting_issue_done_ratio_issue_status: Statusu zagadnienia setting_mail_handler_body_delimiters: Przycinaj e-maile po jednej z tych linii setting_rest_api_enabled: Uaktywnij usługę sieciową REST @@ -957,3 +959,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodowanie komentarzy zatwierdzeń + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/pt-BR.yml.svn-base --- a/config/locales/.svn/text-base/pt-BR.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/pt-BR.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -12,7 +12,10 @@ abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] - order: [:day,:month,:year] + order: + - :day + - :month + - :year time: formats: @@ -155,7 +158,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Conta atualizada com sucesso. @@ -265,7 +268,7 @@ field_attr_mail: Atributo para e-mail field_onthefly: Criar usuários dinamicamente ("on-the-fly") field_start_date: Início - field_done_ratio: % Terminado + field_done_ratio: "% Terminado" field_auth_source: Modo de autenticação field_hide_mail: Ocultar meu e-mail field_comments: Comentário @@ -314,8 +317,7 @@ setting_cross_project_issue_relations: Permitir relacionar tarefas entre projetos setting_issue_list_default_columns: Colunas padrão visíveis na lista de tarefas setting_repositories_encodings: Codificação dos repositórios - setting_commit_logs_encoding: Codificação das mensagens de commit - setting_emails_footer: Rodapé dos e-mails + setting_emails_footer: Rodapé do e-mail setting_protocol: Protocolo setting_per_page_options: Número de itens exibidos por página setting_user_format: Formato de exibição de nome de usuário @@ -354,6 +356,9 @@ label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa atualizada + label_issue_note_added: Nota adicionada + label_issue_status_updated: Situação atualizada + label_issue_priority_updated: Prioridade atualizada label_document: Documento label_document_new: Novo documento label_document_plural: Documentos @@ -557,7 +562,7 @@ label_spent_time: Tempo gasto label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} horas" - label_time_tracking: Controle de horas + label_time_tracking: Registro de horas label_change_plural: Alterações label_statistics: Estatísticas label_commits_per_month: Commits por mês @@ -754,7 +759,7 @@ enumeration_issue_priorities: Prioridade das tarefas enumeration_doc_categories: Categorias de documento - enumeration_activities: Atividades (time tracking) + enumeration_activities: Atividades (registro de horas) notice_unable_delete_version: Não foi possível excluir a versão label_renamed: renomeado label_copied: copiado @@ -943,20 +948,51 @@ setting_default_notification_option: Opção padrão de notificação label_user_mail_option_only_my_events: Somente para as coisas que eu esteja observando ou esteja envolvido label_user_mail_option_only_assigned: Somente para as coisas que estejam atribuídas a mim - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + label_user_mail_option_none: Sem eventos + field_member_of_group: Grupo do responsável + field_assigned_to_role: Papel do responsável + notice_not_authorized_archived_project: O projeto que você está tentando acessar foi arquivado. + label_principal_search: "Pesquisar por usuários ou grupos:" + label_user_search: "Pesquisar por usuário:" + field_visible: Visível + setting_emails_header: Cabeçalho do e-mail + setting_commit_logtime_activity_id: Atividade para registrar horas + text_time_logged_by_changeset: Aplicado no changeset %{value}. + setting_commit_logtime_enabled: Habilitar registro de horas + notice_gantt_chart_truncated: O gráfico foi cortado por exceder o tamanho máximo de linhas que podem ser exibidas (%{max}) + setting_gantt_items_limit: Número máximo de itens exibidos no gráfico gatt + field_warn_on_leaving_unsaved: Alertar-me ao sarir de uma página sem salvar o texto + text_warn_on_leaving_unsaved: A página atual contem texto que não foi salvo e será perdido se você sair desta página. + label_my_queries: Minhas consultas personalizadas + text_journal_changed_no_detail: "%{label} atualizado(a)" + label_news_comment_added: Notícia recebeu um comentário + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificação das mensagens de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/pt.yml.svn-base --- a/config/locales/.svn/text-base/pt.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/pt.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ # Portuguese localization for Ruby on Rails # by Ricardo Otero +# by Alberto Ferreira pt: support: array: @@ -17,7 +18,10 @@ abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -141,7 +145,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-15 - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: A conta foi actualizada com sucesso. @@ -228,7 +232,7 @@ field_homepage: Página field_is_public: Público field_parent: Sub-projecto de - field_is_in_roadmap: Tarefas mostradas no roadmap + field_is_in_roadmap: Tarefas mostradas no mapa de planificação field_login: Nome de utilizador field_mail_notification: Notificações por e-mail field_admin: Administrador @@ -248,9 +252,9 @@ field_attr_firstname: Atributo nome próprio field_attr_lastname: Atributo último nome field_attr_mail: Atributo e-mail - field_onthefly: Criação de utilizadores na hora + field_onthefly: Criação imediata de utilizadores field_start_date: Início - field_done_ratio: % Completo + field_done_ratio: "% Completo" field_auth_source: Modo de autenticação field_hide_mail: Esconder endereço de e-mail field_comments: Comentário @@ -264,7 +268,7 @@ field_is_filter: Usado como filtro field_issue_to: Tarefa relacionada field_delay: Atraso - field_assignable: As tarefas podem ser associados a esta função + field_assignable: As tarefas podem ser associadas a esta função field_redirect_existing_links: Redireccionar ligações existentes field_estimated_hours: Tempo estimado field_column_names: Colunas @@ -299,7 +303,6 @@ setting_cross_project_issue_relations: Permitir relações entre tarefas de projectos diferentes setting_issue_list_default_columns: Colunas na lista de tarefas por omissão setting_repositories_encodings: Encodings dos repositórios - setting_commit_logs_encoding: Encoding das mensagens de commit setting_emails_footer: Rodapé do e-mails setting_protocol: Protocolo setting_per_page_options: Opções de objectos por página @@ -522,7 +525,7 @@ label_sort_higher: Mover para cima label_sort_lower: Mover para baixo label_sort_lowest: Mover para o fim - label_roadmap: Roadmap + label_roadmap: Planificação label_roadmap_due_in: "Termina em %{value}" label_roadmap_overdue: "Atrasado %{value}" label_roadmap_no_issues: Sem tarefas para esta versão @@ -922,25 +925,59 @@ project_module_calendar: Calendário button_edit_associated_wikipage: "Editar página Wiki associada: %{page_title}" text_are_you_sure_with_children: Apagar tarefa e todas as sub-tarefas? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_text: Campo de texto + label_user_mail_option_only_owner: Apenas para tarefas das quais sou proprietário + setting_default_notification_option: Opção predefinida de notificação + label_user_mail_option_only_my_events: Apenas para tarefas que observo ou em que estou envolvido + label_user_mail_option_only_assigned: Apenas para tarefas que me foram atribuídas + label_user_mail_option_none: Sem eventos + field_member_of_group: Grupo do detentor de atribuição + field_assigned_to_role: Papel do detentor de atribuição + notice_not_authorized_archived_project: O projecto a que tentou aceder foi arquivado. + label_principal_search: "Procurar utilizador ou grupo:" + label_user_search: "Procurar utilizador:" + field_visible: Visível + setting_emails_header: Cabeçalho dos e-mails + setting_commit_logtime_activity_id: Actividade para tempo registado + text_time_logged_by_changeset: Aplicado no conjunto de alterações %{value}. + setting_commit_logtime_enabled: Activar registo de tempo + notice_gantt_chart_truncated: O gráfico foi truncado porque excede o número máximo de itens visível (%{máx.}) + setting_gantt_items_limit: Número máximo de itens exibidos no gráfico Gantt field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Encoding das mensagens de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/ro.yml.svn-base --- a/config/locales/.svn/text-base/ro.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/ro.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -14,7 +14,10 @@ month_names: [~, Ianuarie, Februarie, Martie, Aprilie, Mai, Iunie, Iulie, August, Septembrie, Octombrie, Noiembrie, Decembrie] abbr_month_names: [~, Ian, Feb, Mar, Apr, Mai, Iun, Iul, Aug, Sep, Oct, Noi, Dec] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -291,7 +294,6 @@ setting_cross_project_issue_relations: Permite legături de tichete între proiecte setting_issue_list_default_columns: Coloane implicite afișate în lista de tichete setting_repositories_encodings: Codare pentru depozit - setting_commit_logs_encoding: Codare pentru mesaje setting_emails_footer: Subsol email setting_protocol: Protocol setting_per_page_options: Număr de obiecte pe pagină @@ -933,3 +935,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codare pentru mesaje + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/ru.yml.svn-base --- a/config/locales/.svn/text-base/ru.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/ru.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -28,7 +28,10 @@ abbr_month_names: [~, янв., февр., марта, апр., мая, июня, июля, авг., сент., окт., нояб., дек.] standalone_abbr_month_names: [~, янв., февр., март, апр., май, июнь, июль, авг., сент., окт., нояб., дек.] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -261,7 +264,7 @@ default_issue_status_closed: Закрыта default_issue_status_feedback: Обратная связь default_issue_status_new: Новая - default_issue_status_rejected: Отказ + default_issue_status_rejected: Отклонена default_issue_status_resolved: Решена default_priority_high: Высокий default_priority_immediate: Немедленный @@ -272,7 +275,7 @@ default_role_manager: Менеджер default_role_reporter: Генератор отчетов default_tracker_bug: Ошибка - default_tracker_feature: Изменение + default_tracker_feature: Улучшение default_tracker_support: Поддержка enumeration_activities: Действия (учет времени) @@ -605,7 +608,7 @@ label_optional_description: Описание (опционально) label_options: Опции label_overall_activity: Сводная активность - label_overview: Просмотр + label_overview: Обзор label_password_lost: Восстановление пароля label_permissions_report: Отчет о правах доступа label_permissions: Права доступа @@ -862,7 +865,6 @@ setting_bcc_recipients: Использовать скрытые списки (BCC) setting_cache_formatted_text: Кешировать форматированный текст setting_commit_fix_keywords: Назначение ключевых слов - setting_commit_logs_encoding: Кодировка комментариев в хранилище setting_commit_ref_keywords: Ключевые слова для поиска setting_cross_project_issue_relations: Разрешить пересечение задач по проектам setting_date_format: Формат даты @@ -1044,12 +1046,46 @@ field_visible: Видимый setting_emails_header: Заголовок письма - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + setting_commit_logtime_activity_id: Активность для учета времени + text_time_logged_by_changeset: Учтено в редакции %{value}. + setting_commit_logtime_enabled: Включить учет времени + notice_gantt_chart_truncated: Диаграмма будет усечена, поскольку превышено максимальное кол-во элементов, которые могут отображаться (%{max}) + setting_gantt_items_limit: Максимальное кол-во элементов отображаемых на диаграмме Ганта + field_warn_on_leaving_unsaved: Предупреждать при закратии страницы с несохраненным текстом + text_warn_on_leaving_unsaved: Текущая страница содержит несохраненный текст, который будет потерян, если вы покинете эту страницу. + label_my_queries: Мои сохраненные запросы + text_journal_changed_no_detail: "%{label} обновлено" + label_news_comment_added: Добавлен комментарий к новости + button_expand_all: Развернуть все + button_collapse_all: Свернуть все + label_additional_workflow_transitions_for_assignee: Дополнительные переходы, когда пользователь является исполнителем + label_additional_workflow_transitions_for_author: Дополнительные переходы, когда пользователь является автором + label_bulk_edit_selected_time_entries: Массовое изменение выбранных записей затраченного времени времени + text_time_entries_destroy_confirmation: Вы уверены что хотите удалить выбраные записи затраченного времени? + label_role_anonymous: Аноним + label_role_non_member: Не участник + label_issue_note_added: Примечание добавлено + label_issue_status_updated: Статус обновлен + label_issue_priority_updated: Приоритет обновлен + label_issues_visibility_own: Задачи созданные или назначенные пользователю + field_issues_visibility: Видимость задач + label_issues_visibility_all: Все задачи + permission_set_own_issues_private: Устанавливать видимость (общая/частная) для собственных задач + field_is_private: Частная + permission_set_issues_private: Устанавливать видимость (общая/частная) для задач + label_issues_visibility_public: Только общие задачи + text_issues_destroy_descendants_confirmation: Так же будет удалено %{count} задачи. + field_commit_logs_encoding: Кодировка комментариев в хранилище + field_scm_path_encoding: Кодировка пути + text_scm_path_encoding_note: "По умолчанию: UTF-8" + field_path_to_repository: Путь к репозиторию + field_root_directory: Корневую директорию + field_cvs_module: Модуль + field_cvsroot: CVSROOT + text_git_repository_note: Локальный и bare репозиторий (например, /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Локальный репозиторий (например, /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/sk.yml.svn-base --- a/config/locales/.svn/text-base/sk.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/sk.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, Január, Február, Marec, Apríl, Máj, Jún, Júl, August, September, Október, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, Máj, Jún, Júl, Aug, Sep, Okt, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -236,7 +239,7 @@ field_attr_mail: Email (atribut) field_onthefly: Automatické vytváranie užívateľov field_start_date: Začiatok - field_done_ratio: % hotovo + field_done_ratio: "% hotovo" field_auth_source: Autentifikačný mód field_hide_mail: Nezobrazovať môj email field_comments: Komentár @@ -726,7 +729,6 @@ text_email_delivery_not_configured: "Doručenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/configuration.yml a reštartnite aplikáciu pre aktiváciu funkcie." field_parent_title: Nadradená stránka label_issue_watchers: Pozorovatelia - setting_commit_logs_encoding: Kódovanie prenášaných správ button_quote: Citácia setting_sequential_project_identifiers: Generovať sekvenčné identifikátory projektov notice_unable_delete_version: Verzia nemôže byť zmazaná @@ -935,3 +937,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kódovanie prenášaných správ + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/sl.yml.svn-base --- a/config/locales/.svn/text-base/sl.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/sl.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -132,7 +135,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 - general_pdf_encoding: UFT-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Račun je bil uspešno posodobljen. @@ -241,7 +244,7 @@ field_attr_mail: Oznaka za e-naslov field_onthefly: Sprotna izdelava uporabnikov field_start_date: Začetek - field_done_ratio: % Narejeno + field_done_ratio: "% Narejeno" field_auth_source: Način overovljanja field_hide_mail: Skrij moj e-naslov field_comments: Komentar @@ -291,7 +294,6 @@ setting_cross_project_issue_relations: Dovoli povezave zahtevkov med različnimi projekti setting_issue_list_default_columns: Privzeti stolpci prikazani na seznamu zahtevkov setting_repositories_encodings: Kodiranje shrambe - setting_commit_logs_encoding: Kodiranje sporočil ob predaji setting_emails_footer: Noga e-sporočil setting_protocol: Protokol setting_per_page_options: Število elementov na stran @@ -936,3 +938,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodiranje sporočil ob predaji + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/sr-YU.yml.svn-base --- a/config/locales/.svn/text-base/sr-YU.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/sr-YU.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,942 +1,978 @@ -# Serbian translations for Redmine -# by Vladimir Medarović (vlada@medarovic.com) -sr-YU: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d.%m.%Y." - short: "%e %b" - long: "%B %e, %Y" - - day_names: [nedelja, ponedeljak, utorak, sreda, četvrtak, petak, subota] - abbr_day_names: [ned, pon, uto, sre, čet, pet, sub] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar] - abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec] - # Used in date_select and datime_select. - order: [ :day, :month, :year ] - - time: - formats: - default: "%d.%m.%Y. u %H:%M" - time: "%H:%M" - short: "%d. %b u %H:%M" - long: "%d. %B %Y u %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "pola minuta" - less_than_x_seconds: - one: "manje od jedne sekunde" - other: "manje od %{count} sek." - x_seconds: - one: "jedna sekunda" - other: "%{count} sek." - less_than_x_minutes: - one: "manje od minuta" - other: "manje od %{count} min." - x_minutes: - one: "jedan minut" - other: "%{count} min." - about_x_hours: - one: "približno jedan sat" - other: "približno %{count} sati" - x_days: - one: "jedan dan" - other: "%{count} dana" - about_x_months: - one: "približno jedan mesec" - other: "približno %{count} meseci" - x_months: - one: "jedan mesec" - other: "%{count} meseci" - about_x_years: - one: "približno godinu dana" - other: "približno %{count} god." - over_x_years: - one: "preko godinu dana" - other: "preko %{count} god." - almost_x_years: - one: "skoro godinu dana" - other: "skoro %{count} god." - - number: - format: - separator: "," - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "i" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "nije uključen u spisak" - exclusion: "je rezervisan" - invalid: "je neispravan" - confirmation: "potvrda ne odgovara" - accepted: "mora biti prihvaćen" - empty: "ne može biti prazno" - blank: "ne može biti prazno" - too_long: "je predugačka (maksimum znakova je %{count})" - too_short: "je prekratka (minimum znakova je %{count})" - wrong_length: "je pogrešne dužine (broj znakova mora biti %{count})" - taken: "je već u upotrebi" - not_a_number: "nije broj" - not_a_date: "nije ispravan datum" - greater_than: "mora biti veći od %{count}" - greater_than_or_equal_to: "mora biti veći ili jednak %{count}" - equal_to: "mora biti jednak %{count}" - less_than: "mora biti manji od %{count}" - less_than_or_equal_to: "mora biti manji ili jednak %{count}" - odd: "mora biti paran" - even: "mora biti neparan" - greater_than_start_date: "mora biti veći od početnog datuma" - not_same_project: "ne pripada istom projektu" - circular_dependency: "Ova veza će stvoriti kružnu referencu" - cant_link_an_issue_with_a_descendant: "Problem ne može biti povezan sa jednim od svojih podzadataka" - - actionview_instancetag_blank_option: Molim odaberite - - general_text_No: 'Ne' - general_text_Yes: 'Da' - general_text_no: 'ne' - general_text_yes: 'da' - general_lang_name: 'Srpski' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Nalog je uspešno ažuriran. - notice_account_invalid_creditentials: Neispravno korisničko ime ili lozinka. - notice_account_password_updated: Lozinka je uspešno ažurirana. - notice_account_wrong_password: Pogrešna lozinka - notice_account_register_done: Korisnički nalog je uspešno kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju. - notice_account_unknown_email: Nepoznat korisnik. - notice_can_t_change_password: Ovaj korisnički nalog za potvrdu identiteta koristi spoljni izvor. Nemoguće je promeniti lozinku. - notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke - notice_account_activated: Vaš korisnički nalog je aktiviran. Sada se možete prijaviti. - notice_successful_create: Uspešno kreiranje. - notice_successful_update: Uspešno ažuriranje. - notice_successful_delete: Uspešno brisanje. - notice_successful_connection: Uspešno povezivanje. - notice_file_not_found: Strana kojoj želite pristupiti ne postoji ili je uklonjena. - notice_locking_conflict: Podatak je ažuriran od strane drugog korisnika. - notice_not_authorized: Niste ovlašćeni za pristup ovoj strani. - notice_email_sent: "E-poruka je poslata na %{value}" - notice_email_error: "Dogodila se greška prilikom slanja e-poruke (%{value})" - notice_feeds_access_key_reseted: Vaš RSS pristupni ključ je poništen. - notice_api_access_key_reseted: Vaš API pristupni ključ je poništen. - notice_failed_to_save_issues: "Neuspešno snimanje %{count} problema od %{total} odabranih: %{ids}." - notice_failed_to_save_members: "Neuspešno snimanje člana(ova): %{errors}." - notice_no_issue_selected: "Ni jedan problem nije odabran! Molimo, odaberite problem koji želite da menjate." - notice_account_pending: "Vaš nalog je kreiran i čeka na odobrenje administratora." - notice_default_data_loaded: Podrazumevano konfigurisanje je uspešno učitano. - notice_unable_delete_version: Verziju je nemoguće izbrisati. - notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguće izbrisati. - notice_issue_done_ratios_updated: Odnos rešenih problema je ažuriran. - - error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguće učitati: %{value}" - error_scm_not_found: "Stavka ili ispravka nisu pronađene u spremištu." - error_scm_command_failed: "Greška se javila prilikom pokušaja pristupa spremištu: %{value}" - error_scm_annotate: "Stavka ne postoji ili ne može biti označena." - error_issue_not_found_in_project: 'Problem nije pronađen ili ne pripada ovom projektu.' - error_no_tracker_in_project: 'Ni jedno praćenje nije povezano sa ovim projektom. Molimo proverite podešavanja projekta.' - error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaše konfigurisanje (idite na "Administracija -> Statusi problema").' - error_can_not_delete_custom_field: Nemoguće je izbrisati prilagođeno polje - error_can_not_delete_tracker: "Ovo praćenje sadrži probleme i ne može biti obrisano." - error_can_not_remove_role: "Ova uloga je u upotrebi i ne može biti obrisana." - error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne može biti ponovo otvoren' - error_can_not_archive_project: Ovaj projekat se ne može arhivirati - error_issue_done_ratios_not_updated: "Odnos rešenih problema nije ažuriran." - error_workflow_copy_source: 'Molimo odaberite izvorno praćenje ili ulogu' - error_workflow_copy_target: 'Molimo odaberite odredišno praćenje i ulogu' - error_unable_delete_issue_status: 'Status problema je nemoguće obrisati' - error_unable_to_connect: "Povezivanje sa (%{value}) je nemoguće" - warning_attachments_not_saved: "%{count} datoteka ne može biti snimljena." - - mail_subject_lost_password: "Vaša %{value} lozinka" - mail_body_lost_password: 'Za promenu vaše lozinke, kliknite na sledeći link:' - mail_subject_register: "Aktivacija vašeg %{value} naloga" - mail_body_register: 'Za aktivaciju vašeg naloga, kliknite na sledeći link:' - mail_body_account_information_external: "Vaš nalog %{value} možete koristiti za prijavu." - mail_body_account_information: Informacije o vašem nalogu - mail_subject_account_activation_request: "Zahtev za aktivaciju naloga %{value}" - mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. Nalog čeka na vaše odobrenje:" - mail_subject_reminder: "%{count} problema dospeva narednih %{days} dana" - mail_body_reminder: "%{count} problema dodeljenih vama dospeva u narednih %{days} dana:" - mail_subject_wiki_content_added: "Wiki stranica '%{id}' je dodata" - mail_body_wiki_content_added: "%{author} je dodao wiki stranicu '%{id}'." - mail_subject_wiki_content_updated: "Wiki stranica '%{id}' je ažurirana" - mail_body_wiki_content_updated: "%{author} je ažurirao wiki stranicu '%{id}'." - - gui_validation_error: jedna greška - gui_validation_error_plural: "%{count} grešaka" - - field_name: Naziv - field_description: Opis - field_summary: Rezime - field_is_required: Obavezno - field_firstname: Ime - field_lastname: Prezime - field_mail: E-adresa - field_filename: Datoteka - field_filesize: Veličina - field_downloads: Preuzimanja - field_author: Autor - field_created_on: Kreirano - field_updated_on: Ažurirano - field_field_format: Format - field_is_for_all: Za sve projekte - field_possible_values: Moguće vrednosti - field_regexp: Regularan izraz - field_min_length: Minimalna dužina - field_max_length: Maksimalna dužina - field_value: Vrednost - field_category: Kategorija - field_title: Naslov - field_project: Projekat - field_issue: Problem - field_status: Status - field_notes: Beleške - field_is_closed: Zatvoren problem - field_is_default: Podrazumevana vrednost - field_tracker: Praćenje - field_subject: Predmet - field_due_date: Krajnji rok - field_assigned_to: Dodeljeno - field_priority: Prioritet - field_fixed_version: Odredišna verzija - field_user: Korisnik - field_principal: Glavni - field_role: Uloga - field_homepage: Početna stranica - field_is_public: Javno objavljivanje - field_parent: Potprojekat od - field_is_in_roadmap: Problemi prikazani u planu rada - field_login: Korisničko ime - field_mail_notification: Obaveštenja putem e-pošte - field_admin: Administrator - field_last_login_on: Poslednje povezivanje - field_language: Jezik - field_effective_date: Datum - field_password: Lozinka - field_new_password: Nova lozinka - field_password_confirmation: Potvrda lozinke - field_version: Verzija - field_type: Tip - field_host: Glavni računar - field_port: Port - field_account: Korisnički nalog - field_base_dn: Bazni DN - field_attr_login: Atribut prijavljivanja - field_attr_firstname: Atribut imena - field_attr_lastname: Atribut prezimena - field_attr_mail: Atribut e-adrese - field_onthefly: Kreiranje korisnika u toku rada - field_start_date: Početak - field_done_ratio: % urađeno - field_auth_source: Režim potvrde identiteta - field_hide_mail: Sakrij moju e-adresu - field_comments: Komentar - field_url: URL - field_start_page: Početna stranica - field_subproject: Potprojekat - field_hours: sati - field_activity: Aktivnost - field_spent_on: Datum - field_identifier: Identifikator - field_is_filter: Upotrebi kao filter - field_issue_to: Srodni problemi - field_delay: Kašnjenje - field_assignable: Problem može biti dodeljen ovoj ulozi - field_redirect_existing_links: Preusmeri postojeće veze - field_estimated_hours: Proteklo vreme - field_column_names: Kolone - field_time_zone: Vremenska zona - field_searchable: Može da se pretražuje - field_default_value: Podrazumevana vrednost - field_comments_sorting: Prikaži komentare - field_parent_title: Matična stranica - field_editable: Izmenljivo - field_watcher: Posmatrač - field_identity_url: OpenID URL - field_content: Sadržaj - field_group_by: Grupisanje rezultata po - field_sharing: Deljenje - field_parent_issue: Matični zadatak - - setting_app_title: Naslov aplikacije - setting_app_subtitle: Podnaslov aplikacije - setting_welcome_text: Tekst dobrodošlice - setting_default_language: Podrazumevani jezik - setting_login_required: Obavezna potvrda identiteta - setting_self_registration: Samoregistracija - setting_attachment_max_size: Maks. veličina priložene datoteke - setting_issues_export_limit: Ograničenje izvoza „problema“ - setting_mail_from: E-adresa pošiljaoca - setting_bcc_recipients: Primaoci „Bcc“ kopije - setting_plain_text_mail: Poruka sa čistim tekstom (bez HTML-a) - setting_host_name: Putanja i naziv glavnog računara - setting_text_formatting: Oblikovanje teksta - setting_wiki_compression: Kompresija Wiki istorije - setting_feeds_limit: Ograničenje sadržaja izvora vesti - setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata - setting_autofetch_changesets: Izvršavanje automatskog preuzimanja - setting_sys_api_enabled: Omogućavanje WS za upravljanje spremištem - setting_commit_ref_keywords: Referenciranje ključnih reči - setting_commit_fix_keywords: Popravljanje ključnih reči - setting_autologin: Automatska prijava - setting_date_format: Format datuma - setting_time_format: Format vremena - setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata - setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema - setting_repositories_encodings: Kodiranje spremišta - setting_commit_logs_encoding: Kodiranje izvršnih poruka - setting_emails_footer: Podnožje stranice e-poruke - setting_protocol: Protokol - setting_per_page_options: Opcije prikaza objekata po stranici - setting_user_format: Format prikaza korisnika - setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti - setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugačije navedeno - setting_enabled_scm: Omogućavanje SCM - setting_mail_handler_body_delimiters: "Skraćivanje e-poruke nakon jedne od ovih linija" - setting_mail_handler_api_enabled: Omogućavanje WS dolazne e-poruke - setting_mail_handler_api_key: API ključ - setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta - setting_gravatar_enabled: Koristi Gravatar korisničke ikone - setting_gravatar_default: Podrazumevana Gravatar slika - setting_diff_max_lines_displayed: Maks. broj prikazanih različitih linija - setting_file_max_size_displayed: Maks. veličina tekst. datoteka prikazanih umetnuto - setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju - setting_openid: Dozvoli OpenID prijavu i registraciju - setting_password_min_length: Minimalna dužina lozinke - setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga - setting_default_projects_modules: Podrazumevano omogućeni moduli za nove projekte - setting_issue_done_ratio: Izračunaj odnos rešenih problema - setting_issue_done_ratio_issue_field: koristeći polje problema - setting_issue_done_ratio_issue_status: koristeći status problema - setting_start_of_week: Prvi dan u sedmici - setting_rest_api_enabled: Omogući REST web usluge - setting_cache_formatted_text: Keširanje obrađenog teksta - - permission_add_project: Kreiranje projekta - permission_add_subprojects: Kreiranje potpojekta - permission_edit_project: Izmena projekata - permission_select_project_modules: Odabiranje modula projekta - permission_manage_members: Upravljanje članovima - permission_manage_project_activities: Upravljanje projektnim aktivnostima - permission_manage_versions: Upravljanje verzijama - permission_manage_categories: Upravljanje kategorijama problema - permission_view_issues: Pregled problema - permission_add_issues: Dodavanje problema - permission_edit_issues: Izmena problema - permission_manage_issue_relations: Upravljanje vezama između problema - permission_add_issue_notes: Dodavanje beleški - permission_edit_issue_notes: Izmena beleški - permission_edit_own_issue_notes: Izmena sopstvenih beleški - permission_move_issues: Pomeranje problema - permission_delete_issues: Brisanje problema - permission_manage_public_queries: Upravljanje javnim upitima - permission_save_queries: Snimanje upita - permission_view_gantt: Pregledanje Gantovog dijagrama - permission_view_calendar: Pregledanje kalendara - permission_view_issue_watchers: Pregledanje spiska posmatrača - permission_add_issue_watchers: Dodavanje posmatrača - permission_delete_issue_watchers: Brisanje posmatrača - permission_log_time: Beleženje utrošenog vremena - permission_view_time_entries: Pregledanje utrošenog vremena - permission_edit_time_entries: Izmena utrošenog vremena - permission_edit_own_time_entries: Izmena sopstvenog utrošenog vremena - permission_manage_news: Upravljanje vestima - permission_comment_news: Komentarisanje vesti - permission_manage_documents: Upravljanje dokumentima - permission_view_documents: Pregledanje dokumenata - permission_manage_files: Upravljanje datotekama - permission_view_files: Pregledanje datoteka - permission_manage_wiki: Upravljanje wiki stranicama - permission_rename_wiki_pages: Promena imena wiki stranicama - permission_delete_wiki_pages: Brisanje wiki stranica - permission_view_wiki_pages: Pregledanje wiki stranica - permission_view_wiki_edits: Pregledanje wiki istorije - permission_edit_wiki_pages: Izmena wiki stranica - permission_delete_wiki_pages_attachments: Brisanje priloženih datoteka - permission_protect_wiki_pages: Zaštita wiki stranica - permission_manage_repository: Upravljanje spremištem - permission_browse_repository: Pregledanje spremišta - permission_view_changesets: Pregledanje skupa promena - permission_commit_access: Potvrda pristupa - permission_manage_boards: Upravljanje forumima - permission_view_messages: Pregledanje poruka - permission_add_messages: Slanje poruka - permission_edit_messages: Izmena poruka - permission_edit_own_messages: Izmena sopstvenih poruka - permission_delete_messages: Brisanje poruka - permission_delete_own_messages: Brisanje sopstvenih poruka - permission_export_wiki_pages: Izvoz wiki stranica - permission_manage_subtasks: Upravljanje podzadacima - - project_module_issue_tracking: Praćenje problema - project_module_time_tracking: Praćenje vremena - project_module_news: Vesti - project_module_documents: Dokumenti - project_module_files: Datoteke - project_module_wiki: Wiki - project_module_repository: Spremište - project_module_boards: Forumi - - label_user: Korisnik - label_user_plural: Korisnici - label_user_new: Novi korisnik - label_user_anonymous: Anoniman - label_project: Projekat - label_project_new: Novi projekat - label_project_plural: Projekti - label_x_projects: - zero: nema projekata - one: jedan projekat - other: "%{count} projekata" - label_project_all: Svi projekti - label_project_latest: Poslednji projekti - label_issue: Problem - label_issue_new: Novi problem - label_issue_plural: Problemi - label_issue_view_all: Prikaz svih problema - label_issues_by: "Problemi (%{value})" - label_issue_added: Problem je dodat - label_issue_updated: Problem je ažuriran - label_document: Dokument - label_document_new: Novi dokument - label_document_plural: Dokumenti - label_document_added: Dokument je dodat - label_role: Uloga - label_role_plural: Uloge - label_role_new: Nova uloga - label_role_and_permissions: Uloge i dozvole - label_member: Član - label_member_new: Novi član - label_member_plural: Članovi - label_tracker: Praćenje - label_tracker_plural: Praćenja - label_tracker_new: Novo praćenje - label_workflow: Tok posla - label_issue_status: Status problema - label_issue_status_plural: Statusi problema - label_issue_status_new: Novi status - label_issue_category: Kategorija problema - label_issue_category_plural: Kategorije problema - label_issue_category_new: Nova kategorija - label_custom_field: Prilagođeno polje - label_custom_field_plural: Prilagođena polja - label_custom_field_new: Novo prilagođeno polje - label_enumerations: Nabrojiva lista - label_enumeration_new: Nova vrednost - label_information: Informacija - label_information_plural: Informacije - label_please_login: Molimo, prijavite se - label_register: Registracija - label_login_with_open_id_option: ili prijava sa OpenID - label_password_lost: Izgubljena lozinka - label_home: Početak - label_my_page: Moja stranica - label_my_account: Moj nalog - label_my_projects: Moji projekti - label_my_page_block: My page block - label_administration: Administracija - label_login: Prijava - label_logout: Odjava - label_help: Pomoć - label_reported_issues: Prijavljeni problemi - label_assigned_to_me_issues: Problemi dodeljeni meni - label_last_login: Poslednje povezivanje - label_registered_on: Registrovan - label_activity: Aktivnost - label_overall_activity: Celokupna aktivnost - label_user_activity: "Aktivnost korisnika %{value}" - label_new: Novo - label_logged_as: Prijavljeni ste kao - label_environment: Okruženje - label_authentication: Potvrda identiteta - label_auth_source: Režim potvrde identiteta - label_auth_source_new: Novi režim potvrde identiteta - label_auth_source_plural: Režimi potvrde identiteta - label_subproject_plural: Potprojekti - label_subproject_new: Novi potprojekat - label_and_its_subprojects: "%{value} i njegovi potprojekti" - label_min_max_length: Min. - Maks. dužina - label_list: Spisak - label_date: Datum - label_integer: Ceo broj - label_float: Sa pokretnim zarezom - label_boolean: Logički operator - label_string: Tekst - label_text: Dugi tekst - label_attribute: Osobina - label_attribute_plural: Osobine - label_download: "%{count} preuzimanje" - label_download_plural: "%{count} preuzimanja" - label_no_data: Nema podataka za prikazivanje - label_change_status: Promena statusa - label_history: Istorija - label_attachment: Datoteka - label_attachment_new: Nova datoteka - label_attachment_delete: Brisanje datoteke - label_attachment_plural: Datoteke - label_file_added: Datoteka je dodata - label_report: Izveštaj - label_report_plural: Izveštaji - label_news: Vesti - label_news_new: Dodavanje vesti - label_news_plural: Vesti - label_news_latest: Poslednje vesti - label_news_view_all: Prikaz svih vesti - label_news_added: Vesti su dodate - label_settings: Podešavanja - label_overview: Pregled - label_version: Verzija - label_version_new: Nova verzija - label_version_plural: Verzije - label_close_versions: Zatvori završene verzije - label_confirmation: Potvrda - label_export_to: 'Takođe dostupno i u varijanti:' - label_read: Čitanje... - label_public_projects: Javni projekti - label_open_issues: otvoren - label_open_issues_plural: otvorenih - label_closed_issues: zatvoren - label_closed_issues_plural: zatvorenih - label_x_open_issues_abbr_on_total: - zero: 0 otvorenih / %{total} - one: 1 otvoren / %{total} - other: "%{count} otvorenih / %{total}" - label_x_open_issues_abbr: - zero: 0 otvorenih - one: 1 otvoren - other: "%{count} otvorenih" - label_x_closed_issues_abbr: - zero: 0 zatvorenih - one: 1 zatvoren - other: "%{count} zatvorenih" - label_total: Ukupno - label_permissions: Dozvole - label_current_status: Trenutni status - label_new_statuses_allowed: Novi statusi dozvoljeni - label_all: svi - label_none: nijedan - label_nobody: nikome - label_next: Sledeće - label_previous: Prethodno - label_used_by: Koristio - label_details: Detalji - label_add_note: Dodaj belešku - label_per_page: Po strani - label_calendar: Kalendar - label_months_from: meseci od - label_gantt: Gantov dijagram - label_internal: Unutrašnji - label_last_changes: "poslednjih %{count} promena" - label_change_view_all: Prikaži sve promene - label_personalize_page: Personalizuj ovu stranu - label_comment: Komentar - label_comment_plural: Komentari - label_x_comments: - zero: bez komentara - one: jedan komentar - other: "%{count} komentara" - label_comment_add: Dodaj komentar - label_comment_added: Komentar dodat - label_comment_delete: Obriši komentare - label_query: Prilagođen upit - label_query_plural: Prilagođeni upiti - label_query_new: Novi upit - label_filter_add: Dodavanje filtera - label_filter_plural: Filteri - label_equals: je - label_not_equals: nije - label_in_less_than: manje od - label_in_more_than: više od - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: u - label_today: danas - label_all_time: sve vreme - label_yesterday: juče - label_this_week: ove sedmice - label_last_week: poslednje sedmice - label_last_n_days: "poslednjih %{count} dana" - label_this_month: ovog meseca - label_last_month: poslednjeg meseca - label_this_year: ove godine - label_date_range: Vremenski period - label_less_than_ago: pre manje od nekoliko dana - label_more_than_ago: pre više od nekoliko dana - label_ago: pre nekoliko dana - label_contains: sadrži - label_not_contains: ne sadrži - label_day_plural: dana - label_repository: Spremište - label_repository_plural: Spremišta - label_browse: Pregledanje - label_modification: "%{count} promena" - label_modification_plural: "%{count} promena" - label_branch: Grana - label_tag: Oznaka - label_revision: Revizija - label_revision_plural: Revizije - label_revision_id: "Revizija %{value}" - label_associated_revisions: Pridružene revizije - label_added: dodato - label_modified: promenjeno - label_copied: kopirano - label_renamed: preimenovano - label_deleted: izbrisano - label_latest_revision: Poslednja revizija - label_latest_revision_plural: Poslednje revizije - label_view_revisions: Pregled revizija - label_view_all_revisions: Pregled svih revizija - label_max_size: Maksimalna veličina - label_sort_highest: Premeštanje na vrh - label_sort_higher: Premeštanje na gore - label_sort_lower: Premeštanje na dole - label_sort_lowest: Premeštanje na dno - label_roadmap: Plan rada - label_roadmap_due_in: "Dospeva %{value}" - label_roadmap_overdue: "%{value} najkasnije" - label_roadmap_no_issues: Nema problema za ovu verziju - label_search: Pretraga - label_result_plural: Rezultati - label_all_words: Sve reči - label_wiki: Wiki - label_wiki_edit: Wiki izmena - label_wiki_edit_plural: Wiki izmene - label_wiki_page: Wiki stranica - label_wiki_page_plural: Wiki stranice - label_index_by_title: Indeksiranje po naslovu - label_index_by_date: Indeksiranje po datumu - label_current_version: Trenutna verzija - label_preview: Pregled - label_feed_plural: Izvori vesti - label_changes_details: Detalji svih promena - label_issue_tracking: Praćenje problema - label_spent_time: Utrošeno vreme - label_overall_spent_time: Celokupno utrošeno vreme - label_f_hour: "%{value} sat" - label_f_hour_plural: "%{value} sati" - label_time_tracking: Praćenje vremena - label_change_plural: Promene - label_statistics: Statistika - label_commits_per_month: Izvršenja mesečno - label_commits_per_author: Izvršenja po autoru - label_view_diff: Pogledaj razlike - label_diff_inline: unutra - label_diff_side_by_side: uporedo - label_options: Opcije - label_copy_workflow_from: Kopiranje toka posla od - label_permissions_report: Izveštaj o dozvolama - label_watched_issues: Posmatrani problemi - label_related_issues: Srodni problemi - label_applied_status: Primenjeni statusi - label_loading: Učitavanje... - label_relation_new: Nova relacija - label_relation_delete: Brisanje relacije - label_relates_to: srodnih sa - label_duplicates: dupliranih - label_duplicated_by: dupliranih od - label_blocks: odbijenih - label_blocked_by: odbijenih od - label_precedes: prethodi - label_follows: praćenih - label_end_to_start: od kraja do početka - label_end_to_end: od kraja do kraja - label_start_to_start: od početka do početka - label_start_to_end: od početka do kraja - label_stay_logged_in: Ostanite prijavljeni - label_disabled: onemogućeno - label_show_completed_versions: Prikazivanje završene verzije - label_me: meni - label_board: Forum - label_board_new: Novi forum - label_board_plural: Forumi - label_board_locked: Zaključana - label_board_sticky: Lepljiva - label_topic_plural: Teme - label_message_plural: Poruke - label_message_last: Poslednja poruka - label_message_new: Nova poruka - label_message_posted: Poruka je dodata - label_reply_plural: Odgovori - label_send_information: Pošalji korisniku detalje naloga - label_year: Godina - label_month: Mesec - label_week: Sedmica - label_date_from: Šalje - label_date_to: Prima - label_language_based: Bazirano na jeziku korisnika - label_sort_by: "Sortirano po %{value}" - label_send_test_email: Slanje probne e-poruke - label_feeds_access_key: RSS pristupni ključ - label_missing_feeds_access_key: RSS pristupni ključ nedostaje - label_feeds_access_key_created_on: "RSS pristupni ključ je napravljen pre %{value}" - label_module_plural: Moduli - label_added_time_by: "Dodao %{author} pre %{age}" - label_updated_time_by: "Ažurirao %{author} pre %{age}" - label_updated_time: "Ažurirano pre %{value}" - label_jump_to_a_project: Skok na projekat... - label_file_plural: Datoteke - label_changeset_plural: Skupovi promena - label_default_columns: Podrazumevane kolone - label_no_change_option: (Bez promena) - label_bulk_edit_selected_issues: Grupna izmena odabranih problema - label_theme: Tema - label_default: Podrazumevano - label_search_titles_only: Pretražuj samo naslove - label_user_mail_option_all: "Za bilo koji događaj na svim mojim projektima" - label_user_mail_option_selected: "Za bilo koji događaj na samo odabranim projektima..." - label_user_mail_no_self_notified: "Ne želim biti obaveštavan za promene koje sam pravim" - label_registration_activation_by_email: aktivacija naloga putem e-poruke - label_registration_manual_activation: ručna aktivacija naloga - label_registration_automatic_activation: automatska aktivacija naloga - label_display_per_page: "Broj stavki po stranici: %{value}" - label_age: Starost - label_change_properties: Promeni svojstva - label_general: Opšti - label_more: Više - label_scm: SCM - label_plugins: Dodatne komponente - label_ldap_authentication: LDAP potvrda identiteta - label_downloads_abbr: D/L - label_optional_description: Opciono opis - label_add_another_file: Dodaj još jednu datoteku - label_preferences: Podešavanja - label_chronological_order: po hronološkom redosledu - label_reverse_chronological_order: po obrnutom hronološkom redosledu - label_planning: Planiranje - label_incoming_emails: Dolazne e-poruke - label_generate_key: Generisanje ključa - label_issue_watchers: Posmatrači - label_example: Primer - label_display: Prikaz - label_sort: Sortiranje - label_ascending: Rastući niz - label_descending: Opadajući niz - label_date_from_to: Od %{start} do %{end} - label_wiki_content_added: Wiki stranica je dodata - label_wiki_content_updated: Wiki stranica je ažurirana - label_group: Grupa - label_group_plural: Grupe - label_group_new: Nova grupa - label_time_entry_plural: Utrošeno vreme - label_version_sharing_none: Nije deljeno - label_version_sharing_descendants: Sa potprojektima - label_version_sharing_hierarchy: Sa hijerarhijom projekta - label_version_sharing_tree: Sa stablom projekta - label_version_sharing_system: Sa svim projektima - label_update_issue_done_ratios: Ažuriraj odnos rešenih problema - label_copy_source: Izvor - label_copy_target: Odredište - label_copy_same_as_target: Isto kao odredište - label_display_used_statuses_only: Prikazuj statuse korišćene samo od strane ovog praćenja - label_api_access_key: API pristupni ključ - label_missing_api_access_key: Nedostaje API pristupni ključ - label_api_access_key_created_on: "API pristupni ključ je kreiran pre %{value}" - label_profile: Profil - label_subtask_plural: Podzadatak - label_project_copy_notifications: Pošalji e-poruku sa obaveštenjem prilikom kopiranja projekta - - button_login: Prijava - button_submit: Pošalji - button_save: Snimi - button_check_all: Uključi sve - button_uncheck_all: Isključi sve - button_delete: Izbriši - button_create: Kreiraj - button_create_and_continue: Kreiraj i nastavi - button_test: Test - button_edit: Izmeni - button_add: Dodaj - button_change: Promeni - button_apply: Primeni - button_clear: Obriši - button_lock: Zaključaj - button_unlock: Otključaj - button_download: Preuzmi - button_list: Spisak - button_view: Prikaži - button_move: Pomeri - button_move_and_follow: Pomeri i prati - button_back: Nazad - button_cancel: Poništi - button_activate: Aktiviraj - button_sort: Sortiraj - button_log_time: Evidentiraj vreme - button_rollback: Povratak na ovu verziju - button_watch: Prati - button_unwatch: Ne prati više - button_reply: Odgovori - button_archive: Arhiviraj - button_unarchive: Vrati iz arhive - button_reset: Poništi - button_rename: Preimenuj - button_change_password: Promeni lozinku - button_copy: Kopiraj - button_copy_and_follow: Kopiraj i prati - button_annotate: Pribeleži - button_update: Ažuriraj - button_configure: Podesi - button_quote: Pod navodnicima - button_duplicate: Dupliraj - button_show: Prikaži - - status_active: aktivni - status_registered: registrovani - status_locked: zaključani - - version_status_open: otvoren - version_status_locked: zaključan - version_status_closed: zatvoren - - field_active: Aktivan - - text_select_mail_notifications: Odaberi akcije za koje će obaveštenje biti poslato putem e-pošte. - text_regexp_info: npr. ^[A-Z0-9]+$ - text_min_max_length_info: 0 znači bez ograničenja - text_project_destroy_confirmation: Jeste li sigurni da želite da izbrišete ovaj projekat i sve pripadajuće podatke? - text_subprojects_destroy_warning: "Potprojekti: %{value} će takođe biti izbrisan." - text_workflow_edit: Odaberite ulogu i praćenje za izmenu toka posla - text_are_you_sure: Jeste li sigurni? - text_journal_changed: "%{label} promenjen od %{old} u %{new}" - text_journal_set_to: "%{label} postavljen u %{value}" - text_journal_deleted: "%{label} izbrisano (%{old})" - text_journal_added: "%{label} %{value} dodato" - text_tip_issue_begin_day: zadatak počinje ovog dana - text_tip_issue_end_day: zadatak se završava ovog dana - text_tip_issue_begin_end_day: zadatak počinje i završava ovog dana - text_project_identifier_info: 'Dozvoljena su samo mala slova (a-š), brojevi i crtice.
    Jednom snimljen identifikator više se ne može promeniti.' - text_caracters_maximum: "Najviše %{count} znak(ova)." - text_caracters_minimum: "Broj znakova mora biti najmanje %{count}." - text_length_between: "Broj znakova mora biti između %{min} i %{max}." - text_tracker_no_workflow: Ovo praćenje nema definisan tok posla - text_unallowed_characters: Nedozvoljeni znakovi - text_comma_separated: Dozvoljene su višestruke vrednosti (odvojene zarezom). - text_line_separated: Dozvoljene su višestruke vrednosti (jedan red za svaku vrednost). - text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvršnim porukama - text_issue_added: "%{author} je prijavio problem %{id}." - text_issue_updated: "%{author} je ažurirao problem %{id}." - text_wiki_destroy_confirmation: Jeste li sigurni da želite da obrišete wiki i sav sadržaj? - text_issue_category_destroy_question: "Nekoliko problema (%{count}) je dodeljeno ovoj kategoriji. Šta želite da uradite?" - text_issue_category_destroy_assignments: Ukloni dodeljene kategorije - text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji - text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveštenje o stvarima koje pratite ili ste uključeni (npr. problemi čiji ste vi autor ili zastupnik)." - text_no_configuration_data: "Uloge, praćenja, statusi problema i toka posla još uvek nisu podešeni.\nPreporučljivo je da učitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog učitavanja." - text_load_default_configuration: Učitaj podrazumevano konfigurisanje - text_status_changed_by_changeset: "Primenjeno u skupu sa promenama %{value}." - text_issues_destroy_confirmation: 'Jeste li sigurni da želite da izbrišete odabrane probleme?' - text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:' - text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen - text_file_repository_writable: Fascikla priloženih datoteka je upisiva - text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva - text_rmagick_available: RMagick je dostupan (opciono) - text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji želite izbrisati. Šta želite da uradite?" - text_destroy_time_entries: Izbriši prijavljene sate - text_assign_time_entries_to_project: Dodeli prijavljene sate projektu - text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:' - text_user_wrote: "%{value} je napisao:" - text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti." - text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' - text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." - text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani." - text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.' - text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' - text_wiki_page_destroy_question: "Ova stranica ima %{descendants} podređenih stranica i podstranica. Šta želite da uradite?" - text_wiki_page_nullify_children: "Zadrži podređene stranice kao korene stranice" - text_wiki_page_destroy_children: "Izbriši podređene stranice i sve njihove podstranice" - text_wiki_page_reassign_children: "Dodeli ponovo podređene stranice ovoj matičnoj stranici" - text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaših dozvola nećete više moći da uređujete ovaj projekat.\nŽelite li da nastavite?" - text_zoom_in: Uvećaj - text_zoom_out: Umanji - - default_role_manager: Menadžer - default_role_developer: Programer - default_role_reporter: Izveštač - default_tracker_bug: Greška - default_tracker_feature: Funkcionalnost - default_tracker_support: Podrška - default_issue_status_new: Novo - default_issue_status_in_progress: U toku - default_issue_status_resolved: Rešeno - default_issue_status_feedback: Povratna informacija - default_issue_status_closed: Zatvoreno - default_issue_status_rejected: Odbijeno - default_doc_category_user: Korisnička dokumentacija - default_doc_category_tech: Tehnička dokumentacija - default_priority_low: Nizak - default_priority_normal: Normalan - default_priority_high: Visok - default_priority_urgent: Hitno - default_priority_immediate: Neposredno - default_activity_design: Dizajn - default_activity_development: Razvoj - - enumeration_issue_priorities: Prioriteti problema - enumeration_doc_categories: Kategorije dokumenta - enumeration_activities: Aktivnosti (praćenje vremena) - enumeration_system_activity: Sistemska aktivnost - - field_time_entries: Vreme evidencije - project_module_gantt: Gantov dijagram - project_module_calendar: Kalendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +# Serbian translations for Redmine +# by Vladimir Medarović (vlada@medarovic.com) +sr-YU: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d.%m.%Y." + short: "%e %b" + long: "%B %e, %Y" + + day_names: [nedelja, ponedeljak, utorak, sreda, četvrtak, petak, subota] + abbr_day_names: [ned, pon, uto, sre, čet, pet, sub] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar] + abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%d.%m.%Y. u %H:%M" + time: "%H:%M" + short: "%d. %b u %H:%M" + long: "%d. %B %Y u %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "pola minuta" + less_than_x_seconds: + one: "manje od jedne sekunde" + other: "manje od %{count} sek." + x_seconds: + one: "jedna sekunda" + other: "%{count} sek." + less_than_x_minutes: + one: "manje od minuta" + other: "manje od %{count} min." + x_minutes: + one: "jedan minut" + other: "%{count} min." + about_x_hours: + one: "približno jedan sat" + other: "približno %{count} sati" + x_days: + one: "jedan dan" + other: "%{count} dana" + about_x_months: + one: "približno jedan mesec" + other: "približno %{count} meseci" + x_months: + one: "jedan mesec" + other: "%{count} meseci" + about_x_years: + one: "približno godinu dana" + other: "približno %{count} god." + over_x_years: + one: "preko godinu dana" + other: "preko %{count} god." + almost_x_years: + one: "skoro godinu dana" + other: "skoro %{count} god." + + number: + format: + separator: "," + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "i" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "nije uključen u spisak" + exclusion: "je rezervisan" + invalid: "je neispravan" + confirmation: "potvrda ne odgovara" + accepted: "mora biti prihvaćen" + empty: "ne može biti prazno" + blank: "ne može biti prazno" + too_long: "je predugačka (maksimum znakova je %{count})" + too_short: "je prekratka (minimum znakova je %{count})" + wrong_length: "je pogrešne dužine (broj znakova mora biti %{count})" + taken: "je već u upotrebi" + not_a_number: "nije broj" + not_a_date: "nije ispravan datum" + greater_than: "mora biti veći od %{count}" + greater_than_or_equal_to: "mora biti veći ili jednak %{count}" + equal_to: "mora biti jednak %{count}" + less_than: "mora biti manji od %{count}" + less_than_or_equal_to: "mora biti manji ili jednak %{count}" + odd: "mora biti paran" + even: "mora biti neparan" + greater_than_start_date: "mora biti veći od početnog datuma" + not_same_project: "ne pripada istom projektu" + circular_dependency: "Ova veza će stvoriti kružnu referencu" + cant_link_an_issue_with_a_descendant: "Problem ne može biti povezan sa jednim od svojih podzadataka" + + actionview_instancetag_blank_option: Molim odaberite + + general_text_No: 'Ne' + general_text_Yes: 'Da' + general_text_no: 'ne' + general_text_yes: 'da' + general_lang_name: 'Srpski' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Nalog je uspešno ažuriran. + notice_account_invalid_creditentials: Neispravno korisničko ime ili lozinka. + notice_account_password_updated: Lozinka je uspešno ažurirana. + notice_account_wrong_password: Pogrešna lozinka + notice_account_register_done: Korisnički nalog je uspešno kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju. + notice_account_unknown_email: Nepoznat korisnik. + notice_can_t_change_password: Ovaj korisnički nalog za potvrdu identiteta koristi spoljni izvor. Nemoguće je promeniti lozinku. + notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke + notice_account_activated: Vaš korisnički nalog je aktiviran. Sada se možete prijaviti. + notice_successful_create: Uspešno kreiranje. + notice_successful_update: Uspešno ažuriranje. + notice_successful_delete: Uspešno brisanje. + notice_successful_connection: Uspešno povezivanje. + notice_file_not_found: Strana kojoj želite pristupiti ne postoji ili je uklonjena. + notice_locking_conflict: Podatak je ažuriran od strane drugog korisnika. + notice_not_authorized: Niste ovlašćeni za pristup ovoj strani. + notice_email_sent: "E-poruka je poslata na %{value}" + notice_email_error: "Dogodila se greška prilikom slanja e-poruke (%{value})" + notice_feeds_access_key_reseted: Vaš RSS pristupni ključ je poništen. + notice_api_access_key_reseted: Vaš API pristupni ključ je poništen. + notice_failed_to_save_issues: "Neuspešno snimanje %{count} problema od %{total} odabranih: %{ids}." + notice_failed_to_save_members: "Neuspešno snimanje člana(ova): %{errors}." + notice_no_issue_selected: "Ni jedan problem nije odabran! Molimo, odaberite problem koji želite da menjate." + notice_account_pending: "Vaš nalog je kreiran i čeka na odobrenje administratora." + notice_default_data_loaded: Podrazumevano konfigurisanje je uspešno učitano. + notice_unable_delete_version: Verziju je nemoguće izbrisati. + notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguće izbrisati. + notice_issue_done_ratios_updated: Odnos rešenih problema je ažuriran. + + error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguće učitati: %{value}" + error_scm_not_found: "Stavka ili ispravka nisu pronađene u spremištu." + error_scm_command_failed: "Greška se javila prilikom pokušaja pristupa spremištu: %{value}" + error_scm_annotate: "Stavka ne postoji ili ne može biti označena." + error_issue_not_found_in_project: 'Problem nije pronađen ili ne pripada ovom projektu.' + error_no_tracker_in_project: 'Ni jedno praćenje nije povezano sa ovim projektom. Molimo proverite podešavanja projekta.' + error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaše konfigurisanje (idite na "Administracija -> Statusi problema").' + error_can_not_delete_custom_field: Nemoguće je izbrisati prilagođeno polje + error_can_not_delete_tracker: "Ovo praćenje sadrži probleme i ne može biti obrisano." + error_can_not_remove_role: "Ova uloga je u upotrebi i ne može biti obrisana." + error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne može biti ponovo otvoren' + error_can_not_archive_project: Ovaj projekat se ne može arhivirati + error_issue_done_ratios_not_updated: "Odnos rešenih problema nije ažuriran." + error_workflow_copy_source: 'Molimo odaberite izvorno praćenje ili ulogu' + error_workflow_copy_target: 'Molimo odaberite odredišno praćenje i ulogu' + error_unable_delete_issue_status: 'Status problema je nemoguće obrisati' + error_unable_to_connect: "Povezivanje sa (%{value}) je nemoguće" + warning_attachments_not_saved: "%{count} datoteka ne može biti snimljena." + + mail_subject_lost_password: "Vaša %{value} lozinka" + mail_body_lost_password: 'Za promenu vaše lozinke, kliknite na sledeći link:' + mail_subject_register: "Aktivacija vašeg %{value} naloga" + mail_body_register: 'Za aktivaciju vašeg naloga, kliknite na sledeći link:' + mail_body_account_information_external: "Vaš nalog %{value} možete koristiti za prijavu." + mail_body_account_information: Informacije o vašem nalogu + mail_subject_account_activation_request: "Zahtev za aktivaciju naloga %{value}" + mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. Nalog čeka na vaše odobrenje:" + mail_subject_reminder: "%{count} problema dospeva narednih %{days} dana" + mail_body_reminder: "%{count} problema dodeljenih vama dospeva u narednih %{days} dana:" + mail_subject_wiki_content_added: "Wiki stranica '%{id}' je dodata" + mail_body_wiki_content_added: "%{author} je dodao wiki stranicu '%{id}'." + mail_subject_wiki_content_updated: "Wiki stranica '%{id}' je ažurirana" + mail_body_wiki_content_updated: "%{author} je ažurirao wiki stranicu '%{id}'." + + gui_validation_error: jedna greška + gui_validation_error_plural: "%{count} grešaka" + + field_name: Naziv + field_description: Opis + field_summary: Rezime + field_is_required: Obavezno + field_firstname: Ime + field_lastname: Prezime + field_mail: E-adresa + field_filename: Datoteka + field_filesize: Veličina + field_downloads: Preuzimanja + field_author: Autor + field_created_on: Kreirano + field_updated_on: Ažurirano + field_field_format: Format + field_is_for_all: Za sve projekte + field_possible_values: Moguće vrednosti + field_regexp: Regularan izraz + field_min_length: Minimalna dužina + field_max_length: Maksimalna dužina + field_value: Vrednost + field_category: Kategorija + field_title: Naslov + field_project: Projekat + field_issue: Problem + field_status: Status + field_notes: Beleške + field_is_closed: Zatvoren problem + field_is_default: Podrazumevana vrednost + field_tracker: Praćenje + field_subject: Predmet + field_due_date: Krajnji rok + field_assigned_to: Dodeljeno + field_priority: Prioritet + field_fixed_version: Odredišna verzija + field_user: Korisnik + field_principal: Glavni + field_role: Uloga + field_homepage: Početna stranica + field_is_public: Javno objavljivanje + field_parent: Potprojekat od + field_is_in_roadmap: Problemi prikazani u planu rada + field_login: Korisničko ime + field_mail_notification: Obaveštenja putem e-pošte + field_admin: Administrator + field_last_login_on: Poslednje povezivanje + field_language: Jezik + field_effective_date: Datum + field_password: Lozinka + field_new_password: Nova lozinka + field_password_confirmation: Potvrda lozinke + field_version: Verzija + field_type: Tip + field_host: Glavni računar + field_port: Port + field_account: Korisnički nalog + field_base_dn: Bazni DN + field_attr_login: Atribut prijavljivanja + field_attr_firstname: Atribut imena + field_attr_lastname: Atribut prezimena + field_attr_mail: Atribut e-adrese + field_onthefly: Kreiranje korisnika u toku rada + field_start_date: Početak + field_done_ratio: "% urađeno" + field_auth_source: Režim potvrde identiteta + field_hide_mail: Sakrij moju e-adresu + field_comments: Komentar + field_url: URL + field_start_page: Početna stranica + field_subproject: Potprojekat + field_hours: sati + field_activity: Aktivnost + field_spent_on: Datum + field_identifier: Identifikator + field_is_filter: Upotrebi kao filter + field_issue_to: Srodni problemi + field_delay: Kašnjenje + field_assignable: Problem može biti dodeljen ovoj ulozi + field_redirect_existing_links: Preusmeri postojeće veze + field_estimated_hours: Proteklo vreme + field_column_names: Kolone + field_time_zone: Vremenska zona + field_searchable: Može da se pretražuje + field_default_value: Podrazumevana vrednost + field_comments_sorting: Prikaži komentare + field_parent_title: Matična stranica + field_editable: Izmenljivo + field_watcher: Posmatrač + field_identity_url: OpenID URL + field_content: Sadržaj + field_group_by: Grupisanje rezultata po + field_sharing: Deljenje + field_parent_issue: Matični zadatak + + setting_app_title: Naslov aplikacije + setting_app_subtitle: Podnaslov aplikacije + setting_welcome_text: Tekst dobrodošlice + setting_default_language: Podrazumevani jezik + setting_login_required: Obavezna potvrda identiteta + setting_self_registration: Samoregistracija + setting_attachment_max_size: Maks. veličina priložene datoteke + setting_issues_export_limit: Ograničenje izvoza „problema“ + setting_mail_from: E-adresa pošiljaoca + setting_bcc_recipients: Primaoci „Bcc“ kopije + setting_plain_text_mail: Poruka sa čistim tekstom (bez HTML-a) + setting_host_name: Putanja i naziv glavnog računara + setting_text_formatting: Oblikovanje teksta + setting_wiki_compression: Kompresija Wiki istorije + setting_feeds_limit: Ograničenje sadržaja izvora vesti + setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata + setting_autofetch_changesets: Izvršavanje automatskog preuzimanja + setting_sys_api_enabled: Omogućavanje WS za upravljanje spremištem + setting_commit_ref_keywords: Referenciranje ključnih reči + setting_commit_fix_keywords: Popravljanje ključnih reči + setting_autologin: Automatska prijava + setting_date_format: Format datuma + setting_time_format: Format vremena + setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata + setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema + setting_repositories_encodings: Kodiranje spremišta + setting_emails_footer: Podnožje stranice e-poruke + setting_protocol: Protokol + setting_per_page_options: Opcije prikaza objekata po stranici + setting_user_format: Format prikaza korisnika + setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti + setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugačije navedeno + setting_enabled_scm: Omogućavanje SCM + setting_mail_handler_body_delimiters: "Skraćivanje e-poruke nakon jedne od ovih linija" + setting_mail_handler_api_enabled: Omogućavanje WS dolazne e-poruke + setting_mail_handler_api_key: API ključ + setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta + setting_gravatar_enabled: Koristi Gravatar korisničke ikone + setting_gravatar_default: Podrazumevana Gravatar slika + setting_diff_max_lines_displayed: Maks. broj prikazanih različitih linija + setting_file_max_size_displayed: Maks. veličina tekst. datoteka prikazanih umetnuto + setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju + setting_openid: Dozvoli OpenID prijavu i registraciju + setting_password_min_length: Minimalna dužina lozinke + setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga + setting_default_projects_modules: Podrazumevano omogućeni moduli za nove projekte + setting_issue_done_ratio: Izračunaj odnos rešenih problema + setting_issue_done_ratio_issue_field: koristeći polje problema + setting_issue_done_ratio_issue_status: koristeći status problema + setting_start_of_week: Prvi dan u sedmici + setting_rest_api_enabled: Omogući REST web usluge + setting_cache_formatted_text: Keširanje obrađenog teksta + + permission_add_project: Kreiranje projekta + permission_add_subprojects: Kreiranje potpojekta + permission_edit_project: Izmena projekata + permission_select_project_modules: Odabiranje modula projekta + permission_manage_members: Upravljanje članovima + permission_manage_project_activities: Upravljanje projektnim aktivnostima + permission_manage_versions: Upravljanje verzijama + permission_manage_categories: Upravljanje kategorijama problema + permission_view_issues: Pregled problema + permission_add_issues: Dodavanje problema + permission_edit_issues: Izmena problema + permission_manage_issue_relations: Upravljanje vezama između problema + permission_add_issue_notes: Dodavanje beleški + permission_edit_issue_notes: Izmena beleški + permission_edit_own_issue_notes: Izmena sopstvenih beleški + permission_move_issues: Pomeranje problema + permission_delete_issues: Brisanje problema + permission_manage_public_queries: Upravljanje javnim upitima + permission_save_queries: Snimanje upita + permission_view_gantt: Pregledanje Gantovog dijagrama + permission_view_calendar: Pregledanje kalendara + permission_view_issue_watchers: Pregledanje spiska posmatrača + permission_add_issue_watchers: Dodavanje posmatrača + permission_delete_issue_watchers: Brisanje posmatrača + permission_log_time: Beleženje utrošenog vremena + permission_view_time_entries: Pregledanje utrošenog vremena + permission_edit_time_entries: Izmena utrošenog vremena + permission_edit_own_time_entries: Izmena sopstvenog utrošenog vremena + permission_manage_news: Upravljanje vestima + permission_comment_news: Komentarisanje vesti + permission_manage_documents: Upravljanje dokumentima + permission_view_documents: Pregledanje dokumenata + permission_manage_files: Upravljanje datotekama + permission_view_files: Pregledanje datoteka + permission_manage_wiki: Upravljanje wiki stranicama + permission_rename_wiki_pages: Promena imena wiki stranicama + permission_delete_wiki_pages: Brisanje wiki stranica + permission_view_wiki_pages: Pregledanje wiki stranica + permission_view_wiki_edits: Pregledanje wiki istorije + permission_edit_wiki_pages: Izmena wiki stranica + permission_delete_wiki_pages_attachments: Brisanje priloženih datoteka + permission_protect_wiki_pages: Zaštita wiki stranica + permission_manage_repository: Upravljanje spremištem + permission_browse_repository: Pregledanje spremišta + permission_view_changesets: Pregledanje skupa promena + permission_commit_access: Potvrda pristupa + permission_manage_boards: Upravljanje forumima + permission_view_messages: Pregledanje poruka + permission_add_messages: Slanje poruka + permission_edit_messages: Izmena poruka + permission_edit_own_messages: Izmena sopstvenih poruka + permission_delete_messages: Brisanje poruka + permission_delete_own_messages: Brisanje sopstvenih poruka + permission_export_wiki_pages: Izvoz wiki stranica + permission_manage_subtasks: Upravljanje podzadacima + + project_module_issue_tracking: Praćenje problema + project_module_time_tracking: Praćenje vremena + project_module_news: Vesti + project_module_documents: Dokumenti + project_module_files: Datoteke + project_module_wiki: Wiki + project_module_repository: Spremište + project_module_boards: Forumi + + label_user: Korisnik + label_user_plural: Korisnici + label_user_new: Novi korisnik + label_user_anonymous: Anoniman + label_project: Projekat + label_project_new: Novi projekat + label_project_plural: Projekti + label_x_projects: + zero: nema projekata + one: jedan projekat + other: "%{count} projekata" + label_project_all: Svi projekti + label_project_latest: Poslednji projekti + label_issue: Problem + label_issue_new: Novi problem + label_issue_plural: Problemi + label_issue_view_all: Prikaz svih problema + label_issues_by: "Problemi (%{value})" + label_issue_added: Problem je dodat + label_issue_updated: Problem je ažuriran + label_document: Dokument + label_document_new: Novi dokument + label_document_plural: Dokumenti + label_document_added: Dokument je dodat + label_role: Uloga + label_role_plural: Uloge + label_role_new: Nova uloga + label_role_and_permissions: Uloge i dozvole + label_member: Član + label_member_new: Novi član + label_member_plural: Članovi + label_tracker: Praćenje + label_tracker_plural: Praćenja + label_tracker_new: Novo praćenje + label_workflow: Tok posla + label_issue_status: Status problema + label_issue_status_plural: Statusi problema + label_issue_status_new: Novi status + label_issue_category: Kategorija problema + label_issue_category_plural: Kategorije problema + label_issue_category_new: Nova kategorija + label_custom_field: Prilagođeno polje + label_custom_field_plural: Prilagođena polja + label_custom_field_new: Novo prilagođeno polje + label_enumerations: Nabrojiva lista + label_enumeration_new: Nova vrednost + label_information: Informacija + label_information_plural: Informacije + label_please_login: Molimo, prijavite se + label_register: Registracija + label_login_with_open_id_option: ili prijava sa OpenID + label_password_lost: Izgubljena lozinka + label_home: Početak + label_my_page: Moja stranica + label_my_account: Moj nalog + label_my_projects: Moji projekti + label_my_page_block: My page block + label_administration: Administracija + label_login: Prijava + label_logout: Odjava + label_help: Pomoć + label_reported_issues: Prijavljeni problemi + label_assigned_to_me_issues: Problemi dodeljeni meni + label_last_login: Poslednje povezivanje + label_registered_on: Registrovan + label_activity: Aktivnost + label_overall_activity: Celokupna aktivnost + label_user_activity: "Aktivnost korisnika %{value}" + label_new: Novo + label_logged_as: Prijavljeni ste kao + label_environment: Okruženje + label_authentication: Potvrda identiteta + label_auth_source: Režim potvrde identiteta + label_auth_source_new: Novi režim potvrde identiteta + label_auth_source_plural: Režimi potvrde identiteta + label_subproject_plural: Potprojekti + label_subproject_new: Novi potprojekat + label_and_its_subprojects: "%{value} i njegovi potprojekti" + label_min_max_length: Min. - Maks. dužina + label_list: Spisak + label_date: Datum + label_integer: Ceo broj + label_float: Sa pokretnim zarezom + label_boolean: Logički operator + label_string: Tekst + label_text: Dugi tekst + label_attribute: Osobina + label_attribute_plural: Osobine + label_download: "%{count} preuzimanje" + label_download_plural: "%{count} preuzimanja" + label_no_data: Nema podataka za prikazivanje + label_change_status: Promena statusa + label_history: Istorija + label_attachment: Datoteka + label_attachment_new: Nova datoteka + label_attachment_delete: Brisanje datoteke + label_attachment_plural: Datoteke + label_file_added: Datoteka je dodata + label_report: Izveštaj + label_report_plural: Izveštaji + label_news: Vesti + label_news_new: Dodavanje vesti + label_news_plural: Vesti + label_news_latest: Poslednje vesti + label_news_view_all: Prikaz svih vesti + label_news_added: Vesti su dodate + label_settings: Podešavanja + label_overview: Pregled + label_version: Verzija + label_version_new: Nova verzija + label_version_plural: Verzije + label_close_versions: Zatvori završene verzije + label_confirmation: Potvrda + label_export_to: 'Takođe dostupno i u varijanti:' + label_read: Čitanje... + label_public_projects: Javni projekti + label_open_issues: otvoren + label_open_issues_plural: otvorenih + label_closed_issues: zatvoren + label_closed_issues_plural: zatvorenih + label_x_open_issues_abbr_on_total: + zero: 0 otvorenih / %{total} + one: 1 otvoren / %{total} + other: "%{count} otvorenih / %{total}" + label_x_open_issues_abbr: + zero: 0 otvorenih + one: 1 otvoren + other: "%{count} otvorenih" + label_x_closed_issues_abbr: + zero: 0 zatvorenih + one: 1 zatvoren + other: "%{count} zatvorenih" + label_total: Ukupno + label_permissions: Dozvole + label_current_status: Trenutni status + label_new_statuses_allowed: Novi statusi dozvoljeni + label_all: svi + label_none: nijedan + label_nobody: nikome + label_next: Sledeće + label_previous: Prethodno + label_used_by: Koristio + label_details: Detalji + label_add_note: Dodaj belešku + label_per_page: Po strani + label_calendar: Kalendar + label_months_from: meseci od + label_gantt: Gantov dijagram + label_internal: Unutrašnji + label_last_changes: "poslednjih %{count} promena" + label_change_view_all: Prikaži sve promene + label_personalize_page: Personalizuj ovu stranu + label_comment: Komentar + label_comment_plural: Komentari + label_x_comments: + zero: bez komentara + one: jedan komentar + other: "%{count} komentara" + label_comment_add: Dodaj komentar + label_comment_added: Komentar dodat + label_comment_delete: Obriši komentare + label_query: Prilagođen upit + label_query_plural: Prilagođeni upiti + label_query_new: Novi upit + label_filter_add: Dodavanje filtera + label_filter_plural: Filteri + label_equals: je + label_not_equals: nije + label_in_less_than: manje od + label_in_more_than: više od + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: u + label_today: danas + label_all_time: sve vreme + label_yesterday: juče + label_this_week: ove sedmice + label_last_week: poslednje sedmice + label_last_n_days: "poslednjih %{count} dana" + label_this_month: ovog meseca + label_last_month: poslednjeg meseca + label_this_year: ove godine + label_date_range: Vremenski period + label_less_than_ago: pre manje od nekoliko dana + label_more_than_ago: pre više od nekoliko dana + label_ago: pre nekoliko dana + label_contains: sadrži + label_not_contains: ne sadrži + label_day_plural: dana + label_repository: Spremište + label_repository_plural: Spremišta + label_browse: Pregledanje + label_modification: "%{count} promena" + label_modification_plural: "%{count} promena" + label_branch: Grana + label_tag: Oznaka + label_revision: Revizija + label_revision_plural: Revizije + label_revision_id: "Revizija %{value}" + label_associated_revisions: Pridružene revizije + label_added: dodato + label_modified: promenjeno + label_copied: kopirano + label_renamed: preimenovano + label_deleted: izbrisano + label_latest_revision: Poslednja revizija + label_latest_revision_plural: Poslednje revizije + label_view_revisions: Pregled revizija + label_view_all_revisions: Pregled svih revizija + label_max_size: Maksimalna veličina + label_sort_highest: Premeštanje na vrh + label_sort_higher: Premeštanje na gore + label_sort_lower: Premeštanje na dole + label_sort_lowest: Premeštanje na dno + label_roadmap: Plan rada + label_roadmap_due_in: "Dospeva %{value}" + label_roadmap_overdue: "%{value} najkasnije" + label_roadmap_no_issues: Nema problema za ovu verziju + label_search: Pretraga + label_result_plural: Rezultati + label_all_words: Sve reči + label_wiki: Wiki + label_wiki_edit: Wiki izmena + label_wiki_edit_plural: Wiki izmene + label_wiki_page: Wiki stranica + label_wiki_page_plural: Wiki stranice + label_index_by_title: Indeksiranje po naslovu + label_index_by_date: Indeksiranje po datumu + label_current_version: Trenutna verzija + label_preview: Pregled + label_feed_plural: Izvori vesti + label_changes_details: Detalji svih promena + label_issue_tracking: Praćenje problema + label_spent_time: Utrošeno vreme + label_overall_spent_time: Celokupno utrošeno vreme + label_f_hour: "%{value} sat" + label_f_hour_plural: "%{value} sati" + label_time_tracking: Praćenje vremena + label_change_plural: Promene + label_statistics: Statistika + label_commits_per_month: Izvršenja mesečno + label_commits_per_author: Izvršenja po autoru + label_view_diff: Pogledaj razlike + label_diff_inline: unutra + label_diff_side_by_side: uporedo + label_options: Opcije + label_copy_workflow_from: Kopiranje toka posla od + label_permissions_report: Izveštaj o dozvolama + label_watched_issues: Posmatrani problemi + label_related_issues: Srodni problemi + label_applied_status: Primenjeni statusi + label_loading: Učitavanje... + label_relation_new: Nova relacija + label_relation_delete: Brisanje relacije + label_relates_to: srodnih sa + label_duplicates: dupliranih + label_duplicated_by: dupliranih od + label_blocks: odbijenih + label_blocked_by: odbijenih od + label_precedes: prethodi + label_follows: praćenih + label_end_to_start: od kraja do početka + label_end_to_end: od kraja do kraja + label_start_to_start: od početka do početka + label_start_to_end: od početka do kraja + label_stay_logged_in: Ostanite prijavljeni + label_disabled: onemogućeno + label_show_completed_versions: Prikazivanje završene verzije + label_me: meni + label_board: Forum + label_board_new: Novi forum + label_board_plural: Forumi + label_board_locked: Zaključana + label_board_sticky: Lepljiva + label_topic_plural: Teme + label_message_plural: Poruke + label_message_last: Poslednja poruka + label_message_new: Nova poruka + label_message_posted: Poruka je dodata + label_reply_plural: Odgovori + label_send_information: Pošalji korisniku detalje naloga + label_year: Godina + label_month: Mesec + label_week: Sedmica + label_date_from: Šalje + label_date_to: Prima + label_language_based: Bazirano na jeziku korisnika + label_sort_by: "Sortirano po %{value}" + label_send_test_email: Slanje probne e-poruke + label_feeds_access_key: RSS pristupni ključ + label_missing_feeds_access_key: RSS pristupni ključ nedostaje + label_feeds_access_key_created_on: "RSS pristupni ključ je napravljen pre %{value}" + label_module_plural: Moduli + label_added_time_by: "Dodao %{author} pre %{age}" + label_updated_time_by: "Ažurirao %{author} pre %{age}" + label_updated_time: "Ažurirano pre %{value}" + label_jump_to_a_project: Skok na projekat... + label_file_plural: Datoteke + label_changeset_plural: Skupovi promena + label_default_columns: Podrazumevane kolone + label_no_change_option: (Bez promena) + label_bulk_edit_selected_issues: Grupna izmena odabranih problema + label_theme: Tema + label_default: Podrazumevano + label_search_titles_only: Pretražuj samo naslove + label_user_mail_option_all: "Za bilo koji događaj na svim mojim projektima" + label_user_mail_option_selected: "Za bilo koji događaj na samo odabranim projektima..." + label_user_mail_no_self_notified: "Ne želim biti obaveštavan za promene koje sam pravim" + label_registration_activation_by_email: aktivacija naloga putem e-poruke + label_registration_manual_activation: ručna aktivacija naloga + label_registration_automatic_activation: automatska aktivacija naloga + label_display_per_page: "Broj stavki po stranici: %{value}" + label_age: Starost + label_change_properties: Promeni svojstva + label_general: Opšti + label_more: Više + label_scm: SCM + label_plugins: Dodatne komponente + label_ldap_authentication: LDAP potvrda identiteta + label_downloads_abbr: D/L + label_optional_description: Opciono opis + label_add_another_file: Dodaj još jednu datoteku + label_preferences: Podešavanja + label_chronological_order: po hronološkom redosledu + label_reverse_chronological_order: po obrnutom hronološkom redosledu + label_planning: Planiranje + label_incoming_emails: Dolazne e-poruke + label_generate_key: Generisanje ključa + label_issue_watchers: Posmatrači + label_example: Primer + label_display: Prikaz + label_sort: Sortiranje + label_ascending: Rastući niz + label_descending: Opadajući niz + label_date_from_to: Od %{start} do %{end} + label_wiki_content_added: Wiki stranica je dodata + label_wiki_content_updated: Wiki stranica je ažurirana + label_group: Grupa + label_group_plural: Grupe + label_group_new: Nova grupa + label_time_entry_plural: Utrošeno vreme + label_version_sharing_none: Nije deljeno + label_version_sharing_descendants: Sa potprojektima + label_version_sharing_hierarchy: Sa hijerarhijom projekta + label_version_sharing_tree: Sa stablom projekta + label_version_sharing_system: Sa svim projektima + label_update_issue_done_ratios: Ažuriraj odnos rešenih problema + label_copy_source: Izvor + label_copy_target: Odredište + label_copy_same_as_target: Isto kao odredište + label_display_used_statuses_only: Prikazuj statuse korišćene samo od strane ovog praćenja + label_api_access_key: API pristupni ključ + label_missing_api_access_key: Nedostaje API pristupni ključ + label_api_access_key_created_on: "API pristupni ključ je kreiran pre %{value}" + label_profile: Profil + label_subtask_plural: Podzadatak + label_project_copy_notifications: Pošalji e-poruku sa obaveštenjem prilikom kopiranja projekta + + button_login: Prijava + button_submit: Pošalji + button_save: Snimi + button_check_all: Uključi sve + button_uncheck_all: Isključi sve + button_delete: Izbriši + button_create: Kreiraj + button_create_and_continue: Kreiraj i nastavi + button_test: Test + button_edit: Izmeni + button_add: Dodaj + button_change: Promeni + button_apply: Primeni + button_clear: Obriši + button_lock: Zaključaj + button_unlock: Otključaj + button_download: Preuzmi + button_list: Spisak + button_view: Prikaži + button_move: Pomeri + button_move_and_follow: Pomeri i prati + button_back: Nazad + button_cancel: Poništi + button_activate: Aktiviraj + button_sort: Sortiraj + button_log_time: Evidentiraj vreme + button_rollback: Povratak na ovu verziju + button_watch: Prati + button_unwatch: Ne prati više + button_reply: Odgovori + button_archive: Arhiviraj + button_unarchive: Vrati iz arhive + button_reset: Poništi + button_rename: Preimenuj + button_change_password: Promeni lozinku + button_copy: Kopiraj + button_copy_and_follow: Kopiraj i prati + button_annotate: Pribeleži + button_update: Ažuriraj + button_configure: Podesi + button_quote: Pod navodnicima + button_duplicate: Dupliraj + button_show: Prikaži + + status_active: aktivni + status_registered: registrovani + status_locked: zaključani + + version_status_open: otvoren + version_status_locked: zaključan + version_status_closed: zatvoren + + field_active: Aktivan + + text_select_mail_notifications: Odaberi akcije za koje će obaveštenje biti poslato putem e-pošte. + text_regexp_info: npr. ^[A-Z0-9]+$ + text_min_max_length_info: 0 znači bez ograničenja + text_project_destroy_confirmation: Jeste li sigurni da želite da izbrišete ovaj projekat i sve pripadajuće podatke? + text_subprojects_destroy_warning: "Potprojekti: %{value} će takođe biti izbrisan." + text_workflow_edit: Odaberite ulogu i praćenje za izmenu toka posla + text_are_you_sure: Jeste li sigurni? + text_journal_changed: "%{label} promenjen od %{old} u %{new}" + text_journal_set_to: "%{label} postavljen u %{value}" + text_journal_deleted: "%{label} izbrisano (%{old})" + text_journal_added: "%{label} %{value} dodato" + text_tip_issue_begin_day: zadatak počinje ovog dana + text_tip_issue_end_day: zadatak se završava ovog dana + text_tip_issue_begin_end_day: zadatak počinje i završava ovog dana + text_project_identifier_info: 'Dozvoljena su samo mala slova (a-š), brojevi i crtice.
    Jednom snimljen identifikator više se ne može promeniti.' + text_caracters_maximum: "Najviše %{count} znak(ova)." + text_caracters_minimum: "Broj znakova mora biti najmanje %{count}." + text_length_between: "Broj znakova mora biti između %{min} i %{max}." + text_tracker_no_workflow: Ovo praćenje nema definisan tok posla + text_unallowed_characters: Nedozvoljeni znakovi + text_comma_separated: Dozvoljene su višestruke vrednosti (odvojene zarezom). + text_line_separated: Dozvoljene su višestruke vrednosti (jedan red za svaku vrednost). + text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvršnim porukama + text_issue_added: "%{author} je prijavio problem %{id}." + text_issue_updated: "%{author} je ažurirao problem %{id}." + text_wiki_destroy_confirmation: Jeste li sigurni da želite da obrišete wiki i sav sadržaj? + text_issue_category_destroy_question: "Nekoliko problema (%{count}) je dodeljeno ovoj kategoriji. Šta želite da uradite?" + text_issue_category_destroy_assignments: Ukloni dodeljene kategorije + text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji + text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveštenje o stvarima koje pratite ili ste uključeni (npr. problemi čiji ste vi autor ili zastupnik)." + text_no_configuration_data: "Uloge, praćenja, statusi problema i toka posla još uvek nisu podešeni.\nPreporučljivo je da učitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog učitavanja." + text_load_default_configuration: Učitaj podrazumevano konfigurisanje + text_status_changed_by_changeset: "Primenjeno u skupu sa promenama %{value}." + text_issues_destroy_confirmation: 'Jeste li sigurni da želite da izbrišete odabrane probleme?' + text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:' + text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen + text_file_repository_writable: Fascikla priloženih datoteka je upisiva + text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva + text_rmagick_available: RMagick je dostupan (opciono) + text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji želite izbrisati. Šta želite da uradite?" + text_destroy_time_entries: Izbriši prijavljene sate + text_assign_time_entries_to_project: Dodeli prijavljene sate projektu + text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:' + text_user_wrote: "%{value} je napisao:" + text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti." + text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' + text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." + text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani." + text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.' + text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' + text_wiki_page_destroy_question: "Ova stranica ima %{descendants} podređenih stranica i podstranica. Šta želite da uradite?" + text_wiki_page_nullify_children: "Zadrži podređene stranice kao korene stranice" + text_wiki_page_destroy_children: "Izbriši podređene stranice i sve njihove podstranice" + text_wiki_page_reassign_children: "Dodeli ponovo podređene stranice ovoj matičnoj stranici" + text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaših dozvola nećete više moći da uređujete ovaj projekat.\nŽelite li da nastavite?" + text_zoom_in: Uvećaj + text_zoom_out: Umanji + + default_role_manager: Menadžer + default_role_developer: Programer + default_role_reporter: Izveštač + default_tracker_bug: Greška + default_tracker_feature: Funkcionalnost + default_tracker_support: Podrška + default_issue_status_new: Novo + default_issue_status_in_progress: U toku + default_issue_status_resolved: Rešeno + default_issue_status_feedback: Povratna informacija + default_issue_status_closed: Zatvoreno + default_issue_status_rejected: Odbijeno + default_doc_category_user: Korisnička dokumentacija + default_doc_category_tech: Tehnička dokumentacija + default_priority_low: Nizak + default_priority_normal: Normalan + default_priority_high: Visok + default_priority_urgent: Hitno + default_priority_immediate: Neposredno + default_activity_design: Dizajn + default_activity_development: Razvoj + + enumeration_issue_priorities: Prioriteti problema + enumeration_doc_categories: Kategorije dokumenta + enumeration_activities: Aktivnosti (praćenje vremena) + enumeration_system_activity: Sistemska aktivnost + + field_time_entries: Vreme evidencije + project_module_gantt: Gantov dijagram + project_module_calendar: Kalendar + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodiranje izvršnih poruka + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/sr.yml.svn-base --- a/config/locales/.svn/text-base/sr.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/sr.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -18,7 +18,10 @@ month_names: [~, јануар, фебруар, март, април, мај, јун, јул, август, септембар, октобар, новембар, децембар] abbr_month_names: [~, јан, феб, мар, апр, мај, јун, јул, авг, сеп, окт, нов, дец] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -266,7 +269,7 @@ field_attr_mail: Атрибут е-адресе field_onthefly: Креирање корисника у току рада field_start_date: Почетак - field_done_ratio: % урађено + field_done_ratio: "% урађено" field_auth_source: Режим потврде идентитета field_hide_mail: Сакриј моју е-адресу field_comments: Коментар @@ -323,7 +326,6 @@ setting_cross_project_issue_relations: Дозволи повезивање проблема из унакрсних пројеката setting_issue_list_default_columns: Подразумеване колоне приказане на списку проблема setting_repositories_encodings: Кодирање спремишта - setting_commit_logs_encoding: Кодирање извршних порука setting_emails_footer: Подножје странице е-поруке setting_protocol: Протокол setting_per_page_options: Опције приказа објеката по страници @@ -941,3 +943,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Кодирање извршних порука + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/sv.yml.svn-base --- a/config/locales/.svn/text-base/sv.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/sv.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -130,7 +130,7 @@ greater_than_start_date: "måste vara senare än startdatumet" not_same_project: "tillhör inte samma projekt" circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "Ett ärende kan inte länkas till ett av dess underärenden" direction: ltr date: @@ -149,7 +149,10 @@ month_names: [~, januari, februari, mars, april, maj, juni, juli, augusti, september, oktober, november, december] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -176,7 +179,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Kontot har uppdaterats @@ -207,7 +210,7 @@ notice_default_data_loaded: Standardkonfiguration inläst. notice_unable_delete_version: Denna version var inte möjlig att ta bort. notice_unable_delete_time_entry: Tidloggning kunde inte tas bort. - notice_issue_done_ratios_updated: % klart uppdaterade. + notice_issue_done_ratios_updated: "% klart uppdaterade." notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som får visas (%{max})" error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}" @@ -310,7 +313,7 @@ field_attr_mail: Mailattribut field_onthefly: Skapa användare on-the-fly field_start_date: Startdatum - field_done_ratio: % Klart + field_done_ratio: "% Klart" field_auth_source: Autentiseringsläge field_hide_mail: Dölj min mailadress field_comments: Kommentar @@ -345,6 +348,9 @@ field_assigned_to_role: "Tilldelad användares roll" field_text: Textfält field_visible: Synlig + field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text + field_issues_visibility: Ärendesynlighet + field_is_private: Privat setting_app_title: Applikationsrubrik setting_app_subtitle: Applikationsunderrubrik @@ -372,7 +378,6 @@ setting_cross_project_issue_relations: Tillåt ärenderelationer mellan projekt setting_issue_list_default_columns: Standardkolumner i ärendelistan setting_repositories_encodings: Teckenuppsättningar för versionsarkiv - setting_commit_logs_encoding: Teckenuppsättning för commit-meddelanden setting_emails_header: Mail-header setting_emails_footer: Signatur setting_protocol: Protokoll @@ -417,6 +422,8 @@ permission_edit_issues: Ändra ärenden permission_view_issues: Visa ärenden permission_manage_issue_relations: Hantera ärenderelationer + permission_set_issues_private: Sätta ärenden publika eller privata + permission_set_own_issues_private: Sätta egna ärenden publika eller privata permission_add_issue_notes: Lägga till ärendenotering permission_edit_issue_notes: Ändra ärendenoteringar permission_edit_own_issue_notes: Ändra egna ärendenoteringar @@ -492,6 +499,9 @@ label_issues_by: "Ärenden %{value}" label_issue_added: Ärende tillagt label_issue_updated: Ärende uppdaterat + label_issue_note_added: Anteckning tillagd + label_issue_status_updated: Status uppdaterad + label_issue_priority_updated: Prioritet uppdaterad label_document: Dokument label_document_new: Nytt dokument label_document_plural: Dokument @@ -500,6 +510,8 @@ label_role_plural: Roller label_role_new: Ny roll label_role_and_permissions: Roller och behörigheter + label_role_anonymous: Anonym + label_role_non_member: Icke-medlem label_member: Medlem label_member_new: Ny medlem label_member_plural: Medlemmar @@ -578,6 +590,7 @@ label_news_latest: Senaste nyheterna label_news_view_all: Visa alla nyheter label_news_added: Nyhet tillagd + label_news_comment_added: Kommentar tillagd till en nyhet label_settings: Inställningar label_overview: Översikt label_version: Version @@ -636,6 +649,7 @@ label_query: Användardefinerad fråga label_query_plural: Användardefinerade frågor label_query_new: Ny fråga + label_my_queries: Mina egna frågor label_filter_add: Lägg till filter label_filter_plural: Filter label_equals: är @@ -774,6 +788,7 @@ label_default_columns: Standardkolumner label_no_change_option: (Ingen ändring) label_bulk_edit_selected_issues: Gemensam ändring av markerade ärenden + label_bulk_edit_selected_time_entries: Gruppredigera valda tidloggningar label_theme: Tema label_default: Standard label_search_titles_only: Sök endast i titlar @@ -835,12 +850,19 @@ label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras label_principal_search: "Sök efter användare eller grupp:" label_user_search: "Sök efter användare:" + label_additional_workflow_transitions_for_author: Ytterligare övergångar tillåtna när användaren är den som skapat ärendet + label_additional_workflow_transitions_for_assignee: Ytterligare övergångar tillåtna när användaren är den som tilldelats ärendet + label_issues_visibility_all: Alla ärenden + label_issues_visibility_public: Alla icke-privata ärenden + label_issues_visibility_own: Ärenden skapade av eller tilldelade till användaren button_login: Logga in button_submit: Skicka button_save: Spara button_check_all: Markera alla button_uncheck_all: Avmarkera alla + button_collapse_all: Kollapsa alla + button_expand_all: Expandera alla button_delete: Ta bort button_create: Skapa button_create_and_continue: Skapa och fortsätt @@ -900,6 +922,7 @@ text_are_you_sure: Är du säker ? text_are_you_sure_with_children: Ta bort ärende och alla underärenden? text_journal_changed: "%{label} ändrad från %{old} till %{new}" + text_journal_changed_no_detail: "%{label} uppdaterad" text_journal_set_to: "%{label} satt till %{value}" text_journal_deleted: "%{label} borttagen (%{old})" text_journal_added: "%{label} %{value} tillagd" @@ -927,6 +950,8 @@ text_status_changed_by_changeset: "Tilldelad i changeset %{value}." text_time_logged_by_changeset: "Tilldelad i changeset %{value}." text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?' + text_issues_destroy_descendants_confirmation: Detta kommer även ta bort %{count} underaktivitet(er). + text_time_entries_destroy_confirmation: Är du säker på att du vill ta bort valda tidloggningar? text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:' text_default_administrator_account_changed: Standardadministratörens konto ändrat text_file_repository_writable: Arkivet för bifogade filer är skrivbart @@ -950,6 +975,7 @@ text_own_membership_delete_confirmation: "Några av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?" text_zoom_out: Zooma ut text_zoom_in: Zooma in + text_warn_on_leaving_unsaved: Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan. default_role_manager: Projektledare default_role_developer: Utvecklare @@ -977,7 +1003,17 @@ enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/th.yml.svn-base --- a/config/locales/.svn/text-base/th.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/th.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -238,7 +241,7 @@ field_attr_mail: อีเมล์ attribute field_onthefly: สร้างผู้ใช้ทันที field_start_date: เริ่ม - field_done_ratio: % สำเร็จ + field_done_ratio: "% สำเร็จ" field_auth_source: วิธีการยืนยันตัวตน field_hide_mail: ซ่อนอีเมล์ของฉัน field_comments: ความเห็น @@ -729,7 +732,6 @@ text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers - setting_commit_logs_encoding: Commit messages encoding button_quote: Quote setting_sequential_project_identifiers: Generate sequential project identifiers notice_unable_delete_version: Unable to delete version @@ -937,3 +939,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/tr.yml.svn-base --- a/config/locales/.svn/text-base/tr.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/tr.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ -# Turkish translations for Ruby on Rails +# Turkish translations for Ruby on Rails # by Ozgun Ataman (ozataman@gmail.com) +# by Burak Yigit Kaya (ben@byk.im) tr: locale: @@ -18,8 +19,11 @@ abbr_day_names: [Pzr, Pzt, Sal, Çrş, Prş, Cum, Cts] month_names: [~, Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık] abbr_month_names: [~, Oca, Şub, Mar, Nis, May, Haz, Tem, Ağu, Eyl, Eki, Kas, Ara] - order: [ :day, :month, :year ] - + order: + - :day + - :month + - :year + time: formats: default: "%a %d.%b.%y %H:%M" @@ -30,7 +34,7 @@ am: "öğleden önce" pm: "öğleden sonra" - + datetime: distance_in_words: half_a_minute: 'yarım dakika' @@ -49,27 +53,27 @@ one: '1 dakika' other: '%{count} dakika' about_x_hours: - one: '1 saat civarında' - other: '%{count} saat civarında' + one: 'yaklaşık 1 saat' + other: 'yaklaşık %{count} saat' x_days: one: '1 gün' other: '%{count} gün' about_x_months: - one: '1 ay civarında' - other: '%{count} ay civarında' + one: 'yaklaşık 1 ay' + other: 'yaklaşık %{count} ay' x_months: one: '1 ay' other: '%{count} ay' about_x_years: - one: '1 yıl civarında' - other: '%{count} yıl civarında' + one: 'yaklaşık 1 yıl' + other: 'yaklaşık %{count} yıl' over_x_years: one: '1 yıldan fazla' other: '%{count} yıldan fazla' almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" - + one: "neredeyse 1 Yıl" + other: "neredeyse %{count} yıl" + number: format: precision: 2 @@ -101,7 +105,7 @@ units: byte: one: "Byte" - other: "Bytes" + other: "Byte" kb: "KB" mb: "MB" gb: "GB" @@ -111,7 +115,7 @@ array: sentence_connector: "ve" skip_last_comma: true - + activerecord: errors: template: @@ -143,21 +147,21 @@ greater_than_start_date: "başlangıç tarihinden büyük olmalı" not_same_project: "aynı projeye ait değil" circular_dependency: "Bu ilişki döngüsel bağımlılık meydana getirecektir" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "Bir iş, alt işlerinden birine bağlanamaz" models: - + actionview_instancetag_blank_option: Lütfen Seçin - + general_text_No: 'Hayır' general_text_Yes: 'Evet' general_text_no: 'hayır' general_text_yes: 'evet' general_lang_name: 'Türkçe' general_csv_separator: ',' - general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_csv_encoding: ISO-8859-9 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' - + notice_account_updated: Hesap başarıyla güncelleştirildi. notice_account_invalid_creditentials: Geçersiz kullanıcı ya da parola notice_account_password_updated: Parola başarıyla güncellendi. @@ -178,30 +182,30 @@ notice_email_error: "E-posta gönderilirken bir hata oluştu (%{value})" notice_feeds_access_key_reseted: RSS erişim anahtarınız sıfırlandı. notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_no_issue_selected: "Seçili ileti yok! Lütfen, düzenlemek istediğiniz iletileri işaretleyin." + notice_no_issue_selected: "Seçili iş yok! Lütfen, düzenlemek istediğiniz işleri işaretleyin." notice_account_pending: "Hesabınız oluşturuldu ve yönetici onayı bekliyor." notice_default_data_loaded: Varasayılan konfigürasyon başarılıyla yüklendi. - + error_can_t_load_default_data: "Varsayılan konfigürasyon yüklenemedi: %{value}" - error_scm_not_found: "Depoda, giriş ya da revizyon yok." + error_scm_not_found: "Depoda, giriş ya da değişiklik yok." error_scm_command_failed: "Depoya erişmeye çalışırken bir hata meydana geldi: %{value}" error_scm_annotate: "Giriş mevcut değil veya izah edilemedi." - error_issue_not_found_in_project: 'İleti bilgisi bulunamadı veya bu projeye ait değil' - + error_issue_not_found_in_project: 'İş bilgisi bulunamadı veya bu projeye ait değil' + mail_subject_lost_password: "Parolanız %{value}" mail_body_lost_password: 'Parolanızı değiştirmek için, aşağıdaki bağlantıya tıklayın:' - mail_subject_register: "Your %{value} hesap aktivasyonu" + mail_subject_register: "%{value} hesap aktivasyonu" mail_body_register: 'Hesabınızı etkinleştirmek için, aşağıdaki bağlantıya tıklayın:' mail_body_account_information_external: "Hesabınızı %{value} giriş yapmak için kullanabilirsiniz." mail_body_account_information: Hesap bilgileriniz mail_subject_account_activation_request: "%{value} hesabı etkinleştirme isteği" mail_body_account_activation_request: "Yeni bir kullanıcı (%{value}) kaydedildi. Hesap onaylanmayı bekliyor:" - + gui_validation_error: 1 hata gui_validation_error_plural: "%{count} hata" - + field_name: İsim - field_description: Açıklama + field_description: Yorum field_summary: Özet field_is_required: Gerekli field_firstname: Ad @@ -211,11 +215,11 @@ field_filesize: Boyut field_downloads: İndirilenler field_author: Yazar - field_created_on: Oluşturuldu - field_updated_on: Güncellendi + field_created_on: Oluşturulma + field_updated_on: Güncellenme field_field_format: Biçim field_is_for_all: Tüm projeler için - field_possible_values: Mümkün değerler + field_possible_values: Kullanılabilir değerler field_regexp: Düzenli ifadeler field_min_length: En az uzunluk field_max_length: En çok uzunluk @@ -223,23 +227,23 @@ field_category: Kategori field_title: Başlık field_project: Proje - field_issue: İleti + field_issue: İş field_status: Durum field_notes: Notlar - field_is_closed: İleti kapatıldı + field_is_closed: İş kapatıldı field_is_default: Varsayılan Değer - field_tracker: Takipçi + field_tracker: İş tipi field_subject: Konu field_due_date: Bitiş Tarihi field_assigned_to: Atanan field_priority: Öncelik - field_fixed_version: Hedef Version + field_fixed_version: Hedef Sürüm field_user: Kullanıcı field_role: Rol field_homepage: Anasayfa field_is_public: Genel field_parent: 'Üst proje: ' - field_is_in_roadmap: Yol haritasında gösterilen iletiler + field_is_in_roadmap: Yol haritasında gösterilen işler field_login: Giriş field_mail_notification: E-posta uyarıları field_admin: Yönetici @@ -249,7 +253,7 @@ field_password: Parola field_new_password: Yeni Parola field_password_confirmation: Onay - field_version: Versiyon + field_version: Sürüm field_type: Tip field_host: Host field_port: Port @@ -260,38 +264,38 @@ field_attr_lastname: Soyad Niteliği field_attr_mail: E-Posta Niteliği field_onthefly: Anında kullanıcı oluşturma - field_start_date: Başlangıç - field_done_ratio: % tamamlandı + field_start_date: Başlangıç Tarihi + field_done_ratio: Tamamlanma yüzdesi field_auth_source: Kimlik Denetim Modu field_hide_mail: E-posta adresimi gizle - field_comments: Açıklama + field_comments: Yorumlar field_url: URL field_start_page: Başlangıç Sayfası field_subproject: Alt Proje - field_hours: Saatler - field_activity: Faaliyet + field_hours: Saat + field_activity: Etkinlik field_spent_on: Tarih field_identifier: Tanımlayıcı field_is_filter: filtre olarak kullanılmış - field_issue_to: İlişkili ileti + field_issue_to: İlişkili iş field_delay: Gecikme - field_assignable: Bu role atanabilecek iletiler - field_redirect_existing_links: Mevcut bağlantıları tekrar yönlendir + field_assignable: Bu role atanabilecek işler + field_redirect_existing_links: Mevcut bağlantıları yönlendir field_estimated_hours: Kalan zaman field_column_names: Sütunlar field_time_zone: Saat dilimi field_searchable: Aranabilir field_default_value: Varsayılan değer - field_comments_sorting: Açıklamaları göster - + field_comments_sorting: Yorumları göster + setting_app_title: Uygulama Bağlığı setting_app_subtitle: Uygulama alt başlığı setting_welcome_text: Hoşgeldin Mesajı setting_default_language: Varsayılan Dil setting_login_required: Kimlik denetimi gerekli mi setting_self_registration: Otomatik kayıt - setting_attachment_max_size: Maksimum Ek boyutu - setting_issues_export_limit: İletilerin dışa aktarılma sınırı + setting_attachment_max_size: Maksimum ek boyutu + setting_issues_export_limit: İşlerin dışa aktarılma sınırı setting_mail_from: Gönderici e-posta adresi setting_bcc_recipients: Alıcıları birbirinden gizle (bcc) setting_host_name: Host adı @@ -306,17 +310,17 @@ setting_autologin: Otomatik Giriş setting_date_format: Tarih Formati setting_time_format: Zaman Formatı - setting_cross_project_issue_relations: Çapraz-Proje ileti ilişkilendirmesine izin ver - setting_issue_list_default_columns: İleti listesinde gösterilen varsayılan sütunlar + setting_cross_project_issue_relations: Çapraz-Proje iş ilişkilendirmesine izin ver + setting_issue_list_default_columns: İş listesinde gösterilen varsayılan sütunlar setting_repositories_encodings: Depo dil kodlaması setting_emails_footer: E-posta dip not setting_protocol: Protokol - setting_per_page_options: Sayfa seçenekleri başına nesneler - setting_user_format: Kullanıcı gösterim formatı - setting_activity_days_default: Proje Faaliyetlerinde gösterilen gün sayısı - setting_display_subprojects_issues: Varsayılan olarak ana projenin ileti listesinde alt proje iletilerini göster - - project_module_issue_tracking: İleti Takibi + setting_per_page_options: Sayfada başına öğe sayısı + setting_user_format: Kullanıcı gösterim biçimi + setting_activity_days_default: Proje etkinliklerinde gösterilen gün sayısı + setting_display_subprojects_issues: Varsayılan olarak ana projenin iş listesinde alt proje işlerini göster + + project_module_issue_tracking: İş Takibi project_module_time_tracking: Zaman Takibi project_module_news: Haberler project_module_documents: Belgeler @@ -324,7 +328,7 @@ project_module_wiki: Wiki project_module_repository: Depo project_module_boards: Tartışma Alanı - + label_user: Kullanıcı label_user_plural: Kullanıcılar label_user_new: Yeni Kullanıcı @@ -332,18 +336,18 @@ label_project_new: Yeni proje label_project_plural: Projeler label_x_projects: - zero: no projects - one: 1 project - other: "%{count} projects" + zero: hiç proje yok + one: 1 proje + other: "%{count} proje" label_project_all: Tüm Projeler label_project_latest: En son projeler - label_issue: İleti - label_issue_new: Yeni İleti - label_issue_plural: İletiler - label_issue_view_all: Tüm iletileri izle - label_issues_by: "%{value} tarafından gönderilmiş iletiler" - label_issue_added: İleti eklendi - label_issue_updated: İleti güncellendi + label_issue: İş + label_issue_new: Yeni İş + label_issue_plural: İşler + label_issue_view_all: Tüm işleri izle + label_issues_by: "%{value} tarafından gönderilmiş işler" + label_issue_added: İş eklendi + label_issue_updated: İş güncellendi label_document: Belge label_document_new: Yeni belge label_document_plural: Belgeler @@ -355,15 +359,15 @@ label_member: Üye label_member_new: Yeni üye label_member_plural: Üyeler - label_tracker: Takipçi - label_tracker_plural: Takipçiler - label_tracker_new: Yeni takipçi + label_tracker: İş tipi + label_tracker_plural: İş tipleri + label_tracker_new: Yeni iş tipi label_workflow: İş akışı - label_issue_status: İleti durumu - label_issue_status_plural: İleti durumuları + label_issue_status: İş durumu + label_issue_status_plural: İş durumuları label_issue_status_new: Yeni durum - label_issue_category: İleti kategorisi - label_issue_category_plural: İleti kategorileri + label_issue_category: İş kategorisi + label_issue_category_plural: İş kategorileri label_issue_category_new: Yeni kategori label_custom_field: Özel alan label_custom_field_plural: Özel alanlar @@ -374,21 +378,21 @@ label_information_plural: Bilgi label_please_login: Lütfen giriş yapın label_register: Kayıt - label_password_lost: Parolamı unuttum? + label_password_lost: Parolamı unuttum label_home: Anasayfa label_my_page: Kişisel Sayfam label_my_account: Hesabım label_my_projects: Projelerim label_administration: Yönetim - label_login: Gir + label_login: Giriş label_logout: Çıkış label_help: Yardım - label_reported_issues: Rapor edilmiş iletiler - label_assigned_to_me_issues: Bana atanmış iletiler + label_reported_issues: Rapor edilmiş işler + label_assigned_to_me_issues: Bana atanmış işler label_last_login: Son bağlantı - label_registered_on: Kayıtlı - label_activity: Faaliyet - label_overall_activity: Tüm aktiviteler + label_registered_on: Kayıt tarihi + label_activity: Etkinlik + label_overall_activity: Tüm etkinlikler label_new: Yeni label_logged_as: "Kullanıcı :" label_environment: Çevre @@ -401,14 +405,14 @@ label_list: Liste label_date: Tarih label_integer: Tam sayı - label_float: Noktalı sayı - label_boolean: Boolean + label_float: Ondalıklı sayı + label_boolean: "Evet/Hayır" label_string: Metin label_text: Uzun Metin label_attribute: Nitelik label_attribute_plural: Nitelikler - label_download: "%{count} indirilen" - label_download_plural: "%{count} indirilen" + label_download: "%{count} indirme" + label_download_plural: "%{count} indirme" label_no_data: Gösterilecek veri yok label_change_status: Değişim Durumu label_history: Geçmiş @@ -427,29 +431,29 @@ label_news_added: Haber eklendi label_settings: Ayarlar label_overview: Genel - label_version: Versiyon - label_version_new: Yeni versiyon - label_version_plural: Versiyonlar + label_version: Sürüm + label_version_new: Yeni sürüm + label_version_plural: Sürümler label_confirmation: Doğrulamama - label_export_to: 'Diğer uygun kaynaklar:' - label_read: Oku... + label_export_to: "Diğer uygun kaynaklar:" + label_read: "Oku..." label_public_projects: Genel Projeler label_open_issues: açık label_open_issues_plural: açık label_closed_issues: kapalı label_closed_issues_plural: kapalı label_x_open_issues_abbr_on_total: - zero: 0 open / %{total} - one: 1 open / %{total} - other: "%{count} open / %{total}" + zero: tamamı kapalı, toplam %{total} + one: 1'i' açık, toplam %{total} + other: "%{count} açık, toplam %{total}" label_x_open_issues_abbr: - zero: 0 open - one: 1 open - other: "%{count} open" + zero: hiç açık yok + one: 1 açık + other: "%{count} açık" label_x_closed_issues_abbr: - zero: 0 closed - one: 1 closed - other: "%{count} closed" + zero: hiç kapalı yok + one: 1 kapalı + other: "%{count} kapalı" label_total: Toplam label_permissions: İzinler label_current_status: Mevcut Durum @@ -460,25 +464,25 @@ label_next: Sonraki label_previous: Önceki label_used_by: 'Kullanan: ' - label_details: Detaylar - label_add_note: Bir not ekle + label_details: Ayrıntılar + label_add_note: Not ekle label_per_page: Sayfa başına label_calendar: Takvim - label_months_from: aylardan itibaren - label_gantt: Gantt + label_months_from: ay öncesinden itibaren + label_gantt: İş-Zaman Çizelgesi label_internal: Dahili label_last_changes: "Son %{count} değişiklik" label_change_view_all: Tüm Değişiklikleri gör label_personalize_page: Bu sayfayı kişiselleştir - label_comment: Açıklama - label_comment_plural: Açıklamalar + label_comment: Yorum + label_comment_plural: Yorumlar label_x_comments: - zero: no comments - one: 1 comment - other: "%{count} comments" - label_comment_add: Açıklama Ekle - label_comment_added: Açıklama Eklendi - label_comment_delete: Açıklamaları sil + zero: hiç yorum yok + one: 1 yorum + other: "%{count} yorum" + label_comment_add: Yorum Ekle + label_comment_added: Yorum Eklendi + label_comment_delete: Yorumları sil label_query: Özel Sorgu label_query_plural: Özel Sorgular label_query_new: Yeni Sorgu @@ -507,27 +511,27 @@ label_day_plural: Günler label_repository: Depo label_repository_plural: Depolar - label_browse: Tara + label_browse: Gözat label_modification: "%{count} değişim" label_modification_plural: "%{count} değişim" - label_revision: Revizyon - label_revision_plural: Revizyonlar - label_associated_revisions: Birleştirilmiş revizyonlar + label_revision: Değişiklik + label_revision_plural: Değişiklikler + label_associated_revisions: Birleştirilmiş değişiklikler label_added: eklendi label_modified: güncellendi label_deleted: silindi - label_latest_revision: En son revizyon - label_latest_revision_plural: En son revizyonlar - label_view_revisions: Revizyonları izle + label_latest_revision: En son değişiklik + label_latest_revision_plural: En son değişiklikler + label_view_revisions: Değişiklikleri izle label_max_size: En büyük boyut label_sort_highest: Üste taşı label_sort_higher: Yukarı taşı label_sort_lower: Aşağı taşı label_sort_lowest: Dibe taşı label_roadmap: Yol Haritası - label_roadmap_due_in: "Due in %{value}" + label_roadmap_due_in: "%{value} içinde bitmeli" label_roadmap_overdue: "%{value} geç" - label_roadmap_no_issues: Bu versiyon için ileti yok + label_roadmap_no_issues: Bu sürüm için iş yok label_search: Ara label_result_plural: Sonuçlar label_all_words: Tüm Kelimeler @@ -538,11 +542,11 @@ label_wiki_page_plural: Wiki sayfaları label_index_by_title: Başlığa göre diz label_index_by_date: Tarihe göre diz - label_current_version: Güncel versiyon + label_current_version: Güncel sürüm label_preview: Önizleme label_feed_plural: Beslemeler label_changes_details: Bütün değişikliklerin detayları - label_issue_tracking: İleti Takibi + label_issue_tracking: İş Takibi label_spent_time: Harcanan zaman label_f_hour: "%{value} saat" label_f_hour_plural: "%{value} saat" @@ -557,9 +561,9 @@ label_options: Tercihler label_copy_workflow_from: İşakışı kopyala label_permissions_report: İzin raporu - label_watched_issues: İzlenmiş iletiler - label_related_issues: İlişkili iletiler - label_applied_status: uygulanmış iletiler + label_watched_issues: İzlenmiş işler + label_related_issues: İlişkili işler + label_applied_status: uygulanmış işler label_loading: Yükleniyor... label_relation_new: Yeni ilişki label_relation_delete: İlişkiyi sil @@ -575,7 +579,7 @@ label_start_to_end: baştan sona label_stay_logged_in: Sürekli bağlı kal label_disabled: Devredışı - label_show_completed_versions: Tamamlanmış versiyonları göster + label_show_completed_versions: Tamamlanmış sürümleri göster label_me: Ben label_board: Tartışma Alanı label_board_new: Yeni alan @@ -592,7 +596,7 @@ label_week: Hafta label_date_from: Başlangıç label_date_to: Bitiş - label_language_based: Kullanıcı diline istinaden + label_language_based: Kullanıcı dili bazlı label_sort_by: "%{value} göre sırala" label_send_test_email: Test e-postası gönder label_feeds_access_key_created_on: "RSS erişim anahtarı %{value} önce oluşturuldu" @@ -604,12 +608,12 @@ label_changeset_plural: Değişiklik Listeleri label_default_columns: Varsayılan Sütunlar label_no_change_option: (Değişiklik yok) - label_bulk_edit_selected_issues: Seçili iletileri toplu düzenle + label_bulk_edit_selected_issues: Seçili işleri toplu olarak düzenle label_theme: Tema label_default: Varsayılan label_search_titles_only: Sadece başlıkları ara label_user_mail_option_all: "Tüm projelerimdeki herhangi bir olay için" - label_user_mail_option_selected: "Sadece seçili projelerdeki herhangi bir olay için..." + label_user_mail_option_selected: "Sadece seçili projelerdeki herhangi bir olay için" label_user_mail_no_self_notified: "Kendi yaptığım değişikliklerden haberdar olmak istemiyorum" label_registration_activation_by_email: e-posta ile hesap etkinleştirme label_registration_manual_activation: Elle hesap etkinleştirme @@ -619,7 +623,7 @@ label_change_properties: Özellikleri değiştir label_general: Genel label_more: Daha fazla - label_scm: KKY + label_scm: KY label_plugins: Eklentiler label_ldap_authentication: LDAP Denetimi label_downloads_abbr: D/L @@ -629,7 +633,7 @@ label_chronological_order: Tarih sırasına göre label_reverse_chronological_order: Ters tarih sırasına göre label_planning: Planlanıyor - + button_login: Giriş button_submit: Gönder button_save: Kaydet @@ -653,8 +657,8 @@ button_cancel: İptal button_activate: Etkinleştir button_sort: Sırala - button_log_time: Günlük zamanı - button_rollback: Bu versiyone geri al + button_log_time: Zaman kaydı + button_rollback: Bu sürüme geri al button_watch: İzle button_unwatch: İzlemeyi iptal et button_reply: Cevapla @@ -664,20 +668,20 @@ button_rename: Yeniden adlandır button_change_password: Parolayı değiştir button_copy: Kopyala - button_annotate: Revizyon geçmişine göre göster + button_annotate: Değişiklik geçmişine göre göster button_update: Güncelle button_configure: Yapılandır - + status_active: faal status_registered: kayıtlı status_locked: kilitli - + text_select_mail_notifications: Gönderilecek e-posta uyarısına göre hareketi seçin. - text_regexp_info: eg. ^[A-Z0-9]+$ + text_regexp_info: örn. ^[A-Z0-9]+$ text_min_max_length_info: 0 sınırlama yok demektir text_project_destroy_confirmation: Bu projeyi ve bağlantılı verileri silmek istediğinizden emin misiniz? text_subprojects_destroy_warning: "Ayrıca %{value} alt proje silinecek." - text_workflow_edit: İşakışını düzenlemek için bir rol ve takipçi seçin + text_workflow_edit: İşakışını düzenlemek için bir rol ve iş tipi seçin text_are_you_sure: Emin misiniz ? text_tip_issue_begin_day: Bugün başlayan görevler text_tip_issue_end_day: Bugün sona eren görevler @@ -686,41 +690,41 @@ text_caracters_maximum: "En çok %{count} karakter." text_caracters_minimum: "En az %{count} karakter uzunluğunda olmalı." text_length_between: "%{min} ve %{max} karakterleri arasındaki uzunluk." - text_tracker_no_workflow: Bu takipçi için işakışı tanımlanmamış + text_tracker_no_workflow: Bu iş tipi için işakışı tanımlanmamış text_unallowed_characters: Yasaklı karakterler - text_comma_separated: Çoklu değer uygundur(Virgül ile ayrılmış). - text_issues_ref_in_commit_messages: Teslim mesajlarındaki iletileri çözme ve başvuruda bulunma - text_issue_added: "İleti %{id}, %{author} tarafından rapor edildi." - text_issue_updated: "İleti %{id}, %{author} tarafından güncellendi." + text_comma_separated: Çoklu değer girilebilir(Virgül ile ayrılmış). + text_issues_ref_in_commit_messages: Teslim mesajlarındaki işleri çözme ve başvuruda bulunma + text_issue_added: "İş %{id}, %{author} tarafından rapor edildi." + text_issue_updated: "İş %{id}, %{author} tarafından güncellendi." text_wiki_destroy_confirmation: bu wikiyi ve tüm içeriğini silmek istediğinizden emin misiniz? - text_issue_category_destroy_question: "Bazı iletiler (%{count}) bu kategoriye atandı. Ne yapmak istersiniz?" + text_issue_category_destroy_question: "Bazı işler (%{count}) bu kategoriye atandı. Ne yapmak istersiniz?" text_issue_category_destroy_assignments: Kategori atamalarını kaldır - text_issue_category_reassign_to: İletileri bu kategoriye tekrar ata - text_user_mail_option: "Seçili olmayan projeler için, sadece dahil olduğunuz ya da izlediğiniz öğeler hakkında uyarılar alacaksınız (örneğin,yazarı veya atandığınız iletiler)." - text_no_configuration_data: "Roller, takipçiler, ileti durumları ve işakışı henüz yapılandırılmadı.\nVarsayılan yapılandırılmanın yüklenmesi şiddetle tavsiye edilir. Bir kez yüklendiğinde yapılandırmayı değiştirebileceksiniz." + text_issue_category_reassign_to: İşleri bu kategoriye tekrar ata + text_user_mail_option: "Seçili olmayan projeler için, sadece dahil olduğunuz ya da izlediğiniz öğeler hakkında uyarılar alacaksınız (örneğin,yazarı veya atandığınız işler)." + text_no_configuration_data: "Roller, iş tipleri, iş durumları ve işakışı henüz yapılandırılmadı.\nVarsayılan yapılandırılmanın yüklenmesi şiddetle tavsiye edilir. Bir kez yüklendiğinde yapılandırmayı değiştirebileceksiniz." text_load_default_configuration: Varsayılan yapılandırmayı yükle text_status_changed_by_changeset: "Değişiklik listesi %{value} içinde uygulandı." - text_issues_destroy_confirmation: 'Seçili iletileri silmek istediğinizden emin misiniz ?' + text_issues_destroy_confirmation: 'Seçili işleri silmek istediğinizden emin misiniz ?' text_select_project_modules: 'Bu proje için etkinleştirmek istediğiniz modülleri seçin:' text_default_administrator_account_changed: Varsayılan yönetici hesabı değişti text_file_repository_writable: Dosya deposu yazılabilir text_rmagick_available: RMagick Kullanılabilir (isteğe bağlı) - text_destroy_time_entries_question: Silmek üzere olduğunuz iletiler üzerine %{hours} saat raporlandı.Ne yapmak istersiniz ? - text_destroy_time_entries: Raporlanmış saatleri sil - text_assign_time_entries_to_project: Raporlanmış saatleri projeye ata - text_reassign_time_entries: 'Raporlanmış saatleri bu iletiye tekrar ata:' - + text_destroy_time_entries_question: Silmek üzere olduğunuz işler üzerine %{hours} saat raporlandı.Ne yapmak istersiniz ? + text_destroy_time_entries: Raporlanmış süreleri sil + text_assign_time_entries_to_project: Raporlanmış süreleri projeye ata + text_reassign_time_entries: 'Raporlanmış süreleri bu işe tekrar ata:' + default_role_manager: Yönetici default_role_developer: Geliştirici default_role_reporter: Raporlayıcı default_tracker_bug: Hata - default_tracker_feature: ÖZellik + default_tracker_feature: Özellik default_tracker_support: Destek default_issue_status_new: Yeni - default_issue_status_in_progress: In Progress + default_issue_status_in_progress: Yapılıyor default_issue_status_resolved: Çözüldü default_issue_status_feedback: Geribildirim - default_issue_status_closed: Kapatıldı + default_issue_status_closed: "Kapatıldı" default_issue_status_rejected: Reddedildi default_doc_category_user: Kullanıcı Dökümantasyonu default_doc_category_tech: Teknik Dökümantasyon @@ -730,232 +734,264 @@ default_priority_urgent: Acil default_priority_immediate: Derhal default_activity_design: Tasarım - default_activity_development: Geliştirim - - enumeration_issue_priorities: İleti önceliği + default_activity_development: Geliştirme + + enumeration_issue_priorities: İş önceliği enumeration_doc_categories: Belge Kategorileri enumeration_activities: Faaliyetler (zaman takibi) - button_quote: Quote - setting_enabled_scm: Enabled SCM - label_incoming_emails: Incoming emails - label_generate_key: Generate a key - setting_sequential_project_identifiers: Generate sequential project identifiers - field_parent_title: Parent page + button_quote: Alıntı + setting_enabled_scm: KKY Açık + label_incoming_emails: "Gelen e-postalar" + label_generate_key: "Anahtar oluştur" + setting_sequential_project_identifiers: "Sıralı proje tanımlayıcıları oluştur" + field_parent_title: Üst sayfa text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - label_issue_watchers: Watchers - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - label_duplicated_by: duplicated by - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_user_wrote: "%{value} wrote:" - setting_mail_handler_api_enabled: Enable WS for incoming emails - label_and_its_subprojects: "%{value} and its subprojects" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - setting_mail_handler_api_key: API key - setting_commit_logs_encoding: Commit messages encoding + text_enumeration_category_reassign_to: 'Hepsini şuna çevir:' + label_issue_watchers: Takipçiler + mail_body_reminder: "Size atanmış olan %{count} iş %{days} gün içerisinde bitirilmeli:" + label_duplicated_by: yineleyen + text_enumeration_destroy_question: "Bu nesneye %{count} değer bağlanmış." + text_user_wrote: "%{value} demiş ki:" + setting_mail_handler_api_enabled: Gelen e-postalar için WS'yi aç + label_and_its_subprojects: "%{value} ve alt projeleri" + mail_subject_reminder: "%{count} iş bir kaç güne bitecek" + setting_mail_handler_api_key: API anahtarı + setting_commit_logs_encoding: Gönderim mesajlarının kodlaması (UTF-8 vs.) general_csv_decimal_separator: '.' - notice_unable_delete_version: Unable to delete version - label_renamed: renamed - label_copied: copied - setting_plain_text_mail: plain text only (no HTML) - permission_view_files: View files - permission_edit_issues: Edit issues - permission_edit_own_time_entries: Edit own time logs - permission_manage_public_queries: Manage public queries - permission_add_issues: Add issues - permission_log_time: Log spent time - permission_view_changesets: View changesets - permission_view_time_entries: View spent time - permission_manage_versions: Manage versions - permission_manage_wiki: Manage wiki - permission_manage_categories: Manage issue categories - permission_protect_wiki_pages: Protect wiki pages - permission_comment_news: Comment news - permission_delete_messages: Delete messages - permission_select_project_modules: Select project modules - permission_manage_documents: Manage documents - permission_edit_wiki_pages: Edit wiki pages - permission_add_issue_watchers: Add watchers - permission_view_gantt: View gantt chart - permission_move_issues: Move issues - permission_manage_issue_relations: Manage issue relations - permission_delete_wiki_pages: Delete wiki pages - permission_manage_boards: Manage boards - permission_delete_wiki_pages_attachments: Delete attachments - permission_view_wiki_edits: View wiki history - permission_add_messages: Post messages - permission_view_messages: View messages - permission_manage_files: Manage files - permission_edit_issue_notes: Edit notes - permission_manage_news: Manage news - permission_view_calendar: View calendrier - permission_manage_members: Manage members - permission_edit_messages: Edit messages - permission_delete_issues: Delete issues - permission_view_issue_watchers: View watchers list - permission_manage_repository: Manage repository - permission_commit_access: Commit access - permission_browse_repository: Browse repository - permission_view_documents: View documents - permission_edit_project: Edit project - permission_add_issue_notes: Add notes - permission_save_queries: Save queries - permission_view_wiki_pages: View wiki - permission_rename_wiki_pages: Rename wiki pages - permission_edit_time_entries: Edit time logs - permission_edit_own_issue_notes: Edit own notes - setting_gravatar_enabled: Use Gravatar user icons - label_example: Example + notice_unable_delete_version: Sürüm silinemiyor + label_renamed: yeniden adlandırılmış + label_copied: kopyalanmış + setting_plain_text_mail: sadece düz metin (HTML yok) + permission_view_files: Dosyaları görme + permission_edit_issues: İşleri düzenleme + permission_edit_own_time_entries: Kendi zaman girişlerini düzenleme + permission_manage_public_queries: Herkese açık sorguları yönetme + permission_add_issues: İş ekleme + permission_log_time: Harcanan zamanı kaydetme + permission_view_changesets: Değişimleri görme(SVN, vs.) + permission_view_time_entries: Harcanan zamanı görme + permission_manage_versions: Sürümleri yönetme + permission_manage_wiki: Wiki'yi yönetme + permission_manage_categories: İş kategorilerini yönetme + permission_protect_wiki_pages: Wiki sayfalarını korumaya alma + permission_comment_news: Haberlere yorum yapma + permission_delete_messages: Mesaj silme + permission_select_project_modules: Proje modüllerini seçme + permission_manage_documents: Belgeleri yönetme + permission_edit_wiki_pages: Wiki sayfalarını düzenleme + permission_add_issue_watchers: Takipçi ekleme + permission_view_gantt: İş-Zaman çizelgesi görme + permission_move_issues: İşlerin yerini değiştirme + permission_manage_issue_relations: İşlerin biribiriyle bağlantılarını yönetme + permission_delete_wiki_pages: Wiki sayfalarını silme + permission_manage_boards: Panoları yönetme + permission_delete_wiki_pages_attachments: Ekleri silme + permission_view_wiki_edits: Wiki geçmişini görme + permission_add_messages: Mesaj gönderme + permission_view_messages: Mesajları görme + permission_manage_files: Dosyaları yönetme + permission_edit_issue_notes: Notları düzenleme + permission_manage_news: Haberleri yönetme + permission_view_calendar: Takvimleri görme + permission_manage_members: Üyeleri yönetme + permission_edit_messages: Mesajları düzenleme + permission_delete_issues: İşleri silme + permission_view_issue_watchers: Takipçi listesini görme + permission_manage_repository: Depo yönetimi + permission_commit_access: Gönderme erişimi + permission_browse_repository: Depoya gözatma + permission_view_documents: Belgeleri görme + permission_edit_project: Projeyi düzenleme + permission_add_issue_notes: Not ekleme + permission_save_queries: Sorgu kaydetme + permission_view_wiki_pages: Wiki görme + permission_rename_wiki_pages: Wiki sayfasının adını değiştirme + permission_edit_time_entries: Zaman kayıtlarını düzenleme + permission_edit_own_issue_notes: Kendi notlarını düzenleme + setting_gravatar_enabled: Kullanıcı resimleri için Gravatar kullan + label_example: Örnek text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - permission_edit_own_messages: Edit own messages - permission_delete_own_messages: Delete own messages - label_user_activity: "%{value}'s activity" - label_updated_time_by: "Updated by %{author} %{age} ago" - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - setting_diff_max_lines_displayed: Max number of diff lines displayed - text_plugin_assets_writable: Plugin assets directory writable - warning_attachments_not_saved: "%{count} file(s) could not be saved." - button_create_and_continue: Create and continue - text_custom_field_possible_values_info: 'One line for each value' - label_display: Display - field_editable: Editable - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_file_max_size_displayed: Max size of text files displayed inline - field_watcher: Watcher - setting_openid: Allow OpenID login and registration + permission_edit_own_messages: Kendi mesajlarını düzenleme + permission_delete_own_messages: Kendi mesajlarını silme + label_user_activity: "%{value} kullanıcısının etkinlikleri" + label_updated_time_by: "%{author} tarafından %{age} önce güncellendi" + text_diff_truncated: '... Bu fark tam olarak gösterilemiyor çünkü gösterim için ayarlanmış üst sınırı aşıyor.' + setting_diff_max_lines_displayed: Gösterilebilecek maksimumu fark satırı + text_plugin_assets_writable: Eklenti yardımcı dosya dizini yazılabilir + warning_attachments_not_saved: "%{count} adet dosya kaydedilemedi." + button_create_and_continue: Oluştur ve devam et + text_custom_field_possible_values_info: 'Her değer için bir satır' + label_display: Göster + field_editable: Düzenlenebilir + setting_repository_log_display_limit: Dosya kaydında gösterilecek maksimum değişim sayısı + setting_file_max_size_displayed: Dahili olarak gösterilecek metin dosyaları için maksimum satır sayısı + field_watcher: Takipçi + setting_openid: Kayıt ve giriş için OpenID'ye izin ver field_identity_url: OpenID URL - label_login_with_open_id_option: or login with OpenID - field_content: Content - label_descending: Descending - label_sort: Sort - label_ascending: Ascending - label_date_from_to: From %{start} to %{end} + label_login_with_open_id_option: veya OpenID kullanın + field_content: İçerik + label_descending: Azalan + label_sort: Sırala + label_ascending: Artan + label_date_from_to: "%{start} - %{end} arası" label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do? - text_wiki_page_reassign_children: Reassign child pages to this parent page - text_wiki_page_nullify_children: Keep child pages as root pages - text_wiki_page_destroy_children: Delete child pages and all their descendants - setting_password_min_length: Minimum password length - field_group_by: Group results by - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - label_wiki_content_added: Wiki page added - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}. - label_wiki_content_updated: Wiki page updated - mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}. - permission_add_project: Create project - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - label_view_all_revisions: View all revisions - label_tag: Tag - label_branch: Branch - error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. - error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses"). - label_group_plural: Groups - label_group: Group - label_group_new: New group - label_time_entry_plural: Spent time - text_journal_changed: "%{label} changed from %{old} to %{new}" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} deleted (%{old})" - text_journal_added: "%{label} %{value} added" - field_active: Active - enumeration_system_activity: System Activity - permission_delete_issue_watchers: Delete watchers - version_status_closed: closed - version_status_locked: locked - version_status_open: open - error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened - label_user_anonymous: Anonymous - button_move_and_follow: Move and follow - setting_default_projects_modules: Default enabled modules for new projects - setting_gravatar_default: Default Gravatar image - field_sharing: Sharing - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_system: With all projects - label_version_sharing_descendants: With subprojects - label_version_sharing_tree: With project tree - label_version_sharing_none: Not shared - error_can_not_archive_project: This project can not be archived - button_duplicate: Duplicate - button_copy_and_follow: Copy and follow - label_copy_source: Source - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_status: Use the issue status - error_issue_done_ratios_not_updated: Issue done ratios not updated. - error_workflow_copy_target: Please select target tracker(s) and role(s) - setting_issue_done_ratio_issue_field: Use the issue field - label_copy_same_as_target: Same as target - label_copy_target: Target - notice_issue_done_ratios_updated: Issue done ratios updated. - error_workflow_copy_source: Please select a source tracker or role - label_update_issue_done_ratios: Update issue done ratios - setting_start_of_week: Start calendars on - permission_view_issues: View Issues - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_revision_id: Revision %{value} - label_api_access_key: API access key - label_api_access_key_created_on: API access key created %{value} ago - label_feeds_access_key: RSS access key - notice_api_access_key_reseted: Your API access key was reset. - setting_rest_api_enabled: Enable REST web service - label_missing_api_access_key: Missing an API access key - label_missing_feeds_access_key: Missing a RSS access key - button_show: Show - text_line_separated: Multiple values allowed (one line for each value). - setting_mail_handler_body_delimiters: Truncate emails after one of these lines - permission_add_subprojects: Create subprojects - label_subproject_new: New subproject - text_own_membership_delete_confirmation: |- - You are about to remove some or all of your permissions and may no longer be able to edit this project after that. - Are you sure you want to continue? - label_close_versions: Close completed versions - label_board_sticky: Sticky - label_board_locked: Locked - permission_export_wiki_pages: Export wiki pages - setting_cache_formatted_text: Cache formatted text - permission_manage_project_activities: Manage project activities - error_unable_delete_issue_status: Unable to delete issue status - label_profile: Profile - permission_manage_subtasks: Manage subtasks - field_parent_issue: Parent task - label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - error_can_not_delete_custom_field: Unable to delete custom field - error_unable_to_connect: Unable to connect (%{value}) - error_can_not_remove_role: This role is in use and can not be deleted. - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar + text_wiki_page_destroy_question: Bu sayfanın %{descendants} adet alt sayfası var. Ne yapmak istersiniz? + text_wiki_page_reassign_children: Alt sayfaları bu sayfanın altına bağla + text_wiki_page_nullify_children: Alt sayfaları ana sayfa olarak sakla + text_wiki_page_destroy_children: Alt sayfaları ve onların alt sayfalarını tamamen sil + setting_password_min_length: Minimum parola uzunluğu + field_group_by: Sonuçları grupla + mail_subject_wiki_content_updated: "'%{id}' wiki sayfası güncellendi" + label_wiki_content_added: Wiki sayfası eklendi + mail_subject_wiki_content_added: "'%{id}' wiki sayfası eklendi" + mail_body_wiki_content_added: "'%{id}' wiki sayfası, %{author} tarafından eklendi." + label_wiki_content_updated: Wiki sayfası güncellendi + mail_body_wiki_content_updated: "'%{id}' wiki sayfası, %{author} tarafından güncellendi." + permission_add_project: Proje oluştur + setting_new_project_user_role_id: Yönetici olmayan ancak proje yaratabilen kullanıcıya verilen rol + label_view_all_revisions: Tüm değişiklikleri gör + label_tag: Etiket + label_branch: Kol + error_no_tracker_in_project: Bu projeye bağlanmış bir iş tipi yok. Lütfen proje ayarlarını kontrol edin. + error_no_default_issue_status: Varsayılan iş durumu tanımlanmamış. Lütfen ayarlarınızı kontrol edin ("Yönetim -> İş durumları" sayfasına gidin). + label_group_plural: Gruplar + label_group: Grup + label_group_new: Yeni grup + label_time_entry_plural: Harcanan zaman + text_journal_changed: "%{label}: %{old} -> %{new}" + text_journal_set_to: "%{label} %{value} yapıldı" + text_journal_deleted: "%{label} silindi (%{old})" + text_journal_added: "%{label} %{value} eklendi" + field_active: Etkin + enumeration_system_activity: Sistem Etkinlikleri + permission_delete_issue_watchers: İzleyicileri sil + version_status_closed: kapalı + version_status_locked: kilitli + version_status_open: açık + error_can_not_reopen_issue_on_closed_version: Kapatılmış bir sürüme ait işler tekrar açılamaz + label_user_anonymous: Anonim + button_move_and_follow: Yerini değiştir ve takip et + setting_default_projects_modules: Yeni projeler için varsayılan modüller + setting_gravatar_default: Varsayılan Gravatar resmi + field_sharing: Paylaşım + label_version_sharing_hierarchy: Proje hiyerarşisi ile + label_version_sharing_system: Tüm projeler ile + label_version_sharing_descendants: Alt projeler ile + label_version_sharing_tree: Proje ağacı ile + label_version_sharing_none: Paylaşılmamış + error_can_not_archive_project: Bu proje arşivlenemez + button_duplicate: Yinele + button_copy_and_follow: Kopyala ve takip et + label_copy_source: Kaynak + setting_issue_done_ratio: İş tamamlanma oranını şununla hesapla + setting_issue_done_ratio_issue_status: İş durumunu kullan + error_issue_done_ratios_not_updated: İş tamamlanma oranları güncellenmedi. + error_workflow_copy_target: Lütfen hedef iş tipi ve rolleri seçin + setting_issue_done_ratio_issue_field: İşteki alanı kullan + label_copy_same_as_target: Hedef ile aynı + label_copy_target: Hedef + notice_issue_done_ratios_updated: İş tamamlanma oranları güncellendi. + error_workflow_copy_source: Lütfen kaynak iş tipi ve rolleri seçin + label_update_issue_done_ratios: İş tamamlanma oranlarını güncelle + setting_start_of_week: Takvimleri şundan başlat + permission_view_issues: İşleri Gör + label_display_used_statuses_only: Sadece bu iş tipi tarafından kullanılan durumları göster + label_revision_id: Değişiklik %{value} + label_api_access_key: API erişim anahtarı + label_api_access_key_created_on: API erişim anahtarı %{value} önce oluşturuldu + label_feeds_access_key: RSS erişim anahtarı + notice_api_access_key_reseted: API erişim anahtarınız sıfırlandı. + setting_rest_api_enabled: REST web servisini etkinleştir + label_missing_api_access_key: Bir API erişim anahtarı eksik + label_missing_feeds_access_key: Bir RSS erişim anahtarı eksik + button_show: Göster + text_line_separated: Çoklu değer girilebilir (her satıra bir değer). + setting_mail_handler_body_delimiters: Şu satırların birinden sonra e-postayı sonlandır + permission_add_subprojects: Alt proje yaratma + label_subproject_new: Yeni alt proje + text_own_membership_delete_confirmation: "Projeyi daha sonra düzenleyememenize sebep olacak bazı yetkilerinizi kaldırmak üzeresiniz.\nDevam etmek istediğinize emin misiniz?" + label_close_versions: Tamamlanmış sürümleri kapat + label_board_sticky: Yapışkan + label_board_locked: Kilitli + permission_export_wiki_pages: Wiki sayfalarını dışarı aktar + setting_cache_formatted_text: Biçimlendirilmiş metni önbelleğe al + permission_manage_project_activities: Proje etkinliklerini yönetme + error_unable_delete_issue_status: İş durumu silinemiyor + label_profile: Profil + permission_manage_subtasks: Alt işleri yönetme + field_parent_issue: Üst iş + label_subtask_plural: Alt işler + label_project_copy_notifications: Proje kopyalaması esnasında bilgilendirme e-postaları gönder + error_can_not_delete_custom_field: Özel alan silinemiyor + error_unable_to_connect: Bağlanılamıyor (%{value}) + error_can_not_remove_role: Bu rol kullanımda olduğundan silinemez. + error_can_not_delete_tracker: Bu iş tipi içerisinde iş barındırdığından silinemiyor. + field_principal: Temel + label_my_page_block: Kişisel sayfa bloğum + notice_failed_to_save_members: "Üyeler kaydedilemiyor: %{errors}." + text_zoom_out: Uzaklaş + text_zoom_in: Yakınlaş + notice_unable_delete_time_entry: Zaman kayıt girdisi silinemiyor. + label_overall_spent_time: Toplam harcanan zaman + field_time_entries: Zaman Kayıtları + project_module_gantt: İş-Zaman Çizelgesi + project_module_calendar: Takvim button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time + text_are_you_sure_with_children: İş, tüm alt işlerle birlikte silinsin mi? + field_text: Metin alanı + label_user_mail_option_only_owner: Sadece sahibi olduğum şeyler için + setting_default_notification_option: Varsayılan bildirim seçeneği + label_user_mail_option_only_my_events: Sadece takip ettiğim ya da içinde olduğum şeyler için + label_user_mail_option_only_assigned: Sadece bana atanan şeyler için + label_user_mail_option_none: Hiç bir şey için + field_member_of_group: Atananın grubu + field_assigned_to_role: Atananın rolü + notice_not_authorized_archived_project: Erişmeye çalıştığınız proje arşive kaldırılmış. + label_principal_search: "Kullanıcı ya da grup ara:" + label_user_search: "Kullanıcı ara:" + field_visible: Görünür + setting_emails_header: "E-Posta başlığı" + setting_commit_logtime_activity_id: Kaydedilen zaman için etkinlik text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging + setting_commit_logtime_enabled: Zaman kaydını etkinleştir notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + setting_gantt_items_limit: İş-Zaman çizelgesinde gösterilecek en fazla öğe sayısı + field_warn_on_leaving_unsaved: Kaydedilmemiş metin bulunan bir sayfadan çıkarken beni uyar + text_warn_on_leaving_unsaved: Bu sayfada terkettiğiniz takdirde kaybolacak kaydedilmemiş metinler var. + label_my_queries: Özel sorgularım + text_journal_changed_no_detail: "%{label} güncellendi" + label_news_comment_added: Bir habere yorum eklendi + button_expand_all: Tümünü genişlet + button_collapse_all: Tümünü daralt + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Seçilen zaman kayıtlarını toplu olarak düzenle + text_time_entries_destroy_confirmation: Seçilen zaman kaydını/kayıtlarını silmek istediğinize emin misiniz? + label_role_anonymous: Anonim + label_role_non_member: Üye Değil + label_issue_note_added: Not eklendi + label_issue_status_updated: Durum güncellendi + label_issue_priority_updated: Öncelik güncellendi + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: İşlerin görünürlüğü + label_issues_visibility_all: Tüm işler + permission_set_own_issues_private: Set own issues public or private + field_is_private: Özel + permission_set_issues_private: İşleri özel ya da genel olarak işaretleme + label_issues_visibility_public: Özel olmayan tüm işler + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Yol kodlaması(encoding) + text_scm_path_encoding_note: "Varsayılan: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Ana dizin + field_cvs_module: Modül + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Komut + text_scm_command_version: Sürüm + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/uk.yml.svn-base --- a/config/locales/.svn/text-base/uk.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/uk.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -232,7 +235,7 @@ field_attr_mail: Атрибут Email field_onthefly: Створення користувача на льоту field_start_date: Початок - field_done_ratio: % зроблено + field_done_ratio: "% зроблено" field_auth_source: Режим аутентифікації field_hide_mail: Приховувати мій email field_comments: Коментар @@ -728,7 +731,6 @@ text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers - setting_commit_logs_encoding: Commit messages encoding button_quote: Quote setting_sequential_project_identifiers: Generate sequential project identifiers notice_unable_delete_version: Unable to delete version @@ -936,3 +938,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/vi.yml.svn-base --- a/config/locales/.svn/text-base/vi.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/vi.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -158,7 +158,10 @@ month_names: [~, "Tháng một", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mười", "Tháng mười một", "Tháng mười hai"] abbr_month_names: [~, "Tháng một", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mười", "Tháng mười một", "Tháng mười hai"] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -344,7 +347,6 @@ setting_cross_project_issue_relations: Cho phép quan hệ chéo giữa các dự án setting_issue_list_default_columns: Default columns displayed on the issue list setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding setting_emails_footer: Chữ ký cuối thư setting_protocol: Giao thức setting_per_page_options: Objects per page options @@ -991,3 +993,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/zh-TW.yml.svn-base --- a/config/locales/.svn/text-base/zh-TW.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/zh-TW.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -20,7 +20,10 @@ month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] # 使用於 date_select 與 datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -177,7 +180,7 @@ greater_than_start_date: "必須在開始日期之後" not_same_project: "不屬於同一個專案" circular_dependency: "這個關聯會導致環狀相依" - cant_link_an_issue_with_a_descendant: "項目無法被連結至自己的子項目" + cant_link_an_issue_with_a_descendant: "項目無法被連結至自己的子任務" # You can define own errors for models or model attributes. # The values :model, :attribute and :value are always available for interpolation. @@ -251,9 +254,9 @@ notice_gantt_chart_truncated: "由於項目數量超過可顯示數量的最大值 (%{max}),故此甘特圖尾部已被截斷" error_can_t_load_default_data: "無法載入預設組態: %{value}" - error_scm_not_found: "在 SCM 儲存庫中找不到這個項目或版次。" - error_scm_command_failed: "嘗試存取 SCM 儲存庫時發生錯誤: %{value}" - error_scm_annotate: "SCM 儲存庫中無此項目或此項目無法被加註。" + error_scm_not_found: "在儲存機制中找不到這個項目或修訂版。" + error_scm_command_failed: "嘗試存取儲存機制時發生錯誤: %{value}" + error_scm_annotate: "項目不存在或項目無法被加上附註。" error_issue_not_found_in_project: '該項目不存在或不屬於此專案' error_no_tracker_in_project: '此專案尚未指定追蹤標籤。請檢查專案的設定資訊。' error_no_default_issue_status: '尚未定義項目狀態的預設值。請您前往「網站管理」->「項目狀態清單」頁面,檢查相關組態設定。' @@ -353,7 +356,7 @@ field_done_ratio: 完成百分比 field_auth_source: 認證模式 field_hide_mail: 隱藏我的電子郵件 - field_comments: 註解 + field_comments: 回應 field_url: 網址 field_start_page: 首頁 field_subproject: 子專案 @@ -372,7 +375,7 @@ field_time_zone: 時區 field_searchable: 可用做搜尋條件 field_default_value: 預設值 - field_comments_sorting: 註解排序 + field_comments_sorting: 回應排序 field_parent_title: 父頁面 field_editable: 可編輯 field_watcher: 觀察者 @@ -380,11 +383,20 @@ field_content: 內容 field_group_by: 結果分組方式 field_sharing: 共用 - field_parent_issue: 父工作項目 + field_parent_issue: 父任務 field_member_of_group: "被指派者的群組" field_assigned_to_role: "被指派者的角色" field_text: 內容文字 field_visible: 可被看見 + field_warn_on_leaving_unsaved: "提醒我將要離開的頁面中尚有未儲存的資料" + field_issues_visibility: 項目可見度 + field_is_private: 私人 + field_commit_logs_encoding: 認可訊息編碼 + field_scm_path_encoding: 路徑編碼 + field_path_to_repository: 儲存機制路徑 + field_root_directory: 根資料夾 + field_cvsroot: CVSROOT + field_cvs_module: 模組 setting_app_title: 標題 setting_app_subtitle: 副標題 @@ -401,18 +413,17 @@ setting_text_formatting: 文字格式 setting_wiki_compression: 壓縮 Wiki 歷史文章 setting_feeds_limit: RSS 新聞限制 - setting_autofetch_changesets: 自動取得送交版次 + setting_autofetch_changesets: 自動擷取認可 setting_default_projects_public: 新建立之專案預設為「公開」 - setting_sys_api_enabled: 啟用管理版本庫之網頁服務 (Web Service) - setting_commit_ref_keywords: 送交用於參照項目之關鍵字 - setting_commit_fix_keywords: 送交用於修正項目之關鍵字 + setting_sys_api_enabled: 啟用管理儲存機制的網頁服務 (Web Service) + setting_commit_ref_keywords: 認可用於參照項目之關鍵字 + setting_commit_fix_keywords: 認可用於修正項目之關鍵字 setting_autologin: 自動登入 setting_date_format: 日期格式 setting_time_format: 時間格式 setting_cross_project_issue_relations: 允許關聯至其它專案的項目 setting_issue_list_default_columns: 預設顯示於項目清單的欄位 setting_repositories_encodings: 版本庫編碼 - setting_commit_logs_encoding: 送交訊息編碼 setting_emails_header: 電子郵件前頭說明 setting_emails_footer: 電子郵件附帶說明 setting_protocol: 協定 @@ -429,7 +440,7 @@ setting_gravatar_default: 預設全球認證大頭像圖片 setting_diff_max_lines_displayed: 差異顯示行數之最大值 setting_file_max_size_displayed: 檔案內容顯示大小之最大值 - setting_repository_log_display_limit: 版次顯示數目之最大值 + setting_repository_log_display_limit: 修訂版顯示數目之最大值 setting_openid: 允許使用 OpenID 登入與註冊 setting_password_min_length: 密碼最小長度 setting_new_project_user_role_id: 管理者以外之用戶建立新專案時,將被指派的角色 @@ -441,7 +452,7 @@ setting_rest_api_enabled: 啟用 REST 網路服務技術(Web Service) setting_cache_formatted_text: 快取已格式化文字 setting_default_notification_option: 預設通知選項 - setting_commit_logtime_enabled: 啟用送交中的時間記錄 + setting_commit_logtime_enabled: 啟用認可中的時間記錄 setting_commit_logtime_activity_id: 時間記錄對應的活動 setting_gantt_items_limit: 甘特圖中項目顯示數量的最大值 @@ -457,6 +468,8 @@ permission_add_issues: 新增項目 permission_edit_issues: 編輯項目 permission_manage_issue_relations: 管理項目關聯 + permission_set_issues_private: 設定項目為公開或私人 + permission_set_own_issues_private: 設定自己的項目為公開或私人 permission_add_issue_notes: 新增筆記 permission_edit_issue_notes: 編輯筆記 permission_edit_own_issue_notes: 編輯自己的筆記 @@ -474,7 +487,7 @@ permission_edit_time_entries: 編輯工時紀錄 permission_edit_own_time_entries: 編輯自己的工時記錄 permission_manage_news: 管理新聞 - permission_comment_news: 註解新聞 + permission_comment_news: 回應新聞 permission_manage_documents: 管理文件 permission_view_documents: 檢視文件 permission_manage_files: 管理檔案 @@ -487,10 +500,10 @@ permission_edit_wiki_pages: 編輯 wiki 頁面 permission_delete_wiki_pages_attachments: 刪除附件 permission_protect_wiki_pages: 專案 wiki 頁面 - permission_manage_repository: 管理版本庫 - permission_browse_repository: 瀏覽版本庫 + permission_manage_repository: 管理儲存機制 + permission_browse_repository: 瀏覽儲存機制 permission_view_changesets: 檢視變更集 - permission_commit_access: 存取送交之變更 + permission_commit_access: 存取認可 permission_manage_boards: 管理討論版 permission_view_messages: 檢視訊息 permission_add_messages: 新增訊息 @@ -499,7 +512,7 @@ permission_delete_messages: 刪除訊息 permission_delete_own_messages: 刪除自己的訊息 permission_export_wiki_pages: 匯出 wiki 頁面 - permission_manage_subtasks: 管理子工作項目 + permission_manage_subtasks: 管理子任務 project_module_issue_tracking: 項目追蹤 project_module_time_tracking: 工時追蹤 @@ -532,6 +545,9 @@ label_issues_by: "項目按 %{value} 分組顯示" label_issue_added: 項目已新增 label_issue_updated: 項目已更新 + label_issue_note_added: 筆記已新增 + label_issue_status_updated: 狀態已更新 + label_issue_priority_updated: 優先權已更新 label_document: 文件 label_document_new: 建立新文件 label_document_plural: 文件 @@ -540,6 +556,8 @@ label_role_plural: 角色 label_role_new: 建立新角色 label_role_and_permissions: 角色與權限 + label_role_anonymous: 匿名者 + label_role_non_member: 非會員 label_member: 成員 label_member_new: 建立新成員 label_member_plural: 成員 @@ -618,6 +636,7 @@ label_news_latest: 最近新聞 label_news_view_all: 檢視全部的新聞 label_news_added: 新聞已新增 + label_news_comment_added: 回應已加入新聞 label_settings: 設定 label_overview: 概觀 label_version: 版本 @@ -664,18 +683,19 @@ label_last_changes: "最近 %{count} 個變更" label_change_view_all: 檢視全部的變更 label_personalize_page: 自訂版面 - label_comment: 註解 - label_comment_plural: 註解 + label_comment: 回應 + label_comment_plural: 回應 label_x_comments: - zero: 無註解 - one: 1 個註解 - other: "%{count} 個註解" - label_comment_add: 加入新註解 - label_comment_added: 新註解已加入 - label_comment_delete: 刪除註解 + zero: 無回應 + one: 1 個回應 + other: "%{count} 個回應" + label_comment_add: 加入新回應 + label_comment_added: 新回應已加入 + label_comment_delete: 刪除回應 label_query: 自訂查詢 label_query_plural: 自訂查詢 label_query_new: 建立新查詢 + label_my_queries: 我的自訂查詢 label_filter_add: 加入新篩選條件 label_filter_plural: 篩選條件 label_equals: 等於 @@ -701,26 +721,26 @@ label_contains: 包含 label_not_contains: 不包含 label_day_plural: 天 - label_repository: 版本控管 - label_repository_plural: 版本控管 + label_repository: 儲存機制 + label_repository_plural: 儲存機制清單 label_browse: 瀏覽 label_modification: "%{count} 變更" label_modification_plural: "%{count} 變更" label_branch: 分支 label_tag: 標籤 - label_revision: 版次 - label_revision_plural: 版次清單 - label_revision_id: "版次 %{value}" - label_associated_revisions: 相關版次 + label_revision: 修訂版 + label_revision_plural: 修訂版清單 + label_revision_id: "修訂版 %{value}" + label_associated_revisions: 關聯的修訂版 label_added: 已新增 label_modified: 已修改 label_copied: 已複製 label_renamed: 已重新命名 label_deleted: 已刪除 - label_latest_revision: 最新版次 - label_latest_revision_plural: 最近版次清單 - label_view_revisions: 檢視版次清單 - label_view_all_revisions: 檢視全部的版次清單 + label_latest_revision: 最新的修訂版 + label_latest_revision_plural: 最新的修訂版清單 + label_view_revisions: 檢視修訂版清單 + label_view_all_revisions: 檢視所有的的修訂版清單 label_max_size: 最大長度 label_sort_highest: 移動至開頭 label_sort_higher: 往上移動 @@ -752,8 +772,8 @@ label_time_tracking: 工時追蹤 label_change_plural: 變更 label_statistics: 統計資訊 - label_commits_per_month: 依月份統計送交次數 - label_commits_per_author: 依作者統計送交次數 + label_commits_per_month: 依月份統計認可 + label_commits_per_author: 依作者統計認可 label_view_diff: 檢視差異 label_diff_inline: 直列 label_diff_side_by_side: 並排 @@ -813,7 +833,8 @@ label_changeset_plural: 變更集清單 label_default_columns: 預設欄位清單 label_no_change_option: (維持不變) - label_bulk_edit_selected_issues: 編輯選定的項目 + label_bulk_edit_selected_issues: 大量編輯選取的項目 + label_bulk_edit_selected_time_entries: 大量編輯選取的工時項目 label_theme: 畫面主題 label_default: 預設 label_search_titles_only: 僅搜尋標題 @@ -871,16 +892,24 @@ label_missing_api_access_key: 找不到 API 存取金鑰 label_api_access_key_created_on: "API 存取金鑰建立於 %{value} 之前" label_profile: 配置概況 - label_subtask_plural: 子工作項目 + label_subtask_plural: 子任務 label_project_copy_notifications: 在複製專案的過程中,傳送通知郵件 label_principal_search: "搜尋用戶或群組:" label_user_search: "搜尋用戶:" + label_additional_workflow_transitions_for_author: 用戶為作者時額外允許的流程轉換 + label_additional_workflow_transitions_for_assignee: 用戶為被指定者時額外允許的流程轉換 + label_issues_visibility_all: 所有項目 + label_issues_visibility_public: 所有非私人項目 + label_issues_visibility_own: 使用者所建立的或被指派的項目 + label_git_report_last_commit: 報告最後認可的文件和目錄 button_login: 登入 button_submit: 送出 button_save: 儲存 button_check_all: 全選 button_uncheck_all: 全不選 + button_collapse_all: 全部摺疊 + button_expand_all: 全部展開 button_delete: 刪除 button_create: 建立 button_create_and_continue: 繼續建立 @@ -940,6 +969,7 @@ text_are_you_sure: 確定執行? text_are_you_sure_with_children: "確定刪除此工作項目及其子項目?" text_journal_changed: "%{label} 從 %{old} 變更為 %{new}" + text_journal_changed_no_detail: "%{label} 已更新" text_journal_set_to: "%{label} 設定為 %{value}" text_journal_deleted: "%{label} 已刪除 (%{old})" text_journal_added: "%{label} %{value} 已新增" @@ -954,7 +984,7 @@ text_unallowed_characters: 不允許的字元 text_comma_separated: 可輸入多個值(須以逗號分隔)。 text_line_separated: 可輸入多個值(須以換行符號分隔,即每列只能輸入一個值)。 - text_issues_ref_in_commit_messages: 送交訊息中參照(或修正)項目之關鍵字 + text_issues_ref_in_commit_messages: 認可訊息中參照(或修正)項目之關鍵字 text_issue_added: "項目 %{id} 已被 %{author} 通報。" text_issue_updated: "項目 %{id} 已被 %{author} 更新。" text_wiki_destroy_confirmation: 您確定要刪除這個 wiki 和其中的所有內容? @@ -967,6 +997,8 @@ text_status_changed_by_changeset: "已套用至變更集 %{value}." text_time_logged_by_changeset: "紀錄於變更集 %{value}." text_issues_destroy_confirmation: '確定刪除已選擇的項目?' + text_issues_destroy_descendants_confirmation: "這麼做將會一併刪除 %{count} 子任務。" + text_time_entries_destroy_confirmation: 您確定要刪除所選擇的工時紀錄? text_select_project_modules: '選擇此專案可使用之模組:' text_default_administrator_account_changed: 已變更預設管理員帳號內容 text_file_repository_writable: 可寫入附加檔案目錄 @@ -980,7 +1012,7 @@ text_enumeration_destroy_question: "目前有 %{count} 個物件使用此列舉值。" text_enumeration_category_reassign_to: '重新設定其列舉值為:' text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/configuration.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。" - text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與版本庫使用者之對應關係。\n版本庫中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。" + text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與儲存機制紀錄使用者之對應關係。\n儲存機制中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。" text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值' text_custom_field_possible_values_info: '一列輸入一個值' text_wiki_page_destroy_question: "此頁面包含 %{descendants} 個子頁面及延伸頁面。 請選擇您想要的動作?" @@ -990,7 +1022,15 @@ text_own_membership_delete_confirmation: "您在專案中,所擁有的部分或全部權限即將被移除,在這之後可能無法再次編輯此專案。\n您確定要繼續執行這個動作?" text_zoom_in: 放大 text_zoom_out: 縮小 - + text_warn_on_leaving_unsaved: "若您離開這個頁面,此頁面所包含的未儲存資料將會遺失。" + text_scm_path_encoding_note: "預設: UTF-8" + text_git_repository_note: "純(Bare)儲存機制與本機儲存機制 (e.g. /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "本機儲存機制 (e.g. /hgrepo, c:\hgrepo)" + text_scm_command: 命令 + text_scm_command_version: 版本 + text_scm_config: 您可以在 config/configuration.yml 中設定 SCM 命令。請在編輯該檔案之後重新啟動 Redmine 應用程式。 + text_scm_command_not_available: SCM 命令無法使用。請檢查管理面板中的設定。 + default_role_manager: 管理人員 default_role_developer: 開發人員 default_role_reporter: 報告人員 @@ -1017,7 +1057,3 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" diff -r adc8466df404 -r 753f1380d6bc config/locales/.svn/text-base/zh.yml.svn-base --- a/config/locales/.svn/text-base/zh.yml.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/.svn/text-base/zh.yml.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,29 +1,38 @@ # Chinese (China) translations for Ruby on Rails # by tsechingho (http://github.com/tsechingho) - zh: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%b%d日" long: "%Y年%b%d日" + day_names: [星期天, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六] abbr_day_names: [日, 一, 二, 三, 四, 五, 六] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] - order: [ :year, :month, :day ] - + # Used in date_select and datime_select. + order: + - :year + - :month + - :day + time: formats: default: "%Y年%b%d日 %A %H:%M:%S" time: "%H:%M" - time: "%H:%M" short: "%b%d日 %H:%M" long: "%Y年%b%d日 %H:%M" am: "上午" pm: "下午" - + datetime: distance_in_words: half_a_minute: "半分钟" @@ -60,32 +69,13 @@ almost_x_years: one: "将近 1 年" other: "将近 %{count} 年" - prompts: - year: "年" - month: "月" - day: "日" - hour: "时" - minute: "分" - second: "秒" - + number: + # Default format for numbers format: - separator: "." - delimiter: "," + separator: "." + delimiter: "" precision: 3 - currency: - format: - format: "%n %u" - unit: "元" - separator: "." - delimiter: "," - precision: 2 - percentage: - format: - delimiter: "" - precision: - format: - delimiter: "" human: format: delimiter: "" @@ -96,24 +86,24 @@ byte: one: "Byte" other: "Bytes" - kb: "KB" + kb: "kB" mb: "MB" gb: "GB" tb: "TB" - + + +# Used in array.to_sentence. support: array: - words_connector: ", " - two_words_connector: " 和 " - last_word_connector: ", 和 " - + sentence_connector: "和" + skip_last_comma: false + activerecord: errors: template: - header: - one: "有 1 个错误发生导致「%{model}」无法被保存。" - other: "有 %{count} 个错误发生导致「%{model}」无法被保存。" - body: "如下字段出现错误:" + header: + one: "由于发生了一个错误 %{model} 无法保存" + other: "%{count} 个错误使得 %{model} 无法保存" messages: inclusion: "不包含于列表中" exclusion: "是保留关键字" @@ -127,6 +117,7 @@ wrong_length: "长度非法(必须为 %{count} 个字符)" taken: "已经被使用" not_a_number: "不是数字" + not_a_date: "不是合法日期" greater_than: "必须大于 %{count}" greater_than_or_equal_to: "必须大于或等于 %{count}" equal_to: "必须等于 %{count}" @@ -137,7 +128,7 @@ greater_than_start_date: "必须在起始日期之后" not_same_project: "不属于同一个项目" circular_dependency: "此关联将导致循环依赖" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "问题不能关联到它的子任务" actionview_instancetag_blank_option: 请选择 @@ -168,17 +159,21 @@ notice_file_not_found: 您访问的页面不存在或已被删除。 notice_locking_conflict: 数据已被另一位用户更新 notice_not_authorized: 对不起,您无权访问此页面。 - notice_email_sent: "邮件已成功发送到 %{value}" + notice_not_authorized_archived_project: 要访问的项目已经归档。 + notice_email_sent: "邮件已发送至 %{value}" notice_email_error: "发送邮件时发生错误 (%{value})" notice_feeds_access_key_reseted: 您的RSS存取键已被重置。 notice_api_access_key_reseted: 您的API访问键已被重置。 notice_failed_to_save_issues: "%{count} 个问题保存失败(共选择 %{total} 个问题):%{ids}." + notice_failed_to_save_members: "成员保存失败: %{errors}." notice_no_issue_selected: "未选择任何问题!请选择您要编辑的问题。" notice_account_pending: "您的帐号已被成功创建,正在等待管理员的审核。" notice_default_data_loaded: 成功载入默认设置。 notice_unable_delete_version: 无法删除版本 + notice_unable_delete_time_entry: 无法删除工时 notice_issue_done_ratios_updated: 问题完成度已更新。 - + notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" + error_can_t_load_default_data: "无法载入默认设置:%{value}" error_scm_not_found: "版本库中不存在该条目和(或)其修订版本。" error_scm_command_failed: "访问版本库时发生错误:%{value}" @@ -186,13 +181,17 @@ error_issue_not_found_in_project: '问题不存在或不属于此项目' error_no_tracker_in_project: 该项目未设定跟踪标签,请检查项目配置。 error_no_default_issue_status: 未设置默认的问题状态。请检查系统设置("管理" -> "问题状态")。 + error_can_not_delete_custom_field: 无法删除自定义属性 + error_can_not_delete_tracker: "该跟踪标签已包含问题,无法删除" + error_can_not_remove_role: "该角色正在使用中,无法删除" error_can_not_reopen_issue_on_closed_version: 该问题被关联到一个已经关闭的版本,因此无法重新打开。 error_can_not_archive_project: 该项目无法被存档 error_issue_done_ratios_not_updated: 问题完成度未能被更新。 error_workflow_copy_source: 请选择一个源跟踪标签或者角色 error_workflow_copy_target: 请选择目标跟踪标签和角色 - - warning_attachments_not_saved: "%{count} 个文件保存失败。" + error_unable_delete_issue_status: '无法删除问题状态' + error_unable_to_connect: "无法连接 (%{value})" + warning_attachments_not_saved: "%{count} 个文件保存失败" mail_subject_lost_password: "您的 %{value} 密码" mail_body_lost_password: '请点击以下链接来修改您的密码:' @@ -206,9 +205,9 @@ mail_body_reminder: "指派给您的 %{count} 个问题需要在 %{days} 天内完成:" mail_subject_wiki_content_added: "'%{id}' wiki页面已添加" mail_body_wiki_content_added: "'%{id}' wiki页面已由 %{author} 添加。" - mail_subject_wiki_content_updated: "'%{id}' wiki页面已更新" + mail_subject_wiki_content_updated: "'%{id}' wiki页面已更新。" mail_body_wiki_content_updated: "'%{id}' wiki页面已由 %{author} 更新。" - + gui_validation_error: 1 个错误 gui_validation_error_plural: "%{count} 个错误" @@ -247,11 +246,12 @@ field_priority: 优先级 field_fixed_version: 目标版本 field_user: 用户 + field_principal: 用户/用户组 field_role: 角色 field_homepage: 主页 field_is_public: 公开 field_parent: 上级项目 - field_is_in_roadmap: 在路线图中显示问题 + field_is_in_roadmap: 在路线图中显示 field_login: 登录名 field_mail_notification: 邮件通知 field_admin: 管理员 @@ -272,8 +272,8 @@ field_attr_lastname: 姓氏属性 field_attr_mail: 邮件属性 field_onthefly: 即时用户生成 - field_start_date: 开始 - field_done_ratio: 完成度 + field_start_date: 开始日期 + field_done_ratio: % 完成 field_auth_source: 认证模式 field_hide_mail: 隐藏我的邮件地址 field_comments: 注释 @@ -291,6 +291,7 @@ field_redirect_existing_links: 重定向到现有链接 field_estimated_hours: 预期时间 field_column_names: 列 + field_time_entries: 工时 field_time_zone: 时区 field_searchable: 可用作搜索条件 field_default_value: 默认值 @@ -302,7 +303,12 @@ field_content: 内容 field_group_by: 根据此条件分组 field_sharing: 共享 - + field_parent_issue: 父任务 + field_member_of_group: 用户组的成员 + field_assigned_to_role: 角色的成员 + field_text: 文本字段 + field_visible: 可见的 + setting_app_title: 应用程序标题 setting_app_subtitle: 应用程序子标题 setting_welcome_text: 欢迎文字 @@ -310,7 +316,7 @@ setting_login_required: 要求认证 setting_self_registration: 允许自注册 setting_attachment_max_size: 附件大小限制 - setting_issues_export_limit: 问题输出条目的限制 + setting_issues_export_limit: 问题导出条目的限制 setting_mail_from: 邮件发件人地址 setting_bcc_recipients: 使用密件抄送 (bcc) setting_plain_text_mail: 纯文本(无HTML) @@ -329,7 +335,7 @@ setting_cross_project_issue_relations: 允许不同项目之间的问题关联 setting_issue_list_default_columns: 问题列表中显示的默认列 setting_repositories_encodings: 版本库编码 - setting_commit_logs_encoding: 提交注释的编码 + setting_emails_header: 邮件头 setting_emails_footer: 邮件签名 setting_protocol: 协议 setting_per_page_options: 每页显示条目个数的设置 @@ -355,12 +361,18 @@ setting_issue_done_ratio_issue_status: 使用问题状态 setting_start_of_week: 日历开始于 setting_rest_api_enabled: 启用REST web service - + setting_cache_formatted_text: 缓存格式化文字 + setting_default_notification_option: 默认提醒选项 + setting_commit_logtime_enabled: 激活时间日志 + setting_commit_logtime_activity_id: 记录的活动 + setting_gantt_items_limit: 在甘特图上显示的最大记录数 + permission_add_project: 新建项目 permission_add_subprojects: 新建子项目 permission_edit_project: 编辑项目 permission_select_project_modules: 选择项目模块 permission_manage_members: 管理成员 + permission_manage_project_activities: 管理项目活动 permission_manage_versions: 管理版本 permission_manage_categories: 管理问题类别 permission_view_issues: 查看问题 @@ -408,7 +420,9 @@ permission_edit_own_messages: 编辑自己的帖子 permission_delete_messages: 删除帖子 permission_delete_own_messages: 删除自己的帖子 - + permission_export_wiki_pages: 导出 wiki 页面 + permission_manage_subtasks: 管理子任务 + project_module_issue_tracking: 问题跟踪 project_module_time_tracking: 时间跟踪 project_module_news: 新闻 @@ -417,6 +431,8 @@ project_module_wiki: Wiki project_module_repository: 版本库 project_module_boards: 讨论区 + project_module_calendar: 日历 + project_module_gantt: 甘特图 label_user: 用户 label_user_plural: 用户 @@ -474,6 +490,7 @@ label_my_page: 我的工作台 label_my_account: 我的帐号 label_my_projects: 我的项目 + label_my_page_block: 我的工作台模块 label_administration: 管理 label_login: 登录 label_logout: 退出 @@ -483,7 +500,7 @@ label_last_login: 最后登录 label_registered_on: 注册于 label_activity: 活动 - label_overall_activity: 全部活动 + label_overall_activity: 活动概览 label_user_activity: "%{value} 的活动" label_new: 新建 label_logged_as: 登录为 @@ -546,18 +563,18 @@ one: 1 打开 other: "%{count} 打开" label_x_closed_issues_abbr: - zero: 0 关闭 - one: 1 关闭 - other: "%{count} 关闭" + zero: 0 已关闭 + one: 1 已关闭 + other: "%{count} 已关闭" label_total: 合计 label_permissions: 权限 label_current_status: 当前状态 - label_new_statuses_allowed: 可变更的新状态 + label_new_statuses_allowed: 允许的新状态 label_all: 全部 label_none: 无 label_nobody: 无人 - label_next: 下一个 - label_previous: 上一个 + label_next: 下一页 + label_previous: 上一页 label_used_by: 使用中 label_details: 详情 label_add_note: 添加说明 @@ -651,6 +668,7 @@ label_changes_details: 所有变更的详情 label_issue_tracking: 问题跟踪 label_spent_time: 耗时 + label_overall_spent_time: 总体耗时 label_f_hour: "%{value} 小时" label_f_hour_plural: "%{value} 小时" label_time_tracking: 时间跟踪 @@ -688,6 +706,8 @@ label_board: 讨论区 label_board_new: 新建讨论区 label_board_plural: 讨论区 + label_board_locked: 锁定 + label_board_sticky: 置顶 label_topic_plural: 主题 label_message_plural: 帖子 label_message_last: 最新的帖子 @@ -721,12 +741,16 @@ label_search_titles_only: 仅在标题中搜索 label_user_mail_option_all: "收取我的项目的所有通知" label_user_mail_option_selected: "收取选中项目的所有通知..." + label_user_mail_option_none: "不收取任何通知" + label_user_mail_option_only_my_events: "只收取我跟踪或参与的项目的通知" + label_user_mail_option_only_assigned: "只收取分配给我的" + label_user_mail_option_only_owner: 只收取由我创建的 label_user_mail_no_self_notified: "不要发送对我自己提交的修改的通知" label_registration_activation_by_email: 通过邮件认证激活帐号 label_registration_manual_activation: 手动激活帐号 label_registration_automatic_activation: 自动激活帐号 label_display_per_page: "每页显示:%{value}" - label_age: 年龄 + label_age: 提交时间 label_change_properties: 修改属性 label_general: 一般 label_more: 更多 @@ -768,6 +792,11 @@ label_api_access_key: API访问键 label_missing_api_access_key: 缺少API访问键 label_api_access_key_created_on: API访问键是在 %{value} 之前建立的 + label_profile: 简介 + label_subtask_plural: 子任务 + label_project_copy_notifications: 复制项目时发送邮件通知 + label_principal_search: "搜索用户或组:" + label_user_search: "搜索用户:" button_login: 登录 button_submit: 提交 @@ -779,6 +808,7 @@ button_create_and_continue: 创建并继续 button_test: 测试 button_edit: 编辑 + button_edit_associated_wikipage: "编辑相关wiki页面: %{page_title}" button_add: 新增 button_change: 修改 button_apply: 应用 @@ -816,13 +846,13 @@ status_active: 活动的 status_registered: 已注册 status_locked: 已锁定 - + version_status_open: 打开 version_status_locked: 锁定 version_status_closed: 关闭 field_active: 活动 - + text_select_mail_notifications: 选择需要发送邮件通知的动作 text_regexp_info: 例如:^[A-Z0-9]+$ text_min_max_length_info: 0 表示没有限制 @@ -830,6 +860,7 @@ text_subprojects_destroy_warning: "以下子项目也将被同时删除:%{value}" text_workflow_edit: 选择角色和跟踪标签来编辑工作流程 text_are_you_sure: 您确定? + text_are_you_sure_with_children: "删除问题及子任务?" text_journal_changed: "%{label} 从 %{old} 变更为 %{new}" text_journal_set_to: "%{label} 被设置为 %{value}" text_journal_deleted: "%{label} 已删除 (%{old})" @@ -856,6 +887,7 @@ text_no_configuration_data: "角色、跟踪标签、问题状态和工作流程还没有设置。\n强烈建议您先载入默认设置,然后在此基础上进行修改。" text_load_default_configuration: 载入默认设置 text_status_changed_by_changeset: "已应用到变更列表 %{value}." + text_time_logged_by_changeset: "已应用到修订版本 %{value}." text_issues_destroy_confirmation: '您确定要删除选中的问题吗?' text_select_project_modules: '请选择此项目可以使用的模块:' text_default_administrator_account_changed: 默认的管理员帐号已改变 @@ -867,18 +899,20 @@ text_assign_time_entries_to_project: 将已上报的工作量提交到项目中 text_reassign_time_entries: '将已上报的工作量指定到此问题:' text_user_wrote: "%{value} 写到:" + text_enumeration_destroy_question: "%{count} 个对象被关联到了这个枚举值。" text_enumeration_category_reassign_to: '将它们关联到新的枚举值:' - text_enumeration_destroy_question: "%{count} 个对象被关联到了这个枚举值。" text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/configuration.yml中配置您的SMTP服务器信息并重新启动以使其生效。" text_repository_usernames_mapping: "选择或更新与版本库中的用户名对应的Redmine用户。\n版本库中与Redmine中的同名用户将被自动对应。" text_diff_truncated: '... 差别内容超过了可显示的最大行数并已被截断' text_custom_field_possible_values_info: '每项数值一行' text_wiki_page_destroy_question: 此页面有 %{descendants} 个子页面和下级页面。您想进行那种操作? - text_wiki_page_reassign_children: 将子页面的上级页面设置为 text_wiki_page_nullify_children: 将子页面保留为根页面 text_wiki_page_destroy_children: 删除子页面及其所有下级页面 + text_wiki_page_reassign_children: 将子页面的上级页面设置为 text_own_membership_delete_confirmation: 你正在删除你现有的某些或全部权限,如果这样做了你可能将会再也无法编辑该项目了。你确定要继续吗? - + text_zoom_in: Zoom in + text_zoom_out: Zoom out + default_role_manager: 管理人员 default_role_developer: 开发人员 default_role_reporter: 报告人员 @@ -905,52 +939,43 @@ enumeration_doc_categories: 文档类别 enumeration_activities: 活动(时间跟踪) enumeration_system_activity: 系统活动 - label_board_sticky: 置顶 - label_board_locked: 锁定 - permission_export_wiki_pages: 导出 wiki 页面 - setting_cache_formatted_text: 缓存格式化文本 - permission_manage_project_activities: 管理项目活动 - error_unable_delete_issue_status: 无法删除问题状态 - label_profile: 简介 - permission_manage_subtasks: 管理子任务 - field_parent_issue: 父任务 - label_subtask_plural: 子任务 - label_project_copy_notifications: 复制项目时发送邮件通知 - error_can_not_delete_custom_field: 不能删除自定义属性 - error_unable_to_connect: 不能连接到 (%{value}) - error_can_not_remove_role: 该角色正在使用中, 不能删除. - error_can_not_delete_tracker: 该跟踪标签包含问题, 不能删除. - field_principal: 用户/用户组 - label_my_page_block: 我的工作台模块 - notice_failed_to_save_members: "成员保存失败:%{errors}。" - text_zoom_out: 缩小 - text_zoom_in: 放大 - notice_unable_delete_time_entry: 无法删除工时记录。 - label_overall_spent_time: 所有项目耗用工时 - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + + field_commit_logs_encoding: 提交注释的编码 + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/bg.yml --- a/config/locales/bg.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/bg.yml Mon Jun 06 14:41:04 2011 +0100 @@ -17,7 +17,10 @@ month_names: [~, Януари, Февруари, Март, Април, Май, Юни, Юли, Август, Септември, Октомври, Ноември, Декември] abbr_month_names: [~, Яну, Фев, Мар, Апр, Май, Юни, Юли, Авг, Сеп, Окт, Ное, Дек] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -268,7 +271,7 @@ field_attr_mail: Атрибут Email field_onthefly: Динамично създаване на потребител field_start_date: Начална дата - field_done_ratio: % Прогрес + field_done_ratio: "% Прогрес" field_auth_source: Начин на оторизация field_hide_mail: Скрий e-mail адреса ми field_comments: Коментар @@ -304,7 +307,15 @@ field_text: Текстово поле field_visible: Видим field_warn_on_leaving_unsaved: Предупреди ме, когато напускам страница с незаписано съдържание - + field_issues_visibility: Видимост на задачите + field_is_private: Лична + field_commit_logs_encoding: Кодова таблица на съобщенията при поверяване + field_scm_path_encoding: Кодова таблица на пътищата (path) + field_path_to_repository: Път до хранилището + field_root_directory: Коренна директория (папка) + field_cvsroot: CVSROOT + field_cvs_module: Модул + setting_app_title: Заглавие setting_app_subtitle: Описание setting_welcome_text: Допълнителен текст @@ -331,7 +342,6 @@ setting_cross_project_issue_relations: Релации на задачи между проекти setting_issue_list_default_columns: Показвани колони по подразбиране setting_repositories_encodings: Кодови таблици - setting_commit_logs_encoding: Кодова таблица на съобщенията при поверяване setting_emails_header: Emails header setting_emails_footer: Подтекст за e-mail setting_protocol: Протокол @@ -376,7 +386,9 @@ permission_add_issues: Добавяне на задачи permission_edit_issues: Редактиране на задачи permission_manage_issue_relations: Управление на връзките между задачите - permission_add_issue_notes: Добаване на бележки + permission_set_own_issues_private: Установяване на собствените задачи публични или лични + permission_set_issues_private: Установяване на задачите публични или лични + permission_add_issue_notes: Добавяне на бележки permission_edit_issue_notes: Редактиране на бележки permission_edit_own_issue_notes: Редактиране на собствени бележки permission_move_issues: Преместване на задачи @@ -451,6 +463,9 @@ label_issues_by: "Задачи по %{value}" label_issue_added: Добавена задача label_issue_updated: Обновена задача + label_issue_note_added: Добавена бележка + label_issue_status_updated: Обновено състояние + label_issue_priority_updated: Обновен приоритет label_document: Документ label_document_new: Нов документ label_document_plural: Документи @@ -459,6 +474,8 @@ label_role_plural: Роли label_role_new: Нова роля label_role_and_permissions: Роли и права + label_role_anonymous: Анонимен + label_role_non_member: Не член label_member: Член label_member_new: Нов член label_member_plural: Членове @@ -538,6 +555,7 @@ label_news_latest: Последни новини label_news_view_all: Виж всички label_news_added: Добавена новина + label_news_comment_added: Добавен коментар към новина label_settings: Настройки label_overview: Общ изглед label_version: Версия @@ -734,7 +752,8 @@ label_changeset_plural: Ревизии label_default_columns: По подразбиране label_no_change_option: (Без промяна) - label_bulk_edit_selected_issues: Редактиране на задачи + label_bulk_edit_selected_issues: Групово редактиране на задачи + label_bulk_edit_selected_time_entries: Групово редактиране на записи за използвано време label_theme: Тема label_default: По подразбиране label_search_titles_only: Само в заглавията @@ -796,12 +815,20 @@ label_project_copy_notifications: Изпращане на Send e-mail известия по време на копирането на проекта label_principal_search: "Търсене на потребител или група:" label_user_search: "Търсене на потребител:" + label_additional_workflow_transitions_for_author: Позволени са допълнителни преходи, когато потребителят е авторът + label_additional_workflow_transitions_for_assignee: Позволени са допълнителни преходи, когато потребителят е назначеният към задачата + label_issues_visibility_all: Всички задачи + label_issues_visibility_public: Всички не-лични задачи + label_issues_visibility_own: Задачи, създадени от или назначени на потребителя + label_git_report_last_commit: Извеждане на последното поверяване за файлове и папки button_login: Вход button_submit: Прикачване button_save: Запис button_check_all: Избор на всички button_uncheck_all: Изчистване на всички + button_collapse_all: Скриване всички + button_expand_all: Разгъване всички button_delete: Изтриване button_create: Създаване button_create_and_continue: Създаване и продължаване @@ -861,6 +888,7 @@ text_are_you_sure: Сигурни ли сте? text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? text_journal_changed: "%{label} променен от %{old} на %{new}" + text_journal_changed_no_detail: "%{label} променен" text_journal_set_to: "%{label} установен на %{value}" text_journal_deleted: "%{label} изтрит (%{old})" text_journal_added: "Добавено %{label} %{value}" @@ -888,6 +916,8 @@ text_status_changed_by_changeset: "Приложено с ревизия %{value}." text_time_logged_by_changeset: Приложено в ревизия %{value}. text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?' + text_issues_destroy_descendants_confirmation: Тази операция ще премахне и %{count} подзадача(и). + text_time_entries_destroy_confirmation: Сигурен ли сте, че изтриете избраните записи за изразходвано време? text_select_project_modules: 'Изберете активните модули за този проект:' text_default_administrator_account_changed: Сменен фабричния администраторски профил text_file_repository_writable: Възможност за писане в хранилището с файлове @@ -912,6 +942,13 @@ text_zoom_in: Увеличаване text_zoom_out: Намаляване text_warn_on_leaving_unsaved: Страницата съдържа незаписано съдържание, което може да бъде загубено, ако я напуснете. + text_scm_path_encoding_note: "По подразбиране: UTF-8" + text_git_repository_note: Празно и локално хранилище (например /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Локално хранилище (например /hgrepo, c:\hgrepo) + text_scm_command: SCM команда + text_scm_command_version: Версия + text_scm_config: Можете да конфигурирате SCM командите в config/configuration.yml. За да активирате промените, рестартирайте Redmine. + text_scm_command_not_available: SCM командата не е налична или достъпна. Проверете конфигурацията в административния панел. default_role_manager: Мениджър default_role_developer: Разработчик @@ -939,5 +976,3 @@ enumeration_doc_categories: Категории документи enumeration_activities: Дейности (time tracking) enumeration_system_activity: Системна активност - - text_journal_changed_no_detail: "%{label} updated" diff -r adc8466df404 -r 753f1380d6bc config/locales/bs.yml --- a/config/locales/bs.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/bs.yml Mon Jun 06 14:41:04 2011 +0100 @@ -15,7 +15,10 @@ month_names: [~, Januar, Februar, Mart, April, Maj, Jun, Jul, Avgust, Septembar, Oktobar, Novembar, Decembar] abbr_month_names: [~, Jan, Feb, Mar, Apr, Maj, Jun, Jul, Avg, Sep, Okt, Nov, Dec] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -145,8 +148,8 @@ general_lang_name: 'Bosanski' general_csv_separator: ',' general_csv_decimal_separator: '.' - general_csv_encoding: utf8 - general_pdf_encoding: utf8 + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_activated: Vaš nalog je aktiviran. Možete se prijaviti. @@ -257,7 +260,7 @@ field_attr_mail: Atribut za email field_onthefly: 'Kreiranje korisnika "On-the-fly"' field_start_date: Početak - field_done_ratio: % Realizovano + field_done_ratio: "% Realizovano" field_auth_source: Mod za authentifikaciju field_hide_mail: Sakrij moju email adresu field_comments: Komentar @@ -312,7 +315,6 @@ setting_cross_project_issue_relations: Omogući relacije između aktivnosti na različitim projektima setting_issue_list_default_columns: Podrazumjevane koleone za prikaz na listi aktivnosti setting_repositories_encodings: Enkodiranje repozitorija - setting_commit_logs_encoding: 'Enkodiranje "commit" poruka' setting_emails_footer: Potpis na email-ovima setting_protocol: Protokol setting_per_page_options: Broj objekata po stranici @@ -955,3 +957,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: 'Enkodiranje "commit" poruka' + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/ca.yml --- a/config/locales/ca.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/ca.yml Mon Jun 06 14:41:04 2011 +0100 @@ -20,7 +20,10 @@ month_names: [~, Gener, Febrer, Març, Abril, Maig, Juny, Juliol, Agost, Setembre, Octubre, Novembre, Desembre] abbr_month_names: [~, Gen, Feb, Mar, Abr, Mai, Jun, Jul, Ago, Set, Oct, Nov, Des] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -138,7 +141,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-15 - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: "El compte s'ha actualitzat correctament." @@ -161,7 +164,7 @@ notice_email_error: "S'ha produït un error en enviar el correu (%{value})" notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del RSS." notice_api_access_key_reseted: "S'ha reiniciat la clau d'accés a l'API." - notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de %{count} seleccionats: %{ids}." + notice_failed_to_save_issues: "No s'han pogut desar %{count} assumptes de %{total} seleccionats: %{ids}." notice_failed_to_save_members: "No s'han pogut desar els membres: %{errors}." notice_no_issue_selected: "No s'ha seleccionat cap assumpte. Activeu els assumptes que voleu editar." notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador." @@ -269,7 +272,7 @@ field_attr_mail: Atribut del correu electrònic field_onthefly: "Creació de l'usuari «al vol»" field_start_date: Inici - field_done_ratio: % realitzat + field_done_ratio: "% realitzat" field_auth_source: "Mode d'autenticació" field_hide_mail: "Oculta l'adreça de correu electrònic" field_comments: Comentari @@ -327,7 +330,6 @@ setting_cross_project_issue_relations: "Permet les relacions d'assumptes entre projectes" setting_issue_list_default_columns: "Columnes mostrades per defecte en la llista d'assumptes" setting_repositories_encodings: Codificacions del dipòsit - setting_commit_logs_encoding: Codificació dels missatges publicats setting_emails_footer: Peu dels correus electrònics setting_protocol: Protocol setting_per_page_options: Opcions dels objectes per pàgina @@ -944,3 +946,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificació dels missatges publicats + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/cs.yml --- a/config/locales/cs.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/cs.yml Mon Jun 06 14:41:04 2011 +0100 @@ -21,7 +21,10 @@ month_names: [~, Leden, Únor, Březen, Duben, Květen, Červen, Červenec, Srpen, Září, Říjen, Listopad, Prosinec] abbr_month_names: [~, Led, Úno, Bře, Dub, Kvě, Čer, Čec, Srp, Zář, Říj, Lis, Pro] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -272,7 +275,7 @@ field_attr_mail: Email (atribut) field_onthefly: Automatické vytváření uživatelů field_start_date: Začátek - field_done_ratio: % Hotovo + field_done_ratio: "% Hotovo" field_auth_source: Autentifikační mód field_hide_mail: Nezobrazovat můj email field_comments: Komentář @@ -334,7 +337,6 @@ setting_cross_project_issue_relations: Povolit vazby úkolů napříč projekty setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů setting_repositories_encodings: Kódování - setting_commit_logs_encoding: Kódování zpráv při commitu setting_emails_header: Hlavička emailů setting_emails_footer: Patička emailů setting_protocol: Protokol @@ -349,7 +351,7 @@ setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů setting_gravatar_enabled: Použít uživatelské ikony Gravatar setting_gravatar_default: Výchozí Gravatar - setting_diff_max_lines_displayed: Maximální počet zobrazenách řádků rozdílů + setting_diff_max_lines_displayed: Maximální počet zobrazených řádků rozdílů setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru setting_openid: Umožnit přihlašování a registrace s OpenID @@ -841,7 +843,7 @@ button_update: Aktualizovat button_configure: Konfigurovat button_quote: Citovat - button_duplicate: Duplikát + button_duplicate: Duplikovat button_show: Zobrazit status_active: aktivní @@ -902,7 +904,7 @@ text_user_wrote: "%{value} napsal:" text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě." text_enumeration_category_reassign_to: 'Přeřadit je do této:' - text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci." + text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci." text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky." text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.' text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' @@ -945,3 +947,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kódování zpráv při commitu + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/da.yml --- a/config/locales/da.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/da.yml Mon Jun 06 14:41:04 2011 +0100 @@ -14,7 +14,10 @@ abbr_day_names: [sø, ma, ti, 'on', to, fr, lø] month_names: [~, januar, februar, marts, april, maj, juni, juli, august, september, oktober, november, december] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -134,7 +137,7 @@ greater_than_start_date: "skal være senere end startdatoen" not_same_project: "hører ikke til samme projekt" circular_dependency: "Denne relation vil skabe et afhængighedsforhold" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "En sag kan ikke relateres til en af dens underopgaver" template: header: @@ -151,7 +154,7 @@ general_lang_name: 'Danish (Dansk)' general_csv_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Kontoen er opdateret. @@ -183,7 +186,7 @@ error_scm_command_failed: "En fejl opstod under forbindelsen til det valgte repository: %{value}" mail_subject_lost_password: "Dit %{value} kodeord" - mail_body_lost_password: 'For at ændre dit kodeord, klik på dette link:' + mail_body_lost_password: 'Klik på dette link for at ændre dit kodeord:' mail_subject_register: "%{value} kontoaktivering" mail_body_register: 'Klik på dette link for at aktivere din konto:' mail_body_account_information_external: "Du kan bruge din %{value} konto til at logge ind." @@ -227,7 +230,7 @@ field_due_date: Deadline field_assigned_to: Tildelt til field_priority: Prioritet - field_fixed_version: Target version + field_fixed_version: Udgave field_user: Bruger field_role: Rolle field_homepage: Hjemmeside @@ -254,8 +257,8 @@ field_attr_lastname: Efternavn attribut field_attr_mail: Email attribut field_onthefly: løbende brugeroprettelse - field_start_date: Start date - field_done_ratio: % Færdig + field_start_date: Start dato + field_done_ratio: "% færdig" field_auth_source: Sikkerhedsmetode field_hide_mail: Skjul min email field_comments: Kommentar @@ -349,7 +352,7 @@ label_tracker_new: Ny type label_workflow: Arbejdsgang label_issue_status: Sagsstatus - label_issue_status_plural: Sagsstatuser + label_issue_status_plural: Sagsstatusser label_issue_status_new: Ny status label_issue_category: Sagskategori label_issue_category_plural: Sagskategorier @@ -374,8 +377,8 @@ label_logout: Log ud label_help: Hjælp label_reported_issues: Rapporterede sager - label_assigned_to_me_issues: Sager tildelt mig - label_last_login: Sidste login tidspunkt + label_assigned_to_me_issues: Sager tildelt til mig + label_last_login: Sidste logintidspunkt label_registered_on: Registreret den label_activity: Aktivitet label_new: Ny @@ -490,7 +493,7 @@ label_date_range: Dato interval label_less_than_ago: mindre end dage siden label_more_than_ago: mere end dage siden - label_ago: days siden + label_ago: dage siden label_contains: indeholder label_not_contains: ikke indeholder label_day_plural: dage @@ -501,7 +504,7 @@ label_modification_plural: "%{count} ændringer" label_revision: Revision label_revision_plural: Revisioner - label_associated_revisions: Tilnyttede revisioner + label_associated_revisions: Tilknyttede revisioner label_added: tilføjet label_modified: ændret label_deleted: slettet @@ -531,7 +534,7 @@ label_preview: Forhåndsvisning label_feed_plural: Feeds label_changes_details: Detaljer for alle ændringer - label_issue_tracking: Sags søgning + label_issue_tracking: Sagssøgning label_spent_time: Anvendt tid label_f_hour: "%{value} time" label_f_hour_plural: "%{value} timer" @@ -548,7 +551,7 @@ label_permissions_report: Godkendelsesrapport label_watched_issues: Overvågede sager label_related_issues: Relaterede sager - label_applied_status: Anvendte statuser + label_applied_status: Anvendte statusser label_loading: Indlæser... label_relation_new: Ny relation label_relation_delete: Slet relation @@ -591,7 +594,7 @@ label_jump_to_a_project: Skift til projekt... label_file_plural: Filer label_changeset_plural: Ændringer - label_default_columns: Standard kolonner + label_default_columns: Standardkolonner label_no_change_option: (Ingen ændringer) label_bulk_edit_selected_issues: Masse-ret de valgte sager label_theme: Tema @@ -679,20 +682,20 @@ text_issue_category_destroy_assignments: Slet tildelinger af kategori text_issue_category_reassign_to: Tildel sager til denne kategori text_user_mail_option: "For ikke-valgte projekter vil du kun modtage beskeder omhandlende ting du er involveret i eller overvåger (f.eks. sager du har indberettet eller ejer)." - text_no_configuration_data: "Roller, typer, sagsstatuser og arbejdsgange er endnu ikke konfigureret.\nDet er anbefalet at indlæse standardopsætningen. Du vil kunne ændre denne når den er indlæst." + text_no_configuration_data: "Roller, typer, sagsstatusser og arbejdsgange er endnu ikke konfigureret.\nDet er anbefalet at indlæse standardopsætningen. Du vil kunne ændre denne når den er indlæst." text_load_default_configuration: Indlæs standardopsætningen text_status_changed_by_changeset: "Anvendt i ændring %{value}." text_issues_destroy_confirmation: 'Er du sikker på du ønsker at slette den/de valgte sag(er)?' text_select_project_modules: 'Vælg moduler er skal være aktiveret for dette projekt:' - text_default_administrator_account_changed: Standard administratorkonto ændret + text_default_administrator_account_changed: Standardadministratorkonto ændret text_file_repository_writable: Filarkiv er skrivbar text_rmagick_available: RMagick tilgængelig (valgfri) default_role_manager: Leder default_role_developer: Udvikler default_role_reporter: Rapportør - default_tracker_bug: Bug - default_tracker_feature: Feature + default_tracker_bug: Fejl + default_tracker_feature: Funktion default_tracker_support: Support default_issue_status_new: Ny default_issue_status_in_progress: Igangværende @@ -721,12 +724,12 @@ error_issue_not_found_in_project: 'Sagen blev ikke fundet eller tilhører ikke dette projekt' text_assign_time_entries_to_project: Tildel raporterede timer til projektet setting_display_subprojects_issues: Vis sager for underprojekter på hovedprojektet som standard - label_optional_description: Optionel beskrivelse + label_optional_description: Valgfri beskrivelse text_destroy_time_entries: Slet registrerede timer field_comments_sorting: Vis kommentar text_reassign_time_entries: 'Tildel registrerede timer til denne sag igen' label_reverse_chronological_order: I omvendt kronologisk rækkefølge - label_preferences: Preferences + label_preferences: Præferencer label_overall_activity: Overordnet aktivitet setting_default_projects_public: Nye projekter er offentlige som standard error_scm_annotate: "Filen findes ikke, eller kunne ikke annoteres." @@ -760,7 +763,7 @@ permission_add_issue_watchers: Tilføj overvågere warning_attachments_not_saved: "der var %{count} fil(er), som ikke kunne gemmes." permission_comment_news: Kommentér nyheder - text_enumeration_category_reassign_to: 'FLyt dem til denne værdi:' + text_enumeration_category_reassign_to: 'Flyt dem til denne værdi:' permission_select_project_modules: Vælg projektmoduler permission_view_gantt: Se Gantt diagram permission_delete_messages: Slet beskeder @@ -787,9 +790,9 @@ label_and_its_subprojects: "%{value} og dets underprojekter" permission_view_calendar: Se kalender button_create_and_continue: Opret og fortsæt - setting_gravatar_enabled: Anvend Gravatar bruger ikoner + setting_gravatar_enabled: Anvend Gravatar brugerikoner label_updated_time_by: "Opdateret af %{author} for %{age} siden" - text_diff_truncated: '... Listen over forskelle er bleve afkortet da den overstiger den maksimale størrelse der kan vises.' + text_diff_truncated: '... Listen over forskelle er blevet afkortet da den overstiger den maksimale størrelse der kan vises.' text_user_wrote: "%{value} skrev:" setting_mail_handler_api_enabled: Aktiver webservice for indkomne emails permission_delete_issues: Slet sager @@ -810,7 +813,6 @@ permission_edit_project: Redigér projekt permission_save_queries: Gem forespørgsler label_copied: kopieret - setting_commit_logs_encoding: Kodning af Commit beskeder text_repository_usernames_mapping: "Vælg eller opdatér de Redmine brugere der svarer til de enkelte brugere fundet i repository loggen.\nBrugere med samme brugernavn eller email adresse i både Redmine og det valgte repository bliver automatisk koblet sammen." permission_edit_time_entries: Redigér tidsregistreringer general_csv_decimal_separator: ',' @@ -848,7 +850,7 @@ label_tag: Tag label_branch: Branch error_no_tracker_in_project: Der er ingen sagshåndtering for dette projekt. Kontrollér venligst projektindstillingerne. - error_no_default_issue_status: Der er ikek defineret en standardstatus. Kontrollér venligst indstillingernen (Gå til "Administration -> Sagsstatuser"). + error_no_default_issue_status: Der er ikke defineret en standardstatus. Kontrollér venligst indstillingerne (gå til "Administration -> Sagsstatusser"). text_journal_changed: "%{label} ændret fra %{old} til %{new}" text_journal_set_to: "%{label} sat til %{value}" text_journal_deleted: "%{label} slettet (%{old})" @@ -863,34 +865,34 @@ version_status_closed: lukket version_status_locked: låst version_status_open: åben - error_can_not_reopen_issue_on_closed_version: En sag tildelt en lukket version, kan ikke genåbnes + error_can_not_reopen_issue_on_closed_version: En sag tildelt en lukket version kan ikke genåbnes label_user_anonymous: Anonym button_move_and_follow: Flyt og overvåg setting_default_projects_modules: Standard moduler, aktiveret for nye projekter setting_gravatar_default: Standard Gravatar billede field_sharing: Delning - label_version_sharing_hierarchy: Med projekt hierarki + label_version_sharing_hierarchy: Med projekthierarki label_version_sharing_system: Med alle projekter - label_version_sharing_descendants: Med under projekter - label_version_sharing_tree: Med projekt træ + label_version_sharing_descendants: Med underprojekter + label_version_sharing_tree: Med projekttræ label_version_sharing_none: Ikke delt error_can_not_archive_project: Dette projekt kan ikke arkiveres button_duplicate: Duplikér button_copy_and_follow: Kopiér og overvåg label_copy_source: Kilde setting_issue_done_ratio: Beregn sagsløsning ratio - setting_issue_done_ratio_issue_status: Benyt sags status + setting_issue_done_ratio_issue_status: Benyt sagsstatus error_issue_done_ratios_not_updated: Sagsløsnings ratio, ikke opdateret. - error_workflow_copy_target: Vælg venligst mål tracker og rolle(r) - setting_issue_done_ratio_issue_field: Benyt sags felt + error_workflow_copy_target: Vælg venligst måltracker og rolle(r) + setting_issue_done_ratio_issue_field: Benyt sagsfelt label_copy_same_as_target: Samme som mål label_copy_target: Mål - notice_issue_done_ratios_updated: Sagsløsnings ratio opdateret. - error_workflow_copy_source: Vælg venligst en kilde tracker eller rolle - label_update_issue_done_ratios: Opdater sagsløsnings ratio + notice_issue_done_ratios_updated: Sagsløsningsratio opdateret. + error_workflow_copy_source: Vælg venligst en kildetracker eller rolle + label_update_issue_done_ratios: Opdater sagsløsningsratio setting_start_of_week: Start kalendre på permission_view_issues: Vis sager - label_display_used_statuses_only: Vis kun statuser der er benyttet af denne tracker + label_display_used_statuses_only: Vis kun statusser der er benyttet af denne tracker label_revision_id: Revision %{value} label_api_access_key: API nøgle label_api_access_key_created_on: API nøgle genereret %{value} siden @@ -912,12 +914,12 @@ label_board_locked: Låst permission_export_wiki_pages: Eksporter wiki sider setting_cache_formatted_text: Cache formatteret tekst - permission_manage_project_activities: Administrer projekt aktiviteter - error_unable_delete_issue_status: Det var ikke muligt at slette sags status + permission_manage_project_activities: Administrer projektaktiviteter + error_unable_delete_issue_status: Det var ikke muligt at slette sagsstatus label_profile: Profil - permission_manage_subtasks: Administrer under opgaver - field_parent_issue: Hoved opgave - label_subtask_plural: Under opgaver + permission_manage_subtasks: Administrer underopgaver + field_parent_issue: Hovedopgave + label_subtask_plural: Underopgaver label_project_copy_notifications: Send email notifikationer, mens projektet kopieres error_can_not_delete_custom_field: Kan ikke slette brugerdefineret felt error_unable_to_connect: Kan ikke forbinde (%{value}) @@ -927,7 +929,7 @@ label_my_page_block: blok notice_failed_to_save_members: "Fejl under lagring af medlem(mer): %{errors}." text_zoom_out: Zoom ud - text_zoom_in: Zoom in + text_zoom_in: Zoom ind notice_unable_delete_time_entry: Kan ikke slette tidsregistrering. label_overall_spent_time: Overordnet forbrug af tid field_time_entries: Log tid @@ -936,24 +938,59 @@ button_edit_associated_wikipage: "Redigér tilknyttet Wiki side: %{page_title}" text_are_you_sure_with_children: Slet sag og alle undersager? field_text: Tekstfelt - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Medlem af Gruppe - field_assigned_to_role: Medlem af Rolle - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible + label_user_mail_option_only_owner: Kun for ting jeg er ejer af + setting_default_notification_option: Standardpåmindelsesmulighed + label_user_mail_option_only_my_events: Kun for ting jeg overvåger eller er involveret i + label_user_mail_option_only_assigned: Kun for ting jeg er tildelt + label_user_mail_option_none: Ingen hændelser + field_member_of_group: Medlem af gruppe + field_assigned_to_role: Medlem af rolle + notice_not_authorized_archived_project: Projektet du prøver at tilgå, er blevet arkiveret. + label_principal_search: "Søg efter bruger eller gruppe:" + label_user_search: "Søg efter bruger:" + field_visible: Synlig setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + setting_commit_logtime_activity_id: Aktivitet for registreret tid + text_time_logged_by_changeset: Anvendt i changeset %{value}. + setting_commit_logtime_enabled: Aktiver tidsregistrering + notice_gantt_chart_truncated: Kortet er blevet afkortet, fordi det overstiger det maksimale antal elementer, der kan vises (%{max}) + setting_gantt_items_limit: Maksimalt antal af elementer der kan vises på gantt kortet + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodning af Commit beskeder + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/de.yml --- a/config/locales/de.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/de.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ # German translations for Ruby on Rails # by Clemens Kofler (clemens@railway.at) +# additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com) de: direction: ltr @@ -19,7 +20,10 @@ month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] # Used in date_select and datime_select. - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -152,7 +156,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Konto wurde erfolgreich aktualisiert. @@ -283,7 +287,7 @@ field_attr_mail: E-Mail-Attribut field_onthefly: On-the-fly-Benutzererstellung field_start_date: Beginn - field_done_ratio: % erledigt + field_done_ratio: "% erledigt" field_auth_source: Authentifizierungs-Modus field_hide_mail: E-Mail-Adresse nicht anzeigen field_comments: Kommentar @@ -341,7 +345,6 @@ setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben setting_issue_list_default_columns: Default-Spalten in der Ticket-Auflistung setting_repositories_encodings: Kodierungen der Projektarchive - setting_commit_logs_encoding: Kodierung der Commit-Log-Meldungen setting_emails_footer: E-Mail-Fußzeile setting_protocol: Protokoll setting_per_page_options: Objekte pro Seite @@ -948,13 +951,48 @@ field_member_of_group: Zuständigkeitsgruppe field_assigned_to_role: Zuständigkeitsrolle field_visible: Sichtbar - setting_emails_header: Emailkopf + setting_emails_header: E-Mail Betreffzeile setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung text_time_logged_by_changeset: Angewendet in Changeset %{value}. setting_commit_logtime_enabled: Aktiviere Zeitlogging notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max}) setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden. - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen + text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen. + label_my_queries: Meine eigenen Abfragen + text_journal_changed_no_detail: "%{label} aktualisiert" + label_news_comment_added: Kommentar zu einer News hinzugefügt + button_expand_all: Alle ausklappen + button_collapse_all: Alle einklappen + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten + text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Zeitaufwände löschen möchten? + label_role_anonymous: Anonymous + label_role_non_member: Nichtmitglied + label_issue_note_added: Notiz hinzugefügt + label_issue_status_updated: Status aktualisiert + label_issue_priority_updated: Priorität aktualisiert + label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind + field_issues_visibility: Ticket Sichtbarkeit + label_issues_visibility_all: Alle Tickets + permission_set_own_issues_private: Eigene Tickets privat oder öffentlich markieren + field_is_private: Privat + permission_set_issues_private: Tickets privat oder öffentlich markieren + label_issues_visibility_public: Alle nicht privaten Tickets + text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n löschen. + field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen + field_scm_path_encoding: Pfad Kodierung + text_scm_path_encoding_note: "Standard: UTF-8" + field_path_to_repository: Pfad zum repository + field_root_directory: Wurzelverzeichnis + field_cvs_module: Modul + field_cvsroot: CVSROOT + text_git_repository_note: Bare und lokales repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Kommando + text_scm_command_version: Version + label_git_report_last_commit: Bericht des letzten Commits für Dateien und Verzeichnisse + text_scm_config: Sie können Ihre scm Kommandos in config/configuration.yml ändern. Bitte starten Sie die Anwendung nach dem ändern neu. + text_scm_command_not_available: Scm Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel. + diff -r adc8466df404 -r 753f1380d6bc config/locales/el.yml --- a/config/locales/el.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/el.yml Mon Jun 06 14:41:04 2011 +0100 @@ -19,7 +19,10 @@ month_names: [~, Ιανουάριος, Φεβρουάριος, Μάρτιος, Απρίλιος, Μάϊος, Ιούνιος, Ιούλιος, Αύγουστος, Σεπτέμβριος, Οκτώβριος, Νοέμβριος, Δεκέμβριος] abbr_month_names: [~, Ιαν, Φεβ, Μαρ, Απρ, Μαϊ, Ιον, Ιολ, Αυγ, Σεπ, Οκτ, Νοε, Δεκ] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -252,7 +255,7 @@ field_attr_mail: Ιδιότητα email field_onthefly: Άμεση δημιουργία χρήστη field_start_date: Εκκίνηση - field_done_ratio: % επιτεύχθη + field_done_ratio: "% επιτεύχθη" field_auth_source: Τρόπος πιστοποίησης field_hide_mail: Απόκρυψη διεύθυνσης email field_comments: Σχόλιο @@ -307,7 +310,6 @@ setting_cross_project_issue_relations: Επιτρέψτε συσχετισμό θεμάτων σε διασταύρωση-έργων setting_issue_list_default_columns: Προκαθορισμένες εμφανιζόμενες στήλες στη λίστα θεμάτων setting_repositories_encodings: Κωδικοποίηση χαρακτήρων αποθετηρίου - setting_commit_logs_encoding: Κωδικοποίηση μηνυμάτων commit setting_emails_footer: Υποσέλιδο στα email setting_protocol: Πρωτόκολο setting_per_page_options: Αντικείμενα ανά σελίδα επιλογών @@ -941,3 +943,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Κωδικοποίηση μηνυμάτων commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/en-GB.yml --- a/config/locales/en-GB.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/en-GB.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,972 +1,1008 @@ -en-GB: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d/%m/%Y" - short: "%d %b" - long: "%d %B, %Y" - - day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] - abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] - abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] - # Used in date_select and datime_select. - order: [ :year, :month, :day ] - - time: - formats: - default: "%d/%m/%Y %I:%M %p" - time: "%I:%M %p" - short: "%d %b %H:%M" - long: "%d %B, %Y %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "half a minute" - less_than_x_seconds: - one: "less than 1 second" - other: "less than %{count} seconds" - x_seconds: - one: "1 second" - other: "%{count} seconds" - less_than_x_minutes: - one: "less than a minute" - other: "less than %{count} minutes" - x_minutes: - one: "1 minute" - other: "%{count} minutes" - about_x_hours: - one: "about 1 hour" - other: "about %{count} hours" - x_days: - one: "1 day" - other: "%{count} days" - about_x_months: - one: "about 1 month" - other: "about %{count} months" - x_months: - one: "1 month" - other: "%{count} months" - about_x_years: - one: "about 1 year" - other: "about %{count} years" - over_x_years: - one: "over 1 year" - other: "over %{count} years" - almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" - - number: - format: - separator: "." - delimiter: " " - precision: 3 - - currency: - format: - format: "%u%n" - unit: "£" - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "kB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "and" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "is not included in the list" - exclusion: "is reserved" - invalid: "is invalid" - confirmation: "doesn't match confirmation" - accepted: "must be accepted" - empty: "can't be empty" - blank: "can't be blank" - too_long: "is too long (maximum is %{count} characters)" - too_short: "is too short (minimum is %{count} characters)" - wrong_length: "is the wrong length (should be %{count} characters)" - taken: "has already been taken" - not_a_number: "is not a number" - not_a_date: "is not a valid date" - greater_than: "must be greater than %{count}" - greater_than_or_equal_to: "must be greater than or equal to %{count}" - equal_to: "must be equal to %{count}" - less_than: "must be less than %{count}" - less_than_or_equal_to: "must be less than or equal to %{count}" - odd: "must be odd" - even: "must be even" - greater_than_start_date: "must be greater than start date" - not_same_project: "doesn't belong to the same project" - circular_dependency: "This relation would create a circular dependency" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" - must_accept_terms_and_conditions: "You must accept the Terms and Conditions" - - actionview_instancetag_blank_option: Please select - - general_text_No: 'No' - general_text_Yes: 'Yes' - general_text_no: 'no' - general_text_yes: 'yes' - general_lang_name: 'English (British)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 - general_first_day_of_week: '1' - - notice_account_updated: Account was successfully updated. - notice_account_invalid_creditentials: Invalid user or password - notice_account_password_updated: Password was successfully updated. - notice_account_wrong_password: Wrong password - notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. - notice_account_unknown_email: Unknown user. - notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. - notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. - notice_account_activated: Your account has been activated. You can now log in. - notice_successful_create: Successful creation. - notice_successful_update: Successful update. - notice_successful_delete: Successful deletion. - notice_successful_connection: Successful connection. - notice_file_not_found: The page you were trying to access doesn't exist or has been removed. - notice_locking_conflict: Data has been updated by another user. - notice_not_authorized: You are not authorised to access this page. - notice_email_sent: "An email was sent to %{value}" - notice_email_error: "An error occurred while sending mail (%{value})" - notice_feeds_access_key_reseted: Your RSS access key was reset. - notice_api_access_key_reseted: Your API access key was reset. - notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." - notice_account_pending: "Your account was created and is now pending administrator approval." - notice_default_data_loaded: Default configuration successfully loaded. - notice_unable_delete_version: Unable to delete version. - notice_issue_done_ratios_updated: Issue done ratios updated. - - error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" - error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or can not be annotated." - error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - - warning_attachments_not_saved: "%{count} file(s) could not be saved." - - mail_subject_lost_password: "Your %{value} password" - mail_body_lost_password: 'To change your password, click on the following link:' - mail_subject_register: "Your %{value} account activation" - mail_body_register: 'To activate your account, click on the following link:' - mail_body_account_information_external: "You can use your %{value} account to log in." - mail_body_account_information: Your account information - mail_subject_account_activation_request: "%{value} account activation request" - mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 error - gui_validation_error_plural: "%{count} errors" - - field_ssamr_user_detail: - description: User Description - institution: Institution - - field_other_institution: '' - - field_name: Name - field_description: Description - field_summary: Summary - field_is_required: Required - field_firstname: Firstname - field_lastname: Lastname - field_mail: Email - field_filename: File - field_filesize: Size - field_downloads: Downloads - field_author: Author - field_created_on: Created - field_updated_on: Updated - field_field_format: Format - field_is_for_all: For all projects - field_possible_values: Possible values - field_regexp: Regular expression - field_min_length: Minimum length - field_max_length: Maximum length - field_value: Value - field_category: Category - field_title: Title - field_project: Project - field_issue: Issue - field_status: Status - field_notes: Notes - field_is_closed: Issue closed - field_is_default: Default value - field_tracker: Tracker - field_subject: Subject - field_due_date: Due date - field_assigned_to: Assignee - field_priority: Priority - field_fixed_version: Target version - field_user: User - field_role: Role - field_homepage: Homepage - field_is_public: Public - field_is_private: Private - field_parent: Subproject of - field_is_in_roadmap: Issues displayed in roadmap - field_login: Login - field_mail_notification: Email notifications - field_admin: Administrator - field_last_login_on: Last connection - field_language: Language - field_effective_date: Date - field_password: Password - field_new_password: New password - field_password_confirmation: Confirmation - field_version: Version - field_type: Type - field_host: Host - field_port: Port - field_account: Account - field_base_dn: Base DN - field_attr_login: Login attribute - field_attr_firstname: Firstname attribute - field_attr_lastname: Lastname attribute - field_attr_mail: Email attribute - field_onthefly: On-the-fly user creation - field_start_date: Start date - field_done_ratio: % Done - field_auth_source: Authentication mode - field_hide_mail: Hide my email address - field_comments: Comment - field_url: URL - field_start_page: Start page - field_subproject: Subproject - field_hours: Hours - field_activity: Activity - field_spent_on: Date - field_identifier: Identifier - field_is_filter: Used as a filter - field_issue_to: Related issue - field_delay: Delay - field_assignable: Issues can be assigned to this role - field_redirect_existing_links: Redirect existing links - field_estimated_hours: Estimated time - field_column_names: Columns - field_time_zone: Time zone - field_searchable: Searchable - field_default_value: Default value - field_comments_sorting: Display comments - field_parent_title: Parent page - field_editable: Editable - field_watcher: Watcher - field_identity_url: OpenID URL - field_content: Content - field_group_by: Group results by - field_sharing: Sharing - - setting_app_title: Application title - setting_app_subtitle: Application subtitle - setting_welcome_text: Welcome text - setting_default_language: Default language - setting_login_required: Authentication required - setting_self_registration: Self-registration - setting_attachment_max_size: Attachment max. size - setting_issues_export_limit: Issues export limit - setting_mail_from: Emission email address - setting_bcc_recipients: Blind carbon copy recipients (bcc) - setting_plain_text_mail: Plain text mail (no HTML) - setting_host_name: Host name and path - setting_text_formatting: Text formatting - setting_wiki_compression: Wiki history compression - setting_feeds_limit: Feed content limit - setting_default_projects_public: New projects are public by default - setting_autofetch_changesets: Autofetch commits - setting_sys_api_enabled: Enable WS for repository management - setting_commit_ref_keywords: Referencing keywords - setting_commit_fix_keywords: Fixing keywords - setting_autologin: Autologin - setting_date_format: Date format - setting_time_format: Time format - setting_cross_project_issue_relations: Allow cross-project issue relations - setting_issue_list_default_columns: Default columns displayed on the issue list - setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding - setting_emails_footer: Emails footer - setting_protocol: Protocol - setting_per_page_options: Objects per page options - setting_user_format: Users display format - setting_activity_days_default: Days displayed on project activity - setting_display_subprojects_issues: Display subprojects issues on main projects by default - setting_enabled_scm: Enabled SCM - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Enable WS for incoming emails - setting_mail_handler_api_key: API key - setting_sequential_project_identifiers: Generate sequential project identifiers - setting_gravatar_enabled: Use Gravatar user icons - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Max number of diff lines displayed - setting_file_max_size_displayed: Max size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Allow OpenID login and registration - setting_password_min_length: Minimum password length - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - - permission_add_project: Create project - permission_add_subprojects: Create subprojects - permission_edit_project: Edit project - permission_select_project_modules: Select project modules - permission_manage_members: Manage members - permission_manage_project_activities: Manage project activities - permission_manage_versions: Manage versions - permission_manage_categories: Manage issue categories - permission_view_issues: View Issues - permission_add_issues: Add issues - permission_edit_issues: Edit issues - permission_manage_issue_relations: Manage issue relations - permission_add_issue_notes: Add notes - permission_edit_issue_notes: Edit notes - permission_edit_own_issue_notes: Edit own notes - permission_move_issues: Move issues - permission_delete_issues: Delete issues - permission_manage_public_queries: Manage public queries - permission_save_queries: Save queries - permission_view_gantt: View gantt chart - permission_view_calendar: View calendar - permission_view_issue_watchers: View watchers list - permission_add_issue_watchers: Add watchers - permission_delete_issue_watchers: Delete watchers - permission_log_time: Log spent time - permission_view_time_entries: View spent time - permission_edit_time_entries: Edit time logs - permission_edit_own_time_entries: Edit own time logs - permission_manage_news: Manage news - permission_comment_news: Comment news - permission_manage_documents: Manage documents - permission_view_documents: View documents - permission_manage_files: Manage downloads - permission_view_files: View downloads - permission_manage_wiki: Manage wiki - permission_rename_wiki_pages: Rename wiki pages - permission_delete_wiki_pages: Delete wiki pages - permission_view_wiki_pages: View wiki - permission_view_wiki_edits: View wiki history - permission_edit_wiki_pages: Edit wiki pages - permission_delete_wiki_pages_attachments: Delete attachments - permission_protect_wiki_pages: Protect wiki pages - permission_manage_repository: Manage repository - permission_browse_repository: Browse repository - permission_view_changesets: View changesets - permission_commit_access: Commit access - permission_manage_boards: Manage boards - permission_view_messages: View messages - permission_add_messages: Post messages - permission_edit_messages: Edit messages - permission_edit_own_messages: Edit own messages - permission_delete_messages: Delete messages - permission_delete_own_messages: Delete own messages - permission_export_wiki_pages: Export wiki pages - - project_module_issue_tracking: Issue tracking (bugs and feature requests) - project_module_time_tracking: Time tracking - project_module_news: News - project_module_documents: Documents - project_module_files: Files for download - project_module_wiki: Wiki - project_module_repository: Source code repository - project_module_boards: Forums - project_module_gantt: Gantt chart - project_module_calendar: Calendar - project_module_embedded: Embedded documentation (Javadoc or Doxygen) - - label_tipoftheday: Tip of the day - label_notifications: Important Message - field_terms_and_conditions: 'Terms and Conditions:' - accept_terms_and_conditions: 'I have read and agree with the ' - label_ssamr_description: Research description - label_ssamr_details: Other Details - label_ssamr_institution: Institution - label_user: User - label_user_plural: Users - label_user_new: New user - label_user_anonymous: Anonymous - label_project: Project - label_project_new: New project - label_project_plural: Projects - label_my_project_plural: My Projects - label_other_project_plural: Other Projects - label_x_projects: - zero: no projects - one: 1 project - other: "%{count} projects" - label_project_all: All Projects - label_project_latest: Latest projects - label_managers: Managed by - label_issue: Issue - label_issue_new: New issue - label_issue_plural: Issues - label_issue_view_all: View all issues - label_issues_by: "Issues by %{value}" - label_issue_added: Issue added - label_issue_updated: Issue updated - label_document: Document - label_document_new: New document - label_document_plural: Documents - label_document_added: Document added - label_role: Role - label_role_plural: Roles - label_role_new: New role - label_role_and_permissions: Roles and permissions - label_member: Member - label_member_new: New member - label_member_plural: Members - label_tracker: Tracker - label_tracker_plural: Trackers - label_tracker_new: New tracker - label_workflow: Workflow - label_issue_status: Issue status - label_issue_status_plural: Issue statuses - label_issue_status_new: New status - label_issue_category: Issue category - label_issue_category_plural: Issue categories - label_issue_category_new: New category - label_custom_field: Custom field - label_custom_field_plural: Custom fields - label_custom_field_new: New custom field - label_enumerations: Enumerations - label_enumeration_new: New value - label_information: Information - label_information_plural: Information - label_please_login: Please log in - label_register: Register - label_login_with_open_id_option: or login with OpenID - label_password_lost: Lost password - label_home: Home - label_my_page: My page - label_my_account: My account - label_my_projects: My projects - label_administration: Administration - label_login: Sign in - label_logout: Sign out - label_help: Help - label_reported_issues: Reported issues - label_assigned_to_me_issues: Issues assigned to me - label_last_login: Last connection - label_registered_on: Registered on - label_activity: Activity - label_overall_activity: Overall activity - label_user_activity: "%{value}'s activity" - label_new: New - label_logged_as: Logged in as - label_environment: Environment - label_authentication: Authentication - label_auth_source: Authentication mode - label_auth_source_new: New authentication mode - label_auth_source_plural: Authentication modes - label_subproject_plural: Subprojects - label_subproject_new: New subproject - label_and_its_subprojects: "%{value} and its subprojects" - label_min_max_length: Min - Max length - label_list: List - label_date: Date - label_integer: Integer - label_float: Float - label_boolean: Boolean - label_string: Text - label_text: Long text - label_attribute: Attribute - label_attribute_plural: Attributes - label_download: "%{count} Download" - label_download_plural: "%{count} Downloads" - label_no_data: No data to display - label_change_status: Change status - label_history: History - label_attachment: File - label_attachment_new: New file - label_attachment_delete: Delete file - label_attachment_plural: Downloads - label_file_added: File added - label_report: Report - label_report_plural: Reports - label_news: News - label_news_new: Add news - label_news_plural: News - label_news_latest: Latest news - label_news_view_all: View all news - label_news_added: News added - label_settings: Settings - label_overview: Overview - label_version: Version - label_version_new: New version - label_version_plural: Versions - label_close_versions: Close completed versions - label_confirmation: Confirmation - label_export_to: 'Also available in:' - label_read: Read... - label_public_projects: Public projects - label_open_issues: open - label_open_issues_plural: open - label_closed_issues: closed - label_closed_issues_plural: closed - label_x_open_issues_abbr_on_total: - zero: 0 open / %{total} - one: 1 open / %{total} - other: "%{count} open / %{total}" - label_x_open_issues_abbr: - zero: 0 open - one: 1 open - other: "%{count} open" - label_x_closed_issues_abbr: - zero: 0 closed - one: 1 closed - other: "%{count} closed" - label_total: Total - label_permissions: Permissions - label_current_status: Current status - label_new_statuses_allowed: New statuses allowed - label_all: all - label_none: none - label_nobody: nobody - label_next: Next - label_previous: Previous - label_used_by: Used by - label_details: Details - label_add_note: Add a note - label_per_page: Per page - label_calendar: Calendar - label_months_from: months from - label_gantt: Gantt - label_internal: Internal - label_last_changes: "last %{count} changes" - label_change_view_all: View all changes - label_personalize_page: Personalise this page - label_comment: Comment - label_comment_plural: Comments - label_x_comments: - zero: no comments - one: 1 comment - other: "%{count} comments" - label_comment_add: Add a comment - label_comment_added: Comment added - label_comment_delete: Delete comments - label_query: Custom query - label_query_plural: Custom queries - label_query_new: New query - label_filter_add: Add filter - label_filter_plural: Filters - label_equals: is - label_not_equals: is not - label_in_less_than: in less than - label_in_more_than: in more than - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: in - label_today: today - label_all_time: all time - label_yesterday: yesterday - label_this_week: this week - label_last_week: last week - label_last_n_days: "last %{count} days" - label_this_month: this month - label_last_month: last month - label_this_year: this year - label_date_range: Date range - label_less_than_ago: less than days ago - label_more_than_ago: more than days ago - label_ago: days ago - label_contains: contains - label_not_contains: doesn't contain - label_day_plural: days - label_repository: Repository - label_repository_plural: Repositories - label_browse: Browse - label_modification: "%{count} change" - label_modification_plural: "%{count} changes" - label_branch: Branch - label_tag: Tag - label_revision: Revision - label_revision_plural: Revisions - label_revision_id: "Revision %{value}" - label_associated_revisions: Associated revisions - label_added: added - label_modified: modified - label_copied: copied - label_renamed: renamed - label_deleted: deleted - label_latest_revision: Latest revision - label_latest_revision_plural: Latest revisions - label_view_revisions: View revisions - label_view_all_revisions: View all revisions - label_max_size: Maximum size - label_sort_highest: Move to top - label_sort_higher: Move up - label_sort_lower: Move down - label_sort_lowest: Move to bottom - label_roadmap: Roadmap - label_roadmap_due_in: "Due in %{value}" - label_roadmap_overdue: "%{value} late" - label_roadmap_no_issues: No issues for this version - label_search: Search - label_result_plural: Results - label_all_words: All words - label_wiki: Wiki - label_wiki_edit: Wiki edit - label_wiki_edit_plural: Wiki edits - label_wiki_page: Wiki page - label_wiki_page_plural: Wiki pages - label_index_by_title: Index by title - label_index_by_date: Index by date - label_current_version: Current version - label_preview: Preview - label_feed_plural: Feeds - label_changes_details: Details of all changes - label_issue_tracking: Issue tracking - label_spent_time: Spent time - label_f_hour: "%{value} hour" - label_f_hour_plural: "%{value} hours" - label_time_tracking: Time tracking - label_change_plural: Changes - label_statistics: Statistics - label_commits_per_month: Commits per month - label_commits_per_author: Commits per author - label_view_diff: View differences - label_diff_inline: inline - label_diff_side_by_side: side by side - label_options: Options - label_copy_workflow_from: Copy workflow from - label_permissions_report: Permissions report - label_watched_issues: Watched issues - label_related_issues: Related issues - label_applied_status: Applied status - label_loading: Loading... - label_relation_new: New relation - label_relation_delete: Delete relation - label_relates_to: related to - label_duplicates: duplicates - label_duplicated_by: duplicated by - label_blocks: blocks - label_blocked_by: blocked by - label_precedes: precedes - label_follows: follows - label_end_to_start: end to start - label_end_to_end: end to end - label_start_to_start: start to start - label_start_to_end: start to end - label_stay_logged_in: Stay logged in - label_disabled: disabled - label_show_completed_versions: Show completed versions - label_me: me - label_board: Forum - label_board_new: New forum - label_board_plural: Forums - label_board_locked: Locked - label_board_sticky: Sticky - label_topic_plural: Topics - label_message_plural: Messages - label_message_last: Last message - label_message_new: New message - label_message_posted: Message added - label_reply_plural: Replies - label_send_information: Send account information to the user - label_year: Year - label_month: Month - label_week: Week - label_date_from: From - label_date_to: To - label_language_based: Based on user's language - label_sort_by: "Sort by %{value}" - label_send_test_email: Send a test email - label_feeds_access_key: RSS access key - label_missing_feeds_access_key: Missing a RSS access key - label_feeds_access_key_created_on: "RSS access key created %{value} ago" - label_module_plural: Modules - label_added_time_by: "Added by %{author} %{age} ago" - label_updated_time_by: "Updated by %{author} %{age} ago" - label_updated_time: "Updated %{value} ago" - label_jump_to_a_project: Jump to a project... - label_file_plural: Downloads - label_changeset_plural: Changesets - label_default_columns: Default columns - label_no_change_option: (No change) - label_bulk_edit_selected_issues: Bulk edit selected issues - label_theme: Theme - label_default: Default - label_search_titles_only: Search titles only - label_user_mail_option_all: "For any event on all my projects" - label_user_mail_option_selected: "For any event on the selected projects only..." - label_user_mail_option_none: "No events" - label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" - label_registration_activation_by_email: account activation by email - label_registration_manual_activation: manual account activation - label_registration_automatic_activation: automatic account activation - label_display_per_page: "Per page: %{value}" - label_age: Age - label_change_properties: Change properties - label_general: General - label_more: More - label_scm: SCM - label_plugins: Plugins - label_ldap_authentication: LDAP authentication - label_downloads_abbr: D/L - label_optional_description: Optional description - label_add_another_file: Add another file - label_preferences: Preferences - label_chronological_order: In chronological order - label_reverse_chronological_order: In reverse chronological order - label_planning: Planning - label_incoming_emails: Incoming emails - label_generate_key: Generate a key - label_issue_watchers: Watchers - label_example: Example - label_display: Display - label_sort: Sort - label_ascending: Ascending - label_descending: Descending - label_date_from_to: From %{start} to %{end} - label_wiki_content_added: Wiki page added - label_wiki_content_updated: Wiki page updated - label_group: Group - label_group_plural: Groups - label_group_new: New group - label_time_entry_plural: Spent time - label_version_sharing_none: Not shared - label_version_sharing_descendants: With subprojects - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_tree: With project tree - label_version_sharing_system: With all projects - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Source - label_copy_target: Target - label_copy_same_as_target: Same as target - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API access key - label_missing_api_access_key: Missing an API access key - label_api_access_key_created_on: "API access key created %{value} ago" - - button_login: Login - button_submit: Submit - button_save: Save - button_check_all: Check all - button_uncheck_all: Uncheck all - button_delete: Delete - button_create: Create - button_create_and_continue: Create and continue - button_test: Test - button_edit: Edit - button_add: Add - button_change: Change - button_apply: Apply - button_clear: Clear - button_lock: Lock - button_unlock: Unlock - button_download: Download - button_list: List - button_view: View - button_move: Move - button_move_and_follow: Move and follow - button_back: Back - button_cancel: Cancel - button_activate: Activate - button_sort: Sort - button_log_time: Log time - button_rollback: Rollback to this version - button_watch: Watch - button_unwatch: Unwatch - button_reply: Reply - button_archive: Archive - button_unarchive: Unarchive - button_reset: Reset - button_rename: Rename - button_change_password: Change password - button_copy: Copy - button_copy_and_follow: Copy and follow - button_annotate: Annotate - button_update: Update - button_configure: Configure - button_quote: Quote - button_duplicate: Duplicate - button_show: Show - - status_active: active - status_registered: registered - status_locked: locked - - version_status_open: open - version_status_locked: locked - version_status_closed: closed - - field_active: Active - - text_select_mail_notifications: Select actions for which email notifications should be sent. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 means no restriction - text_project_destroy_confirmation: Are you sure you want to delete this project and related data? - text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." - text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Are you sure? - text_journal_changed: "%{label} changed from %{old} to %{new}" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} deleted (%{old})" - text_journal_added: "%{label} %{value} added" - text_tip_issue_begin_day: task beginning this day - text_tip_issue_end_day: task ending this day - text_tip_issue_begin_end_day: task beginning and ending this day - text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier can not be changed.' - text_caracters_maximum: "%{count} characters maximum." - text_caracters_minimum: "Must be at least %{count} characters long." - text_length_between: "Length between %{min} and %{max} characters." - text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    This will be used in all project-related URLs, and as the repository name. Once saved, the identifier can not be changed.' - text_project_homepage_info: 'Link to an external project page.' - text_project_name_info: "This will be the name of your project throughout this site.
    You can change your project's name at any time, in the project's settings." - text_project_visibility_info: "If your project is not public, it will only be visible to users that you have added as project members." - text_user_ssamr_description_info: 'Please describe your current research or development interests, within the fields of audio and music.
    This information is publicly visible in your profile and you can edit it at any time.' - text_issue_parent_issue_info: 'If this is a subtask, please insert its parent task number or write the main task name.' - text_tracker_no_workflow: No workflow defined for this tracker - text_unallowed_characters: Unallowed characters - text_comma_separated: Multiple values allowed (comma separated). - text_line_separated: Multiple values allowed (one line for each value). - text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Issue %{id} has been reported by %{author}." - text_issue_updated: "Issue %{id} has been updated by %{author}." - text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? - text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" - text_issue_category_destroy_assignments: Remove category assignments - text_issue_category_reassign_to: Reassign issues to this category - text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." - text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." - text_load_default_configuration: Load the default configuration - text_status_changed_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' - text_select_project_modules: 'Select modules to enable for this project:' - text_default_administrator_account_changed: Default administrator account changed - text_file_repository_writable: Attachments directory writable - text_plugin_assets_writable: Plugin assets directory writable - text_rmagick_available: RMagick available (optional) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" - text_destroy_time_entries: Delete reported hours - text_assign_time_entries_to_project: Assign reported hours to the project - text_reassign_time_entries: 'Reassign reported hours to this issue:' - text_user_wrote: "%{value} wrote:" - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." - text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - text_settings_repo_creation: The repository for a project should be set up automatically within a few minutes of the project being created.
    You should not have to adjust any settings here; please check again in ten minutes. - - default_role_manager: Manager - default_role_developer: Developer - default_role_reporter: Reporter - default_tracker_bug: Bug - default_tracker_feature: Feature - default_tracker_support: Support - default_issue_status_new: New - default_issue_status_in_progress: In Progress - default_issue_status_resolved: Resolved - default_issue_status_feedback: Feedback - default_issue_status_closed: Closed - default_issue_status_rejected: Rejected - default_doc_category_user: User documentation - default_doc_category_tech: Technical documentation - default_priority_low: Low - default_priority_normal: Normal - default_priority_high: High - default_priority_urgent: Urgent - default_priority_immediate: Immediate - default_activity_design: Design - default_activity_development: Development - - enumeration_issue_priorities: Issue priorities - enumeration_doc_categories: Document categories - enumeration_activities: Activities (time tracking) - enumeration_system_activity: System Activity - - notice_unable_delete_time_entry: Unable to delete time log entry. - error_can_not_delete_custom_field: Unable to delete custom field - permission_manage_subtasks: Manage subtasks - label_profile: Profile - error_unable_to_connect: Unable to connect (%{value}) - label_overall_spent_time: Overall spent time - error_can_not_remove_role: This role is in use and can not be deleted. - field_principal: Principal - field_parent_issue: Parent task - label_my_page_block: My page block - text_zoom_out: Zoom out - text_zoom_in: Zoom in - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - label_project_copy_notifications: Send email notifications during the project copy - field_time_entries: Log time - field_member_of_group: Member of Group - field_assigned_to_role: Member of Role - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search by name:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +en-GB: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d/%m/%Y" + short: "%d %b" + long: "%d %B, %Y" + + day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] + abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] + abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] + # Used in date_select and datime_select. + order: + - :year + - :month + - :day + + time: + formats: + default: "%d/%m/%Y %I:%M %p" + time: "%I:%M %p" + short: "%d %b %H:%M" + long: "%d %B, %Y %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "half a minute" + less_than_x_seconds: + one: "less than 1 second" + other: "less than %{count} seconds" + x_seconds: + one: "1 second" + other: "%{count} seconds" + less_than_x_minutes: + one: "less than a minute" + other: "less than %{count} minutes" + x_minutes: + one: "1 minute" + other: "%{count} minutes" + about_x_hours: + one: "about 1 hour" + other: "about %{count} hours" + x_days: + one: "1 day" + other: "%{count} days" + about_x_months: + one: "about 1 month" + other: "about %{count} months" + x_months: + one: "1 month" + other: "%{count} months" + about_x_years: + one: "about 1 year" + other: "about %{count} years" + over_x_years: + one: "over 1 year" + other: "over %{count} years" + almost_x_years: + one: "almost 1 year" + other: "almost %{count} years" + + number: + format: + separator: "." + delimiter: " " + precision: 3 + + currency: + format: + format: "%u%n" + unit: "£" + + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "kB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "and" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "is not included in the list" + exclusion: "is reserved" + invalid: "is invalid" + confirmation: "doesn't match confirmation" + accepted: "must be accepted" + empty: "can't be empty" + blank: "can't be blank" + too_long: "is too long (maximum is %{count} characters)" + too_short: "is too short (minimum is %{count} characters)" + wrong_length: "is the wrong length (should be %{count} characters)" + taken: "has already been taken" + not_a_number: "is not a number" + not_a_date: "is not a valid date" + greater_than: "must be greater than %{count}" + greater_than_or_equal_to: "must be greater than or equal to %{count}" + equal_to: "must be equal to %{count}" + less_than: "must be less than %{count}" + less_than_or_equal_to: "must be less than or equal to %{count}" + odd: "must be odd" + even: "must be even" + greater_than_start_date: "must be greater than start date" + not_same_project: "doesn't belong to the same project" + circular_dependency: "This relation would create a circular dependency" + cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" + must_accept_terms_and_conditions: "You must accept the Terms and Conditions" + + actionview_instancetag_blank_option: Please select + + general_text_No: 'No' + general_text_Yes: 'Yes' + general_text_no: 'no' + general_text_yes: 'yes' + general_lang_name: 'English (British)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Account was successfully updated. + notice_account_invalid_creditentials: Invalid user or password + notice_account_password_updated: Password was successfully updated. + notice_account_wrong_password: Wrong password + notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. + notice_account_unknown_email: Unknown user. + notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. + notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. + notice_account_activated: Your account has been activated. You can now log in. + notice_successful_create: Successful creation. + notice_successful_update: Successful update. + notice_successful_delete: Successful deletion. + notice_successful_connection: Successful connection. + notice_file_not_found: The page you were trying to access doesn't exist or has been removed. + notice_locking_conflict: Data has been updated by another user. + notice_not_authorized: You are not authorised to access this page. + notice_not_authorized_archived_project: The project you're trying to access has been archived. + notice_email_sent: "An email was sent to %{value}" + notice_email_error: "An error occurred while sending mail (%{value})" + notice_feeds_access_key_reseted: Your RSS access key was reset. + notice_api_access_key_reseted: Your API access key was reset. + notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_default_data_loaded: Default configuration successfully loaded. + notice_unable_delete_version: Unable to delete version. + notice_unable_delete_time_entry: Unable to delete time log entry. + notice_issue_done_ratios_updated: Issue done ratios updated. + notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" + + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" + error_scm_annotate: "The entry does not exist or cannot be annotated." + error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_delete_custom_field: Unable to delete custom field + error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted." + error_can_not_remove_role: "This role is in use and cannot be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' + error_can_not_archive_project: This project cannot be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + error_unable_delete_issue_status: 'Unable to delete issue status' + error_unable_to_connect: "Unable to connect (%{value})" + warning_attachments_not_saved: "%{count} file(s) could not be saved." + + mail_subject_lost_password: "Your %{value} password" + mail_body_lost_password: 'To change your password, click on the following link:' + mail_subject_register: "Your %{value} account activation" + mail_body_register: 'To activate your account, click on the following link:' + mail_body_account_information_external: "You can use your %{value} account to log in." + mail_body_account_information: Your account information + mail_subject_account_activation_request: "%{value} account activation request" + mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 error + gui_validation_error_plural: "%{count} errors" + + field_ssamr_user_detail: + description: User Description + institution: Institution + + field_other_institution: '' + + field_name: Name + field_description: Description + field_summary: Summary + field_is_required: Required + field_firstname: First name + field_lastname: Last name + field_mail: Email + field_filename: File + field_filesize: Size + field_downloads: Downloads + field_author: Author + field_created_on: Created + field_updated_on: Updated + field_field_format: Format + field_is_for_all: For all projects + field_possible_values: Possible values + field_regexp: Regular expression + field_min_length: Minimum length + field_max_length: Maximum length + field_value: Value + field_category: Category + field_title: Title + field_project: Project + field_issue: Issue + field_status: Status + field_notes: Notes + field_is_closed: Issue closed + field_is_default: Default value + field_tracker: Tracker + field_subject: Subject + field_due_date: Due date + field_assigned_to: Assignee + field_priority: Priority + field_fixed_version: Target version + field_user: User + field_principal: Principal + field_role: Role + field_homepage: Homepage + field_is_public: Public + field_is_private: Private + field_parent: Subproject of + field_is_in_roadmap: Issues displayed in roadmap + field_login: Login + field_mail_notification: Email notifications + field_admin: Administrator + field_last_login_on: Last connection + field_language: Language + field_effective_date: Date + field_password: Password + field_new_password: New password + field_password_confirmation: Confirmation + field_version: Version + field_type: Type + field_host: Host + field_port: Port + field_account: Account + field_base_dn: Base DN + field_attr_login: Login attribute + field_attr_firstname: Firstname attribute + field_attr_lastname: Lastname attribute + field_attr_mail: Email attribute + field_onthefly: On-the-fly user creation + field_start_date: Start date + field_done_ratio: "% Done" + field_auth_source: Authentication mode + field_hide_mail: Hide my email address + field_comments: Comment + field_url: URL + field_start_page: Start page + field_subproject: Subproject + field_hours: Hours + field_activity: Activity + field_spent_on: Date + field_identifier: Identifier + field_is_filter: Used as a filter + field_issue_to: Related issue + field_delay: Delay + field_assignable: Issues can be assigned to this role + field_redirect_existing_links: Redirect existing links + field_estimated_hours: Estimated time + field_column_names: Columns + field_time_entries: Log time + field_time_zone: Time zone + field_searchable: Searchable + field_default_value: Default value + field_comments_sorting: Display comments + field_parent_title: Parent page + field_editable: Editable + field_watcher: Watcher + field_identity_url: OpenID URL + field_content: Content + field_group_by: Group results by + field_sharing: Sharing + field_parent_issue: Parent task + field_member_of_group: "Assignee's group" + field_assigned_to_role: "Assignee's role" + field_text: Text field + field_visible: Visible + field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" + + setting_app_title: Application title + setting_app_subtitle: Application subtitle + setting_welcome_text: Welcome text + setting_default_language: Default language + setting_login_required: Authentication required + setting_self_registration: Self-registration + setting_attachment_max_size: Attachment max. size + setting_issues_export_limit: Issues export limit + setting_mail_from: Emission email address + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_plain_text_mail: Plain text mail (no HTML) + setting_host_name: Host name and path + setting_text_formatting: Text formatting + setting_wiki_compression: Wiki history compression + setting_feeds_limit: Feed content limit + setting_default_projects_public: New projects are public by default + setting_autofetch_changesets: Autofetch commits + setting_sys_api_enabled: Enable WS for repository management + setting_commit_ref_keywords: Referencing keywords + setting_commit_fix_keywords: Fixing keywords + setting_autologin: Autologin + setting_date_format: Date format + setting_time_format: Time format + setting_cross_project_issue_relations: Allow cross-project issue relations + setting_issue_list_default_columns: Default columns displayed on the issue list + setting_repositories_encodings: Repositories encodings + setting_emails_header: Emails header + setting_emails_footer: Emails footer + setting_protocol: Protocol + setting_per_page_options: Objects per page options + setting_user_format: Users display format + setting_activity_days_default: Days displayed on project activity + setting_display_subprojects_issues: Display subprojects issues on main projects by default + setting_enabled_scm: Enabled SCM + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Enable WS for incoming emails + setting_mail_handler_api_key: API key + setting_sequential_project_identifiers: Generate sequential project identifiers + setting_gravatar_enabled: Use Gravatar user icons + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Max number of diff lines displayed + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Allow OpenID login and registration + setting_password_min_length: Minimum password length + setting_new_project_user_role_id: Role given to a non-admin user who creates a project + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + setting_default_notification_option: Default notification option + setting_commit_logtime_enabled: Enable time logging + setting_commit_logtime_activity_id: Activity for logged time + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + + permission_add_project: Create project + permission_add_subprojects: Create subprojects + permission_edit_project: Edit project + permission_select_project_modules: Select project modules + permission_manage_members: Manage members + permission_manage_project_activities: Manage project activities + permission_manage_versions: Manage versions + permission_manage_categories: Manage issue categories + permission_view_issues: View Issues + permission_add_issues: Add issues + permission_edit_issues: Edit issues + permission_manage_issue_relations: Manage issue relations + permission_add_issue_notes: Add notes + permission_edit_issue_notes: Edit notes + permission_edit_own_issue_notes: Edit own notes + permission_move_issues: Move issues + permission_delete_issues: Delete issues + permission_manage_public_queries: Manage public queries + permission_save_queries: Save queries + permission_view_gantt: View gantt chart + permission_view_calendar: View calendar + permission_view_issue_watchers: View watchers list + permission_add_issue_watchers: Add watchers + permission_delete_issue_watchers: Delete watchers + permission_log_time: Log spent time + permission_view_time_entries: View spent time + permission_edit_time_entries: Edit time logs + permission_edit_own_time_entries: Edit own time logs + permission_manage_news: Manage news + permission_comment_news: Comment news + permission_manage_documents: Manage documents + permission_view_documents: View documents + permission_manage_files: Manage downloads + permission_view_files: View downloads + permission_manage_wiki: Manage wiki + permission_rename_wiki_pages: Rename wiki pages + permission_delete_wiki_pages: Delete wiki pages + permission_view_wiki_pages: View wiki + permission_view_wiki_edits: View wiki history + permission_edit_wiki_pages: Edit wiki pages + permission_delete_wiki_pages_attachments: Delete attachments + permission_protect_wiki_pages: Protect wiki pages + permission_manage_repository: Manage repository + permission_browse_repository: Browse repository + permission_view_changesets: View changesets + permission_commit_access: Commit access + permission_manage_boards: Manage forums + permission_view_messages: View messages + permission_add_messages: Post messages + permission_edit_messages: Edit messages + permission_edit_own_messages: Edit own messages + permission_delete_messages: Delete messages + permission_delete_own_messages: Delete own messages + permission_export_wiki_pages: Export wiki pages + permission_manage_subtasks: Manage subtasks + + project_module_issue_tracking: Issue tracking (bugs and feature requests) + project_module_time_tracking: Time tracking + project_module_news: News + project_module_documents: Documents + project_module_files: Files for download + project_module_wiki: Wiki + project_module_repository: Source code repository + project_module_boards: Forums + project_module_calendar: Calendar + project_module_gantt: Gantt + project_module_embedded: Embedded documentation (Javadoc or Doxygen) + + label_tipoftheday: Tip of the day + label_notifications: Important Message + field_terms_and_conditions: 'Terms and Conditions:' + accept_terms_and_conditions: 'I have read and agree with the ' + label_ssamr_description: Research description + label_ssamr_details: Other Details + label_ssamr_institution: Institution + label_user: User + label_user_plural: Users + label_user_new: New user + label_user_anonymous: Anonymous + label_project: Project + label_project_new: New project + label_project_plural: Projects + label_my_project_plural: My Projects + label_other_project_plural: Other Projects + label_x_projects: + zero: no projects + one: 1 project + other: "%{count} projects" + label_project_all: All Projects + label_project_latest: Latest projects + label_managers: Managed by + label_issue: Issue + label_issue_new: New issue + label_issue_plural: Issues + label_issue_view_all: View all issues + label_issues_by: "Issues by %{value}" + label_issue_added: Issue added + label_issue_updated: Issue updated + label_document: Document + label_document_new: New document + label_document_plural: Documents + label_document_added: Document added + label_role: Role + label_role_plural: Roles + label_role_new: New role + label_role_and_permissions: Roles and permissions + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_member: Member + label_member_new: New member + label_member_plural: Members + label_tracker: Tracker + label_tracker_plural: Trackers + label_tracker_new: New tracker + label_workflow: Workflow + label_issue_status: Issue status + label_issue_status_plural: Issue statuses + label_issue_status_new: New status + label_issue_category: Issue category + label_issue_category_plural: Issue categories + label_issue_category_new: New category + label_custom_field: Custom field + label_custom_field_plural: Custom fields + label_custom_field_new: New custom field + label_enumerations: Enumerations + label_enumeration_new: New value + label_information: Information + label_information_plural: Information + label_please_login: Please log in + label_register: Register + label_login_with_open_id_option: or login with OpenID + label_password_lost: Lost password + label_home: Home + label_my_page: My page + label_my_account: My account + label_my_projects: My projects + label_my_page_block: My page block + label_administration: Administration + label_login: Sign in + label_logout: Sign out + label_help: Help + label_reported_issues: Reported issues + label_assigned_to_me_issues: Issues assigned to me + label_last_login: Last connection + label_registered_on: Registered on + label_activity: Activity + label_overall_activity: Overall activity + label_user_activity: "%{value}'s activity" + label_new: New + label_logged_as: Logged in as + label_environment: Environment + label_authentication: Authentication + label_auth_source: Authentication mode + label_auth_source_new: New authentication mode + label_auth_source_plural: Authentication modes + label_subproject_plural: Subprojects + label_subproject_new: New subproject + label_and_its_subprojects: "%{value} and its subprojects" + label_min_max_length: Min - Max length + label_list: List + label_date: Date + label_integer: Integer + label_float: Float + label_boolean: Boolean + label_string: Text + label_text: Long text + label_attribute: Attribute + label_attribute_plural: Attributes + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" + label_no_data: No data to display + label_change_status: Change status + label_history: History + label_attachment: File + label_attachment_new: New file + label_attachment_delete: Delete file + label_attachment_plural: Downloads + label_file_added: File added + label_report: Report + label_report_plural: Reports + label_news: News + label_news_new: Add news + label_news_plural: News + label_news_latest: Latest news + label_news_view_all: View all news + label_news_added: News added + label_news_comment_added: Comment added to a news + label_settings: Settings + label_overview: Overview + label_version: Version + label_version_new: New version + label_version_plural: Versions + label_close_versions: Close completed versions + label_confirmation: Confirmation + label_export_to: 'Also available in:' + label_read: Read... + label_public_projects: Public projects + label_open_issues: open + label_open_issues_plural: open + label_closed_issues: closed + label_closed_issues_plural: closed + label_x_open_issues_abbr_on_total: + zero: 0 open / %{total} + one: 1 open / %{total} + other: "%{count} open / %{total}" + label_x_open_issues_abbr: + zero: 0 open + one: 1 open + other: "%{count} open" + label_x_closed_issues_abbr: + zero: 0 closed + one: 1 closed + other: "%{count} closed" + label_total: Total + label_permissions: Permissions + label_current_status: Current status + label_new_statuses_allowed: New statuses allowed + label_all: all + label_none: none + label_nobody: nobody + label_next: Next + label_previous: Previous + label_used_by: Used by + label_details: Details + label_add_note: Add a note + label_per_page: Per page + label_calendar: Calendar + label_months_from: months from + label_gantt: Gantt + label_internal: Internal + label_last_changes: "last %{count} changes" + label_change_view_all: View all changes + label_personalize_page: Personalise this page + label_comment: Comment + label_comment_plural: Comments + label_x_comments: + zero: no comments + one: 1 comment + other: "%{count} comments" + label_comment_add: Add a comment + label_comment_added: Comment added + label_comment_delete: Delete comments + label_query: Custom query + label_query_plural: Custom queries + label_query_new: New query + label_my_queries: My custom queries + label_filter_add: Add filter + label_filter_plural: Filters + label_equals: is + label_not_equals: is not + label_in_less_than: in less than + label_in_more_than: in more than + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: in + label_today: today + label_all_time: all time + label_yesterday: yesterday + label_this_week: this week + label_last_week: last week + label_last_n_days: "last %{count} days" + label_this_month: this month + label_last_month: last month + label_this_year: this year + label_date_range: Date range + label_less_than_ago: less than days ago + label_more_than_ago: more than days ago + label_ago: days ago + label_contains: contains + label_not_contains: doesn't contain + label_day_plural: days + label_repository: Repository + label_repository_plural: Repositories + label_browse: Browse + label_modification: "%{count} change" + label_modification_plural: "%{count} changes" + label_branch: Branch + label_tag: Tag + label_revision: Revision + label_revision_plural: Revisions + label_revision_id: "Revision %{value}" + label_associated_revisions: Associated revisions + label_added: added + label_modified: modified + label_copied: copied + label_renamed: renamed + label_deleted: deleted + label_latest_revision: Latest revision + label_latest_revision_plural: Latest revisions + label_view_revisions: View revisions + label_view_all_revisions: View all revisions + label_max_size: Maximum size + label_sort_highest: Move to top + label_sort_higher: Move up + label_sort_lower: Move down + label_sort_lowest: Move to bottom + label_roadmap: Roadmap + label_roadmap_due_in: "Due in %{value}" + label_roadmap_overdue: "%{value} late" + label_roadmap_no_issues: No issues for this version + label_search: Search + label_result_plural: Results + label_all_words: All words + label_wiki: Wiki + label_wiki_edit: Wiki edit + label_wiki_edit_plural: Wiki edits + label_wiki_page: Wiki page + label_wiki_page_plural: Wiki pages + label_index_by_title: Index by title + label_index_by_date: Index by date + label_current_version: Current version + label_preview: Preview + label_feed_plural: Feeds + label_changes_details: Details of all changes + label_issue_tracking: Issue tracking + label_spent_time: Spent time + label_overall_spent_time: Overall spent time + label_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" + label_time_tracking: Time tracking + label_change_plural: Changes + label_statistics: Statistics + label_commits_per_month: Commits per month + label_commits_per_author: Commits per author + label_view_diff: View differences + label_diff_inline: inline + label_diff_side_by_side: side by side + label_options: Options + label_copy_workflow_from: Copy workflow from + label_permissions_report: Permissions report + label_watched_issues: Watched issues + label_related_issues: Related issues + label_applied_status: Applied status + label_loading: Loading... + label_relation_new: New relation + label_relation_delete: Delete relation + label_relates_to: related to + label_duplicates: duplicates + label_duplicated_by: duplicated by + label_blocks: blocks + label_blocked_by: blocked by + label_precedes: precedes + label_follows: follows + label_end_to_start: end to start + label_end_to_end: end to end + label_start_to_start: start to start + label_start_to_end: start to end + label_stay_logged_in: Stay logged in + label_disabled: disabled + label_show_completed_versions: Show completed versions + label_me: me + label_board: Forum + label_board_new: New forum + label_board_plural: Forums + label_board_locked: Locked + label_board_sticky: Sticky + label_topic_plural: Topics + label_message_plural: Messages + label_message_last: Last message + label_message_new: New message + label_message_posted: Message added + label_reply_plural: Replies + label_send_information: Send account information to the user + label_year: Year + label_month: Month + label_week: Week + label_date_from: From + label_date_to: To + label_language_based: Based on user's language + label_sort_by: "Sort by %{value}" + label_send_test_email: Send a test email + label_feeds_access_key: RSS access key + label_missing_feeds_access_key: Missing a RSS access key + label_feeds_access_key_created_on: "RSS access key created %{value} ago" + label_module_plural: Modules + label_added_time_by: "Added by %{author} %{age} ago" + label_updated_time_by: "Updated by %{author} %{age} ago" + label_updated_time: "Updated %{value} ago" + label_jump_to_a_project: Jump to a project... + label_file_plural: Downloads + label_changeset_plural: Changesets + label_default_columns: Default columns + label_no_change_option: (No change) + label_bulk_edit_selected_issues: Bulk edit selected issues + label_theme: Theme + label_default: Default + label_search_titles_only: Search titles only + label_user_mail_option_all: "For any event on all my projects" + label_user_mail_option_selected: "For any event on the selected projects only..." + label_user_mail_option_none: "No events" + label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in" + label_user_mail_option_only_assigned: "Only for things I am assigned to" + label_user_mail_option_only_owner: "Only for things I am the owner of" + label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" + label_registration_activation_by_email: account activation by email + label_registration_manual_activation: manual account activation + label_registration_automatic_activation: automatic account activation + label_display_per_page: "Per page: %{value}" + label_age: Age + label_change_properties: Change properties + label_general: General + label_more: More + label_scm: SCM + label_plugins: Plugins + label_ldap_authentication: LDAP authentication + label_downloads_abbr: D/L + label_optional_description: Optional description + label_add_another_file: Add another file + label_preferences: Preferences + label_chronological_order: In chronological order + label_reverse_chronological_order: In reverse chronological order + label_planning: Planning + label_incoming_emails: Incoming emails + label_generate_key: Generate a key + label_issue_watchers: Watchers + label_example: Example + label_display: Display + label_sort: Sort + label_ascending: Ascending + label_descending: Descending + label_date_from_to: From %{start} to %{end} + label_wiki_content_added: Wiki page added + label_wiki_content_updated: Wiki page updated + label_group: Group + label_group_plural: Groups + label_group_new: New group + label_time_entry_plural: Spent time + label_version_sharing_none: Not shared + label_version_sharing_descendants: With subprojects + label_version_sharing_hierarchy: With project hierarchy + label_version_sharing_tree: With project tree + label_version_sharing_system: With all projects + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Source + label_copy_target: Target + label_copy_same_as_target: Same as target + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API access key + label_missing_api_access_key: Missing an API access key + label_api_access_key_created_on: "API access key created %{value} ago" + label_profile: Profile + label_subtask_plural: Subtasks + label_project_copy_notifications: Send email notifications during the project copy + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + + button_login: Login + button_submit: Submit + button_save: Save + button_check_all: Check all + button_uncheck_all: Uncheck all + button_collapse_all: Collapse all + button_expand_all: Expand all + button_delete: Delete + button_create: Create + button_create_and_continue: Create and continue + button_test: Test + button_edit: Edit + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + button_add: Add + button_change: Change + button_apply: Apply + button_clear: Clear + button_lock: Lock + button_unlock: Unlock + button_download: Download + button_list: List + button_view: View + button_move: Move + button_move_and_follow: Move and follow + button_back: Back + button_cancel: Cancel + button_activate: Activate + button_sort: Sort + button_log_time: Log time + button_rollback: Rollback to this version + button_watch: Watch + button_unwatch: Unwatch + button_reply: Reply + button_archive: Archive + button_unarchive: Unarchive + button_reset: Reset + button_rename: Rename + button_change_password: Change password + button_copy: Copy + button_copy_and_follow: Copy and follow + button_annotate: Annotate + button_update: Update + button_configure: Configure + button_quote: Quote + button_duplicate: Duplicate + button_show: Show + + status_active: active + status_registered: registered + status_locked: locked + + version_status_open: open + version_status_locked: locked + version_status_closed: closed + + field_active: Active + + text_select_mail_notifications: Select actions for which email notifications should be sent. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 means no restriction + text_project_destroy_confirmation: Are you sure you want to delete this project and related data? + text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." + text_workflow_edit: Select a role and a tracker to edit the workflow + text_are_you_sure: Are you sure? + text_are_you_sure_with_children: "Delete issue and all child issues?" + text_journal_changed: "%{label} changed from %{old} to %{new}" + text_journal_changed_no_detail: "%{label} updated" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" + text_journal_added: "%{label} %{value} added" + text_tip_issue_begin_day: task beginning this day + text_tip_issue_end_day: task ending this day + text_tip_issue_begin_end_day: task beginning and ending this day + text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier cannot be changed.' + text_caracters_maximum: "%{count} characters maximum." + text_caracters_minimum: "Must be at least %{count} characters long." + text_length_between: "Length between %{min} and %{max} characters." + text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    This will be used in all project-related URLs, and as the repository name. Once saved, the identifier can not be changed.' + text_project_homepage_info: 'Link to an external project page.' + text_project_name_info: "This will be the name of your project throughout this site.
    You can change your project's name at any time, in the project's settings." + text_project_visibility_info: "If your project is not public, it will only be visible to users that you have added as project members." + text_user_ssamr_description_info: 'Please describe your current research or development interests, within the fields of audio and music.
    This information is publicly visible in your profile and you can edit it at any time.' + text_issue_parent_issue_info: 'If this is a subtask, please insert its parent task number or write the main task name.' + text_tracker_no_workflow: No workflow defined for this tracker + text_unallowed_characters: Unallowed characters + text_comma_separated: Multiple values allowed (comma separated). + text_line_separated: Multiple values allowed (one line for each value). + text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." + text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? + text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" + text_issue_category_destroy_assignments: Remove category assignments + text_issue_category_reassign_to: Reassign issues to this category + text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." + text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_load_default_configuration: Load the default configuration + text_status_changed_by_changeset: "Applied in changeset %{value}." + text_time_logged_by_changeset: "Applied in changeset %{value}." + text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' + text_select_project_modules: 'Select modules to enable for this project:' + text_default_administrator_account_changed: Default administrator account changed + text_file_repository_writable: Attachments directory writable + text_plugin_assets_writable: Plugin assets directory writable + text_rmagick_available: RMagick available (optional) + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" + text_destroy_time_entries: Delete reported hours + text_assign_time_entries_to_project: Assign reported hours to the project + text_reassign_time_entries: 'Reassign reported hours to this issue:' + text_user_wrote: "%{value} wrote:" + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." + text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." + text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + text_settings_repo_creation: The repository for a project should be set up automatically within a few minutes of the project being created.
    You should not have to adjust any settings here; please check again in ten minutes. + text_zoom_in: Zoom in + text_zoom_out: Zoom out + text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." + + default_role_manager: Manager + default_role_developer: Developer + default_role_reporter: Reporter + default_tracker_bug: Bug + default_tracker_feature: Feature + default_tracker_support: Support + default_issue_status_new: New + default_issue_status_in_progress: In Progress + default_issue_status_resolved: Resolved + default_issue_status_feedback: Feedback + default_issue_status_closed: Closed + default_issue_status_rejected: Rejected + default_doc_category_user: User documentation + default_doc_category_tech: Technical documentation + default_priority_low: Low + default_priority_normal: Normal + default_priority_high: High + default_priority_urgent: Urgent + default_priority_immediate: Immediate + default_activity_design: Design + default_activity_development: Development + + enumeration_issue_priorities: Issue priorities + enumeration_doc_categories: Document categories + enumeration_activities: Activities (time tracking) + enumeration_system_activity: System Activity + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. + label_principal_search: "Search by name:" diff -r adc8466df404 -r 753f1380d6bc config/locales/en.yml --- a/config/locales/en.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/en.yml Mon Jun 06 14:41:04 2011 +0100 @@ -17,7 +17,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -66,11 +69,11 @@ other: "almost %{count} years" number: - # Default format for numbers format: separator: "." delimiter: "" precision: 3 + human: format: delimiter: "" @@ -122,7 +125,7 @@ greater_than_start_date: "must be greater than start date" not_same_project: "doesn't belong to the same project" circular_dependency: "This relation would create a circular dependency" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" must_accept_terms_and_conditions: "You must accept the Terms and Conditions" actionview_instancetag_blank_option: Please select @@ -135,7 +138,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: Account was successfully updated. @@ -172,15 +175,15 @@ error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or can not be annotated." + error_scm_annotate: "The entry does not exist or cannot be annotated." error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' error_can_not_delete_custom_field: Unable to delete custom field - error_can_not_delete_tracker: "This tracker contains issues and can't be deleted." - error_can_not_remove_role: "This role is in use and can not be deleted." - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived + error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted." + error_can_not_remove_role: "This role is in use and cannot be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' + error_can_not_archive_project: This project cannot be archived error_issue_done_ratios_not_updated: "Issue done ratios not updated." error_workflow_copy_source: 'Please select a source tracker or role' error_workflow_copy_target: 'Please select target tracker(s) and role(s)' @@ -275,7 +278,7 @@ field_attr_mail: Email attribute field_onthefly: On-the-fly user creation field_start_date: Start date - field_done_ratio: % Done + field_done_ratio: "% Done" field_auth_source: Authentication mode field_hide_mail: Hide my email address field_comments: Comment @@ -311,7 +314,15 @@ field_text: Text field field_visible: Visible field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" - + field_issues_visibility: Issues visibility + field_is_private: Private + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvsroot: CVSROOT + field_cvs_module: Module + field_terms_and_conditions: 'Terms and Conditions:' accept_terms_and_conditions: 'I have read and agree with the ' setting_app_title: Application title @@ -340,7 +351,6 @@ setting_cross_project_issue_relations: Allow cross-project issue relations setting_issue_list_default_columns: Default columns displayed on the issue list setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding setting_emails_header: Emails header setting_emails_footer: Emails footer setting_protocol: Protocol @@ -385,6 +395,8 @@ permission_add_issues: Add issues permission_edit_issues: Edit issues permission_manage_issue_relations: Manage issue relations + permission_set_issues_private: Set issues public or private + permission_set_own_issues_private: Set own issues public or private permission_add_issue_notes: Add notes permission_edit_issue_notes: Edit notes permission_edit_own_issue_notes: Edit own notes @@ -419,7 +431,7 @@ permission_browse_repository: Browse repository permission_view_changesets: View changesets permission_commit_access: Commit access - permission_manage_boards: Manage boards + permission_manage_boards: Manage forums permission_view_messages: View messages permission_add_messages: Post messages permission_edit_messages: Edit messages @@ -467,6 +479,9 @@ label_issues_by: "Issues by %{value}" label_issue_added: Issue added label_issue_updated: Issue updated + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated label_document: Document label_document_new: New document label_document_plural: Documents @@ -475,6 +490,8 @@ label_role_plural: Roles label_role_new: New role label_role_and_permissions: Roles and permissions + label_role_anonymous: Anonymous + label_role_non_member: Non member label_member: Member label_member_new: New member label_member_plural: Members @@ -554,6 +571,7 @@ label_news_latest: Latest news label_news_view_all: View all news label_news_added: News added + label_news_comment_added: Comment added to a news label_settings: Settings label_overview: Overview label_version: Version @@ -751,6 +769,7 @@ label_default_columns: Default columns label_no_change_option: (No change) label_bulk_edit_selected_issues: Bulk edit selected issues + label_bulk_edit_selected_time_entries: Bulk edit selected time entries label_theme: Theme label_default: Default label_search_titles_only: Search titles only @@ -812,12 +831,20 @@ label_project_copy_notifications: Send email notifications during the project copy label_principal_search: "Search by name:" label_user_search: "Search for user:" - + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_issues_visibility_all: All issues + label_issues_visibility_public: All non private issues + label_issues_visibility_own: Issues created by or assigned to the user + label_git_report_last_commit: Report last commit for files and directories + button_login: Login button_submit: Submit button_save: Save button_check_all: Check all button_uncheck_all: Uncheck all + button_collapse_all: Collapse all + button_expand_all: Expand all button_delete: Delete button_create: Create button_create_and_continue: Create and continue @@ -857,24 +884,24 @@ button_quote: Quote button_duplicate: Duplicate button_show: Show - + status_active: active status_registered: registered status_locked: locked - + version_status_open: open version_status_locked: locked version_status_closed: closed field_active: Active - + text_select_mail_notifications: Select actions for which email notifications should be sent. text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 means no restriction - text_project_destroy_confirmation: Are you sure you want to delete this project and related data ? + text_project_destroy_confirmation: Are you sure you want to delete this project and related data? text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Are you sure ? + text_are_you_sure: Are you sure? text_are_you_sure_with_children: "Delete issue and all child issues?" text_journal_changed: "%{label} changed from %{old} to %{new}" text_journal_changed_no_detail: "%{label} updated" @@ -884,7 +911,7 @@ text_tip_issue_begin_day: issue beginning this day text_tip_issue_end_day: issue ending this day text_tip_issue_begin_end_day: issue beginning and ending this day - text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier can not be changed.' + text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier cannot be changed.' text_caracters_maximum: "%{count} characters maximum." text_caracters_minimum: "Must be at least %{count} characters long." text_length_between: "Length between %{min} and %{max} characters." @@ -897,8 +924,8 @@ text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_issue_added: "Issue %{id} has been reported by %{author}." text_issue_updated: "Issue %{id} has been updated by %{author}." - text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ? - text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do ?" + text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? + text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" text_issue_category_destroy_assignments: Remove category assignments text_issue_category_reassign_to: Reassign issues to this category text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." @@ -906,13 +933,15 @@ text_load_default_configuration: Load the default configuration text_status_changed_by_changeset: "Applied in changeset %{value}." text_time_logged_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?' + text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' + text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)." + text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?' text_select_project_modules: 'Select modules to enable for this project:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Attachments directory writable text_plugin_assets_writable: Plugin assets directory writable text_rmagick_available: RMagick available (optional) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?" + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" text_destroy_time_entries: Delete reported hours text_assign_time_entries_to_project: Assign reported hours to the project text_reassign_time_entries: 'Reassign reported hours to this issue:' @@ -932,7 +961,14 @@ text_zoom_out: Zoom out text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." text_settings_repo_creation: The repository for a project should be set up automatically within a few minutes of the project being created.
    You should not have to adjust any settings here.
    Please check again in ten minutes, and contact us if there is any problem. - + text_scm_path_encoding_note: "Default: UTF-8" + text_git_repository_note: "Bare and local repository (e.g. /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "Local repository (e.g. /hgrepo, c:\hgrepo)" + text_scm_command: Command + text_scm_command_version: Version + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. + default_role_manager: Manager default_role_developer: Developer default_role_reporter: Reporter @@ -954,9 +990,8 @@ default_priority_immediate: Immediate default_activity_design: Design default_activity_development: Development - + enumeration_issue_priorities: Issue priorities enumeration_doc_categories: Document categories enumeration_activities: Activities (time tracking) enumeration_system_activity: System Activity - diff -r adc8466df404 -r 753f1380d6bc config/locales/es.yml --- a/config/locales/es.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/es.yml Mon Jun 06 14:41:04 2011 +0100 @@ -159,7 +159,10 @@ month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Setiembre, Octubre, Noviembre, Diciembre] abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Set, Oct, Nov, Dic] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -264,7 +267,7 @@ field_default_value: Estado por defecto field_delay: Retraso field_description: Descripción - field_done_ratio: % Realizado + field_done_ratio: "% Realizado" field_downloads: Descargas field_due_date: Fecha fin field_effective_date: Fecha @@ -333,7 +336,7 @@ general_csv_separator: ';' general_first_day_of_week: '1' general_lang_name: 'Español' - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_text_No: 'No' general_text_Yes: 'Sí' general_text_no: 'no' @@ -678,7 +681,7 @@ notice_default_data_loaded: Configuración por defecto cargada correctamente. notice_email_error: "Ha ocurrido un error mientras enviando el correo (%{value})" notice_email_sent: "Se ha enviado un correo a %{value}" - notice_failed_to_save_issues: "Imposible grabar %s peticion(es) en %{count} seleccionado: %{ids}." + notice_failed_to_save_issues: "Imposible grabar %{count} peticion(es) de %{total} seleccionada(s): %{ids}." notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada. notice_file_not_found: La página a la que intenta acceder no existe. notice_locking_conflict: Los datos han sido modificados por otro usuario. @@ -753,7 +756,6 @@ setting_autologin: Conexión automática setting_bcc_recipients: Ocultar las copias de carbón (bcc) setting_commit_fix_keywords: Palabras clave para la corrección - setting_commit_logs_encoding: Codificación de los mensajes de commit setting_commit_ref_keywords: Palabras clave para la referencia setting_cross_project_issue_relations: Permitir relacionar peticiones de distintos proyectos setting_date_format: Formato de fecha @@ -978,3 +980,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificación de los mensajes de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/eu.yml --- a/config/locales/eu.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/eu.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,947 +1,983 @@ -# Redmine EU language -# Author: Ales Zabala Alava (Shagi), -# 2010-01-25 -# Distributed under the same terms as the Redmine itself. -eu: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%Y/%m/%d" - short: "%b %d" - long: "%Y %B %d" - - day_names: [Igandea, Astelehena, Asteartea, Asteazkena, Osteguna, Ostirala, Larunbata] - abbr_day_names: [Ig., Al., Ar., Az., Og., Or., La.] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua] - abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe] - # Used in date_select and datime_select. - order: [ :year, :month, :day ] - - time: - formats: - default: "%Y/%m/%d %H:%M" - time: "%H:%M" - short: "%b %d %H:%M" - long: "%Y %B %d %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "minutu erdi" - less_than_x_seconds: - one: "segundu bat baino gutxiago" - other: "%{count} segundu baino gutxiago" - x_seconds: - one: "segundu 1" - other: "%{count} segundu" - less_than_x_minutes: - one: "minutu bat baino gutxiago" - other: "%{count} minutu baino gutxiago" - x_minutes: - one: "minutu 1" - other: "%{count} minutu" - about_x_hours: - one: "ordu 1 inguru" - other: "%{count} ordu inguru" - x_days: - one: "egun 1" - other: "%{count} egun" - about_x_months: - one: "hilabete 1 inguru" - other: "%{count} hilabete inguru" - x_months: - one: "hilabete 1" - other: "%{count} hilabete" - about_x_years: - one: "urte 1 inguru" - other: "%{count} urte inguru" - over_x_years: - one: "urte 1 baino gehiago" - other: "%{count} urte baino gehiago" - almost_x_years: - one: "ia urte 1" - other: "ia %{count} urte" - - number: - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Byte" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "eta" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "Errore batek %{model} hau godetzea galarazi du." - other: "%{count} errorek %{model} hau gordetzea galarazi dute." - messages: - inclusion: "ez dago zerrendan" - exclusion: "erreserbatuta dago" - invalid: "baliogabea da" - confirmation: "ez du berrespenarekin bat egiten" - accepted: "onartu behar da" - empty: "ezin da hutsik egon" - blank: "ezin da hutsik egon" - too_long: "luzeegia da (maximoa %{count} karaktere dira)" - too_short: "laburregia da (minimoa %{count} karaktere dira)" - wrong_length: "luzera ezegokia da (%{count} karakter izan beharko litzake)" - taken: "dagoeneko hartuta dago" - not_a_number: "ez da zenbaki bat" - not_a_date: "ez da baliozko data" - greater_than: "%{count} baino handiagoa izan behar du" - greater_than_or_equal_to: "%{count} edo handiagoa izan behar du" - equal_to: "%{count} izan behar du" - less_than: "%{count} baino gutxiago izan behar du" - less_than_or_equal_to: "%{count} edo gutxiago izan behar du" - odd: "bakoitia izan behar du" - even: "bikoitia izan behar du" - greater_than_start_date: "hasiera data baino handiagoa izan behar du" - not_same_project: "ez dago proiektu berdinean" - circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke" - cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu." - - actionview_instancetag_blank_option: Hautatu mesedez - - general_text_No: 'Ez' - general_text_Yes: 'Bai' - general_text_no: 'ez' - general_text_yes: 'bai' - general_lang_name: 'Euskara' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Kontua ongi eguneratu da. - notice_account_invalid_creditentials: Erabiltzaile edo pasahitz ezegokia - notice_account_password_updated: Pasahitza ongi eguneratu da. - notice_account_wrong_password: Pasahitz ezegokia. - notice_account_register_done: Kontua ongi sortu da. Kontua gaitzeko klikatu epostan adierazi zaizun estekan. - notice_account_unknown_email: Erabiltzaile ezezaguna. - notice_can_t_change_password: Kontu honek kanpoko autentikazio bat erabiltzen du. Ezinezkoa da pasahitza aldatzea. - notice_account_lost_email_sent: Pasahitz berria aukeratzeko jarraibideak dituen eposta bat bidali zaizu. - notice_account_activated: Zure kontua gaituta dago. Orain saioa has dezakezu - notice_successful_create: Sortze arrakastatsua. - notice_successful_update: Eguneratze arrakastatsua. - notice_successful_delete: Ezabaketa arrakastatsua. - notice_successful_connection: Konexio arrakastatsua. - notice_file_not_found: Atzitu nahi duzun orria ez da exisitzen edo ezabatua izan da. - notice_locking_conflict: Beste erabiltzaile batek datuak eguneratu ditu. - notice_not_authorized: Ez duzu orri hau atzitzeko baimenik. - notice_email_sent: "%{value} helbidera eposta bat bidali da" - notice_email_error: "Errorea eposta bidaltzean (%{value})" - notice_feeds_access_key_reseted: Zure RSS atzipen giltza berrezarri da. - notice_api_access_key_reseted: Zure API atzipen giltza berrezarri da. - notice_failed_to_save_issues: "Hautatutako %{total} zereginetatik %{count} ezin izan dira konpondu: %{ids}." - notice_no_issue_selected: "Ez da zereginik hautatu! Mesedez, editatu nahi dituzun arazoak markatu." - notice_account_pending: "Zure kontua sortu da, orain kudeatzailearen onarpenaren zain dago." - notice_default_data_loaded: Lehenetsitako konfigurazioa ongi kargatu da. - notice_unable_delete_version: Ezin da bertsioa ezabatu. - notice_issue_done_ratios_updated: Burututako zereginen erlazioa eguneratu da. - - error_can_t_load_default_data: "Ezin izan da lehenetsitako konfigurazioa kargatu: %{value}" - error_scm_not_found: "Sarrera edo berrikuspena ez da biltegian topatu." - error_scm_command_failed: "Errorea gertatu da biltegia atzitzean: %{value}" - error_scm_annotate: "Sarrera ez da existitzen edo ezin da anotatu." - error_issue_not_found_in_project: 'Zeregina ez da topatu edo ez da proiektu honetakoa' - error_no_tracker_in_project: 'Proiektu honek ez du aztarnaririk esleituta. Mesedez egiaztatu Proiektuaren ezarpenak.' - error_no_default_issue_status: 'Zereginek ez dute lehenetsitako egoerarik. Mesedez egiaztatu zure konfigurazioa ("Kudeaketa -> Arazoen egoerak" atalera joan).' - error_can_not_reopen_issue_on_closed_version: 'Itxitako bertsio batera esleitutako zereginak ezin dira berrireki' - error_can_not_archive_project: Proiektu hau ezin da artxibatu - error_issue_done_ratios_not_updated: "Burututako zereginen erlazioa ez da eguneratu." - error_workflow_copy_source: 'Mesedez hautatu iturburuko aztarnari edo rola' - error_workflow_copy_target: 'Mesedez hautatu helburuko aztarnari(ak) edo rola(k)' - - warning_attachments_not_saved: "%{count} fitxategi ezin izan d(ir)a gorde." - - mail_subject_lost_password: "Zure %{value} pasahitza" - mail_body_lost_password: 'Zure pasahitza aldatzeko hurrengo estekan klikatu:' - mail_subject_register: "Zure %{value} kontuaren gaitzea" - mail_body_register: 'Zure kontua gaitzeko hurrengo estekan klikatu:' - mail_body_account_information_external: "Zure %{value} kontua erabil dezakezu saioa hasteko." - mail_body_account_information: Zure kontuaren informazioa - mail_subject_account_activation_request: "%{value} kontu gaitzeko eskaera" - mail_body_account_activation_request: "Erabiltzaile berri bat (%{value}) erregistratu da. Kontua zure onarpenaren zain dago:" - mail_subject_reminder: "%{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a" - mail_body_reminder: "Zuri esleituta dauden %{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a:" - mail_subject_wiki_content_added: "'%{id}' wiki orria gehitu da" - mail_body_wiki_content_added: "%{author}-(e)k '%{id}' wiki orria gehitu du." - mail_subject_wiki_content_updated: "'%{id}' wiki orria eguneratu da" - mail_body_wiki_content_updated: "%{author}-(e)k '%{id}' wiki orria eguneratu du." - - gui_validation_error: akats 1 - gui_validation_error_plural: "%{count} akats" - - field_name: Izena - field_description: Deskribapena - field_summary: Laburpena - field_is_required: Beharrezkoa - field_firstname: Izena - field_lastname: Abizenak - field_mail: Eposta - field_filename: Fitxategia - field_filesize: Tamaina - field_downloads: Deskargak - field_author: Egilea - field_created_on: Sortuta - field_updated_on: Eguneratuta - field_field_format: Formatua - field_is_for_all: Proiektu guztietarako - field_possible_values: Balio posibleak - field_regexp: Expresio erregularra - field_min_length: Luzera minimoa - field_max_length: Luzera maxioma - field_value: Balioa - field_category: Kategoria - field_title: Izenburua - field_project: Proiektua - field_issue: Zeregina - field_status: Egoera - field_notes: Oharrak - field_is_closed: Itxitako arazoa - field_is_default: Lehenetsitako balioa - field_tracker: Aztarnaria - field_subject: Gaia - field_due_date: Amaiera data - field_assigned_to: Esleituta - field_priority: Lehentasuna - field_fixed_version: Helburuko bertsioa - field_user: Erabiltzilea - field_role: Rola - field_homepage: Orri nagusia - field_is_public: Publikoa - field_parent: "Honen azpiproiektua:" - field_is_in_chlog: Zereginak aldaketa egunkarian ikusten dira - field_is_in_roadmap: Arazoak ibilbide-mapan erakutsi - field_login: Erabiltzaile izena - field_mail_notification: Eposta jakinarazpenak - field_admin: Kudeatzailea - field_last_login_on: Azken konexioa - field_language: Hizkuntza - field_effective_date: Data - field_password: Pasahitza - field_new_password: Pasahitz berria - field_password_confirmation: Berrespena - field_version: Bertsioa - field_type: Mota - field_host: Ostalaria - field_port: Portua - field_account: Kontua - field_base_dn: Base DN - field_attr_login: Erabiltzaile atributua - field_attr_firstname: Izena atributua - field_attr_lastname: Abizenak atributua - field_attr_mail: Eposta atributua - field_onthefly: Zuzeneko erabiltzaile sorrera - field_start_date: Hasiera - field_done_ratio: Egindako % - field_auth_source: Autentikazio modua - field_hide_mail: Nire eposta helbidea ezkutatu - field_comments: Iruzkina - field_url: URL - field_start_page: Hasierako orria - field_subproject: Azpiproiektua - field_hours: Ordu - field_activity: Jarduera - field_spent_on: Data - field_identifier: Identifikatzailea - field_is_filter: Iragazki moduan erabilita - field_issue_to: Erlazionatutako zereginak - field_delay: Atzerapena - field_assignable: Arazoak rol honetara esleitu daitezke - field_redirect_existing_links: Existitzen diren estekak berbideratu - field_estimated_hours: Estimatutako denbora - field_column_names: Zutabeak - field_time_zone: Ordu zonaldea - field_searchable: Bilagarria - field_default_value: Lehenetsitako balioa - field_comments_sorting: Iruzkinak erakutsi - field_parent_title: Orri gurasoa - field_editable: Editagarria - field_watcher: Behatzailea - field_identity_url: OpenID URLa - field_content: Edukia - field_group_by: Emaitzak honegatik taldekatu - field_sharing: Partekatzea - - setting_app_title: Aplikazioaren izenburua - setting_app_subtitle: Aplikazioaren azpizenburua - setting_welcome_text: Ongietorriko testua - setting_default_language: Lehenetsitako hizkuntza - setting_login_required: Autentikazioa derrigorrezkoa - setting_self_registration: Norberak erregistratu - setting_attachment_max_size: Eranskinen tamaina max. - setting_issues_export_limit: Zereginen esportatze limitea - setting_mail_from: Igorlearen eposta helbidea - setting_bcc_recipients: Hartzaileak ezkutuko kopian (bcc) - setting_plain_text_mail: Testu soileko epostak (HTML-rik ez) - setting_host_name: Ostalari izena eta bidea - setting_text_formatting: Testu formatua - setting_wiki_compression: Wikiaren historia konprimitu - setting_feeds_limit: Jarioaren edukiera limitea - setting_default_projects_public: Proiektu berriak defektuz publikoak dira - setting_autofetch_changesets: Commit-ak automatikoki hartu - setting_sys_api_enabled: Biltegien kudeaketarako WS gaitu - setting_commit_ref_keywords: Erreferentzien gako-hitzak - setting_commit_fix_keywords: Konpontze gako-hitzak - setting_autologin: Saioa automatikoki hasi - setting_date_format: Data formatua - setting_time_format: Ordu formatua - setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu - setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak - setting_repositories_encodings: Biltegien kodeketak - setting_commit_logs_encoding: Commit-en egunkarien kodetzea - setting_emails_footer: Eposten oina - setting_protocol: Protokoloa - setting_per_page_options: Orriko objektuen aukerak - setting_user_format: Erabiltzaileak erakusteko formatua - setting_activity_days_default: Proiektuen jardueran erakusteko egunak - setting_display_subprojects_issues: Azpiproiektuen zereginak proiektu nagusian erakutsi defektuz - setting_enabled_scm: Gaitutako IKKak - setting_mail_handler_body_delimiters: "Lerro hauteko baten ondoren epostak moztu" - setting_mail_handler_api_enabled: Sarrerako epostentzako WS gaitu - setting_mail_handler_api_key: API giltza - setting_sequential_project_identifiers: Proiektuen identifikadore sekuentzialak sortu - setting_gravatar_enabled: Erabili Gravatar erabiltzaile ikonoak - setting_gravatar_default: Lehenetsitako Gravatar irudia - setting_diff_max_lines_displayed: Erakutsiko diren diff lerro kopuru maximoa - setting_file_max_size_displayed: Barnean erakuzten diren testu fitxategien tamaina maximoa - setting_repository_log_display_limit: Egunkari fitxategian erakutsiko diren berrikuspen kopuru maximoa. - setting_openid: Baimendu OpenID saio hasiera eta erregistatzea - setting_password_min_length: Pasahitzen luzera minimoa - setting_new_project_user_role_id: Proiektu berriak sortzerakoan kudeatzaile ez diren erabiltzaileei esleitutako rola - setting_default_projects_modules: Proiektu berrientzako defektuz gaitutako moduluak - setting_issue_done_ratio: "Zereginen burututako tasa kalkulatzean erabili:" - setting_issue_done_ratio_issue_field: Zeregin eremua erabili - setting_issue_done_ratio_issue_status: Zeregin egoera erabili - setting_start_of_week: "Egutegiak noiz hasi:" - setting_rest_api_enabled: Gaitu REST web zerbitzua - - permission_add_project: Proiektua sortu - permission_add_subprojects: Azpiproiektuak sortu - permission_edit_project: Proiektua editatu - permission_select_project_modules: Proiektuaren moduluak hautatu - permission_manage_members: Kideak kudeatu - permission_manage_versions: Bertsioak kudeatu - permission_manage_categories: Arazoen kategoriak kudeatu - permission_view_issues: Zereginak ikusi - permission_add_issues: Zereginak gehitu - permission_edit_issues: Zereginak aldatu - permission_manage_issue_relations: Zereginen erlazioak kudeatu - permission_add_issue_notes: Oharrak gehitu - permission_edit_issue_notes: Oharrak aldatu - permission_edit_own_issue_notes: Nork bere oharrak aldatu - permission_move_issues: Zereginak mugitu - permission_delete_issues: Zereginak ezabatu - permission_manage_public_queries: Galdera publikoak kudeatu - permission_save_queries: Galderak gorde - permission_view_gantt: Gantt grafikoa ikusi - permission_view_calendar: Egutegia ikusi - permission_view_issue_watchers: Behatzaileen zerrenda ikusi - permission_add_issue_watchers: Behatzaileak gehitu - permission_delete_issue_watchers: Behatzaileak ezabatu - permission_log_time: Igarotako denbora erregistratu - permission_view_time_entries: Igarotako denbora ikusi - permission_edit_time_entries: Denbora egunkariak editatu - permission_edit_own_time_entries: Nork bere denbora egunkariak editatu - permission_manage_news: Berriak kudeatu - permission_comment_news: Berrien iruzkinak egin - permission_manage_documents: Dokumentuak kudeatu - permission_view_documents: Dokumentuak ikusi - permission_manage_files: Fitxategiak kudeatu - permission_view_files: Fitxategiak ikusi - permission_manage_wiki: Wikia kudeatu - permission_rename_wiki_pages: Wiki orriak berrizendatu - permission_delete_wiki_pages: Wiki orriak ezabatu - permission_view_wiki_pages: Wikia ikusi - permission_view_wiki_edits: Wikiaren historia ikusi - permission_edit_wiki_pages: Wiki orriak editatu - permission_delete_wiki_pages_attachments: Eranskinak ezabatu - permission_protect_wiki_pages: Wiki orriak babestu - permission_manage_repository: Biltegiak kudeatu - permission_browse_repository: Biltegia arakatu - permission_view_changesets: Aldaketak ikusi - permission_commit_access: Commit atzipena - permission_manage_boards: Foroak kudeatu - permission_view_messages: Mezuak ikusi - permission_add_messages: Mezuak bidali - permission_edit_messages: Mezuak aldatu - permission_edit_own_messages: Nork bere mezuak aldatu - permission_delete_messages: Mezuak ezabatu - permission_delete_own_messages: Nork bere mezuak ezabatu - - project_module_issue_tracking: Zereginen jarraipena - project_module_time_tracking: Denbora jarraipena - project_module_news: Berriak - project_module_documents: Dokumentuak - project_module_files: Fitxategiak - project_module_wiki: Wiki - project_module_repository: Biltegia - project_module_boards: Foroak - - label_user: Erabiltzailea - label_user_plural: Erabiltzaileak - label_user_new: Erabiltzaile berria - label_user_anonymous: Ezezaguna - label_project: Proiektua - label_project_new: Proiektu berria - label_project_plural: Proiektuak - label_x_projects: - zero: proiekturik ez - one: proiektu bat - other: "%{count} proiektu" - label_project_all: Proiektu guztiak - label_project_latest: Azken proiektuak - label_issue: Zeregina - label_issue_new: Zeregin berria - label_issue_plural: Zereginak - label_issue_view_all: Zeregin guztiak ikusi - label_issues_by: "Zereginak honengatik: %{value}" - label_issue_added: Zeregina gehituta - label_issue_updated: Zeregina eguneratuta - label_document: Dokumentua - label_document_new: Dokumentu berria - label_document_plural: Dokumentuak - label_document_added: Dokumentua gehituta - label_role: Rola - label_role_plural: Rolak - label_role_new: Rol berria - label_role_and_permissions: Rolak eta baimenak - label_member: Kidea - label_member_new: Kide berria - label_member_plural: Kideak - label_tracker: Aztarnaria - label_tracker_plural: Aztarnariak - label_tracker_new: Aztarnari berria - label_workflow: Lan-fluxua - label_issue_status: Zeregin egoera - label_issue_status_plural: Zeregin egoerak - label_issue_status_new: Egoera berria - label_issue_category: Zeregin kategoria - label_issue_category_plural: Zeregin kategoriak - label_issue_category_new: Kategoria berria - label_custom_field: Eremu pertsonalizatua - label_custom_field_plural: Eremu pertsonalizatuak - label_custom_field_new: Eremu pertsonalizatu berria - label_enumerations: Enumerazioak - label_enumeration_new: Balio berria - label_information: Informazioa - label_information_plural: Informazioa - label_please_login: Saioa hasi mesedez - label_register: Erregistratu - label_login_with_open_id_option: edo OpenID-rekin saioa hasi - label_password_lost: Pasahitza galduta - label_home: Hasiera - label_home_heading: Hasiera - label_my_page: Nire orria - label_my_account: Nire kontua - label_my_projects: Nire proiektuak - label_administration: Kudeaketa - label_login: Saioa hasi - label_logout: Saioa bukatu - label_help: Laguntza - label_reported_issues: Berri emandako zereginak - label_assigned_to_me_issues: Niri esleitutako arazoak - label_last_login: Azken konexioa - label_registered_on: Noiz erregistratuta - label_activity: Jarduerak - label_overall_activity: Jarduera guztiak - label_user_activity: "%{value}-(r)en jarduerak" - label_new: Berria - label_logged_as: "Sartutako erabiltzailea:" - label_environment: Ingurune - label_authentication: Autentikazioa - label_auth_source: Autentikazio modua - label_auth_source_new: Autentikazio modu berria - label_auth_source_plural: Autentikazio moduak - label_subproject_plural: Azpiproiektuak - label_subproject_new: Azpiproiektu berria - label_and_its_subprojects: "%{value} eta bere azpiproiektuak" - label_min_max_length: Luzera min - max - label_list: Zerrenda - label_date: Data - label_integer: Osokoa - label_float: Koma higikorrekoa - label_boolean: Boolearra - label_string: Testua - label_text: Testu luzea - label_attribute: Atributua - label_attribute_plural: Atributuak - label_download: "Deskarga %{count}" - label_download_plural: "%{count} Deskarga" - label_no_data: Ez dago erakusteko daturik - label_change_status: Egoera aldatu - label_history: Historikoa - label_attachment: Fitxategia - label_attachment_new: Fitxategi berria - label_attachment_delete: Fitxategia ezabatu - label_attachment_plural: Fitxategiak - label_file_added: Fitxategia gehituta - label_report: Berri ematea - label_report_plural: Berri emateak - label_news: Berria - label_news_new: Berria gehitu - label_news_plural: Berriak - label_news_latest: Azken berriak - label_news_view_all: Berri guztiak ikusi - label_news_added: Berria gehituta - label_change_log: Aldaketa egunkaria - label_settings: Ezarpenak - label_overview: Gainbegirada - label_version: Bertsioa - label_version_new: Bertsio berria - label_version_plural: Bertsioak - label_close_versions: Burututako bertsioak itxi - label_confirmation: Baieztapena - label_export_to: 'Eskuragarri baita:' - label_read: Irakurri... - label_public_projects: Proiektu publikoak - label_open_issues: irekita - label_open_issues_plural: irekiak - label_closed_issues: itxita - label_closed_issues_plural: itxiak - label_x_open_issues_abbr_on_total: - zero: 0 irekita / %{total} - one: 1 irekita / %{total} - other: "%{count} irekiak / %{total}" - label_x_open_issues_abbr: - zero: 0 irekita - one: 1 irekita - other: "%{count} irekiak" - label_x_closed_issues_abbr: - zero: 0 itxita - one: 1 itxita - other: "%{count} itxiak" - label_total: Guztira - label_permissions: Baimenak - label_current_status: Uneko egoera - label_new_statuses_allowed: Baimendutako egoera berriak - label_all: guztiak - label_none: ezer - label_nobody: inor - label_next: Hurrengoa - label_previous: Aurrekoak - label_used_by: Erabilita - label_details: Xehetasunak - label_add_note: Oharra gehitu - label_per_page: Orriko - label_calendar: Egutegia - label_months_from: hilabete noiztik - label_gantt: Gantt - label_internal: Barnekoa - label_last_changes: "azken %{count} aldaketak" - label_change_view_all: Aldaketa guztiak ikusi - label_personalize_page: Orri hau pertsonalizatu - label_comment: Iruzkin - label_comment_plural: Iruzkinak - label_x_comments: - zero: iruzkinik ez - one: iruzkin 1 - other: "%{count} iruzkin" - label_comment_add: Iruzkina gehitu - label_comment_added: Iruzkina gehituta - label_comment_delete: Iruzkinak ezabatu - label_query: Galdera pertsonalizatua - label_query_plural: Pertsonalizatutako galderak - label_query_new: Galdera berria - label_filter_add: Iragazkia gehitu - label_filter_plural: Iragazkiak - label_equals: da - label_not_equals: ez da - label_in_less_than: baino gutxiagotan - label_in_more_than: baino gehiagotan - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: hauetan - label_today: gaur - label_all_time: denbora guztia - label_yesterday: atzo - label_this_week: aste honetan - label_last_week: pasadan astean - label_last_n_days: "azken %{count} egunetan" - label_this_month: hilabete hau - label_last_month: pasadan hilabetea - label_this_year: urte hau - label_date_range: Data tartea - label_less_than_ago: egun hauek baino gutxiago - label_more_than_ago: egun hauek baino gehiago - label_ago: orain dela - label_contains: dauka - label_not_contains: ez dauka - label_day_plural: egun - label_repository: Biltegia - label_repository_plural: Biltegiak - label_browse: Arakatu - label_modification: "aldaketa %{count}" - label_modification_plural: "%{count} aldaketa" - label_branch: Adarra - label_tag: Etiketa - label_revision: Berrikuspena - label_revision_plural: Berrikuspenak - label_revision_id: "%{value} berrikuspen" - label_associated_revisions: Elkartutako berrikuspenak - label_added: gehituta - label_modified: aldatuta - label_copied: kopiatuta - label_renamed: berrizendatuta - label_deleted: ezabatuta - label_latest_revision: Azken berrikuspena - label_latest_revision_plural: Azken berrikuspenak - label_view_revisions: Berrikuspenak ikusi - label_view_all_revisions: Berrikuspen guztiak ikusi - label_max_size: Tamaina maximoa - label_sort_highest: Goraino mugitu - label_sort_higher: Gora mugitu - label_sort_lower: Behera mugitu - label_sort_lowest: Beheraino mugitu - label_roadmap: Ibilbide-mapa - label_roadmap_due_in: "Epea: %{value}" - label_roadmap_overdue: "%{value} berandu" - label_roadmap_no_issues: Ez dago zereginik bertsio honetan - label_search: Bilatu - label_result_plural: Emaitzak - label_all_words: hitz guztiak - label_wiki: Wikia - label_wiki_edit: Wiki edizioa - label_wiki_edit_plural: Wiki edizioak - label_wiki_page: Wiki orria - label_wiki_page_plural: Wiki orriak - label_index_by_title: Izenburuaren araberako indizea - label_index_by_date: Dataren araberako indizea - label_current_version: Uneko bertsioa - label_preview: Aurreikusi - label_feed_plural: Jarioak - label_changes_details: Aldaketa guztien xehetasunak - label_issue_tracking: Zeregin jarraipena - label_spent_time: Igarotako denbora - label_f_hour: "ordu %{value}" - label_f_hour_plural: "%{value} ordu" - label_time_tracking: Denbora jarraipena - label_change_plural: Aldaketak - label_statistics: Estatistikak - label_commits_per_month: Commit-ak hilabeteka - label_commits_per_author: Commit-ak egileka - label_view_diff: Ezberdintasunak ikusi - label_diff_inline: barnean - label_diff_side_by_side: aldez alde - label_options: Aukerak - label_copy_workflow_from: Kopiatu workflow-a hemendik - label_permissions_report: Baimenen txostena - label_watched_issues: Behatutako zereginak - label_related_issues: Erlazionatutako zereginak - label_applied_status: Aplikatutako egoera - label_loading: Kargatzen... - label_relation_new: Erlazio berria - label_relation_delete: Erlazioa ezabatu - label_relates_to: erlazionatuta dago - label_duplicates: bikoizten du - label_duplicated_by: honek bikoiztuta - label_blocks: blokeatzen du - label_blocked_by: honek blokeatuta - label_precedes: aurretik doa - label_follows: jarraitzen du - label_end_to_start: bukaeratik hasierara - label_end_to_end: bukaeratik bukaerara - label_start_to_start: hasieratik hasierhasieratik bukaerara - label_start_to_end: hasieratik bukaerara - label_stay_logged_in: Saioa mantendu - label_disabled: ezgaituta - label_show_completed_versions: Bukatutako bertsioak ikusi - label_me: ni - label_board: Foroa - label_board_new: Foro berria - label_board_plural: Foroak - label_topic_plural: Gaiak - label_message_plural: Mezuak - label_message_last: Azken mezua - label_message_new: Mezu berria - label_message_posted: Mesua gehituta - label_reply_plural: Erantzunak - label_send_information: Erabiltzaileai kontuaren informazioa bidali - label_year: Urtea - label_month: Hilabetea - label_week: Astea - label_date_from: Nork - label_date_to: Nori - label_language_based: Erabiltzailearen hizkuntzaren arabera - label_sort_by: "Ordenazioa: %{value}" - label_send_test_email: Frogako mezua bidali - label_feeds_access_key: RSS atzipen giltza - label_missing_feeds_access_key: RSS atzipen giltza falta da - label_feeds_access_key_created_on: "RSS atzipen giltza orain dela %{value} sortuta" - label_module_plural: Moduluak - label_added_time_by: "%{author}, orain dela %{age} gehituta" - label_updated_time_by: "%{author}, orain dela %{age} eguneratuta" - label_updated_time: "Orain dela %{value} eguneratuta" - label_jump_to_a_project: Joan proiektura... - label_file_plural: Fitxategiak - label_changeset_plural: Aldaketak - label_default_columns: Lehenetsitako zutabeak - label_no_change_option: (Aldaketarik ez) - label_bulk_edit_selected_issues: Hautatutako zereginak batera editatu - label_theme: Itxura - label_default: Lehenetsia - label_search_titles_only: Izenburuetan bakarrik bilatu - label_user_mail_option_all: "Nire proiektu guztietako gertakari guztientzat" - label_user_mail_option_selected: "Hautatutako proiektuetako edozein gertakarientzat..." - label_user_mail_no_self_notified: "Ez dut nik egiten ditudan aldeketen jakinarazpenik jaso nahi" - label_registration_activation_by_email: kontuak epostaz gaitu - label_registration_manual_activation: kontuak eskuz gaitu - label_registration_automatic_activation: kontuak automatikoki gaitu - label_display_per_page: "Orriko: %{value}" - label_age: Adina - label_change_properties: Propietateak aldatu - label_general: Orokorra - label_more: Gehiago - label_scm: IKK - label_plugins: Pluginak - label_ldap_authentication: LDAP autentikazioa - label_downloads_abbr: Desk. - label_optional_description: Aukerako deskribapena - label_add_another_file: Beste fitxategia gehitu - label_preferences: Hobespenak - label_chronological_order: Orden kronologikoan - label_reverse_chronological_order: Alderantzizko orden kronologikoan - label_planning: Planifikazioa - label_incoming_emails: Sarrerako epostak - label_generate_key: Giltza sortu - label_issue_watchers: Behatzaileak - label_example: Adibidea - label_display: Bistaratzea - label_sort: Ordenatu - label_ascending: Gorantz - label_descending: Beherantz - label_date_from_to: "%{start}-tik %{end}-ra" - label_wiki_content_added: Wiki orria gehituta - label_wiki_content_updated: Wiki orria eguneratuta - label_group: Taldea - label_group_plural: Taldeak - label_group_new: Talde berria - label_time_entry_plural: Igarotako denbora - label_version_sharing_none: Ez partekatuta - label_version_sharing_descendants: Azpiproiektuekin - label_version_sharing_hierarchy: Proiektu Hierarkiarekin - label_version_sharing_tree: Proiektu zuhaitzarekin - label_version_sharing_system: Proiektu guztiekin - label_update_issue_done_ratios: Zereginen burututako erlazioa eguneratu - label_copy_source: Iturburua - label_copy_target: Helburua - label_copy_same_as_target: Helburuaren berdina - label_display_used_statuses_only: Aztarnari honetan erabiltzen diren egoerak bakarrik erakutsi - label_api_access_key: API atzipen giltza - label_missing_api_access_key: API atzipen giltza falta da - label_api_access_key_created_on: "API atzipen giltza sortuta orain dela %{value}" - - button_login: Saioa hasi - button_submit: Bidali - button_save: Gorde - button_check_all: Guztiak markatu - button_uncheck_all: Guztiak desmarkatu - button_delete: Ezabatu - button_create: Sortu - button_create_and_continue: Sortu eta jarraitu - button_test: Frogatu - button_edit: Editatu - button_add: Gehitu - button_change: Aldatu - button_apply: Aplikatu - button_clear: Garbitu - button_lock: Blokeatu - button_unlock: Desblokeatu - button_download: Deskargatu - button_list: Zerrenda - button_view: Ikusi - button_move: Mugitu - button_move_and_follow: Mugitu eta jarraitu - button_back: Atzera - button_cancel: Ezeztatu - button_activate: Gahitu - button_sort: Ordenatu - button_log_time: Denbora erregistratu - button_rollback: Itzuli bertsio honetara - button_watch: Behatu - button_unwatch: Behatzen utzi - button_reply: Erantzun - button_archive: Artxibatu - button_unarchive: Desartxibatu - button_reset: Berrezarri - button_rename: Berrizendatu - button_change_password: Pasahitza aldatu - button_copy: Kopiatu - button_copy_and_follow: Kopiatu eta jarraitu - button_annotate: Anotatu - button_update: Eguneratu - button_configure: Konfiguratu - button_quote: Aipatu - button_duplicate: Bikoiztu - button_show: Ikusi - - status_active: gaituta - status_registered: izena emanda - status_locked: blokeatuta - - version_status_open: irekita - version_status_locked: blokeatuta - version_status_closed: itxita - - field_active: Gaituta - - text_select_mail_notifications: Jakinarazpenak zein ekintzetarako bidaliko diren hautatu. - text_regexp_info: adib. ^[A-Z0-9]+$ - text_min_max_length_info: 0k mugarik gabe esan nahi du - text_project_destroy_confirmation: Ziur zaude proiektu hau eta erlazionatutako datu guztiak ezabatu nahi dituzula? - text_subprojects_destroy_warning: "%{value} azpiproiektuak ere ezabatuko dira." - text_workflow_edit: Hautatu rola eta aztarnaria workflow-a editatzeko - text_are_you_sure: Ziur zaude? - text_journal_changed: "%{label} %{old}-(e)tik %{new}-(e)ra aldatuta" - text_journal_set_to: "%{label}-k %{value} balioa hartu du" - text_journal_deleted: "%{label} ezabatuta (%{old})" - text_journal_added: "%{label} %{value} gehituta" - text_tip_issue_begin_day: gaur hasten diren zereginak - text_tip_issue_end_day: gaur bukatzen diren zereginak - text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak - text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
    Gorde eta gero identifikadorea ezin da aldatu.' - text_caracters_maximum: "%{count} karaktere gehienez." - text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du." - text_length_between: "Luzera %{min} eta %{max} karaktereen artekoa." - text_tracker_no_workflow: Ez da workflow-rik definitu aztarnari honentzako - text_unallowed_characters: Debekatutako karaktereak - text_comma_separated: Balio anitz izan daitezke (komaz banatuta). - text_line_separated: Balio anitz izan daitezke (balio bakoitza lerro batean). - text_issues_ref_in_commit_messages: Commit-en mezuetan zereginak erlazionatu eta konpontzen - text_issue_added: "%{id} zeregina %{author}-(e)k jakinarazi du." - text_issue_updated: "%{id} zeregina %{author}-(e)k eguneratu du." - text_wiki_destroy_confirmation: Ziur zaude wiki hau eta bere eduki guztiak ezabatu nahi dituzula? - text_issue_category_destroy_question: "Zeregin batzuk (%{count}) kategoria honetara esleituta daude. Zer egin nahi duzu?" - text_issue_category_destroy_assignments: Kategoria esleipenak kendu - text_issue_category_reassign_to: Zereginak kategoria honetara esleitu - text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)." - text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu." - text_load_default_configuration: Lehenetsitako konfigurazioa kargatu - text_status_changed_by_changeset: "%{value} aldaketan aplikatuta." - text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?' - text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:' - text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta - text_file_repository_writable: Eranskinen direktorioan idatz daiteke - text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke - text_rmagick_available: RMagick eskuragarri (aukerazkoa) - text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?" - text_destroy_time_entries: Ezabatu berri emandako orduak - text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu - text_reassign_time_entries: 'Berri emandako orduak zeregin honetara esleitu:' - text_user_wrote: "%{value}-(e)k idatzi zuen:" - text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude." - text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:' - text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." - text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira." - text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.' - text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko' - text_wiki_page_destroy_question: "Orri honek %{descendants} orri seme eta ondorengo ditu. Zer egin nahi duzu?" - text_wiki_page_nullify_children: "Orri semeak erro orri moduan mantendu" - text_wiki_page_destroy_children: "Orri semeak eta beraien ondorengo guztiak ezabatu" - text_wiki_page_reassign_children: "Orri semeak orri guraso honetara esleitu" - text_own_membership_delete_confirmation: "Zure baimen batzuk (edo guztiak) kentzera zoaz eta baliteke horren ondoren proiektu hau ezin editatzea.\n Ziur zaude jarraitu nahi duzula?" - - default_role_manager: Kudeatzailea - default_role_developer: Garatzailea - default_role_reporter: Berriemailea - default_tracker_bug: Errorea - default_tracker_feature: Eginbidea - default_tracker_support: Laguntza - default_issue_status_new: Berria - default_issue_status_in_progress: Lanean - default_issue_status_resolved: Ebatzita - default_issue_status_feedback: Berrelikadura - default_issue_status_closed: Itxita - default_issue_status_rejected: Baztertua - default_doc_category_user: Erabiltzaile dokumentazioa - default_doc_category_tech: Dokumentazio teknikoa - default_priority_low: Baxua - default_priority_normal: Normala - default_priority_high: Altua - default_priority_urgent: Larria - default_priority_immediate: Berehalakoa - default_activity_design: Diseinua - default_activity_development: Garapena - - enumeration_issue_priorities: Zeregin lehentasunak - enumeration_doc_categories: Dokumentu kategoriak - enumeration_activities: Jarduerak (denbora kontrola)) - enumeration_system_activity: Sistemako Jarduera - label_board_sticky: Itsaskorra - label_board_locked: Blokeatuta - permission_export_wiki_pages: Wiki orriak esportatu - setting_cache_formatted_text: Formatudun testua katxeatu - permission_manage_project_activities: Proiektuaren jarduerak kudeatu - error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu - label_profile: Profila - permission_manage_subtasks: Azpiatazak kudeatu - field_parent_issue: Zeregin gurasoa - label_subtask_plural: Azpiatazak - label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali - error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu - error_unable_to_connect: Ezin da konektatu (%{value}) - error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu. - error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu. - field_principal: Ekintzaile - label_my_page_block: "Nire orriko blokea" - notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}." - text_zoom_out: Zooma txikiagotu - text_zoom_in: Zooma handiagotu - notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu." - label_overall_spent_time: Igarotako denbora guztira - field_time_entries: "Denbora erregistratu" - project_module_gantt: Gantt - project_module_calendar: Egutegia - button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}" - text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?" - field_text: Testu eremua - label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik" - setting_default_notification_option: "Lehenetsitako ohartarazpen aukera" - label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik" - label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik" - label_user_mail_option_none: "Gertakaririk ez" - field_member_of_group: "Esleituta duenaren taldea" - field_assigned_to_role: "Esleituta duenaren rola" - notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da." - label_principal_search: "Bilatu erabiltzaile edo taldea:" - label_user_search: "Erabiltzailea bilatu:" - field_visible: Ikusgai - setting_emails_header: "Eposten goiburua" - setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera" - text_time_logged_by_changeset: "%{value} aldaketan egindakoa." - setting_commit_logtime_enabled: "Erregistrutako denbora gaitu" - notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max}) - setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa" - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +# Redmine EU language +# Author: Ales Zabala Alava (Shagi), +# 2010-01-25 +# Distributed under the same terms as the Redmine itself. +eu: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%Y/%m/%d" + short: "%b %d" + long: "%Y %B %d" + + day_names: [Igandea, Astelehena, Asteartea, Asteazkena, Osteguna, Ostirala, Larunbata] + abbr_day_names: [Ig., Al., Ar., Az., Og., Or., La.] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua] + abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe] + # Used in date_select and datime_select. + order: + - :year + - :month + - :day + + time: + formats: + default: "%Y/%m/%d %H:%M" + time: "%H:%M" + short: "%b %d %H:%M" + long: "%Y %B %d %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "minutu erdi" + less_than_x_seconds: + one: "segundu bat baino gutxiago" + other: "%{count} segundu baino gutxiago" + x_seconds: + one: "segundu 1" + other: "%{count} segundu" + less_than_x_minutes: + one: "minutu bat baino gutxiago" + other: "%{count} minutu baino gutxiago" + x_minutes: + one: "minutu 1" + other: "%{count} minutu" + about_x_hours: + one: "ordu 1 inguru" + other: "%{count} ordu inguru" + x_days: + one: "egun 1" + other: "%{count} egun" + about_x_months: + one: "hilabete 1 inguru" + other: "%{count} hilabete inguru" + x_months: + one: "hilabete 1" + other: "%{count} hilabete" + about_x_years: + one: "urte 1 inguru" + other: "%{count} urte inguru" + over_x_years: + one: "urte 1 baino gehiago" + other: "%{count} urte baino gehiago" + almost_x_years: + one: "ia urte 1" + other: "ia %{count} urte" + + number: + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Byte" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "eta" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "Errore batek %{model} hau godetzea galarazi du." + other: "%{count} errorek %{model} hau gordetzea galarazi dute." + messages: + inclusion: "ez dago zerrendan" + exclusion: "erreserbatuta dago" + invalid: "baliogabea da" + confirmation: "ez du berrespenarekin bat egiten" + accepted: "onartu behar da" + empty: "ezin da hutsik egon" + blank: "ezin da hutsik egon" + too_long: "luzeegia da (maximoa %{count} karaktere dira)" + too_short: "laburregia da (minimoa %{count} karaktere dira)" + wrong_length: "luzera ezegokia da (%{count} karakter izan beharko litzake)" + taken: "dagoeneko hartuta dago" + not_a_number: "ez da zenbaki bat" + not_a_date: "ez da baliozko data" + greater_than: "%{count} baino handiagoa izan behar du" + greater_than_or_equal_to: "%{count} edo handiagoa izan behar du" + equal_to: "%{count} izan behar du" + less_than: "%{count} baino gutxiago izan behar du" + less_than_or_equal_to: "%{count} edo gutxiago izan behar du" + odd: "bakoitia izan behar du" + even: "bikoitia izan behar du" + greater_than_start_date: "hasiera data baino handiagoa izan behar du" + not_same_project: "ez dago proiektu berdinean" + circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke" + cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu." + + actionview_instancetag_blank_option: Hautatu mesedez + + general_text_No: 'Ez' + general_text_Yes: 'Bai' + general_text_no: 'ez' + general_text_yes: 'bai' + general_lang_name: 'Euskara' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Kontua ongi eguneratu da. + notice_account_invalid_creditentials: Erabiltzaile edo pasahitz ezegokia + notice_account_password_updated: Pasahitza ongi eguneratu da. + notice_account_wrong_password: Pasahitz ezegokia. + notice_account_register_done: Kontua ongi sortu da. Kontua gaitzeko klikatu epostan adierazi zaizun estekan. + notice_account_unknown_email: Erabiltzaile ezezaguna. + notice_can_t_change_password: Kontu honek kanpoko autentikazio bat erabiltzen du. Ezinezkoa da pasahitza aldatzea. + notice_account_lost_email_sent: Pasahitz berria aukeratzeko jarraibideak dituen eposta bat bidali zaizu. + notice_account_activated: Zure kontua gaituta dago. Orain saioa has dezakezu + notice_successful_create: Sortze arrakastatsua. + notice_successful_update: Eguneratze arrakastatsua. + notice_successful_delete: Ezabaketa arrakastatsua. + notice_successful_connection: Konexio arrakastatsua. + notice_file_not_found: Atzitu nahi duzun orria ez da exisitzen edo ezabatua izan da. + notice_locking_conflict: Beste erabiltzaile batek datuak eguneratu ditu. + notice_not_authorized: Ez duzu orri hau atzitzeko baimenik. + notice_email_sent: "%{value} helbidera eposta bat bidali da" + notice_email_error: "Errorea eposta bidaltzean (%{value})" + notice_feeds_access_key_reseted: Zure RSS atzipen giltza berrezarri da. + notice_api_access_key_reseted: Zure API atzipen giltza berrezarri da. + notice_failed_to_save_issues: "Hautatutako %{total} zereginetatik %{count} ezin izan dira konpondu: %{ids}." + notice_no_issue_selected: "Ez da zereginik hautatu! Mesedez, editatu nahi dituzun arazoak markatu." + notice_account_pending: "Zure kontua sortu da, orain kudeatzailearen onarpenaren zain dago." + notice_default_data_loaded: Lehenetsitako konfigurazioa ongi kargatu da. + notice_unable_delete_version: Ezin da bertsioa ezabatu. + notice_issue_done_ratios_updated: Burututako zereginen erlazioa eguneratu da. + + error_can_t_load_default_data: "Ezin izan da lehenetsitako konfigurazioa kargatu: %{value}" + error_scm_not_found: "Sarrera edo berrikuspena ez da biltegian topatu." + error_scm_command_failed: "Errorea gertatu da biltegia atzitzean: %{value}" + error_scm_annotate: "Sarrera ez da existitzen edo ezin da anotatu." + error_issue_not_found_in_project: 'Zeregina ez da topatu edo ez da proiektu honetakoa' + error_no_tracker_in_project: 'Proiektu honek ez du aztarnaririk esleituta. Mesedez egiaztatu Proiektuaren ezarpenak.' + error_no_default_issue_status: 'Zereginek ez dute lehenetsitako egoerarik. Mesedez egiaztatu zure konfigurazioa ("Kudeaketa -> Arazoen egoerak" atalera joan).' + error_can_not_reopen_issue_on_closed_version: 'Itxitako bertsio batera esleitutako zereginak ezin dira berrireki' + error_can_not_archive_project: Proiektu hau ezin da artxibatu + error_issue_done_ratios_not_updated: "Burututako zereginen erlazioa ez da eguneratu." + error_workflow_copy_source: 'Mesedez hautatu iturburuko aztarnari edo rola' + error_workflow_copy_target: 'Mesedez hautatu helburuko aztarnari(ak) edo rola(k)' + + warning_attachments_not_saved: "%{count} fitxategi ezin izan d(ir)a gorde." + + mail_subject_lost_password: "Zure %{value} pasahitza" + mail_body_lost_password: 'Zure pasahitza aldatzeko hurrengo estekan klikatu:' + mail_subject_register: "Zure %{value} kontuaren gaitzea" + mail_body_register: 'Zure kontua gaitzeko hurrengo estekan klikatu:' + mail_body_account_information_external: "Zure %{value} kontua erabil dezakezu saioa hasteko." + mail_body_account_information: Zure kontuaren informazioa + mail_subject_account_activation_request: "%{value} kontu gaitzeko eskaera" + mail_body_account_activation_request: "Erabiltzaile berri bat (%{value}) erregistratu da. Kontua zure onarpenaren zain dago:" + mail_subject_reminder: "%{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a" + mail_body_reminder: "Zuri esleituta dauden %{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a:" + mail_subject_wiki_content_added: "'%{id}' wiki orria gehitu da" + mail_body_wiki_content_added: "%{author}-(e)k '%{id}' wiki orria gehitu du." + mail_subject_wiki_content_updated: "'%{id}' wiki orria eguneratu da" + mail_body_wiki_content_updated: "%{author}-(e)k '%{id}' wiki orria eguneratu du." + + gui_validation_error: akats 1 + gui_validation_error_plural: "%{count} akats" + + field_name: Izena + field_description: Deskribapena + field_summary: Laburpena + field_is_required: Beharrezkoa + field_firstname: Izena + field_lastname: Abizenak + field_mail: Eposta + field_filename: Fitxategia + field_filesize: Tamaina + field_downloads: Deskargak + field_author: Egilea + field_created_on: Sortuta + field_updated_on: Eguneratuta + field_field_format: Formatua + field_is_for_all: Proiektu guztietarako + field_possible_values: Balio posibleak + field_regexp: Expresio erregularra + field_min_length: Luzera minimoa + field_max_length: Luzera maxioma + field_value: Balioa + field_category: Kategoria + field_title: Izenburua + field_project: Proiektua + field_issue: Zeregina + field_status: Egoera + field_notes: Oharrak + field_is_closed: Itxitako arazoa + field_is_default: Lehenetsitako balioa + field_tracker: Aztarnaria + field_subject: Gaia + field_due_date: Amaiera data + field_assigned_to: Esleituta + field_priority: Lehentasuna + field_fixed_version: Helburuko bertsioa + field_user: Erabiltzilea + field_role: Rola + field_homepage: Orri nagusia + field_is_public: Publikoa + field_parent: "Honen azpiproiektua:" + field_is_in_chlog: Zereginak aldaketa egunkarian ikusten dira + field_is_in_roadmap: Arazoak ibilbide-mapan erakutsi + field_login: Erabiltzaile izena + field_mail_notification: Eposta jakinarazpenak + field_admin: Kudeatzailea + field_last_login_on: Azken konexioa + field_language: Hizkuntza + field_effective_date: Data + field_password: Pasahitza + field_new_password: Pasahitz berria + field_password_confirmation: Berrespena + field_version: Bertsioa + field_type: Mota + field_host: Ostalaria + field_port: Portua + field_account: Kontua + field_base_dn: Base DN + field_attr_login: Erabiltzaile atributua + field_attr_firstname: Izena atributua + field_attr_lastname: Abizenak atributua + field_attr_mail: Eposta atributua + field_onthefly: Zuzeneko erabiltzaile sorrera + field_start_date: Hasiera + field_done_ratio: Egindako % + field_auth_source: Autentikazio modua + field_hide_mail: Nire eposta helbidea ezkutatu + field_comments: Iruzkina + field_url: URL + field_start_page: Hasierako orria + field_subproject: Azpiproiektua + field_hours: Ordu + field_activity: Jarduera + field_spent_on: Data + field_identifier: Identifikatzailea + field_is_filter: Iragazki moduan erabilita + field_issue_to: Erlazionatutako zereginak + field_delay: Atzerapena + field_assignable: Arazoak rol honetara esleitu daitezke + field_redirect_existing_links: Existitzen diren estekak berbideratu + field_estimated_hours: Estimatutako denbora + field_column_names: Zutabeak + field_time_zone: Ordu zonaldea + field_searchable: Bilagarria + field_default_value: Lehenetsitako balioa + field_comments_sorting: Iruzkinak erakutsi + field_parent_title: Orri gurasoa + field_editable: Editagarria + field_watcher: Behatzailea + field_identity_url: OpenID URLa + field_content: Edukia + field_group_by: Emaitzak honegatik taldekatu + field_sharing: Partekatzea + + setting_app_title: Aplikazioaren izenburua + setting_app_subtitle: Aplikazioaren azpizenburua + setting_welcome_text: Ongietorriko testua + setting_default_language: Lehenetsitako hizkuntza + setting_login_required: Autentikazioa derrigorrezkoa + setting_self_registration: Norberak erregistratu + setting_attachment_max_size: Eranskinen tamaina max. + setting_issues_export_limit: Zereginen esportatze limitea + setting_mail_from: Igorlearen eposta helbidea + setting_bcc_recipients: Hartzaileak ezkutuko kopian (bcc) + setting_plain_text_mail: Testu soileko epostak (HTML-rik ez) + setting_host_name: Ostalari izena eta bidea + setting_text_formatting: Testu formatua + setting_wiki_compression: Wikiaren historia konprimitu + setting_feeds_limit: Jarioaren edukiera limitea + setting_default_projects_public: Proiektu berriak defektuz publikoak dira + setting_autofetch_changesets: Commit-ak automatikoki hartu + setting_sys_api_enabled: Biltegien kudeaketarako WS gaitu + setting_commit_ref_keywords: Erreferentzien gako-hitzak + setting_commit_fix_keywords: Konpontze gako-hitzak + setting_autologin: Saioa automatikoki hasi + setting_date_format: Data formatua + setting_time_format: Ordu formatua + setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu + setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak + setting_repositories_encodings: Biltegien kodeketak + setting_emails_footer: Eposten oina + setting_protocol: Protokoloa + setting_per_page_options: Orriko objektuen aukerak + setting_user_format: Erabiltzaileak erakusteko formatua + setting_activity_days_default: Proiektuen jardueran erakusteko egunak + setting_display_subprojects_issues: Azpiproiektuen zereginak proiektu nagusian erakutsi defektuz + setting_enabled_scm: Gaitutako IKKak + setting_mail_handler_body_delimiters: "Lerro hauteko baten ondoren epostak moztu" + setting_mail_handler_api_enabled: Sarrerako epostentzako WS gaitu + setting_mail_handler_api_key: API giltza + setting_sequential_project_identifiers: Proiektuen identifikadore sekuentzialak sortu + setting_gravatar_enabled: Erabili Gravatar erabiltzaile ikonoak + setting_gravatar_default: Lehenetsitako Gravatar irudia + setting_diff_max_lines_displayed: Erakutsiko diren diff lerro kopuru maximoa + setting_file_max_size_displayed: Barnean erakuzten diren testu fitxategien tamaina maximoa + setting_repository_log_display_limit: Egunkari fitxategian erakutsiko diren berrikuspen kopuru maximoa. + setting_openid: Baimendu OpenID saio hasiera eta erregistatzea + setting_password_min_length: Pasahitzen luzera minimoa + setting_new_project_user_role_id: Proiektu berriak sortzerakoan kudeatzaile ez diren erabiltzaileei esleitutako rola + setting_default_projects_modules: Proiektu berrientzako defektuz gaitutako moduluak + setting_issue_done_ratio: "Zereginen burututako tasa kalkulatzean erabili:" + setting_issue_done_ratio_issue_field: Zeregin eremua erabili + setting_issue_done_ratio_issue_status: Zeregin egoera erabili + setting_start_of_week: "Egutegiak noiz hasi:" + setting_rest_api_enabled: Gaitu REST web zerbitzua + + permission_add_project: Proiektua sortu + permission_add_subprojects: Azpiproiektuak sortu + permission_edit_project: Proiektua editatu + permission_select_project_modules: Proiektuaren moduluak hautatu + permission_manage_members: Kideak kudeatu + permission_manage_versions: Bertsioak kudeatu + permission_manage_categories: Arazoen kategoriak kudeatu + permission_view_issues: Zereginak ikusi + permission_add_issues: Zereginak gehitu + permission_edit_issues: Zereginak aldatu + permission_manage_issue_relations: Zereginen erlazioak kudeatu + permission_add_issue_notes: Oharrak gehitu + permission_edit_issue_notes: Oharrak aldatu + permission_edit_own_issue_notes: Nork bere oharrak aldatu + permission_move_issues: Zereginak mugitu + permission_delete_issues: Zereginak ezabatu + permission_manage_public_queries: Galdera publikoak kudeatu + permission_save_queries: Galderak gorde + permission_view_gantt: Gantt grafikoa ikusi + permission_view_calendar: Egutegia ikusi + permission_view_issue_watchers: Behatzaileen zerrenda ikusi + permission_add_issue_watchers: Behatzaileak gehitu + permission_delete_issue_watchers: Behatzaileak ezabatu + permission_log_time: Igarotako denbora erregistratu + permission_view_time_entries: Igarotako denbora ikusi + permission_edit_time_entries: Denbora egunkariak editatu + permission_edit_own_time_entries: Nork bere denbora egunkariak editatu + permission_manage_news: Berriak kudeatu + permission_comment_news: Berrien iruzkinak egin + permission_manage_documents: Dokumentuak kudeatu + permission_view_documents: Dokumentuak ikusi + permission_manage_files: Fitxategiak kudeatu + permission_view_files: Fitxategiak ikusi + permission_manage_wiki: Wikia kudeatu + permission_rename_wiki_pages: Wiki orriak berrizendatu + permission_delete_wiki_pages: Wiki orriak ezabatu + permission_view_wiki_pages: Wikia ikusi + permission_view_wiki_edits: Wikiaren historia ikusi + permission_edit_wiki_pages: Wiki orriak editatu + permission_delete_wiki_pages_attachments: Eranskinak ezabatu + permission_protect_wiki_pages: Wiki orriak babestu + permission_manage_repository: Biltegiak kudeatu + permission_browse_repository: Biltegia arakatu + permission_view_changesets: Aldaketak ikusi + permission_commit_access: Commit atzipena + permission_manage_boards: Foroak kudeatu + permission_view_messages: Mezuak ikusi + permission_add_messages: Mezuak bidali + permission_edit_messages: Mezuak aldatu + permission_edit_own_messages: Nork bere mezuak aldatu + permission_delete_messages: Mezuak ezabatu + permission_delete_own_messages: Nork bere mezuak ezabatu + + project_module_issue_tracking: Zereginen jarraipena + project_module_time_tracking: Denbora jarraipena + project_module_news: Berriak + project_module_documents: Dokumentuak + project_module_files: Fitxategiak + project_module_wiki: Wiki + project_module_repository: Biltegia + project_module_boards: Foroak + + label_user: Erabiltzailea + label_user_plural: Erabiltzaileak + label_user_new: Erabiltzaile berria + label_user_anonymous: Ezezaguna + label_project: Proiektua + label_project_new: Proiektu berria + label_project_plural: Proiektuak + label_x_projects: + zero: proiekturik ez + one: proiektu bat + other: "%{count} proiektu" + label_project_all: Proiektu guztiak + label_project_latest: Azken proiektuak + label_issue: Zeregina + label_issue_new: Zeregin berria + label_issue_plural: Zereginak + label_issue_view_all: Zeregin guztiak ikusi + label_issues_by: "Zereginak honengatik: %{value}" + label_issue_added: Zeregina gehituta + label_issue_updated: Zeregina eguneratuta + label_document: Dokumentua + label_document_new: Dokumentu berria + label_document_plural: Dokumentuak + label_document_added: Dokumentua gehituta + label_role: Rola + label_role_plural: Rolak + label_role_new: Rol berria + label_role_and_permissions: Rolak eta baimenak + label_member: Kidea + label_member_new: Kide berria + label_member_plural: Kideak + label_tracker: Aztarnaria + label_tracker_plural: Aztarnariak + label_tracker_new: Aztarnari berria + label_workflow: Lan-fluxua + label_issue_status: Zeregin egoera + label_issue_status_plural: Zeregin egoerak + label_issue_status_new: Egoera berria + label_issue_category: Zeregin kategoria + label_issue_category_plural: Zeregin kategoriak + label_issue_category_new: Kategoria berria + label_custom_field: Eremu pertsonalizatua + label_custom_field_plural: Eremu pertsonalizatuak + label_custom_field_new: Eremu pertsonalizatu berria + label_enumerations: Enumerazioak + label_enumeration_new: Balio berria + label_information: Informazioa + label_information_plural: Informazioa + label_please_login: Saioa hasi mesedez + label_register: Erregistratu + label_login_with_open_id_option: edo OpenID-rekin saioa hasi + label_password_lost: Pasahitza galduta + label_home: Hasiera + label_home_heading: Hasiera + label_my_page: Nire orria + label_my_account: Nire kontua + label_my_projects: Nire proiektuak + label_administration: Kudeaketa + label_login: Saioa hasi + label_logout: Saioa bukatu + label_help: Laguntza + label_reported_issues: Berri emandako zereginak + label_assigned_to_me_issues: Niri esleitutako arazoak + label_last_login: Azken konexioa + label_registered_on: Noiz erregistratuta + label_activity: Jarduerak + label_overall_activity: Jarduera guztiak + label_user_activity: "%{value}-(r)en jarduerak" + label_new: Berria + label_logged_as: "Sartutako erabiltzailea:" + label_environment: Ingurune + label_authentication: Autentikazioa + label_auth_source: Autentikazio modua + label_auth_source_new: Autentikazio modu berria + label_auth_source_plural: Autentikazio moduak + label_subproject_plural: Azpiproiektuak + label_subproject_new: Azpiproiektu berria + label_and_its_subprojects: "%{value} eta bere azpiproiektuak" + label_min_max_length: Luzera min - max + label_list: Zerrenda + label_date: Data + label_integer: Osokoa + label_float: Koma higikorrekoa + label_boolean: Boolearra + label_string: Testua + label_text: Testu luzea + label_attribute: Atributua + label_attribute_plural: Atributuak + label_download: "Deskarga %{count}" + label_download_plural: "%{count} Deskarga" + label_no_data: Ez dago erakusteko daturik + label_change_status: Egoera aldatu + label_history: Historikoa + label_attachment: Fitxategia + label_attachment_new: Fitxategi berria + label_attachment_delete: Fitxategia ezabatu + label_attachment_plural: Fitxategiak + label_file_added: Fitxategia gehituta + label_report: Berri ematea + label_report_plural: Berri emateak + label_news: Berria + label_news_new: Berria gehitu + label_news_plural: Berriak + label_news_latest: Azken berriak + label_news_view_all: Berri guztiak ikusi + label_news_added: Berria gehituta + label_change_log: Aldaketa egunkaria + label_settings: Ezarpenak + label_overview: Gainbegirada + label_version: Bertsioa + label_version_new: Bertsio berria + label_version_plural: Bertsioak + label_close_versions: Burututako bertsioak itxi + label_confirmation: Baieztapena + label_export_to: 'Eskuragarri baita:' + label_read: Irakurri... + label_public_projects: Proiektu publikoak + label_open_issues: irekita + label_open_issues_plural: irekiak + label_closed_issues: itxita + label_closed_issues_plural: itxiak + label_x_open_issues_abbr_on_total: + zero: 0 irekita / %{total} + one: 1 irekita / %{total} + other: "%{count} irekiak / %{total}" + label_x_open_issues_abbr: + zero: 0 irekita + one: 1 irekita + other: "%{count} irekiak" + label_x_closed_issues_abbr: + zero: 0 itxita + one: 1 itxita + other: "%{count} itxiak" + label_total: Guztira + label_permissions: Baimenak + label_current_status: Uneko egoera + label_new_statuses_allowed: Baimendutako egoera berriak + label_all: guztiak + label_none: ezer + label_nobody: inor + label_next: Hurrengoa + label_previous: Aurrekoak + label_used_by: Erabilita + label_details: Xehetasunak + label_add_note: Oharra gehitu + label_per_page: Orriko + label_calendar: Egutegia + label_months_from: hilabete noiztik + label_gantt: Gantt + label_internal: Barnekoa + label_last_changes: "azken %{count} aldaketak" + label_change_view_all: Aldaketa guztiak ikusi + label_personalize_page: Orri hau pertsonalizatu + label_comment: Iruzkin + label_comment_plural: Iruzkinak + label_x_comments: + zero: iruzkinik ez + one: iruzkin 1 + other: "%{count} iruzkin" + label_comment_add: Iruzkina gehitu + label_comment_added: Iruzkina gehituta + label_comment_delete: Iruzkinak ezabatu + label_query: Galdera pertsonalizatua + label_query_plural: Pertsonalizatutako galderak + label_query_new: Galdera berria + label_filter_add: Iragazkia gehitu + label_filter_plural: Iragazkiak + label_equals: da + label_not_equals: ez da + label_in_less_than: baino gutxiagotan + label_in_more_than: baino gehiagotan + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: hauetan + label_today: gaur + label_all_time: denbora guztia + label_yesterday: atzo + label_this_week: aste honetan + label_last_week: pasadan astean + label_last_n_days: "azken %{count} egunetan" + label_this_month: hilabete hau + label_last_month: pasadan hilabetea + label_this_year: urte hau + label_date_range: Data tartea + label_less_than_ago: egun hauek baino gutxiago + label_more_than_ago: egun hauek baino gehiago + label_ago: orain dela + label_contains: dauka + label_not_contains: ez dauka + label_day_plural: egun + label_repository: Biltegia + label_repository_plural: Biltegiak + label_browse: Arakatu + label_modification: "aldaketa %{count}" + label_modification_plural: "%{count} aldaketa" + label_branch: Adarra + label_tag: Etiketa + label_revision: Berrikuspena + label_revision_plural: Berrikuspenak + label_revision_id: "%{value} berrikuspen" + label_associated_revisions: Elkartutako berrikuspenak + label_added: gehituta + label_modified: aldatuta + label_copied: kopiatuta + label_renamed: berrizendatuta + label_deleted: ezabatuta + label_latest_revision: Azken berrikuspena + label_latest_revision_plural: Azken berrikuspenak + label_view_revisions: Berrikuspenak ikusi + label_view_all_revisions: Berrikuspen guztiak ikusi + label_max_size: Tamaina maximoa + label_sort_highest: Goraino mugitu + label_sort_higher: Gora mugitu + label_sort_lower: Behera mugitu + label_sort_lowest: Beheraino mugitu + label_roadmap: Ibilbide-mapa + label_roadmap_due_in: "Epea: %{value}" + label_roadmap_overdue: "%{value} berandu" + label_roadmap_no_issues: Ez dago zereginik bertsio honetan + label_search: Bilatu + label_result_plural: Emaitzak + label_all_words: hitz guztiak + label_wiki: Wikia + label_wiki_edit: Wiki edizioa + label_wiki_edit_plural: Wiki edizioak + label_wiki_page: Wiki orria + label_wiki_page_plural: Wiki orriak + label_index_by_title: Izenburuaren araberako indizea + label_index_by_date: Dataren araberako indizea + label_current_version: Uneko bertsioa + label_preview: Aurreikusi + label_feed_plural: Jarioak + label_changes_details: Aldaketa guztien xehetasunak + label_issue_tracking: Zeregin jarraipena + label_spent_time: Igarotako denbora + label_f_hour: "ordu %{value}" + label_f_hour_plural: "%{value} ordu" + label_time_tracking: Denbora jarraipena + label_change_plural: Aldaketak + label_statistics: Estatistikak + label_commits_per_month: Commit-ak hilabeteka + label_commits_per_author: Commit-ak egileka + label_view_diff: Ezberdintasunak ikusi + label_diff_inline: barnean + label_diff_side_by_side: aldez alde + label_options: Aukerak + label_copy_workflow_from: Kopiatu workflow-a hemendik + label_permissions_report: Baimenen txostena + label_watched_issues: Behatutako zereginak + label_related_issues: Erlazionatutako zereginak + label_applied_status: Aplikatutako egoera + label_loading: Kargatzen... + label_relation_new: Erlazio berria + label_relation_delete: Erlazioa ezabatu + label_relates_to: erlazionatuta dago + label_duplicates: bikoizten du + label_duplicated_by: honek bikoiztuta + label_blocks: blokeatzen du + label_blocked_by: honek blokeatuta + label_precedes: aurretik doa + label_follows: jarraitzen du + label_end_to_start: bukaeratik hasierara + label_end_to_end: bukaeratik bukaerara + label_start_to_start: hasieratik hasierhasieratik bukaerara + label_start_to_end: hasieratik bukaerara + label_stay_logged_in: Saioa mantendu + label_disabled: ezgaituta + label_show_completed_versions: Bukatutako bertsioak ikusi + label_me: ni + label_board: Foroa + label_board_new: Foro berria + label_board_plural: Foroak + label_topic_plural: Gaiak + label_message_plural: Mezuak + label_message_last: Azken mezua + label_message_new: Mezu berria + label_message_posted: Mezua gehituta + label_reply_plural: Erantzunak + label_send_information: Erabiltzaileai kontuaren informazioa bidali + label_year: Urtea + label_month: Hilabetea + label_week: Astea + label_date_from: Nork + label_date_to: Nori + label_language_based: Erabiltzailearen hizkuntzaren arabera + label_sort_by: "Ordenazioa: %{value}" + label_send_test_email: Frogako mezua bidali + label_feeds_access_key: RSS atzipen giltza + label_missing_feeds_access_key: RSS atzipen giltza falta da + label_feeds_access_key_created_on: "RSS atzipen giltza orain dela %{value} sortuta" + label_module_plural: Moduluak + label_added_time_by: "%{author}, orain dela %{age} gehituta" + label_updated_time_by: "%{author}, orain dela %{age} eguneratuta" + label_updated_time: "Orain dela %{value} eguneratuta" + label_jump_to_a_project: Joan proiektura... + label_file_plural: Fitxategiak + label_changeset_plural: Aldaketak + label_default_columns: Lehenetsitako zutabeak + label_no_change_option: (Aldaketarik ez) + label_bulk_edit_selected_issues: Hautatutako zereginak batera editatu + label_theme: Itxura + label_default: Lehenetsia + label_search_titles_only: Izenburuetan bakarrik bilatu + label_user_mail_option_all: "Nire proiektu guztietako gertakari guztientzat" + label_user_mail_option_selected: "Hautatutako proiektuetako edozein gertakarientzat..." + label_user_mail_no_self_notified: "Ez dut nik egiten ditudan aldeketen jakinarazpenik jaso nahi" + label_registration_activation_by_email: kontuak epostaz gaitu + label_registration_manual_activation: kontuak eskuz gaitu + label_registration_automatic_activation: kontuak automatikoki gaitu + label_display_per_page: "Orriko: %{value}" + label_age: Adina + label_change_properties: Propietateak aldatu + label_general: Orokorra + label_more: Gehiago + label_scm: IKK + label_plugins: Pluginak + label_ldap_authentication: LDAP autentikazioa + label_downloads_abbr: Desk. + label_optional_description: Aukerako deskribapena + label_add_another_file: Beste fitxategia gehitu + label_preferences: Hobespenak + label_chronological_order: Orden kronologikoan + label_reverse_chronological_order: Alderantzizko orden kronologikoan + label_planning: Planifikazioa + label_incoming_emails: Sarrerako epostak + label_generate_key: Giltza sortu + label_issue_watchers: Behatzaileak + label_example: Adibidea + label_display: Bistaratzea + label_sort: Ordenatu + label_ascending: Gorantz + label_descending: Beherantz + label_date_from_to: "%{start}-tik %{end}-ra" + label_wiki_content_added: Wiki orria gehituta + label_wiki_content_updated: Wiki orria eguneratuta + label_group: Taldea + label_group_plural: Taldeak + label_group_new: Talde berria + label_time_entry_plural: Igarotako denbora + label_version_sharing_none: Ez partekatuta + label_version_sharing_descendants: Azpiproiektuekin + label_version_sharing_hierarchy: Proiektu Hierarkiarekin + label_version_sharing_tree: Proiektu zuhaitzarekin + label_version_sharing_system: Proiektu guztiekin + label_update_issue_done_ratios: Zereginen burututako erlazioa eguneratu + label_copy_source: Iturburua + label_copy_target: Helburua + label_copy_same_as_target: Helburuaren berdina + label_display_used_statuses_only: Aztarnari honetan erabiltzen diren egoerak bakarrik erakutsi + label_api_access_key: API atzipen giltza + label_missing_api_access_key: API atzipen giltza falta da + label_api_access_key_created_on: "API atzipen giltza sortuta orain dela %{value}" + + button_login: Saioa hasi + button_submit: Bidali + button_save: Gorde + button_check_all: Guztiak markatu + button_uncheck_all: Guztiak desmarkatu + button_delete: Ezabatu + button_create: Sortu + button_create_and_continue: Sortu eta jarraitu + button_test: Frogatu + button_edit: Editatu + button_add: Gehitu + button_change: Aldatu + button_apply: Aplikatu + button_clear: Garbitu + button_lock: Blokeatu + button_unlock: Desblokeatu + button_download: Deskargatu + button_list: Zerrenda + button_view: Ikusi + button_move: Mugitu + button_move_and_follow: Mugitu eta jarraitu + button_back: Atzera + button_cancel: Ezeztatu + button_activate: Gahitu + button_sort: Ordenatu + button_log_time: Denbora erregistratu + button_rollback: Itzuli bertsio honetara + button_watch: Behatu + button_unwatch: Behatzen utzi + button_reply: Erantzun + button_archive: Artxibatu + button_unarchive: Desartxibatu + button_reset: Berrezarri + button_rename: Berrizendatu + button_change_password: Pasahitza aldatu + button_copy: Kopiatu + button_copy_and_follow: Kopiatu eta jarraitu + button_annotate: Anotatu + button_update: Eguneratu + button_configure: Konfiguratu + button_quote: Aipatu + button_duplicate: Bikoiztu + button_show: Ikusi + + status_active: gaituta + status_registered: izena emanda + status_locked: blokeatuta + + version_status_open: irekita + version_status_locked: blokeatuta + version_status_closed: itxita + + field_active: Gaituta + + text_select_mail_notifications: Jakinarazpenak zein ekintzetarako bidaliko diren hautatu. + text_regexp_info: adib. ^[A-Z0-9]+$ + text_min_max_length_info: 0k mugarik gabe esan nahi du + text_project_destroy_confirmation: Ziur zaude proiektu hau eta erlazionatutako datu guztiak ezabatu nahi dituzula? + text_subprojects_destroy_warning: "%{value} azpiproiektuak ere ezabatuko dira." + text_workflow_edit: Hautatu rola eta aztarnaria workflow-a editatzeko + text_are_you_sure: Ziur zaude? + text_journal_changed: "%{label} %{old}-(e)tik %{new}-(e)ra aldatuta" + text_journal_set_to: "%{label}-k %{value} balioa hartu du" + text_journal_deleted: "%{label} ezabatuta (%{old})" + text_journal_added: "%{label} %{value} gehituta" + text_tip_issue_begin_day: gaur hasten diren zereginak + text_tip_issue_end_day: gaur bukatzen diren zereginak + text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak + text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
    Gorde eta gero identifikadorea ezin da aldatu.' + text_caracters_maximum: "%{count} karaktere gehienez." + text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du." + text_length_between: "Luzera %{min} eta %{max} karaktereen artekoa." + text_tracker_no_workflow: Ez da workflow-rik definitu aztarnari honentzako + text_unallowed_characters: Debekatutako karaktereak + text_comma_separated: Balio anitz izan daitezke (komaz banatuta). + text_line_separated: Balio anitz izan daitezke (balio bakoitza lerro batean). + text_issues_ref_in_commit_messages: Commit-en mezuetan zereginak erlazionatu eta konpontzen + text_issue_added: "%{id} zeregina %{author}-(e)k jakinarazi du." + text_issue_updated: "%{id} zeregina %{author}-(e)k eguneratu du." + text_wiki_destroy_confirmation: Ziur zaude wiki hau eta bere eduki guztiak ezabatu nahi dituzula? + text_issue_category_destroy_question: "Zeregin batzuk (%{count}) kategoria honetara esleituta daude. Zer egin nahi duzu?" + text_issue_category_destroy_assignments: Kategoria esleipenak kendu + text_issue_category_reassign_to: Zereginak kategoria honetara esleitu + text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)." + text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu." + text_load_default_configuration: Lehenetsitako konfigurazioa kargatu + text_status_changed_by_changeset: "%{value} aldaketan aplikatuta." + text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?' + text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:' + text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta + text_file_repository_writable: Eranskinen direktorioan idatz daiteke + text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke + text_rmagick_available: RMagick eskuragarri (aukerazkoa) + text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?" + text_destroy_time_entries: Ezabatu berri emandako orduak + text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu + text_reassign_time_entries: 'Berri emandako orduak zeregin honetara esleitu:' + text_user_wrote: "%{value}-(e)k idatzi zuen:" + text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude." + text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:' + text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." + text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira." + text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.' + text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko' + text_wiki_page_destroy_question: "Orri honek %{descendants} orri seme eta ondorengo ditu. Zer egin nahi duzu?" + text_wiki_page_nullify_children: "Orri semeak erro orri moduan mantendu" + text_wiki_page_destroy_children: "Orri semeak eta beraien ondorengo guztiak ezabatu" + text_wiki_page_reassign_children: "Orri semeak orri guraso honetara esleitu" + text_own_membership_delete_confirmation: "Zure baimen batzuk (edo guztiak) kentzera zoaz eta baliteke horren ondoren proiektu hau ezin editatzea.\n Ziur zaude jarraitu nahi duzula?" + + default_role_manager: Kudeatzailea + default_role_developer: Garatzailea + default_role_reporter: Berriemailea + default_tracker_bug: Errorea + default_tracker_feature: Eginbidea + default_tracker_support: Laguntza + default_issue_status_new: Berria + default_issue_status_in_progress: Lanean + default_issue_status_resolved: Ebatzita + default_issue_status_feedback: Berrelikadura + default_issue_status_closed: Itxita + default_issue_status_rejected: Baztertua + default_doc_category_user: Erabiltzaile dokumentazioa + default_doc_category_tech: Dokumentazio teknikoa + default_priority_low: Baxua + default_priority_normal: Normala + default_priority_high: Altua + default_priority_urgent: Larria + default_priority_immediate: Berehalakoa + default_activity_design: Diseinua + default_activity_development: Garapena + + enumeration_issue_priorities: Zeregin lehentasunak + enumeration_doc_categories: Dokumentu kategoriak + enumeration_activities: Jarduerak (denbora kontrola)) + enumeration_system_activity: Sistemako Jarduera + label_board_sticky: Itsaskorra + label_board_locked: Blokeatuta + permission_export_wiki_pages: Wiki orriak esportatu + setting_cache_formatted_text: Formatudun testua katxeatu + permission_manage_project_activities: Proiektuaren jarduerak kudeatu + error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu + label_profile: Profila + permission_manage_subtasks: Azpiatazak kudeatu + field_parent_issue: Zeregin gurasoa + label_subtask_plural: Azpiatazak + label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali + error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu + error_unable_to_connect: Ezin da konektatu (%{value}) + error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu. + error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu. + field_principal: Ekintzaile + label_my_page_block: "Nire orriko blokea" + notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}." + text_zoom_out: Zooma txikiagotu + text_zoom_in: Zooma handiagotu + notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu." + label_overall_spent_time: Igarotako denbora guztira + field_time_entries: "Denbora erregistratu" + project_module_gantt: Gantt + project_module_calendar: Egutegia + button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}" + text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?" + field_text: Testu eremua + label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik" + setting_default_notification_option: "Lehenetsitako ohartarazpen aukera" + label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik" + label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik" + label_user_mail_option_none: "Gertakaririk ez" + field_member_of_group: "Esleituta duenaren taldea" + field_assigned_to_role: "Esleituta duenaren rola" + notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da." + label_principal_search: "Bilatu erabiltzaile edo taldea:" + label_user_search: "Erabiltzailea bilatu:" + field_visible: Ikusgai + setting_emails_header: "Eposten goiburua" + setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera" + text_time_logged_by_changeset: "%{value} aldaketan egindakoa." + setting_commit_logtime_enabled: "Erregistrutako denbora gaitu" + notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max}) + setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa" + field_warn_on_leaving_unsaved: Gorde gabeko testua duen orri batetik ateratzen naizenean ohartarazi + text_warn_on_leaving_unsaved: Uneko orritik joaten bazara gorde gabeko testua galduko da. + label_my_queries: Nire galdera pertsonalizatuak + text_journal_changed_no_detail: "%{label} eguneratuta" + label_news_comment_added: Berri batera iruzkina gehituta + button_expand_all: Guztia zabaldu + button_collapse_all: Guztia tolestu + label_additional_workflow_transitions_for_assignee: Erabiltzaileak esleitua duenean baimendutako transtsizio gehigarriak + label_additional_workflow_transitions_for_author: Erabiltzailea egilea denean baimendutako transtsizio gehigarriak + label_bulk_edit_selected_time_entries: Hautatutako denbora egunkariak batera editatu + text_time_entries_destroy_confirmation: Ziur zaude hautatutako denbora egunkariak ezabatu nahi dituzula? + label_role_anonymous: Ezezaguna + label_role_non_member: Ez kidea + label_issue_note_added: Oharra gehituta + label_issue_status_updated: Egoera eguneratuta + label_issue_priority_updated: Lehentasuna eguneratuta + label_issues_visibility_own: Erabiltzaileak sortu edo esleituta dituen zereginak + field_issues_visibility: Zeregin ikusgarritasuna + label_issues_visibility_all: Zeregin guztiak + permission_set_own_issues_private: Nork bere zereginak publiko edo pribatu jarri + field_is_private: Pribatu + permission_set_issues_private: Zereginak publiko edo pribatu jarri + label_issues_visibility_public: Pribatu ez diren zeregin guztiak + text_issues_destroy_descendants_confirmation: Honek %{count} azpiataza ezabatuko ditu baita ere. + field_commit_logs_encoding: Commit-en egunkarien kodetzea + field_scm_path_encoding: Bidearen kodeketa + text_scm_path_encoding_note: "Lehentsita: UTF-8" + field_path_to_repository: Biltegirako bidea + field_root_directory: Erro direktorioa + field_cvs_module: Modulua + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Biltegi locala (adib. /hgrepo, c:\hgrepo) + text_scm_command: Komandoa + text_scm_command_version: Bertsioa + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/fa.yml --- a/config/locales/fa.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/fa.yml Mon Jun 06 14:41:04 2011 +0100 @@ -17,16 +17,19 @@ month_names: [~, ژانویه, فوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] abbr_month_names: [~, ژان, فور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: - default: "%Y/%m/%d %p %I:%M" - time: "%p %I:%M" + default: "%Y/%m/%d - %H:%M" + time: "%H:%M" short: "%d %b %H:%M" - long: "%B %d, %Y %H:%M" - am: "ق.ظ" - pm: "ب.ظ" + long: "%d %B %Y ساعت %H:%M" + am: "صبح" + pm: "عصر" datetime: distance_in_words: @@ -207,7 +210,7 @@ gui_validation_error_plural: "%{count} ایراد" field_name: نام - field_description: توضیح + field_description: یادداشت field_summary: خلاصه field_is_required: الزامی field_firstname: نام کوچک @@ -231,7 +234,7 @@ field_project: پروژه field_issue: پیامد field_status: وضعیت - field_notes: یادداشت‌ها + field_notes: یادداشت field_is_closed: پیامد بسته شده field_is_default: مقدار پیش‌گزیده field_tracker: پیگرد @@ -246,7 +249,7 @@ field_homepage: برگه خانه field_is_public: همگانی field_parent: پروژه پدر - field_is_in_roadmap: این پیامدها در نقشه راه نشان داده شوند + field_is_in_roadmap: این پیامدها در چشم‌انداز نشان داده شوند field_login: ورود field_mail_notification: آگاه سازی‌های ایمیلی field_admin: سرپرست @@ -276,7 +279,7 @@ field_start_page: برگه آغاز field_subproject: زیر پروژه field_hours: ساعت‌ - field_activity: فعالیت + field_activity: گزارش field_spent_on: در تاریخ field_identifier: شناسه field_is_filter: پالایش پذیر @@ -330,13 +333,12 @@ setting_cross_project_issue_relations: توانایی وابستگی میان پروژه‌ای پیامدها setting_issue_list_default_columns: ستون‌های پیش‌گزیده نمایش داده شده در فهرست پیامدها setting_repositories_encodings: کدگذاری انباره‌ها - setting_commit_logs_encoding: کدگذاری پیام‌های انباره setting_emails_header: سرنویس ایمیل‌ها setting_emails_footer: پانویس ایمیل‌ها setting_protocol: پیوندنامه setting_per_page_options: گزینه‌های اندازه داده‌های هر برگ setting_user_format: قالب نمایشی کاربران - setting_activity_days_default: روزهای نمایش داده شده در فعالیت پروژه + setting_activity_days_default: روزهای نمایش داده شده در گزارش پروژه setting_display_subprojects_issues: پیش‌گزیده نمایش پیامدهای زیرپروژه در پروژه پدر setting_enabled_scm: فعالسازی SCM setting_mail_handler_body_delimiters: "بریدن ایمیل‌ها پس از یکی از این ردیف‌ها" @@ -360,7 +362,7 @@ setting_cache_formatted_text: نهان سازی نوشته‌های قالب بندی شده setting_default_notification_option: آگاه سازی پیش‌گزیده setting_commit_logtime_enabled: فعالسازی زمان گذاشته شده - setting_commit_logtime_activity_id: فعالیت زمان گذاشته شده + setting_commit_logtime_activity_id: کار زمان گذاشته شده setting_gantt_items_limit: بیشترین شمار بخش‌های نمایش داده شده در نمودار گانت permission_add_project: ساخت پروژه @@ -368,15 +370,15 @@ permission_edit_project: ویرایش پروژه permission_select_project_modules: گزینش پیمانه‌های پروژه permission_manage_members: سرپرستی اعضا - permission_manage_project_activities: سرپرستی فعالیت‌های پروژه + permission_manage_project_activities: سرپرستی کارهای پروژه permission_manage_versions: سرپرستی نگارش‌ها permission_manage_categories: سرپرستی دسته‌های پیامد permission_view_issues: دیدن پیامدها permission_add_issues: افزودن پیامدها permission_edit_issues: ویرایش پیامدها permission_manage_issue_relations: سرپرستی وابستگی پیامدها - permission_add_issue_notes: افزودن یادداشت‌ها - permission_edit_issue_notes: ویرایش یادداشت‌ها + permission_add_issue_notes: افزودن یادداشت + permission_edit_issue_notes: ویرایش یادداشت permission_edit_own_issue_notes: ویرایش یادداشت خود permission_move_issues: جابجایی پیامدها permission_delete_issues: پاک کردن پیامدها @@ -447,7 +449,7 @@ label_issue_new: پیامد تازه label_issue_plural: پیامد label_issue_view_all: دیدن همه پیامدها - label_issues_by: "پیامدهای دست%{value}" + label_issues_by: "دسته‌بندی پیامدها با %{value}" label_issue_added: پیامد افزوده شد label_issue_updated: پیامد بروز شد label_document: نوشتار @@ -495,9 +497,9 @@ label_assigned_to_me_issues: پیامدهای واگذار شده به من label_last_login: آخرین ورود label_registered_on: نام نویسی شده در - label_activity: فعالیت - label_overall_activity: فعالیت روی هم رفته - label_user_activity: "فعالیت %{value}" + label_activity: گزارش + label_overall_activity: گزارش روی هم رفته + label_user_activity: "گزارش %{value}" label_new: تازه label_logged_as: "نام کاربری:" label_environment: محیط @@ -537,7 +539,7 @@ label_news_view_all: دیدن همه رویدادها label_news_added: رویداد افزوده شد label_settings: پیکربندی - label_overview: دورنما + label_overview: در یک نگاه label_version: نگارش label_version_new: نگارش تازه label_version_plural: نگارش @@ -644,7 +646,7 @@ label_sort_higher: بردن به بالا label_sort_lower: بردن به پایین label_sort_lowest: بردن به پایان - label_roadmap: نقشه راه + label_roadmap: چشم‌انداز label_roadmap_due_in: "سررسید در %{value}" label_roadmap_overdue: "%{value} دیرکرد" label_roadmap_no_issues: هیچ پیامدی برای این نگارش نیست @@ -754,7 +756,7 @@ label_plugins: افزونه‌ها label_ldap_authentication: شناساییLDAP label_downloads_abbr: دریافت - label_optional_description: توضیح اختیاری + label_optional_description: یادداشت دلخواه label_add_another_file: افزودن پرونده دیگر label_preferences: پسندها label_chronological_order: به ترتیب تاریخ @@ -933,13 +935,47 @@ enumeration_issue_priorities: برتری‌های پیامد enumeration_doc_categories: دسته‌های نوشتار - enumeration_activities: فعالیت‌ها (پیگیری زمان) - enumeration_system_activity: فعالیت سامانه + enumeration_activities: کارها (پیگیری زمان) + enumeration_system_activity: کار سامانه - text_tip_issue_begin_day: issue beginning this day - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_tip_issue_begin_end_day: issue beginning and ending this day - text_tip_issue_end_day: issue ending this day - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + text_tip_issue_begin_day: پیامد در این روز آغاز می‌شود + field_warn_on_leaving_unsaved: هنگام ترک برگه‌ای که نوشته‌های آن نگهداری نشده، به من هشدار بده + text_tip_issue_begin_end_day: پیامد در این روز آغاز می‌شود و پایان می‌پذیرد + text_tip_issue_end_day: پیامد در این روز پایان می‌پذیرد + text_warn_on_leaving_unsaved: این برگه دارای نوشته‌های نگهداری نشده است که اگر آن را ترک کنید، از میان می‌روند. + label_my_queries: جستارهای سفارشی من + text_journal_changed_no_detail: "%{label} بروز شد" + label_news_comment_added: دیدگاه به یک رویداد افزوده شد + button_expand_all: باز کردن همه + button_collapse_all: بستن همه + label_additional_workflow_transitions_for_assignee: زمانی که به کاربر واگذار شده، گذارهای بیشتر پذیرفته می‌شود + label_additional_workflow_transitions_for_author: زمانی که کاربر نویسنده است، گذارهای بیشتر پذیرفته می‌شود + label_bulk_edit_selected_time_entries: ویرایش دسته‌ای زمان‌های گزارش شده گزینش شده + text_time_entries_destroy_confirmation: آیا می‌خواهید زمان‌های گزارش شده گزینش شده پاک شوند؟ + label_role_anonymous: ناشناس + label_role_non_member: غیر عضو + label_issue_note_added: یادداشت افزوده شد + label_issue_status_updated: وضعیت بروز شد + label_issue_priority_updated: برتری بروز شد + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: کدگذاری پیام‌های انباره + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/fi.yml --- a/config/locales/fi.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/fi.yml Mon Jun 06 14:41:04 2011 +0100 @@ -13,7 +13,10 @@ abbr_day_names: [Su, Ma, Ti, Ke, To, Pe, La] month_names: [~, Tammikuu, Helmikuu, Maaliskuu, Huhtikuu, Toukokuu, Kesäkuu, Heinäkuu, Elokuu, Syyskuu, Lokakuu, Marraskuu, Joulukuu] abbr_month_names: [~, Tammi, Helmi, Maalis, Huhti, Touko, Kesä, Heinä, Elo, Syys, Loka, Marras, Joulu] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -159,7 +162,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-15 - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Tilin päivitys onnistui. @@ -263,7 +266,7 @@ field_attr_mail: Sähköpostinmääre field_onthefly: Automaattinen käyttäjien luonti field_start_date: Alku - field_done_ratio: % Tehty + field_done_ratio: "% Tehty" field_auth_source: Varmennusmuoto field_hide_mail: Piiloita sähköpostiosoitteeni field_comments: Kommentti @@ -756,7 +759,6 @@ label_issue_watchers: Tapahtuman seuraajat button_quote: Vastaa setting_sequential_project_identifiers: Luo peräkkäiset projektien tunnisteet - setting_commit_logs_encoding: Tee viestien koodaus notice_unable_delete_version: Version poisto epäonnistui label_renamed: uudelleennimetty label_copied: kopioitu @@ -962,3 +964,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Tee viestien koodaus + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/fr.yml --- a/config/locales/fr.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/fr.yml Mon Jun 06 14:41:04 2011 +0100 @@ -17,7 +17,10 @@ abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam] month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre] abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -151,7 +154,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Le compte a été mis à jour avec succès. @@ -275,7 +278,7 @@ field_attr_mail: Attribut Email field_onthefly: Création des utilisateurs à la volée field_start_date: Début - field_done_ratio: % réalisé + field_done_ratio: "% réalisé" field_auth_source: Mode d'authentification field_hide_mail: Cacher mon adresse mail field_comments: Commentaire @@ -308,7 +311,10 @@ field_parent_issue: Tâche parente field_visible: Visible field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardé" - + field_issues_visibility: Visibilité des demandes + field_is_private: Privée + field_commit_logs_encoding: Encodage des messages de commit + setting_app_title: Titre de l'application setting_app_subtitle: Sous-titre de l'application setting_welcome_text: Texte d'accueil @@ -335,7 +341,6 @@ setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes setting_repositories_encodings: Encodages des dépôts - setting_commit_logs_encoding: Encodage des messages de commit setting_emails_footer: Pied-de-page des emails setting_protocol: Protocole setting_per_page_options: Options d'objets affichés par page @@ -377,6 +382,8 @@ permission_add_issues: Créer des demandes permission_edit_issues: Modifier les demandes permission_manage_issue_relations: Gérer les relations + permission_set_issues_private: Rendre les demandes publiques ou privées + permission_set_own_issues_private: Rendre ses propres demandes publiques ou privées permission_add_issue_notes: Ajouter des notes permission_edit_issue_notes: Modifier les notes permission_edit_own_issue_notes: Modifier ses propres notes @@ -462,6 +469,8 @@ label_role_plural: Rôles label_role_new: Nouveau rôle label_role_and_permissions: Rôles et permissions + label_role_anonymous: Anonyme + label_role_non_member: Non membre label_member: Membre label_member_new: Nouveau membre label_member_plural: Membres @@ -541,6 +550,7 @@ label_news_latest: Dernières annonces label_news_view_all: Voir toutes les annonces label_news_added: Annonce ajoutée + label_news_comment_added: Commentaire ajouté à une annonce label_settings: Configuration label_overview: Aperçu label_version: Version @@ -787,12 +797,19 @@ label_project_copy_notifications: Envoyer les notifications durant la copie du projet label_principal_search: "Rechercher un utilisateur ou un groupe :" label_user_search: "Rechercher un utilisateur :" + label_additional_workflow_transitions_for_author: Autorisations supplémentaires lorsque l'utilisateur a créé la demande + label_additional_workflow_transitions_for_assignee: Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur + label_issues_visibility_all: Toutes les demandes + label_issues_visibility_public: Toutes les demandes non privées + label_issues_visibility_own: Demandes créées par ou assignées à l'utilisateur button_login: Connexion button_submit: Soumettre button_save: Sauvegarder button_check_all: Tout cocher button_uncheck_all: Tout décocher + button_collapse_all: Plier tout + button_expand_all: Déplier tout button_delete: Supprimer button_create: Créer button_create_and_continue: Créer et continuer @@ -870,7 +887,8 @@ text_load_default_configuration: Charger le paramétrage par défaut text_status_changed_by_changeset: "Appliqué par commit %{value}." text_time_logged_by_changeset: "Appliqué par commit %{value}" - text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer le(s) demandes(s) selectionnée(s) ?' + text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer la ou les demandes(s) selectionnée(s) ?' + text_issues_destroy_descendants_confirmation: "Cela entrainera également la suppression de %{count} sous-tâche(s)." text_select_project_modules: 'Sélectionner les modules à activer pour ce projet :' text_default_administrator_account_changed: Compte administrateur par défaut changé text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture @@ -945,7 +963,7 @@ text_zoom_in: Zoom avant notice_unable_delete_time_entry: Impossible de supprimer le temps passé. label_overall_spent_time: Temps passé global - field_time_entries: Log time + field_time_entries: Temps passé project_module_gantt: Gantt project_module_calendar: Calendrier button_edit_associated_wikipage: "Modifier la page wiki associée: %{page_title}" @@ -958,4 +976,19 @@ label_user_mail_option_none: Aucune notification field_member_of_group: Groupe de l'assigné field_assigned_to_role: Rôle de l'assigné - setting_emails_header: Emails header + setting_emails_header: En-tête des emails + label_bulk_edit_selected_time_entries: Modifier les temps passés sélectionnées + text_time_entries_destroy_confirmation: "Etes-vous sûr de vouloir supprimer les temps passés sélectionnés ?" + field_scm_path_encoding: Encodage des chemins + text_scm_path_encoding_note: "Défaut : UTF-8" + field_path_to_repository: Chemin du dépôt + field_root_directory: Répertoire racine + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: "Dépôt nu (bare) et local (exemples : /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "Dépôt local (exemples : /hgrepo, c:\hgrepo)" + text_scm_command: Commande + text_scm_command_version: Version + label_git_report_last_commit: Afficher le dernier commit des fichiers et répertoires + text_scm_config: Vous pouvez configurer les commandes des SCM dans config/configuration.yml. Redémarrer l'application après modification. + text_scm_command_not_available: Ce SCM n'est pas disponible. Vérifier les paramètres dans la section administration. diff -r adc8466df404 -r 753f1380d6bc config/locales/gl.yml --- a/config/locales/gl.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/gl.yml Mon Jun 06 14:41:04 2011 +0100 @@ -55,7 +55,10 @@ abbr_day_names: [Dom, Lun, Mar, Mer, Xov, Ven, Sab] month_names: [~, Xaneiro, Febreiro, Marzo, Abril, Maio, Xunio, Xullo, Agosto, Setembro, Outubro, Novembro, Decembro] abbr_month_names: [~, Xan, Feb, Maz, Abr, Mai, Xun, Xul, Ago, Set, Out, Nov, Dec] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -241,7 +244,7 @@ field_default_value: Estado por defecto field_delay: Retraso field_description: Descrición - field_done_ratio: % Realizado + field_done_ratio: "% Realizado" field_downloads: Descargas field_due_date: Data fin field_effective_date: Data @@ -310,7 +313,7 @@ general_csv_separator: ';' general_first_day_of_week: '1' general_lang_name: 'Galego' - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_text_No: 'Non' general_text_Yes: 'Si' general_text_no: 'non' @@ -655,7 +658,7 @@ notice_default_data_loaded: Configuración por defecto cargada correctamente. notice_email_error: "Ocorreu un error enviando o correo (%{value})" notice_email_sent: "Enviouse un correo a %{value}" - notice_failed_to_save_issues: "Imposible gravar %s petición(s) en %{count} seleccionado: %{ids}." + notice_failed_to_save_issues: "Imposible gravar %{count} petición(s) de %{total} seleccionada(s): %{ids}." notice_feeds_access_key_reseted: A súa clave de acceso para RSS reiniciouse. notice_file_not_found: A páxina á que tenta acceder non existe. notice_locking_conflict: Os datos modificáronse por outro usuario. @@ -730,7 +733,6 @@ setting_autologin: Conexión automática setting_bcc_recipients: Ocultar as copias de carbón (bcc) setting_commit_fix_keywords: Palabras clave para a corrección - setting_commit_logs_encoding: Codificación das mensaxes de commit setting_commit_ref_keywords: Palabras clave para a referencia setting_cross_project_issue_relations: Permitir relacionar peticións de distintos proxectos setting_date_format: Formato da data @@ -953,3 +955,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificación das mensaxes de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/he.yml --- a/config/locales/he.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/he.yml Mon Jun 06 14:41:04 2011 +0100 @@ -15,7 +15,10 @@ abbr_day_names: ["א'", "ב'", "ג'", "ד'", "ה'", "ו'", "ש'"] month_names: [~, ינואר, פברואר, מרץ, אפריל, מאי, יוני, יולי, אוגוסט, ספטמבר, אוקטובר, נובמבר, דצמבר] abbr_month_names: [~, יאנ, פבר, מרץ, אפר, מאי, יונ, יול, אוג, ספט, אוק, נוב, דצמ] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -139,7 +142,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-8 - general_pdf_encoding: ISO-8859-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: החשבון עודכן בהצלחה! @@ -163,7 +166,7 @@ notice_email_error: "ארעה שגיאה בעת שליחת הדואל (%{value})" notice_feeds_access_key_reseted: מפתח ה־RSS שלך אופס. notice_api_access_key_reseted: מפתח הגישה שלך ל־API אופס. - notice_failed_to_save_issues: "נכשרת בשמירת %{count} נושא\ים ב %{total} נבחרו: %{ids}." + notice_failed_to_save_issues: "נכשרת בשמירת %{count} נושאים ב %{total} נבחרו: %{ids}." notice_failed_to_save_members: "כשלון בשמירת חבר(ים): %{errors}." notice_no_issue_selected: "לא נבחר אף נושא! בחר בבקשה את הנושאים שברצונך לערוך." notice_account_pending: "החשבון שלך נוצר ועתה מחכה לאישור מנהל המערכת." @@ -271,7 +274,7 @@ field_attr_mail: תכונת דוא"ל field_onthefly: יצירת משתמשים זריזה field_start_date: תאריך התחלה - field_done_ratio: % גמור + field_done_ratio: "% גמור" field_auth_source: מקור הזדהות field_hide_mail: החבא את כתובת הדוא"ל שלי field_comments: הערות @@ -330,7 +333,6 @@ setting_cross_project_issue_relations: הרשה קישור נושאים בין פרויקטים setting_issue_list_default_columns: עמודות ברירת מחדל המוצגות ברשימת הנושאים setting_repositories_encodings: קידוד המאגרים - setting_commit_logs_encoding: קידוד הודעות הפקדה setting_emails_footer: תחתית דוא"ל setting_protocol: פרוטוקול setting_per_page_options: אפשרויות אוביקטים לפי דף @@ -847,7 +849,7 @@ text_regexp_info: כגון. ^[A-Z0-9]+$ text_min_max_length_info: 0 משמעו ללא הגבלות text_project_destroy_confirmation: האם אתה בטוח שברצונך למחוק את הפרויקט ואת כל המידע הקשור אליו? - text_subprojects_destroy_warning: "תת־הפרויקט\ים: %{value} ימחקו גם כן." + text_subprojects_destroy_warning: "תת־הפרויקטים: %{value} ימחקו גם כן." text_workflow_edit: בחר תפקיד וסיווג כדי לערוך את זרימת העבודה text_are_you_sure: האם אתה בטוח? text_are_you_sure_with_children: האם למחוק את הנושא ואת כל בניו? @@ -877,7 +879,7 @@ text_no_configuration_data: "לא הוגדרה תצורה עבור תפקידים, סיווגים, מצבי נושא וזרימת עבודה.\nמומלץ מאד לטעון את תצורת ברירת המחדל. תוכל לשנותה מאוחר יותר." text_load_default_configuration: טען את אפשרויות ברירת המחדל text_status_changed_by_changeset: "הוחל בסדרת השינויים %{value}." - text_issues_destroy_confirmation: 'האם אתה בטוח שברצונך למחוק את הנושא\ים?' + text_issues_destroy_confirmation: 'האם אתה בטוח שברצונך למחוק את הנושאים?' text_select_project_modules: 'בחר מודולים להחיל על פרויקט זה:' text_default_administrator_account_changed: מנהל המערכת ברירת המחדל שונה text_file_repository_writable: מאגר הקבצים ניתן לכתיבה @@ -946,3 +948,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: קידוד הודעות הפקדה + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/hr.yml --- a/config/locales/hr.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/hr.yml Mon Jun 06 14:41:04 2011 +0100 @@ -19,7 +19,10 @@ month_names: [~, Sijecanj, Veljaca, Ožujak, Travanj, Svibanj, Lipanj, Srpanj, Kolovoz, Rujan, Listopad, Studeni, Prosinac] abbr_month_names: [~, Sij, Velj, Ožu, Tra, Svi, Lip, Srp, Kol, Ruj, List, Stu, Pro] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -132,8 +135,8 @@ general_lang_name: 'Hrvatski' general_csv_separator: ',' general_csv_decimal_separator: '.' - general_csv_encoding: utf8 - general_pdf_encoding: utf8 + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: Vaš profil je uspješno promijenjen. @@ -258,7 +261,7 @@ field_attr_mail: Atribut e-pošte field_onthefly: "Izrada korisnika \"u hodu\"" field_start_date: Pocetak - field_done_ratio: % Učinjeno + field_done_ratio: "% Učinjeno" field_auth_source: Vrsta prijavljivanja field_hide_mail: Sakrij moju adresu e-pošte field_comments: Komentar @@ -313,7 +316,6 @@ setting_cross_project_issue_relations: Dozvoli povezivanje predmeta izmedu različitih projekata setting_issue_list_default_columns: Stupci prikazani na listi predmeta setting_repositories_encodings: Kodna stranica - setting_commit_logs_encoding: Commit messages encoding setting_emails_footer: Zaglavlje e-pošte setting_protocol: Protokol setting_per_page_options: Objekata po stranici opcija @@ -948,3 +950,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/hu.yml --- a/config/locales/hu.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/hu.yml Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ abbr_day_names: [v., h., k., sze., cs., p., szo.] month_names: [~, január, február, március, április, május, június, július, augusztus, szeptember, október, november, december] abbr_month_names: [~, jan., febr., márc., ápr., máj., jún., júl., aug., szept., okt., nov., dec.] - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -155,7 +158,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-2 - general_pdf_encoding: ISO-8859-2 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: A fiók adatai sikeresen frissítve. @@ -752,7 +755,6 @@ text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/configuration.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." field_parent_title: Szülő oldal label_issue_watchers: Megfigyelők - setting_commit_logs_encoding: Commit üzenetek kódlapja button_quote: Hozzászólás / Idézet setting_sequential_project_identifiers: Szekvenciális projekt azonosítók generálása notice_unable_delete_version: A verziót nem lehet törölni @@ -932,31 +934,65 @@ text_zoom_out: Kicsinyít text_zoom_in: Nagyít notice_unable_delete_time_entry: Az időrögzítés nem törölhető - label_overall_spent_time: Összes rászánt idő - field_time_entries: Log time + label_overall_spent_time: Összes ráfordított idő + field_time_entries: Idő rögzítés project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + project_module_calendar: Naptár + button_edit_associated_wikipage: "Hozzárendelt Wiki oldal szerkesztése: %{page_title}" + text_are_you_sure_with_children: A feladat törlése az összes alfeladattal együtt? + field_text: Szöveg mező + label_user_mail_option_only_owner: Csak arról, aminek én vagyok a tulajdonosa + setting_default_notification_option: Alapértelmezett értesítési beállítások + label_user_mail_option_only_my_events: Csak az általam megfigyelt dolgokról vagy amiben részt veszek + label_user_mail_option_only_assigned: Csak a hozzámrendelt dolgokról + label_user_mail_option_none: Semilyen eseményről + field_member_of_group: Hozzárendelt csoport + field_assigned_to_role: Hozzárendelt szerepkör + notice_not_authorized_archived_project: A projekt, amihez hozzá szeretnél férni archiválva lett. + label_principal_search: "Felhasználó vagy csoport keresése:" + label_user_search: "Felhasználó keresése:" + field_visible: Látható + setting_emails_header: Emailek fejléce + setting_commit_logtime_activity_id: A rögzített időhöz tartozó tevékenység + text_time_logged_by_changeset: Alkalmazva a %{value} changeset-ben. + setting_commit_logtime_enabled: Időrögzítés engedélyezése + notice_gantt_chart_truncated: A diagram le lett vágva, mert elérte a maximálisan megjeleníthető elemek számát (%{max}) + setting_gantt_items_limit: A gantt diagrammon megjeleníthető maximális elemek száma + field_warn_on_leaving_unsaved: Figyelmeztessen, nem mentett módosításokat tartalmazó oldal elhagyásakor + text_warn_on_leaving_unsaved: A jelenlegi oldal nem mentett módosításokat tartalmaz, ami elvész, ha elhagyja az oldalt. + label_my_queries: Egyéni lekérdezéseim + text_journal_changed_no_detail: "%{label} módosítva" + label_news_comment_added: Megjegyzés hozzáadva a hírhez + button_expand_all: Mindet kibont + button_collapse_all: Mindet összecsuk + label_additional_workflow_transitions_for_assignee: További átmenetek engedélyezettek, ha a felhasználó a hozzárendelt + label_additional_workflow_transitions_for_author: További átmenetek engedélyezettek, ha a felhasználó a szerző + label_bulk_edit_selected_time_entries: A kiválasztott idő bejegyzések csoportos szerkesztése + text_time_entries_destroy_confirmation: Biztos benne, hogy törölni szeretné a kiválasztott idő bejegyzés(eke)t? + label_role_anonymous: Anonymous + label_role_non_member: Nem tag + label_issue_note_added: Jegyzet hozzáadva + label_issue_status_updated: Állapot módosítva + label_issue_priority_updated: Prioritás módosítva + label_issues_visibility_own: A felhasználó által létrehozott vagy hozzárendelt feladatok + field_issues_visibility: Feladatok láthatósága + label_issues_visibility_all: Minden feladat + permission_set_own_issues_private: Saját feladatok beállítása nyilvánosra vagy privátra + field_is_private: Privát + permission_set_issues_private: Feladatok beállítása nyilvánosra vagy privátra + label_issues_visibility_public: Minden nem privát feladat + text_issues_destroy_descendants_confirmation: Ezzel törölni fog %{count} alfeladatot is. + field_commit_logs_encoding: Commit üzenetek kódlapja + field_scm_path_encoding: Elérési útvonal kódlapja + text_scm_path_encoding_note: "Alapértelmezett: UTF-8" + field_path_to_repository: A repository elérési útja + field_root_directory: Gyökér könyvtár + field_cvs_module: Modul + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Helyi repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Parancs + text_scm_command_version: Verzió + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/id.yml --- a/config/locales/id.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/id.yml Mon Jun 06 14:41:04 2011 +0100 @@ -14,7 +14,10 @@ month_names: [~, Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] abbr_month_names: [~, Jan, Feb, Mar, Apr, Mei, Jun, Jul, Agu, Sep, Okt, Nov, Des] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -135,7 +138,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' notice_account_updated: Akun sudah berhasil diperbarui. @@ -256,7 +259,7 @@ field_attr_mail: Atribut email field_onthefly: Pembuatan pengguna seketika field_start_date: Mulai - field_done_ratio: % Selesai + field_done_ratio: "% Selesai" field_auth_source: Mode otentikasi field_hide_mail: Sembunyikan email saya field_comments: Komentar @@ -312,7 +315,6 @@ setting_cross_project_issue_relations: Perbolehkan kaitan masalah proyek berbeda setting_issue_list_default_columns: Kolom default ditampilkan di daftar masalah setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding setting_emails_footer: Footer untuk email setting_protocol: Protokol setting_per_page_options: Pilihan obyek per halaman @@ -949,3 +951,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/it.yml --- a/config/locales/it.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/it.yml Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ abbr_day_names: [Dom, Lun, Mar, Mer, Gio, Ven, Sab] month_names: [~, Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] abbr_month_names: [~, Gen, Feb, Mar, Apr, Mag, Giu, Lug, Ago, Set, Ott, Nov, Dic] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -136,10 +139,10 @@ general_text_no: 'no' general_text_yes: 'sì' general_lang_name: 'Italiano' - general_csv_separator: ',' - general_csv_decimal_separator: '.' + general_csv_separator: ';' + general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: L'utente è stato aggiornato. @@ -234,7 +237,7 @@ field_attr_mail: Attributo email field_onthefly: Creazione utente "al volo" field_start_date: Inizio - field_done_ratio: % completato + field_done_ratio: "% completato" field_auth_source: Modalità di autenticazione field_hide_mail: Nascondi il mio indirizzo email field_comments: Commento @@ -734,7 +737,6 @@ text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/configuration.yml e riavvia l'applicazione per abilitarle." field_parent_title: Pagina principale label_issue_watchers: Osservatori - setting_commit_logs_encoding: Codifica dei messaggi di commit button_quote: Quota setting_sequential_project_identifiers: Genera progetti con identificativi in sequenza notice_unable_delete_version: Impossibile eliminare la versione @@ -942,3 +944,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codifica dei messaggi di commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/ja.yml --- a/config/locales/ja.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/ja.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,4 +1,4 @@ -# Japanese translations for Ruby on Rails +# Japanese translations for Ruby on Rails # by Akira Matsuda (ronnie@dio.jp) # AR error messages are basically taken from Ruby-GetText-Package. Thanks to Masao Mutoh. @@ -12,15 +12,18 @@ default: "%Y/%m/%d" short: "%m/%d" long: "%Y年%m月%d日(%a)" - + day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日] abbr_day_names: [日, 月, 火, 水, 木, 金, 土] - + # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -30,7 +33,7 @@ long: "%Y年%m月%d日(%a) %H時%M分%S秒 %Z" am: "午前" pm: "午後" - + datetime: distance_in_words: half_a_minute: "30秒前後" @@ -105,13 +108,12 @@ gb: "GB" tb: "TB" - # Used in array.to_sentence. support: array: sentence_connector: "及び" skip_last_comma: true - + activerecord: errors: template: @@ -147,7 +149,7 @@ cant_link_an_issue_with_a_descendant: "指定したチケットとは親子関係になっているため関連づけられません" actionview_instancetag_blank_option: 選んでください - + general_text_No: 'いいえ' general_text_Yes: 'はい' general_text_no: 'いいえ' @@ -158,7 +160,7 @@ general_csv_encoding: CP932 general_pdf_encoding: CP932 general_first_day_of_week: '7' - + notice_account_updated: アカウントが更新されました。 notice_account_invalid_creditentials: ユーザ名もしくはパスワードが無効 notice_account_password_updated: パスワードが更新されました。 @@ -189,7 +191,7 @@ notice_unable_delete_time_entry: 作業時間を削除できません notice_issue_done_ratios_updated: チケットの進捗が更新されました。 notice_gantt_chart_truncated: ガントチャートは、最大表示項目数(%{max})を超えたたため切り捨てられました。 - + error_can_t_load_default_data: "デフォルト設定がロードできませんでした: %{value}" error_scm_not_found: リポジトリに、エントリ/リビジョンが存在しません。 error_scm_command_failed: "リポジトリへアクセスしようとしてエラーになりました: %{value}" @@ -207,9 +209,9 @@ error_workflow_copy_source: 'コピー元となるトラッカーまたはロールを選択してください' error_workflow_copy_target: 'コピー先となるトラッカーとロールを選択してください' error_can_not_delete_tracker: 'このトラッカーは使用されています。削除できません。' - + warning_attachments_not_saved: "%{count}個の添付ファイルが保存できませんでした。" - + mail_subject_lost_password: "%{value} パスワード再発行" mail_body_lost_password: 'パスワードを変更するには、以下のリンクをクリックしてください:' mail_subject_register: "%{value} アカウント登録の確認" @@ -224,10 +226,10 @@ mail_body_wiki_content_added: "%{author} によってWikiページ %{id} が追加されました。" mail_subject_wiki_content_updated: "Wikiページ %{id} が更新されました" mail_body_wiki_content_updated: "%{author} によってWikiページ %{id} が更新されました。" - + gui_validation_error: 1件のエラー gui_validation_error_plural: "%{count}件のエラー" - + field_name: 名称 field_description: 説明 field_summary: サマリー @@ -325,7 +327,14 @@ field_assigned_to_role: 担当者のロール field_text: テキスト field_visible: 表示 - + field_warn_on_leaving_unsaved: データを保存せずにページから移動するときに警告 + field_commit_logs_encoding: コミットメッセージのエンコーディング + field_scm_path_encoding: パスのエンコーディング + field_path_to_repository: リポジトリのパス + field_root_directory: ルートディレクトリ + field_cvsroot: CVSROOT + field_cvs_module: モジュール + setting_app_title: アプリケーションのタイトル setting_app_subtitle: アプリケーションのサブタイトル setting_welcome_text: ウェルカムメッセージ @@ -353,7 +362,6 @@ setting_cross_project_issue_relations: 異なるプロジェクトのチケット間で関係の設定を許可 setting_issue_list_default_columns: チケットの一覧で表示する項目 setting_repositories_encodings: リポジトリのエンコーディング - setting_commit_logs_encoding: コミットメッセージのエンコーディング setting_emails_header: メールのヘッダ setting_emails_footer: メールのフッタ setting_protocol: プロトコル @@ -384,7 +392,7 @@ setting_commit_logtime_enabled: コミット時に作業時間を記録する setting_commit_logtime_activity_id: 作業時間の作業分類 setting_gantt_items_limit: ガントチャート最大表示項目数 - + permission_add_project: プロジェクトの追加 permission_add_subprojects: サブプロジェクトの追加 permission_edit_project: プロジェクトの編集 @@ -440,7 +448,7 @@ permission_delete_messages: メッセージの削除 permission_delete_own_messages: 自身が記入したメッセージの削除 permission_manage_subtasks: 子チケットの管理 - + project_module_issue_tracking: チケットトラッキング project_module_time_tracking: 時間トラッキング project_module_news: ニュース @@ -451,7 +459,7 @@ project_module_boards: フォーラム project_module_gantt: ガントチャート project_module_calendar: カレンダー - + label_user: ユーザ label_user_plural: ユーザ label_user_new: 新しいユーザ @@ -469,7 +477,7 @@ label_issue: チケット label_issue_new: 新しいチケット label_issue_plural: チケット - label_issue_view_all: 全てのチケットを見る + label_issue_view_all: すべてのチケットを見る label_issues_by: "%{value} 別のチケット" label_issue_added: チケットが追加されました label_issue_updated: チケットが更新されました @@ -520,7 +528,7 @@ label_last_login: 最近の接続 label_registered_on: 登録日 label_activity: 活動 - label_overall_activity: 全ての活動 + label_overall_activity: すべての活動 label_user_activity: "%{value} の活動" label_new: 新しく作成 label_logged_as: ログイン中: @@ -558,8 +566,9 @@ label_news_new: ニュースを追加 label_news_plural: ニュース label_news_latest: 最新ニュース - label_news_view_all: 全てのニュースを見る + label_news_view_all: すべてのニュースを見る label_news_added: ニュースが追加されました + label_news_comment_added: ニュースにコメントが追加されました label_settings: 設定 label_overview: 概要 label_version: バージョン @@ -590,7 +599,7 @@ label_permissions: 権限 label_current_status: 現在のステータス label_new_statuses_allowed: ステータスの移行先 - label_all: 全て + label_all: すべて label_none: なし label_nobody: 無記名 label_next: 次 @@ -604,7 +613,7 @@ label_gantt: ガントチャート label_internal: 内部 label_last_changes: "最新の変更 %{count}件" - label_change_view_all: 全ての変更を見る + label_change_view_all: すべての変更を見る label_personalize_page: このページをパーソナライズする label_comment: コメント label_comment_plural: コメント @@ -618,6 +627,7 @@ label_query: カスタムクエリ label_query_plural: カスタムクエリ label_query_new: 新しいクエリ + label_my_queries: マイカスタムクエリ label_filter_add: フィルタ追加 label_filter_plural: フィルタ label_equals: 等しい @@ -630,13 +640,13 @@ label_today: 今日 label_all_time: 全期間 label_yesterday: 昨日 - label_this_week: この週 + label_this_week: 今週 label_last_week: 先週 - label_last_n_days: "最後の%{count}日間" + label_last_n_days: "直近%{count}日間" label_this_month: 今月 label_last_month: 先月 label_this_year: 今年 - label_date_range: 日付の範囲 + label_date_range: 期間 label_less_than_ago: が今日より○日前以降 label_more_than_ago: が今日より○日前以前 label_ago: 日前 @@ -662,7 +672,7 @@ label_latest_revision: 最新リビジョン label_latest_revision_plural: 最新リビジョン label_view_revisions: リビジョンを見る - label_view_all_revisions: 全てのリビジョンを見る + label_view_all_revisions: すべてのリビジョンを見る label_max_size: 最大サイズ label_sort_highest: 一番上へ label_sort_higher: 上へ @@ -688,7 +698,7 @@ label_changes_details: 全変更の詳細 label_issue_tracking: チケットトラッキング label_spent_time: 作業時間の記録 - label_overall_spent_time: 全ての作業時間の記録 + label_overall_spent_time: すべての作業時間の記録 label_f_hour: "%{value}時間" label_f_hour_plural: "%{value}時間" label_time_tracking: 時間トラッキング @@ -759,8 +769,8 @@ label_theme: テーマ label_default: 既定 label_search_titles_only: タイトルのみ - label_user_mail_option_all: "参加しているプロジェクトの全ての通知" - label_user_mail_option_selected: "選択したプロジェクトの全ての通知..." + label_user_mail_option_all: "参加しているプロジェクトのすべての通知" + label_user_mail_option_selected: "選択したプロジェクトのすべての通知..." label_user_mail_option_none: "通知しない" label_user_mail_option_only_my_events: "ウォッチまたは関係している事柄のみ" label_user_mail_option_only_assigned: "自分が担当している事柄のみ" @@ -816,12 +826,15 @@ label_project_copy_notifications: コピーしたチケットのメール通知を送信する label_principal_search: "ユーザまたはグループの検索:" label_user_search: "ユーザの検索:" - + label_git_report_last_commit: ファイルとディレクトリの最新コミットを表示する + button_login: ログイン button_submit: 変更 button_save: 保存 - button_check_all: 全てにチェックをつける - button_uncheck_all: 全てのチェックを外す + button_check_all: すべてにチェックをつける + button_uncheck_all: すべてのチェックを外す + button_expand_all: 展開 + button_collapse_all: 折りたたみ button_delete: 削除 button_create: 作成 button_create_and_continue: 連続作成 @@ -871,16 +884,17 @@ version_status_closed: 終了 field_active: 有効 - + text_select_mail_notifications: どのメール通知を送信するか、アクションを選択してください。 text_regexp_info: 例) ^[A-Z0-9]+$ text_min_max_length_info: 0だと無制限になります - text_project_destroy_confirmation: 本当にこのプロジェクトと関連データを削除してもよろしいですか? + text_project_destroy_confirmation: 本当にこのプロジェクトと関連データを削除しますか? text_subprojects_destroy_warning: "サブプロジェクト %{value} も削除されます。" text_workflow_edit: ワークフローを編集するロールとトラッカーを選んでください text_are_you_sure: よろしいですか? - text_are_you_sure_with_children: チケットとその子チケット全てを削除しますか? + text_are_you_sure_with_children: チケットとその子チケットすべてを削除しますか? text_journal_changed: "%{label} を %{old} から %{new} に変更" + text_journal_changed_no_detail: "%{label} を更新" text_journal_set_to: "%{label} を %{value} にセット" text_journal_deleted: "%{label} を削除 (%{old})" text_journal_added: "%{label} %{value} を追加" @@ -898,7 +912,7 @@ text_issues_ref_in_commit_messages: コミットメッセージ内でチケットの参照/修正 text_issue_added: "チケット %{id} が %{author} によって報告されました。" text_issue_updated: "チケット %{id} が %{author} によって更新されました。" - text_wiki_destroy_confirmation: 本当にこのwikiとその内容の全てを削除しますか? + text_wiki_destroy_confirmation: 本当にこのwikiとその内容のすべてを削除しますか? text_issue_category_destroy_question: "%{count}件のチケットがこのカテゴリに割り当てられています。" text_issue_category_destroy_assignments: カテゴリの割り当てを削除する text_issue_category_reassign_to: チケットをこのカテゴリに再割り当てする @@ -928,10 +942,18 @@ text_wiki_page_nullify_children: "子ページをメインページ配下に移動する" text_wiki_page_destroy_children: "配下の子孫ページも削除する" text_wiki_page_reassign_children: "子ページを次の親ページの配下に移動する" - text_own_membership_delete_confirmation: "いくつかまたはすべての権限をあなた自身から剥奪しようとしているため、このプロジェクトを編集できなくなるかもしれません。\n本当に続けてもよろしいですか?" + text_own_membership_delete_confirmation: "一部またはすべての権限を自分自身から剥奪しようとしているため、このプロジェクトを編集できなくなる可能性があります。\n本当に続けますか?" text_zoom_in: 拡大 text_zoom_out: 縮小 - + text_warn_on_leaving_unsaved: このページから移動すると、保存されていないデータが失われます。 + text_scm_path_encoding_note: "デフォルト: UTF-8" + text_git_repository_note: "Bare、かつ、ローカルリポジトリ (例: /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "ローカルリポジトリ (例: /hgrepo, c:\hgrepo)" + text_scm_command: コマンド + text_scm_command_version: バージョン + text_scm_config: バージョン管理システムのコマンドをconfig/configuration.ymlで設定できます。設定後、Redmineを再起動してください。 + text_scm_command_not_available: バージョン管理システムのコマンドが利用できません。管理画面にて設定を確認してください。 + default_role_manager: 管理者 default_role_developer: 開発者 default_role_reporter: 報告者 @@ -958,7 +980,22 @@ enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作業分類 (時間トラッキング) enumeration_system_activity: システム作業分類 - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + label_additional_workflow_transitions_for_assignee: チケット担当者に追加で許可する遷移 + label_additional_workflow_transitions_for_author: チケット作成者に追加で許可する遷移 + label_bulk_edit_selected_time_entries: 作業時間の一括編集 + text_time_entries_destroy_confirmation: 本当に選択した作業時間を削除しますか? + + label_role_anonymous: Anonymous + label_role_non_member: Non member + + label_issue_note_added: 注記が追加されました + label_issue_status_updated: ステータスが更新されました + label_issue_priority_updated: 優先度が更新されました + label_issues_visibility_own: 作成者か担当者であるチケット + field_issues_visibility: 表示できるチケット + label_issues_visibility_all: すべてのチケット + permission_set_own_issues_private: 自分のチケットをプライベートに設定 + field_is_private: プライベート + permission_set_issues_private: チケットをプライベートに設定 + label_issues_visibility_public: プライベートチケット以外 + text_issues_destroy_descendants_confirmation: %{count}個の子チケットも削除されます。 diff -r adc8466df404 -r 753f1380d6bc config/locales/ko.yml --- a/config/locales/ko.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/ko.yml Mon Jun 06 14:41:04 2011 +0100 @@ -21,7 +21,10 @@ month_names: [~, 1월, 2월, 3월, 4월, 5월, 6월, 7월, 8월, 9월, 10월, 11월, 12월] abbr_month_names: [~, 1월, 2월, 3월, 4월, 5월, 6월, 7월, 8월, 9월, 10월, 11월, 12월] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -355,7 +358,6 @@ setting_cross_project_issue_relations: 다른 프로젝트의 일감과 연결하는 것을 허용 setting_issue_list_default_columns: 일감 목록에 표시할 항목 setting_repositories_encodings: 저장소 인코딩 - setting_commit_logs_encoding: 제출(commit) 기록 인코딩 setting_emails_footer: 메일 꼬리 setting_protocol: 프로토콜 setting_per_page_options: 목록에서, 한 페이지에 표시할 행 @@ -993,3 +995,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: 제출(commit) 기록 인코딩 + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/lt.yml --- a/config/locales/lt.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/lt.yml Mon Jun 06 14:41:04 2011 +0100 @@ -22,7 +22,10 @@ month_names: [~, sausio, vasario, kovo, balandžio, gegužės, birželio, liepos, rugpjūčio, rugsėjo, spalio, lapkričio, gruodžio] abbr_month_names: [~, Sau, Vas, Kov, Bal, Geg, Bir, Lie, Rgp, Rgs, Spa, Lap, Grd] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -311,7 +314,7 @@ field_attr_mail: Elektroninio pašto požymis field_onthefly: Automatinis vartotojų registravimas field_start_date: Pradėti - field_done_ratio: % atlikta + field_done_ratio: "% atlikta" field_auth_source: Autentiškumo nustatymo būdas field_hide_mail: Paslėpkite mano elektroninio pašto adresą field_comments: Komentaras @@ -368,7 +371,6 @@ setting_cross_project_issue_relations: Leisti tarprojektinius darbų ryšius setting_issue_list_default_columns: Numatytosios skiltys darbų sąraše setting_repositories_encodings: Saugyklos koduotė - setting_commit_logs_encoding: Commit pranešimų koduotė setting_emails_footer: elektroninio pašto puslapinė poraštė setting_protocol: Protokolas setting_per_page_options: Įrašų puslapyje nustatimas @@ -1001,3 +1003,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit pranešimų koduotė + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/lv.yml --- a/config/locales/lv.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/lv.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,938 +1,974 @@ -# translated by Dzintars Bergs (dzintars.bergs@gmail.com) - -lv: - direction: ltr - date: - formats: - default: "%d.%m.%Y" - short: "%d %b" - long: "%d %B %Y" - - day_names: [Svētdiena, Pirmdiena, Otrdiena, Trešdiena, Ceturtdiena, Piektdiena, Sestdiena] - abbr_day_names: [Sv, Pr, Ot, Tr, Ct, Pk, St] - - month_names: [~, Janvāris, Februāris, Marts, Aprīlis , Maijs, Jūnijs, Jūlijs, Augusts, Septembris, Oktobris, Novembris, Decembris] - abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, Jūn, Jūl, Aug, Sep, Okt, Nov, Dec] - order: [ :day, :month, :year ] - - time: - formats: - default: "%a, %d %b %Y, %H:%M:%S %z" - time: "%H:%M" - short: "%d %b, %H:%M" - long: "%B %d, %Y %H:%M" - am: "rītā" - pm: "vakarā" - - datetime: - distance_in_words: - half_a_minute: "pus minūte" - less_than_x_seconds: - one: "mazāk kā 1 sekunde" - other: "mazāk kā %{count} sekundes" - x_seconds: - one: "1 sekunde" - other: "%{count} sekundes" - less_than_x_minutes: - one: "mazāk kā minūte" - other: "mazāk kā %{count} minūtes" - x_minutes: - one: "1 minūte" - other: "%{count} minūtes" - about_x_hours: - one: "aptuveni 1 stunda" - other: "aptuveni %{count} stundas" - x_days: - one: "1 diena" - other: "%{count} dienas" - about_x_months: - one: "aptuveni 1 mēnesis" - other: "aptuveni %{count} mēneši" - x_months: - one: "1 mēnesis" - other: "%{count} mēneši" - about_x_years: - one: "aptuveni 1 gads" - other: "aptuveni %{count} gadi" - over_x_years: - one: "ilgāk par 1 gadu" - other: "ilgāk par %{count} gadiem" - almost_x_years: - one: "gandrīz 1 gadu" - other: "gandrīz %{count} gadus" - - number: - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: " " - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Baits" - other: "Baiti" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - - support: - array: - sentence_connector: "un" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "nav iekļauts sarakstā" - exclusion: "ir rezervēts" - invalid: "nederīgs" - confirmation: "apstiprinājums nesakrīt" - accepted: "jābūt akceptētam" - empty: "nevar būt tukšs" - blank: "nevar būt neaizpildīts" - too_long: "ir pārāk gara(š) (maksimālais garums ir %{count} simboli)" - too_short: "ir pārāk īsa(s) (minimālais garums ir %{count} simboli)" - wrong_length: "ir nepareiza garuma (vajadzētu būt %{count} simboli)" - taken: "eksistē" - not_a_number: "nav skaitlis" - not_a_date: "nav derīgs datums" - greater_than: "jābūt lielākam par %{count}" - greater_than_or_equal_to: "jābūt lielākam vai vienādam ar %{count}" - equal_to: "jābūt vienādam ar %{count}" - less_than: "jābūt mazākam kā %{count}" - less_than_or_equal_to: "jābūt mazākam vai vienādam ar %{count}" - odd: "jāatšķirās" - even: "jāsakrīt" - greater_than_start_date: "jābūt vēlākam par sākuma datumu" - not_same_project: "nepieder pie tā paša projekta" - circular_dependency: "Šī relācija radītu ciklisku atkarību" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" - - actionview_instancetag_blank_option: Izvēlieties - - general_text_No: 'Nē' - general_text_Yes: 'Jā' - general_text_no: 'nē' - general_text_yes: 'jā' - general_lang_name: 'Latvian (Latviešu)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Konts tika atjaunots veiksmīgi. - notice_account_invalid_creditentials: Nepareizs lietotāja vārds vai parole. - notice_account_password_updated: Parole tika veiksmīgi atjaunota. - notice_account_wrong_password: Nepareiza parole - notice_account_register_done: Konts veiksmīgi izveidots. Lai aktivizētu kontu, spiediet uz saites, kas Jums tika nosūtīta. - notice_account_unknown_email: Nezināms lietotājs - notice_can_t_change_password: Šis konts izmanto ārēju pilnvarošanas avotu. Nav iespējams nomainīt paroli. - notice_account_lost_email_sent: Jums tika nosūtīts e-pasts ar instrukcijām, kā izveidot jaunu paroli. - notice_account_activated: Jūsu konts ir aktivizēts. Varat pieslēgties sistēmai. - notice_successful_create: Veiksmīga izveide. - notice_successful_update: Veiksmīga atjaunošana. - notice_successful_delete: Veiksmīga dzēšana. - notice_successful_connection: Veiksmīgs savienojums. - notice_file_not_found: Lapa, ko Jūs mēģināt atvērt, neeksistē vai ir pārvietota. - notice_locking_conflict: Datus ir atjaunojis cits lietotājs. - notice_not_authorized: Jums nav tiesību piekļūt šai lapai. - notice_email_sent: "E-pasts tika nosūtīts uz %{value}" - notice_email_error: "Kļūda sūtot e-pastu (%{value})" - notice_feeds_access_key_reseted: Jūsu RSS pieejas atslēga tika iestatīta sākuma stāvoklī. - notice_api_access_key_reseted: Jūsu API pieejas atslēga tika iestatīta sākuma stāvoklī. - notice_failed_to_save_issues: "Neizdevās saglabāt %{count} uzdevumu(us) no %{total} izvēlēti: %{ids}." - notice_no_issue_selected: "Nav izvēlēts uzdevums! Lūdzu, atzīmējiet uzdevumus, kurus vēlaties rediģēt!" - notice_account_pending: "Jūsu konts tika izveidots un šobrīd gaida administratora apstiprinājumu." - notice_default_data_loaded: Noklusētā konfigurācija tika veiksmīgi ielādēta. - notice_unable_delete_version: Neizdevās dzēst versiju. - notice_issue_done_ratios_updated: Uzdevuma izpildes koeficients atjaunots. - - error_can_t_load_default_data: "Nevar ielādēt noklusētos konfigurācijas datus: %{value}" - error_scm_not_found: "Ieraksts vai versija nebija repozitorijā." - error_scm_command_failed: "Mēģinot piekļūt repozitorijam, notika kļūda: %{value}" - error_scm_annotate: "Ieraksts neeksistē vai tam nevar tikt pievienots paskaidrojums." - error_issue_not_found_in_project: 'Uzdevums netika atrasts vai nepieder šim projektam.' - error_no_tracker_in_project: 'Neviens trakeris nav saistīts ar šo projektu. Pārbaudiet projekta iestatījumus.' - error_no_default_issue_status: 'Nav definēts uzdevuma noklusētais statuss. Pārbaudiet konfigurāciju (Ejat uz: "Administrācija -> Uzdevumu statusi")!' - error_can_not_reopen_issue_on_closed_version: 'Nevar pievienot atsauksmi uzdevumam, kas saistīts ar slēgtu versiju.' - error_can_not_archive_project: Šis projekts nevar tikt arhivēts - error_issue_done_ratios_not_updated: "Uzdevuma izpildes koeficients nav atjaunots." - error_workflow_copy_source: 'Lūdzu izvēlieties avota trakeri vai lomu' - error_workflow_copy_target: 'Lūdzu izvēlēties mērķa trakeri(us) un lomu(as)' - - warning_attachments_not_saved: "%{count} datnes netika saglabātas." - - mail_subject_lost_password: "Jūsu %{value} parole" - mail_body_lost_password: 'Lai mainītu paroli, spiediet uz šīs saites:' - mail_subject_register: "Jūsu %{value} konta aktivizācija" - mail_body_register: 'Lai izveidotu kontu, spiediet uz šīs saites:' - mail_body_account_information_external: "Varat izmantot Jūsu %{value} kontu, lai pieslēgtos." - mail_body_account_information: Jūsu konta informācija - mail_subject_account_activation_request: "%{value} konta aktivizācijas pieprasījums" - mail_body_account_activation_request: "Jauns lietotājs (%{value}) ir reģistrēts. Lietotāja konts gaida Jūsu apstiprinājumu:" - mail_subject_reminder: "%{count} uzdevums(i) sagaidāms(i) tuvākajās %{days} dienās" - mail_body_reminder: "%{count} uzdevums(i), kurš(i) ir nozīmēts(i) Jums, sagaidāms(i) tuvākajās %{days} dienās:" - mail_subject_wiki_content_added: "'%{id}' Wiki lapa pievienota" - mail_body_wiki_content_added: "The '%{id}' Wiki lapu pievienojis %{author}." - mail_subject_wiki_content_updated: "'%{id}' Wiki lapa atjaunota" - mail_body_wiki_content_updated: "The '%{id}' Wiki lapu atjaunojis %{author}." - - gui_validation_error: 1 kļūda - gui_validation_error_plural: "%{count} kļūdas" - - field_name: Nosaukums - field_description: Apraksts - field_summary: Kopsavilkums - field_is_required: Nepieciešams - field_firstname: Vārds - field_lastname: Uzvārds - field_mail: "E-pasts" - field_filename: Datne - field_filesize: Izmērs - field_downloads: Lejupielādes - field_author: Autors - field_created_on: Izveidots - field_updated_on: Atjaunots - field_field_format: Formāts - field_is_for_all: Visiem projektiem - field_possible_values: Iespējamās vērtības - field_regexp: Regulārā izteiksme - field_min_length: Minimālais garums - field_max_length: Maksimālais garums - field_value: Vērtība - field_category: Kategorija - field_title: Nosaukums - field_project: Projekts - field_issue: Uzdevums - field_status: Statuss - field_notes: Piezīmes - field_is_closed: Uzdevums slēgts - field_is_default: Noklusētā vērtība - field_tracker: Trakeris - field_subject: Temats - field_due_date: Sagaidāmais datums - field_assigned_to: Piešķirts - field_priority: Prioritāte - field_fixed_version: Mērķa versija - field_user: Lietotājs - field_role: Loma - field_homepage: Vietne - field_is_public: Publisks - field_parent: Apakšprojekts projektam - field_is_in_roadmap: Ceļvedī parādītie uzdevumi - field_login: Pieslēgties - field_mail_notification: "E-pasta paziņojumi" - field_admin: Administrators - field_last_login_on: Pēdējo reizi pieslēdzies - field_language: Valoda - field_effective_date: Datums - field_password: Parole - field_new_password: Janā parole - field_password_confirmation: Paroles apstiprinājums - field_version: Versija - field_type: Tips - field_host: Hosts - field_port: Ports - field_account: Konts - field_base_dn: Base DN - field_attr_login: Pieslēgšanās atribūts - field_attr_firstname: Vārda atribūts - field_attr_lastname: Uzvārda atribūts - field_attr_mail: "E-pasta atribūts" - field_onthefly: "Lietotāja izveidošana on-the-fly" - field_start_date: Sākuma datums - field_done_ratio: % padarīti - field_auth_source: Pilnvarošanas režīms - field_hide_mail: "Paslēpt manu e-pasta adresi" - field_comments: Komentārs - field_url: URL - field_start_page: Sākuma lapa - field_subproject: Apakšprojekts - field_hours: Stundas - field_activity: Aktivitāte - field_spent_on: Datums - field_identifier: Identifikators - field_is_filter: Izmantots kā filtrs - field_issue_to: Saistīts uzdevums - field_delay: Kavējums - field_assignable: Uzdevums var tikt piesaistīts šai lomai - field_redirect_existing_links: Pāradresēt eksistējošās saites - field_estimated_hours: Paredzētais laiks - field_column_names: Kolonnas - field_time_zone: Laika zona - field_searchable: Meklējams - field_default_value: Noklusētā vērtība - field_comments_sorting: Rādīt komentārus - field_parent_title: Vecāka lapa - field_editable: Rediģējams - field_watcher: Vērotājs - field_identity_url: OpenID URL - field_content: Saturs - field_group_by: Grupēt rezultātus pēc - field_sharing: Koplietošana - - setting_app_title: Programmas nosaukums - setting_app_subtitle: Programmas apakš-nosaukums - setting_welcome_text: Sveiciena teksts - setting_default_language: Noklusētā valoda - setting_login_required: Nepieciešama pilnvarošana - setting_self_registration: Pašreģistrēšanās - setting_attachment_max_size: Pielikuma maksimālais izmērs - setting_issues_export_limit: Uzdevumu eksporta ierobežojums - setting_mail_from: "E-pasta adrese informācijas nosūtīšanai" - setting_bcc_recipients: "Saņēmēju adreses neparādīsies citu saņēmēju vēstulēs (bcc)" - setting_plain_text_mail: "Vēstule brīvā tekstā (bez HTML)" - setting_host_name: Hosta nosaukums un piekļuves ceļš - setting_text_formatting: Teksta formatēšana - setting_wiki_compression: Wiki vēstures saspiešana - setting_feeds_limit: Barotnes satura ierobežojums - setting_default_projects_public: Jaunie projekti noklusēti ir publiski pieejami - setting_autofetch_changesets: "Automātiski lietot jaunāko versiju, pieslēdzoties repozitorijam (Autofetch)" - setting_sys_api_enabled: Ieslēgt WS repozitoriju menedžmentam - setting_commit_ref_keywords: Norādes atslēgvārdi - setting_commit_fix_keywords: Fiksējošie atslēgvārdi - setting_autologin: Automātiskā pieslēgšanās - setting_date_format: Datuma formāts - setting_time_format: Laika formāts - setting_cross_project_issue_relations: "Atļaut starp-projektu uzdevumu relācijas" - setting_issue_list_default_columns: Noklusēti rādītās kolonnas uzdevumu sarakstā - setting_repositories_encodings: Repozitoriju kodējumi - setting_commit_logs_encoding: Kodēt ziņojumus - setting_emails_footer: "E-pastu kājene" - setting_protocol: Protokols - setting_per_page_options: Objekti vienā lapā - setting_user_format: Lietotāju rādīšanas formāts - setting_activity_days_default: Dienus skaits aktivitāšu rādīšanai aktivitāšu sadaļā - setting_display_subprojects_issues: Rādīt apakšprojekta uzdevumus galvenajā projektā pēc noklusējuma - setting_enabled_scm: Lietot SCM - setting_mail_handler_body_delimiters: "Saīsināt pēc vienas no šim rindām" - setting_mail_handler_api_enabled: "Lietot WS ienākošajiem e-pastiem" - setting_mail_handler_api_key: API atslēga - setting_sequential_project_identifiers: Ģenerēt secīgus projektu identifikatorus - setting_gravatar_enabled: Izmantot Gravatar lietotāju ikonas - setting_gravatar_default: Noklusētais Gravatar attēls - setting_diff_max_lines_displayed: Maksimālais rādīto diff rindu skaits - setting_file_max_size_displayed: Maksimālais izmērs iekļautajiem teksta failiem - setting_repository_log_display_limit: Maksimālais žurnāla datnē rādīto revīziju skaits - setting_openid: Atļaut OpenID pieslēgšanos un reģistrēšanos - setting_password_min_length: Minimālais paroles garums - setting_new_project_user_role_id: Loma, kura tiek piešķirta ne-administratora lietotājam, kurš izveido projektu - setting_default_projects_modules: Noklusētie lietotie moduļi jaunam projektam - setting_issue_done_ratio: Aprēķināt uzdevuma izpildes koeficientu ar - setting_issue_done_ratio_issue_field: uzdevuma lauku - setting_issue_done_ratio_issue_status: uzdevuma statusu - setting_start_of_week: Sākt kalendāru ar - setting_rest_api_enabled: Lietot REST web-servisu - setting_cache_formatted_text: Kešot formatētu tekstu - - permission_add_project: Izveidot projektu - permission_add_subprojects: Izveidot apakšprojektu - permission_edit_project: Rediģēt projektu - permission_select_project_modules: Izvēlēties projekta moduļus - permission_manage_members: Pārvaldīt dalībniekus - permission_manage_project_activities: Pārvaldīt projekta aktivitātes - permission_manage_versions: Pārvaldīt versijas - permission_manage_categories: Pārvaldīt uzdevumu kategorijas - permission_view_issues: Apskatīt uzdevumus - permission_add_issues: Pievienot uzdevumus - permission_edit_issues: Rediģēt uzdevumus - permission_manage_issue_relations: Pārvaldīt uzdevumu relācijas - permission_add_issue_notes: Pievienot piezīmes - permission_edit_issue_notes: Rediģēt piezīmes - permission_edit_own_issue_notes: Rediģēt paša piezīmes - permission_move_issues: Pārvietot uzdevumus - permission_delete_issues: Dzēst uzdevumus - permission_manage_public_queries: Pārvaldīt publiskos pieprasījumus - permission_save_queries: Saglabāt pieprasījumus - permission_view_gantt: Skatīt Ganta diagrammu - permission_view_calendar: Skatīt kalendāru - permission_view_issue_watchers: Skatīt vērotāju sarakstu - permission_add_issue_watchers: Pievienot vērotājus - permission_delete_issue_watchers: Dzēst vērotājus - permission_log_time: Piereģistrēt pavadīto laiku - permission_view_time_entries: Skatīt pavadīto laiku - permission_edit_time_entries: Rdiģēt laika reģistrus - permission_edit_own_time_entries: Rediģēt savus laika reģistrus - permission_manage_news: Pārvaldīt jaunumus - permission_comment_news: Komentēt jaunumus - permission_manage_documents: Pārvaldīt dokumentus - permission_view_documents: Skatīt dokumentus - permission_manage_files: Pārvaldīt failus - permission_view_files: Skatīt failus - permission_manage_wiki: Pārvaldīt wiki - permission_rename_wiki_pages: Pārsaukt wiki lapas - permission_delete_wiki_pages: Dzēst wiki lapas - permission_view_wiki_pages: Skatīt wiki - permission_view_wiki_edits: Skatīt wiki vēsturi - permission_edit_wiki_pages: Rdiģēt wiki lapas - permission_delete_wiki_pages_attachments: Dzēst pielikumus - permission_protect_wiki_pages: Projekta wiki lapas - permission_manage_repository: Pārvaldīt repozitoriju - permission_browse_repository: Pārlūkot repozitoriju - permission_view_changesets: Skatīt izmaiņu kopumus - permission_commit_access: Atļaut piekļuvi - permission_manage_boards: Pārvaldīt ziņojumu dēļus - permission_view_messages: Skatīt ziņas - permission_add_messages: Publicēt ziņas - permission_edit_messages: Rediģēt ziņas - permission_edit_own_messages: Rediģēt savas ziņas - permission_delete_messages: Dzēst ziņas - permission_delete_own_messages: Dzēst savas ziņas - permission_export_wiki_pages: Eksportēt Wiki lapas - - project_module_issue_tracking: Uzdevumu uzskaite - project_module_time_tracking: Laika uzskaite - project_module_news: Jaunumi - project_module_documents: Dokumenti - project_module_files: Datnes - project_module_wiki: Wiki - project_module_repository: Repozitorijs - project_module_boards: Ziņojumu dēļi - - label_user: Lietotājs - label_user_plural: Lietotāji - label_user_new: Jauns lietotājs - label_user_anonymous: Anonīms - label_project: Projekts - label_project_new: Jauns projekts - label_project_plural: Projekti - label_x_projects: - zero: nav projektu - one: 1 projekts - other: "%{count} projekti" - label_project_all: Visi projekti - label_project_latest: Jaunākie projekti - label_issue: Uzdevums - label_issue_new: Jauns uzdevums - label_issue_plural: Uzdevumi - label_issue_view_all: Skatīt visus uzdevumus - label_issues_by: "Kārtot pēc %{value}" - label_issue_added: Uzdevums pievienots - label_issue_updated: Uzdevums atjaunots - label_document: Dokuments - label_document_new: Jauns dokuments - label_document_plural: Dokumenti - label_document_added: Dokuments pievienots - label_role: Loma - label_role_plural: Lomas - label_role_new: Jauna loma - label_role_and_permissions: Lomas un atļaujas - label_member: Dalībnieks - label_member_new: Jauns dalībnieks - label_member_plural: Dalībnieki - label_tracker: Trakeris - label_tracker_plural: Trakeri - label_tracker_new: Jauns trakeris - label_workflow: Darba gaita - label_issue_status: Uzdevuma statuss - label_issue_status_plural: Uzdevumu statusi - label_issue_status_new: Jauns statuss - label_issue_category: Uzdevuma kategorija - label_issue_category_plural: Uzdevumu kategorijas - label_issue_category_new: Jauna kategorija - label_custom_field: Pielāgojams lauks - label_custom_field_plural: Pielāgojami lauki - label_custom_field_new: Jauns pielāgojams lauks - label_enumerations: Uzskaitījumi - label_enumeration_new: Jauna vērtība - label_information: Informācija - label_information_plural: Informācija - label_please_login: Lūdzu pieslēdzieties - label_register: Reģistrēties - label_login_with_open_id_option: vai pieslēgties ar OpenID - label_password_lost: Nozaudēta parole - label_home: Sākums - label_home_heading: Sākums - label_my_page: Mana lapa - label_my_account: Mans konts - label_my_projects: Mani projekti - label_administration: Administrācija - label_login: Pieslēgties - label_logout: Atslēgties - label_help: Palīdzība - label_reported_issues: Ziņotie uzdevumi - label_assigned_to_me_issues: Man piesaistītie uzdevumi - label_last_login: Pēdējā pieslēgšanās - label_registered_on: Reģistrējies - label_activity: Aktivitāte - label_overall_activity: Kopējās aktivitātes - label_user_activity: "Lietotāja %{value} aktivitātes" - label_new: Jauns - label_logged_as: Pieslēdzies kā - label_environment: Vide - label_authentication: Pilnvarošana - label_auth_source: Pilnvarošanas režīms - label_auth_source_new: Jauns pilnvarošanas režīms - label_auth_source_plural: Pilnvarošanas režīmi - label_subproject_plural: Apakšprojekti - label_subproject_new: Jauns apakšprojekts - label_and_its_subprojects: "%{value} un tā apakšprojekti" - label_min_max_length: Minimālais - Maksimālais garums - label_list: Saraksts - label_date: Datums - label_integer: Vesels skaitlis - label_float: Decimālskaitlis - label_boolean: Patiesuma vērtība - label_string: Teksts - label_text: Garš teksts - label_attribute: Atribūts - label_attribute_plural: Atribūti - label_download: "%{count} Lejupielāde" - label_download_plural: "%{count} Lejupielādes" - label_no_data: Nav datu, ko parādīt - label_change_status: Mainīt statusu - label_history: Vēsture - label_attachment: Pielikums - label_attachment_new: Jauns pielikums - label_attachment_delete: Dzēst pielikumu - label_attachment_plural: Pielikumi - label_file_added: Lauks pievienots - label_report: Atskaite - label_report_plural: Atskaites - label_news: Ziņa - label_news_new: Pievienot ziņu - label_news_plural: Ziņas - label_news_latest: Jaunākās ziņas - label_news_view_all: Skatīt visas ziņas - label_news_added: Ziņas pievienotas - label_settings: Iestatījumi - label_overview: Pārskats - label_version: Versija - label_version_new: Jauna versija - label_version_plural: Versijas - label_close_versions: Aizvērt pabeigtās versijas - label_confirmation: Apstiprinājums - label_export_to: 'Pieejams arī:' - label_read: Lasīt... - label_public_projects: Publiskie projekti - label_open_issues: atvērts - label_open_issues_plural: atvērti - label_closed_issues: slēgts - label_closed_issues_plural: slēgti - label_x_open_issues_abbr_on_total: - zero: 0 atvērti / %{total} - one: 1 atvērts / %{total} - other: "%{count} atvērti / %{total}" - label_x_open_issues_abbr: - zero: 0 atvērti - one: 1 atvērts - other: "%{count} atvērti" - label_x_closed_issues_abbr: - zero: 0 slēgti - one: 1 slēgts - other: "%{count} slēgti" - label_total: Kopā - label_permissions: Atļaujas - label_current_status: Pašreizējais statuss - label_new_statuses_allowed: Jauni statusi atļauti - label_all: visi - label_none: neviens - label_nobody: nekas - label_next: Nākošais - label_previous: Iepriekšējais - label_used_by: Izmanto - label_details: Detaļas - label_add_note: Pievienot piezīmi - label_per_page: katrā lapā - label_calendar: Kalendārs - label_months_from: mēneši no - label_gantt: Ganta diagramma - label_internal: Iekšējais - label_last_changes: "pēdējās %{count} izmaiņas" - label_change_view_all: Skatīt visas izmaiņas - label_personalize_page: Pielāgot šo lapu - label_comment: Komentārs - label_comment_plural: Komentāri - label_x_comments: - zero: nav komentāru - one: 1 komentārs - other: "%{count} komentāri" - label_comment_add: Pievienot komentāru - label_comment_added: Komentārs pievienots - label_comment_delete: Dzēst komentārus - label_query: Pielāgots pieprasījums - label_query_plural: Pielāgoti pieprasījumi - label_query_new: Jauns pieprasījums - label_filter_add: Pievienot filtru - label_filter_plural: Filtri - label_equals: ir - label_not_equals: nav - label_in_less_than: ir mazāk kā - label_in_more_than: ir vairāk kā - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: iekš - label_today: šodien - label_all_time: visu laiku - label_yesterday: vakar - label_this_week: šonedēļ - label_last_week: pagājušo šonedēļ - label_last_n_days: "pēdējās %{count} dienas" - label_this_month: šomēnes - label_last_month: pagājušo mēnes - label_this_year: šogad - label_date_range: Datumu apgabals - label_less_than_ago: mazāk kā dienas iepriekš - label_more_than_ago: vairāk kā dienas iepriekš - label_ago: dienas iepriekš - label_contains: satur - label_not_contains: nesatur - label_day_plural: dienas - label_repository: Repozitorijs - label_repository_plural: Repozitoriji - label_browse: Pārlūkot - label_modification: "%{count} izmaiņa" - label_modification_plural: "%{count} izmaiņas" - label_branch: Zars - label_tag: Birka - label_revision: Revīzija - label_revision_plural: Revīzijas - label_revision_id: "Revīzija %{value}" - label_associated_revisions: Saistītās revīzijas - label_added: pievienots - label_modified: modificēts - label_copied: nokopēts - label_renamed: pārsaukts - label_deleted: dzēsts - label_latest_revision: Pēdējā revīzija - label_latest_revision_plural: Pēdējās revīzijas - label_view_revisions: Skatīt revīzijas - label_view_all_revisions: Skatīt visas revīzijas - label_max_size: Maksimālais izmērs - label_sort_highest: Pārvietot uz augšu - label_sort_higher: Pārvietot soli augšup - label_sort_lower: Pārvietot uz leju - label_sort_lowest: Pārvietot vienu soli uz leju - label_roadmap: Ceļvedis - label_roadmap_due_in: "Sagaidāms pēc %{value}" - label_roadmap_overdue: "nokavēts %{value}" - label_roadmap_no_issues: Šai versijai nav uzdevumu - label_search: Meklēt - label_result_plural: Rezultāti - label_all_words: Visi vārdi - label_wiki: Wiki - label_wiki_edit: Wiki labojums - label_wiki_edit_plural: Wiki labojumi - label_wiki_page: Wiki lapa - label_wiki_page_plural: Wiki lapas - label_index_by_title: Indeksēt pēc nosaukuma - label_index_by_date: Indeksēt pēc datuma - label_current_version: Tekošā versija - label_preview: Priekšskatījums - label_feed_plural: Barotnes - label_changes_details: Visu izmaiņu detaļas - label_issue_tracking: Uzdevumu uzskaite - label_spent_time: Pavadītais laiks - label_f_hour: "%{value} stunda" - label_f_hour_plural: "%{value} stundas" - label_time_tracking: Laika uzskaite - label_change_plural: Izmaiņas - label_statistics: Statistika - label_commits_per_month: Nodevumi mēnesī - label_commits_per_author: Nodevumi no autora - label_view_diff: Skatīt atšķirības - label_diff_inline: iekļauts - label_diff_side_by_side: blakus - label_options: Opcijas - label_copy_workflow_from: Kopēt darba plūsmu no - label_permissions_report: Atļauju atskaite - label_watched_issues: Vērotie uzdevumi - label_related_issues: Saistītie uzdevumi - label_applied_status: Piešķirtais statuss - label_loading: Lādējas... - label_relation_new: Jauna relācija - label_relation_delete: Dzēst relāciju - label_relates_to: saistīts ar - label_duplicates: dublikāti - label_duplicated_by: dublējas ar - label_blocks: bloķē - label_blocked_by: nobloķējis - label_precedes: pirms - label_follows: seko - label_end_to_start: no beigām uz sākumu - label_end_to_end: no beigām uz beigām - label_start_to_start: no sākuma uz sākumu - label_start_to_end: no sākuma uz beigām - label_stay_logged_in: Atcerēties mani - label_disabled: izslēgts - label_show_completed_versions: Rādīt pabeigtās versijas - label_me: es - label_board: Forums - label_board_new: Jauns forums - label_board_plural: Forumi - label_board_locked: Slēgts - label_board_sticky: Svarīgs - label_topic_plural: Tēmas - label_message_plural: Ziņas - label_message_last: Pēdējā ziņa - label_message_new: Jauna ziņa - label_message_posted: Ziņa pievienota - label_reply_plural: Atbildes - label_send_information: Sūtīt konta informāciju lietotājam - label_year: Gads - label_month: Mēnesis - label_week: Nedēļa - label_date_from: No - label_date_to: Kam - label_language_based: Izmantot lietotāja valodu - label_sort_by: "Kārtot pēc %{value}" - label_send_test_email: "Sūtīt testa e-pastu" - label_feeds_access_key: RSS piekļuves atslēga - label_missing_feeds_access_key: Trūkst RSS piekļuves atslēgas - label_feeds_access_key_created_on: "RSS piekļuves atslēga izveidota pirms %{value}" - label_module_plural: Moduļi - label_added_time_by: "Pievienojis %{author} pirms %{age}" - label_updated_time_by: "Atjaunojis %{author} pirms %{age}" - label_updated_time: "Atjaunots pirms %{value}" - label_jump_to_a_project: Pāriet uz projektu... - label_file_plural: Datnes - label_changeset_plural: Izmaiņu kopumi - label_default_columns: Noklusētās kolonnas - label_no_change_option: (Nav izmaiņu) - label_bulk_edit_selected_issues: Labot visus izvēlētos uzdevumus - label_theme: Tēma - label_default: Noklusēts - label_search_titles_only: Meklēt tikai nosaukumos - label_user_mail_option_all: "Par visiem notikumiem visos manos projektos" - label_user_mail_option_selected: "Par visiem notikumiem tikai izvēlētajos projektos..." - label_user_mail_no_self_notified: "Neziņot man par izmaiņām, kuras veicu es pats" - label_registration_activation_by_email: "konta aktivizācija caur e-pastu" - label_registration_manual_activation: manuālā konta aktivizācija - label_registration_automatic_activation: automātiskā konta aktivizācija - label_display_per_page: "Rādīt vienā lapā: %{value}" - label_age: Vecums - label_change_properties: Mainīt atribūtus - label_general: Galvenais - label_more: Vēl - label_scm: SCM - label_plugins: Spraudņi - label_ldap_authentication: LDAP pilnvarošana - label_downloads_abbr: L-lād. - label_optional_description: "Apraksts (neobligāts)" - label_add_another_file: Pievienot citu failu - label_preferences: Priekšrocības - label_chronological_order: Hronoloģiskā kārtībā - label_reverse_chronological_order: Apgriezti hronoloģiskā kārtībā - label_planning: Plānošana - label_incoming_emails: "Ienākošie e-pasti" - label_generate_key: Ģenerēt atslēgu - label_issue_watchers: Vērotāji - label_example: Piemērs - label_display: Rādīt - label_sort: Kārtot - label_ascending: Augoši - label_descending: Dilstoši - label_date_from_to: "No %{start} līdz %{end}" - label_wiki_content_added: Wiki lapa pievienota - label_wiki_content_updated: Wiki lapa atjaunota - label_group: Grupa - label_group_plural: Grupas - label_group_new: Jauna grupa - label_time_entry_plural: Pavadītais laiks - label_version_sharing_none: Nav koplietošanai - label_version_sharing_descendants: Ar apakšprojektiem - label_version_sharing_hierarchy: Ar projektu hierarhiju - label_version_sharing_tree: Ar projekta koku - label_version_sharing_system: Ar visiem projektiem - label_update_issue_done_ratios: Atjaunot uzdevuma veikuma attiecību - label_copy_source: Avots - label_copy_target: Mērķis - label_copy_same_as_target: Tāds pats kā mērķis - label_display_used_statuses_only: "Rādīt tikai statusus, ko lieto šis trakeris" - label_api_access_key: API pieejas atslēga - label_missing_api_access_key: Trūkst API pieejas atslēga - label_api_access_key_created_on: "API pieejas atslēga izveidota pirms %{value}" - - button_login: Pieslēgties - button_submit: Nosūtīt - button_save: Saglabāt - button_check_all: Atzīmēt visu - button_uncheck_all: Noņemt visus atzīmējumus - button_delete: Dzēst - button_create: Izveidot - button_create_and_continue: Izveidot un turpināt - button_test: Testēt - button_edit: Labot - button_add: Pievienot - button_change: Mainīt - button_apply: Apstiprināt - button_clear: Notīrīt - button_lock: Slēgt - button_unlock: Atslēgt - button_download: Lejuplādēt - button_list: Saraksts - button_view: Skats - button_move: Pārvietot - button_move_and_follow: Pārvietot un sekot - button_back: Atpakaļ - button_cancel: Atcelt - button_activate: Aktivizēt - button_sort: Kārtot - button_log_time: Ilgs laiks - button_rollback: Atjaunot uz šo versiju - button_watch: Vērot - button_unwatch: Nevērot - button_reply: Atbildēt - button_archive: Arhivēt - button_unarchive: Atarhivēt - button_reset: Atiestatīt - button_rename: Pārsaukt - button_change_password: Mainīt paroli - button_copy: Kopēt - button_copy_and_follow: Kopēt un sekot - button_annotate: Pierakstīt paskaidrojumu - button_update: Atjaunot - button_configure: Konfigurēt - button_quote: Citāts - button_duplicate: Dublēt - button_show: Rādīt - - status_active: aktīvs - status_registered: reģistrēts - status_locked: slēgts - - version_status_open: atvērta - version_status_locked: slēgta - version_status_closed: aizvērta - - field_active: Aktīvs - - text_select_mail_notifications: "Izvēlieties darbības, par kurām vēlaties saņemt ziņojumus e-pastā" - text_regexp_info: "piem. ^[A-Z0-9]+$" - text_min_max_length_info: "0 nozīmē, ka nav ierobežojumu" - text_project_destroy_confirmation: "Vai tiešām vēlaties dzēst šo projektu un ar to saistītos datus?" - text_subprojects_destroy_warning: "Tā apakšprojekts(i): %{value} arī tiks dzēsts(i)." - text_workflow_edit: Lai labotu darba plūsmu, izvēlieties lomu un trakeri - text_are_you_sure: "Vai esat pārliecināts?" - text_journal_changed: "%{label} mainīts no %{old} uz %{new}" - text_journal_set_to: "%{label} iestatīts uz %{value}" - text_journal_deleted: "%{label} dzēsts (%{old})" - text_journal_added: "%{label} %{value} pievienots" - text_tip_issue_begin_day: uzdevums sākas šodien - text_tip_issue_end_day: uzdevums beidzas šodien - text_tip_issue_begin_end_day: uzdevums sākas un beidzas šodien - text_project_identifier_info: 'Tikai mazie burti (a-z), cipari un domuzīmes ir atļauti.
    Kad saglabāts, identifikators nevar tikt mainīts.' - text_caracters_maximum: "%{count} simboli maksimāli." - text_caracters_minimum: "Jābūt vismaz %{count} simbolu garumā." - text_length_between: "Garums starp %{min} un %{max} simboliem." - text_tracker_no_workflow: Šim trakerim nav definēta darba plūsma - text_unallowed_characters: Neatļauti simboli - text_comma_separated: "Atļautas vairākas vērtības (atdalīt ar komatu)." - text_line_separated: "Atļautas vairākas vērtības (rakstīt katru savā rindā)." - text_issues_ref_in_commit_messages: "Izmaiņu salīdzināšana izejot no ziņojumiem" - text_issue_added: "Uzdevumu %{id} pievienojis %{author}." - text_issue_updated: "Uzdevumu %{id} atjaunojis %{author}." - text_wiki_destroy_confirmation: "Vai esat drošs, ka vēlaties dzēst šo wiki un visu tās saturu?" - text_issue_category_destroy_question: "Daži uzdevumi (%{count}) ir nozīmēti šai kategorijai. Ko Jūs vēlaties darīt?" - text_issue_category_destroy_assignments: Dzēst kategoriju nozīmējumus - text_issue_category_reassign_to: Nozīmēt uzdevumus šai kategorijai - text_user_mail_option: "No neizvēlētajiem projektiem Jūs saņemsiet ziņojumus e-pastā tikai par notikumiem, kuriem Jūs sekojat vai kuros esat iesaistīts." - text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plūsmas vēl nav konfigurētas.\nĻoti ieteicams ielādēt noklusēto konfigurāciju. Pēc ielādēšanas to būs iespējams modificēt." - text_load_default_configuration: Ielādēt noklusēto konfigurāciju - text_status_changed_by_changeset: "Apstiprināts izmaiņu kopumā %{value}." - text_issues_destroy_confirmation: 'Vai tiešām vēlaties dzēst izvēlēto uzdevumu(us)?' - text_select_project_modules: 'Izvēlieties moduļus šim projektam:' - text_default_administrator_account_changed: Noklusētais administratora konts mainīts - text_file_repository_writable: Pielikumu direktorijā atļauts rakstīt - text_plugin_assets_writable: Spraudņu kataloga direktorijā atļauts rakstīt - text_rmagick_available: "RMagick pieejams (neobligāts)" - text_destroy_time_entries_question: "%{hours} stundas tika ziņotas par uzdevumu, ko vēlaties dzēst. Ko darīt?" - text_destroy_time_entries: Dzēst ziņotās stundas - text_assign_time_entries_to_project: Piešķirt ziņotās stundas projektam - text_reassign_time_entries: 'Piešķirt ziņotās stundas uzdevumam:' - text_user_wrote: "%{value} rakstīja:" - text_enumeration_destroy_question: "%{count} objekti ir piešķirti šai vērtībai." - text_enumeration_category_reassign_to: 'Piešķirt tos šai vērtībai:' - text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/configuration.yml un pārstartējiet lietotni." - text_repository_usernames_mapping: "Izvēlieties vai atjaunojiet Redmine lietotāju, saistītu ar katru lietotājvārdu, kas atrodams repozitorija žurnālā.\nLietotāji ar to pašu Redmine un repozitorija lietotājvārdu būs saistīti automātiski." - text_diff_truncated: '... Šis diff tika nošķelts, jo tas pārsniedz maksimālo izmēru, ko var parādīt.' - text_custom_field_possible_values_info: 'Katra vērtības savā rindā' - text_wiki_page_destroy_question: "Šij lapai ir %{descendants} apakšlapa(as) un pēcnācēji. Ko darīt?" - text_wiki_page_nullify_children: "Paturēt apakšlapas kā pamatlapas" - text_wiki_page_destroy_children: "Dzēst apakšlapas un visus pēcnācējus" - text_wiki_page_reassign_children: "Piešķirt apakšlapas šai lapai" - text_own_membership_delete_confirmation: "Jūs tūlīt dzēsīsiet dažas vai visas atļaujas, un Jums pēc tam var nebūt atļauja labot šo projektu.\nVai turpināt?" - - default_role_manager: Menedžeris - default_role_developer: Izstrādātājs - default_role_reporter: Ziņotājs - default_tracker_bug: Kļūda - default_tracker_feature: Iezīme - default_tracker_support: Atbalsts - default_issue_status_new: Jauns - default_issue_status_in_progress: Attīstībā - default_issue_status_resolved: Atrisināts - default_issue_status_feedback: Atsauksmes - default_issue_status_closed: Slēgts - default_issue_status_rejected: Noraidīts - default_doc_category_user: Lietotāja dokumentācija - default_doc_category_tech: Tehniskā dokumentācija - default_priority_low: Zema - default_priority_normal: Normāla - default_priority_high: Augsta - default_priority_urgent: Steidzama - default_priority_immediate: Tūlītēja - default_activity_design: Dizains - default_activity_development: Izstrādāšana - - enumeration_issue_priorities: Uzdevumu prioritātes - enumeration_doc_categories: Dokumentu kategorijas - enumeration_activities: Aktivitātes (laika uzskaite) - enumeration_system_activity: Sistēmas aktivitātes - - error_can_not_delete_custom_field: Unable to delete custom field - permission_manage_subtasks: Manage subtasks - label_profile: Profile - error_unable_to_connect: Unable to connect (%{value}) - error_can_not_remove_role: This role is in use and can not be deleted. - field_parent_issue: Parent task - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - label_project_copy_notifications: Send email notifications during the project copy - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +# translated by Dzintars Bergs (dzintars.bergs@gmail.com) + +lv: + direction: ltr + date: + formats: + default: "%d.%m.%Y" + short: "%d %b" + long: "%d %B %Y" + + day_names: [Svētdiena, Pirmdiena, Otrdiena, Trešdiena, Ceturtdiena, Piektdiena, Sestdiena] + abbr_day_names: [Sv, Pr, Ot, Tr, Ct, Pk, St] + + month_names: [~, Janvāris, Februāris, Marts, Aprīlis , Maijs, Jūnijs, Jūlijs, Augusts, Septembris, Oktobris, Novembris, Decembris] + abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, Jūn, Jūl, Aug, Sep, Okt, Nov, Dec] + order: + - :day + - :month + - :year + + time: + formats: + default: "%a, %d %b %Y, %H:%M:%S %z" + time: "%H:%M" + short: "%d %b, %H:%M" + long: "%B %d, %Y %H:%M" + am: "rītā" + pm: "vakarā" + + datetime: + distance_in_words: + half_a_minute: "pus minūte" + less_than_x_seconds: + one: "mazāk kā 1 sekunde" + other: "mazāk kā %{count} sekundes" + x_seconds: + one: "1 sekunde" + other: "%{count} sekundes" + less_than_x_minutes: + one: "mazāk kā minūte" + other: "mazāk kā %{count} minūtes" + x_minutes: + one: "1 minūte" + other: "%{count} minūtes" + about_x_hours: + one: "aptuveni 1 stunda" + other: "aptuveni %{count} stundas" + x_days: + one: "1 diena" + other: "%{count} dienas" + about_x_months: + one: "aptuveni 1 mēnesis" + other: "aptuveni %{count} mēneši" + x_months: + one: "1 mēnesis" + other: "%{count} mēneši" + about_x_years: + one: "aptuveni 1 gads" + other: "aptuveni %{count} gadi" + over_x_years: + one: "ilgāk par 1 gadu" + other: "ilgāk par %{count} gadiem" + almost_x_years: + one: "gandrīz 1 gadu" + other: "gandrīz %{count} gadus" + + number: + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: " " + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Baits" + other: "Baiti" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + + support: + array: + sentence_connector: "un" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "nav iekļauts sarakstā" + exclusion: "ir rezervēts" + invalid: "nederīgs" + confirmation: "apstiprinājums nesakrīt" + accepted: "jābūt akceptētam" + empty: "nevar būt tukšs" + blank: "nevar būt neaizpildīts" + too_long: "ir pārāk gara(š) (maksimālais garums ir %{count} simboli)" + too_short: "ir pārāk īsa(s) (minimālais garums ir %{count} simboli)" + wrong_length: "ir nepareiza garuma (vajadzētu būt %{count} simboli)" + taken: "eksistē" + not_a_number: "nav skaitlis" + not_a_date: "nav derīgs datums" + greater_than: "jābūt lielākam par %{count}" + greater_than_or_equal_to: "jābūt lielākam vai vienādam ar %{count}" + equal_to: "jābūt vienādam ar %{count}" + less_than: "jābūt mazākam kā %{count}" + less_than_or_equal_to: "jābūt mazākam vai vienādam ar %{count}" + odd: "jāatšķirās" + even: "jāsakrīt" + greater_than_start_date: "jābūt vēlākam par sākuma datumu" + not_same_project: "nepieder pie tā paša projekta" + circular_dependency: "Šī relācija radītu ciklisku atkarību" + cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + + actionview_instancetag_blank_option: Izvēlieties + + general_text_No: 'Nē' + general_text_Yes: 'Jā' + general_text_no: 'nē' + general_text_yes: 'jā' + general_lang_name: 'Latvian (Latviešu)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Konts tika atjaunots veiksmīgi. + notice_account_invalid_creditentials: Nepareizs lietotāja vārds vai parole. + notice_account_password_updated: Parole tika veiksmīgi atjaunota. + notice_account_wrong_password: Nepareiza parole + notice_account_register_done: Konts veiksmīgi izveidots. Lai aktivizētu kontu, spiediet uz saites, kas Jums tika nosūtīta. + notice_account_unknown_email: Nezināms lietotājs + notice_can_t_change_password: Šis konts izmanto ārēju pilnvarošanas avotu. Nav iespējams nomainīt paroli. + notice_account_lost_email_sent: Jums tika nosūtīts e-pasts ar instrukcijām, kā izveidot jaunu paroli. + notice_account_activated: Jūsu konts ir aktivizēts. Varat pieslēgties sistēmai. + notice_successful_create: Veiksmīga izveide. + notice_successful_update: Veiksmīga atjaunošana. + notice_successful_delete: Veiksmīga dzēšana. + notice_successful_connection: Veiksmīgs savienojums. + notice_file_not_found: Lapa, ko Jūs mēģināt atvērt, neeksistē vai ir pārvietota. + notice_locking_conflict: Datus ir atjaunojis cits lietotājs. + notice_not_authorized: Jums nav tiesību piekļūt šai lapai. + notice_email_sent: "E-pasts tika nosūtīts uz %{value}" + notice_email_error: "Kļūda sūtot e-pastu (%{value})" + notice_feeds_access_key_reseted: Jūsu RSS pieejas atslēga tika iestatīta sākuma stāvoklī. + notice_api_access_key_reseted: Jūsu API pieejas atslēga tika iestatīta sākuma stāvoklī. + notice_failed_to_save_issues: "Neizdevās saglabāt %{count} uzdevumu(us) no %{total} izvēlēti: %{ids}." + notice_no_issue_selected: "Nav izvēlēts uzdevums! Lūdzu, atzīmējiet uzdevumus, kurus vēlaties rediģēt!" + notice_account_pending: "Jūsu konts tika izveidots un šobrīd gaida administratora apstiprinājumu." + notice_default_data_loaded: Noklusētā konfigurācija tika veiksmīgi ielādēta. + notice_unable_delete_version: Neizdevās dzēst versiju. + notice_issue_done_ratios_updated: Uzdevuma izpildes koeficients atjaunots. + + error_can_t_load_default_data: "Nevar ielādēt noklusētos konfigurācijas datus: %{value}" + error_scm_not_found: "Ieraksts vai versija nebija repozitorijā." + error_scm_command_failed: "Mēģinot piekļūt repozitorijam, notika kļūda: %{value}" + error_scm_annotate: "Ieraksts neeksistē vai tam nevar tikt pievienots paskaidrojums." + error_issue_not_found_in_project: 'Uzdevums netika atrasts vai nepieder šim projektam.' + error_no_tracker_in_project: 'Neviens trakeris nav saistīts ar šo projektu. Pārbaudiet projekta iestatījumus.' + error_no_default_issue_status: 'Nav definēts uzdevuma noklusētais statuss. Pārbaudiet konfigurāciju (Ejat uz: "Administrācija -> Uzdevumu statusi")!' + error_can_not_reopen_issue_on_closed_version: 'Nevar pievienot atsauksmi uzdevumam, kas saistīts ar slēgtu versiju.' + error_can_not_archive_project: Šis projekts nevar tikt arhivēts + error_issue_done_ratios_not_updated: "Uzdevuma izpildes koeficients nav atjaunots." + error_workflow_copy_source: 'Lūdzu izvēlieties avota trakeri vai lomu' + error_workflow_copy_target: 'Lūdzu izvēlēties mērķa trakeri(us) un lomu(as)' + + warning_attachments_not_saved: "%{count} datnes netika saglabātas." + + mail_subject_lost_password: "Jūsu %{value} parole" + mail_body_lost_password: 'Lai mainītu paroli, spiediet uz šīs saites:' + mail_subject_register: "Jūsu %{value} konta aktivizācija" + mail_body_register: 'Lai izveidotu kontu, spiediet uz šīs saites:' + mail_body_account_information_external: "Varat izmantot Jūsu %{value} kontu, lai pieslēgtos." + mail_body_account_information: Jūsu konta informācija + mail_subject_account_activation_request: "%{value} konta aktivizācijas pieprasījums" + mail_body_account_activation_request: "Jauns lietotājs (%{value}) ir reģistrēts. Lietotāja konts gaida Jūsu apstiprinājumu:" + mail_subject_reminder: "%{count} uzdevums(i) sagaidāms(i) tuvākajās %{days} dienās" + mail_body_reminder: "%{count} uzdevums(i), kurš(i) ir nozīmēts(i) Jums, sagaidāms(i) tuvākajās %{days} dienās:" + mail_subject_wiki_content_added: "'%{id}' Wiki lapa pievienota" + mail_body_wiki_content_added: "The '%{id}' Wiki lapu pievienojis %{author}." + mail_subject_wiki_content_updated: "'%{id}' Wiki lapa atjaunota" + mail_body_wiki_content_updated: "The '%{id}' Wiki lapu atjaunojis %{author}." + + gui_validation_error: 1 kļūda + gui_validation_error_plural: "%{count} kļūdas" + + field_name: Nosaukums + field_description: Apraksts + field_summary: Kopsavilkums + field_is_required: Nepieciešams + field_firstname: Vārds + field_lastname: Uzvārds + field_mail: "E-pasts" + field_filename: Datne + field_filesize: Izmērs + field_downloads: Lejupielādes + field_author: Autors + field_created_on: Izveidots + field_updated_on: Atjaunots + field_field_format: Formāts + field_is_for_all: Visiem projektiem + field_possible_values: Iespējamās vērtības + field_regexp: Regulārā izteiksme + field_min_length: Minimālais garums + field_max_length: Maksimālais garums + field_value: Vērtība + field_category: Kategorija + field_title: Nosaukums + field_project: Projekts + field_issue: Uzdevums + field_status: Statuss + field_notes: Piezīmes + field_is_closed: Uzdevums slēgts + field_is_default: Noklusētā vērtība + field_tracker: Trakeris + field_subject: Temats + field_due_date: Sagaidāmais datums + field_assigned_to: Piešķirts + field_priority: Prioritāte + field_fixed_version: Mērķa versija + field_user: Lietotājs + field_role: Loma + field_homepage: Vietne + field_is_public: Publisks + field_parent: Apakšprojekts projektam + field_is_in_roadmap: Ceļvedī parādītie uzdevumi + field_login: Pieslēgties + field_mail_notification: "E-pasta paziņojumi" + field_admin: Administrators + field_last_login_on: Pēdējo reizi pieslēdzies + field_language: Valoda + field_effective_date: Datums + field_password: Parole + field_new_password: Janā parole + field_password_confirmation: Paroles apstiprinājums + field_version: Versija + field_type: Tips + field_host: Hosts + field_port: Ports + field_account: Konts + field_base_dn: Base DN + field_attr_login: Pieslēgšanās atribūts + field_attr_firstname: Vārda atribūts + field_attr_lastname: Uzvārda atribūts + field_attr_mail: "E-pasta atribūts" + field_onthefly: "Lietotāja izveidošana on-the-fly" + field_start_date: Sākuma datums + field_done_ratio: "% padarīti" + field_auth_source: Pilnvarošanas režīms + field_hide_mail: "Paslēpt manu e-pasta adresi" + field_comments: Komentārs + field_url: URL + field_start_page: Sākuma lapa + field_subproject: Apakšprojekts + field_hours: Stundas + field_activity: Aktivitāte + field_spent_on: Datums + field_identifier: Identifikators + field_is_filter: Izmantots kā filtrs + field_issue_to: Saistīts uzdevums + field_delay: Kavējums + field_assignable: Uzdevums var tikt piesaistīts šai lomai + field_redirect_existing_links: Pāradresēt eksistējošās saites + field_estimated_hours: Paredzētais laiks + field_column_names: Kolonnas + field_time_zone: Laika zona + field_searchable: Meklējams + field_default_value: Noklusētā vērtība + field_comments_sorting: Rādīt komentārus + field_parent_title: Vecāka lapa + field_editable: Rediģējams + field_watcher: Vērotājs + field_identity_url: OpenID URL + field_content: Saturs + field_group_by: Grupēt rezultātus pēc + field_sharing: Koplietošana + + setting_app_title: Programmas nosaukums + setting_app_subtitle: Programmas apakš-nosaukums + setting_welcome_text: Sveiciena teksts + setting_default_language: Noklusētā valoda + setting_login_required: Nepieciešama pilnvarošana + setting_self_registration: Pašreģistrēšanās + setting_attachment_max_size: Pielikuma maksimālais izmērs + setting_issues_export_limit: Uzdevumu eksporta ierobežojums + setting_mail_from: "E-pasta adrese informācijas nosūtīšanai" + setting_bcc_recipients: "Saņēmēju adreses neparādīsies citu saņēmēju vēstulēs (bcc)" + setting_plain_text_mail: "Vēstule brīvā tekstā (bez HTML)" + setting_host_name: Hosta nosaukums un piekļuves ceļš + setting_text_formatting: Teksta formatēšana + setting_wiki_compression: Wiki vēstures saspiešana + setting_feeds_limit: Barotnes satura ierobežojums + setting_default_projects_public: Jaunie projekti noklusēti ir publiski pieejami + setting_autofetch_changesets: "Automātiski lietot jaunāko versiju, pieslēdzoties repozitorijam (Autofetch)" + setting_sys_api_enabled: Ieslēgt WS repozitoriju menedžmentam + setting_commit_ref_keywords: Norādes atslēgvārdi + setting_commit_fix_keywords: Fiksējošie atslēgvārdi + setting_autologin: Automātiskā pieslēgšanās + setting_date_format: Datuma formāts + setting_time_format: Laika formāts + setting_cross_project_issue_relations: "Atļaut starp-projektu uzdevumu relācijas" + setting_issue_list_default_columns: Noklusēti rādītās kolonnas uzdevumu sarakstā + setting_repositories_encodings: Repozitoriju kodējumi + setting_emails_footer: "E-pastu kājene" + setting_protocol: Protokols + setting_per_page_options: Objekti vienā lapā + setting_user_format: Lietotāju rādīšanas formāts + setting_activity_days_default: Dienus skaits aktivitāšu rādīšanai aktivitāšu sadaļā + setting_display_subprojects_issues: Rādīt apakšprojekta uzdevumus galvenajā projektā pēc noklusējuma + setting_enabled_scm: Lietot SCM + setting_mail_handler_body_delimiters: "Saīsināt pēc vienas no šim rindām" + setting_mail_handler_api_enabled: "Lietot WS ienākošajiem e-pastiem" + setting_mail_handler_api_key: API atslēga + setting_sequential_project_identifiers: Ģenerēt secīgus projektu identifikatorus + setting_gravatar_enabled: Izmantot Gravatar lietotāju ikonas + setting_gravatar_default: Noklusētais Gravatar attēls + setting_diff_max_lines_displayed: Maksimālais rādīto diff rindu skaits + setting_file_max_size_displayed: Maksimālais izmērs iekļautajiem teksta failiem + setting_repository_log_display_limit: Maksimālais žurnāla datnē rādīto revīziju skaits + setting_openid: Atļaut OpenID pieslēgšanos un reģistrēšanos + setting_password_min_length: Minimālais paroles garums + setting_new_project_user_role_id: Loma, kura tiek piešķirta ne-administratora lietotājam, kurš izveido projektu + setting_default_projects_modules: Noklusētie lietotie moduļi jaunam projektam + setting_issue_done_ratio: Aprēķināt uzdevuma izpildes koeficientu ar + setting_issue_done_ratio_issue_field: uzdevuma lauku + setting_issue_done_ratio_issue_status: uzdevuma statusu + setting_start_of_week: Sākt kalendāru ar + setting_rest_api_enabled: Lietot REST web-servisu + setting_cache_formatted_text: Kešot formatētu tekstu + + permission_add_project: Izveidot projektu + permission_add_subprojects: Izveidot apakšprojektu + permission_edit_project: Rediģēt projektu + permission_select_project_modules: Izvēlēties projekta moduļus + permission_manage_members: Pārvaldīt dalībniekus + permission_manage_project_activities: Pārvaldīt projekta aktivitātes + permission_manage_versions: Pārvaldīt versijas + permission_manage_categories: Pārvaldīt uzdevumu kategorijas + permission_view_issues: Apskatīt uzdevumus + permission_add_issues: Pievienot uzdevumus + permission_edit_issues: Rediģēt uzdevumus + permission_manage_issue_relations: Pārvaldīt uzdevumu relācijas + permission_add_issue_notes: Pievienot piezīmes + permission_edit_issue_notes: Rediģēt piezīmes + permission_edit_own_issue_notes: Rediģēt paša piezīmes + permission_move_issues: Pārvietot uzdevumus + permission_delete_issues: Dzēst uzdevumus + permission_manage_public_queries: Pārvaldīt publiskos pieprasījumus + permission_save_queries: Saglabāt pieprasījumus + permission_view_gantt: Skatīt Ganta diagrammu + permission_view_calendar: Skatīt kalendāru + permission_view_issue_watchers: Skatīt vērotāju sarakstu + permission_add_issue_watchers: Pievienot vērotājus + permission_delete_issue_watchers: Dzēst vērotājus + permission_log_time: Piereģistrēt pavadīto laiku + permission_view_time_entries: Skatīt pavadīto laiku + permission_edit_time_entries: Rdiģēt laika reģistrus + permission_edit_own_time_entries: Rediģēt savus laika reģistrus + permission_manage_news: Pārvaldīt jaunumus + permission_comment_news: Komentēt jaunumus + permission_manage_documents: Pārvaldīt dokumentus + permission_view_documents: Skatīt dokumentus + permission_manage_files: Pārvaldīt failus + permission_view_files: Skatīt failus + permission_manage_wiki: Pārvaldīt wiki + permission_rename_wiki_pages: Pārsaukt wiki lapas + permission_delete_wiki_pages: Dzēst wiki lapas + permission_view_wiki_pages: Skatīt wiki + permission_view_wiki_edits: Skatīt wiki vēsturi + permission_edit_wiki_pages: Rdiģēt wiki lapas + permission_delete_wiki_pages_attachments: Dzēst pielikumus + permission_protect_wiki_pages: Projekta wiki lapas + permission_manage_repository: Pārvaldīt repozitoriju + permission_browse_repository: Pārlūkot repozitoriju + permission_view_changesets: Skatīt izmaiņu kopumus + permission_commit_access: Atļaut piekļuvi + permission_manage_boards: Pārvaldīt ziņojumu dēļus + permission_view_messages: Skatīt ziņas + permission_add_messages: Publicēt ziņas + permission_edit_messages: Rediģēt ziņas + permission_edit_own_messages: Rediģēt savas ziņas + permission_delete_messages: Dzēst ziņas + permission_delete_own_messages: Dzēst savas ziņas + permission_export_wiki_pages: Eksportēt Wiki lapas + + project_module_issue_tracking: Uzdevumu uzskaite + project_module_time_tracking: Laika uzskaite + project_module_news: Jaunumi + project_module_documents: Dokumenti + project_module_files: Datnes + project_module_wiki: Wiki + project_module_repository: Repozitorijs + project_module_boards: Ziņojumu dēļi + + label_user: Lietotājs + label_user_plural: Lietotāji + label_user_new: Jauns lietotājs + label_user_anonymous: Anonīms + label_project: Projekts + label_project_new: Jauns projekts + label_project_plural: Projekti + label_x_projects: + zero: nav projektu + one: 1 projekts + other: "%{count} projekti" + label_project_all: Visi projekti + label_project_latest: Jaunākie projekti + label_issue: Uzdevums + label_issue_new: Jauns uzdevums + label_issue_plural: Uzdevumi + label_issue_view_all: Skatīt visus uzdevumus + label_issues_by: "Kārtot pēc %{value}" + label_issue_added: Uzdevums pievienots + label_issue_updated: Uzdevums atjaunots + label_document: Dokuments + label_document_new: Jauns dokuments + label_document_plural: Dokumenti + label_document_added: Dokuments pievienots + label_role: Loma + label_role_plural: Lomas + label_role_new: Jauna loma + label_role_and_permissions: Lomas un atļaujas + label_member: Dalībnieks + label_member_new: Jauns dalībnieks + label_member_plural: Dalībnieki + label_tracker: Trakeris + label_tracker_plural: Trakeri + label_tracker_new: Jauns trakeris + label_workflow: Darba gaita + label_issue_status: Uzdevuma statuss + label_issue_status_plural: Uzdevumu statusi + label_issue_status_new: Jauns statuss + label_issue_category: Uzdevuma kategorija + label_issue_category_plural: Uzdevumu kategorijas + label_issue_category_new: Jauna kategorija + label_custom_field: Pielāgojams lauks + label_custom_field_plural: Pielāgojami lauki + label_custom_field_new: Jauns pielāgojams lauks + label_enumerations: Uzskaitījumi + label_enumeration_new: Jauna vērtība + label_information: Informācija + label_information_plural: Informācija + label_please_login: Lūdzu pieslēdzieties + label_register: Reģistrēties + label_login_with_open_id_option: vai pieslēgties ar OpenID + label_password_lost: Nozaudēta parole + label_home: Sākums + label_home_heading: Sākums + label_my_page: Mana lapa + label_my_account: Mans konts + label_my_projects: Mani projekti + label_administration: Administrācija + label_login: Pieslēgties + label_logout: Atslēgties + label_help: Palīdzība + label_reported_issues: Ziņotie uzdevumi + label_assigned_to_me_issues: Man piesaistītie uzdevumi + label_last_login: Pēdējā pieslēgšanās + label_registered_on: Reģistrējies + label_activity: Aktivitāte + label_overall_activity: Kopējās aktivitātes + label_user_activity: "Lietotāja %{value} aktivitātes" + label_new: Jauns + label_logged_as: Pieslēdzies kā + label_environment: Vide + label_authentication: Pilnvarošana + label_auth_source: Pilnvarošanas režīms + label_auth_source_new: Jauns pilnvarošanas režīms + label_auth_source_plural: Pilnvarošanas režīmi + label_subproject_plural: Apakšprojekti + label_subproject_new: Jauns apakšprojekts + label_and_its_subprojects: "%{value} un tā apakšprojekti" + label_min_max_length: Minimālais - Maksimālais garums + label_list: Saraksts + label_date: Datums + label_integer: Vesels skaitlis + label_float: Decimālskaitlis + label_boolean: Patiesuma vērtība + label_string: Teksts + label_text: Garš teksts + label_attribute: Atribūts + label_attribute_plural: Atribūti + label_download: "%{count} Lejupielāde" + label_download_plural: "%{count} Lejupielādes" + label_no_data: Nav datu, ko parādīt + label_change_status: Mainīt statusu + label_history: Vēsture + label_attachment: Pielikums + label_attachment_new: Jauns pielikums + label_attachment_delete: Dzēst pielikumu + label_attachment_plural: Pielikumi + label_file_added: Lauks pievienots + label_report: Atskaite + label_report_plural: Atskaites + label_news: Ziņa + label_news_new: Pievienot ziņu + label_news_plural: Ziņas + label_news_latest: Jaunākās ziņas + label_news_view_all: Skatīt visas ziņas + label_news_added: Ziņas pievienotas + label_settings: Iestatījumi + label_overview: Pārskats + label_version: Versija + label_version_new: Jauna versija + label_version_plural: Versijas + label_close_versions: Aizvērt pabeigtās versijas + label_confirmation: Apstiprinājums + label_export_to: 'Pieejams arī:' + label_read: Lasīt... + label_public_projects: Publiskie projekti + label_open_issues: atvērts + label_open_issues_plural: atvērti + label_closed_issues: slēgts + label_closed_issues_plural: slēgti + label_x_open_issues_abbr_on_total: + zero: 0 atvērti / %{total} + one: 1 atvērts / %{total} + other: "%{count} atvērti / %{total}" + label_x_open_issues_abbr: + zero: 0 atvērti + one: 1 atvērts + other: "%{count} atvērti" + label_x_closed_issues_abbr: + zero: 0 slēgti + one: 1 slēgts + other: "%{count} slēgti" + label_total: Kopā + label_permissions: Atļaujas + label_current_status: Pašreizējais statuss + label_new_statuses_allowed: Jauni statusi atļauti + label_all: visi + label_none: neviens + label_nobody: nekas + label_next: Nākošais + label_previous: Iepriekšējais + label_used_by: Izmanto + label_details: Detaļas + label_add_note: Pievienot piezīmi + label_per_page: katrā lapā + label_calendar: Kalendārs + label_months_from: mēneši no + label_gantt: Ganta diagramma + label_internal: Iekšējais + label_last_changes: "pēdējās %{count} izmaiņas" + label_change_view_all: Skatīt visas izmaiņas + label_personalize_page: Pielāgot šo lapu + label_comment: Komentārs + label_comment_plural: Komentāri + label_x_comments: + zero: nav komentāru + one: 1 komentārs + other: "%{count} komentāri" + label_comment_add: Pievienot komentāru + label_comment_added: Komentārs pievienots + label_comment_delete: Dzēst komentārus + label_query: Pielāgots pieprasījums + label_query_plural: Pielāgoti pieprasījumi + label_query_new: Jauns pieprasījums + label_filter_add: Pievienot filtru + label_filter_plural: Filtri + label_equals: ir + label_not_equals: nav + label_in_less_than: ir mazāk kā + label_in_more_than: ir vairāk kā + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: iekš + label_today: šodien + label_all_time: visu laiku + label_yesterday: vakar + label_this_week: šonedēļ + label_last_week: pagājušo šonedēļ + label_last_n_days: "pēdējās %{count} dienas" + label_this_month: šomēnes + label_last_month: pagājušo mēnes + label_this_year: šogad + label_date_range: Datumu apgabals + label_less_than_ago: mazāk kā dienas iepriekš + label_more_than_ago: vairāk kā dienas iepriekš + label_ago: dienas iepriekš + label_contains: satur + label_not_contains: nesatur + label_day_plural: dienas + label_repository: Repozitorijs + label_repository_plural: Repozitoriji + label_browse: Pārlūkot + label_modification: "%{count} izmaiņa" + label_modification_plural: "%{count} izmaiņas" + label_branch: Zars + label_tag: Birka + label_revision: Revīzija + label_revision_plural: Revīzijas + label_revision_id: "Revīzija %{value}" + label_associated_revisions: Saistītās revīzijas + label_added: pievienots + label_modified: modificēts + label_copied: nokopēts + label_renamed: pārsaukts + label_deleted: dzēsts + label_latest_revision: Pēdējā revīzija + label_latest_revision_plural: Pēdējās revīzijas + label_view_revisions: Skatīt revīzijas + label_view_all_revisions: Skatīt visas revīzijas + label_max_size: Maksimālais izmērs + label_sort_highest: Pārvietot uz augšu + label_sort_higher: Pārvietot soli augšup + label_sort_lower: Pārvietot uz leju + label_sort_lowest: Pārvietot vienu soli uz leju + label_roadmap: Ceļvedis + label_roadmap_due_in: "Sagaidāms pēc %{value}" + label_roadmap_overdue: "nokavēts %{value}" + label_roadmap_no_issues: Šai versijai nav uzdevumu + label_search: Meklēt + label_result_plural: Rezultāti + label_all_words: Visi vārdi + label_wiki: Wiki + label_wiki_edit: Wiki labojums + label_wiki_edit_plural: Wiki labojumi + label_wiki_page: Wiki lapa + label_wiki_page_plural: Wiki lapas + label_index_by_title: Indeksēt pēc nosaukuma + label_index_by_date: Indeksēt pēc datuma + label_current_version: Tekošā versija + label_preview: Priekšskatījums + label_feed_plural: Barotnes + label_changes_details: Visu izmaiņu detaļas + label_issue_tracking: Uzdevumu uzskaite + label_spent_time: Pavadītais laiks + label_f_hour: "%{value} stunda" + label_f_hour_plural: "%{value} stundas" + label_time_tracking: Laika uzskaite + label_change_plural: Izmaiņas + label_statistics: Statistika + label_commits_per_month: Nodevumi mēnesī + label_commits_per_author: Nodevumi no autora + label_view_diff: Skatīt atšķirības + label_diff_inline: iekļauts + label_diff_side_by_side: blakus + label_options: Opcijas + label_copy_workflow_from: Kopēt darba plūsmu no + label_permissions_report: Atļauju atskaite + label_watched_issues: Vērotie uzdevumi + label_related_issues: Saistītie uzdevumi + label_applied_status: Piešķirtais statuss + label_loading: Lādējas... + label_relation_new: Jauna relācija + label_relation_delete: Dzēst relāciju + label_relates_to: saistīts ar + label_duplicates: dublikāti + label_duplicated_by: dublējas ar + label_blocks: bloķē + label_blocked_by: nobloķējis + label_precedes: pirms + label_follows: seko + label_end_to_start: no beigām uz sākumu + label_end_to_end: no beigām uz beigām + label_start_to_start: no sākuma uz sākumu + label_start_to_end: no sākuma uz beigām + label_stay_logged_in: Atcerēties mani + label_disabled: izslēgts + label_show_completed_versions: Rādīt pabeigtās versijas + label_me: es + label_board: Forums + label_board_new: Jauns forums + label_board_plural: Forumi + label_board_locked: Slēgts + label_board_sticky: Svarīgs + label_topic_plural: Tēmas + label_message_plural: Ziņas + label_message_last: Pēdējā ziņa + label_message_new: Jauna ziņa + label_message_posted: Ziņa pievienota + label_reply_plural: Atbildes + label_send_information: Sūtīt konta informāciju lietotājam + label_year: Gads + label_month: Mēnesis + label_week: Nedēļa + label_date_from: No + label_date_to: Kam + label_language_based: Izmantot lietotāja valodu + label_sort_by: "Kārtot pēc %{value}" + label_send_test_email: "Sūtīt testa e-pastu" + label_feeds_access_key: RSS piekļuves atslēga + label_missing_feeds_access_key: Trūkst RSS piekļuves atslēgas + label_feeds_access_key_created_on: "RSS piekļuves atslēga izveidota pirms %{value}" + label_module_plural: Moduļi + label_added_time_by: "Pievienojis %{author} pirms %{age}" + label_updated_time_by: "Atjaunojis %{author} pirms %{age}" + label_updated_time: "Atjaunots pirms %{value}" + label_jump_to_a_project: Pāriet uz projektu... + label_file_plural: Datnes + label_changeset_plural: Izmaiņu kopumi + label_default_columns: Noklusētās kolonnas + label_no_change_option: (Nav izmaiņu) + label_bulk_edit_selected_issues: Labot visus izvēlētos uzdevumus + label_theme: Tēma + label_default: Noklusēts + label_search_titles_only: Meklēt tikai nosaukumos + label_user_mail_option_all: "Par visiem notikumiem visos manos projektos" + label_user_mail_option_selected: "Par visiem notikumiem tikai izvēlētajos projektos..." + label_user_mail_no_self_notified: "Neziņot man par izmaiņām, kuras veicu es pats" + label_registration_activation_by_email: "konta aktivizācija caur e-pastu" + label_registration_manual_activation: manuālā konta aktivizācija + label_registration_automatic_activation: automātiskā konta aktivizācija + label_display_per_page: "Rādīt vienā lapā: %{value}" + label_age: Vecums + label_change_properties: Mainīt atribūtus + label_general: Galvenais + label_more: Vēl + label_scm: SCM + label_plugins: Spraudņi + label_ldap_authentication: LDAP pilnvarošana + label_downloads_abbr: L-lād. + label_optional_description: "Apraksts (neobligāts)" + label_add_another_file: Pievienot citu failu + label_preferences: Priekšrocības + label_chronological_order: Hronoloģiskā kārtībā + label_reverse_chronological_order: Apgriezti hronoloģiskā kārtībā + label_planning: Plānošana + label_incoming_emails: "Ienākošie e-pasti" + label_generate_key: Ģenerēt atslēgu + label_issue_watchers: Vērotāji + label_example: Piemērs + label_display: Rādīt + label_sort: Kārtot + label_ascending: Augoši + label_descending: Dilstoši + label_date_from_to: "No %{start} līdz %{end}" + label_wiki_content_added: Wiki lapa pievienota + label_wiki_content_updated: Wiki lapa atjaunota + label_group: Grupa + label_group_plural: Grupas + label_group_new: Jauna grupa + label_time_entry_plural: Pavadītais laiks + label_version_sharing_none: Nav koplietošanai + label_version_sharing_descendants: Ar apakšprojektiem + label_version_sharing_hierarchy: Ar projektu hierarhiju + label_version_sharing_tree: Ar projekta koku + label_version_sharing_system: Ar visiem projektiem + label_update_issue_done_ratios: Atjaunot uzdevuma veikuma attiecību + label_copy_source: Avots + label_copy_target: Mērķis + label_copy_same_as_target: Tāds pats kā mērķis + label_display_used_statuses_only: "Rādīt tikai statusus, ko lieto šis trakeris" + label_api_access_key: API pieejas atslēga + label_missing_api_access_key: Trūkst API pieejas atslēga + label_api_access_key_created_on: "API pieejas atslēga izveidota pirms %{value}" + + button_login: Pieslēgties + button_submit: Nosūtīt + button_save: Saglabāt + button_check_all: Atzīmēt visu + button_uncheck_all: Noņemt visus atzīmējumus + button_delete: Dzēst + button_create: Izveidot + button_create_and_continue: Izveidot un turpināt + button_test: Testēt + button_edit: Labot + button_add: Pievienot + button_change: Mainīt + button_apply: Apstiprināt + button_clear: Notīrīt + button_lock: Slēgt + button_unlock: Atslēgt + button_download: Lejuplādēt + button_list: Saraksts + button_view: Skats + button_move: Pārvietot + button_move_and_follow: Pārvietot un sekot + button_back: Atpakaļ + button_cancel: Atcelt + button_activate: Aktivizēt + button_sort: Kārtot + button_log_time: Ilgs laiks + button_rollback: Atjaunot uz šo versiju + button_watch: Vērot + button_unwatch: Nevērot + button_reply: Atbildēt + button_archive: Arhivēt + button_unarchive: Atarhivēt + button_reset: Atiestatīt + button_rename: Pārsaukt + button_change_password: Mainīt paroli + button_copy: Kopēt + button_copy_and_follow: Kopēt un sekot + button_annotate: Pierakstīt paskaidrojumu + button_update: Atjaunot + button_configure: Konfigurēt + button_quote: Citāts + button_duplicate: Dublēt + button_show: Rādīt + + status_active: aktīvs + status_registered: reģistrēts + status_locked: slēgts + + version_status_open: atvērta + version_status_locked: slēgta + version_status_closed: aizvērta + + field_active: Aktīvs + + text_select_mail_notifications: "Izvēlieties darbības, par kurām vēlaties saņemt ziņojumus e-pastā" + text_regexp_info: "piem. ^[A-Z0-9]+$" + text_min_max_length_info: "0 nozīmē, ka nav ierobežojumu" + text_project_destroy_confirmation: "Vai tiešām vēlaties dzēst šo projektu un ar to saistītos datus?" + text_subprojects_destroy_warning: "Tā apakšprojekts(i): %{value} arī tiks dzēsts(i)." + text_workflow_edit: Lai labotu darba plūsmu, izvēlieties lomu un trakeri + text_are_you_sure: "Vai esat pārliecināts?" + text_journal_changed: "%{label} mainīts no %{old} uz %{new}" + text_journal_set_to: "%{label} iestatīts uz %{value}" + text_journal_deleted: "%{label} dzēsts (%{old})" + text_journal_added: "%{label} %{value} pievienots" + text_tip_issue_begin_day: uzdevums sākas šodien + text_tip_issue_end_day: uzdevums beidzas šodien + text_tip_issue_begin_end_day: uzdevums sākas un beidzas šodien + text_project_identifier_info: 'Tikai mazie burti (a-z), cipari un domuzīmes ir atļauti.
    Kad saglabāts, identifikators nevar tikt mainīts.' + text_caracters_maximum: "%{count} simboli maksimāli." + text_caracters_minimum: "Jābūt vismaz %{count} simbolu garumā." + text_length_between: "Garums starp %{min} un %{max} simboliem." + text_tracker_no_workflow: Šim trakerim nav definēta darba plūsma + text_unallowed_characters: Neatļauti simboli + text_comma_separated: "Atļautas vairākas vērtības (atdalīt ar komatu)." + text_line_separated: "Atļautas vairākas vērtības (rakstīt katru savā rindā)." + text_issues_ref_in_commit_messages: "Izmaiņu salīdzināšana izejot no ziņojumiem" + text_issue_added: "Uzdevumu %{id} pievienojis %{author}." + text_issue_updated: "Uzdevumu %{id} atjaunojis %{author}." + text_wiki_destroy_confirmation: "Vai esat drošs, ka vēlaties dzēst šo wiki un visu tās saturu?" + text_issue_category_destroy_question: "Daži uzdevumi (%{count}) ir nozīmēti šai kategorijai. Ko Jūs vēlaties darīt?" + text_issue_category_destroy_assignments: Dzēst kategoriju nozīmējumus + text_issue_category_reassign_to: Nozīmēt uzdevumus šai kategorijai + text_user_mail_option: "No neizvēlētajiem projektiem Jūs saņemsiet ziņojumus e-pastā tikai par notikumiem, kuriem Jūs sekojat vai kuros esat iesaistīts." + text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plūsmas vēl nav konfigurētas.\nĻoti ieteicams ielādēt noklusēto konfigurāciju. Pēc ielādēšanas to būs iespējams modificēt." + text_load_default_configuration: Ielādēt noklusēto konfigurāciju + text_status_changed_by_changeset: "Apstiprināts izmaiņu kopumā %{value}." + text_issues_destroy_confirmation: 'Vai tiešām vēlaties dzēst izvēlēto uzdevumu(us)?' + text_select_project_modules: 'Izvēlieties moduļus šim projektam:' + text_default_administrator_account_changed: Noklusētais administratora konts mainīts + text_file_repository_writable: Pielikumu direktorijā atļauts rakstīt + text_plugin_assets_writable: Spraudņu kataloga direktorijā atļauts rakstīt + text_rmagick_available: "RMagick pieejams (neobligāts)" + text_destroy_time_entries_question: "%{hours} stundas tika ziņotas par uzdevumu, ko vēlaties dzēst. Ko darīt?" + text_destroy_time_entries: Dzēst ziņotās stundas + text_assign_time_entries_to_project: Piešķirt ziņotās stundas projektam + text_reassign_time_entries: 'Piešķirt ziņotās stundas uzdevumam:' + text_user_wrote: "%{value} rakstīja:" + text_enumeration_destroy_question: "%{count} objekti ir piešķirti šai vērtībai." + text_enumeration_category_reassign_to: 'Piešķirt tos šai vērtībai:' + text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/configuration.yml un pārstartējiet lietotni." + text_repository_usernames_mapping: "Izvēlieties vai atjaunojiet Redmine lietotāju, saistītu ar katru lietotājvārdu, kas atrodams repozitorija žurnālā.\nLietotāji ar to pašu Redmine un repozitorija lietotājvārdu būs saistīti automātiski." + text_diff_truncated: '... Šis diff tika nošķelts, jo tas pārsniedz maksimālo izmēru, ko var parādīt.' + text_custom_field_possible_values_info: 'Katra vērtības savā rindā' + text_wiki_page_destroy_question: "Šij lapai ir %{descendants} apakšlapa(as) un pēcnācēji. Ko darīt?" + text_wiki_page_nullify_children: "Paturēt apakšlapas kā pamatlapas" + text_wiki_page_destroy_children: "Dzēst apakšlapas un visus pēcnācējus" + text_wiki_page_reassign_children: "Piešķirt apakšlapas šai lapai" + text_own_membership_delete_confirmation: "Jūs tūlīt dzēsīsiet dažas vai visas atļaujas, un Jums pēc tam var nebūt atļauja labot šo projektu.\nVai turpināt?" + + default_role_manager: Menedžeris + default_role_developer: Izstrādātājs + default_role_reporter: Ziņotājs + default_tracker_bug: Kļūda + default_tracker_feature: Iezīme + default_tracker_support: Atbalsts + default_issue_status_new: Jauns + default_issue_status_in_progress: Attīstībā + default_issue_status_resolved: Atrisināts + default_issue_status_feedback: Atsauksmes + default_issue_status_closed: Slēgts + default_issue_status_rejected: Noraidīts + default_doc_category_user: Lietotāja dokumentācija + default_doc_category_tech: Tehniskā dokumentācija + default_priority_low: Zema + default_priority_normal: Normāla + default_priority_high: Augsta + default_priority_urgent: Steidzama + default_priority_immediate: Tūlītēja + default_activity_design: Dizains + default_activity_development: Izstrādāšana + + enumeration_issue_priorities: Uzdevumu prioritātes + enumeration_doc_categories: Dokumentu kategorijas + enumeration_activities: Aktivitātes (laika uzskaite) + enumeration_system_activity: Sistēmas aktivitātes + + error_can_not_delete_custom_field: Unable to delete custom field + permission_manage_subtasks: Manage subtasks + label_profile: Profile + error_unable_to_connect: Unable to connect (%{value}) + error_can_not_remove_role: This role is in use and can not be deleted. + field_parent_issue: Parent task + error_unable_delete_issue_status: Unable to delete issue status + label_subtask_plural: Subtasks + error_can_not_delete_tracker: This tracker contains issues and can't be deleted. + label_project_copy_notifications: Send email notifications during the project copy + field_principal: Principal + label_my_page_block: My page block + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + text_zoom_out: Zoom out + text_zoom_in: Zoom in + notice_unable_delete_time_entry: Unable to delete time log entry. + label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodēt ziņojumus + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/mk.yml --- a/config/locales/mk.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/mk.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,943 +1,979 @@ -mk: - # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d/%m/%Y" - short: "%d %b" - long: "%d %B, %Y" - - day_names: [недела, понеделник, вторник, среда, четврток, петок, сабота] - abbr_day_names: [нед, пон, вто, сре, чет, пет, саб] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, јануари, февруари, март, април, мај, јуни, јули, август, септември, октомври, ноември, декември] - abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, сеп, окт, ное, дек] - # Used in date_select and datime_select. - order: [ :day, :month, :year ] - - time: - formats: - default: "%d/%m/%Y %H:%M" - time: "%H:%M" - short: "%d %b %H:%M" - long: "%d %B, %Y %H:%M" - am: "предпладне" - pm: "попладне" - - datetime: - distance_in_words: - half_a_minute: "пола минута" - less_than_x_seconds: - one: "помалку од 1 секунда" - other: "помалку од %{count} секунди" - x_seconds: - one: "1 секунда" - other: "%{count} секунди" - less_than_x_minutes: - one: "помалку од 1 минута" - other: "помалку од %{count} минути" - x_minutes: - one: "1 минута" - other: "%{count} минути" - about_x_hours: - one: "околу 1 час" - other: "околу %{count} часа" - x_days: - one: "1 ден" - other: "%{count} дена" - about_x_months: - one: "околу 1 месец" - other: "околу %{count} месеци" - x_months: - one: "1 месец" - other: "%{count} месеци" - about_x_years: - one: "околу 1 година" - other: "околу %{count} години" - over_x_years: - one: "преку 1 година" - other: "преку %{count} години" - almost_x_years: - one: "скоро 1 година" - other: "скоро %{count} години" - - number: - # Default format for numbers - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "и" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "не е вклучено во листата" - exclusion: "е резервирано" - invalid: "е невалидно" - confirmation: "не се совпаѓа со потврдата" - accepted: "мора да е прифатено" - empty: "неможе да е празно" - blank: "неможе да е празно" - too_long: "е предолго (макс. %{count} знаци)" - too_short: "е прекратко (мин. %{count} знаци)" - wrong_length: "е погрешна должина (треба да е %{count} знаци)" - taken: "е веќе зафатено" - not_a_number: "не е број" - not_a_date: "не е валидна дата" - greater_than: "мора да е поголемо од %{count}" - greater_than_or_equal_to: "мора да е поголемо или еднакво на %{count}" - equal_to: "мора да е еднакво на %{count}" - less_than: "мора да е помало од %{count}" - less_than_or_equal_to: "мора да е помало или еднакво на %{count}" - odd: "мора да е непарно" - even: "мора да е парно" - greater_than_start_date: "мора да е поголема од почетната дата" - not_same_project: "не припаѓа на истиот проект" - circular_dependency: "Оваа врска ќе креира кружна зависност" - cant_link_an_issue_with_a_descendant: "Задача неможе да се поврзе со една од нејзините подзадачи" - - actionview_instancetag_blank_option: Изберете - - general_text_No: 'Не' - general_text_Yes: 'Да' - general_text_no: 'не' - general_text_yes: 'да' - general_lang_name: 'Macedonian (Македонски)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Профилот е успешно ажуриран. - notice_account_invalid_creditentials: Неточен корисник или лозинка - notice_account_password_updated: Лозинката е успешно ажурирана. - notice_account_wrong_password: Погрешна лозинка - notice_account_register_done: Профилот е успешно креиран. За активација, клкнете на врската што ви е пратена по е-пошта. - notice_account_unknown_email: Непознат корисник. - notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. - notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. - notice_account_activated: Your account has been activated. You can now log in. - notice_successful_create: Успешно креирање. - notice_successful_update: Успешно ажурирање. - notice_successful_delete: Успешно бришење. - notice_successful_connection: Успешна конекција. - notice_file_not_found: The page you were trying to access doesn't exist or has been removed. - notice_locking_conflict: Data has been updated by another user. - notice_not_authorized: You are not authorized to access this page. - notice_email_sent: "Е-порака е пратена на %{value}" - notice_email_error: "Се случи грешка при праќање на е-пораката (%{value})" - notice_feeds_access_key_reseted: Вашиот RSS клуч за пристап е reset. - notice_api_access_key_reseted: Вашиот API клуч за пристап е reset. - notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." - notice_account_pending: "Your account was created and is now pending administrator approval." - notice_default_data_loaded: Default configuration successfully loaded. - notice_unable_delete_version: Unable to delete version. - notice_unable_delete_time_entry: Unable to delete time log entry. - notice_issue_done_ratios_updated: Issue done ratios updated. - - error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" - error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or can not be annotated." - error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_delete_custom_field: Unable to delete custom field - error_can_not_delete_tracker: "This tracker contains issues and can't be deleted." - error_can_not_remove_role: "This role is in use and can not be deleted." - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - error_unable_delete_issue_status: 'Unable to delete issue status' - error_unable_to_connect: "Unable to connect (%{value})" - warning_attachments_not_saved: "%{count} file(s) could not be saved." - - mail_subject_lost_password: "Вашата %{value} лозинка" - mail_body_lost_password: 'To change your password, click on the following link:' - mail_subject_register: "Your %{value} account activation" - mail_body_register: 'To activate your account, click on the following link:' - mail_body_account_information_external: "You can use your %{value} account to log in." - mail_body_account_information: Your account information - mail_subject_account_activation_request: "%{value} account activation request" - mail_body_account_activation_request: "Нов корисник (%{value}) е регистриран. The account is pending your approval:" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 грешка - gui_validation_error_plural: "%{count} грешки" - - field_name: Име - field_description: Опис - field_summary: Краток опис - field_is_required: Задолжително - field_firstname: Име - field_lastname: Презиме - field_mail: Е-пошта - field_filename: Датотека - field_filesize: Големина - field_downloads: Превземања - field_author: Автор - field_created_on: Креиран - field_updated_on: Ажурирано - field_field_format: Формат - field_is_for_all: За сите проекти - field_possible_values: Можни вредности - field_regexp: Regular expression - field_min_length: Минимална должина - field_max_length: Максимална должина - field_value: Вредност - field_category: Категорија - field_title: Наслов - field_project: Проект - field_issue: Задача - field_status: Статус - field_notes: Белешки - field_is_closed: Задачата е затворена - field_is_default: Default value - field_tracker: Tracker - field_subject: Наслов - field_due_date: Краен рок - field_assigned_to: Доделена на - field_priority: Приоритет - field_fixed_version: Target version - field_user: Корисник - field_principal: Principal - field_role: Улога - field_homepage: Веб страна - field_is_public: Јавен - field_parent: Подпроект на - field_is_in_roadmap: Issues displayed in roadmap - field_login: Корисник - field_mail_notification: Известувања по e-пошта - field_admin: Администратор - field_last_login_on: Последна најава - field_language: Јазик - field_effective_date: Дата - field_password: Лозинка - field_new_password: Нова лозинка - field_password_confirmation: Потврда - field_version: Верзија - field_type: Тип - field_host: Хост - field_port: Порт - field_account: Account - field_base_dn: Base DN - field_attr_login: Login attribute - field_attr_firstname: Firstname attribute - field_attr_lastname: Lastname attribute - field_attr_mail: Email attribute - field_onthefly: Моментално (On-the-fly) креирање на корисници - field_start_date: Почеток - field_done_ratio: % Завршено - field_auth_source: Режим на автентикација - field_hide_mail: Криј ја мојата адреса на е-пошта - field_comments: Коментар - field_url: URL - field_start_page: Почетна страна - field_subproject: Подпроект - field_hours: Часови - field_activity: Активност - field_spent_on: Дата - field_identifier: Идентификатор - field_is_filter: Користи како филтер - field_issue_to: Поврзана задача - field_delay: Доцнење - field_assignable: На оваа улога може да се доделуваат задачи - field_redirect_existing_links: Пренасочи ги постоечките врски - field_estimated_hours: Проценето време - field_column_names: Колони - field_time_entries: Бележи време - field_time_zone: Временска зона - field_searchable: Може да се пребарува - field_default_value: Default value - field_comments_sorting: Прикажувај коментари - field_parent_title: Parent page - field_editable: Може да се уредува - field_watcher: Watcher - field_identity_url: OpenID URL - field_content: Содржина - field_group_by: Групирај ги резултатите според - field_sharing: Споделување - field_parent_issue: Parent task - - setting_app_title: Наслов на апликацијата - setting_app_subtitle: Поднаслов на апликацијата - setting_welcome_text: Текст за добредојде - setting_default_language: Default јазик - setting_login_required: Задолжителна автентикација - setting_self_registration: Само-регистрација - setting_attachment_max_size: Макс. големина на прилог - setting_issues_export_limit: Issues export limit - setting_mail_from: Emission email address - setting_bcc_recipients: Blind carbon copy recipients (bcc) - setting_plain_text_mail: Текстуални е-пораки (без HTML) - setting_host_name: Име на хост и патека - setting_text_formatting: Форматирање на текст - setting_wiki_compression: Компресија на историјата на вики - setting_feeds_limit: Feed content limit - setting_default_projects_public: Новите проекти се иницијално јавни - setting_autofetch_changesets: Autofetch commits - setting_sys_api_enabled: Enable WS for repository management - setting_commit_ref_keywords: Referencing keywords - setting_commit_fix_keywords: Fixing keywords - setting_autologin: Автоматска најава - setting_date_format: Формат на дата - setting_time_format: Формат на време - setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти - setting_issue_list_default_columns: Default columns displayed on the issue list - setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding - setting_emails_footer: Emails footer - setting_protocol: Протокол - setting_per_page_options: Objects per page options - setting_user_format: Приказ на корисниците - setting_activity_days_default: Денови прикажана во активноста на проектот - setting_display_subprojects_issues: Прикажи ги задачите на подпроектите во главните проекти - setting_enabled_scm: Овозможи SCM - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Enable WS for incoming emails - setting_mail_handler_api_key: API клуч - setting_sequential_project_identifiers: Генерирај последователни идентификатори на проекти - setting_gravatar_enabled: Користи Gravatar кориснички икони - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Max number of diff lines displayed - setting_file_max_size_displayed: Max size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Дозволи OpenID најава и регистрација - setting_password_min_length: Мин. должина на лозинка - setting_new_project_user_role_id: Улога доделена на неадминистраторски корисник кој креира проект - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - - permission_add_project: Креирај проекти - permission_add_subprojects: Креирај подпроекти - permission_edit_project: Уреди проект - permission_select_project_modules: Изберете модули за проект - permission_manage_members: Manage members - permission_manage_project_activities: Manage project activities - permission_manage_versions: Manage versions - permission_manage_categories: Manage issue categories - permission_view_issues: Прегледај задачи - permission_add_issues: Додавај задачи - permission_edit_issues: Уредувај задачи - permission_manage_issue_relations: Manage issue relations - permission_add_issue_notes: Додавај белешки - permission_edit_issue_notes: Уредувај белешки - permission_edit_own_issue_notes: Уредувај сопствени белешки - permission_move_issues: Преместувај задачи - permission_delete_issues: Бриши задачи - permission_manage_public_queries: Manage public queries - permission_save_queries: Save queries - permission_view_gantt: View gantt chart - permission_view_calendar: View calendar - permission_view_issue_watchers: View watchers list - permission_add_issue_watchers: Add watchers - permission_delete_issue_watchers: Delete watchers - permission_log_time: Бележи потрошено време - permission_view_time_entries: Прегледај потрошено време - permission_edit_time_entries: Уредувај белешки за потрошено време - permission_edit_own_time_entries: Уредувај сопствени белешки за потрошено време - permission_manage_news: Manage news - permission_comment_news: Коментирај на вести - permission_manage_documents: Manage documents - permission_view_documents: Прегледувај документи - permission_manage_files: Manage files - permission_view_files: Прегледувај датотеки - permission_manage_wiki: Manage wiki - permission_rename_wiki_pages: Преименувај вики страници - permission_delete_wiki_pages: Бриши вики страници - permission_view_wiki_pages: Прегледувај вики - permission_view_wiki_edits: Прегледувај вики историја - permission_edit_wiki_pages: Уредувај вики страници - permission_delete_wiki_pages_attachments: Бриши прилози - permission_protect_wiki_pages: Заштитувај вики страници - permission_manage_repository: Manage repository - permission_browse_repository: Browse repository - permission_view_changesets: View changesets - permission_commit_access: Commit access - permission_manage_boards: Manage boards - permission_view_messages: View messages - permission_add_messages: Post messages - permission_edit_messages: Уредувај пораки - permission_edit_own_messages: Уредувај сопствени пораки - permission_delete_messages: Бриши пораки - permission_delete_own_messages: Бриши сопствени пораки - permission_export_wiki_pages: Export wiki pages - permission_manage_subtasks: Manage subtasks - - project_module_issue_tracking: Следење на задачи - project_module_time_tracking: Следење на време - project_module_news: Вести - project_module_documents: Документи - project_module_files: Датотеки - project_module_wiki: Вики - project_module_repository: Repository - project_module_boards: Форуми - project_module_calendar: Календар - project_module_gantt: Gantt - - label_user: Корисник - label_user_plural: Корисници - label_user_new: Нов корисник - label_user_anonymous: Анонимен - label_project: Проект - label_project_new: Нов проект - label_project_plural: Проекти - label_x_projects: - zero: нема проекти - one: 1 проект - other: "%{count} проекти" - label_project_all: Сите проекти - label_project_latest: Последните проекти - label_issue: Задача - label_issue_new: Нова задача - label_issue_plural: Задачи - label_issue_view_all: Прегледај ги сите задачи - label_issues_by: "Задачи по %{value}" - label_issue_added: Задачата е додадена - label_issue_updated: Задачата е ажурирана - label_document: Документ - label_document_new: Нов документ - label_document_plural: Документи - label_document_added: Документот е додаден - label_role: Улога - label_role_plural: Улоги - label_role_new: Нова улога - label_role_and_permissions: Улоги и овластувања - label_member: Член - label_member_new: Нов член - label_member_plural: Членови - label_tracker: Tracker - label_tracker_plural: Trackers - label_tracker_new: New tracker - label_workflow: Workflow - label_issue_status: Статус на задача - label_issue_status_plural: Статуси на задачи - label_issue_status_new: Нов статус - label_issue_category: Категорија на задача - label_issue_category_plural: Категории на задачи - label_issue_category_new: Нова категорија - label_custom_field: Прилагодено поле - label_custom_field_plural: Прилагодени полиња - label_custom_field_new: Ново прилагодено поле - label_enumerations: Enumerations - label_enumeration_new: Нова вредност - label_information: Информација - label_information_plural: Информации - label_please_login: Најави се - label_register: Регистрирај се - label_login_with_open_id_option: или најави се со OpenID - label_password_lost: Изгубена лозинка - label_home: Почетна - label_home_heading: Почетна - label_my_page: Мојата страна - label_my_account: Мојот профил - label_my_projects: Мои проекти - label_my_page_block: Блок елемент - label_administration: Администрација - label_login: Најави се - label_logout: Одјави се - label_help: Помош - label_reported_issues: Пријавени задачи - label_assigned_to_me_issues: Задачи доделени на мене - label_last_login: Последна најава - label_registered_on: Регистриран на - label_activity: Активност - label_overall_activity: Севкупна активност - label_user_activity: "Активност на %{value}" - label_new: Нова - label_logged_as: Најавени сте како - label_environment: Опкружување - label_authentication: Автентикација - label_auth_source: Режим на автентикација - label_auth_source_new: Нов режим на автентикација - label_auth_source_plural: Режими на автентикација - label_subproject_plural: Подпроекти - label_subproject_new: Нов подпроект - label_and_its_subprojects: "%{value} и неговите подпроекти" - label_min_max_length: Мин. - Макс. должина - label_list: Листа - label_date: Дата - label_integer: Integer - label_float: Float - label_boolean: Boolean - label_string: Текст - label_text: Долг текст - label_attribute: Атрибут - label_attribute_plural: Атрибути - label_download: "%{count} превземање" - label_download_plural: "%{count} превземања" - label_no_data: Нема податоци за прикажување - label_change_status: Промени статус - label_history: Историја - label_attachment: Датотека - label_attachment_new: Нова датотека - label_attachment_delete: Избриши датотека - label_attachment_plural: Датотеки - label_file_added: Датотеката е додадена - label_report: Извештај - label_report_plural: Извештаи - label_news: Новост - label_news_new: Додади новост - label_news_plural: Новости - label_news_latest: Последни новости - label_news_view_all: Прегледај ги сите новости - label_news_added: Новостта е додадена - label_settings: Settings - label_overview: Преглед - label_version: Верзија - label_version_new: Нова верзија - label_version_plural: Верзии - label_close_versions: Затвори ги завршените врзии - label_confirmation: Потврда - label_export_to: 'Достапно и во:' - label_read: Прочитај... - label_public_projects: Јавни проекти - label_open_issues: отворена - label_open_issues_plural: отворени - label_closed_issues: затворена - label_closed_issues_plural: затворени - label_x_open_issues_abbr_on_total: - zero: 0 отворени / %{total} - one: 1 отворена / %{total} - other: "%{count} отворени / %{total}" - label_x_open_issues_abbr: - zero: 0 отворени - one: 1 отворена - other: "%{count} отворени" - label_x_closed_issues_abbr: - zero: 0 затворени - one: 1 затворена - other: "%{count} затворени" - label_total: Вкупно - label_permissions: Овластувања - label_current_status: Моментален статус - label_new_statuses_allowed: Дозволени нови статуси - label_all: сите - label_none: ниеден - label_nobody: никој - label_next: Следно - label_previous: Претходно - label_used_by: Користено од - label_details: Детали - label_add_note: Додади белешка - label_per_page: По страна - label_calendar: Календар - label_months_from: месеци од - label_gantt: Gantt - label_internal: Internal - label_last_changes: "последни %{count} промени" - label_change_view_all: Прегледај ги сите промени - label_personalize_page: Прилагоди ја странава - label_comment: Коментар - label_comment_plural: Коментари - label_x_comments: - zero: нема коментари - one: 1 коментар - other: "%{count} коментари" - label_comment_add: Додади коментар - label_comment_added: Коментарот е додаден - label_comment_delete: Избриши коментари - label_query: Custom query - label_query_plural: Custom queries - label_query_new: New query - label_filter_add: Додади филтер - label_filter_plural: Филтри - label_equals: е - label_not_equals: не е - label_in_less_than: за помалку од - label_in_more_than: за повеќе од - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: во - label_today: денес - label_all_time: цело време - label_yesterday: вчера - label_this_week: оваа недела - label_last_week: минатата недела - label_last_n_days: "последните %{count} дена" - label_this_month: овој месец - label_last_month: минатиот месец - label_this_year: оваа година - label_date_range: Date range - label_less_than_ago: пред помалку од денови - label_more_than_ago: пред повеќе од денови - label_ago: пред денови - label_contains: содржи - label_not_contains: не содржи - label_day_plural: денови - label_repository: Складиште - label_repository_plural: Складишта - label_browse: Прелистувај - label_modification: "%{count} промени" - label_modification_plural: "%{count} промени" - label_branch: Гранка - label_tag: Tag - label_revision: Ревизија - label_revision_plural: Ревизии - label_revision_id: "Ревизија %{value}" - label_associated_revisions: Associated revisions - label_added: added - label_modified: modified - label_copied: copied - label_renamed: renamed - label_deleted: deleted - label_latest_revision: Последна ревизија - label_latest_revision_plural: Последни ревизии - label_view_revisions: Прегледај ги ревизиите - label_view_all_revisions: Прегледај ги сите ревизии - label_max_size: Макс. големина - label_sort_highest: Премести најгоре - label_sort_higher: Премести нагоре - label_sort_lower: Премести надоле - label_sort_lowest: Премести најдоле - label_roadmap: Roadmap - label_roadmap_due_in: "Due in %{value}" - label_roadmap_overdue: "Касни %{value}" - label_roadmap_no_issues: Нема задачи за оваа верзија - label_search: Барај - label_result_plural: Резултати - label_all_words: Сите зборови - label_wiki: Вики - label_wiki_edit: Вики уредување - label_wiki_edit_plural: Вики уредувања - label_wiki_page: Вики страница - label_wiki_page_plural: Вики страници - label_index_by_title: Индекс по наслов - label_index_by_date: Индекс по дата - label_current_version: Current version - label_preview: Preview - label_feed_plural: Feeds - label_changes_details: Детали за сите промени - label_issue_tracking: Следење на задачи - label_spent_time: Потрошено време - label_overall_spent_time: Вкупно потрошено време - label_f_hour: "%{value} час" - label_f_hour_plural: "%{value} часа" - label_time_tracking: Следење на време - label_change_plural: Промени - label_statistics: Статистики - label_commits_per_month: Commits per month - label_commits_per_author: Commits per author - label_view_diff: View differences - label_diff_inline: inline - label_diff_side_by_side: side by side - label_options: Опции - label_copy_workflow_from: Copy workflow from - label_permissions_report: Permissions report - label_watched_issues: Watched issues - label_related_issues: Поврзани задачи - label_applied_status: Applied status - label_loading: Loading... - label_relation_new: Нова релација - label_relation_delete: Избриши релација - label_relates_to: related to - label_duplicates: дупликати - label_duplicated_by: duplicated by - label_blocks: blocks - label_blocked_by: блокирано од - label_precedes: претходи - label_follows: следи - label_end_to_start: крај до почеток - label_end_to_end: крај до крај - label_start_to_start: почеток до почеток - label_start_to_end: почеток до крај - label_stay_logged_in: Останете најавени - label_disabled: disabled - label_show_completed_versions: Show completed versions - label_me: јас - label_board: Форум - label_board_new: Нов форум - label_board_plural: Форуми - label_board_locked: Заклучен - label_board_sticky: Sticky - label_topic_plural: Теми - label_message_plural: Пораки - label_message_last: Последна порака - label_message_new: Нова порака - label_message_posted: Поракате е додадена - label_reply_plural: Одговори - label_send_information: Испрати ги информациите за профилот на корисникот - label_year: Година - label_month: Месец - label_week: Недела - label_date_from: Од - label_date_to: До - label_language_based: Според јазикот на корисникот - label_sort_by: "Подреди според %{value}" - label_send_test_email: Испрати тест е-порака - label_feeds_access_key: RSS клуч за пристап - label_missing_feeds_access_key: Недостика RSS клуч за пристап - label_feeds_access_key_created_on: "RSS клучот за пристап креиран пред %{value}" - label_module_plural: Модули - label_added_time_by: "Додадено од %{author} пред %{age}" - label_updated_time_by: "Ажурирано од %{author} пред %{age}" - label_updated_time: "Ажурирано пред %{value}" - label_jump_to_a_project: Префрли се на проект... - label_file_plural: Датотеки - label_changeset_plural: Changesets - label_default_columns: Основни колони - label_no_change_option: (Без промена) - label_bulk_edit_selected_issues: Групно уредување на задачи - label_theme: Тема - label_default: Default - label_search_titles_only: Пребарувај само наслови - label_user_mail_option_all: "За било кој настан во сите мои проекти" - label_user_mail_option_selected: "За било кој настан само во избраните проекти..." - label_user_mail_no_self_notified: "Не ме известувај за промените што јас ги правам" - label_registration_activation_by_email: активација на профил преку е-пошта - label_registration_manual_activation: мануелна активација на профил - label_registration_automatic_activation: автоматска активација на профил - label_display_per_page: "По страна: %{value}" - label_age: Age - label_change_properties: Change properties - label_general: Општо - label_more: Повеќе - label_scm: SCM - label_plugins: Додатоци - label_ldap_authentication: LDAP автентикација - label_downloads_abbr: Превземања - label_optional_description: Опис (незадолжително) - label_add_another_file: Додади уште една датотека - label_preferences: Preferences - label_chronological_order: Во хронолошки ред - label_reverse_chronological_order: In reverse chronological order - label_planning: Планирање - label_incoming_emails: Дојдовни е-пораки - label_generate_key: Генерирај клуч - label_issue_watchers: Watchers - label_example: Пример - label_display: Прикажи - label_sort: Подреди - label_ascending: Растечки - label_descending: Опаѓачки - label_date_from_to: Од %{start} до %{end} - label_wiki_content_added: Вики страница додадена - label_wiki_content_updated: Вики страница ажурирана - label_group: Група - label_group_plural: Групи - label_group_new: Нова група - label_time_entry_plural: Потрошено време - label_version_sharing_none: Не споделено - label_version_sharing_descendants: Со сите подпроекти - label_version_sharing_hierarchy: Со хиерархијата на проектот - label_version_sharing_tree: Со дрвото на проектот - label_version_sharing_system: Со сите проекти - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Извор - label_copy_target: Дестинација - label_copy_same_as_target: Исто како дестинацијата - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API клуч за пристап - label_missing_api_access_key: Недостига API клуч за пристап - label_api_access_key_created_on: "API клучот за пристап е креиран пред %{value}" - label_profile: Профил - label_subtask_plural: Подзадачи - label_project_copy_notifications: Праќај известувања по е-пошта при копирање на проект - - button_login: Најави се - button_submit: Испрати - button_save: Зачувај - button_check_all: Штиклирај ги сите - button_uncheck_all: Одштиклирај ги сите - button_delete: Избриши - button_create: Креирај - button_create_and_continue: Креирај и продолжи - button_test: Тест - button_edit: Уреди - button_add: Додади - button_change: Промени - button_apply: Примени - button_clear: Избриши - button_lock: Заклучи - button_unlock: Отклучи - button_download: Превземи - button_list: List - button_view: Прегледај - button_move: Премести - button_move_and_follow: Премести и следи - button_back: Back - button_cancel: Откажи - button_activate: Активирај - button_sort: Подреди - button_log_time: Бележи време - button_rollback: Rollback to this version - button_watch: Следи - button_unwatch: Не следи - button_reply: Одговори - button_archive: Архивирај - button_unarchive: Одархивирај - button_reset: Reset - button_rename: Преименувај - button_change_password: Промени лозинка - button_copy: Копирај - button_copy_and_follow: Копирај и следи - button_annotate: Annotate - button_update: Ажурирај - button_configure: Конфигурирај - button_quote: Цитирај - button_duplicate: Копирај - button_show: Show - - status_active: активни - status_registered: регистрирани - status_locked: заклучени - - version_status_open: отворени - version_status_locked: заклучени - version_status_closed: затворени - - field_active: Active - - text_select_mail_notifications: Изберете за кои настани да се праќаат известувања по е-пошта да се праќаат. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 значи без ограничување - text_project_destroy_confirmation: Дали сте сигурни дека сакате да го избришете проектот и сите поврзани податоци? - text_subprojects_destroy_warning: "Неговите подпроекти: %{value} исто така ќе бидат избришани." - text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Дали сте сигурни? - text_journal_changed: "%{label} променето од %{old} во %{new}" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} избришан (%{old})" - text_journal_added: "%{label} %{value} додаден" - text_tip_issue_begin_day: задачи што почнуваат овој ден - text_tip_issue_end_day: задачи што завршуваат овој ден - text_tip_issue_begin_end_day: задачи што почнуваат и завршуваат овој ден - text_project_identifier_info: 'Само мали букви (a-z), бројки и dashes се дозволени
    По зачувувањето, идентификаторот неможе да се смени.' - text_caracters_maximum: "%{count} знаци максимум." - text_caracters_minimum: "Мора да е најмалку %{count} знаци долго." - text_length_between: "Должина помеѓу %{min} и %{max} знаци." - text_tracker_no_workflow: No workflow defined for this tracker - text_unallowed_characters: Недозволени знаци - text_comma_separated: Дозволени се повеќе вредности (разделени со запирка). - text_line_separated: Дозволени се повеќе вредности (една линија за секоја вредност). - text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Задачата %{id} е пријавена од %{author}." - text_issue_updated: "Задачата %{id} е ажурирана од %{author}." - text_wiki_destroy_confirmation: Дали сте сигурни дека сакате да го избришете ова вики и целата негова содржина? - text_issue_category_destroy_question: "Некои задачи (%{count}) се доделени на оваа категорија. Што сакате да правите?" - text_issue_category_destroy_assignments: Remove category assignments - text_issue_category_reassign_to: Додели ги задачите на оваа категорија - text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." - text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." - text_load_default_configuration: Load the default configuration - text_status_changed_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Дали сте сигурни дека сакате да ги избришете избраните задачи?' - text_select_project_modules: 'Изберете модули за овој проект:' - text_default_administrator_account_changed: Default administrator account changed - text_file_repository_writable: Во папката за прилози може да се запишува - text_plugin_assets_writable: Во папката за додатоци може да се запишува - text_rmagick_available: RMagick available (незадолжително) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?" - text_destroy_time_entries: Delete reported hours - text_assign_time_entries_to_project: Додели ги пријавените часови на проектот - text_reassign_time_entries: 'Reassign reported hours to this issue:' - text_user_wrote: "%{value} напиша:" - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/configuration.yml и рестартирајте ја апликацијата." - text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - text_zoom_in: Zoom in - text_zoom_out: Zoom out - - default_role_manager: Менаџер - default_role_developer: Developer - default_role_reporter: Reporter - default_tracker_bug: Грешка - default_tracker_feature: Функционалност - default_tracker_support: Поддршка - default_issue_status_new: Нова - default_issue_status_in_progress: Во прогрес - default_issue_status_resolved: Разрешена - default_issue_status_feedback: Feedback - default_issue_status_closed: Затворена - default_issue_status_rejected: Одбиена - default_doc_category_user: Корисничка документација - default_doc_category_tech: Техничка документација - default_priority_low: Низок - default_priority_normal: Нормален - default_priority_high: Висок - default_priority_urgent: Итно - default_priority_immediate: Веднаш - default_activity_design: Дизајн - default_activity_development: Развој - - enumeration_issue_priorities: Приоритети на задача - enumeration_doc_categories: Категории на документ - enumeration_activities: Активности (следење на време) - enumeration_system_activity: Системска активност - - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +mk: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d/%m/%Y" + short: "%d %b" + long: "%d %B, %Y" + + day_names: [недела, понеделник, вторник, среда, четврток, петок, сабота] + abbr_day_names: [нед, пон, вто, сре, чет, пет, саб] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, јануари, февруари, март, април, мај, јуни, јули, август, септември, октомври, ноември, декември] + abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, сеп, окт, ное, дек] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%d/%m/%Y %H:%M" + time: "%H:%M" + short: "%d %b %H:%M" + long: "%d %B, %Y %H:%M" + am: "предпладне" + pm: "попладне" + + datetime: + distance_in_words: + half_a_minute: "пола минута" + less_than_x_seconds: + one: "помалку од 1 секунда" + other: "помалку од %{count} секунди" + x_seconds: + one: "1 секунда" + other: "%{count} секунди" + less_than_x_minutes: + one: "помалку од 1 минута" + other: "помалку од %{count} минути" + x_minutes: + one: "1 минута" + other: "%{count} минути" + about_x_hours: + one: "околу 1 час" + other: "околу %{count} часа" + x_days: + one: "1 ден" + other: "%{count} дена" + about_x_months: + one: "околу 1 месец" + other: "околу %{count} месеци" + x_months: + one: "1 месец" + other: "%{count} месеци" + about_x_years: + one: "околу 1 година" + other: "околу %{count} години" + over_x_years: + one: "преку 1 година" + other: "преку %{count} години" + almost_x_years: + one: "скоро 1 година" + other: "скоро %{count} години" + + number: + # Default format for numbers + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "и" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "не е вклучено во листата" + exclusion: "е резервирано" + invalid: "е невалидно" + confirmation: "не се совпаѓа со потврдата" + accepted: "мора да е прифатено" + empty: "неможе да е празно" + blank: "неможе да е празно" + too_long: "е предолго (макс. %{count} знаци)" + too_short: "е прекратко (мин. %{count} знаци)" + wrong_length: "е погрешна должина (треба да е %{count} знаци)" + taken: "е веќе зафатено" + not_a_number: "не е број" + not_a_date: "не е валидна дата" + greater_than: "мора да е поголемо од %{count}" + greater_than_or_equal_to: "мора да е поголемо или еднакво на %{count}" + equal_to: "мора да е еднакво на %{count}" + less_than: "мора да е помало од %{count}" + less_than_or_equal_to: "мора да е помало или еднакво на %{count}" + odd: "мора да е непарно" + even: "мора да е парно" + greater_than_start_date: "мора да е поголема од почетната дата" + not_same_project: "не припаѓа на истиот проект" + circular_dependency: "Оваа врска ќе креира кружна зависност" + cant_link_an_issue_with_a_descendant: "Задача неможе да се поврзе со една од нејзините подзадачи" + + actionview_instancetag_blank_option: Изберете + + general_text_No: 'Не' + general_text_Yes: 'Да' + general_text_no: 'не' + general_text_yes: 'да' + general_lang_name: 'Macedonian (Македонски)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Профилот е успешно ажуриран. + notice_account_invalid_creditentials: Неточен корисник или лозинка + notice_account_password_updated: Лозинката е успешно ажурирана. + notice_account_wrong_password: Погрешна лозинка + notice_account_register_done: Профилот е успешно креиран. За активација, клкнете на врската што ви е пратена по е-пошта. + notice_account_unknown_email: Непознат корисник. + notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. + notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. + notice_account_activated: Your account has been activated. You can now log in. + notice_successful_create: Успешно креирање. + notice_successful_update: Успешно ажурирање. + notice_successful_delete: Успешно бришење. + notice_successful_connection: Успешна конекција. + notice_file_not_found: The page you were trying to access doesn't exist or has been removed. + notice_locking_conflict: Data has been updated by another user. + notice_not_authorized: You are not authorized to access this page. + notice_email_sent: "Е-порака е пратена на %{value}" + notice_email_error: "Се случи грешка при праќање на е-пораката (%{value})" + notice_feeds_access_key_reseted: Вашиот RSS клуч за пристап е reset. + notice_api_access_key_reseted: Вашиот API клуч за пристап е reset. + notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_default_data_loaded: Default configuration successfully loaded. + notice_unable_delete_version: Unable to delete version. + notice_unable_delete_time_entry: Unable to delete time log entry. + notice_issue_done_ratios_updated: Issue done ratios updated. + + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" + error_scm_annotate: "The entry does not exist or can not be annotated." + error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_delete_custom_field: Unable to delete custom field + error_can_not_delete_tracker: "This tracker contains issues and can't be deleted." + error_can_not_remove_role: "This role is in use and can not be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' + error_can_not_archive_project: This project can not be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + error_unable_delete_issue_status: 'Unable to delete issue status' + error_unable_to_connect: "Unable to connect (%{value})" + warning_attachments_not_saved: "%{count} file(s) could not be saved." + + mail_subject_lost_password: "Вашата %{value} лозинка" + mail_body_lost_password: 'To change your password, click on the following link:' + mail_subject_register: "Your %{value} account activation" + mail_body_register: 'To activate your account, click on the following link:' + mail_body_account_information_external: "You can use your %{value} account to log in." + mail_body_account_information: Your account information + mail_subject_account_activation_request: "%{value} account activation request" + mail_body_account_activation_request: "Нов корисник (%{value}) е регистриран. The account is pending your approval:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 грешка + gui_validation_error_plural: "%{count} грешки" + + field_name: Име + field_description: Опис + field_summary: Краток опис + field_is_required: Задолжително + field_firstname: Име + field_lastname: Презиме + field_mail: Е-пошта + field_filename: Датотека + field_filesize: Големина + field_downloads: Превземања + field_author: Автор + field_created_on: Креиран + field_updated_on: Ажурирано + field_field_format: Формат + field_is_for_all: За сите проекти + field_possible_values: Можни вредности + field_regexp: Regular expression + field_min_length: Минимална должина + field_max_length: Максимална должина + field_value: Вредност + field_category: Категорија + field_title: Наслов + field_project: Проект + field_issue: Задача + field_status: Статус + field_notes: Белешки + field_is_closed: Задачата е затворена + field_is_default: Default value + field_tracker: Tracker + field_subject: Наслов + field_due_date: Краен рок + field_assigned_to: Доделена на + field_priority: Приоритет + field_fixed_version: Target version + field_user: Корисник + field_principal: Principal + field_role: Улога + field_homepage: Веб страна + field_is_public: Јавен + field_parent: Подпроект на + field_is_in_roadmap: Issues displayed in roadmap + field_login: Корисник + field_mail_notification: Известувања по e-пошта + field_admin: Администратор + field_last_login_on: Последна најава + field_language: Јазик + field_effective_date: Дата + field_password: Лозинка + field_new_password: Нова лозинка + field_password_confirmation: Потврда + field_version: Верзија + field_type: Тип + field_host: Хост + field_port: Порт + field_account: Account + field_base_dn: Base DN + field_attr_login: Login attribute + field_attr_firstname: Firstname attribute + field_attr_lastname: Lastname attribute + field_attr_mail: Email attribute + field_onthefly: Моментално (On-the-fly) креирање на корисници + field_start_date: Почеток + field_done_ratio: "% Завршено" + field_auth_source: Режим на автентикација + field_hide_mail: Криј ја мојата адреса на е-пошта + field_comments: Коментар + field_url: URL + field_start_page: Почетна страна + field_subproject: Подпроект + field_hours: Часови + field_activity: Активност + field_spent_on: Дата + field_identifier: Идентификатор + field_is_filter: Користи како филтер + field_issue_to: Поврзана задача + field_delay: Доцнење + field_assignable: На оваа улога може да се доделуваат задачи + field_redirect_existing_links: Пренасочи ги постоечките врски + field_estimated_hours: Проценето време + field_column_names: Колони + field_time_entries: Бележи време + field_time_zone: Временска зона + field_searchable: Може да се пребарува + field_default_value: Default value + field_comments_sorting: Прикажувај коментари + field_parent_title: Parent page + field_editable: Може да се уредува + field_watcher: Watcher + field_identity_url: OpenID URL + field_content: Содржина + field_group_by: Групирај ги резултатите според + field_sharing: Споделување + field_parent_issue: Parent task + + setting_app_title: Наслов на апликацијата + setting_app_subtitle: Поднаслов на апликацијата + setting_welcome_text: Текст за добредојде + setting_default_language: Default јазик + setting_login_required: Задолжителна автентикација + setting_self_registration: Само-регистрација + setting_attachment_max_size: Макс. големина на прилог + setting_issues_export_limit: Issues export limit + setting_mail_from: Emission email address + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_plain_text_mail: Текстуални е-пораки (без HTML) + setting_host_name: Име на хост и патека + setting_text_formatting: Форматирање на текст + setting_wiki_compression: Компресија на историјата на вики + setting_feeds_limit: Feed content limit + setting_default_projects_public: Новите проекти се иницијално јавни + setting_autofetch_changesets: Autofetch commits + setting_sys_api_enabled: Enable WS for repository management + setting_commit_ref_keywords: Referencing keywords + setting_commit_fix_keywords: Fixing keywords + setting_autologin: Автоматска најава + setting_date_format: Формат на дата + setting_time_format: Формат на време + setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти + setting_issue_list_default_columns: Default columns displayed on the issue list + setting_repositories_encodings: Repositories encodings + setting_emails_footer: Emails footer + setting_protocol: Протокол + setting_per_page_options: Objects per page options + setting_user_format: Приказ на корисниците + setting_activity_days_default: Денови прикажана во активноста на проектот + setting_display_subprojects_issues: Прикажи ги задачите на подпроектите во главните проекти + setting_enabled_scm: Овозможи SCM + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Enable WS for incoming emails + setting_mail_handler_api_key: API клуч + setting_sequential_project_identifiers: Генерирај последователни идентификатори на проекти + setting_gravatar_enabled: Користи Gravatar кориснички икони + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Max number of diff lines displayed + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Дозволи OpenID најава и регистрација + setting_password_min_length: Мин. должина на лозинка + setting_new_project_user_role_id: Улога доделена на неадминистраторски корисник кој креира проект + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + + permission_add_project: Креирај проекти + permission_add_subprojects: Креирај подпроекти + permission_edit_project: Уреди проект + permission_select_project_modules: Изберете модули за проект + permission_manage_members: Manage members + permission_manage_project_activities: Manage project activities + permission_manage_versions: Manage versions + permission_manage_categories: Manage issue categories + permission_view_issues: Прегледај задачи + permission_add_issues: Додавај задачи + permission_edit_issues: Уредувај задачи + permission_manage_issue_relations: Manage issue relations + permission_add_issue_notes: Додавај белешки + permission_edit_issue_notes: Уредувај белешки + permission_edit_own_issue_notes: Уредувај сопствени белешки + permission_move_issues: Преместувај задачи + permission_delete_issues: Бриши задачи + permission_manage_public_queries: Manage public queries + permission_save_queries: Save queries + permission_view_gantt: View gantt chart + permission_view_calendar: View calendar + permission_view_issue_watchers: View watchers list + permission_add_issue_watchers: Add watchers + permission_delete_issue_watchers: Delete watchers + permission_log_time: Бележи потрошено време + permission_view_time_entries: Прегледај потрошено време + permission_edit_time_entries: Уредувај белешки за потрошено време + permission_edit_own_time_entries: Уредувај сопствени белешки за потрошено време + permission_manage_news: Manage news + permission_comment_news: Коментирај на вести + permission_manage_documents: Manage documents + permission_view_documents: Прегледувај документи + permission_manage_files: Manage files + permission_view_files: Прегледувај датотеки + permission_manage_wiki: Manage wiki + permission_rename_wiki_pages: Преименувај вики страници + permission_delete_wiki_pages: Бриши вики страници + permission_view_wiki_pages: Прегледувај вики + permission_view_wiki_edits: Прегледувај вики историја + permission_edit_wiki_pages: Уредувај вики страници + permission_delete_wiki_pages_attachments: Бриши прилози + permission_protect_wiki_pages: Заштитувај вики страници + permission_manage_repository: Manage repository + permission_browse_repository: Browse repository + permission_view_changesets: View changesets + permission_commit_access: Commit access + permission_manage_boards: Manage boards + permission_view_messages: View messages + permission_add_messages: Post messages + permission_edit_messages: Уредувај пораки + permission_edit_own_messages: Уредувај сопствени пораки + permission_delete_messages: Бриши пораки + permission_delete_own_messages: Бриши сопствени пораки + permission_export_wiki_pages: Export wiki pages + permission_manage_subtasks: Manage subtasks + + project_module_issue_tracking: Следење на задачи + project_module_time_tracking: Следење на време + project_module_news: Вести + project_module_documents: Документи + project_module_files: Датотеки + project_module_wiki: Вики + project_module_repository: Repository + project_module_boards: Форуми + project_module_calendar: Календар + project_module_gantt: Gantt + + label_user: Корисник + label_user_plural: Корисници + label_user_new: Нов корисник + label_user_anonymous: Анонимен + label_project: Проект + label_project_new: Нов проект + label_project_plural: Проекти + label_x_projects: + zero: нема проекти + one: 1 проект + other: "%{count} проекти" + label_project_all: Сите проекти + label_project_latest: Последните проекти + label_issue: Задача + label_issue_new: Нова задача + label_issue_plural: Задачи + label_issue_view_all: Прегледај ги сите задачи + label_issues_by: "Задачи по %{value}" + label_issue_added: Задачата е додадена + label_issue_updated: Задачата е ажурирана + label_document: Документ + label_document_new: Нов документ + label_document_plural: Документи + label_document_added: Документот е додаден + label_role: Улога + label_role_plural: Улоги + label_role_new: Нова улога + label_role_and_permissions: Улоги и овластувања + label_member: Член + label_member_new: Нов член + label_member_plural: Членови + label_tracker: Tracker + label_tracker_plural: Trackers + label_tracker_new: New tracker + label_workflow: Workflow + label_issue_status: Статус на задача + label_issue_status_plural: Статуси на задачи + label_issue_status_new: Нов статус + label_issue_category: Категорија на задача + label_issue_category_plural: Категории на задачи + label_issue_category_new: Нова категорија + label_custom_field: Прилагодено поле + label_custom_field_plural: Прилагодени полиња + label_custom_field_new: Ново прилагодено поле + label_enumerations: Enumerations + label_enumeration_new: Нова вредност + label_information: Информација + label_information_plural: Информации + label_please_login: Најави се + label_register: Регистрирај се + label_login_with_open_id_option: или најави се со OpenID + label_password_lost: Изгубена лозинка + label_home: Почетна + label_home_heading: Почетна + label_my_page: Мојата страна + label_my_account: Мојот профил + label_my_projects: Мои проекти + label_my_page_block: Блок елемент + label_administration: Администрација + label_login: Најави се + label_logout: Одјави се + label_help: Помош + label_reported_issues: Пријавени задачи + label_assigned_to_me_issues: Задачи доделени на мене + label_last_login: Последна најава + label_registered_on: Регистриран на + label_activity: Активност + label_overall_activity: Севкупна активност + label_user_activity: "Активност на %{value}" + label_new: Нова + label_logged_as: Најавени сте како + label_environment: Опкружување + label_authentication: Автентикација + label_auth_source: Режим на автентикација + label_auth_source_new: Нов режим на автентикација + label_auth_source_plural: Режими на автентикација + label_subproject_plural: Подпроекти + label_subproject_new: Нов подпроект + label_and_its_subprojects: "%{value} и неговите подпроекти" + label_min_max_length: Мин. - Макс. должина + label_list: Листа + label_date: Дата + label_integer: Integer + label_float: Float + label_boolean: Boolean + label_string: Текст + label_text: Долг текст + label_attribute: Атрибут + label_attribute_plural: Атрибути + label_download: "%{count} превземање" + label_download_plural: "%{count} превземања" + label_no_data: Нема податоци за прикажување + label_change_status: Промени статус + label_history: Историја + label_attachment: Датотека + label_attachment_new: Нова датотека + label_attachment_delete: Избриши датотека + label_attachment_plural: Датотеки + label_file_added: Датотеката е додадена + label_report: Извештај + label_report_plural: Извештаи + label_news: Новост + label_news_new: Додади новост + label_news_plural: Новости + label_news_latest: Последни новости + label_news_view_all: Прегледај ги сите новости + label_news_added: Новостта е додадена + label_settings: Settings + label_overview: Преглед + label_version: Верзија + label_version_new: Нова верзија + label_version_plural: Верзии + label_close_versions: Затвори ги завршените врзии + label_confirmation: Потврда + label_export_to: 'Достапно и во:' + label_read: Прочитај... + label_public_projects: Јавни проекти + label_open_issues: отворена + label_open_issues_plural: отворени + label_closed_issues: затворена + label_closed_issues_plural: затворени + label_x_open_issues_abbr_on_total: + zero: 0 отворени / %{total} + one: 1 отворена / %{total} + other: "%{count} отворени / %{total}" + label_x_open_issues_abbr: + zero: 0 отворени + one: 1 отворена + other: "%{count} отворени" + label_x_closed_issues_abbr: + zero: 0 затворени + one: 1 затворена + other: "%{count} затворени" + label_total: Вкупно + label_permissions: Овластувања + label_current_status: Моментален статус + label_new_statuses_allowed: Дозволени нови статуси + label_all: сите + label_none: ниеден + label_nobody: никој + label_next: Следно + label_previous: Претходно + label_used_by: Користено од + label_details: Детали + label_add_note: Додади белешка + label_per_page: По страна + label_calendar: Календар + label_months_from: месеци од + label_gantt: Gantt + label_internal: Internal + label_last_changes: "последни %{count} промени" + label_change_view_all: Прегледај ги сите промени + label_personalize_page: Прилагоди ја странава + label_comment: Коментар + label_comment_plural: Коментари + label_x_comments: + zero: нема коментари + one: 1 коментар + other: "%{count} коментари" + label_comment_add: Додади коментар + label_comment_added: Коментарот е додаден + label_comment_delete: Избриши коментари + label_query: Custom query + label_query_plural: Custom queries + label_query_new: New query + label_filter_add: Додади филтер + label_filter_plural: Филтри + label_equals: е + label_not_equals: не е + label_in_less_than: за помалку од + label_in_more_than: за повеќе од + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: во + label_today: денес + label_all_time: цело време + label_yesterday: вчера + label_this_week: оваа недела + label_last_week: минатата недела + label_last_n_days: "последните %{count} дена" + label_this_month: овој месец + label_last_month: минатиот месец + label_this_year: оваа година + label_date_range: Date range + label_less_than_ago: пред помалку од денови + label_more_than_ago: пред повеќе од денови + label_ago: пред денови + label_contains: содржи + label_not_contains: не содржи + label_day_plural: денови + label_repository: Складиште + label_repository_plural: Складишта + label_browse: Прелистувај + label_modification: "%{count} промени" + label_modification_plural: "%{count} промени" + label_branch: Гранка + label_tag: Tag + label_revision: Ревизија + label_revision_plural: Ревизии + label_revision_id: "Ревизија %{value}" + label_associated_revisions: Associated revisions + label_added: added + label_modified: modified + label_copied: copied + label_renamed: renamed + label_deleted: deleted + label_latest_revision: Последна ревизија + label_latest_revision_plural: Последни ревизии + label_view_revisions: Прегледај ги ревизиите + label_view_all_revisions: Прегледај ги сите ревизии + label_max_size: Макс. големина + label_sort_highest: Премести најгоре + label_sort_higher: Премести нагоре + label_sort_lower: Премести надоле + label_sort_lowest: Премести најдоле + label_roadmap: Roadmap + label_roadmap_due_in: "Due in %{value}" + label_roadmap_overdue: "Касни %{value}" + label_roadmap_no_issues: Нема задачи за оваа верзија + label_search: Барај + label_result_plural: Резултати + label_all_words: Сите зборови + label_wiki: Вики + label_wiki_edit: Вики уредување + label_wiki_edit_plural: Вики уредувања + label_wiki_page: Вики страница + label_wiki_page_plural: Вики страници + label_index_by_title: Индекс по наслов + label_index_by_date: Индекс по дата + label_current_version: Current version + label_preview: Preview + label_feed_plural: Feeds + label_changes_details: Детали за сите промени + label_issue_tracking: Следење на задачи + label_spent_time: Потрошено време + label_overall_spent_time: Вкупно потрошено време + label_f_hour: "%{value} час" + label_f_hour_plural: "%{value} часа" + label_time_tracking: Следење на време + label_change_plural: Промени + label_statistics: Статистики + label_commits_per_month: Commits per month + label_commits_per_author: Commits per author + label_view_diff: View differences + label_diff_inline: inline + label_diff_side_by_side: side by side + label_options: Опции + label_copy_workflow_from: Copy workflow from + label_permissions_report: Permissions report + label_watched_issues: Watched issues + label_related_issues: Поврзани задачи + label_applied_status: Applied status + label_loading: Loading... + label_relation_new: Нова релација + label_relation_delete: Избриши релација + label_relates_to: related to + label_duplicates: дупликати + label_duplicated_by: duplicated by + label_blocks: blocks + label_blocked_by: блокирано од + label_precedes: претходи + label_follows: следи + label_end_to_start: крај до почеток + label_end_to_end: крај до крај + label_start_to_start: почеток до почеток + label_start_to_end: почеток до крај + label_stay_logged_in: Останете најавени + label_disabled: disabled + label_show_completed_versions: Show completed versions + label_me: јас + label_board: Форум + label_board_new: Нов форум + label_board_plural: Форуми + label_board_locked: Заклучен + label_board_sticky: Sticky + label_topic_plural: Теми + label_message_plural: Пораки + label_message_last: Последна порака + label_message_new: Нова порака + label_message_posted: Поракате е додадена + label_reply_plural: Одговори + label_send_information: Испрати ги информациите за профилот на корисникот + label_year: Година + label_month: Месец + label_week: Недела + label_date_from: Од + label_date_to: До + label_language_based: Според јазикот на корисникот + label_sort_by: "Подреди според %{value}" + label_send_test_email: Испрати тест е-порака + label_feeds_access_key: RSS клуч за пристап + label_missing_feeds_access_key: Недостика RSS клуч за пристап + label_feeds_access_key_created_on: "RSS клучот за пристап креиран пред %{value}" + label_module_plural: Модули + label_added_time_by: "Додадено од %{author} пред %{age}" + label_updated_time_by: "Ажурирано од %{author} пред %{age}" + label_updated_time: "Ажурирано пред %{value}" + label_jump_to_a_project: Префрли се на проект... + label_file_plural: Датотеки + label_changeset_plural: Changesets + label_default_columns: Основни колони + label_no_change_option: (Без промена) + label_bulk_edit_selected_issues: Групно уредување на задачи + label_theme: Тема + label_default: Default + label_search_titles_only: Пребарувај само наслови + label_user_mail_option_all: "За било кој настан во сите мои проекти" + label_user_mail_option_selected: "За било кој настан само во избраните проекти..." + label_user_mail_no_self_notified: "Не ме известувај за промените што јас ги правам" + label_registration_activation_by_email: активација на профил преку е-пошта + label_registration_manual_activation: мануелна активација на профил + label_registration_automatic_activation: автоматска активација на профил + label_display_per_page: "По страна: %{value}" + label_age: Age + label_change_properties: Change properties + label_general: Општо + label_more: Повеќе + label_scm: SCM + label_plugins: Додатоци + label_ldap_authentication: LDAP автентикација + label_downloads_abbr: Превземања + label_optional_description: Опис (незадолжително) + label_add_another_file: Додади уште една датотека + label_preferences: Preferences + label_chronological_order: Во хронолошки ред + label_reverse_chronological_order: In reverse chronological order + label_planning: Планирање + label_incoming_emails: Дојдовни е-пораки + label_generate_key: Генерирај клуч + label_issue_watchers: Watchers + label_example: Пример + label_display: Прикажи + label_sort: Подреди + label_ascending: Растечки + label_descending: Опаѓачки + label_date_from_to: Од %{start} до %{end} + label_wiki_content_added: Вики страница додадена + label_wiki_content_updated: Вики страница ажурирана + label_group: Група + label_group_plural: Групи + label_group_new: Нова група + label_time_entry_plural: Потрошено време + label_version_sharing_none: Не споделено + label_version_sharing_descendants: Со сите подпроекти + label_version_sharing_hierarchy: Со хиерархијата на проектот + label_version_sharing_tree: Со дрвото на проектот + label_version_sharing_system: Со сите проекти + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Извор + label_copy_target: Дестинација + label_copy_same_as_target: Исто како дестинацијата + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API клуч за пристап + label_missing_api_access_key: Недостига API клуч за пристап + label_api_access_key_created_on: "API клучот за пристап е креиран пред %{value}" + label_profile: Профил + label_subtask_plural: Подзадачи + label_project_copy_notifications: Праќај известувања по е-пошта при копирање на проект + + button_login: Најави се + button_submit: Испрати + button_save: Зачувај + button_check_all: Штиклирај ги сите + button_uncheck_all: Одштиклирај ги сите + button_delete: Избриши + button_create: Креирај + button_create_and_continue: Креирај и продолжи + button_test: Тест + button_edit: Уреди + button_add: Додади + button_change: Промени + button_apply: Примени + button_clear: Избриши + button_lock: Заклучи + button_unlock: Отклучи + button_download: Превземи + button_list: List + button_view: Прегледај + button_move: Премести + button_move_and_follow: Премести и следи + button_back: Back + button_cancel: Откажи + button_activate: Активирај + button_sort: Подреди + button_log_time: Бележи време + button_rollback: Rollback to this version + button_watch: Следи + button_unwatch: Не следи + button_reply: Одговори + button_archive: Архивирај + button_unarchive: Одархивирај + button_reset: Reset + button_rename: Преименувај + button_change_password: Промени лозинка + button_copy: Копирај + button_copy_and_follow: Копирај и следи + button_annotate: Annotate + button_update: Ажурирај + button_configure: Конфигурирај + button_quote: Цитирај + button_duplicate: Копирај + button_show: Show + + status_active: активни + status_registered: регистрирани + status_locked: заклучени + + version_status_open: отворени + version_status_locked: заклучени + version_status_closed: затворени + + field_active: Active + + text_select_mail_notifications: Изберете за кои настани да се праќаат известувања по е-пошта да се праќаат. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 значи без ограничување + text_project_destroy_confirmation: Дали сте сигурни дека сакате да го избришете проектот и сите поврзани податоци? + text_subprojects_destroy_warning: "Неговите подпроекти: %{value} исто така ќе бидат избришани." + text_workflow_edit: Select a role and a tracker to edit the workflow + text_are_you_sure: Дали сте сигурни? + text_journal_changed: "%{label} променето од %{old} во %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} избришан (%{old})" + text_journal_added: "%{label} %{value} додаден" + text_tip_issue_begin_day: задачи што почнуваат овој ден + text_tip_issue_end_day: задачи што завршуваат овој ден + text_tip_issue_begin_end_day: задачи што почнуваат и завршуваат овој ден + text_project_identifier_info: 'Само мали букви (a-z), бројки и dashes се дозволени
    По зачувувањето, идентификаторот неможе да се смени.' + text_caracters_maximum: "%{count} знаци максимум." + text_caracters_minimum: "Мора да е најмалку %{count} знаци долго." + text_length_between: "Должина помеѓу %{min} и %{max} знаци." + text_tracker_no_workflow: No workflow defined for this tracker + text_unallowed_characters: Недозволени знаци + text_comma_separated: Дозволени се повеќе вредности (разделени со запирка). + text_line_separated: Дозволени се повеќе вредности (една линија за секоја вредност). + text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages + text_issue_added: "Задачата %{id} е пријавена од %{author}." + text_issue_updated: "Задачата %{id} е ажурирана од %{author}." + text_wiki_destroy_confirmation: Дали сте сигурни дека сакате да го избришете ова вики и целата негова содржина? + text_issue_category_destroy_question: "Некои задачи (%{count}) се доделени на оваа категорија. Што сакате да правите?" + text_issue_category_destroy_assignments: Remove category assignments + text_issue_category_reassign_to: Додели ги задачите на оваа категорија + text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." + text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_load_default_configuration: Load the default configuration + text_status_changed_by_changeset: "Applied in changeset %{value}." + text_issues_destroy_confirmation: 'Дали сте сигурни дека сакате да ги избришете избраните задачи?' + text_select_project_modules: 'Изберете модули за овој проект:' + text_default_administrator_account_changed: Default administrator account changed + text_file_repository_writable: Во папката за прилози може да се запишува + text_plugin_assets_writable: Во папката за додатоци може да се запишува + text_rmagick_available: RMagick available (незадолжително) + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?" + text_destroy_time_entries: Delete reported hours + text_assign_time_entries_to_project: Додели ги пријавените часови на проектот + text_reassign_time_entries: 'Reassign reported hours to this issue:' + text_user_wrote: "%{value} напиша:" + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/configuration.yml и рестартирајте ја апликацијата." + text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." + text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + text_zoom_in: Zoom in + text_zoom_out: Zoom out + + default_role_manager: Менаџер + default_role_developer: Developer + default_role_reporter: Reporter + default_tracker_bug: Грешка + default_tracker_feature: Функционалност + default_tracker_support: Поддршка + default_issue_status_new: Нова + default_issue_status_in_progress: Во прогрес + default_issue_status_resolved: Разрешена + default_issue_status_feedback: Feedback + default_issue_status_closed: Затворена + default_issue_status_rejected: Одбиена + default_doc_category_user: Корисничка документација + default_doc_category_tech: Техничка документација + default_priority_low: Низок + default_priority_normal: Нормален + default_priority_high: Висок + default_priority_urgent: Итно + default_priority_immediate: Веднаш + default_activity_design: Дизајн + default_activity_development: Развој + + enumeration_issue_priorities: Приоритети на задача + enumeration_doc_categories: Категории на документ + enumeration_activities: Активности (следење на време) + enumeration_system_activity: Системска активност + + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/mn.yml --- a/config/locales/mn.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/mn.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,944 +1,980 @@ -mn: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%Y/%m/%d" - short: "%b %d" - long: "%Y, %B %d" - - day_names: [Даваа, Мягмар, Лхагва, Пүрэв, Баасан, Бямба, Ням] - abbr_day_names: [Дав, Мяг, Лха, Пүр, Бсн, Бям, Ням] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, 1-р сар, 2-р сар, 3-р сар, 4-р сар, 5-р сар, 6-р сар, 7-р сар, 8-р сар, 9-р сар, 10-р сар, 11-р сар, 12-р сар] - abbr_month_names: [~, 1сар, 2сар, 3сар, 4сар, 5сар, 6сар, 7сар, 8сар, 9сар, 10сар, 11сар, 12сар] - # Used in date_select and datime_select. - order: [ :day, :month, :year ] - - time: - formats: - default: "%Y/%m/%d %I:%M %p" - time: "%I:%M %p" - short: "%d %b %H:%M" - long: "%Y, %B %d %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "хагас минут" - less_than_x_seconds: - one: "секунд орчим" - other: "%{count} секундээс бага хугацаа" - x_seconds: - one: "1 секунд" - other: "%{count} секунд" - less_than_x_minutes: - one: "минутаас бага хугацаа" - other: "%{count} минутаас бага хугацаа" - x_minutes: - one: "1 минут" - other: "%{count} минут" - about_x_hours: - one: "1 цаг орчим" - other: "ойролцоогоор %{count} цаг" - x_days: - one: "1 өдөр" - other: "%{count} өдөр" - about_x_months: - one: "1 сар орчим" - other: "ойролцоогоор %{count} сар" - x_months: - one: "1 сар" - other: "%{count} сар" - about_x_years: - one: "ойролцоогоор 1 жил" - other: "ойролцоогоор %{count} жил" - over_x_years: - one: "1 жилээс их" - other: "%{count} жилээс их" - almost_x_years: - one: "бараг 1 жил" - other: "бараг %{count} жил" - - number: - format: - separator: "." - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Байт" - other: "Байт" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "бас" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "жагсаалтад заагдаагүй байна" - exclusion: "нөөцлөгдсөн" - invalid: "буруу" - confirmation: "баталгаажсан өгөгдөлтэй таарахгүй байна" - accepted: "хүлээж авах ёстой" - empty: "хоосон байж болохгүй" - blank: "бланк байж болохгүй" - too_long: "дэндүү урт байна (хамгийн ихдээ %{count} тэмдэгт)" - too_short: "дэндүү богино байна (хамгийн багадаа %{count} тэмдэгт)" - wrong_length: "буруу урттай байна (заавал %{count} тэмдэгт)" - taken: "аль хэдийнэ авсан байна" - not_a_number: "тоо биш байна" - not_a_date: "зөв огноо биш байна" - greater_than: "%{count} их байх ёстой" - greater_than_or_equal_to: "must be greater than or equal to %{count}" - equal_to: "must be equal to %{count}" - less_than: "must be less than %{count}" - less_than_or_equal_to: "must be less than or equal to %{count}" - odd: "заавал сондгой" - even: "заавал тэгш" - greater_than_start_date: "must be greater than start date" - not_same_project: "нэг ижил төсөлд хамаарахгүй байна" - circular_dependency: "Энэ харьцаа нь гинжин(рекурсив) харьцаа үүсгэх юм байна" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" - - actionview_instancetag_blank_option: Сонгоно уу - - general_text_No: 'Үгүй' - general_text_Yes: 'Тийм' - general_text_no: 'үгүй' - general_text_yes: 'тийм' - general_lang_name: 'Mongolian (Монгол)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '7' - - notice_account_updated: Дансыг амжилттай өөрчиллөө. - notice_account_invalid_creditentials: Хэрэглэгчийн нэр эсвэл нууц үг буруу байна - notice_account_password_updated: Нууц үгийг амжилттай өөрчиллөө. - notice_account_wrong_password: Буруу нууц үг - notice_account_register_done: Шинэ хэрэглэгч амжилттай үүсгэлээ. Идэвхжүүлэхийн тулд, бидний тань луу илгээсэн мэйл дотор байгаа холбоос дээр дараарай. - notice_account_unknown_email: Үл мэдэгдэх хэрэглэгч. - notice_can_t_change_password: Энэ эрх гадаад нэвтрэлтэд ашигладаг учраас нууц үгийг өөрчлөх боломжгүй. - notice_account_lost_email_sent: Бид таньд мэйлээр нууц үгээ өөрчлөх зааврыг илгээсэн байгаа. - notice_account_activated: Таны данс идэвхжлээ. Одоо нэвтэрч орж болно. - notice_successful_create: Амжилттай үүсгэлээ. - notice_successful_update: Амжилттай өөрчиллөө. - notice_successful_delete: Амжилттай устгалаа. - notice_successful_connection: Амжилттай холбогдлоо. - notice_file_not_found: Таны үзэх гэсэн хуудас байхгүй юмуу устгагдсан байна. - notice_locking_conflict: Өгөгдлийг өөр хүн өөрчилсөн байна. - notice_not_authorized: Танд энэ хуудсыг үзэх эрх байхгүй байна. - notice_email_sent: "%{value} - руу мэйл илгээлээ" - notice_email_error: "Мэйл илгээхэд алдаа гарлаа (%{value})" - notice_feeds_access_key_reseted: Таны RSS хандалтын түлхүүрийг дахин эхлүүллээ. - notice_api_access_key_reseted: Your API access key was reset. - notice_failed_to_save_issues: "%{total} асуудал сонгогдсоноос %{count} асуудлыг нь хадгалахад алдаа гарлаа: %{ids}." - notice_no_issue_selected: "Ямар ч асуудал сонгогдоогүй байна! Засварлах асуудлуудаа сонгоно уу." - notice_account_pending: "Таны дансыг үүсгэж дууслаа, администратор баталгаажуулах хүртэл хүлээнэ үү." - notice_default_data_loaded: Стандарт тохиргоог амжилттай ачааллаа. - notice_unable_delete_version: Хувилбарыг устгах боломжгүй. - notice_issue_done_ratios_updated: Issue done ratios updated. - - error_can_t_load_default_data: "Стандарт тохиргоог ачаалж чадсангүй: %{value}" - error_scm_not_found: "Repository дотор тухайн бичлэг эсвэл хувилбарыг олсонгүй." - error_scm_command_failed: "Repository-д хандахад алдаа гарлаа: %{value}" - error_scm_annotate: "Бичлэг байхгүй байна, эсвэл бичлэгт тайлбар хавсаргаж болохгүй." - error_issue_not_found_in_project: 'Сонгосон асуудал энэ төсөлд хамаардаггүй юм уу эсвэл системд байхгүй байна.' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - - warning_attachments_not_saved: "%{count} file(s) файлыг хадгалж чадсангүй." - - mail_subject_lost_password: "Таны %{value} нууц үг" - mail_body_lost_password: 'Нууц үгээ өөрчлөхийн тулд доорх холбоос дээр дарна уу:' - mail_subject_register: "Таны %{value} дансыг идэвхжүүлэх" - mail_body_register: 'Дансаа идэвхжүүлэхийн тулд доорх холбоос дээр дарна уу:' - mail_body_account_information_external: "Та өөрийнхөө %{value} дансыг ашиглаж холбогдож болно." - mail_body_account_information: Таны дансны тухай мэдээлэл - mail_subject_account_activation_request: "%{value} дансыг идэвхжүүлэх хүсэлт" - mail_body_account_activation_request: "Шинэ хэрэглэгч (%{value}) бүртгүүлсэн байна. Таны баталгаажуулахыг хүлээж байна:" - mail_subject_reminder: "Дараагийн өдрүүдэд %{count} асуудлыг шийдэх хэрэгтэй (%{days})" - mail_body_reminder: "Танд оноогдсон %{count} асуудлуудыг дараагийн %{days} өдрүүдэд шийдэх хэрэгтэй:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 алдаа - gui_validation_error_plural: "%{count} алдаа" - - field_name: Нэр - field_description: Тайлбар - field_summary: Дүгнэлт - field_is_required: Зайлшгүй - field_firstname: Таны нэр - field_lastname: Овог - field_mail: Имэйл - field_filename: Файл - field_filesize: Хэмжээ - field_downloads: Татаж авах зүйлс - field_author: Зохиогч - field_created_on: Үүссэн - field_updated_on: Өөрчилсөн - field_field_format: Формат - field_is_for_all: Бүх төслийн хувьд - field_possible_values: Боломжтой утгууд - field_regexp: Энгийн илэрхийлэл - field_min_length: Минимум урт - field_max_length: Максимум урт - field_value: Утга - field_category: Төрөл - field_title: Гарчиг - field_project: Төсөл - field_issue: Асуудал - field_status: Төлөв - field_notes: Тэмдэглэлүүд - field_is_closed: Асуудал хаагдсан - field_is_default: Стандарт утга - field_tracker: Чиглэл - field_subject: Гарчиг - field_due_date: Дуусах огноо - field_assigned_to: Оноогдсон - field_priority: Зэрэглэл - field_fixed_version: Хувилбар - field_user: Хэрэглэгч - field_role: Хандалтын эрх - field_homepage: Нүүр хуудас - field_is_public: Олон нийтийн - field_parent: Эцэг төсөл нь - field_is_in_roadmap: Асуудлуудыг явцын зураг дээр харуулах - field_login: Нэвтрэх нэр - field_mail_notification: Имэйл мэдэгдлүүд - field_admin: Администратор - field_last_login_on: Сүүлийн холбоо - field_language: Хэл - field_effective_date: Огноо - field_password: Нууц үг - field_new_password: Шннэ нууц үг - field_password_confirmation: Баталгаажуулах - field_version: Хувилбар - field_type: Төрөл - field_host: Хост - field_port: Порт - field_account: Данс - field_base_dn: Үндсэн ДН - field_attr_login: Нэвтрэх аттрибут - field_attr_firstname: Таны нэр аттрибут - field_attr_lastname: Овог аттрибут - field_attr_mail: Имэйл аттрибут - field_onthefly: Хүссэн үедээ хэрэглэгч үүсгэх - field_start_date: Эхлэл - field_done_ratio: %% Гүйцэтгэсэн - field_auth_source: Нэвтрэх арга - field_hide_mail: Миний имэйл хаягийг нуу - field_comments: Тайлбар - field_url: URL Хаяг - field_start_page: Тэргүүн хуудас - field_subproject: Дэд төсөл - field_hours: Цаг - field_activity: Үйл ажиллагаа - field_spent_on: Огноо - field_identifier: Төслийн глобал нэр - field_is_filter: Шүүлтүүр болгон хэрэглэгддэг - field_issue_to: Хамаатай асуудал - field_delay: Хоцролт - field_assignable: Энэ хандалтын эрхэд асуудлуудыг оноож өгч болно - field_redirect_existing_links: Байгаа холбоосуудыг дахин чиглүүлэх - field_estimated_hours: Барагцаалсан цаг - field_column_names: Баганууд - field_time_zone: Цагын бүс - field_searchable: Хайж болох - field_default_value: Стандарт утга - field_comments_sorting: Тайлбаруудыг харуул - field_parent_title: Эцэг хуудас - field_editable: Засварлагдана - field_watcher: Харна - field_identity_url: OpenID URL - field_content: Агуулга - field_group_by: Үр дүнгээр бүлэглэх - field_sharing: Sharing - - setting_app_title: Программын гарчиг - setting_app_subtitle: Программын дэд гарчиг - setting_welcome_text: Мэндчилгээ - setting_default_language: Стандарт хэл - setting_login_required: Нэвтрэх шаардлагатай - setting_self_registration: Өөрийгөө бүртгүүлэх - setting_attachment_max_size: Хавсралт файлын дээд хэмжээ - setting_issues_export_limit: Асуудал экспортлох хязгаар - setting_mail_from: Ямар имэйл хаяг үүсгэх - setting_bcc_recipients: BCC талбарын хаягууд (bcc) - setting_plain_text_mail: дан текст мэйл (HTML биш) - setting_host_name: Хостын нэр болон зам - setting_text_formatting: Текст хэлбэржүүлэлт - setting_wiki_compression: Вики хуудсуудын түүх дээр шахалт хийх - setting_feeds_limit: Фийд агуулгын хязгаар - setting_default_projects_public: Шинэ төслүүд автоматаар олон нийтийнх байна - setting_autofetch_changesets: Комитуудыг автоматаар татаж авах - setting_sys_api_enabled: Репозитори менежментэд зориулан WS-ийг идэвхжүүлэх - setting_commit_ref_keywords: Хамааруулах түлхүүр үгс - setting_commit_fix_keywords: Зоолттой түлхүүр үгс - setting_autologin: Компьютер дээр санах - setting_date_format: Огнооны формат - setting_time_format: Цагийн формат - setting_cross_project_issue_relations: Төсөл хооронд асуудал хамааруулахыг зөвшөөрөх - setting_issue_list_default_columns: Асуудлуудыг харуулах стандарт баганууд - setting_repositories_encodings: Репозиторийн энкодинг - setting_commit_logs_encoding: Коммит хийх үед харуулах текстүүдийн энкодинг - setting_emails_footer: Имэйлүүдийн хөл хэсэг - setting_protocol: Протокол - setting_per_page_options: Нэг хуудсанд байх обьектуудын тохиргоо - setting_user_format: Хэрэглэгчдийг харуулах формат - setting_activity_days_default: Төслийн үйл ажиллагаа хэсэгт үзүүлэх өдрийн тоо - setting_display_subprojects_issues: Дэд төслүүдийн асуудлуудыг автоматаар гол төсөл дээр харуулах - setting_enabled_scm: SCM - ийг идэвхжүүлэх - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Ирсэн мэйлүүдийн хувьд WS-ийг идэвхжүүлэх - setting_mail_handler_api_key: API түлхүүр - setting_sequential_project_identifiers: Дэс дараалсан төслийн глобал нэр үүсгэж байх - setting_gravatar_enabled: Gravatar дүрсүүдийг хэрэглэгчдэд хэрэглэж байх - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Ялгаатай мөрүүдийн тоо (дээд тал нь) - setting_file_max_size_displayed: Max size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Allow OpenID login and registration - setting_password_min_length: Minimum password length - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - - permission_add_project: Create project - permission_add_subprojects: Create subprojects - permission_edit_project: Төслийг засварлах - permission_select_project_modules: Төслийн модулуудийг сонгоно уу - permission_manage_members: Системийн хэрэглэгчид - permission_manage_project_activities: Manage project activities - permission_manage_versions: Хувилбарууд - permission_manage_categories: Асуудлын ангиллууд - permission_view_issues: Асуудлуудыг харах - permission_add_issues: Асуудлууд нэмэх - permission_edit_issues: Асуудлуудыг засварлах - permission_manage_issue_relations: Асуудлын хамаарлыг зохицуулах - permission_add_issue_notes: Тэмдэглэл нэмэх - permission_edit_issue_notes: Тэмдэглэлүүд засварлах - permission_edit_own_issue_notes: Өөрийн үлдээсэн тэмдэглэлүүдийг засварлах - permission_move_issues: Асуудлуудыг зөөх - permission_delete_issues: Асуудлуудыг устгах - permission_manage_public_queries: Олон нийтийн асуултууд - permission_save_queries: Асуултуудыг хадгалах - permission_view_gantt: Гант диаграмыг үзэх - permission_view_calendar: Календарь үзэх - permission_view_issue_watchers: Ажиглагчдын жагсаалтыг харах - permission_add_issue_watchers: Ажиглагчид нэмэх - permission_delete_issue_watchers: Ажиглагчдыг устгах - permission_log_time: Зарцуулсан хугацааг лог хийх - permission_view_time_entries: Зарцуулсан хугацааг харах - permission_edit_time_entries: Хугацааны логуудыг засварлах - permission_edit_own_time_entries: Өөрийн хугацааны логуудыг засварлах - permission_manage_news: Мэдээ мэдээллүүд - permission_comment_news: Мэдээнд тайлбар үлдээх - permission_manage_documents: Бичиг баримтууд - permission_view_documents: Бичиг баримтуудыг харах - permission_manage_files: Файлууд - permission_view_files: Файлуудыг харах - permission_manage_wiki: Вики удирдах - permission_rename_wiki_pages: Вики хуудсуудыг дахиж нэрлэх - permission_delete_wiki_pages: Вики хуудсуудыг устгах - permission_view_wiki_pages: Вики үзэх - permission_view_wiki_edits: Вики түүх үзэх - permission_edit_wiki_pages: Вики хуудсуудыг засварлах - permission_delete_wiki_pages_attachments: Хавсралтуудыг устгах - permission_protect_wiki_pages: Вики хуудсуудыг хамгаалах - permission_manage_repository: Репозитори - permission_browse_repository: Репозиторийг үзэх - permission_view_changesets: Өөрчлөлтүүдийг харах - permission_commit_access: Коммит хандалт - permission_manage_boards: Самбарууд - permission_view_messages: Зурвасуудыг харах - permission_add_messages: Зурвас илгээх - permission_edit_messages: Зурвасуудыг засварлах - permission_edit_own_messages: Өөрийн зурвасуудыг засварлах - permission_delete_messages: Зурвасуудыг устгах - permission_delete_own_messages: Өөрийн зурвасуудыг устгах - permission_export_wiki_pages: Вики хуудсуудыг экспорт хийх - - project_module_issue_tracking: Асуудал хянах - project_module_time_tracking: Хугацаа хянах - project_module_news: Мэдээ мэдээллүүд - project_module_documents: Бичиг баримтууд - project_module_files: Файлууд - project_module_wiki: Вики - project_module_repository: Репозитори - project_module_boards: Самбарууд - - label_user: Хэрэглэгч - label_user_plural: Хэрэглэгчид - label_user_new: Шинэ хэрэглэгч - label_user_anonymous: Хамаагүй хэрэглэгч - label_project: Төсөл - label_project_new: Шинэ төсөл - label_project_plural: Төслүүд - label_x_projects: - zero: төсөл байхгүй - one: 1 төсөл - other: "%{count} төслүүд" - label_project_all: Бүх Төслүүд - label_project_latest: Сүүлийн үеийн төслүүд - label_issue: Асуудал - label_issue_new: Шинэ асуудал - label_issue_plural: Асуудлууд - label_issue_view_all: Бүх асуудлуудыг харах - label_issues_by: "%{value} - н асуудлууд" - label_issue_added: Асуудал нэмэгдлээ - label_issue_updated: Асуудал өөрчлөгдлөө - label_document: Бичиг баримт - label_document_new: Шинэ бичиг баримт - label_document_plural: Бичиг баримтууд - label_document_added: Бичиг баримт нэмэгдлээ - label_role: Хандалтын эрх - label_role_plural: Хандалтын эрхүүд - label_role_new: Шинэ хандалтын эрх - label_role_and_permissions: Хандалтын эрхүүд болон зөвшөөрлүүд - label_member: Гишүүн - label_member_new: Шинэ гишүүн - label_member_plural: Гишүүд - label_tracker: Чиглэл - label_tracker_plural: Чиглэлүүд - label_tracker_new: Шинэ чиглэл - label_workflow: Ажлын дараалал - label_issue_status: Асуудлын төлөв - label_issue_status_plural: Асуудлын төлвүүд - label_issue_status_new: Шинэ төлөв - label_issue_category: Асуудлын ангилал - label_issue_category_plural: Асуудлын ангиллууд - label_issue_category_new: Шинэ ангилал - label_custom_field: Хэрэглэгчийн тодорхойлсон талбар - label_custom_field_plural: Хэрэглэгчийн тодорхойлсон талбарууд - label_custom_field_new: Шинээр хэрэглэгчийн тодорхойлсон талбар үүсгэх - label_enumerations: Ангиллууд - label_enumeration_new: Шинэ утга - label_information: Мэдээлэл - label_information_plural: Мэдээллүүд - label_please_login: Нэвтэрч орно уу - label_register: Бүртгүүлэх - label_login_with_open_id_option: or login with OpenID - label_password_lost: Нууц үгээ алдсан - label_home: Нүүр - label_home_heading: Нүүр - label_my_page: Миний хуудас - label_my_account: Миний данс - label_my_projects: Миний төслүүд - label_administration: Админ хэсэг - label_login: Нэвтрэх - label_logout: Гарах - label_help: Тусламж - label_reported_issues: Мэдэгдсэн асуудлууд - label_assigned_to_me_issues: Надад оноогдсон асуудлууд - label_last_login: Сүүлийн холболт - label_registered_on: Бүртгүүлсэн огноо - label_activity: Үйл ажиллагаа - label_overall_activity: Ерөнхий үйл ажиллагаа - label_user_activity: "%{value}-ийн үйл ажиллагаа" - label_new: Шинэ - label_logged_as: Холбогдсон нэр - label_environment: Орчин - label_authentication: Нэвтрэх - label_auth_source: Нэвтрэх арга - label_auth_source_new: Шинэ нэвтрэх арга - label_auth_source_plural: Нэвтрэх аргууд - label_subproject_plural: Дэд төслүүд - label_subproject_new: Шинэ дэд төсөл - label_and_its_subprojects: "%{value} болон холбогдох дэд төслүүд" - label_min_max_length: Дээд - Доод урт - label_list: Жагсаалт - label_date: Огноо - label_integer: Бүхэл тоо - label_float: Бутархай тоо - label_boolean: Үнэн худал утга - label_string: Текст - label_text: Урт текст - label_attribute: Аттрибут - label_attribute_plural: Аттрибутууд - label_download: "%{count} Татаж авсан зүйл" - label_download_plural: "%{count} Татаж авсан зүйлс" - label_no_data: Үзүүлэх өгөгдөл байхгүй байна - label_change_status: Төлвийг өөрчлөх - label_history: Түүх - label_attachment: Файл - label_attachment_new: Шинэ файл - label_attachment_delete: Файл устгах - label_attachment_plural: Файлууд - label_file_added: Файл нэмэгдлээ - label_report: Тайлан - label_report_plural: Тайлангууд - label_news: Мэдээ - label_news_new: Шинэ мэдээ - label_news_plural: Мэдээ - label_news_latest: Сүүлийн үеийн мэдээнүүд - label_news_view_all: Бүх мэдээг харах - label_news_added: Мэдээ нэмэгдлээ - label_change_log: Өөрчлөлтийн лог - label_settings: Тохиргоо - label_overview: Эхлэл - label_version: Хувилбар - label_version_new: Шинэ хувилбар - label_version_plural: Хувилбарууд - label_close_versions: Гүйцэт хувилбаруудыг хаалаа - label_confirmation: Баталгаажуулах - label_export_to: 'Өөр авч болох формат:' - label_read: Унших... - label_public_projects: Олон нийтийн төслүүд - label_open_issues: нээлттэй - label_open_issues_plural: нээлттэй - label_closed_issues: хаалттай - label_closed_issues_plural: хаалттай - label_x_open_issues_abbr_on_total: - zero: 0 нээлттэй / %{total} - one: 1 нээлттэй / %{total} - other: "%{count} нээлттэй / %{total}" - label_x_open_issues_abbr: - zero: 0 нээлттэй - one: 1 нээлттэй - other: "%{count} нээлттэй" - label_x_closed_issues_abbr: - zero: 0 хаалттай - one: 1 хаалттай - other: "%{count} хаалттай" - label_total: Нийт - label_permissions: Зөвшөөрлүүд - label_current_status: Одоогийн төлөв - label_new_statuses_allowed: Шинээр олгож болох төлвүүд - label_all: бүгд - label_none: хоосон - label_nobody: хэн ч биш - label_next: Дараагийн - label_previous: Өмнөх - label_used_by: Хэрэглэгддэг - label_details: Дэлгэрэнгүй - label_add_note: Тэмдэглэл нэмэх - label_per_page: Нэг хуудсанд - label_calendar: Календарь - label_months_from: Саруудыг хаанаас - label_gantt: Гант диаграм - label_internal: Дотоод - label_last_changes: "сүүлийн %{count} өөрчлөлтүүд" - label_change_view_all: Бүх өөрчлөлтүүдийг харах - label_personalize_page: Энэ хуудсыг өөрт зориулан өөрчлөх - label_comment: Тайлбар - label_comment_plural: Тайлбарууд - label_x_comments: - zero: сэтгэгдэл байхгүй - one: 1 сэтгэгдэлтэй - other: "%{count} сэтгэгдэлтэй" - label_comment_add: Тайлбар нэмэх - label_comment_added: Тайлбар нэмэгдлээ - label_comment_delete: Тайлбарууд устгах - label_query: Хэрэглэгчийн тодорхойлсон асуулт - label_query_plural: Хэрэглэгчийн тодорхойлсон асуултууд - label_query_new: Шинээр хэрэглэгчийн тодорхойлсон асуулт үүсгэх - label_filter_add: Шүүлтүүр нэмэх - label_filter_plural: Шүүлтүүрүүд - label_equals: бол - label_not_equals: биш - label_in_less_than: аас бага - label_in_more_than: аас их - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: дотор - label_today: өнөөдөр - label_all_time: бүх хугацаа - label_yesterday: өчигдөр - label_this_week: энэ долоо хоног - label_last_week: өнгөрсөн долоо хоног - label_last_n_days: "сүүлийн %{count} өдрүүд" - label_this_month: энэ сар - label_last_month: сүүлийн сар - label_this_year: энэ жил - label_date_range: Хязгаар огноо - label_less_than_ago: бага өдрийн дотор - label_more_than_ago: их өдрийн дотор - label_ago: өдрийн өмнө - label_contains: агуулж байгаа - label_not_contains: агуулаагүй - label_day_plural: өдрүүд - label_repository: Репозитори - label_repository_plural: Репозиторууд - label_browse: Үзэх - label_modification: "%{count} өөрчлөлт" - label_modification_plural: "%{count} өөрчлөлтүүд" - label_branch: Салбар - label_tag: Шошго - label_revision: Хувилбар - label_revision_plural: Хувилбарууд - label_revision_id: "%{value} Хувилбар" - label_associated_revisions: Хамааралтай хувилбарууд - label_added: нэмэгдсэн - label_modified: өөрчлөгдсөн - label_copied: хуулсан - label_renamed: нэрийг нь өөрчилсөн - label_deleted: устгасан - label_latest_revision: Сүүлийн үеийн хувилбар - label_latest_revision_plural: Сүүлийн үеийн хувилбарууд - label_view_revisions: Хувилбаруудыг харах - label_view_all_revisions: Бүх хувилбаруудыг харах - label_max_size: Maximum size - label_sort_highest: Хамгийн дээр - label_sort_higher: Дээш нь - label_sort_lower: Доош нь - label_sort_lowest: Хамгийн доор - label_roadmap: Хөтөч - label_roadmap_due_in: "%{value} дотор дуусгах" - label_roadmap_overdue: "%{value} оройтсон" - label_roadmap_no_issues: Энэ хувилбарт асуудал байхгүй байна - label_search: Хайх - label_result_plural: Үр дүн - label_all_words: Бүх үгс - label_wiki: Вики - label_wiki_edit: Вики засвар - label_wiki_edit_plural: Вики засварууд - label_wiki_page: Вики хуудас - label_wiki_page_plural: Вики хуудас - label_index_by_title: Гарчгаар эрэмбэлэх - label_index_by_date: Огноогоор эрэмбэлэх - label_current_version: Одоогийн хувилбар - label_preview: Ямар харагдахыг шалгах - label_feed_plural: Feeds - label_changes_details: Бүх өөрчлөлтүүдийн дэлгэрэнгүй - label_issue_tracking: Асуудал хянах - label_spent_time: Зарцуулсан хугацаа - label_f_hour: "%{value} цаг" - label_f_hour_plural: "%{value} цаг" - label_time_tracking: Хугацааг хянах - label_change_plural: Өөрчлөлтүүд - label_statistics: Статистик - label_commits_per_month: Сард хийсэн коммитын тоо - label_commits_per_author: Зохиогч бүрийн хувьд коммитын тоо - label_view_diff: Ялгаануудыг харах - label_diff_inline: дотор нь - label_diff_side_by_side: зэрэгцүүлж - label_options: Тохиргоо - label_copy_workflow_from: Ажлын дарааллыг хуулах - label_permissions_report: Зөвшөөрлүүдийн таблиц - label_watched_issues: Ажиглагдаж байгаа асуудлууд - label_related_issues: Хамааралтай асуудлууд - label_applied_status: Олгосон төлөв - label_loading: Ачаалж байна... - label_relation_new: Шинэ хамаарал - label_relation_delete: Хамаарлыг устгах - label_relates_to: энгийн хамааралтай - label_duplicates: хос хамааралтай - label_duplicated_by: давхардуулсан эзэн - label_blocks: шаардах хамааралтай - label_blocked_by: блоколсон эзэн - label_precedes: урьдчилах хамааралтай - label_follows: дагаж - label_end_to_start: хойноос нь урагшаа - label_end_to_end: хойноос нь хойшоо - label_start_to_start: урдаас нь урагаа - label_start_to_end: урдаас нь хойшоо - label_stay_logged_in: Энэ комьютер дээр санах - label_disabled: идэвхгүй болсон - label_show_completed_versions: Гүйцэд хувилбаруудыг харуулах - label_me: би - label_board: Форум - label_board_new: Шинэ форум - label_board_plural: Форумууд - label_board_locked: Түгжээтэй - label_board_sticky: Sticky - label_topic_plural: Сэдвүүд - label_message_plural: Зурвасууд - label_message_last: Сүүлийн зурвас - label_message_new: Шинэ зурвас - label_message_posted: Зурвас нэмэгдлээ - label_reply_plural: Хариултууд - label_send_information: Дансны мэдээллийг хэрэглэгчид илгээх - label_year: Жил - label_month: Сар - label_week: Долоо хоног - label_date_from: Хэзээнээс - label_date_to: Хэдий хүртэл - label_language_based: Хэрэглэгчийн хэлнас шалтгаалан - label_sort_by: "%{value} талбараар нь эрэмбэлэх" - label_send_test_email: Турших мэйл илгээх - label_feeds_access_key: RSS хандах түлхүүр - label_missing_feeds_access_key: RSS хандах түлхүүр алга - label_feeds_access_key_created_on: "RSS хандалтын түлхүүр %{value}-ийн өмнө үүссэн" - label_module_plural: Модулууд - label_added_time_by: "%{author} %{age}-ийн өмнө нэмсэн" - label_updated_time_by: "%{author} %{age}-ийн өмнө өөрчилсөн" - label_updated_time: "%{value} -ийн өмнө өөрчлөгдсөн" - label_jump_to_a_project: Төсөл рүү очих... - label_file_plural: Файлууд - label_changeset_plural: Өөрчлөлтүүд - label_default_columns: Стандарт баганууд - label_no_change_option: (Өөрчлөлт байхгүй) - label_bulk_edit_selected_issues: Сонгогдсон асуудлуудыг бөөнөөр засварлах - label_theme: Системийн Дизайн - label_default: Стандарт - label_search_titles_only: Зөвхөн гарчиг хайх - label_user_mail_option_all: "Миний бүх төсөл дээрх бүх үзэгдлүүдийн хувьд" - label_user_mail_option_selected: "Сонгогдсон төслүүдийн хувьд бүх үзэгдэл дээр..." - label_user_mail_no_self_notified: "Миний өөрийн хийсэн өөрчлөлтүүдийн тухай надад мэдэгдэх хэрэггүй" - label_registration_activation_by_email: дансыг имэйлээр идэвхжүүлэх - label_registration_manual_activation: дансыг гараар идэвхжүүлэх - label_registration_automatic_activation: дансыг автоматаар идэвхжүүлэх - label_display_per_page: 'Нэг хуудсанд: %{value}' - label_age: Нас - label_change_properties: Тохиргоог өөрчлөх - label_general: Ерөнхий - label_more: Цааш нь - label_scm: SCM - label_plugins: Модулууд - label_ldap_authentication: LDAP нэвтрэх горим - label_downloads_abbr: D/L - label_optional_description: Дурын тайлбар - label_add_another_file: Дахин файл нэмэх - label_preferences: Тохиргоо - label_chronological_order: Цагаан толгойн үсгийн дарааллаар - label_reverse_chronological_order: Урвуу цагаан толгойн үсгийн дарааллаар - label_planning: Төлөвлөлт - label_incoming_emails: Ирсэн мэйлүүд - label_generate_key: Түлхүүр үүсгэх - label_issue_watchers: Ажиглагчид - label_example: Жишээ - label_display: Display - label_sort: Sort - label_ascending: Ascending - label_descending: Descending - label_date_from_to: From %{start} to %{end} - label_wiki_content_added: Wiki page added - label_wiki_content_updated: Wiki page updated - label_group: Group - label_group_plural: Groups - label_group_new: New group - label_time_entry_plural: Spent time - label_version_sharing_none: Not shared - label_version_sharing_descendants: With subprojects - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_tree: With project tree - label_version_sharing_system: With all projects - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Source - label_copy_target: Target - label_copy_same_as_target: Same as target - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API access key - label_missing_api_access_key: Missing an API access key - label_api_access_key_created_on: "API access key created %{value} ago" - - button_login: Нэвтрэх - button_submit: Илгээх - button_save: Хадгалах - button_check_all: Бүгдийг сонго - button_uncheck_all: Бүгдийг үл сонго - button_delete: Устгах - button_create: Үүсгэх - button_create_and_continue: Үүсгээд цааш үргэлжлүүлэх - button_test: Турших - button_edit: Засварлах - button_add: Нэмэх - button_change: Өөрчлөх - button_apply: Өөрчлөлтийг хадгалах - button_clear: Цэвэрлэх - button_lock: Түгжих - button_unlock: Түгжээг тайлах - button_download: Татах - button_list: Жагсаалт - button_view: Харах - button_move: Зөөх - button_move_and_follow: Зөө бас дага - button_back: Буцах - button_cancel: Болих - button_activate: Идэвхжүүлэх - button_sort: Эрэмбэлэх - button_log_time: Лог хийсэн хугацаа - button_rollback: Энэ хувилбар руу буцах - button_watch: Ажиглах - button_unwatch: Ажиглахаа болих - button_reply: Хариулах - button_archive: Архивлах - button_unarchive: Архивыг задлах - button_reset: Анхны утгууд - button_rename: Нэрийг нь солих - button_change_password: Нууц үгээ өөрчлөх - button_copy: Хуулах - button_copy_and_follow: Зөө бас дага - button_annotate: Тайлбар хавсаргах - button_update: Шинэчлэх - button_configure: Тохируулах - button_quote: Ишлэл - button_duplicate: Хуулбар - button_show: Үзэх - - status_active: идэвхтэй - status_registered: бүртгүүлсэн - status_locked: түгжээтэй - - version_status_open: нээлттэй - version_status_locked: түгжээтэй - version_status_closed: хаалттай - - field_active: идэвхтэй - - text_select_mail_notifications: Ямар үед имэйлээр мэдэгдэл илгээхийг сонгоно уу. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 гэвэл ямар ч хязгааргүй гэсэн үг - text_project_destroy_confirmation: Та энэ төсөл болоод бусад мэдээллийг нь үнэхээр устгамаар байна уу ? - text_subprojects_destroy_warning: "Уг төслийн дэд төслүүд : %{value} нь бас устгагдах болно." - text_workflow_edit: Ажлын дарааллыг өөрчлөхийн тулд хандалтын эрх болон асуудлын чиглэлийг сонгоно уу - text_are_you_sure: Та итгэлтэй байна уу ? - text_journal_changed: "%{label} %{old} байсан нь %{new} болов" - text_journal_set_to: "%{label} %{value} болгож өөрчиллөө" - text_journal_deleted: "%{label} устсан (%{old})" - text_journal_added: "%{label} %{value} нэмэгдсэн" - text_tip_issue_begin_day: энэ өдөр эхлэх ажил - text_tip_issue_end_day: энэ өдөр дуусах ажил - text_tip_issue_begin_end_day: энэ өдөр эхлээд мөн дуусч байгаа ажил - text_project_identifier_info: 'Зөвхөн жижиг үсгүүд болон (a-z), тоо and дундуур зураас ашиглаж болно.
    Нэгэнт хадгалсан хойно, төслийн глобал нэрийг өөрлчөх боломжгүй.' - text_caracters_maximum: "дээд тал нь %{count} үсэг." - text_caracters_minimum: "Хамгийн багадаа ядаж %{count} тэмдэгт байх." - text_length_between: "Урт нь багадаа %{min}, ихдээ %{max} тэмдэгт." - text_tracker_no_workflow: Энэхүү асуудлын чиглэлд ямар ч ажлын дараалал тодорхойлогдоогүй байна - text_unallowed_characters: Хэрэглэж болохгүй тэмдэгтүүд - text_comma_separated: Таслалаар зааглан олон утга оруулж болно. - text_line_separated: Multiple values allowed (one line for each value). - text_issues_ref_in_commit_messages: Коммитийн зурвасуудад хамааруулсан болон байнгын асуудлууд - text_issue_added: "Асуудал %{id} - ийг хэрэглэгч %{author} мэдэгдсэн байна." - text_issue_updated: "Асуудал %{id} - ийг хэрэглэгч %{author} өөрчилсөн байна." - text_wiki_destroy_confirmation: Та энэ вики болон холбогдох бүх мэдээллийг үнэхээр устгамаар байна уу ? - text_issue_category_destroy_question: "Энэ ангилалд зарим асуудлууд (%{count}) орсон байна. Та яах вэ ?" - text_issue_category_destroy_assignments: Асуудлуудыг энэ ангиллаас авах - text_issue_category_reassign_to: Асуудлуудыг энэ ангилалд дахин оноох - text_user_mail_option: "Сонгогдоогүй төслүүдийн хувьд, та зөвхөн өөрийнхөө ажиглаж байгаа зүйлс юмуу танд хамаатай зүйлсийн талаар мэдэгдэл авах болно (Таны оруулсан асуудал, эсвэл танд оноосон гэх мэт)." - text_no_configuration_data: "Хандалтын эрхүүд, чиглэлүүд, асуудлын төлвүүд болон ажлын дарааллын тухай мэдээллийг хараахан оруулаагүй байна.\nТа стандарт өгөгдлүүдийг даруйхан оруулахыг зөвлөж байна, оруулсан хойно та засварлаж болно." - text_load_default_configuration: Стандарт өгөгдлийг ачаалах - text_status_changed_by_changeset: "%{value} өөрчлөлтөд хийгдсэн." - text_issues_destroy_confirmation: 'Та сонгогдсон асуудлуудыг үнэхээр устгамаар байна уу ?' - text_select_project_modules: 'Энэ төслийн хувьд идэвхжүүлэх модулуудаа сонгоно уу:' - text_default_administrator_account_changed: Стандарт администраторын бүртгэл өөрчлөгдлөө - text_file_repository_writable: Хавсралт файл хадгалах хавтас руу бичих эрхтэй - text_plugin_assets_writable: Плагин модулийн ассет хавтас руу бичих эрхтэй - text_rmagick_available: RMagick суулгагдсан (заавал биш) - text_destroy_time_entries_question: "Таны устгах гэж байгаа асуудлууд дээр нийт %{hours} цаг зарцуулсан юм байна, та яах вэ ?" - text_destroy_time_entries: Мэдэгдсэн цагуудыг устгах - text_assign_time_entries_to_project: Мэдэгдсэн асуудлуудыг төсөлд оноох - text_reassign_time_entries: 'Мэдэгдсэн асуудлуудыг энэ асуудалд дахин оноо:' - text_user_wrote: "%{value} бичихдээ:" - text_enumeration_destroy_question: "Энэ утгад %{count} обьект оноогдсон байна." - text_enumeration_category_reassign_to: 'Тэдгээрийг энэ утгад дахин оноо:' - text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/configuration.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй." - text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх хэрэглэгчийн нэрүүдэд харгалзсан Төслийн Менежер системд бүртгэлтэй хэрэглэгчдийг Сонгох юмуу шинэчилнэ үү.\nТөслийн менежер болон репозиторид байгаа ижилхэн нэр юмуу имэйлтэй хэрэглэгчид харилцан харгалзна." - text_diff_truncated: '... Файлын ялгаврын хэмжээ үзүүлэхэд дэндүү урт байгаа учраас төгсгөлөөс нь хасч үзүүлэв.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - - default_role_manager: Менежер - default_role_developer: Хөгжүүлэгч - default_role_reporter: Мэдэгдэгч - default_tracker_bug: Алдаа - default_tracker_feature: Онцлог - default_tracker_support: Тусламж - default_issue_status_new: Шинэ - default_issue_status_in_progress: Ахицтай - default_issue_status_assigned: Оноогдсон - default_issue_status_resolved: Шийдвэрлэгдсэн - default_issue_status_feedback: Feedback - default_issue_status_closed: Хаагдсан - default_issue_status_rejected: Хүлээж аваагүй - default_doc_category_user: Хэрэглэгчийн бичиг баримт - default_doc_category_tech: Техникийн бичиг баримт - default_priority_low: Бага - default_priority_normal: Хэвийн - default_priority_high: Өндөр - default_priority_urgent: Нэн яаралтай - default_priority_immediate: Нэн даруй - default_activity_design: Дизайн - default_activity_development: Хөгжүүлэлт - - enumeration_issue_priorities: Асуудлын зэрэглэлүүд - enumeration_doc_categories: Бичиг баримтын ангиллууд - enumeration_activities: Үйл ажиллагаанууд (хугацааг хянах) - enumeration_system_activity: Системийн үйл ажиллагаа - - permission_manage_subtasks: Manage subtasks - label_profile: Profile - field_parent_issue: Parent task - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - error_can_not_delete_custom_field: Unable to delete custom field - error_unable_to_connect: Unable to connect (%{value}) - error_can_not_remove_role: This role is in use and can not be deleted. - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +mn: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%Y/%m/%d" + short: "%b %d" + long: "%Y, %B %d" + + day_names: [Даваа, Мягмар, Лхагва, Пүрэв, Баасан, Бямба, Ням] + abbr_day_names: [Дав, Мяг, Лха, Пүр, Бсн, Бям, Ням] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, 1-р сар, 2-р сар, 3-р сар, 4-р сар, 5-р сар, 6-р сар, 7-р сар, 8-р сар, 9-р сар, 10-р сар, 11-р сар, 12-р сар] + abbr_month_names: [~, 1сар, 2сар, 3сар, 4сар, 5сар, 6сар, 7сар, 8сар, 9сар, 10сар, 11сар, 12сар] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%Y/%m/%d %I:%M %p" + time: "%I:%M %p" + short: "%d %b %H:%M" + long: "%Y, %B %d %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "хагас минут" + less_than_x_seconds: + one: "секунд орчим" + other: "%{count} секундээс бага хугацаа" + x_seconds: + one: "1 секунд" + other: "%{count} секунд" + less_than_x_minutes: + one: "минутаас бага хугацаа" + other: "%{count} минутаас бага хугацаа" + x_minutes: + one: "1 минут" + other: "%{count} минут" + about_x_hours: + one: "1 цаг орчим" + other: "ойролцоогоор %{count} цаг" + x_days: + one: "1 өдөр" + other: "%{count} өдөр" + about_x_months: + one: "1 сар орчим" + other: "ойролцоогоор %{count} сар" + x_months: + one: "1 сар" + other: "%{count} сар" + about_x_years: + one: "ойролцоогоор 1 жил" + other: "ойролцоогоор %{count} жил" + over_x_years: + one: "1 жилээс их" + other: "%{count} жилээс их" + almost_x_years: + one: "бараг 1 жил" + other: "бараг %{count} жил" + + number: + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Байт" + other: "Байт" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "бас" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "жагсаалтад заагдаагүй байна" + exclusion: "нөөцлөгдсөн" + invalid: "буруу" + confirmation: "баталгаажсан өгөгдөлтэй таарахгүй байна" + accepted: "хүлээж авах ёстой" + empty: "хоосон байж болохгүй" + blank: "бланк байж болохгүй" + too_long: "дэндүү урт байна (хамгийн ихдээ %{count} тэмдэгт)" + too_short: "дэндүү богино байна (хамгийн багадаа %{count} тэмдэгт)" + wrong_length: "буруу урттай байна (заавал %{count} тэмдэгт)" + taken: "аль хэдийнэ авсан байна" + not_a_number: "тоо биш байна" + not_a_date: "зөв огноо биш байна" + greater_than: "%{count} их байх ёстой" + greater_than_or_equal_to: "must be greater than or equal to %{count}" + equal_to: "must be equal to %{count}" + less_than: "must be less than %{count}" + less_than_or_equal_to: "must be less than or equal to %{count}" + odd: "заавал сондгой" + even: "заавал тэгш" + greater_than_start_date: "must be greater than start date" + not_same_project: "нэг ижил төсөлд хамаарахгүй байна" + circular_dependency: "Энэ харьцаа нь гинжин(рекурсив) харьцаа үүсгэх юм байна" + cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + + actionview_instancetag_blank_option: Сонгоно уу + + general_text_No: 'Үгүй' + general_text_Yes: 'Тийм' + general_text_no: 'үгүй' + general_text_yes: 'тийм' + general_lang_name: 'Mongolian (Монгол)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '7' + + notice_account_updated: Дансыг амжилттай өөрчиллөө. + notice_account_invalid_creditentials: Хэрэглэгчийн нэр эсвэл нууц үг буруу байна + notice_account_password_updated: Нууц үгийг амжилттай өөрчиллөө. + notice_account_wrong_password: Буруу нууц үг + notice_account_register_done: Шинэ хэрэглэгч амжилттай үүсгэлээ. Идэвхжүүлэхийн тулд, бидний тань луу илгээсэн мэйл дотор байгаа холбоос дээр дараарай. + notice_account_unknown_email: Үл мэдэгдэх хэрэглэгч. + notice_can_t_change_password: Энэ эрх гадаад нэвтрэлтэд ашигладаг учраас нууц үгийг өөрчлөх боломжгүй. + notice_account_lost_email_sent: Бид таньд мэйлээр нууц үгээ өөрчлөх зааврыг илгээсэн байгаа. + notice_account_activated: Таны данс идэвхжлээ. Одоо нэвтэрч орж болно. + notice_successful_create: Амжилттай үүсгэлээ. + notice_successful_update: Амжилттай өөрчиллөө. + notice_successful_delete: Амжилттай устгалаа. + notice_successful_connection: Амжилттай холбогдлоо. + notice_file_not_found: Таны үзэх гэсэн хуудас байхгүй юмуу устгагдсан байна. + notice_locking_conflict: Өгөгдлийг өөр хүн өөрчилсөн байна. + notice_not_authorized: Танд энэ хуудсыг үзэх эрх байхгүй байна. + notice_email_sent: "%{value} - руу мэйл илгээлээ" + notice_email_error: "Мэйл илгээхэд алдаа гарлаа (%{value})" + notice_feeds_access_key_reseted: Таны RSS хандалтын түлхүүрийг дахин эхлүүллээ. + notice_api_access_key_reseted: Your API access key was reset. + notice_failed_to_save_issues: "%{total} асуудал сонгогдсоноос %{count} асуудлыг нь хадгалахад алдаа гарлаа: %{ids}." + notice_no_issue_selected: "Ямар ч асуудал сонгогдоогүй байна! Засварлах асуудлуудаа сонгоно уу." + notice_account_pending: "Таны дансыг үүсгэж дууслаа, администратор баталгаажуулах хүртэл хүлээнэ үү." + notice_default_data_loaded: Стандарт тохиргоог амжилттай ачааллаа. + notice_unable_delete_version: Хувилбарыг устгах боломжгүй. + notice_issue_done_ratios_updated: Issue done ratios updated. + + error_can_t_load_default_data: "Стандарт тохиргоог ачаалж чадсангүй: %{value}" + error_scm_not_found: "Repository дотор тухайн бичлэг эсвэл хувилбарыг олсонгүй." + error_scm_command_failed: "Repository-д хандахад алдаа гарлаа: %{value}" + error_scm_annotate: "Бичлэг байхгүй байна, эсвэл бичлэгт тайлбар хавсаргаж болохгүй." + error_issue_not_found_in_project: 'Сонгосон асуудал энэ төсөлд хамаардаггүй юм уу эсвэл системд байхгүй байна.' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' + error_can_not_archive_project: This project can not be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + + warning_attachments_not_saved: "%{count} file(s) файлыг хадгалж чадсангүй." + + mail_subject_lost_password: "Таны %{value} нууц үг" + mail_body_lost_password: 'Нууц үгээ өөрчлөхийн тулд доорх холбоос дээр дарна уу:' + mail_subject_register: "Таны %{value} дансыг идэвхжүүлэх" + mail_body_register: 'Дансаа идэвхжүүлэхийн тулд доорх холбоос дээр дарна уу:' + mail_body_account_information_external: "Та өөрийнхөө %{value} дансыг ашиглаж холбогдож болно." + mail_body_account_information: Таны дансны тухай мэдээлэл + mail_subject_account_activation_request: "%{value} дансыг идэвхжүүлэх хүсэлт" + mail_body_account_activation_request: "Шинэ хэрэглэгч (%{value}) бүртгүүлсэн байна. Таны баталгаажуулахыг хүлээж байна:" + mail_subject_reminder: "Дараагийн өдрүүдэд %{count} асуудлыг шийдэх хэрэгтэй (%{days})" + mail_body_reminder: "Танд оноогдсон %{count} асуудлуудыг дараагийн %{days} өдрүүдэд шийдэх хэрэгтэй:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 алдаа + gui_validation_error_plural: "%{count} алдаа" + + field_name: Нэр + field_description: Тайлбар + field_summary: Дүгнэлт + field_is_required: Зайлшгүй + field_firstname: Таны нэр + field_lastname: Овог + field_mail: Имэйл + field_filename: Файл + field_filesize: Хэмжээ + field_downloads: Татаж авах зүйлс + field_author: Зохиогч + field_created_on: Үүссэн + field_updated_on: Өөрчилсөн + field_field_format: Формат + field_is_for_all: Бүх төслийн хувьд + field_possible_values: Боломжтой утгууд + field_regexp: Энгийн илэрхийлэл + field_min_length: Минимум урт + field_max_length: Максимум урт + field_value: Утга + field_category: Төрөл + field_title: Гарчиг + field_project: Төсөл + field_issue: Асуудал + field_status: Төлөв + field_notes: Тэмдэглэлүүд + field_is_closed: Асуудал хаагдсан + field_is_default: Стандарт утга + field_tracker: Чиглэл + field_subject: Гарчиг + field_due_date: Дуусах огноо + field_assigned_to: Оноогдсон + field_priority: Зэрэглэл + field_fixed_version: Хувилбар + field_user: Хэрэглэгч + field_role: Хандалтын эрх + field_homepage: Нүүр хуудас + field_is_public: Олон нийтийн + field_parent: Эцэг төсөл нь + field_is_in_roadmap: Асуудлуудыг явцын зураг дээр харуулах + field_login: Нэвтрэх нэр + field_mail_notification: Имэйл мэдэгдлүүд + field_admin: Администратор + field_last_login_on: Сүүлийн холбоо + field_language: Хэл + field_effective_date: Огноо + field_password: Нууц үг + field_new_password: Шннэ нууц үг + field_password_confirmation: Баталгаажуулах + field_version: Хувилбар + field_type: Төрөл + field_host: Хост + field_port: Порт + field_account: Данс + field_base_dn: Үндсэн ДН + field_attr_login: Нэвтрэх аттрибут + field_attr_firstname: Таны нэр аттрибут + field_attr_lastname: Овог аттрибут + field_attr_mail: Имэйл аттрибут + field_onthefly: Хүссэн үедээ хэрэглэгч үүсгэх + field_start_date: Эхлэл + field_done_ratio: "%% Гүйцэтгэсэн" + field_auth_source: Нэвтрэх арга + field_hide_mail: Миний имэйл хаягийг нуу + field_comments: Тайлбар + field_url: URL Хаяг + field_start_page: Тэргүүн хуудас + field_subproject: Дэд төсөл + field_hours: Цаг + field_activity: Үйл ажиллагаа + field_spent_on: Огноо + field_identifier: Төслийн глобал нэр + field_is_filter: Шүүлтүүр болгон хэрэглэгддэг + field_issue_to: Хамаатай асуудал + field_delay: Хоцролт + field_assignable: Энэ хандалтын эрхэд асуудлуудыг оноож өгч болно + field_redirect_existing_links: Байгаа холбоосуудыг дахин чиглүүлэх + field_estimated_hours: Барагцаалсан цаг + field_column_names: Баганууд + field_time_zone: Цагын бүс + field_searchable: Хайж болох + field_default_value: Стандарт утга + field_comments_sorting: Тайлбаруудыг харуул + field_parent_title: Эцэг хуудас + field_editable: Засварлагдана + field_watcher: Харна + field_identity_url: OpenID URL + field_content: Агуулга + field_group_by: Үр дүнгээр бүлэглэх + field_sharing: Sharing + + setting_app_title: Программын гарчиг + setting_app_subtitle: Программын дэд гарчиг + setting_welcome_text: Мэндчилгээ + setting_default_language: Стандарт хэл + setting_login_required: Нэвтрэх шаардлагатай + setting_self_registration: Өөрийгөө бүртгүүлэх + setting_attachment_max_size: Хавсралт файлын дээд хэмжээ + setting_issues_export_limit: Асуудал экспортлох хязгаар + setting_mail_from: Ямар имэйл хаяг үүсгэх + setting_bcc_recipients: BCC талбарын хаягууд (bcc) + setting_plain_text_mail: дан текст мэйл (HTML биш) + setting_host_name: Хостын нэр болон зам + setting_text_formatting: Текст хэлбэржүүлэлт + setting_wiki_compression: Вики хуудсуудын түүх дээр шахалт хийх + setting_feeds_limit: Фийд агуулгын хязгаар + setting_default_projects_public: Шинэ төслүүд автоматаар олон нийтийнх байна + setting_autofetch_changesets: Комитуудыг автоматаар татаж авах + setting_sys_api_enabled: Репозитори менежментэд зориулан WS-ийг идэвхжүүлэх + setting_commit_ref_keywords: Хамааруулах түлхүүр үгс + setting_commit_fix_keywords: Зоолттой түлхүүр үгс + setting_autologin: Компьютер дээр санах + setting_date_format: Огнооны формат + setting_time_format: Цагийн формат + setting_cross_project_issue_relations: Төсөл хооронд асуудал хамааруулахыг зөвшөөрөх + setting_issue_list_default_columns: Асуудлуудыг харуулах стандарт баганууд + setting_repositories_encodings: Репозиторийн энкодинг + setting_emails_footer: Имэйлүүдийн хөл хэсэг + setting_protocol: Протокол + setting_per_page_options: Нэг хуудсанд байх обьектуудын тохиргоо + setting_user_format: Хэрэглэгчдийг харуулах формат + setting_activity_days_default: Төслийн үйл ажиллагаа хэсэгт үзүүлэх өдрийн тоо + setting_display_subprojects_issues: Дэд төслүүдийн асуудлуудыг автоматаар гол төсөл дээр харуулах + setting_enabled_scm: SCM - ийг идэвхжүүлэх + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Ирсэн мэйлүүдийн хувьд WS-ийг идэвхжүүлэх + setting_mail_handler_api_key: API түлхүүр + setting_sequential_project_identifiers: Дэс дараалсан төслийн глобал нэр үүсгэж байх + setting_gravatar_enabled: Gravatar дүрсүүдийг хэрэглэгчдэд хэрэглэж байх + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Ялгаатай мөрүүдийн тоо (дээд тал нь) + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Allow OpenID login and registration + setting_password_min_length: Minimum password length + setting_new_project_user_role_id: Role given to a non-admin user who creates a project + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + + permission_add_project: Create project + permission_add_subprojects: Create subprojects + permission_edit_project: Төслийг засварлах + permission_select_project_modules: Төслийн модулуудийг сонгоно уу + permission_manage_members: Системийн хэрэглэгчид + permission_manage_project_activities: Manage project activities + permission_manage_versions: Хувилбарууд + permission_manage_categories: Асуудлын ангиллууд + permission_view_issues: Асуудлуудыг харах + permission_add_issues: Асуудлууд нэмэх + permission_edit_issues: Асуудлуудыг засварлах + permission_manage_issue_relations: Асуудлын хамаарлыг зохицуулах + permission_add_issue_notes: Тэмдэглэл нэмэх + permission_edit_issue_notes: Тэмдэглэлүүд засварлах + permission_edit_own_issue_notes: Өөрийн үлдээсэн тэмдэглэлүүдийг засварлах + permission_move_issues: Асуудлуудыг зөөх + permission_delete_issues: Асуудлуудыг устгах + permission_manage_public_queries: Олон нийтийн асуултууд + permission_save_queries: Асуултуудыг хадгалах + permission_view_gantt: Гант диаграмыг үзэх + permission_view_calendar: Календарь үзэх + permission_view_issue_watchers: Ажиглагчдын жагсаалтыг харах + permission_add_issue_watchers: Ажиглагчид нэмэх + permission_delete_issue_watchers: Ажиглагчдыг устгах + permission_log_time: Зарцуулсан хугацааг лог хийх + permission_view_time_entries: Зарцуулсан хугацааг харах + permission_edit_time_entries: Хугацааны логуудыг засварлах + permission_edit_own_time_entries: Өөрийн хугацааны логуудыг засварлах + permission_manage_news: Мэдээ мэдээллүүд + permission_comment_news: Мэдээнд тайлбар үлдээх + permission_manage_documents: Бичиг баримтууд + permission_view_documents: Бичиг баримтуудыг харах + permission_manage_files: Файлууд + permission_view_files: Файлуудыг харах + permission_manage_wiki: Вики удирдах + permission_rename_wiki_pages: Вики хуудсуудыг дахиж нэрлэх + permission_delete_wiki_pages: Вики хуудсуудыг устгах + permission_view_wiki_pages: Вики үзэх + permission_view_wiki_edits: Вики түүх үзэх + permission_edit_wiki_pages: Вики хуудсуудыг засварлах + permission_delete_wiki_pages_attachments: Хавсралтуудыг устгах + permission_protect_wiki_pages: Вики хуудсуудыг хамгаалах + permission_manage_repository: Репозитори + permission_browse_repository: Репозиторийг үзэх + permission_view_changesets: Өөрчлөлтүүдийг харах + permission_commit_access: Коммит хандалт + permission_manage_boards: Самбарууд + permission_view_messages: Зурвасуудыг харах + permission_add_messages: Зурвас илгээх + permission_edit_messages: Зурвасуудыг засварлах + permission_edit_own_messages: Өөрийн зурвасуудыг засварлах + permission_delete_messages: Зурвасуудыг устгах + permission_delete_own_messages: Өөрийн зурвасуудыг устгах + permission_export_wiki_pages: Вики хуудсуудыг экспорт хийх + + project_module_issue_tracking: Асуудал хянах + project_module_time_tracking: Хугацаа хянах + project_module_news: Мэдээ мэдээллүүд + project_module_documents: Бичиг баримтууд + project_module_files: Файлууд + project_module_wiki: Вики + project_module_repository: Репозитори + project_module_boards: Самбарууд + + label_user: Хэрэглэгч + label_user_plural: Хэрэглэгчид + label_user_new: Шинэ хэрэглэгч + label_user_anonymous: Хамаагүй хэрэглэгч + label_project: Төсөл + label_project_new: Шинэ төсөл + label_project_plural: Төслүүд + label_x_projects: + zero: төсөл байхгүй + one: 1 төсөл + other: "%{count} төслүүд" + label_project_all: Бүх Төслүүд + label_project_latest: Сүүлийн үеийн төслүүд + label_issue: Асуудал + label_issue_new: Шинэ асуудал + label_issue_plural: Асуудлууд + label_issue_view_all: Бүх асуудлуудыг харах + label_issues_by: "%{value} - н асуудлууд" + label_issue_added: Асуудал нэмэгдлээ + label_issue_updated: Асуудал өөрчлөгдлөө + label_document: Бичиг баримт + label_document_new: Шинэ бичиг баримт + label_document_plural: Бичиг баримтууд + label_document_added: Бичиг баримт нэмэгдлээ + label_role: Хандалтын эрх + label_role_plural: Хандалтын эрхүүд + label_role_new: Шинэ хандалтын эрх + label_role_and_permissions: Хандалтын эрхүүд болон зөвшөөрлүүд + label_member: Гишүүн + label_member_new: Шинэ гишүүн + label_member_plural: Гишүүд + label_tracker: Чиглэл + label_tracker_plural: Чиглэлүүд + label_tracker_new: Шинэ чиглэл + label_workflow: Ажлын дараалал + label_issue_status: Асуудлын төлөв + label_issue_status_plural: Асуудлын төлвүүд + label_issue_status_new: Шинэ төлөв + label_issue_category: Асуудлын ангилал + label_issue_category_plural: Асуудлын ангиллууд + label_issue_category_new: Шинэ ангилал + label_custom_field: Хэрэглэгчийн тодорхойлсон талбар + label_custom_field_plural: Хэрэглэгчийн тодорхойлсон талбарууд + label_custom_field_new: Шинээр хэрэглэгчийн тодорхойлсон талбар үүсгэх + label_enumerations: Ангиллууд + label_enumeration_new: Шинэ утга + label_information: Мэдээлэл + label_information_plural: Мэдээллүүд + label_please_login: Нэвтэрч орно уу + label_register: Бүртгүүлэх + label_login_with_open_id_option: or login with OpenID + label_password_lost: Нууц үгээ алдсан + label_home: Нүүр + label_home_heading: Нүүр + label_my_page: Миний хуудас + label_my_account: Миний данс + label_my_projects: Миний төслүүд + label_administration: Админ хэсэг + label_login: Нэвтрэх + label_logout: Гарах + label_help: Тусламж + label_reported_issues: Мэдэгдсэн асуудлууд + label_assigned_to_me_issues: Надад оноогдсон асуудлууд + label_last_login: Сүүлийн холболт + label_registered_on: Бүртгүүлсэн огноо + label_activity: Үйл ажиллагаа + label_overall_activity: Ерөнхий үйл ажиллагаа + label_user_activity: "%{value}-ийн үйл ажиллагаа" + label_new: Шинэ + label_logged_as: Холбогдсон нэр + label_environment: Орчин + label_authentication: Нэвтрэх + label_auth_source: Нэвтрэх арга + label_auth_source_new: Шинэ нэвтрэх арга + label_auth_source_plural: Нэвтрэх аргууд + label_subproject_plural: Дэд төслүүд + label_subproject_new: Шинэ дэд төсөл + label_and_its_subprojects: "%{value} болон холбогдох дэд төслүүд" + label_min_max_length: Дээд - Доод урт + label_list: Жагсаалт + label_date: Огноо + label_integer: Бүхэл тоо + label_float: Бутархай тоо + label_boolean: Үнэн худал утга + label_string: Текст + label_text: Урт текст + label_attribute: Аттрибут + label_attribute_plural: Аттрибутууд + label_download: "%{count} Татаж авсан зүйл" + label_download_plural: "%{count} Татаж авсан зүйлс" + label_no_data: Үзүүлэх өгөгдөл байхгүй байна + label_change_status: Төлвийг өөрчлөх + label_history: Түүх + label_attachment: Файл + label_attachment_new: Шинэ файл + label_attachment_delete: Файл устгах + label_attachment_plural: Файлууд + label_file_added: Файл нэмэгдлээ + label_report: Тайлан + label_report_plural: Тайлангууд + label_news: Мэдээ + label_news_new: Шинэ мэдээ + label_news_plural: Мэдээ + label_news_latest: Сүүлийн үеийн мэдээнүүд + label_news_view_all: Бүх мэдээг харах + label_news_added: Мэдээ нэмэгдлээ + label_change_log: Өөрчлөлтийн лог + label_settings: Тохиргоо + label_overview: Эхлэл + label_version: Хувилбар + label_version_new: Шинэ хувилбар + label_version_plural: Хувилбарууд + label_close_versions: Гүйцэт хувилбаруудыг хаалаа + label_confirmation: Баталгаажуулах + label_export_to: 'Өөр авч болох формат:' + label_read: Унших... + label_public_projects: Олон нийтийн төслүүд + label_open_issues: нээлттэй + label_open_issues_plural: нээлттэй + label_closed_issues: хаалттай + label_closed_issues_plural: хаалттай + label_x_open_issues_abbr_on_total: + zero: 0 нээлттэй / %{total} + one: 1 нээлттэй / %{total} + other: "%{count} нээлттэй / %{total}" + label_x_open_issues_abbr: + zero: 0 нээлттэй + one: 1 нээлттэй + other: "%{count} нээлттэй" + label_x_closed_issues_abbr: + zero: 0 хаалттай + one: 1 хаалттай + other: "%{count} хаалттай" + label_total: Нийт + label_permissions: Зөвшөөрлүүд + label_current_status: Одоогийн төлөв + label_new_statuses_allowed: Шинээр олгож болох төлвүүд + label_all: бүгд + label_none: хоосон + label_nobody: хэн ч биш + label_next: Дараагийн + label_previous: Өмнөх + label_used_by: Хэрэглэгддэг + label_details: Дэлгэрэнгүй + label_add_note: Тэмдэглэл нэмэх + label_per_page: Нэг хуудсанд + label_calendar: Календарь + label_months_from: Саруудыг хаанаас + label_gantt: Гант диаграм + label_internal: Дотоод + label_last_changes: "сүүлийн %{count} өөрчлөлтүүд" + label_change_view_all: Бүх өөрчлөлтүүдийг харах + label_personalize_page: Энэ хуудсыг өөрт зориулан өөрчлөх + label_comment: Тайлбар + label_comment_plural: Тайлбарууд + label_x_comments: + zero: сэтгэгдэл байхгүй + one: 1 сэтгэгдэлтэй + other: "%{count} сэтгэгдэлтэй" + label_comment_add: Тайлбар нэмэх + label_comment_added: Тайлбар нэмэгдлээ + label_comment_delete: Тайлбарууд устгах + label_query: Хэрэглэгчийн тодорхойлсон асуулт + label_query_plural: Хэрэглэгчийн тодорхойлсон асуултууд + label_query_new: Шинээр хэрэглэгчийн тодорхойлсон асуулт үүсгэх + label_filter_add: Шүүлтүүр нэмэх + label_filter_plural: Шүүлтүүрүүд + label_equals: бол + label_not_equals: биш + label_in_less_than: аас бага + label_in_more_than: аас их + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: дотор + label_today: өнөөдөр + label_all_time: бүх хугацаа + label_yesterday: өчигдөр + label_this_week: энэ долоо хоног + label_last_week: өнгөрсөн долоо хоног + label_last_n_days: "сүүлийн %{count} өдрүүд" + label_this_month: энэ сар + label_last_month: сүүлийн сар + label_this_year: энэ жил + label_date_range: Хязгаар огноо + label_less_than_ago: бага өдрийн дотор + label_more_than_ago: их өдрийн дотор + label_ago: өдрийн өмнө + label_contains: агуулж байгаа + label_not_contains: агуулаагүй + label_day_plural: өдрүүд + label_repository: Репозитори + label_repository_plural: Репозиторууд + label_browse: Үзэх + label_modification: "%{count} өөрчлөлт" + label_modification_plural: "%{count} өөрчлөлтүүд" + label_branch: Салбар + label_tag: Шошго + label_revision: Хувилбар + label_revision_plural: Хувилбарууд + label_revision_id: "%{value} Хувилбар" + label_associated_revisions: Хамааралтай хувилбарууд + label_added: нэмэгдсэн + label_modified: өөрчлөгдсөн + label_copied: хуулсан + label_renamed: нэрийг нь өөрчилсөн + label_deleted: устгасан + label_latest_revision: Сүүлийн үеийн хувилбар + label_latest_revision_plural: Сүүлийн үеийн хувилбарууд + label_view_revisions: Хувилбаруудыг харах + label_view_all_revisions: Бүх хувилбаруудыг харах + label_max_size: Maximum size + label_sort_highest: Хамгийн дээр + label_sort_higher: Дээш нь + label_sort_lower: Доош нь + label_sort_lowest: Хамгийн доор + label_roadmap: Хөтөч + label_roadmap_due_in: "%{value} дотор дуусгах" + label_roadmap_overdue: "%{value} оройтсон" + label_roadmap_no_issues: Энэ хувилбарт асуудал байхгүй байна + label_search: Хайх + label_result_plural: Үр дүн + label_all_words: Бүх үгс + label_wiki: Вики + label_wiki_edit: Вики засвар + label_wiki_edit_plural: Вики засварууд + label_wiki_page: Вики хуудас + label_wiki_page_plural: Вики хуудас + label_index_by_title: Гарчгаар эрэмбэлэх + label_index_by_date: Огноогоор эрэмбэлэх + label_current_version: Одоогийн хувилбар + label_preview: Ямар харагдахыг шалгах + label_feed_plural: Feeds + label_changes_details: Бүх өөрчлөлтүүдийн дэлгэрэнгүй + label_issue_tracking: Асуудал хянах + label_spent_time: Зарцуулсан хугацаа + label_f_hour: "%{value} цаг" + label_f_hour_plural: "%{value} цаг" + label_time_tracking: Хугацааг хянах + label_change_plural: Өөрчлөлтүүд + label_statistics: Статистик + label_commits_per_month: Сард хийсэн коммитын тоо + label_commits_per_author: Зохиогч бүрийн хувьд коммитын тоо + label_view_diff: Ялгаануудыг харах + label_diff_inline: дотор нь + label_diff_side_by_side: зэрэгцүүлж + label_options: Тохиргоо + label_copy_workflow_from: Ажлын дарааллыг хуулах + label_permissions_report: Зөвшөөрлүүдийн таблиц + label_watched_issues: Ажиглагдаж байгаа асуудлууд + label_related_issues: Хамааралтай асуудлууд + label_applied_status: Олгосон төлөв + label_loading: Ачаалж байна... + label_relation_new: Шинэ хамаарал + label_relation_delete: Хамаарлыг устгах + label_relates_to: энгийн хамааралтай + label_duplicates: хос хамааралтай + label_duplicated_by: давхардуулсан эзэн + label_blocks: шаардах хамааралтай + label_blocked_by: блоколсон эзэн + label_precedes: урьдчилах хамааралтай + label_follows: дагаж + label_end_to_start: хойноос нь урагшаа + label_end_to_end: хойноос нь хойшоо + label_start_to_start: урдаас нь урагаа + label_start_to_end: урдаас нь хойшоо + label_stay_logged_in: Энэ комьютер дээр санах + label_disabled: идэвхгүй болсон + label_show_completed_versions: Гүйцэд хувилбаруудыг харуулах + label_me: би + label_board: Форум + label_board_new: Шинэ форум + label_board_plural: Форумууд + label_board_locked: Түгжээтэй + label_board_sticky: Sticky + label_topic_plural: Сэдвүүд + label_message_plural: Зурвасууд + label_message_last: Сүүлийн зурвас + label_message_new: Шинэ зурвас + label_message_posted: Зурвас нэмэгдлээ + label_reply_plural: Хариултууд + label_send_information: Дансны мэдээллийг хэрэглэгчид илгээх + label_year: Жил + label_month: Сар + label_week: Долоо хоног + label_date_from: Хэзээнээс + label_date_to: Хэдий хүртэл + label_language_based: Хэрэглэгчийн хэлнас шалтгаалан + label_sort_by: "%{value} талбараар нь эрэмбэлэх" + label_send_test_email: Турших мэйл илгээх + label_feeds_access_key: RSS хандах түлхүүр + label_missing_feeds_access_key: RSS хандах түлхүүр алга + label_feeds_access_key_created_on: "RSS хандалтын түлхүүр %{value}-ийн өмнө үүссэн" + label_module_plural: Модулууд + label_added_time_by: "%{author} %{age}-ийн өмнө нэмсэн" + label_updated_time_by: "%{author} %{age}-ийн өмнө өөрчилсөн" + label_updated_time: "%{value} -ийн өмнө өөрчлөгдсөн" + label_jump_to_a_project: Төсөл рүү очих... + label_file_plural: Файлууд + label_changeset_plural: Өөрчлөлтүүд + label_default_columns: Стандарт баганууд + label_no_change_option: (Өөрчлөлт байхгүй) + label_bulk_edit_selected_issues: Сонгогдсон асуудлуудыг бөөнөөр засварлах + label_theme: Системийн Дизайн + label_default: Стандарт + label_search_titles_only: Зөвхөн гарчиг хайх + label_user_mail_option_all: "Миний бүх төсөл дээрх бүх үзэгдлүүдийн хувьд" + label_user_mail_option_selected: "Сонгогдсон төслүүдийн хувьд бүх үзэгдэл дээр..." + label_user_mail_no_self_notified: "Миний өөрийн хийсэн өөрчлөлтүүдийн тухай надад мэдэгдэх хэрэггүй" + label_registration_activation_by_email: дансыг имэйлээр идэвхжүүлэх + label_registration_manual_activation: дансыг гараар идэвхжүүлэх + label_registration_automatic_activation: дансыг автоматаар идэвхжүүлэх + label_display_per_page: 'Нэг хуудсанд: %{value}' + label_age: Нас + label_change_properties: Тохиргоог өөрчлөх + label_general: Ерөнхий + label_more: Цааш нь + label_scm: SCM + label_plugins: Модулууд + label_ldap_authentication: LDAP нэвтрэх горим + label_downloads_abbr: D/L + label_optional_description: Дурын тайлбар + label_add_another_file: Дахин файл нэмэх + label_preferences: Тохиргоо + label_chronological_order: Цагаан толгойн үсгийн дарааллаар + label_reverse_chronological_order: Урвуу цагаан толгойн үсгийн дарааллаар + label_planning: Төлөвлөлт + label_incoming_emails: Ирсэн мэйлүүд + label_generate_key: Түлхүүр үүсгэх + label_issue_watchers: Ажиглагчид + label_example: Жишээ + label_display: Display + label_sort: Sort + label_ascending: Ascending + label_descending: Descending + label_date_from_to: From %{start} to %{end} + label_wiki_content_added: Wiki page added + label_wiki_content_updated: Wiki page updated + label_group: Group + label_group_plural: Groups + label_group_new: New group + label_time_entry_plural: Spent time + label_version_sharing_none: Not shared + label_version_sharing_descendants: With subprojects + label_version_sharing_hierarchy: With project hierarchy + label_version_sharing_tree: With project tree + label_version_sharing_system: With all projects + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Source + label_copy_target: Target + label_copy_same_as_target: Same as target + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API access key + label_missing_api_access_key: Missing an API access key + label_api_access_key_created_on: "API access key created %{value} ago" + + button_login: Нэвтрэх + button_submit: Илгээх + button_save: Хадгалах + button_check_all: Бүгдийг сонго + button_uncheck_all: Бүгдийг үл сонго + button_delete: Устгах + button_create: Үүсгэх + button_create_and_continue: Үүсгээд цааш үргэлжлүүлэх + button_test: Турших + button_edit: Засварлах + button_add: Нэмэх + button_change: Өөрчлөх + button_apply: Өөрчлөлтийг хадгалах + button_clear: Цэвэрлэх + button_lock: Түгжих + button_unlock: Түгжээг тайлах + button_download: Татах + button_list: Жагсаалт + button_view: Харах + button_move: Зөөх + button_move_and_follow: Зөө бас дага + button_back: Буцах + button_cancel: Болих + button_activate: Идэвхжүүлэх + button_sort: Эрэмбэлэх + button_log_time: Лог хийсэн хугацаа + button_rollback: Энэ хувилбар руу буцах + button_watch: Ажиглах + button_unwatch: Ажиглахаа болих + button_reply: Хариулах + button_archive: Архивлах + button_unarchive: Архивыг задлах + button_reset: Анхны утгууд + button_rename: Нэрийг нь солих + button_change_password: Нууц үгээ өөрчлөх + button_copy: Хуулах + button_copy_and_follow: Зөө бас дага + button_annotate: Тайлбар хавсаргах + button_update: Шинэчлэх + button_configure: Тохируулах + button_quote: Ишлэл + button_duplicate: Хуулбар + button_show: Үзэх + + status_active: идэвхтэй + status_registered: бүртгүүлсэн + status_locked: түгжээтэй + + version_status_open: нээлттэй + version_status_locked: түгжээтэй + version_status_closed: хаалттай + + field_active: идэвхтэй + + text_select_mail_notifications: Ямар үед имэйлээр мэдэгдэл илгээхийг сонгоно уу. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 гэвэл ямар ч хязгааргүй гэсэн үг + text_project_destroy_confirmation: Та энэ төсөл болоод бусад мэдээллийг нь үнэхээр устгамаар байна уу ? + text_subprojects_destroy_warning: "Уг төслийн дэд төслүүд : %{value} нь бас устгагдах болно." + text_workflow_edit: Ажлын дарааллыг өөрчлөхийн тулд хандалтын эрх болон асуудлын чиглэлийг сонгоно уу + text_are_you_sure: Та итгэлтэй байна уу ? + text_journal_changed: "%{label} %{old} байсан нь %{new} болов" + text_journal_set_to: "%{label} %{value} болгож өөрчиллөө" + text_journal_deleted: "%{label} устсан (%{old})" + text_journal_added: "%{label} %{value} нэмэгдсэн" + text_tip_issue_begin_day: энэ өдөр эхлэх ажил + text_tip_issue_end_day: энэ өдөр дуусах ажил + text_tip_issue_begin_end_day: энэ өдөр эхлээд мөн дуусч байгаа ажил + text_project_identifier_info: 'Зөвхөн жижиг үсгүүд болон (a-z), тоо and дундуур зураас ашиглаж болно.
    Нэгэнт хадгалсан хойно, төслийн глобал нэрийг өөрлчөх боломжгүй.' + text_caracters_maximum: "дээд тал нь %{count} үсэг." + text_caracters_minimum: "Хамгийн багадаа ядаж %{count} тэмдэгт байх." + text_length_between: "Урт нь багадаа %{min}, ихдээ %{max} тэмдэгт." + text_tracker_no_workflow: Энэхүү асуудлын чиглэлд ямар ч ажлын дараалал тодорхойлогдоогүй байна + text_unallowed_characters: Хэрэглэж болохгүй тэмдэгтүүд + text_comma_separated: Таслалаар зааглан олон утга оруулж болно. + text_line_separated: Multiple values allowed (one line for each value). + text_issues_ref_in_commit_messages: Коммитийн зурвасуудад хамааруулсан болон байнгын асуудлууд + text_issue_added: "Асуудал %{id} - ийг хэрэглэгч %{author} мэдэгдсэн байна." + text_issue_updated: "Асуудал %{id} - ийг хэрэглэгч %{author} өөрчилсөн байна." + text_wiki_destroy_confirmation: Та энэ вики болон холбогдох бүх мэдээллийг үнэхээр устгамаар байна уу ? + text_issue_category_destroy_question: "Энэ ангилалд зарим асуудлууд (%{count}) орсон байна. Та яах вэ ?" + text_issue_category_destroy_assignments: Асуудлуудыг энэ ангиллаас авах + text_issue_category_reassign_to: Асуудлуудыг энэ ангилалд дахин оноох + text_user_mail_option: "Сонгогдоогүй төслүүдийн хувьд, та зөвхөн өөрийнхөө ажиглаж байгаа зүйлс юмуу танд хамаатай зүйлсийн талаар мэдэгдэл авах болно (Таны оруулсан асуудал, эсвэл танд оноосон гэх мэт)." + text_no_configuration_data: "Хандалтын эрхүүд, чиглэлүүд, асуудлын төлвүүд болон ажлын дарааллын тухай мэдээллийг хараахан оруулаагүй байна.\nТа стандарт өгөгдлүүдийг даруйхан оруулахыг зөвлөж байна, оруулсан хойно та засварлаж болно." + text_load_default_configuration: Стандарт өгөгдлийг ачаалах + text_status_changed_by_changeset: "%{value} өөрчлөлтөд хийгдсэн." + text_issues_destroy_confirmation: 'Та сонгогдсон асуудлуудыг үнэхээр устгамаар байна уу ?' + text_select_project_modules: 'Энэ төслийн хувьд идэвхжүүлэх модулуудаа сонгоно уу:' + text_default_administrator_account_changed: Стандарт администраторын бүртгэл өөрчлөгдлөө + text_file_repository_writable: Хавсралт файл хадгалах хавтас руу бичих эрхтэй + text_plugin_assets_writable: Плагин модулийн ассет хавтас руу бичих эрхтэй + text_rmagick_available: RMagick суулгагдсан (заавал биш) + text_destroy_time_entries_question: "Таны устгах гэж байгаа асуудлууд дээр нийт %{hours} цаг зарцуулсан юм байна, та яах вэ ?" + text_destroy_time_entries: Мэдэгдсэн цагуудыг устгах + text_assign_time_entries_to_project: Мэдэгдсэн асуудлуудыг төсөлд оноох + text_reassign_time_entries: 'Мэдэгдсэн асуудлуудыг энэ асуудалд дахин оноо:' + text_user_wrote: "%{value} бичихдээ:" + text_enumeration_destroy_question: "Энэ утгад %{count} обьект оноогдсон байна." + text_enumeration_category_reassign_to: 'Тэдгээрийг энэ утгад дахин оноо:' + text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/configuration.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй." + text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх хэрэглэгчийн нэрүүдэд харгалзсан Төслийн Менежер системд бүртгэлтэй хэрэглэгчдийг Сонгох юмуу шинэчилнэ үү.\nТөслийн менежер болон репозиторид байгаа ижилхэн нэр юмуу имэйлтэй хэрэглэгчид харилцан харгалзна." + text_diff_truncated: '... Файлын ялгаврын хэмжээ үзүүлэхэд дэндүү урт байгаа учраас төгсгөлөөс нь хасч үзүүлэв.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + + default_role_manager: Менежер + default_role_developer: Хөгжүүлэгч + default_role_reporter: Мэдэгдэгч + default_tracker_bug: Алдаа + default_tracker_feature: Онцлог + default_tracker_support: Тусламж + default_issue_status_new: Шинэ + default_issue_status_in_progress: Ахицтай + default_issue_status_assigned: Оноогдсон + default_issue_status_resolved: Шийдвэрлэгдсэн + default_issue_status_feedback: Feedback + default_issue_status_closed: Хаагдсан + default_issue_status_rejected: Хүлээж аваагүй + default_doc_category_user: Хэрэглэгчийн бичиг баримт + default_doc_category_tech: Техникийн бичиг баримт + default_priority_low: Бага + default_priority_normal: Хэвийн + default_priority_high: Өндөр + default_priority_urgent: Нэн яаралтай + default_priority_immediate: Нэн даруй + default_activity_design: Дизайн + default_activity_development: Хөгжүүлэлт + + enumeration_issue_priorities: Асуудлын зэрэглэлүүд + enumeration_doc_categories: Бичиг баримтын ангиллууд + enumeration_activities: Үйл ажиллагаанууд (хугацааг хянах) + enumeration_system_activity: Системийн үйл ажиллагаа + + permission_manage_subtasks: Manage subtasks + label_profile: Profile + field_parent_issue: Parent task + error_unable_delete_issue_status: Unable to delete issue status + label_subtask_plural: Subtasks + label_project_copy_notifications: Send email notifications during the project copy + error_can_not_delete_custom_field: Unable to delete custom field + error_unable_to_connect: Unable to connect (%{value}) + error_can_not_remove_role: This role is in use and can not be deleted. + error_can_not_delete_tracker: This tracker contains issues and can't be deleted. + field_principal: Principal + label_my_page_block: My page block + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + text_zoom_out: Zoom out + text_zoom_in: Zoom in + notice_unable_delete_time_entry: Unable to delete time log entry. + label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Коммит хийх үед харуулах текстүүдийн энкодинг + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/nl.yml --- a/config/locales/nl.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/nl.yml Mon Jun 06 14:41:04 2011 +0100 @@ -5,25 +5,28 @@ # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! - default: "%Y-%m-%d" - short: "%b %d" - long: "%B %d, %Y" + default: "%d-%m-%Y" + short: "%e %b" + long: "%d %B, %Y" - day_names: [Zondag, Maandag, Dinsdag, Woensdag, Donderdag, Vrijdag, Zaterdag] - abbr_day_names: [Zo, Ma, Di, Woe, Do, Vr, Zat] + day_names: [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] + abbr_day_names: [zo, ma, di, wo, do, vr, za] # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Januari, Februari, Maart, April, Mei, Juni, Juli, Augustus, September, Oktober, November, December] - abbr_month_names: [~, Jan, Feb, Mar, Apr, Mei, Jun, Jul, Aug, Sep, Okt, Nov, Dec] + month_names: [~, januari, februari, maart, april, mei, juni, juli, augustus, september, oktober, november, december] + abbr_month_names: [~, jan, feb, mar, apr, mei, jun, jul, aug, sep, okt, nov, dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :day + - :month + - :year time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" - short: "%d %b %H:%M" - long: "%B %d, %Y %H:%M" + short: "%e %b %H:%M" + long: "%d %B, %Y %H:%M" am: "am" pm: "pm" @@ -32,7 +35,7 @@ half_a_minute: "halve minuut" less_than_x_seconds: one: "minder dan een seconde" - other: "mindera dan %{count} seconden" + other: "minder dan %{count} seconden" x_seconds: one: "1 seconde" other: "%{count} seconden" @@ -56,13 +59,13 @@ other: "%{count} maanden" about_x_years: one: "ongeveer 1 jaar" - other: "ongeveer %{count} jaren" + other: "ongeveer %{count} jaar" over_x_years: - one: "over 1 jaar" - other: "over %{count} jaren" + one: "meer dan 1 jaar" + other: "meer dan %{count} jaar" almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" + one: "bijna 1 jaar" + other: "bijna %{count} jaar" number: format: @@ -94,8 +97,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "Door een fout kon dit %{model} niet worden opgeslagen" + other: "Door %{count} fouten kon dit %{model} niet worden opgeslagen" messages: inclusion: "staat niet in de lijst" exclusion: "is gereserveerd" @@ -143,7 +146,7 @@ button_edit: Bewerk button_list: Lijst button_lock: Sluit - button_log_time: Log tijd + button_log_time: Registreer tijd button_login: Inloggen button_move: Verplaatsen button_quote: Citaat @@ -211,7 +214,7 @@ field_default_value: Standaardwaarde field_delay: Vertraging field_description: Beschrijving - field_done_ratio: % Gereed + field_done_ratio: "% Gereed" field_downloads: Downloads field_due_date: Verwachte datum gereed field_effective_date: Datum @@ -280,7 +283,7 @@ general_csv_separator: ';' general_first_day_of_week: '7' general_lang_name: 'Nederlands' - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_text_No: 'Nee' general_text_Yes: 'Ja' general_text_no: 'nee' @@ -514,9 +517,9 @@ one: 1 project other: "%{count} projects" label_public_projects: Publieke projecten - label_query: Eigen zoekvraag - label_query_new: Nieuwe zoekvraag - label_query_plural: Eigen zoekvragen + label_query: Eigen zoekopdracht + label_query_new: Nieuwe zoekopdracht + label_query_plural: Eigen zoekopdrachten label_read: Lees... label_register: Registreer label_registered_on: Geregistreerd op @@ -582,7 +585,7 @@ label_used_by: Gebruikt door label_user: Gebruiker label_user_activity: "%{value}'s activiteit" - label_user_mail_no_self_notified: "Ik wil niet op de hoogte gehouden worden van wijzigingen die ik zelf maak." + label_user_mail_no_self_notified: Ik wil niet op de hoogte gehouden worden van mijn eigen wijzigingen label_user_mail_option_all: "Bij elk gebeurtenis in al mijn projecten..." label_user_mail_option_selected: "Enkel bij elke gebeurtenis op het geselecteerde project..." label_user_new: Nieuwe gebruiker @@ -700,7 +703,6 @@ setting_autologin: Automatisch inloggen setting_bcc_recipients: Blind carbon copy ontvangers (bcc) setting_commit_fix_keywords: Gefixeerde trefwoorden - setting_commit_logs_encoding: Encodering van commit berichten setting_commit_ref_keywords: Refererende trefwoorden setting_cross_project_issue_relations: Sta crossproject issuerelaties toe setting_date_format: Datumformaat @@ -719,7 +721,7 @@ setting_mail_from: Afzender e-mail adres setting_mail_handler_api_enabled: Schakel WS in voor inkomende mail. setting_mail_handler_api_key: API sleutel - setting_per_page_options: Objects per pagina-opties + setting_per_page_options: Aantal objecten per pagina (opties) setting_plain_text_mail: platte tekst (geen HTML) setting_protocol: Protocol setting_repositories_encodings: Repositories coderingen @@ -743,7 +745,7 @@ text_destroy_time_entries: Verwijder gerapporteerde uren text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilde verwijderen. Wat wil u doen?" text_diff_truncated: '... Deze diff werd afgekort omdat het de maximale weer te geven karakters overschreed.' - text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren." + text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Mededelingen zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren." text_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:' text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: Bestandsrepository beschrijfbaar @@ -774,7 +776,7 @@ text_tip_issue_end_day: issue die op deze dag eindigt text_tracker_no_workflow: Geen workflow gedefinieerd voor deze tracker text_unallowed_characters: Niet toegestane tekens - text_user_mail_option: "Bij niet-geselecteerde projecten zult u enkel notificaties ontvangen voor issues die u monitort of waar u bij betrokken bent (als auteur of toegewezen persoon)." + text_user_mail_option: "Bij niet-geselecteerde projecten zult u enkel mededelingen ontvangen voor issues die u monitort of waar u bij betrokken bent (als auteur of toegewezen persoon)." text_user_wrote: "%{value} schreef:" text_wiki_destroy_confirmation: Weet u zeker dat u deze wiki en zijn inhoud wenst te verwijderen? text_workflow_edit: Selecteer een rol en een tracker om de workflow te wijzigen @@ -796,7 +798,7 @@ label_date_from_to: Van %{start} tot %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Deze pagina heeft %{descendants} subpagina's en onderliggende pagina's?. Wil wil je ermee doen? + text_wiki_page_destroy_question: Deze pagina heeft %{descendants} subpagina's en onderliggende pagina's?. Wat wilt u hiermee doen? text_wiki_page_reassign_children: Alle subpagina's toewijzen aan deze hoofdpagina text_wiki_page_nullify_children: Behoud subpagina's als hoofdpagina's text_wiki_page_destroy_children: Verwijder alle subpagina's en onderliggende pagina's @@ -805,9 +807,9 @@ mail_subject_wiki_content_updated: "'%{id}' wiki pagina is bijgewerkt" label_wiki_content_added: Wiki pagina toegevoegd mail_subject_wiki_content_added: "'%{id}' wiki pagina is toegevoegd" - mail_body_wiki_content_added: The '%{id}' wiki pagina is toegevoegd door %{author}. + mail_body_wiki_content_added: De '%{id}' wiki pagina is toegevoegd door %{author}. label_wiki_content_updated: Wiki pagina bijgewerkt - mail_body_wiki_content_updated: The '%{id}' wiki pagina is bijgewerkt door %{author}. + mail_body_wiki_content_updated: De '%{id}' wiki pagina is bijgewerkt door %{author}. permission_add_project: Maak project setting_new_project_user_role_id: Rol van gebruiker die een project maakt label_view_all_revisions: Bekijk alle revisies @@ -896,30 +898,64 @@ text_zoom_in: Zoom in notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer. label_overall_spent_time: Totaal bestede tijd - field_time_entries: Log tijd + field_time_entries: Registreer tijd project_module_gantt: Gantt project_module_calendar: Kalender - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events + button_edit_associated_wikipage: "Bewerk bijbehorende wiki pagina: %{page_title}" + text_are_you_sure_with_children: Verwijder issue en alle onderliggende issues? + field_text: Tekst veld + label_user_mail_option_only_owner: Alleen voor dingen waarvan ik de auteur ben + setting_default_notification_option: Standaard instelling voor mededelingen + label_user_mail_option_only_my_events: Alleen voor dingen die ik volg of bij betrokken ben + label_user_mail_option_only_assigned: Alleen voor dingen die aan mij zijn toegewezen + label_user_mail_option_none: Bij geen enkele gebeurtenis field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible + notice_not_authorized_archived_project: Het project dat u wilt bezoeken is gearchiveerd. + label_principal_search: "Zoek naar gebruiker of groep:" + label_user_search: "Zoek naar gebruiker:" + field_visible: Zichtbaar setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries + setting_commit_logtime_activity_id: Standaard activiteit voor tijdregistratie + text_time_logged_by_changeset: Toegepast in changeset %{value}. + setting_commit_logtime_enabled: Activeer tijdregistratie + notice_gantt_chart_truncated: De gantt chart is ingekort omdat het meer objecten bevat dan kan worden weergegeven, (%{max}) + setting_gantt_items_limit: Max. aantal objecten op gantt chart + field_warn_on_leaving_unsaved: Waarschuw me wanneer ik een pagina verlaat waarvan de tekst niet opgeslagen is + text_warn_on_leaving_unsaved: De huidige pagina bevat tekst die niet is opgeslagen en dit zal verloren gaan als u deze pagina nu verlaat. + label_my_queries: Mijn aangepaste zoekopdrachten text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Commentaar toegevoegd aan een nieuwsitem + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Encodering van commit berichten + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/no.yml --- a/config/locales/no.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/no.yml Mon Jun 06 14:41:04 2011 +0100 @@ -13,7 +13,10 @@ abbr_day_names: [søn, man, tir, ons, tor, fre, lør] month_names: [~, januar, februar, mars, april, mai, juni, juli, august, september, oktober, november, desember] abbr_month_names: [~, jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: default: "%A, %e. %B %Y, %H:%M" @@ -124,7 +127,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Kontoen er oppdatert. @@ -232,7 +235,7 @@ field_attr_mail: E-post-attributt field_onthefly: On-the-fly brukeropprettelse field_start_date: Start - field_done_ratio: % Ferdig + field_done_ratio: "% Ferdig" field_auth_source: Autentifikasjonsmodus field_hide_mail: Skjul min e-post-adresse field_comments: Kommentarer @@ -720,7 +723,6 @@ text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet på nytt for å skru det på." field_parent_title: Foreldreside label_issue_watchers: Overvåkere - setting_commit_logs_encoding: Tegnkoding for innsendingsmeldinger button_quote: Sitat setting_sequential_project_identifiers: Generer sekvensielle prosjekt-IDer notice_unable_delete_version: Kan ikke slette versjonen @@ -928,3 +930,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Tegnkoding for innsendingsmeldinger + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/pl.yml --- a/config/locales/pl.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/pl.yml Mon Jun 06 14:41:04 2011 +0100 @@ -45,7 +45,10 @@ month_names: [~, Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień] abbr_month_names: [~, sty, lut, mar, kwi, maj, cze, lip, sie, wrz, paź, lis, gru] - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -228,7 +231,7 @@ field_default_value: Domyślny field_delay: Opóźnienie field_description: Opis - field_done_ratio: % Wykonane + field_done_ratio: "% Wykonane" field_downloads: Pobrań field_due_date: Data oddania field_effective_date: Data @@ -294,9 +297,9 @@ field_version: Wersja field_vf_personnel: Personel field_vf_watcher: Obserwator - general_csv_decimal_separator: '.' + general_csv_decimal_separator: ',' general_csv_encoding: UTF-8 - general_csv_separator: ',' + general_csv_separator: ';' general_first_day_of_week: '1' general_lang_name: 'Polski' general_pdf_encoding: UTF-8 @@ -731,7 +734,6 @@ setting_autologin: Auto logowanie setting_bcc_recipients: Odbiorcy kopii tajnej (kt/bcc) setting_commit_fix_keywords: Słowa zmieniające status - setting_commit_logs_encoding: Kodowanie komentarzy zatwierdzeń setting_commit_ref_keywords: Słowa tworzące powiązania setting_cross_project_issue_relations: Zezwól na powiązania zagadnień między projektami setting_date_format: Format daty @@ -865,7 +867,7 @@ button_show: Pokaż error_can_not_archive_project: Ten projekt nie może zostać zarchiwizowany error_can_not_reopen_issue_on_closed_version: Zagadnienie przydzielone do zakończonej wersji nie może zostać ponownie otwarte - error_issue_done_ratios_not_updated: % wykonania zagadnienia nie został uaktualniony. + error_issue_done_ratios_not_updated: "% wykonania zagadnienia nie został uaktualniony." error_workflow_copy_source: Proszę wybrać źródłowy typ zagadnienia lub rolę error_workflow_copy_target: Proszę wybrać docelowe typ(y) zagadnień i rolę(e) field_sharing: Współdzielenie @@ -896,7 +898,7 @@ setting_default_projects_modules: Domyślnie włączone moduły dla nowo tworzonych projektów setting_gravatar_default: Domyślny obraz Gravatar setting_issue_done_ratio: Obliczaj postęp realizacji zagadnień za pomocą - setting_issue_done_ratio_issue_field: % Wykonania zagadnienia + setting_issue_done_ratio_issue_field: "% Wykonania zagadnienia" setting_issue_done_ratio_issue_status: Statusu zagadnienia setting_mail_handler_body_delimiters: Przycinaj e-maile po jednej z tych linii setting_rest_api_enabled: Uaktywnij usługę sieciową REST @@ -958,3 +960,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodowanie komentarzy zatwierdzeń + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/pt-BR.yml --- a/config/locales/pt-BR.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/pt-BR.yml Mon Jun 06 14:41:04 2011 +0100 @@ -12,7 +12,10 @@ abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] - order: [:day,:month,:year] + order: + - :day + - :month + - :year time: formats: @@ -155,7 +158,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Conta atualizada com sucesso. @@ -265,7 +268,7 @@ field_attr_mail: Atributo para e-mail field_onthefly: Criar usuários dinamicamente ("on-the-fly") field_start_date: Início - field_done_ratio: % Terminado + field_done_ratio: "% Terminado" field_auth_source: Modo de autenticação field_hide_mail: Ocultar meu e-mail field_comments: Comentário @@ -314,8 +317,7 @@ setting_cross_project_issue_relations: Permitir relacionar tarefas entre projetos setting_issue_list_default_columns: Colunas padrão visíveis na lista de tarefas setting_repositories_encodings: Codificação dos repositórios - setting_commit_logs_encoding: Codificação das mensagens de commit - setting_emails_footer: Rodapé dos e-mails + setting_emails_footer: Rodapé do e-mail setting_protocol: Protocolo setting_per_page_options: Número de itens exibidos por página setting_user_format: Formato de exibição de nome de usuário @@ -354,6 +356,9 @@ label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa atualizada + label_issue_note_added: Nota adicionada + label_issue_status_updated: Situação atualizada + label_issue_priority_updated: Prioridade atualizada label_document: Documento label_document_new: Novo documento label_document_plural: Documentos @@ -558,7 +563,7 @@ label_spent_time: Tempo gasto label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} horas" - label_time_tracking: Controle de horas + label_time_tracking: Registro de horas label_change_plural: Alterações label_statistics: Estatísticas label_commits_per_month: Commits por mês @@ -755,7 +760,7 @@ enumeration_issue_priorities: Prioridade das tarefas enumeration_doc_categories: Categorias de documento - enumeration_activities: Atividades (time tracking) + enumeration_activities: Atividades (registro de horas) notice_unable_delete_version: Não foi possível excluir a versão label_renamed: renomeado label_copied: copiado @@ -944,20 +949,51 @@ setting_default_notification_option: Opção padrão de notificação label_user_mail_option_only_my_events: Somente para as coisas que eu esteja observando ou esteja envolvido label_user_mail_option_only_assigned: Somente para as coisas que estejam atribuídas a mim - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + label_user_mail_option_none: Sem eventos + field_member_of_group: Grupo do responsável + field_assigned_to_role: Papel do responsável + notice_not_authorized_archived_project: O projeto que você está tentando acessar foi arquivado. + label_principal_search: "Pesquisar por usuários ou grupos:" + label_user_search: "Pesquisar por usuário:" + field_visible: Visível + setting_emails_header: Cabeçalho do e-mail + setting_commit_logtime_activity_id: Atividade para registrar horas + text_time_logged_by_changeset: Aplicado no changeset %{value}. + setting_commit_logtime_enabled: Habilitar registro de horas + notice_gantt_chart_truncated: O gráfico foi cortado por exceder o tamanho máximo de linhas que podem ser exibidas (%{max}) + setting_gantt_items_limit: Número máximo de itens exibidos no gráfico gatt + field_warn_on_leaving_unsaved: Alertar-me ao sarir de uma página sem salvar o texto + text_warn_on_leaving_unsaved: A página atual contem texto que não foi salvo e será perdido se você sair desta página. + label_my_queries: Minhas consultas personalizadas + text_journal_changed_no_detail: "%{label} atualizado(a)" + label_news_comment_added: Notícia recebeu um comentário + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codificação das mensagens de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/pt.yml --- a/config/locales/pt.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/pt.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ # Portuguese localization for Ruby on Rails # by Ricardo Otero +# by Alberto Ferreira pt: support: array: @@ -17,7 +18,10 @@ abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] - order: [:day, :month, :year] + order: + - :day + - :month + - :year time: formats: @@ -141,7 +145,7 @@ general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-15 - general_pdf_encoding: ISO-8859-15 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: A conta foi actualizada com sucesso. @@ -228,7 +232,7 @@ field_homepage: Página field_is_public: Público field_parent: Sub-projecto de - field_is_in_roadmap: Tarefas mostradas no roadmap + field_is_in_roadmap: Tarefas mostradas no mapa de planificação field_login: Nome de utilizador field_mail_notification: Notificações por e-mail field_admin: Administrador @@ -248,9 +252,9 @@ field_attr_firstname: Atributo nome próprio field_attr_lastname: Atributo último nome field_attr_mail: Atributo e-mail - field_onthefly: Criação de utilizadores na hora + field_onthefly: Criação imediata de utilizadores field_start_date: Início - field_done_ratio: % Completo + field_done_ratio: "% Completo" field_auth_source: Modo de autenticação field_hide_mail: Esconder endereço de e-mail field_comments: Comentário @@ -264,7 +268,7 @@ field_is_filter: Usado como filtro field_issue_to: Tarefa relacionada field_delay: Atraso - field_assignable: As tarefas podem ser associados a esta função + field_assignable: As tarefas podem ser associadas a esta função field_redirect_existing_links: Redireccionar ligações existentes field_estimated_hours: Tempo estimado field_column_names: Colunas @@ -299,7 +303,6 @@ setting_cross_project_issue_relations: Permitir relações entre tarefas de projectos diferentes setting_issue_list_default_columns: Colunas na lista de tarefas por omissão setting_repositories_encodings: Encodings dos repositórios - setting_commit_logs_encoding: Encoding das mensagens de commit setting_emails_footer: Rodapé do e-mails setting_protocol: Protocolo setting_per_page_options: Opções de objectos por página @@ -523,7 +526,7 @@ label_sort_higher: Mover para cima label_sort_lower: Mover para baixo label_sort_lowest: Mover para o fim - label_roadmap: Roadmap + label_roadmap: Planificação label_roadmap_due_in: "Termina em %{value}" label_roadmap_overdue: "Atrasado %{value}" label_roadmap_no_issues: Sem tarefas para esta versão @@ -923,25 +926,59 @@ project_module_calendar: Calendário button_edit_associated_wikipage: "Editar página Wiki associada: %{page_title}" text_are_you_sure_with_children: Apagar tarefa e todas as sub-tarefas? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_text: Campo de texto + label_user_mail_option_only_owner: Apenas para tarefas das quais sou proprietário + setting_default_notification_option: Opção predefinida de notificação + label_user_mail_option_only_my_events: Apenas para tarefas que observo ou em que estou envolvido + label_user_mail_option_only_assigned: Apenas para tarefas que me foram atribuídas + label_user_mail_option_none: Sem eventos + field_member_of_group: Grupo do detentor de atribuição + field_assigned_to_role: Papel do detentor de atribuição + notice_not_authorized_archived_project: O projecto a que tentou aceder foi arquivado. + label_principal_search: "Procurar utilizador ou grupo:" + label_user_search: "Procurar utilizador:" + field_visible: Visível + setting_emails_header: Cabeçalho dos e-mails + setting_commit_logtime_activity_id: Actividade para tempo registado + text_time_logged_by_changeset: Aplicado no conjunto de alterações %{value}. + setting_commit_logtime_enabled: Activar registo de tempo + notice_gantt_chart_truncated: O gráfico foi truncado porque excede o número máximo de itens visível (%{máx.}) + setting_gantt_items_limit: Número máximo de itens exibidos no gráfico Gantt field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Encoding das mensagens de commit + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/ro.yml --- a/config/locales/ro.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/ro.yml Mon Jun 06 14:41:04 2011 +0100 @@ -14,7 +14,10 @@ month_names: [~, Ianuarie, Februarie, Martie, Aprilie, Mai, Iunie, Iulie, August, Septembrie, Octombrie, Noiembrie, Decembrie] abbr_month_names: [~, Ian, Feb, Mar, Apr, Mai, Iun, Iul, Aug, Sep, Oct, Noi, Dec] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -291,7 +294,6 @@ setting_cross_project_issue_relations: Permite legături de tichete între proiecte setting_issue_list_default_columns: Coloane implicite afișate în lista de tichete setting_repositories_encodings: Codare pentru depozit - setting_commit_logs_encoding: Codare pentru mesaje setting_emails_footer: Subsol email setting_protocol: Protocol setting_per_page_options: Număr de obiecte pe pagină @@ -934,3 +936,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Codare pentru mesaje + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/ru.yml --- a/config/locales/ru.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/ru.yml Mon Jun 06 14:41:04 2011 +0100 @@ -28,7 +28,10 @@ abbr_month_names: [~, янв., февр., марта, апр., мая, июня, июля, авг., сент., окт., нояб., дек.] standalone_abbr_month_names: [~, янв., февр., март, апр., май, июнь, июль, авг., сент., окт., нояб., дек.] - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -261,7 +264,7 @@ default_issue_status_closed: Закрыта default_issue_status_feedback: Обратная связь default_issue_status_new: Новая - default_issue_status_rejected: Отказ + default_issue_status_rejected: Отклонена default_issue_status_resolved: Решена default_priority_high: Высокий default_priority_immediate: Немедленный @@ -272,7 +275,7 @@ default_role_manager: Менеджер default_role_reporter: Генератор отчетов default_tracker_bug: Ошибка - default_tracker_feature: Изменение + default_tracker_feature: Улучшение default_tracker_support: Поддержка enumeration_activities: Действия (учет времени) @@ -606,7 +609,7 @@ label_optional_description: Описание (опционально) label_options: Опции label_overall_activity: Сводная активность - label_overview: Просмотр + label_overview: Обзор label_password_lost: Восстановление пароля label_permissions_report: Отчет о правах доступа label_permissions: Права доступа @@ -863,7 +866,6 @@ setting_bcc_recipients: Использовать скрытые списки (BCC) setting_cache_formatted_text: Кешировать форматированный текст setting_commit_fix_keywords: Назначение ключевых слов - setting_commit_logs_encoding: Кодировка комментариев в хранилище setting_commit_ref_keywords: Ключевые слова для поиска setting_cross_project_issue_relations: Разрешить пересечение задач по проектам setting_date_format: Формат даты @@ -1045,12 +1047,46 @@ field_visible: Видимый setting_emails_header: Заголовок письма - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + setting_commit_logtime_activity_id: Активность для учета времени + text_time_logged_by_changeset: Учтено в редакции %{value}. + setting_commit_logtime_enabled: Включить учет времени + notice_gantt_chart_truncated: Диаграмма будет усечена, поскольку превышено максимальное кол-во элементов, которые могут отображаться (%{max}) + setting_gantt_items_limit: Максимальное кол-во элементов отображаемых на диаграмме Ганта + field_warn_on_leaving_unsaved: Предупреждать при закратии страницы с несохраненным текстом + text_warn_on_leaving_unsaved: Текущая страница содержит несохраненный текст, который будет потерян, если вы покинете эту страницу. + label_my_queries: Мои сохраненные запросы + text_journal_changed_no_detail: "%{label} обновлено" + label_news_comment_added: Добавлен комментарий к новости + button_expand_all: Развернуть все + button_collapse_all: Свернуть все + label_additional_workflow_transitions_for_assignee: Дополнительные переходы, когда пользователь является исполнителем + label_additional_workflow_transitions_for_author: Дополнительные переходы, когда пользователь является автором + label_bulk_edit_selected_time_entries: Массовое изменение выбранных записей затраченного времени времени + text_time_entries_destroy_confirmation: Вы уверены что хотите удалить выбраные записи затраченного времени? + label_role_anonymous: Аноним + label_role_non_member: Не участник + label_issue_note_added: Примечание добавлено + label_issue_status_updated: Статус обновлен + label_issue_priority_updated: Приоритет обновлен + label_issues_visibility_own: Задачи созданные или назначенные пользователю + field_issues_visibility: Видимость задач + label_issues_visibility_all: Все задачи + permission_set_own_issues_private: Устанавливать видимость (общая/частная) для собственных задач + field_is_private: Частная + permission_set_issues_private: Устанавливать видимость (общая/частная) для задач + label_issues_visibility_public: Только общие задачи + text_issues_destroy_descendants_confirmation: Так же будет удалено %{count} задачи. + field_commit_logs_encoding: Кодировка комментариев в хранилище + field_scm_path_encoding: Кодировка пути + text_scm_path_encoding_note: "По умолчанию: UTF-8" + field_path_to_repository: Путь к репозиторию + field_root_directory: Корневую директорию + field_cvs_module: Модуль + field_cvsroot: CVSROOT + text_git_repository_note: Локальный и bare репозиторий (например, /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Локальный репозиторий (например, /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/sk.yml --- a/config/locales/sk.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/sk.yml Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, Január, Február, Marec, Apríl, Máj, Jún, Júl, August, September, Október, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, Máj, Jún, Júl, Aug, Sep, Okt, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -236,7 +239,7 @@ field_attr_mail: Email (atribut) field_onthefly: Automatické vytváranie užívateľov field_start_date: Začiatok - field_done_ratio: % hotovo + field_done_ratio: "% hotovo" field_auth_source: Autentifikačný mód field_hide_mail: Nezobrazovať môj email field_comments: Komentár @@ -727,7 +730,6 @@ text_email_delivery_not_configured: "Doručenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/configuration.yml a reštartnite aplikáciu pre aktiváciu funkcie." field_parent_title: Nadradená stránka label_issue_watchers: Pozorovatelia - setting_commit_logs_encoding: Kódovanie prenášaných správ button_quote: Citácia setting_sequential_project_identifiers: Generovať sekvenčné identifikátory projektov notice_unable_delete_version: Verzia nemôže byť zmazaná @@ -936,3 +938,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kódovanie prenášaných správ + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/sl.yml --- a/config/locales/sl.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/sl.yml Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -132,7 +135,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 - general_pdf_encoding: UFT-8 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Račun je bil uspešno posodobljen. @@ -241,7 +244,7 @@ field_attr_mail: Oznaka za e-naslov field_onthefly: Sprotna izdelava uporabnikov field_start_date: Začetek - field_done_ratio: % Narejeno + field_done_ratio: "% Narejeno" field_auth_source: Način overovljanja field_hide_mail: Skrij moj e-naslov field_comments: Komentar @@ -291,7 +294,6 @@ setting_cross_project_issue_relations: Dovoli povezave zahtevkov med različnimi projekti setting_issue_list_default_columns: Privzeti stolpci prikazani na seznamu zahtevkov setting_repositories_encodings: Kodiranje shrambe - setting_commit_logs_encoding: Kodiranje sporočil ob predaji setting_emails_footer: Noga e-sporočil setting_protocol: Protokol setting_per_page_options: Število elementov na stran @@ -937,3 +939,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodiranje sporočil ob predaji + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/sr-YU.yml --- a/config/locales/sr-YU.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/sr-YU.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,943 +1,979 @@ -# Serbian translations for Redmine -# by Vladimir Medarović (vlada@medarovic.com) -sr-YU: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d.%m.%Y." - short: "%e %b" - long: "%B %e, %Y" - - day_names: [nedelja, ponedeljak, utorak, sreda, četvrtak, petak, subota] - abbr_day_names: [ned, pon, uto, sre, čet, pet, sub] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar] - abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec] - # Used in date_select and datime_select. - order: [ :day, :month, :year ] - - time: - formats: - default: "%d.%m.%Y. u %H:%M" - time: "%H:%M" - short: "%d. %b u %H:%M" - long: "%d. %B %Y u %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "pola minuta" - less_than_x_seconds: - one: "manje od jedne sekunde" - other: "manje od %{count} sek." - x_seconds: - one: "jedna sekunda" - other: "%{count} sek." - less_than_x_minutes: - one: "manje od minuta" - other: "manje od %{count} min." - x_minutes: - one: "jedan minut" - other: "%{count} min." - about_x_hours: - one: "približno jedan sat" - other: "približno %{count} sati" - x_days: - one: "jedan dan" - other: "%{count} dana" - about_x_months: - one: "približno jedan mesec" - other: "približno %{count} meseci" - x_months: - one: "jedan mesec" - other: "%{count} meseci" - about_x_years: - one: "približno godinu dana" - other: "približno %{count} god." - over_x_years: - one: "preko godinu dana" - other: "preko %{count} god." - almost_x_years: - one: "skoro godinu dana" - other: "skoro %{count} god." - - number: - format: - separator: "," - delimiter: "" - precision: 3 - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "i" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "nije uključen u spisak" - exclusion: "je rezervisan" - invalid: "je neispravan" - confirmation: "potvrda ne odgovara" - accepted: "mora biti prihvaćen" - empty: "ne može biti prazno" - blank: "ne može biti prazno" - too_long: "je predugačka (maksimum znakova je %{count})" - too_short: "je prekratka (minimum znakova je %{count})" - wrong_length: "je pogrešne dužine (broj znakova mora biti %{count})" - taken: "je već u upotrebi" - not_a_number: "nije broj" - not_a_date: "nije ispravan datum" - greater_than: "mora biti veći od %{count}" - greater_than_or_equal_to: "mora biti veći ili jednak %{count}" - equal_to: "mora biti jednak %{count}" - less_than: "mora biti manji od %{count}" - less_than_or_equal_to: "mora biti manji ili jednak %{count}" - odd: "mora biti paran" - even: "mora biti neparan" - greater_than_start_date: "mora biti veći od početnog datuma" - not_same_project: "ne pripada istom projektu" - circular_dependency: "Ova veza će stvoriti kružnu referencu" - cant_link_an_issue_with_a_descendant: "Problem ne može biti povezan sa jednim od svojih podzadataka" - - actionview_instancetag_blank_option: Molim odaberite - - general_text_No: 'Ne' - general_text_Yes: 'Da' - general_text_no: 'ne' - general_text_yes: 'da' - general_lang_name: 'Srpski' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Nalog je uspešno ažuriran. - notice_account_invalid_creditentials: Neispravno korisničko ime ili lozinka. - notice_account_password_updated: Lozinka je uspešno ažurirana. - notice_account_wrong_password: Pogrešna lozinka - notice_account_register_done: Korisnički nalog je uspešno kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju. - notice_account_unknown_email: Nepoznat korisnik. - notice_can_t_change_password: Ovaj korisnički nalog za potvrdu identiteta koristi spoljni izvor. Nemoguće je promeniti lozinku. - notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke - notice_account_activated: Vaš korisnički nalog je aktiviran. Sada se možete prijaviti. - notice_successful_create: Uspešno kreiranje. - notice_successful_update: Uspešno ažuriranje. - notice_successful_delete: Uspešno brisanje. - notice_successful_connection: Uspešno povezivanje. - notice_file_not_found: Strana kojoj želite pristupiti ne postoji ili je uklonjena. - notice_locking_conflict: Podatak je ažuriran od strane drugog korisnika. - notice_not_authorized: Niste ovlašćeni za pristup ovoj strani. - notice_email_sent: "E-poruka je poslata na %{value}" - notice_email_error: "Dogodila se greška prilikom slanja e-poruke (%{value})" - notice_feeds_access_key_reseted: Vaš RSS pristupni ključ je poništen. - notice_api_access_key_reseted: Vaš API pristupni ključ je poništen. - notice_failed_to_save_issues: "Neuspešno snimanje %{count} problema od %{total} odabranih: %{ids}." - notice_failed_to_save_members: "Neuspešno snimanje člana(ova): %{errors}." - notice_no_issue_selected: "Ni jedan problem nije odabran! Molimo, odaberite problem koji želite da menjate." - notice_account_pending: "Vaš nalog je kreiran i čeka na odobrenje administratora." - notice_default_data_loaded: Podrazumevano konfigurisanje je uspešno učitano. - notice_unable_delete_version: Verziju je nemoguće izbrisati. - notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguće izbrisati. - notice_issue_done_ratios_updated: Odnos rešenih problema je ažuriran. - - error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguće učitati: %{value}" - error_scm_not_found: "Stavka ili ispravka nisu pronađene u spremištu." - error_scm_command_failed: "Greška se javila prilikom pokušaja pristupa spremištu: %{value}" - error_scm_annotate: "Stavka ne postoji ili ne može biti označena." - error_issue_not_found_in_project: 'Problem nije pronađen ili ne pripada ovom projektu.' - error_no_tracker_in_project: 'Ni jedno praćenje nije povezano sa ovim projektom. Molimo proverite podešavanja projekta.' - error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaše konfigurisanje (idite na "Administracija -> Statusi problema").' - error_can_not_delete_custom_field: Nemoguće je izbrisati prilagođeno polje - error_can_not_delete_tracker: "Ovo praćenje sadrži probleme i ne može biti obrisano." - error_can_not_remove_role: "Ova uloga je u upotrebi i ne može biti obrisana." - error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne može biti ponovo otvoren' - error_can_not_archive_project: Ovaj projekat se ne može arhivirati - error_issue_done_ratios_not_updated: "Odnos rešenih problema nije ažuriran." - error_workflow_copy_source: 'Molimo odaberite izvorno praćenje ili ulogu' - error_workflow_copy_target: 'Molimo odaberite odredišno praćenje i ulogu' - error_unable_delete_issue_status: 'Status problema je nemoguće obrisati' - error_unable_to_connect: "Povezivanje sa (%{value}) je nemoguće" - warning_attachments_not_saved: "%{count} datoteka ne može biti snimljena." - - mail_subject_lost_password: "Vaša %{value} lozinka" - mail_body_lost_password: 'Za promenu vaše lozinke, kliknite na sledeći link:' - mail_subject_register: "Aktivacija vašeg %{value} naloga" - mail_body_register: 'Za aktivaciju vašeg naloga, kliknite na sledeći link:' - mail_body_account_information_external: "Vaš nalog %{value} možete koristiti za prijavu." - mail_body_account_information: Informacije o vašem nalogu - mail_subject_account_activation_request: "Zahtev za aktivaciju naloga %{value}" - mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. Nalog čeka na vaše odobrenje:" - mail_subject_reminder: "%{count} problema dospeva narednih %{days} dana" - mail_body_reminder: "%{count} problema dodeljenih vama dospeva u narednih %{days} dana:" - mail_subject_wiki_content_added: "Wiki stranica '%{id}' je dodata" - mail_body_wiki_content_added: "%{author} je dodao wiki stranicu '%{id}'." - mail_subject_wiki_content_updated: "Wiki stranica '%{id}' je ažurirana" - mail_body_wiki_content_updated: "%{author} je ažurirao wiki stranicu '%{id}'." - - gui_validation_error: jedna greška - gui_validation_error_plural: "%{count} grešaka" - - field_name: Naziv - field_description: Opis - field_summary: Rezime - field_is_required: Obavezno - field_firstname: Ime - field_lastname: Prezime - field_mail: E-adresa - field_filename: Datoteka - field_filesize: Veličina - field_downloads: Preuzimanja - field_author: Autor - field_created_on: Kreirano - field_updated_on: Ažurirano - field_field_format: Format - field_is_for_all: Za sve projekte - field_possible_values: Moguće vrednosti - field_regexp: Regularan izraz - field_min_length: Minimalna dužina - field_max_length: Maksimalna dužina - field_value: Vrednost - field_category: Kategorija - field_title: Naslov - field_project: Projekat - field_issue: Problem - field_status: Status - field_notes: Beleške - field_is_closed: Zatvoren problem - field_is_default: Podrazumevana vrednost - field_tracker: Praćenje - field_subject: Predmet - field_due_date: Krajnji rok - field_assigned_to: Dodeljeno - field_priority: Prioritet - field_fixed_version: Odredišna verzija - field_user: Korisnik - field_principal: Glavni - field_role: Uloga - field_homepage: Početna stranica - field_is_public: Javno objavljivanje - field_parent: Potprojekat od - field_is_in_roadmap: Problemi prikazani u planu rada - field_login: Korisničko ime - field_mail_notification: Obaveštenja putem e-pošte - field_admin: Administrator - field_last_login_on: Poslednje povezivanje - field_language: Jezik - field_effective_date: Datum - field_password: Lozinka - field_new_password: Nova lozinka - field_password_confirmation: Potvrda lozinke - field_version: Verzija - field_type: Tip - field_host: Glavni računar - field_port: Port - field_account: Korisnički nalog - field_base_dn: Bazni DN - field_attr_login: Atribut prijavljivanja - field_attr_firstname: Atribut imena - field_attr_lastname: Atribut prezimena - field_attr_mail: Atribut e-adrese - field_onthefly: Kreiranje korisnika u toku rada - field_start_date: Početak - field_done_ratio: % urađeno - field_auth_source: Režim potvrde identiteta - field_hide_mail: Sakrij moju e-adresu - field_comments: Komentar - field_url: URL - field_start_page: Početna stranica - field_subproject: Potprojekat - field_hours: sati - field_activity: Aktivnost - field_spent_on: Datum - field_identifier: Identifikator - field_is_filter: Upotrebi kao filter - field_issue_to: Srodni problemi - field_delay: Kašnjenje - field_assignable: Problem može biti dodeljen ovoj ulozi - field_redirect_existing_links: Preusmeri postojeće veze - field_estimated_hours: Proteklo vreme - field_column_names: Kolone - field_time_zone: Vremenska zona - field_searchable: Može da se pretražuje - field_default_value: Podrazumevana vrednost - field_comments_sorting: Prikaži komentare - field_parent_title: Matična stranica - field_editable: Izmenljivo - field_watcher: Posmatrač - field_identity_url: OpenID URL - field_content: Sadržaj - field_group_by: Grupisanje rezultata po - field_sharing: Deljenje - field_parent_issue: Matični zadatak - - setting_app_title: Naslov aplikacije - setting_app_subtitle: Podnaslov aplikacije - setting_welcome_text: Tekst dobrodošlice - setting_default_language: Podrazumevani jezik - setting_login_required: Obavezna potvrda identiteta - setting_self_registration: Samoregistracija - setting_attachment_max_size: Maks. veličina priložene datoteke - setting_issues_export_limit: Ograničenje izvoza „problema“ - setting_mail_from: E-adresa pošiljaoca - setting_bcc_recipients: Primaoci „Bcc“ kopije - setting_plain_text_mail: Poruka sa čistim tekstom (bez HTML-a) - setting_host_name: Putanja i naziv glavnog računara - setting_text_formatting: Oblikovanje teksta - setting_wiki_compression: Kompresija Wiki istorije - setting_feeds_limit: Ograničenje sadržaja izvora vesti - setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata - setting_autofetch_changesets: Izvršavanje automatskog preuzimanja - setting_sys_api_enabled: Omogućavanje WS za upravljanje spremištem - setting_commit_ref_keywords: Referenciranje ključnih reči - setting_commit_fix_keywords: Popravljanje ključnih reči - setting_autologin: Automatska prijava - setting_date_format: Format datuma - setting_time_format: Format vremena - setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata - setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema - setting_repositories_encodings: Kodiranje spremišta - setting_commit_logs_encoding: Kodiranje izvršnih poruka - setting_emails_footer: Podnožje stranice e-poruke - setting_protocol: Protokol - setting_per_page_options: Opcije prikaza objekata po stranici - setting_user_format: Format prikaza korisnika - setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti - setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugačije navedeno - setting_enabled_scm: Omogućavanje SCM - setting_mail_handler_body_delimiters: "Skraćivanje e-poruke nakon jedne od ovih linija" - setting_mail_handler_api_enabled: Omogućavanje WS dolazne e-poruke - setting_mail_handler_api_key: API ključ - setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta - setting_gravatar_enabled: Koristi Gravatar korisničke ikone - setting_gravatar_default: Podrazumevana Gravatar slika - setting_diff_max_lines_displayed: Maks. broj prikazanih različitih linija - setting_file_max_size_displayed: Maks. veličina tekst. datoteka prikazanih umetnuto - setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju - setting_openid: Dozvoli OpenID prijavu i registraciju - setting_password_min_length: Minimalna dužina lozinke - setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga - setting_default_projects_modules: Podrazumevano omogućeni moduli za nove projekte - setting_issue_done_ratio: Izračunaj odnos rešenih problema - setting_issue_done_ratio_issue_field: koristeći polje problema - setting_issue_done_ratio_issue_status: koristeći status problema - setting_start_of_week: Prvi dan u sedmici - setting_rest_api_enabled: Omogući REST web usluge - setting_cache_formatted_text: Keširanje obrađenog teksta - - permission_add_project: Kreiranje projekta - permission_add_subprojects: Kreiranje potpojekta - permission_edit_project: Izmena projekata - permission_select_project_modules: Odabiranje modula projekta - permission_manage_members: Upravljanje članovima - permission_manage_project_activities: Upravljanje projektnim aktivnostima - permission_manage_versions: Upravljanje verzijama - permission_manage_categories: Upravljanje kategorijama problema - permission_view_issues: Pregled problema - permission_add_issues: Dodavanje problema - permission_edit_issues: Izmena problema - permission_manage_issue_relations: Upravljanje vezama između problema - permission_add_issue_notes: Dodavanje beleški - permission_edit_issue_notes: Izmena beleški - permission_edit_own_issue_notes: Izmena sopstvenih beleški - permission_move_issues: Pomeranje problema - permission_delete_issues: Brisanje problema - permission_manage_public_queries: Upravljanje javnim upitima - permission_save_queries: Snimanje upita - permission_view_gantt: Pregledanje Gantovog dijagrama - permission_view_calendar: Pregledanje kalendara - permission_view_issue_watchers: Pregledanje spiska posmatrača - permission_add_issue_watchers: Dodavanje posmatrača - permission_delete_issue_watchers: Brisanje posmatrača - permission_log_time: Beleženje utrošenog vremena - permission_view_time_entries: Pregledanje utrošenog vremena - permission_edit_time_entries: Izmena utrošenog vremena - permission_edit_own_time_entries: Izmena sopstvenog utrošenog vremena - permission_manage_news: Upravljanje vestima - permission_comment_news: Komentarisanje vesti - permission_manage_documents: Upravljanje dokumentima - permission_view_documents: Pregledanje dokumenata - permission_manage_files: Upravljanje datotekama - permission_view_files: Pregledanje datoteka - permission_manage_wiki: Upravljanje wiki stranicama - permission_rename_wiki_pages: Promena imena wiki stranicama - permission_delete_wiki_pages: Brisanje wiki stranica - permission_view_wiki_pages: Pregledanje wiki stranica - permission_view_wiki_edits: Pregledanje wiki istorije - permission_edit_wiki_pages: Izmena wiki stranica - permission_delete_wiki_pages_attachments: Brisanje priloženih datoteka - permission_protect_wiki_pages: Zaštita wiki stranica - permission_manage_repository: Upravljanje spremištem - permission_browse_repository: Pregledanje spremišta - permission_view_changesets: Pregledanje skupa promena - permission_commit_access: Potvrda pristupa - permission_manage_boards: Upravljanje forumima - permission_view_messages: Pregledanje poruka - permission_add_messages: Slanje poruka - permission_edit_messages: Izmena poruka - permission_edit_own_messages: Izmena sopstvenih poruka - permission_delete_messages: Brisanje poruka - permission_delete_own_messages: Brisanje sopstvenih poruka - permission_export_wiki_pages: Izvoz wiki stranica - permission_manage_subtasks: Upravljanje podzadacima - - project_module_issue_tracking: Praćenje problema - project_module_time_tracking: Praćenje vremena - project_module_news: Vesti - project_module_documents: Dokumenti - project_module_files: Datoteke - project_module_wiki: Wiki - project_module_repository: Spremište - project_module_boards: Forumi - - label_user: Korisnik - label_user_plural: Korisnici - label_user_new: Novi korisnik - label_user_anonymous: Anoniman - label_project: Projekat - label_project_new: Novi projekat - label_project_plural: Projekti - label_x_projects: - zero: nema projekata - one: jedan projekat - other: "%{count} projekata" - label_project_all: Svi projekti - label_project_latest: Poslednji projekti - label_issue: Problem - label_issue_new: Novi problem - label_issue_plural: Problemi - label_issue_view_all: Prikaz svih problema - label_issues_by: "Problemi (%{value})" - label_issue_added: Problem je dodat - label_issue_updated: Problem je ažuriran - label_document: Dokument - label_document_new: Novi dokument - label_document_plural: Dokumenti - label_document_added: Dokument je dodat - label_role: Uloga - label_role_plural: Uloge - label_role_new: Nova uloga - label_role_and_permissions: Uloge i dozvole - label_member: Član - label_member_new: Novi član - label_member_plural: Članovi - label_tracker: Praćenje - label_tracker_plural: Praćenja - label_tracker_new: Novo praćenje - label_workflow: Tok posla - label_issue_status: Status problema - label_issue_status_plural: Statusi problema - label_issue_status_new: Novi status - label_issue_category: Kategorija problema - label_issue_category_plural: Kategorije problema - label_issue_category_new: Nova kategorija - label_custom_field: Prilagođeno polje - label_custom_field_plural: Prilagođena polja - label_custom_field_new: Novo prilagođeno polje - label_enumerations: Nabrojiva lista - label_enumeration_new: Nova vrednost - label_information: Informacija - label_information_plural: Informacije - label_please_login: Molimo, prijavite se - label_register: Registracija - label_login_with_open_id_option: ili prijava sa OpenID - label_password_lost: Izgubljena lozinka - label_home: Početak - label_home_heading: Početak - label_my_page: Moja stranica - label_my_account: Moj nalog - label_my_projects: Moji projekti - label_my_page_block: My page block - label_administration: Administracija - label_login: Prijava - label_logout: Odjava - label_help: Pomoć - label_reported_issues: Prijavljeni problemi - label_assigned_to_me_issues: Problemi dodeljeni meni - label_last_login: Poslednje povezivanje - label_registered_on: Registrovan - label_activity: Aktivnost - label_overall_activity: Celokupna aktivnost - label_user_activity: "Aktivnost korisnika %{value}" - label_new: Novo - label_logged_as: Prijavljeni ste kao - label_environment: Okruženje - label_authentication: Potvrda identiteta - label_auth_source: Režim potvrde identiteta - label_auth_source_new: Novi režim potvrde identiteta - label_auth_source_plural: Režimi potvrde identiteta - label_subproject_plural: Potprojekti - label_subproject_new: Novi potprojekat - label_and_its_subprojects: "%{value} i njegovi potprojekti" - label_min_max_length: Min. - Maks. dužina - label_list: Spisak - label_date: Datum - label_integer: Ceo broj - label_float: Sa pokretnim zarezom - label_boolean: Logički operator - label_string: Tekst - label_text: Dugi tekst - label_attribute: Osobina - label_attribute_plural: Osobine - label_download: "%{count} preuzimanje" - label_download_plural: "%{count} preuzimanja" - label_no_data: Nema podataka za prikazivanje - label_change_status: Promena statusa - label_history: Istorija - label_attachment: Datoteka - label_attachment_new: Nova datoteka - label_attachment_delete: Brisanje datoteke - label_attachment_plural: Datoteke - label_file_added: Datoteka je dodata - label_report: Izveštaj - label_report_plural: Izveštaji - label_news: Vesti - label_news_new: Dodavanje vesti - label_news_plural: Vesti - label_news_latest: Poslednje vesti - label_news_view_all: Prikaz svih vesti - label_news_added: Vesti su dodate - label_settings: Podešavanja - label_overview: Pregled - label_version: Verzija - label_version_new: Nova verzija - label_version_plural: Verzije - label_close_versions: Zatvori završene verzije - label_confirmation: Potvrda - label_export_to: 'Takođe dostupno i u varijanti:' - label_read: Čitanje... - label_public_projects: Javni projekti - label_open_issues: otvoren - label_open_issues_plural: otvorenih - label_closed_issues: zatvoren - label_closed_issues_plural: zatvorenih - label_x_open_issues_abbr_on_total: - zero: 0 otvorenih / %{total} - one: 1 otvoren / %{total} - other: "%{count} otvorenih / %{total}" - label_x_open_issues_abbr: - zero: 0 otvorenih - one: 1 otvoren - other: "%{count} otvorenih" - label_x_closed_issues_abbr: - zero: 0 zatvorenih - one: 1 zatvoren - other: "%{count} zatvorenih" - label_total: Ukupno - label_permissions: Dozvole - label_current_status: Trenutni status - label_new_statuses_allowed: Novi statusi dozvoljeni - label_all: svi - label_none: nijedan - label_nobody: nikome - label_next: Sledeće - label_previous: Prethodno - label_used_by: Koristio - label_details: Detalji - label_add_note: Dodaj belešku - label_per_page: Po strani - label_calendar: Kalendar - label_months_from: meseci od - label_gantt: Gantov dijagram - label_internal: Unutrašnji - label_last_changes: "poslednjih %{count} promena" - label_change_view_all: Prikaži sve promene - label_personalize_page: Personalizuj ovu stranu - label_comment: Komentar - label_comment_plural: Komentari - label_x_comments: - zero: bez komentara - one: jedan komentar - other: "%{count} komentara" - label_comment_add: Dodaj komentar - label_comment_added: Komentar dodat - label_comment_delete: Obriši komentare - label_query: Prilagođen upit - label_query_plural: Prilagođeni upiti - label_query_new: Novi upit - label_filter_add: Dodavanje filtera - label_filter_plural: Filteri - label_equals: je - label_not_equals: nije - label_in_less_than: manje od - label_in_more_than: više od - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: u - label_today: danas - label_all_time: sve vreme - label_yesterday: juče - label_this_week: ove sedmice - label_last_week: poslednje sedmice - label_last_n_days: "poslednjih %{count} dana" - label_this_month: ovog meseca - label_last_month: poslednjeg meseca - label_this_year: ove godine - label_date_range: Vremenski period - label_less_than_ago: pre manje od nekoliko dana - label_more_than_ago: pre više od nekoliko dana - label_ago: pre nekoliko dana - label_contains: sadrži - label_not_contains: ne sadrži - label_day_plural: dana - label_repository: Spremište - label_repository_plural: Spremišta - label_browse: Pregledanje - label_modification: "%{count} promena" - label_modification_plural: "%{count} promena" - label_branch: Grana - label_tag: Oznaka - label_revision: Revizija - label_revision_plural: Revizije - label_revision_id: "Revizija %{value}" - label_associated_revisions: Pridružene revizije - label_added: dodato - label_modified: promenjeno - label_copied: kopirano - label_renamed: preimenovano - label_deleted: izbrisano - label_latest_revision: Poslednja revizija - label_latest_revision_plural: Poslednje revizije - label_view_revisions: Pregled revizija - label_view_all_revisions: Pregled svih revizija - label_max_size: Maksimalna veličina - label_sort_highest: Premeštanje na vrh - label_sort_higher: Premeštanje na gore - label_sort_lower: Premeštanje na dole - label_sort_lowest: Premeštanje na dno - label_roadmap: Plan rada - label_roadmap_due_in: "Dospeva %{value}" - label_roadmap_overdue: "%{value} najkasnije" - label_roadmap_no_issues: Nema problema za ovu verziju - label_search: Pretraga - label_result_plural: Rezultati - label_all_words: Sve reči - label_wiki: Wiki - label_wiki_edit: Wiki izmena - label_wiki_edit_plural: Wiki izmene - label_wiki_page: Wiki stranica - label_wiki_page_plural: Wiki stranice - label_index_by_title: Indeksiranje po naslovu - label_index_by_date: Indeksiranje po datumu - label_current_version: Trenutna verzija - label_preview: Pregled - label_feed_plural: Izvori vesti - label_changes_details: Detalji svih promena - label_issue_tracking: Praćenje problema - label_spent_time: Utrošeno vreme - label_overall_spent_time: Celokupno utrošeno vreme - label_f_hour: "%{value} sat" - label_f_hour_plural: "%{value} sati" - label_time_tracking: Praćenje vremena - label_change_plural: Promene - label_statistics: Statistika - label_commits_per_month: Izvršenja mesečno - label_commits_per_author: Izvršenja po autoru - label_view_diff: Pogledaj razlike - label_diff_inline: unutra - label_diff_side_by_side: uporedo - label_options: Opcije - label_copy_workflow_from: Kopiranje toka posla od - label_permissions_report: Izveštaj o dozvolama - label_watched_issues: Posmatrani problemi - label_related_issues: Srodni problemi - label_applied_status: Primenjeni statusi - label_loading: Učitavanje... - label_relation_new: Nova relacija - label_relation_delete: Brisanje relacije - label_relates_to: srodnih sa - label_duplicates: dupliranih - label_duplicated_by: dupliranih od - label_blocks: odbijenih - label_blocked_by: odbijenih od - label_precedes: prethodi - label_follows: praćenih - label_end_to_start: od kraja do početka - label_end_to_end: od kraja do kraja - label_start_to_start: od početka do početka - label_start_to_end: od početka do kraja - label_stay_logged_in: Ostanite prijavljeni - label_disabled: onemogućeno - label_show_completed_versions: Prikazivanje završene verzije - label_me: meni - label_board: Forum - label_board_new: Novi forum - label_board_plural: Forumi - label_board_locked: Zaključana - label_board_sticky: Lepljiva - label_topic_plural: Teme - label_message_plural: Poruke - label_message_last: Poslednja poruka - label_message_new: Nova poruka - label_message_posted: Poruka je dodata - label_reply_plural: Odgovori - label_send_information: Pošalji korisniku detalje naloga - label_year: Godina - label_month: Mesec - label_week: Sedmica - label_date_from: Šalje - label_date_to: Prima - label_language_based: Bazirano na jeziku korisnika - label_sort_by: "Sortirano po %{value}" - label_send_test_email: Slanje probne e-poruke - label_feeds_access_key: RSS pristupni ključ - label_missing_feeds_access_key: RSS pristupni ključ nedostaje - label_feeds_access_key_created_on: "RSS pristupni ključ je napravljen pre %{value}" - label_module_plural: Moduli - label_added_time_by: "Dodao %{author} pre %{age}" - label_updated_time_by: "Ažurirao %{author} pre %{age}" - label_updated_time: "Ažurirano pre %{value}" - label_jump_to_a_project: Skok na projekat... - label_file_plural: Datoteke - label_changeset_plural: Skupovi promena - label_default_columns: Podrazumevane kolone - label_no_change_option: (Bez promena) - label_bulk_edit_selected_issues: Grupna izmena odabranih problema - label_theme: Tema - label_default: Podrazumevano - label_search_titles_only: Pretražuj samo naslove - label_user_mail_option_all: "Za bilo koji događaj na svim mojim projektima" - label_user_mail_option_selected: "Za bilo koji događaj na samo odabranim projektima..." - label_user_mail_no_self_notified: "Ne želim biti obaveštavan za promene koje sam pravim" - label_registration_activation_by_email: aktivacija naloga putem e-poruke - label_registration_manual_activation: ručna aktivacija naloga - label_registration_automatic_activation: automatska aktivacija naloga - label_display_per_page: "Broj stavki po stranici: %{value}" - label_age: Starost - label_change_properties: Promeni svojstva - label_general: Opšti - label_more: Više - label_scm: SCM - label_plugins: Dodatne komponente - label_ldap_authentication: LDAP potvrda identiteta - label_downloads_abbr: D/L - label_optional_description: Opciono opis - label_add_another_file: Dodaj još jednu datoteku - label_preferences: Podešavanja - label_chronological_order: po hronološkom redosledu - label_reverse_chronological_order: po obrnutom hronološkom redosledu - label_planning: Planiranje - label_incoming_emails: Dolazne e-poruke - label_generate_key: Generisanje ključa - label_issue_watchers: Posmatrači - label_example: Primer - label_display: Prikaz - label_sort: Sortiranje - label_ascending: Rastući niz - label_descending: Opadajući niz - label_date_from_to: Od %{start} do %{end} - label_wiki_content_added: Wiki stranica je dodata - label_wiki_content_updated: Wiki stranica je ažurirana - label_group: Grupa - label_group_plural: Grupe - label_group_new: Nova grupa - label_time_entry_plural: Utrošeno vreme - label_version_sharing_none: Nije deljeno - label_version_sharing_descendants: Sa potprojektima - label_version_sharing_hierarchy: Sa hijerarhijom projekta - label_version_sharing_tree: Sa stablom projekta - label_version_sharing_system: Sa svim projektima - label_update_issue_done_ratios: Ažuriraj odnos rešenih problema - label_copy_source: Izvor - label_copy_target: Odredište - label_copy_same_as_target: Isto kao odredište - label_display_used_statuses_only: Prikazuj statuse korišćene samo od strane ovog praćenja - label_api_access_key: API pristupni ključ - label_missing_api_access_key: Nedostaje API pristupni ključ - label_api_access_key_created_on: "API pristupni ključ je kreiran pre %{value}" - label_profile: Profil - label_subtask_plural: Podzadatak - label_project_copy_notifications: Pošalji e-poruku sa obaveštenjem prilikom kopiranja projekta - - button_login: Prijava - button_submit: Pošalji - button_save: Snimi - button_check_all: Uključi sve - button_uncheck_all: Isključi sve - button_delete: Izbriši - button_create: Kreiraj - button_create_and_continue: Kreiraj i nastavi - button_test: Test - button_edit: Izmeni - button_add: Dodaj - button_change: Promeni - button_apply: Primeni - button_clear: Obriši - button_lock: Zaključaj - button_unlock: Otključaj - button_download: Preuzmi - button_list: Spisak - button_view: Prikaži - button_move: Pomeri - button_move_and_follow: Pomeri i prati - button_back: Nazad - button_cancel: Poništi - button_activate: Aktiviraj - button_sort: Sortiraj - button_log_time: Evidentiraj vreme - button_rollback: Povratak na ovu verziju - button_watch: Prati - button_unwatch: Ne prati više - button_reply: Odgovori - button_archive: Arhiviraj - button_unarchive: Vrati iz arhive - button_reset: Poništi - button_rename: Preimenuj - button_change_password: Promeni lozinku - button_copy: Kopiraj - button_copy_and_follow: Kopiraj i prati - button_annotate: Pribeleži - button_update: Ažuriraj - button_configure: Podesi - button_quote: Pod navodnicima - button_duplicate: Dupliraj - button_show: Prikaži - - status_active: aktivni - status_registered: registrovani - status_locked: zaključani - - version_status_open: otvoren - version_status_locked: zaključan - version_status_closed: zatvoren - - field_active: Aktivan - - text_select_mail_notifications: Odaberi akcije za koje će obaveštenje biti poslato putem e-pošte. - text_regexp_info: npr. ^[A-Z0-9]+$ - text_min_max_length_info: 0 znači bez ograničenja - text_project_destroy_confirmation: Jeste li sigurni da želite da izbrišete ovaj projekat i sve pripadajuće podatke? - text_subprojects_destroy_warning: "Potprojekti: %{value} će takođe biti izbrisan." - text_workflow_edit: Odaberite ulogu i praćenje za izmenu toka posla - text_are_you_sure: Jeste li sigurni? - text_journal_changed: "%{label} promenjen od %{old} u %{new}" - text_journal_set_to: "%{label} postavljen u %{value}" - text_journal_deleted: "%{label} izbrisano (%{old})" - text_journal_added: "%{label} %{value} dodato" - text_tip_issue_begin_day: zadatak počinje ovog dana - text_tip_issue_end_day: zadatak se završava ovog dana - text_tip_issue_begin_end_day: zadatak počinje i završava ovog dana - text_project_identifier_info: 'Dozvoljena su samo mala slova (a-š), brojevi i crtice.
    Jednom snimljen identifikator više se ne može promeniti.' - text_caracters_maximum: "Najviše %{count} znak(ova)." - text_caracters_minimum: "Broj znakova mora biti najmanje %{count}." - text_length_between: "Broj znakova mora biti između %{min} i %{max}." - text_tracker_no_workflow: Ovo praćenje nema definisan tok posla - text_unallowed_characters: Nedozvoljeni znakovi - text_comma_separated: Dozvoljene su višestruke vrednosti (odvojene zarezom). - text_line_separated: Dozvoljene su višestruke vrednosti (jedan red za svaku vrednost). - text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvršnim porukama - text_issue_added: "%{author} je prijavio problem %{id}." - text_issue_updated: "%{author} je ažurirao problem %{id}." - text_wiki_destroy_confirmation: Jeste li sigurni da želite da obrišete wiki i sav sadržaj? - text_issue_category_destroy_question: "Nekoliko problema (%{count}) je dodeljeno ovoj kategoriji. Šta želite da uradite?" - text_issue_category_destroy_assignments: Ukloni dodeljene kategorije - text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji - text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveštenje o stvarima koje pratite ili ste uključeni (npr. problemi čiji ste vi autor ili zastupnik)." - text_no_configuration_data: "Uloge, praćenja, statusi problema i toka posla još uvek nisu podešeni.\nPreporučljivo je da učitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog učitavanja." - text_load_default_configuration: Učitaj podrazumevano konfigurisanje - text_status_changed_by_changeset: "Primenjeno u skupu sa promenama %{value}." - text_issues_destroy_confirmation: 'Jeste li sigurni da želite da izbrišete odabrane probleme?' - text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:' - text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen - text_file_repository_writable: Fascikla priloženih datoteka je upisiva - text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva - text_rmagick_available: RMagick je dostupan (opciono) - text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji želite izbrisati. Šta želite da uradite?" - text_destroy_time_entries: Izbriši prijavljene sate - text_assign_time_entries_to_project: Dodeli prijavljene sate projektu - text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:' - text_user_wrote: "%{value} je napisao:" - text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti." - text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' - text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." - text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani." - text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.' - text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' - text_wiki_page_destroy_question: "Ova stranica ima %{descendants} podređenih stranica i podstranica. Šta želite da uradite?" - text_wiki_page_nullify_children: "Zadrži podređene stranice kao korene stranice" - text_wiki_page_destroy_children: "Izbriši podređene stranice i sve njihove podstranice" - text_wiki_page_reassign_children: "Dodeli ponovo podređene stranice ovoj matičnoj stranici" - text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaših dozvola nećete više moći da uređujete ovaj projekat.\nŽelite li da nastavite?" - text_zoom_in: Uvećaj - text_zoom_out: Umanji - - default_role_manager: Menadžer - default_role_developer: Programer - default_role_reporter: Izveštač - default_tracker_bug: Greška - default_tracker_feature: Funkcionalnost - default_tracker_support: Podrška - default_issue_status_new: Novo - default_issue_status_in_progress: U toku - default_issue_status_resolved: Rešeno - default_issue_status_feedback: Povratna informacija - default_issue_status_closed: Zatvoreno - default_issue_status_rejected: Odbijeno - default_doc_category_user: Korisnička dokumentacija - default_doc_category_tech: Tehnička dokumentacija - default_priority_low: Nizak - default_priority_normal: Normalan - default_priority_high: Visok - default_priority_urgent: Hitno - default_priority_immediate: Neposredno - default_activity_design: Dizajn - default_activity_development: Razvoj - - enumeration_issue_priorities: Prioriteti problema - enumeration_doc_categories: Kategorije dokumenta - enumeration_activities: Aktivnosti (praćenje vremena) - enumeration_system_activity: Sistemska aktivnost - - field_time_entries: Vreme evidencije - project_module_gantt: Gantov dijagram - project_module_calendar: Kalendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" +# Serbian translations for Redmine +# by Vladimir Medarović (vlada@medarovic.com) +sr-YU: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d.%m.%Y." + short: "%e %b" + long: "%B %e, %Y" + + day_names: [nedelja, ponedeljak, utorak, sreda, četvrtak, petak, subota] + abbr_day_names: [ned, pon, uto, sre, čet, pet, sub] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar] + abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%d.%m.%Y. u %H:%M" + time: "%H:%M" + short: "%d. %b u %H:%M" + long: "%d. %B %Y u %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "pola minuta" + less_than_x_seconds: + one: "manje od jedne sekunde" + other: "manje od %{count} sek." + x_seconds: + one: "jedna sekunda" + other: "%{count} sek." + less_than_x_minutes: + one: "manje od minuta" + other: "manje od %{count} min." + x_minutes: + one: "jedan minut" + other: "%{count} min." + about_x_hours: + one: "približno jedan sat" + other: "približno %{count} sati" + x_days: + one: "jedan dan" + other: "%{count} dana" + about_x_months: + one: "približno jedan mesec" + other: "približno %{count} meseci" + x_months: + one: "jedan mesec" + other: "%{count} meseci" + about_x_years: + one: "približno godinu dana" + other: "približno %{count} god." + over_x_years: + one: "preko godinu dana" + other: "preko %{count} god." + almost_x_years: + one: "skoro godinu dana" + other: "skoro %{count} god." + + number: + format: + separator: "," + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "i" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "nije uključen u spisak" + exclusion: "je rezervisan" + invalid: "je neispravan" + confirmation: "potvrda ne odgovara" + accepted: "mora biti prihvaćen" + empty: "ne može biti prazno" + blank: "ne može biti prazno" + too_long: "je predugačka (maksimum znakova je %{count})" + too_short: "je prekratka (minimum znakova je %{count})" + wrong_length: "je pogrešne dužine (broj znakova mora biti %{count})" + taken: "je već u upotrebi" + not_a_number: "nije broj" + not_a_date: "nije ispravan datum" + greater_than: "mora biti veći od %{count}" + greater_than_or_equal_to: "mora biti veći ili jednak %{count}" + equal_to: "mora biti jednak %{count}" + less_than: "mora biti manji od %{count}" + less_than_or_equal_to: "mora biti manji ili jednak %{count}" + odd: "mora biti paran" + even: "mora biti neparan" + greater_than_start_date: "mora biti veći od početnog datuma" + not_same_project: "ne pripada istom projektu" + circular_dependency: "Ova veza će stvoriti kružnu referencu" + cant_link_an_issue_with_a_descendant: "Problem ne može biti povezan sa jednim od svojih podzadataka" + + actionview_instancetag_blank_option: Molim odaberite + + general_text_No: 'Ne' + general_text_Yes: 'Da' + general_text_no: 'ne' + general_text_yes: 'da' + general_lang_name: 'Srpski' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Nalog je uspešno ažuriran. + notice_account_invalid_creditentials: Neispravno korisničko ime ili lozinka. + notice_account_password_updated: Lozinka je uspešno ažurirana. + notice_account_wrong_password: Pogrešna lozinka + notice_account_register_done: Korisnički nalog je uspešno kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju. + notice_account_unknown_email: Nepoznat korisnik. + notice_can_t_change_password: Ovaj korisnički nalog za potvrdu identiteta koristi spoljni izvor. Nemoguće je promeniti lozinku. + notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke + notice_account_activated: Vaš korisnički nalog je aktiviran. Sada se možete prijaviti. + notice_successful_create: Uspešno kreiranje. + notice_successful_update: Uspešno ažuriranje. + notice_successful_delete: Uspešno brisanje. + notice_successful_connection: Uspešno povezivanje. + notice_file_not_found: Strana kojoj želite pristupiti ne postoji ili je uklonjena. + notice_locking_conflict: Podatak je ažuriran od strane drugog korisnika. + notice_not_authorized: Niste ovlašćeni za pristup ovoj strani. + notice_email_sent: "E-poruka je poslata na %{value}" + notice_email_error: "Dogodila se greška prilikom slanja e-poruke (%{value})" + notice_feeds_access_key_reseted: Vaš RSS pristupni ključ je poništen. + notice_api_access_key_reseted: Vaš API pristupni ključ je poništen. + notice_failed_to_save_issues: "Neuspešno snimanje %{count} problema od %{total} odabranih: %{ids}." + notice_failed_to_save_members: "Neuspešno snimanje člana(ova): %{errors}." + notice_no_issue_selected: "Ni jedan problem nije odabran! Molimo, odaberite problem koji želite da menjate." + notice_account_pending: "Vaš nalog je kreiran i čeka na odobrenje administratora." + notice_default_data_loaded: Podrazumevano konfigurisanje je uspešno učitano. + notice_unable_delete_version: Verziju je nemoguće izbrisati. + notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguće izbrisati. + notice_issue_done_ratios_updated: Odnos rešenih problema je ažuriran. + + error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguće učitati: %{value}" + error_scm_not_found: "Stavka ili ispravka nisu pronađene u spremištu." + error_scm_command_failed: "Greška se javila prilikom pokušaja pristupa spremištu: %{value}" + error_scm_annotate: "Stavka ne postoji ili ne može biti označena." + error_issue_not_found_in_project: 'Problem nije pronađen ili ne pripada ovom projektu.' + error_no_tracker_in_project: 'Ni jedno praćenje nije povezano sa ovim projektom. Molimo proverite podešavanja projekta.' + error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaše konfigurisanje (idite na "Administracija -> Statusi problema").' + error_can_not_delete_custom_field: Nemoguće je izbrisati prilagođeno polje + error_can_not_delete_tracker: "Ovo praćenje sadrži probleme i ne može biti obrisano." + error_can_not_remove_role: "Ova uloga je u upotrebi i ne može biti obrisana." + error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne može biti ponovo otvoren' + error_can_not_archive_project: Ovaj projekat se ne može arhivirati + error_issue_done_ratios_not_updated: "Odnos rešenih problema nije ažuriran." + error_workflow_copy_source: 'Molimo odaberite izvorno praćenje ili ulogu' + error_workflow_copy_target: 'Molimo odaberite odredišno praćenje i ulogu' + error_unable_delete_issue_status: 'Status problema je nemoguće obrisati' + error_unable_to_connect: "Povezivanje sa (%{value}) je nemoguće" + warning_attachments_not_saved: "%{count} datoteka ne može biti snimljena." + + mail_subject_lost_password: "Vaša %{value} lozinka" + mail_body_lost_password: 'Za promenu vaše lozinke, kliknite na sledeći link:' + mail_subject_register: "Aktivacija vašeg %{value} naloga" + mail_body_register: 'Za aktivaciju vašeg naloga, kliknite na sledeći link:' + mail_body_account_information_external: "Vaš nalog %{value} možete koristiti za prijavu." + mail_body_account_information: Informacije o vašem nalogu + mail_subject_account_activation_request: "Zahtev za aktivaciju naloga %{value}" + mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. Nalog čeka na vaše odobrenje:" + mail_subject_reminder: "%{count} problema dospeva narednih %{days} dana" + mail_body_reminder: "%{count} problema dodeljenih vama dospeva u narednih %{days} dana:" + mail_subject_wiki_content_added: "Wiki stranica '%{id}' je dodata" + mail_body_wiki_content_added: "%{author} je dodao wiki stranicu '%{id}'." + mail_subject_wiki_content_updated: "Wiki stranica '%{id}' je ažurirana" + mail_body_wiki_content_updated: "%{author} je ažurirao wiki stranicu '%{id}'." + + gui_validation_error: jedna greška + gui_validation_error_plural: "%{count} grešaka" + + field_name: Naziv + field_description: Opis + field_summary: Rezime + field_is_required: Obavezno + field_firstname: Ime + field_lastname: Prezime + field_mail: E-adresa + field_filename: Datoteka + field_filesize: Veličina + field_downloads: Preuzimanja + field_author: Autor + field_created_on: Kreirano + field_updated_on: Ažurirano + field_field_format: Format + field_is_for_all: Za sve projekte + field_possible_values: Moguće vrednosti + field_regexp: Regularan izraz + field_min_length: Minimalna dužina + field_max_length: Maksimalna dužina + field_value: Vrednost + field_category: Kategorija + field_title: Naslov + field_project: Projekat + field_issue: Problem + field_status: Status + field_notes: Beleške + field_is_closed: Zatvoren problem + field_is_default: Podrazumevana vrednost + field_tracker: Praćenje + field_subject: Predmet + field_due_date: Krajnji rok + field_assigned_to: Dodeljeno + field_priority: Prioritet + field_fixed_version: Odredišna verzija + field_user: Korisnik + field_principal: Glavni + field_role: Uloga + field_homepage: Početna stranica + field_is_public: Javno objavljivanje + field_parent: Potprojekat od + field_is_in_roadmap: Problemi prikazani u planu rada + field_login: Korisničko ime + field_mail_notification: Obaveštenja putem e-pošte + field_admin: Administrator + field_last_login_on: Poslednje povezivanje + field_language: Jezik + field_effective_date: Datum + field_password: Lozinka + field_new_password: Nova lozinka + field_password_confirmation: Potvrda lozinke + field_version: Verzija + field_type: Tip + field_host: Glavni računar + field_port: Port + field_account: Korisnički nalog + field_base_dn: Bazni DN + field_attr_login: Atribut prijavljivanja + field_attr_firstname: Atribut imena + field_attr_lastname: Atribut prezimena + field_attr_mail: Atribut e-adrese + field_onthefly: Kreiranje korisnika u toku rada + field_start_date: Početak + field_done_ratio: "% urađeno" + field_auth_source: Režim potvrde identiteta + field_hide_mail: Sakrij moju e-adresu + field_comments: Komentar + field_url: URL + field_start_page: Početna stranica + field_subproject: Potprojekat + field_hours: sati + field_activity: Aktivnost + field_spent_on: Datum + field_identifier: Identifikator + field_is_filter: Upotrebi kao filter + field_issue_to: Srodni problemi + field_delay: Kašnjenje + field_assignable: Problem može biti dodeljen ovoj ulozi + field_redirect_existing_links: Preusmeri postojeće veze + field_estimated_hours: Proteklo vreme + field_column_names: Kolone + field_time_zone: Vremenska zona + field_searchable: Može da se pretražuje + field_default_value: Podrazumevana vrednost + field_comments_sorting: Prikaži komentare + field_parent_title: Matična stranica + field_editable: Izmenljivo + field_watcher: Posmatrač + field_identity_url: OpenID URL + field_content: Sadržaj + field_group_by: Grupisanje rezultata po + field_sharing: Deljenje + field_parent_issue: Matični zadatak + + setting_app_title: Naslov aplikacije + setting_app_subtitle: Podnaslov aplikacije + setting_welcome_text: Tekst dobrodošlice + setting_default_language: Podrazumevani jezik + setting_login_required: Obavezna potvrda identiteta + setting_self_registration: Samoregistracija + setting_attachment_max_size: Maks. veličina priložene datoteke + setting_issues_export_limit: Ograničenje izvoza „problema“ + setting_mail_from: E-adresa pošiljaoca + setting_bcc_recipients: Primaoci „Bcc“ kopije + setting_plain_text_mail: Poruka sa čistim tekstom (bez HTML-a) + setting_host_name: Putanja i naziv glavnog računara + setting_text_formatting: Oblikovanje teksta + setting_wiki_compression: Kompresija Wiki istorije + setting_feeds_limit: Ograničenje sadržaja izvora vesti + setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata + setting_autofetch_changesets: Izvršavanje automatskog preuzimanja + setting_sys_api_enabled: Omogućavanje WS za upravljanje spremištem + setting_commit_ref_keywords: Referenciranje ključnih reči + setting_commit_fix_keywords: Popravljanje ključnih reči + setting_autologin: Automatska prijava + setting_date_format: Format datuma + setting_time_format: Format vremena + setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata + setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema + setting_repositories_encodings: Kodiranje spremišta + setting_emails_footer: Podnožje stranice e-poruke + setting_protocol: Protokol + setting_per_page_options: Opcije prikaza objekata po stranici + setting_user_format: Format prikaza korisnika + setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti + setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugačije navedeno + setting_enabled_scm: Omogućavanje SCM + setting_mail_handler_body_delimiters: "Skraćivanje e-poruke nakon jedne od ovih linija" + setting_mail_handler_api_enabled: Omogućavanje WS dolazne e-poruke + setting_mail_handler_api_key: API ključ + setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta + setting_gravatar_enabled: Koristi Gravatar korisničke ikone + setting_gravatar_default: Podrazumevana Gravatar slika + setting_diff_max_lines_displayed: Maks. broj prikazanih različitih linija + setting_file_max_size_displayed: Maks. veličina tekst. datoteka prikazanih umetnuto + setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju + setting_openid: Dozvoli OpenID prijavu i registraciju + setting_password_min_length: Minimalna dužina lozinke + setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga + setting_default_projects_modules: Podrazumevano omogućeni moduli za nove projekte + setting_issue_done_ratio: Izračunaj odnos rešenih problema + setting_issue_done_ratio_issue_field: koristeći polje problema + setting_issue_done_ratio_issue_status: koristeći status problema + setting_start_of_week: Prvi dan u sedmici + setting_rest_api_enabled: Omogući REST web usluge + setting_cache_formatted_text: Keširanje obrađenog teksta + + permission_add_project: Kreiranje projekta + permission_add_subprojects: Kreiranje potpojekta + permission_edit_project: Izmena projekata + permission_select_project_modules: Odabiranje modula projekta + permission_manage_members: Upravljanje članovima + permission_manage_project_activities: Upravljanje projektnim aktivnostima + permission_manage_versions: Upravljanje verzijama + permission_manage_categories: Upravljanje kategorijama problema + permission_view_issues: Pregled problema + permission_add_issues: Dodavanje problema + permission_edit_issues: Izmena problema + permission_manage_issue_relations: Upravljanje vezama između problema + permission_add_issue_notes: Dodavanje beleški + permission_edit_issue_notes: Izmena beleški + permission_edit_own_issue_notes: Izmena sopstvenih beleški + permission_move_issues: Pomeranje problema + permission_delete_issues: Brisanje problema + permission_manage_public_queries: Upravljanje javnim upitima + permission_save_queries: Snimanje upita + permission_view_gantt: Pregledanje Gantovog dijagrama + permission_view_calendar: Pregledanje kalendara + permission_view_issue_watchers: Pregledanje spiska posmatrača + permission_add_issue_watchers: Dodavanje posmatrača + permission_delete_issue_watchers: Brisanje posmatrača + permission_log_time: Beleženje utrošenog vremena + permission_view_time_entries: Pregledanje utrošenog vremena + permission_edit_time_entries: Izmena utrošenog vremena + permission_edit_own_time_entries: Izmena sopstvenog utrošenog vremena + permission_manage_news: Upravljanje vestima + permission_comment_news: Komentarisanje vesti + permission_manage_documents: Upravljanje dokumentima + permission_view_documents: Pregledanje dokumenata + permission_manage_files: Upravljanje datotekama + permission_view_files: Pregledanje datoteka + permission_manage_wiki: Upravljanje wiki stranicama + permission_rename_wiki_pages: Promena imena wiki stranicama + permission_delete_wiki_pages: Brisanje wiki stranica + permission_view_wiki_pages: Pregledanje wiki stranica + permission_view_wiki_edits: Pregledanje wiki istorije + permission_edit_wiki_pages: Izmena wiki stranica + permission_delete_wiki_pages_attachments: Brisanje priloženih datoteka + permission_protect_wiki_pages: Zaštita wiki stranica + permission_manage_repository: Upravljanje spremištem + permission_browse_repository: Pregledanje spremišta + permission_view_changesets: Pregledanje skupa promena + permission_commit_access: Potvrda pristupa + permission_manage_boards: Upravljanje forumima + permission_view_messages: Pregledanje poruka + permission_add_messages: Slanje poruka + permission_edit_messages: Izmena poruka + permission_edit_own_messages: Izmena sopstvenih poruka + permission_delete_messages: Brisanje poruka + permission_delete_own_messages: Brisanje sopstvenih poruka + permission_export_wiki_pages: Izvoz wiki stranica + permission_manage_subtasks: Upravljanje podzadacima + + project_module_issue_tracking: Praćenje problema + project_module_time_tracking: Praćenje vremena + project_module_news: Vesti + project_module_documents: Dokumenti + project_module_files: Datoteke + project_module_wiki: Wiki + project_module_repository: Spremište + project_module_boards: Forumi + + label_user: Korisnik + label_user_plural: Korisnici + label_user_new: Novi korisnik + label_user_anonymous: Anoniman + label_project: Projekat + label_project_new: Novi projekat + label_project_plural: Projekti + label_x_projects: + zero: nema projekata + one: jedan projekat + other: "%{count} projekata" + label_project_all: Svi projekti + label_project_latest: Poslednji projekti + label_issue: Problem + label_issue_new: Novi problem + label_issue_plural: Problemi + label_issue_view_all: Prikaz svih problema + label_issues_by: "Problemi (%{value})" + label_issue_added: Problem je dodat + label_issue_updated: Problem je ažuriran + label_document: Dokument + label_document_new: Novi dokument + label_document_plural: Dokumenti + label_document_added: Dokument je dodat + label_role: Uloga + label_role_plural: Uloge + label_role_new: Nova uloga + label_role_and_permissions: Uloge i dozvole + label_member: Član + label_member_new: Novi član + label_member_plural: Članovi + label_tracker: Praćenje + label_tracker_plural: Praćenja + label_tracker_new: Novo praćenje + label_workflow: Tok posla + label_issue_status: Status problema + label_issue_status_plural: Statusi problema + label_issue_status_new: Novi status + label_issue_category: Kategorija problema + label_issue_category_plural: Kategorije problema + label_issue_category_new: Nova kategorija + label_custom_field: Prilagođeno polje + label_custom_field_plural: Prilagođena polja + label_custom_field_new: Novo prilagođeno polje + label_enumerations: Nabrojiva lista + label_enumeration_new: Nova vrednost + label_information: Informacija + label_information_plural: Informacije + label_please_login: Molimo, prijavite se + label_register: Registracija + label_login_with_open_id_option: ili prijava sa OpenID + label_password_lost: Izgubljena lozinka + label_home: Početak + label_home_heading: Početak + label_my_page: Moja stranica + label_my_account: Moj nalog + label_my_projects: Moji projekti + label_my_page_block: My page block + label_administration: Administracija + label_login: Prijava + label_logout: Odjava + label_help: Pomoć + label_reported_issues: Prijavljeni problemi + label_assigned_to_me_issues: Problemi dodeljeni meni + label_last_login: Poslednje povezivanje + label_registered_on: Registrovan + label_activity: Aktivnost + label_overall_activity: Celokupna aktivnost + label_user_activity: "Aktivnost korisnika %{value}" + label_new: Novo + label_logged_as: Prijavljeni ste kao + label_environment: Okruženje + label_authentication: Potvrda identiteta + label_auth_source: Režim potvrde identiteta + label_auth_source_new: Novi režim potvrde identiteta + label_auth_source_plural: Režimi potvrde identiteta + label_subproject_plural: Potprojekti + label_subproject_new: Novi potprojekat + label_and_its_subprojects: "%{value} i njegovi potprojekti" + label_min_max_length: Min. - Maks. dužina + label_list: Spisak + label_date: Datum + label_integer: Ceo broj + label_float: Sa pokretnim zarezom + label_boolean: Logički operator + label_string: Tekst + label_text: Dugi tekst + label_attribute: Osobina + label_attribute_plural: Osobine + label_download: "%{count} preuzimanje" + label_download_plural: "%{count} preuzimanja" + label_no_data: Nema podataka za prikazivanje + label_change_status: Promena statusa + label_history: Istorija + label_attachment: Datoteka + label_attachment_new: Nova datoteka + label_attachment_delete: Brisanje datoteke + label_attachment_plural: Datoteke + label_file_added: Datoteka je dodata + label_report: Izveštaj + label_report_plural: Izveštaji + label_news: Vesti + label_news_new: Dodavanje vesti + label_news_plural: Vesti + label_news_latest: Poslednje vesti + label_news_view_all: Prikaz svih vesti + label_news_added: Vesti su dodate + label_settings: Podešavanja + label_overview: Pregled + label_version: Verzija + label_version_new: Nova verzija + label_version_plural: Verzije + label_close_versions: Zatvori završene verzije + label_confirmation: Potvrda + label_export_to: 'Takođe dostupno i u varijanti:' + label_read: Čitanje... + label_public_projects: Javni projekti + label_open_issues: otvoren + label_open_issues_plural: otvorenih + label_closed_issues: zatvoren + label_closed_issues_plural: zatvorenih + label_x_open_issues_abbr_on_total: + zero: 0 otvorenih / %{total} + one: 1 otvoren / %{total} + other: "%{count} otvorenih / %{total}" + label_x_open_issues_abbr: + zero: 0 otvorenih + one: 1 otvoren + other: "%{count} otvorenih" + label_x_closed_issues_abbr: + zero: 0 zatvorenih + one: 1 zatvoren + other: "%{count} zatvorenih" + label_total: Ukupno + label_permissions: Dozvole + label_current_status: Trenutni status + label_new_statuses_allowed: Novi statusi dozvoljeni + label_all: svi + label_none: nijedan + label_nobody: nikome + label_next: Sledeće + label_previous: Prethodno + label_used_by: Koristio + label_details: Detalji + label_add_note: Dodaj belešku + label_per_page: Po strani + label_calendar: Kalendar + label_months_from: meseci od + label_gantt: Gantov dijagram + label_internal: Unutrašnji + label_last_changes: "poslednjih %{count} promena" + label_change_view_all: Prikaži sve promene + label_personalize_page: Personalizuj ovu stranu + label_comment: Komentar + label_comment_plural: Komentari + label_x_comments: + zero: bez komentara + one: jedan komentar + other: "%{count} komentara" + label_comment_add: Dodaj komentar + label_comment_added: Komentar dodat + label_comment_delete: Obriši komentare + label_query: Prilagođen upit + label_query_plural: Prilagođeni upiti + label_query_new: Novi upit + label_filter_add: Dodavanje filtera + label_filter_plural: Filteri + label_equals: je + label_not_equals: nije + label_in_less_than: manje od + label_in_more_than: više od + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: u + label_today: danas + label_all_time: sve vreme + label_yesterday: juče + label_this_week: ove sedmice + label_last_week: poslednje sedmice + label_last_n_days: "poslednjih %{count} dana" + label_this_month: ovog meseca + label_last_month: poslednjeg meseca + label_this_year: ove godine + label_date_range: Vremenski period + label_less_than_ago: pre manje od nekoliko dana + label_more_than_ago: pre više od nekoliko dana + label_ago: pre nekoliko dana + label_contains: sadrži + label_not_contains: ne sadrži + label_day_plural: dana + label_repository: Spremište + label_repository_plural: Spremišta + label_browse: Pregledanje + label_modification: "%{count} promena" + label_modification_plural: "%{count} promena" + label_branch: Grana + label_tag: Oznaka + label_revision: Revizija + label_revision_plural: Revizije + label_revision_id: "Revizija %{value}" + label_associated_revisions: Pridružene revizije + label_added: dodato + label_modified: promenjeno + label_copied: kopirano + label_renamed: preimenovano + label_deleted: izbrisano + label_latest_revision: Poslednja revizija + label_latest_revision_plural: Poslednje revizije + label_view_revisions: Pregled revizija + label_view_all_revisions: Pregled svih revizija + label_max_size: Maksimalna veličina + label_sort_highest: Premeštanje na vrh + label_sort_higher: Premeštanje na gore + label_sort_lower: Premeštanje na dole + label_sort_lowest: Premeštanje na dno + label_roadmap: Plan rada + label_roadmap_due_in: "Dospeva %{value}" + label_roadmap_overdue: "%{value} najkasnije" + label_roadmap_no_issues: Nema problema za ovu verziju + label_search: Pretraga + label_result_plural: Rezultati + label_all_words: Sve reči + label_wiki: Wiki + label_wiki_edit: Wiki izmena + label_wiki_edit_plural: Wiki izmene + label_wiki_page: Wiki stranica + label_wiki_page_plural: Wiki stranice + label_index_by_title: Indeksiranje po naslovu + label_index_by_date: Indeksiranje po datumu + label_current_version: Trenutna verzija + label_preview: Pregled + label_feed_plural: Izvori vesti + label_changes_details: Detalji svih promena + label_issue_tracking: Praćenje problema + label_spent_time: Utrošeno vreme + label_overall_spent_time: Celokupno utrošeno vreme + label_f_hour: "%{value} sat" + label_f_hour_plural: "%{value} sati" + label_time_tracking: Praćenje vremena + label_change_plural: Promene + label_statistics: Statistika + label_commits_per_month: Izvršenja mesečno + label_commits_per_author: Izvršenja po autoru + label_view_diff: Pogledaj razlike + label_diff_inline: unutra + label_diff_side_by_side: uporedo + label_options: Opcije + label_copy_workflow_from: Kopiranje toka posla od + label_permissions_report: Izveštaj o dozvolama + label_watched_issues: Posmatrani problemi + label_related_issues: Srodni problemi + label_applied_status: Primenjeni statusi + label_loading: Učitavanje... + label_relation_new: Nova relacija + label_relation_delete: Brisanje relacije + label_relates_to: srodnih sa + label_duplicates: dupliranih + label_duplicated_by: dupliranih od + label_blocks: odbijenih + label_blocked_by: odbijenih od + label_precedes: prethodi + label_follows: praćenih + label_end_to_start: od kraja do početka + label_end_to_end: od kraja do kraja + label_start_to_start: od početka do početka + label_start_to_end: od početka do kraja + label_stay_logged_in: Ostanite prijavljeni + label_disabled: onemogućeno + label_show_completed_versions: Prikazivanje završene verzije + label_me: meni + label_board: Forum + label_board_new: Novi forum + label_board_plural: Forumi + label_board_locked: Zaključana + label_board_sticky: Lepljiva + label_topic_plural: Teme + label_message_plural: Poruke + label_message_last: Poslednja poruka + label_message_new: Nova poruka + label_message_posted: Poruka je dodata + label_reply_plural: Odgovori + label_send_information: Pošalji korisniku detalje naloga + label_year: Godina + label_month: Mesec + label_week: Sedmica + label_date_from: Šalje + label_date_to: Prima + label_language_based: Bazirano na jeziku korisnika + label_sort_by: "Sortirano po %{value}" + label_send_test_email: Slanje probne e-poruke + label_feeds_access_key: RSS pristupni ključ + label_missing_feeds_access_key: RSS pristupni ključ nedostaje + label_feeds_access_key_created_on: "RSS pristupni ključ je napravljen pre %{value}" + label_module_plural: Moduli + label_added_time_by: "Dodao %{author} pre %{age}" + label_updated_time_by: "Ažurirao %{author} pre %{age}" + label_updated_time: "Ažurirano pre %{value}" + label_jump_to_a_project: Skok na projekat... + label_file_plural: Datoteke + label_changeset_plural: Skupovi promena + label_default_columns: Podrazumevane kolone + label_no_change_option: (Bez promena) + label_bulk_edit_selected_issues: Grupna izmena odabranih problema + label_theme: Tema + label_default: Podrazumevano + label_search_titles_only: Pretražuj samo naslove + label_user_mail_option_all: "Za bilo koji događaj na svim mojim projektima" + label_user_mail_option_selected: "Za bilo koji događaj na samo odabranim projektima..." + label_user_mail_no_self_notified: "Ne želim biti obaveštavan za promene koje sam pravim" + label_registration_activation_by_email: aktivacija naloga putem e-poruke + label_registration_manual_activation: ručna aktivacija naloga + label_registration_automatic_activation: automatska aktivacija naloga + label_display_per_page: "Broj stavki po stranici: %{value}" + label_age: Starost + label_change_properties: Promeni svojstva + label_general: Opšti + label_more: Više + label_scm: SCM + label_plugins: Dodatne komponente + label_ldap_authentication: LDAP potvrda identiteta + label_downloads_abbr: D/L + label_optional_description: Opciono opis + label_add_another_file: Dodaj još jednu datoteku + label_preferences: Podešavanja + label_chronological_order: po hronološkom redosledu + label_reverse_chronological_order: po obrnutom hronološkom redosledu + label_planning: Planiranje + label_incoming_emails: Dolazne e-poruke + label_generate_key: Generisanje ključa + label_issue_watchers: Posmatrači + label_example: Primer + label_display: Prikaz + label_sort: Sortiranje + label_ascending: Rastući niz + label_descending: Opadajući niz + label_date_from_to: Od %{start} do %{end} + label_wiki_content_added: Wiki stranica je dodata + label_wiki_content_updated: Wiki stranica je ažurirana + label_group: Grupa + label_group_plural: Grupe + label_group_new: Nova grupa + label_time_entry_plural: Utrošeno vreme + label_version_sharing_none: Nije deljeno + label_version_sharing_descendants: Sa potprojektima + label_version_sharing_hierarchy: Sa hijerarhijom projekta + label_version_sharing_tree: Sa stablom projekta + label_version_sharing_system: Sa svim projektima + label_update_issue_done_ratios: Ažuriraj odnos rešenih problema + label_copy_source: Izvor + label_copy_target: Odredište + label_copy_same_as_target: Isto kao odredište + label_display_used_statuses_only: Prikazuj statuse korišćene samo od strane ovog praćenja + label_api_access_key: API pristupni ključ + label_missing_api_access_key: Nedostaje API pristupni ključ + label_api_access_key_created_on: "API pristupni ključ je kreiran pre %{value}" + label_profile: Profil + label_subtask_plural: Podzadatak + label_project_copy_notifications: Pošalji e-poruku sa obaveštenjem prilikom kopiranja projekta + + button_login: Prijava + button_submit: Pošalji + button_save: Snimi + button_check_all: Uključi sve + button_uncheck_all: Isključi sve + button_delete: Izbriši + button_create: Kreiraj + button_create_and_continue: Kreiraj i nastavi + button_test: Test + button_edit: Izmeni + button_add: Dodaj + button_change: Promeni + button_apply: Primeni + button_clear: Obriši + button_lock: Zaključaj + button_unlock: Otključaj + button_download: Preuzmi + button_list: Spisak + button_view: Prikaži + button_move: Pomeri + button_move_and_follow: Pomeri i prati + button_back: Nazad + button_cancel: Poništi + button_activate: Aktiviraj + button_sort: Sortiraj + button_log_time: Evidentiraj vreme + button_rollback: Povratak na ovu verziju + button_watch: Prati + button_unwatch: Ne prati više + button_reply: Odgovori + button_archive: Arhiviraj + button_unarchive: Vrati iz arhive + button_reset: Poništi + button_rename: Preimenuj + button_change_password: Promeni lozinku + button_copy: Kopiraj + button_copy_and_follow: Kopiraj i prati + button_annotate: Pribeleži + button_update: Ažuriraj + button_configure: Podesi + button_quote: Pod navodnicima + button_duplicate: Dupliraj + button_show: Prikaži + + status_active: aktivni + status_registered: registrovani + status_locked: zaključani + + version_status_open: otvoren + version_status_locked: zaključan + version_status_closed: zatvoren + + field_active: Aktivan + + text_select_mail_notifications: Odaberi akcije za koje će obaveštenje biti poslato putem e-pošte. + text_regexp_info: npr. ^[A-Z0-9]+$ + text_min_max_length_info: 0 znači bez ograničenja + text_project_destroy_confirmation: Jeste li sigurni da želite da izbrišete ovaj projekat i sve pripadajuće podatke? + text_subprojects_destroy_warning: "Potprojekti: %{value} će takođe biti izbrisan." + text_workflow_edit: Odaberite ulogu i praćenje za izmenu toka posla + text_are_you_sure: Jeste li sigurni? + text_journal_changed: "%{label} promenjen od %{old} u %{new}" + text_journal_set_to: "%{label} postavljen u %{value}" + text_journal_deleted: "%{label} izbrisano (%{old})" + text_journal_added: "%{label} %{value} dodato" + text_tip_issue_begin_day: zadatak počinje ovog dana + text_tip_issue_end_day: zadatak se završava ovog dana + text_tip_issue_begin_end_day: zadatak počinje i završava ovog dana + text_project_identifier_info: 'Dozvoljena su samo mala slova (a-š), brojevi i crtice.
    Jednom snimljen identifikator više se ne može promeniti.' + text_caracters_maximum: "Najviše %{count} znak(ova)." + text_caracters_minimum: "Broj znakova mora biti najmanje %{count}." + text_length_between: "Broj znakova mora biti između %{min} i %{max}." + text_tracker_no_workflow: Ovo praćenje nema definisan tok posla + text_unallowed_characters: Nedozvoljeni znakovi + text_comma_separated: Dozvoljene su višestruke vrednosti (odvojene zarezom). + text_line_separated: Dozvoljene su višestruke vrednosti (jedan red za svaku vrednost). + text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvršnim porukama + text_issue_added: "%{author} je prijavio problem %{id}." + text_issue_updated: "%{author} je ažurirao problem %{id}." + text_wiki_destroy_confirmation: Jeste li sigurni da želite da obrišete wiki i sav sadržaj? + text_issue_category_destroy_question: "Nekoliko problema (%{count}) je dodeljeno ovoj kategoriji. Šta želite da uradite?" + text_issue_category_destroy_assignments: Ukloni dodeljene kategorije + text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji + text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveštenje o stvarima koje pratite ili ste uključeni (npr. problemi čiji ste vi autor ili zastupnik)." + text_no_configuration_data: "Uloge, praćenja, statusi problema i toka posla još uvek nisu podešeni.\nPreporučljivo je da učitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog učitavanja." + text_load_default_configuration: Učitaj podrazumevano konfigurisanje + text_status_changed_by_changeset: "Primenjeno u skupu sa promenama %{value}." + text_issues_destroy_confirmation: 'Jeste li sigurni da želite da izbrišete odabrane probleme?' + text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:' + text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen + text_file_repository_writable: Fascikla priloženih datoteka je upisiva + text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva + text_rmagick_available: RMagick je dostupan (opciono) + text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji želite izbrisati. Šta želite da uradite?" + text_destroy_time_entries: Izbriši prijavljene sate + text_assign_time_entries_to_project: Dodeli prijavljene sate projektu + text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:' + text_user_wrote: "%{value} je napisao:" + text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti." + text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' + text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." + text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani." + text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.' + text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' + text_wiki_page_destroy_question: "Ova stranica ima %{descendants} podređenih stranica i podstranica. Šta želite da uradite?" + text_wiki_page_nullify_children: "Zadrži podređene stranice kao korene stranice" + text_wiki_page_destroy_children: "Izbriši podređene stranice i sve njihove podstranice" + text_wiki_page_reassign_children: "Dodeli ponovo podređene stranice ovoj matičnoj stranici" + text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaših dozvola nećete više moći da uređujete ovaj projekat.\nŽelite li da nastavite?" + text_zoom_in: Uvećaj + text_zoom_out: Umanji + + default_role_manager: Menadžer + default_role_developer: Programer + default_role_reporter: Izveštač + default_tracker_bug: Greška + default_tracker_feature: Funkcionalnost + default_tracker_support: Podrška + default_issue_status_new: Novo + default_issue_status_in_progress: U toku + default_issue_status_resolved: Rešeno + default_issue_status_feedback: Povratna informacija + default_issue_status_closed: Zatvoreno + default_issue_status_rejected: Odbijeno + default_doc_category_user: Korisnička dokumentacija + default_doc_category_tech: Tehnička dokumentacija + default_priority_low: Nizak + default_priority_normal: Normalan + default_priority_high: Visok + default_priority_urgent: Hitno + default_priority_immediate: Neposredno + default_activity_design: Dizajn + default_activity_development: Razvoj + + enumeration_issue_priorities: Prioriteti problema + enumeration_doc_categories: Kategorije dokumenta + enumeration_activities: Aktivnosti (praćenje vremena) + enumeration_system_activity: Sistemska aktivnost + + field_time_entries: Vreme evidencije + project_module_gantt: Gantov dijagram + project_module_calendar: Kalendar + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + label_user_mail_option_none: No events + field_member_of_group: Assignee's group + field_assigned_to_role: Assignee's role + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Kodiranje izvršnih poruka + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/sr.yml --- a/config/locales/sr.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/sr.yml Mon Jun 06 14:41:04 2011 +0100 @@ -18,7 +18,10 @@ month_names: [~, јануар, фебруар, март, април, мај, јун, јул, август, септембар, октобар, новембар, децембар] abbr_month_names: [~, јан, феб, мар, апр, мај, јун, јул, авг, сеп, окт, нов, дец] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -266,7 +269,7 @@ field_attr_mail: Атрибут е-адресе field_onthefly: Креирање корисника у току рада field_start_date: Почетак - field_done_ratio: % урађено + field_done_ratio: "% урађено" field_auth_source: Режим потврде идентитета field_hide_mail: Сакриј моју е-адресу field_comments: Коментар @@ -323,7 +326,6 @@ setting_cross_project_issue_relations: Дозволи повезивање проблема из унакрсних пројеката setting_issue_list_default_columns: Подразумеване колоне приказане на списку проблема setting_repositories_encodings: Кодирање спремишта - setting_commit_logs_encoding: Кодирање извршних порука setting_emails_footer: Подножје странице е-поруке setting_protocol: Протокол setting_per_page_options: Опције приказа објеката по страници @@ -942,3 +944,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Кодирање извршних порука + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/sv.yml --- a/config/locales/sv.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/sv.yml Mon Jun 06 14:41:04 2011 +0100 @@ -130,7 +130,7 @@ greater_than_start_date: "måste vara senare än startdatumet" not_same_project: "tillhör inte samma projekt" circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "Ett ärende kan inte länkas till ett av dess underärenden" direction: ltr date: @@ -149,7 +149,10 @@ month_names: [~, januari, februari, mars, april, maj, juni, juli, augusti, september, oktober, november, december] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -176,7 +179,7 @@ general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_pdf_encoding: UTF-8 general_first_day_of_week: '1' notice_account_updated: Kontot har uppdaterats @@ -207,7 +210,7 @@ notice_default_data_loaded: Standardkonfiguration inläst. notice_unable_delete_version: Denna version var inte möjlig att ta bort. notice_unable_delete_time_entry: Tidloggning kunde inte tas bort. - notice_issue_done_ratios_updated: % klart uppdaterade. + notice_issue_done_ratios_updated: "% klart uppdaterade." notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som får visas (%{max})" error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}" @@ -310,7 +313,7 @@ field_attr_mail: Mailattribut field_onthefly: Skapa användare on-the-fly field_start_date: Startdatum - field_done_ratio: % Klart + field_done_ratio: "% Klart" field_auth_source: Autentiseringsläge field_hide_mail: Dölj min mailadress field_comments: Kommentar @@ -345,6 +348,9 @@ field_assigned_to_role: "Tilldelad användares roll" field_text: Textfält field_visible: Synlig + field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text + field_issues_visibility: Ärendesynlighet + field_is_private: Privat setting_app_title: Applikationsrubrik setting_app_subtitle: Applikationsunderrubrik @@ -372,7 +378,6 @@ setting_cross_project_issue_relations: Tillåt ärenderelationer mellan projekt setting_issue_list_default_columns: Standardkolumner i ärendelistan setting_repositories_encodings: Teckenuppsättningar för versionsarkiv - setting_commit_logs_encoding: Teckenuppsättning för commit-meddelanden setting_emails_header: Mail-header setting_emails_footer: Signatur setting_protocol: Protokoll @@ -417,6 +422,8 @@ permission_edit_issues: Ändra ärenden permission_view_issues: Visa ärenden permission_manage_issue_relations: Hantera ärenderelationer + permission_set_issues_private: Sätta ärenden publika eller privata + permission_set_own_issues_private: Sätta egna ärenden publika eller privata permission_add_issue_notes: Lägga till ärendenotering permission_edit_issue_notes: Ändra ärendenoteringar permission_edit_own_issue_notes: Ändra egna ärendenoteringar @@ -492,6 +499,9 @@ label_issues_by: "Ärenden %{value}" label_issue_added: Ärende tillagt label_issue_updated: Ärende uppdaterat + label_issue_note_added: Anteckning tillagd + label_issue_status_updated: Status uppdaterad + label_issue_priority_updated: Prioritet uppdaterad label_document: Dokument label_document_new: Nytt dokument label_document_plural: Dokument @@ -500,6 +510,8 @@ label_role_plural: Roller label_role_new: Ny roll label_role_and_permissions: Roller och behörigheter + label_role_anonymous: Anonym + label_role_non_member: Icke-medlem label_member: Medlem label_member_new: Ny medlem label_member_plural: Medlemmar @@ -579,6 +591,7 @@ label_news_latest: Senaste nyheterna label_news_view_all: Visa alla nyheter label_news_added: Nyhet tillagd + label_news_comment_added: Kommentar tillagd till en nyhet label_settings: Inställningar label_overview: Översikt label_version: Version @@ -637,6 +650,7 @@ label_query: Användardefinerad fråga label_query_plural: Användardefinerade frågor label_query_new: Ny fråga + label_my_queries: Mina egna frågor label_filter_add: Lägg till filter label_filter_plural: Filter label_equals: är @@ -775,6 +789,7 @@ label_default_columns: Standardkolumner label_no_change_option: (Ingen ändring) label_bulk_edit_selected_issues: Gemensam ändring av markerade ärenden + label_bulk_edit_selected_time_entries: Gruppredigera valda tidloggningar label_theme: Tema label_default: Standard label_search_titles_only: Sök endast i titlar @@ -836,12 +851,19 @@ label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras label_principal_search: "Sök efter användare eller grupp:" label_user_search: "Sök efter användare:" + label_additional_workflow_transitions_for_author: Ytterligare övergångar tillåtna när användaren är den som skapat ärendet + label_additional_workflow_transitions_for_assignee: Ytterligare övergångar tillåtna när användaren är den som tilldelats ärendet + label_issues_visibility_all: Alla ärenden + label_issues_visibility_public: Alla icke-privata ärenden + label_issues_visibility_own: Ärenden skapade av eller tilldelade till användaren button_login: Logga in button_submit: Skicka button_save: Spara button_check_all: Markera alla button_uncheck_all: Avmarkera alla + button_collapse_all: Kollapsa alla + button_expand_all: Expandera alla button_delete: Ta bort button_create: Skapa button_create_and_continue: Skapa och fortsätt @@ -901,6 +923,7 @@ text_are_you_sure: Är du säker ? text_are_you_sure_with_children: Ta bort ärende och alla underärenden? text_journal_changed: "%{label} ändrad från %{old} till %{new}" + text_journal_changed_no_detail: "%{label} uppdaterad" text_journal_set_to: "%{label} satt till %{value}" text_journal_deleted: "%{label} borttagen (%{old})" text_journal_added: "%{label} %{value} tillagd" @@ -928,6 +951,8 @@ text_status_changed_by_changeset: "Tilldelad i changeset %{value}." text_time_logged_by_changeset: "Tilldelad i changeset %{value}." text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?' + text_issues_destroy_descendants_confirmation: Detta kommer även ta bort %{count} underaktivitet(er). + text_time_entries_destroy_confirmation: Är du säker på att du vill ta bort valda tidloggningar? text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:' text_default_administrator_account_changed: Standardadministratörens konto ändrat text_file_repository_writable: Arkivet för bifogade filer är skrivbart @@ -951,6 +976,7 @@ text_own_membership_delete_confirmation: "Några av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?" text_zoom_out: Zooma ut text_zoom_in: Zooma in + text_warn_on_leaving_unsaved: Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan. default_role_manager: Projektledare default_role_developer: Utvecklare @@ -978,7 +1004,17 @@ enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/th.yml --- a/config/locales/th.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/th.yml Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -238,7 +241,7 @@ field_attr_mail: อีเมล์ attribute field_onthefly: สร้างผู้ใช้ทันที field_start_date: เริ่ม - field_done_ratio: % สำเร็จ + field_done_ratio: "% สำเร็จ" field_auth_source: วิธีการยืนยันตัวตน field_hide_mail: ซ่อนอีเมล์ของฉัน field_comments: ความเห็น @@ -730,7 +733,6 @@ text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers - setting_commit_logs_encoding: Commit messages encoding button_quote: Quote setting_sequential_project_identifiers: Generate sequential project identifiers notice_unable_delete_version: Unable to delete version @@ -938,3 +940,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/tr.yml --- a/config/locales/tr.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/tr.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,6 @@ -# Turkish translations for Ruby on Rails +# Turkish translations for Ruby on Rails # by Ozgun Ataman (ozataman@gmail.com) +# by Burak Yigit Kaya (ben@byk.im) tr: locale: @@ -18,8 +19,11 @@ abbr_day_names: [Pzr, Pzt, Sal, Çrş, Prş, Cum, Cts] month_names: [~, Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık] abbr_month_names: [~, Oca, Şub, Mar, Nis, May, Haz, Tem, Ağu, Eyl, Eki, Kas, Ara] - order: [ :day, :month, :year ] - + order: + - :day + - :month + - :year + time: formats: default: "%a %d.%b.%y %H:%M" @@ -30,7 +34,7 @@ am: "öğleden önce" pm: "öğleden sonra" - + datetime: distance_in_words: half_a_minute: 'yarım dakika' @@ -49,27 +53,27 @@ one: '1 dakika' other: '%{count} dakika' about_x_hours: - one: '1 saat civarında' - other: '%{count} saat civarında' + one: 'yaklaşık 1 saat' + other: 'yaklaşık %{count} saat' x_days: one: '1 gün' other: '%{count} gün' about_x_months: - one: '1 ay civarında' - other: '%{count} ay civarında' + one: 'yaklaşık 1 ay' + other: 'yaklaşık %{count} ay' x_months: one: '1 ay' other: '%{count} ay' about_x_years: - one: '1 yıl civarında' - other: '%{count} yıl civarında' + one: 'yaklaşık 1 yıl' + other: 'yaklaşık %{count} yıl' over_x_years: one: '1 yıldan fazla' other: '%{count} yıldan fazla' almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" - + one: "neredeyse 1 Yıl" + other: "neredeyse %{count} yıl" + number: format: precision: 2 @@ -101,7 +105,7 @@ units: byte: one: "Byte" - other: "Bytes" + other: "Byte" kb: "KB" mb: "MB" gb: "GB" @@ -111,7 +115,7 @@ array: sentence_connector: "ve" skip_last_comma: true - + activerecord: errors: template: @@ -143,21 +147,21 @@ greater_than_start_date: "başlangıç tarihinden büyük olmalı" not_same_project: "aynı projeye ait değil" circular_dependency: "Bu ilişki döngüsel bağımlılık meydana getirecektir" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "Bir iş, alt işlerinden birine bağlanamaz" models: - + actionview_instancetag_blank_option: Lütfen Seçin - + general_text_No: 'Hayır' general_text_Yes: 'Evet' general_text_no: 'hayır' general_text_yes: 'evet' general_lang_name: 'Türkçe' general_csv_separator: ',' - general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 + general_csv_encoding: ISO-8859-9 + general_pdf_encoding: UTF-8 general_first_day_of_week: '7' - + notice_account_updated: Hesap başarıyla güncelleştirildi. notice_account_invalid_creditentials: Geçersiz kullanıcı ya da parola notice_account_password_updated: Parola başarıyla güncellendi. @@ -178,30 +182,30 @@ notice_email_error: "E-posta gönderilirken bir hata oluştu (%{value})" notice_feeds_access_key_reseted: RSS erişim anahtarınız sıfırlandı. notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_no_issue_selected: "Seçili ileti yok! Lütfen, düzenlemek istediğiniz iletileri işaretleyin." + notice_no_issue_selected: "Seçili iş yok! Lütfen, düzenlemek istediğiniz işleri işaretleyin." notice_account_pending: "Hesabınız oluşturuldu ve yönetici onayı bekliyor." notice_default_data_loaded: Varasayılan konfigürasyon başarılıyla yüklendi. - + error_can_t_load_default_data: "Varsayılan konfigürasyon yüklenemedi: %{value}" - error_scm_not_found: "Depoda, giriş ya da revizyon yok." + error_scm_not_found: "Depoda, giriş ya da değişiklik yok." error_scm_command_failed: "Depoya erişmeye çalışırken bir hata meydana geldi: %{value}" error_scm_annotate: "Giriş mevcut değil veya izah edilemedi." - error_issue_not_found_in_project: 'İleti bilgisi bulunamadı veya bu projeye ait değil' - + error_issue_not_found_in_project: 'İş bilgisi bulunamadı veya bu projeye ait değil' + mail_subject_lost_password: "Parolanız %{value}" mail_body_lost_password: 'Parolanızı değiştirmek için, aşağıdaki bağlantıya tıklayın:' - mail_subject_register: "Your %{value} hesap aktivasyonu" + mail_subject_register: "%{value} hesap aktivasyonu" mail_body_register: 'Hesabınızı etkinleştirmek için, aşağıdaki bağlantıya tıklayın:' mail_body_account_information_external: "Hesabınızı %{value} giriş yapmak için kullanabilirsiniz." mail_body_account_information: Hesap bilgileriniz mail_subject_account_activation_request: "%{value} hesabı etkinleştirme isteği" mail_body_account_activation_request: "Yeni bir kullanıcı (%{value}) kaydedildi. Hesap onaylanmayı bekliyor:" - + gui_validation_error: 1 hata gui_validation_error_plural: "%{count} hata" - + field_name: İsim - field_description: Açıklama + field_description: Yorum field_summary: Özet field_is_required: Gerekli field_firstname: Ad @@ -211,11 +215,11 @@ field_filesize: Boyut field_downloads: İndirilenler field_author: Yazar - field_created_on: Oluşturuldu - field_updated_on: Güncellendi + field_created_on: Oluşturulma + field_updated_on: Güncellenme field_field_format: Biçim field_is_for_all: Tüm projeler için - field_possible_values: Mümkün değerler + field_possible_values: Kullanılabilir değerler field_regexp: Düzenli ifadeler field_min_length: En az uzunluk field_max_length: En çok uzunluk @@ -223,23 +227,23 @@ field_category: Kategori field_title: Başlık field_project: Proje - field_issue: İleti + field_issue: İş field_status: Durum field_notes: Notlar - field_is_closed: İleti kapatıldı + field_is_closed: İş kapatıldı field_is_default: Varsayılan Değer - field_tracker: Takipçi + field_tracker: İş tipi field_subject: Konu field_due_date: Bitiş Tarihi field_assigned_to: Atanan field_priority: Öncelik - field_fixed_version: Hedef Version + field_fixed_version: Hedef Sürüm field_user: Kullanıcı field_role: Rol field_homepage: Anasayfa field_is_public: Genel field_parent: 'Üst proje: ' - field_is_in_roadmap: Yol haritasında gösterilen iletiler + field_is_in_roadmap: Yol haritasında gösterilen işler field_login: Giriş field_mail_notification: E-posta uyarıları field_admin: Yönetici @@ -249,7 +253,7 @@ field_password: Parola field_new_password: Yeni Parola field_password_confirmation: Onay - field_version: Versiyon + field_version: Sürüm field_type: Tip field_host: Host field_port: Port @@ -260,38 +264,38 @@ field_attr_lastname: Soyad Niteliği field_attr_mail: E-Posta Niteliği field_onthefly: Anında kullanıcı oluşturma - field_start_date: Başlangıç - field_done_ratio: % tamamlandı + field_start_date: Başlangıç Tarihi + field_done_ratio: Tamamlanma yüzdesi field_auth_source: Kimlik Denetim Modu field_hide_mail: E-posta adresimi gizle - field_comments: Açıklama + field_comments: Yorumlar field_url: URL field_start_page: Başlangıç Sayfası field_subproject: Alt Proje - field_hours: Saatler - field_activity: Faaliyet + field_hours: Saat + field_activity: Etkinlik field_spent_on: Tarih field_identifier: Tanımlayıcı field_is_filter: filtre olarak kullanılmış - field_issue_to: İlişkili ileti + field_issue_to: İlişkili iş field_delay: Gecikme - field_assignable: Bu role atanabilecek iletiler - field_redirect_existing_links: Mevcut bağlantıları tekrar yönlendir + field_assignable: Bu role atanabilecek işler + field_redirect_existing_links: Mevcut bağlantıları yönlendir field_estimated_hours: Kalan zaman field_column_names: Sütunlar field_time_zone: Saat dilimi field_searchable: Aranabilir field_default_value: Varsayılan değer - field_comments_sorting: Açıklamaları göster - + field_comments_sorting: Yorumları göster + setting_app_title: Uygulama Bağlığı setting_app_subtitle: Uygulama alt başlığı setting_welcome_text: Hoşgeldin Mesajı setting_default_language: Varsayılan Dil setting_login_required: Kimlik denetimi gerekli mi setting_self_registration: Otomatik kayıt - setting_attachment_max_size: Maksimum Ek boyutu - setting_issues_export_limit: İletilerin dışa aktarılma sınırı + setting_attachment_max_size: Maksimum ek boyutu + setting_issues_export_limit: İşlerin dışa aktarılma sınırı setting_mail_from: Gönderici e-posta adresi setting_bcc_recipients: Alıcıları birbirinden gizle (bcc) setting_host_name: Host adı @@ -306,17 +310,17 @@ setting_autologin: Otomatik Giriş setting_date_format: Tarih Formati setting_time_format: Zaman Formatı - setting_cross_project_issue_relations: Çapraz-Proje ileti ilişkilendirmesine izin ver - setting_issue_list_default_columns: İleti listesinde gösterilen varsayılan sütunlar + setting_cross_project_issue_relations: Çapraz-Proje iş ilişkilendirmesine izin ver + setting_issue_list_default_columns: İş listesinde gösterilen varsayılan sütunlar setting_repositories_encodings: Depo dil kodlaması setting_emails_footer: E-posta dip not setting_protocol: Protokol - setting_per_page_options: Sayfa seçenekleri başına nesneler - setting_user_format: Kullanıcı gösterim formatı - setting_activity_days_default: Proje Faaliyetlerinde gösterilen gün sayısı - setting_display_subprojects_issues: Varsayılan olarak ana projenin ileti listesinde alt proje iletilerini göster - - project_module_issue_tracking: İleti Takibi + setting_per_page_options: Sayfada başına öğe sayısı + setting_user_format: Kullanıcı gösterim biçimi + setting_activity_days_default: Proje etkinliklerinde gösterilen gün sayısı + setting_display_subprojects_issues: Varsayılan olarak ana projenin iş listesinde alt proje işlerini göster + + project_module_issue_tracking: İş Takibi project_module_time_tracking: Zaman Takibi project_module_news: Haberler project_module_documents: Belgeler @@ -324,7 +328,7 @@ project_module_wiki: Wiki project_module_repository: Depo project_module_boards: Tartışma Alanı - + label_user: Kullanıcı label_user_plural: Kullanıcılar label_user_new: Yeni Kullanıcı @@ -332,18 +336,18 @@ label_project_new: Yeni proje label_project_plural: Projeler label_x_projects: - zero: no projects - one: 1 project - other: "%{count} projects" + zero: hiç proje yok + one: 1 proje + other: "%{count} proje" label_project_all: Tüm Projeler label_project_latest: En son projeler - label_issue: İleti - label_issue_new: Yeni İleti - label_issue_plural: İletiler - label_issue_view_all: Tüm iletileri izle - label_issues_by: "%{value} tarafından gönderilmiş iletiler" - label_issue_added: İleti eklendi - label_issue_updated: İleti güncellendi + label_issue: İş + label_issue_new: Yeni İş + label_issue_plural: İşler + label_issue_view_all: Tüm işleri izle + label_issues_by: "%{value} tarafından gönderilmiş işler" + label_issue_added: İş eklendi + label_issue_updated: İş güncellendi label_document: Belge label_document_new: Yeni belge label_document_plural: Belgeler @@ -355,15 +359,15 @@ label_member: Üye label_member_new: Yeni üye label_member_plural: Üyeler - label_tracker: Takipçi - label_tracker_plural: Takipçiler - label_tracker_new: Yeni takipçi + label_tracker: İş tipi + label_tracker_plural: İş tipleri + label_tracker_new: Yeni iş tipi label_workflow: İş akışı - label_issue_status: İleti durumu - label_issue_status_plural: İleti durumuları + label_issue_status: İş durumu + label_issue_status_plural: İş durumuları label_issue_status_new: Yeni durum - label_issue_category: İleti kategorisi - label_issue_category_plural: İleti kategorileri + label_issue_category: İş kategorisi + label_issue_category_plural: İş kategorileri label_issue_category_new: Yeni kategori label_custom_field: Özel alan label_custom_field_plural: Özel alanlar @@ -374,22 +378,22 @@ label_information_plural: Bilgi label_please_login: Lütfen giriş yapın label_register: Kayıt - label_password_lost: Parolamı unuttum? + label_password_lost: Parolamı unuttum label_home: Anasayfa label_home_heading: Anasayfa label_my_page: Kişisel Sayfam label_my_account: Hesabım label_my_projects: Projelerim label_administration: Yönetim - label_login: Gir + label_login: Giriş label_logout: Çıkış label_help: Yardım - label_reported_issues: Rapor edilmiş iletiler - label_assigned_to_me_issues: Bana atanmış iletiler + label_reported_issues: Rapor edilmiş işler + label_assigned_to_me_issues: Bana atanmış işler label_last_login: Son bağlantı - label_registered_on: Kayıtlı - label_activity: Faaliyet - label_overall_activity: Tüm aktiviteler + label_registered_on: Kayıt tarihi + label_activity: Etkinlik + label_overall_activity: Tüm etkinlikler label_new: Yeni label_logged_as: "Kullanıcı :" label_environment: Çevre @@ -402,14 +406,14 @@ label_list: Liste label_date: Tarih label_integer: Tam sayı - label_float: Noktalı sayı - label_boolean: Boolean + label_float: Ondalıklı sayı + label_boolean: "Evet/Hayır" label_string: Metin label_text: Uzun Metin label_attribute: Nitelik label_attribute_plural: Nitelikler - label_download: "%{count} indirilen" - label_download_plural: "%{count} indirilen" + label_download: "%{count} indirme" + label_download_plural: "%{count} indirme" label_no_data: Gösterilecek veri yok label_change_status: Değişim Durumu label_history: Geçmiş @@ -428,29 +432,29 @@ label_news_added: Haber eklendi label_settings: Ayarlar label_overview: Genel - label_version: Versiyon - label_version_new: Yeni versiyon - label_version_plural: Versiyonlar + label_version: Sürüm + label_version_new: Yeni sürüm + label_version_plural: Sürümler label_confirmation: Doğrulamama - label_export_to: 'Diğer uygun kaynaklar:' - label_read: Oku... + label_export_to: "Diğer uygun kaynaklar:" + label_read: "Oku..." label_public_projects: Genel Projeler label_open_issues: açık label_open_issues_plural: açık label_closed_issues: kapalı label_closed_issues_plural: kapalı label_x_open_issues_abbr_on_total: - zero: 0 open / %{total} - one: 1 open / %{total} - other: "%{count} open / %{total}" + zero: tamamı kapalı, toplam %{total} + one: 1'i' açık, toplam %{total} + other: "%{count} açık, toplam %{total}" label_x_open_issues_abbr: - zero: 0 open - one: 1 open - other: "%{count} open" + zero: hiç açık yok + one: 1 açık + other: "%{count} açık" label_x_closed_issues_abbr: - zero: 0 closed - one: 1 closed - other: "%{count} closed" + zero: hiç kapalı yok + one: 1 kapalı + other: "%{count} kapalı" label_total: Toplam label_permissions: İzinler label_current_status: Mevcut Durum @@ -461,25 +465,25 @@ label_next: Sonraki label_previous: Önceki label_used_by: 'Kullanan: ' - label_details: Detaylar - label_add_note: Bir not ekle + label_details: Ayrıntılar + label_add_note: Not ekle label_per_page: Sayfa başına label_calendar: Takvim - label_months_from: aylardan itibaren - label_gantt: Gantt + label_months_from: ay öncesinden itibaren + label_gantt: İş-Zaman Çizelgesi label_internal: Dahili label_last_changes: "Son %{count} değişiklik" label_change_view_all: Tüm Değişiklikleri gör label_personalize_page: Bu sayfayı kişiselleştir - label_comment: Açıklama - label_comment_plural: Açıklamalar + label_comment: Yorum + label_comment_plural: Yorumlar label_x_comments: - zero: no comments - one: 1 comment - other: "%{count} comments" - label_comment_add: Açıklama Ekle - label_comment_added: Açıklama Eklendi - label_comment_delete: Açıklamaları sil + zero: hiç yorum yok + one: 1 yorum + other: "%{count} yorum" + label_comment_add: Yorum Ekle + label_comment_added: Yorum Eklendi + label_comment_delete: Yorumları sil label_query: Özel Sorgu label_query_plural: Özel Sorgular label_query_new: Yeni Sorgu @@ -508,27 +512,27 @@ label_day_plural: Günler label_repository: Depo label_repository_plural: Depolar - label_browse: Tara + label_browse: Gözat label_modification: "%{count} değişim" label_modification_plural: "%{count} değişim" - label_revision: Revizyon - label_revision_plural: Revizyonlar - label_associated_revisions: Birleştirilmiş revizyonlar + label_revision: Değişiklik + label_revision_plural: Değişiklikler + label_associated_revisions: Birleştirilmiş değişiklikler label_added: eklendi label_modified: güncellendi label_deleted: silindi - label_latest_revision: En son revizyon - label_latest_revision_plural: En son revizyonlar - label_view_revisions: Revizyonları izle + label_latest_revision: En son değişiklik + label_latest_revision_plural: En son değişiklikler + label_view_revisions: Değişiklikleri izle label_max_size: En büyük boyut label_sort_highest: Üste taşı label_sort_higher: Yukarı taşı label_sort_lower: Aşağı taşı label_sort_lowest: Dibe taşı label_roadmap: Yol Haritası - label_roadmap_due_in: "Due in %{value}" + label_roadmap_due_in: "%{value} içinde bitmeli" label_roadmap_overdue: "%{value} geç" - label_roadmap_no_issues: Bu versiyon için ileti yok + label_roadmap_no_issues: Bu sürüm için iş yok label_search: Ara label_result_plural: Sonuçlar label_all_words: Tüm Kelimeler @@ -539,11 +543,11 @@ label_wiki_page_plural: Wiki sayfaları label_index_by_title: Başlığa göre diz label_index_by_date: Tarihe göre diz - label_current_version: Güncel versiyon + label_current_version: Güncel sürüm label_preview: Önizleme label_feed_plural: Beslemeler label_changes_details: Bütün değişikliklerin detayları - label_issue_tracking: İleti Takibi + label_issue_tracking: İş Takibi label_spent_time: Harcanan zaman label_f_hour: "%{value} saat" label_f_hour_plural: "%{value} saat" @@ -558,9 +562,9 @@ label_options: Tercihler label_copy_workflow_from: İşakışı kopyala label_permissions_report: İzin raporu - label_watched_issues: İzlenmiş iletiler - label_related_issues: İlişkili iletiler - label_applied_status: uygulanmış iletiler + label_watched_issues: İzlenmiş işler + label_related_issues: İlişkili işler + label_applied_status: uygulanmış işler label_loading: Yükleniyor... label_relation_new: Yeni ilişki label_relation_delete: İlişkiyi sil @@ -576,7 +580,7 @@ label_start_to_end: baştan sona label_stay_logged_in: Sürekli bağlı kal label_disabled: Devredışı - label_show_completed_versions: Tamamlanmış versiyonları göster + label_show_completed_versions: Tamamlanmış sürümleri göster label_me: Ben label_board: Tartışma Alanı label_board_new: Yeni alan @@ -593,7 +597,7 @@ label_week: Hafta label_date_from: Başlangıç label_date_to: Bitiş - label_language_based: Kullanıcı diline istinaden + label_language_based: Kullanıcı dili bazlı label_sort_by: "%{value} göre sırala" label_send_test_email: Test e-postası gönder label_feeds_access_key_created_on: "RSS erişim anahtarı %{value} önce oluşturuldu" @@ -605,12 +609,12 @@ label_changeset_plural: Değişiklik Listeleri label_default_columns: Varsayılan Sütunlar label_no_change_option: (Değişiklik yok) - label_bulk_edit_selected_issues: Seçili iletileri toplu düzenle + label_bulk_edit_selected_issues: Seçili işleri toplu olarak düzenle label_theme: Tema label_default: Varsayılan label_search_titles_only: Sadece başlıkları ara label_user_mail_option_all: "Tüm projelerimdeki herhangi bir olay için" - label_user_mail_option_selected: "Sadece seçili projelerdeki herhangi bir olay için..." + label_user_mail_option_selected: "Sadece seçili projelerdeki herhangi bir olay için" label_user_mail_no_self_notified: "Kendi yaptığım değişikliklerden haberdar olmak istemiyorum" label_registration_activation_by_email: e-posta ile hesap etkinleştirme label_registration_manual_activation: Elle hesap etkinleştirme @@ -620,7 +624,7 @@ label_change_properties: Özellikleri değiştir label_general: Genel label_more: Daha fazla - label_scm: KKY + label_scm: KY label_plugins: Eklentiler label_ldap_authentication: LDAP Denetimi label_downloads_abbr: D/L @@ -630,7 +634,7 @@ label_chronological_order: Tarih sırasına göre label_reverse_chronological_order: Ters tarih sırasına göre label_planning: Planlanıyor - + button_login: Giriş button_submit: Gönder button_save: Kaydet @@ -654,8 +658,8 @@ button_cancel: İptal button_activate: Etkinleştir button_sort: Sırala - button_log_time: Günlük zamanı - button_rollback: Bu versiyone geri al + button_log_time: Zaman kaydı + button_rollback: Bu sürüme geri al button_watch: İzle button_unwatch: İzlemeyi iptal et button_reply: Cevapla @@ -665,20 +669,20 @@ button_rename: Yeniden adlandır button_change_password: Parolayı değiştir button_copy: Kopyala - button_annotate: Revizyon geçmişine göre göster + button_annotate: Değişiklik geçmişine göre göster button_update: Güncelle button_configure: Yapılandır - + status_active: faal status_registered: kayıtlı status_locked: kilitli - + text_select_mail_notifications: Gönderilecek e-posta uyarısına göre hareketi seçin. - text_regexp_info: eg. ^[A-Z0-9]+$ + text_regexp_info: örn. ^[A-Z0-9]+$ text_min_max_length_info: 0 sınırlama yok demektir text_project_destroy_confirmation: Bu projeyi ve bağlantılı verileri silmek istediğinizden emin misiniz? text_subprojects_destroy_warning: "Ayrıca %{value} alt proje silinecek." - text_workflow_edit: İşakışını düzenlemek için bir rol ve takipçi seçin + text_workflow_edit: İşakışını düzenlemek için bir rol ve iş tipi seçin text_are_you_sure: Emin misiniz ? text_tip_issue_begin_day: Bugün başlayan görevler text_tip_issue_end_day: Bugün sona eren görevler @@ -687,41 +691,41 @@ text_caracters_maximum: "En çok %{count} karakter." text_caracters_minimum: "En az %{count} karakter uzunluğunda olmalı." text_length_between: "%{min} ve %{max} karakterleri arasındaki uzunluk." - text_tracker_no_workflow: Bu takipçi için işakışı tanımlanmamış + text_tracker_no_workflow: Bu iş tipi için işakışı tanımlanmamış text_unallowed_characters: Yasaklı karakterler - text_comma_separated: Çoklu değer uygundur(Virgül ile ayrılmış). - text_issues_ref_in_commit_messages: Teslim mesajlarındaki iletileri çözme ve başvuruda bulunma - text_issue_added: "İleti %{id}, %{author} tarafından rapor edildi." - text_issue_updated: "İleti %{id}, %{author} tarafından güncellendi." + text_comma_separated: Çoklu değer girilebilir(Virgül ile ayrılmış). + text_issues_ref_in_commit_messages: Teslim mesajlarındaki işleri çözme ve başvuruda bulunma + text_issue_added: "İş %{id}, %{author} tarafından rapor edildi." + text_issue_updated: "İş %{id}, %{author} tarafından güncellendi." text_wiki_destroy_confirmation: bu wikiyi ve tüm içeriğini silmek istediğinizden emin misiniz? - text_issue_category_destroy_question: "Bazı iletiler (%{count}) bu kategoriye atandı. Ne yapmak istersiniz?" + text_issue_category_destroy_question: "Bazı işler (%{count}) bu kategoriye atandı. Ne yapmak istersiniz?" text_issue_category_destroy_assignments: Kategori atamalarını kaldır - text_issue_category_reassign_to: İletileri bu kategoriye tekrar ata - text_user_mail_option: "Seçili olmayan projeler için, sadece dahil olduğunuz ya da izlediğiniz öğeler hakkında uyarılar alacaksınız (örneğin,yazarı veya atandığınız iletiler)." - text_no_configuration_data: "Roller, takipçiler, ileti durumları ve işakışı henüz yapılandırılmadı.\nVarsayılan yapılandırılmanın yüklenmesi şiddetle tavsiye edilir. Bir kez yüklendiğinde yapılandırmayı değiştirebileceksiniz." + text_issue_category_reassign_to: İşleri bu kategoriye tekrar ata + text_user_mail_option: "Seçili olmayan projeler için, sadece dahil olduğunuz ya da izlediğiniz öğeler hakkında uyarılar alacaksınız (örneğin,yazarı veya atandığınız işler)." + text_no_configuration_data: "Roller, iş tipleri, iş durumları ve işakışı henüz yapılandırılmadı.\nVarsayılan yapılandırılmanın yüklenmesi şiddetle tavsiye edilir. Bir kez yüklendiğinde yapılandırmayı değiştirebileceksiniz." text_load_default_configuration: Varsayılan yapılandırmayı yükle text_status_changed_by_changeset: "Değişiklik listesi %{value} içinde uygulandı." - text_issues_destroy_confirmation: 'Seçili iletileri silmek istediğinizden emin misiniz ?' + text_issues_destroy_confirmation: 'Seçili işleri silmek istediğinizden emin misiniz ?' text_select_project_modules: 'Bu proje için etkinleştirmek istediğiniz modülleri seçin:' text_default_administrator_account_changed: Varsayılan yönetici hesabı değişti text_file_repository_writable: Dosya deposu yazılabilir text_rmagick_available: RMagick Kullanılabilir (isteğe bağlı) - text_destroy_time_entries_question: Silmek üzere olduğunuz iletiler üzerine %{hours} saat raporlandı.Ne yapmak istersiniz ? - text_destroy_time_entries: Raporlanmış saatleri sil - text_assign_time_entries_to_project: Raporlanmış saatleri projeye ata - text_reassign_time_entries: 'Raporlanmış saatleri bu iletiye tekrar ata:' - + text_destroy_time_entries_question: Silmek üzere olduğunuz işler üzerine %{hours} saat raporlandı.Ne yapmak istersiniz ? + text_destroy_time_entries: Raporlanmış süreleri sil + text_assign_time_entries_to_project: Raporlanmış süreleri projeye ata + text_reassign_time_entries: 'Raporlanmış süreleri bu işe tekrar ata:' + default_role_manager: Yönetici default_role_developer: Geliştirici default_role_reporter: Raporlayıcı default_tracker_bug: Hata - default_tracker_feature: ÖZellik + default_tracker_feature: Özellik default_tracker_support: Destek default_issue_status_new: Yeni - default_issue_status_in_progress: In Progress + default_issue_status_in_progress: Yapılıyor default_issue_status_resolved: Çözüldü default_issue_status_feedback: Geribildirim - default_issue_status_closed: Kapatıldı + default_issue_status_closed: "Kapatıldı" default_issue_status_rejected: Reddedildi default_doc_category_user: Kullanıcı Dökümantasyonu default_doc_category_tech: Teknik Dökümantasyon @@ -731,232 +735,264 @@ default_priority_urgent: Acil default_priority_immediate: Derhal default_activity_design: Tasarım - default_activity_development: Geliştirim - - enumeration_issue_priorities: İleti önceliği + default_activity_development: Geliştirme + + enumeration_issue_priorities: İş önceliği enumeration_doc_categories: Belge Kategorileri enumeration_activities: Faaliyetler (zaman takibi) - button_quote: Quote - setting_enabled_scm: Enabled SCM - label_incoming_emails: Incoming emails - label_generate_key: Generate a key - setting_sequential_project_identifiers: Generate sequential project identifiers - field_parent_title: Parent page + button_quote: Alıntı + setting_enabled_scm: KKY Açık + label_incoming_emails: "Gelen e-postalar" + label_generate_key: "Anahtar oluştur" + setting_sequential_project_identifiers: "Sıralı proje tanımlayıcıları oluştur" + field_parent_title: Üst sayfa text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - label_issue_watchers: Watchers - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - label_duplicated_by: duplicated by - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_user_wrote: "%{value} wrote:" - setting_mail_handler_api_enabled: Enable WS for incoming emails - label_and_its_subprojects: "%{value} and its subprojects" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - setting_mail_handler_api_key: API key - setting_commit_logs_encoding: Commit messages encoding + text_enumeration_category_reassign_to: 'Hepsini şuna çevir:' + label_issue_watchers: Takipçiler + mail_body_reminder: "Size atanmış olan %{count} iş %{days} gün içerisinde bitirilmeli:" + label_duplicated_by: yineleyen + text_enumeration_destroy_question: "Bu nesneye %{count} değer bağlanmış." + text_user_wrote: "%{value} demiş ki:" + setting_mail_handler_api_enabled: Gelen e-postalar için WS'yi aç + label_and_its_subprojects: "%{value} ve alt projeleri" + mail_subject_reminder: "%{count} iş bir kaç güne bitecek" + setting_mail_handler_api_key: API anahtarı + setting_commit_logs_encoding: Gönderim mesajlarının kodlaması (UTF-8 vs.) general_csv_decimal_separator: '.' - notice_unable_delete_version: Unable to delete version - label_renamed: renamed - label_copied: copied - setting_plain_text_mail: plain text only (no HTML) - permission_view_files: View files - permission_edit_issues: Edit issues - permission_edit_own_time_entries: Edit own time logs - permission_manage_public_queries: Manage public queries - permission_add_issues: Add issues - permission_log_time: Log spent time - permission_view_changesets: View changesets - permission_view_time_entries: View spent time - permission_manage_versions: Manage versions - permission_manage_wiki: Manage wiki - permission_manage_categories: Manage issue categories - permission_protect_wiki_pages: Protect wiki pages - permission_comment_news: Comment news - permission_delete_messages: Delete messages - permission_select_project_modules: Select project modules - permission_manage_documents: Manage documents - permission_edit_wiki_pages: Edit wiki pages - permission_add_issue_watchers: Add watchers - permission_view_gantt: View gantt chart - permission_move_issues: Move issues - permission_manage_issue_relations: Manage issue relations - permission_delete_wiki_pages: Delete wiki pages - permission_manage_boards: Manage boards - permission_delete_wiki_pages_attachments: Delete attachments - permission_view_wiki_edits: View wiki history - permission_add_messages: Post messages - permission_view_messages: View messages - permission_manage_files: Manage files - permission_edit_issue_notes: Edit notes - permission_manage_news: Manage news - permission_view_calendar: View calendrier - permission_manage_members: Manage members - permission_edit_messages: Edit messages - permission_delete_issues: Delete issues - permission_view_issue_watchers: View watchers list - permission_manage_repository: Manage repository - permission_commit_access: Commit access - permission_browse_repository: Browse repository - permission_view_documents: View documents - permission_edit_project: Edit project - permission_add_issue_notes: Add notes - permission_save_queries: Save queries - permission_view_wiki_pages: View wiki - permission_rename_wiki_pages: Rename wiki pages - permission_edit_time_entries: Edit time logs - permission_edit_own_issue_notes: Edit own notes - setting_gravatar_enabled: Use Gravatar user icons - label_example: Example + notice_unable_delete_version: Sürüm silinemiyor + label_renamed: yeniden adlandırılmış + label_copied: kopyalanmış + setting_plain_text_mail: sadece düz metin (HTML yok) + permission_view_files: Dosyaları görme + permission_edit_issues: İşleri düzenleme + permission_edit_own_time_entries: Kendi zaman girişlerini düzenleme + permission_manage_public_queries: Herkese açık sorguları yönetme + permission_add_issues: İş ekleme + permission_log_time: Harcanan zamanı kaydetme + permission_view_changesets: Değişimleri görme(SVN, vs.) + permission_view_time_entries: Harcanan zamanı görme + permission_manage_versions: Sürümleri yönetme + permission_manage_wiki: Wiki'yi yönetme + permission_manage_categories: İş kategorilerini yönetme + permission_protect_wiki_pages: Wiki sayfalarını korumaya alma + permission_comment_news: Haberlere yorum yapma + permission_delete_messages: Mesaj silme + permission_select_project_modules: Proje modüllerini seçme + permission_manage_documents: Belgeleri yönetme + permission_edit_wiki_pages: Wiki sayfalarını düzenleme + permission_add_issue_watchers: Takipçi ekleme + permission_view_gantt: İş-Zaman çizelgesi görme + permission_move_issues: İşlerin yerini değiştirme + permission_manage_issue_relations: İşlerin biribiriyle bağlantılarını yönetme + permission_delete_wiki_pages: Wiki sayfalarını silme + permission_manage_boards: Panoları yönetme + permission_delete_wiki_pages_attachments: Ekleri silme + permission_view_wiki_edits: Wiki geçmişini görme + permission_add_messages: Mesaj gönderme + permission_view_messages: Mesajları görme + permission_manage_files: Dosyaları yönetme + permission_edit_issue_notes: Notları düzenleme + permission_manage_news: Haberleri yönetme + permission_view_calendar: Takvimleri görme + permission_manage_members: Üyeleri yönetme + permission_edit_messages: Mesajları düzenleme + permission_delete_issues: İşleri silme + permission_view_issue_watchers: Takipçi listesini görme + permission_manage_repository: Depo yönetimi + permission_commit_access: Gönderme erişimi + permission_browse_repository: Depoya gözatma + permission_view_documents: Belgeleri görme + permission_edit_project: Projeyi düzenleme + permission_add_issue_notes: Not ekleme + permission_save_queries: Sorgu kaydetme + permission_view_wiki_pages: Wiki görme + permission_rename_wiki_pages: Wiki sayfasının adını değiştirme + permission_edit_time_entries: Zaman kayıtlarını düzenleme + permission_edit_own_issue_notes: Kendi notlarını düzenleme + setting_gravatar_enabled: Kullanıcı resimleri için Gravatar kullan + label_example: Örnek text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - permission_edit_own_messages: Edit own messages - permission_delete_own_messages: Delete own messages - label_user_activity: "%{value}'s activity" - label_updated_time_by: "Updated by %{author} %{age} ago" - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - setting_diff_max_lines_displayed: Max number of diff lines displayed - text_plugin_assets_writable: Plugin assets directory writable - warning_attachments_not_saved: "%{count} file(s) could not be saved." - button_create_and_continue: Create and continue - text_custom_field_possible_values_info: 'One line for each value' - label_display: Display - field_editable: Editable - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_file_max_size_displayed: Max size of text files displayed inline - field_watcher: Watcher - setting_openid: Allow OpenID login and registration + permission_edit_own_messages: Kendi mesajlarını düzenleme + permission_delete_own_messages: Kendi mesajlarını silme + label_user_activity: "%{value} kullanıcısının etkinlikleri" + label_updated_time_by: "%{author} tarafından %{age} önce güncellendi" + text_diff_truncated: '... Bu fark tam olarak gösterilemiyor çünkü gösterim için ayarlanmış üst sınırı aşıyor.' + setting_diff_max_lines_displayed: Gösterilebilecek maksimumu fark satırı + text_plugin_assets_writable: Eklenti yardımcı dosya dizini yazılabilir + warning_attachments_not_saved: "%{count} adet dosya kaydedilemedi." + button_create_and_continue: Oluştur ve devam et + text_custom_field_possible_values_info: 'Her değer için bir satır' + label_display: Göster + field_editable: Düzenlenebilir + setting_repository_log_display_limit: Dosya kaydında gösterilecek maksimum değişim sayısı + setting_file_max_size_displayed: Dahili olarak gösterilecek metin dosyaları için maksimum satır sayısı + field_watcher: Takipçi + setting_openid: Kayıt ve giriş için OpenID'ye izin ver field_identity_url: OpenID URL - label_login_with_open_id_option: or login with OpenID - field_content: Content - label_descending: Descending - label_sort: Sort - label_ascending: Ascending - label_date_from_to: From %{start} to %{end} + label_login_with_open_id_option: veya OpenID kullanın + field_content: İçerik + label_descending: Azalan + label_sort: Sırala + label_ascending: Artan + label_date_from_to: "%{start} - %{end} arası" label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do? - text_wiki_page_reassign_children: Reassign child pages to this parent page - text_wiki_page_nullify_children: Keep child pages as root pages - text_wiki_page_destroy_children: Delete child pages and all their descendants - setting_password_min_length: Minimum password length - field_group_by: Group results by - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - label_wiki_content_added: Wiki page added - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}. - label_wiki_content_updated: Wiki page updated - mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}. - permission_add_project: Create project - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - label_view_all_revisions: View all revisions - label_tag: Tag - label_branch: Branch - error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. - error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses"). - label_group_plural: Groups - label_group: Group - label_group_new: New group - label_time_entry_plural: Spent time - text_journal_changed: "%{label} changed from %{old} to %{new}" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} deleted (%{old})" - text_journal_added: "%{label} %{value} added" - field_active: Active - enumeration_system_activity: System Activity - permission_delete_issue_watchers: Delete watchers - version_status_closed: closed - version_status_locked: locked - version_status_open: open - error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened - label_user_anonymous: Anonymous - button_move_and_follow: Move and follow - setting_default_projects_modules: Default enabled modules for new projects - setting_gravatar_default: Default Gravatar image - field_sharing: Sharing - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_system: With all projects - label_version_sharing_descendants: With subprojects - label_version_sharing_tree: With project tree - label_version_sharing_none: Not shared - error_can_not_archive_project: This project can not be archived - button_duplicate: Duplicate - button_copy_and_follow: Copy and follow - label_copy_source: Source - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_status: Use the issue status - error_issue_done_ratios_not_updated: Issue done ratios not updated. - error_workflow_copy_target: Please select target tracker(s) and role(s) - setting_issue_done_ratio_issue_field: Use the issue field - label_copy_same_as_target: Same as target - label_copy_target: Target - notice_issue_done_ratios_updated: Issue done ratios updated. - error_workflow_copy_source: Please select a source tracker or role - label_update_issue_done_ratios: Update issue done ratios - setting_start_of_week: Start calendars on - permission_view_issues: View Issues - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_revision_id: Revision %{value} - label_api_access_key: API access key - label_api_access_key_created_on: API access key created %{value} ago - label_feeds_access_key: RSS access key - notice_api_access_key_reseted: Your API access key was reset. - setting_rest_api_enabled: Enable REST web service - label_missing_api_access_key: Missing an API access key - label_missing_feeds_access_key: Missing a RSS access key - button_show: Show - text_line_separated: Multiple values allowed (one line for each value). - setting_mail_handler_body_delimiters: Truncate emails after one of these lines - permission_add_subprojects: Create subprojects - label_subproject_new: New subproject - text_own_membership_delete_confirmation: |- - You are about to remove some or all of your permissions and may no longer be able to edit this project after that. - Are you sure you want to continue? - label_close_versions: Close completed versions - label_board_sticky: Sticky - label_board_locked: Locked - permission_export_wiki_pages: Export wiki pages - setting_cache_formatted_text: Cache formatted text - permission_manage_project_activities: Manage project activities - error_unable_delete_issue_status: Unable to delete issue status - label_profile: Profile - permission_manage_subtasks: Manage subtasks - field_parent_issue: Parent task - label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - error_can_not_delete_custom_field: Unable to delete custom field - error_unable_to_connect: Unable to connect (%{value}) - error_can_not_remove_role: This role is in use and can not be deleted. - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar + text_wiki_page_destroy_question: Bu sayfanın %{descendants} adet alt sayfası var. Ne yapmak istersiniz? + text_wiki_page_reassign_children: Alt sayfaları bu sayfanın altına bağla + text_wiki_page_nullify_children: Alt sayfaları ana sayfa olarak sakla + text_wiki_page_destroy_children: Alt sayfaları ve onların alt sayfalarını tamamen sil + setting_password_min_length: Minimum parola uzunluğu + field_group_by: Sonuçları grupla + mail_subject_wiki_content_updated: "'%{id}' wiki sayfası güncellendi" + label_wiki_content_added: Wiki sayfası eklendi + mail_subject_wiki_content_added: "'%{id}' wiki sayfası eklendi" + mail_body_wiki_content_added: "'%{id}' wiki sayfası, %{author} tarafından eklendi." + label_wiki_content_updated: Wiki sayfası güncellendi + mail_body_wiki_content_updated: "'%{id}' wiki sayfası, %{author} tarafından güncellendi." + permission_add_project: Proje oluştur + setting_new_project_user_role_id: Yönetici olmayan ancak proje yaratabilen kullanıcıya verilen rol + label_view_all_revisions: Tüm değişiklikleri gör + label_tag: Etiket + label_branch: Kol + error_no_tracker_in_project: Bu projeye bağlanmış bir iş tipi yok. Lütfen proje ayarlarını kontrol edin. + error_no_default_issue_status: Varsayılan iş durumu tanımlanmamış. Lütfen ayarlarınızı kontrol edin ("Yönetim -> İş durumları" sayfasına gidin). + label_group_plural: Gruplar + label_group: Grup + label_group_new: Yeni grup + label_time_entry_plural: Harcanan zaman + text_journal_changed: "%{label}: %{old} -> %{new}" + text_journal_set_to: "%{label} %{value} yapıldı" + text_journal_deleted: "%{label} silindi (%{old})" + text_journal_added: "%{label} %{value} eklendi" + field_active: Etkin + enumeration_system_activity: Sistem Etkinlikleri + permission_delete_issue_watchers: İzleyicileri sil + version_status_closed: kapalı + version_status_locked: kilitli + version_status_open: açık + error_can_not_reopen_issue_on_closed_version: Kapatılmış bir sürüme ait işler tekrar açılamaz + label_user_anonymous: Anonim + button_move_and_follow: Yerini değiştir ve takip et + setting_default_projects_modules: Yeni projeler için varsayılan modüller + setting_gravatar_default: Varsayılan Gravatar resmi + field_sharing: Paylaşım + label_version_sharing_hierarchy: Proje hiyerarşisi ile + label_version_sharing_system: Tüm projeler ile + label_version_sharing_descendants: Alt projeler ile + label_version_sharing_tree: Proje ağacı ile + label_version_sharing_none: Paylaşılmamış + error_can_not_archive_project: Bu proje arşivlenemez + button_duplicate: Yinele + button_copy_and_follow: Kopyala ve takip et + label_copy_source: Kaynak + setting_issue_done_ratio: İş tamamlanma oranını şununla hesapla + setting_issue_done_ratio_issue_status: İş durumunu kullan + error_issue_done_ratios_not_updated: İş tamamlanma oranları güncellenmedi. + error_workflow_copy_target: Lütfen hedef iş tipi ve rolleri seçin + setting_issue_done_ratio_issue_field: İşteki alanı kullan + label_copy_same_as_target: Hedef ile aynı + label_copy_target: Hedef + notice_issue_done_ratios_updated: İş tamamlanma oranları güncellendi. + error_workflow_copy_source: Lütfen kaynak iş tipi ve rolleri seçin + label_update_issue_done_ratios: İş tamamlanma oranlarını güncelle + setting_start_of_week: Takvimleri şundan başlat + permission_view_issues: İşleri Gör + label_display_used_statuses_only: Sadece bu iş tipi tarafından kullanılan durumları göster + label_revision_id: Değişiklik %{value} + label_api_access_key: API erişim anahtarı + label_api_access_key_created_on: API erişim anahtarı %{value} önce oluşturuldu + label_feeds_access_key: RSS erişim anahtarı + notice_api_access_key_reseted: API erişim anahtarınız sıfırlandı. + setting_rest_api_enabled: REST web servisini etkinleştir + label_missing_api_access_key: Bir API erişim anahtarı eksik + label_missing_feeds_access_key: Bir RSS erişim anahtarı eksik + button_show: Göster + text_line_separated: Çoklu değer girilebilir (her satıra bir değer). + setting_mail_handler_body_delimiters: Şu satırların birinden sonra e-postayı sonlandır + permission_add_subprojects: Alt proje yaratma + label_subproject_new: Yeni alt proje + text_own_membership_delete_confirmation: "Projeyi daha sonra düzenleyememenize sebep olacak bazı yetkilerinizi kaldırmak üzeresiniz.\nDevam etmek istediğinize emin misiniz?" + label_close_versions: Tamamlanmış sürümleri kapat + label_board_sticky: Yapışkan + label_board_locked: Kilitli + permission_export_wiki_pages: Wiki sayfalarını dışarı aktar + setting_cache_formatted_text: Biçimlendirilmiş metni önbelleğe al + permission_manage_project_activities: Proje etkinliklerini yönetme + error_unable_delete_issue_status: İş durumu silinemiyor + label_profile: Profil + permission_manage_subtasks: Alt işleri yönetme + field_parent_issue: Üst iş + label_subtask_plural: Alt işler + label_project_copy_notifications: Proje kopyalaması esnasında bilgilendirme e-postaları gönder + error_can_not_delete_custom_field: Özel alan silinemiyor + error_unable_to_connect: Bağlanılamıyor (%{value}) + error_can_not_remove_role: Bu rol kullanımda olduğundan silinemez. + error_can_not_delete_tracker: Bu iş tipi içerisinde iş barındırdığından silinemiyor. + field_principal: Temel + label_my_page_block: Kişisel sayfa bloğum + notice_failed_to_save_members: "Üyeler kaydedilemiyor: %{errors}." + text_zoom_out: Uzaklaş + text_zoom_in: Yakınlaş + notice_unable_delete_time_entry: Zaman kayıt girdisi silinemiyor. + label_overall_spent_time: Toplam harcanan zaman + field_time_entries: Zaman Kayıtları + project_module_gantt: İş-Zaman Çizelgesi + project_module_calendar: Takvim button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time + text_are_you_sure_with_children: İş, tüm alt işlerle birlikte silinsin mi? + field_text: Metin alanı + label_user_mail_option_only_owner: Sadece sahibi olduğum şeyler için + setting_default_notification_option: Varsayılan bildirim seçeneği + label_user_mail_option_only_my_events: Sadece takip ettiğim ya da içinde olduğum şeyler için + label_user_mail_option_only_assigned: Sadece bana atanan şeyler için + label_user_mail_option_none: Hiç bir şey için + field_member_of_group: Atananın grubu + field_assigned_to_role: Atananın rolü + notice_not_authorized_archived_project: Erişmeye çalıştığınız proje arşive kaldırılmış. + label_principal_search: "Kullanıcı ya da grup ara:" + label_user_search: "Kullanıcı ara:" + field_visible: Görünür + setting_emails_header: "E-Posta başlığı" + setting_commit_logtime_activity_id: Kaydedilen zaman için etkinlik text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging + setting_commit_logtime_enabled: Zaman kaydını etkinleştir notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" + setting_gantt_items_limit: İş-Zaman çizelgesinde gösterilecek en fazla öğe sayısı + field_warn_on_leaving_unsaved: Kaydedilmemiş metin bulunan bir sayfadan çıkarken beni uyar + text_warn_on_leaving_unsaved: Bu sayfada terkettiğiniz takdirde kaybolacak kaydedilmemiş metinler var. + label_my_queries: Özel sorgularım + text_journal_changed_no_detail: "%{label} güncellendi" + label_news_comment_added: Bir habere yorum eklendi + button_expand_all: Tümünü genişlet + button_collapse_all: Tümünü daralt + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Seçilen zaman kayıtlarını toplu olarak düzenle + text_time_entries_destroy_confirmation: Seçilen zaman kaydını/kayıtlarını silmek istediğinize emin misiniz? + label_role_anonymous: Anonim + label_role_non_member: Üye Değil + label_issue_note_added: Not eklendi + label_issue_status_updated: Durum güncellendi + label_issue_priority_updated: Öncelik güncellendi + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: İşlerin görünürlüğü + label_issues_visibility_all: Tüm işler + permission_set_own_issues_private: Set own issues public or private + field_is_private: Özel + permission_set_issues_private: İşleri özel ya da genel olarak işaretleme + label_issues_visibility_public: Özel olmayan tüm işler + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Yol kodlaması(encoding) + text_scm_path_encoding_note: "Varsayılan: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Ana dizin + field_cvs_module: Modül + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Komut + text_scm_command_version: Sürüm + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/uk.yml --- a/config/locales/uk.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/uk.yml Mon Jun 06 14:41:04 2011 +0100 @@ -16,7 +16,10 @@ month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -232,7 +235,7 @@ field_attr_mail: Атрибут Email field_onthefly: Створення користувача на льоту field_start_date: Початок - field_done_ratio: % зроблено + field_done_ratio: "% зроблено" field_auth_source: Режим аутентифікації field_hide_mail: Приховувати мій email field_comments: Коментар @@ -729,7 +732,6 @@ text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers - setting_commit_logs_encoding: Commit messages encoding button_quote: Quote setting_sequential_project_identifiers: Generate sequential project identifiers notice_unable_delete_version: Unable to delete version @@ -937,3 +939,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/vi.yml --- a/config/locales/vi.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/vi.yml Mon Jun 06 14:41:04 2011 +0100 @@ -158,7 +158,10 @@ month_names: [~, "Tháng một", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mười", "Tháng mười một", "Tháng mười hai"] abbr_month_names: [~, "Tháng một", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mười", "Tháng mười một", "Tháng mười hai"] # Used in date_select and datime_select. - order: [ :day, :month, :year ] + order: + - :day + - :month + - :year time: formats: @@ -344,7 +347,6 @@ setting_cross_project_issue_relations: Cho phép quan hệ chéo giữa các dự án setting_issue_list_default_columns: Default columns displayed on the issue list setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding setting_emails_footer: Chữ ký cuối thư setting_protocol: Giao thức setting_per_page_options: Objects per page options @@ -992,3 +994,37 @@ text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + field_commit_logs_encoding: Commit messages encoding + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/locales/zh-TW.yml --- a/config/locales/zh-TW.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/zh-TW.yml Mon Jun 06 14:41:04 2011 +0100 @@ -20,7 +20,10 @@ month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] # 使用於 date_select 與 datime_select. - order: [ :year, :month, :day ] + order: + - :year + - :month + - :day time: formats: @@ -177,7 +180,7 @@ greater_than_start_date: "必須在開始日期之後" not_same_project: "不屬於同一個專案" circular_dependency: "這個關聯會導致環狀相依" - cant_link_an_issue_with_a_descendant: "項目無法被連結至自己的子項目" + cant_link_an_issue_with_a_descendant: "項目無法被連結至自己的子任務" # You can define own errors for models or model attributes. # The values :model, :attribute and :value are always available for interpolation. @@ -251,9 +254,9 @@ notice_gantt_chart_truncated: "由於項目數量超過可顯示數量的最大值 (%{max}),故此甘特圖尾部已被截斷" error_can_t_load_default_data: "無法載入預設組態: %{value}" - error_scm_not_found: "在 SCM 儲存庫中找不到這個項目或版次。" - error_scm_command_failed: "嘗試存取 SCM 儲存庫時發生錯誤: %{value}" - error_scm_annotate: "SCM 儲存庫中無此項目或此項目無法被加註。" + error_scm_not_found: "在儲存機制中找不到這個項目或修訂版。" + error_scm_command_failed: "嘗試存取儲存機制時發生錯誤: %{value}" + error_scm_annotate: "項目不存在或項目無法被加上附註。" error_issue_not_found_in_project: '該項目不存在或不屬於此專案' error_no_tracker_in_project: '此專案尚未指定追蹤標籤。請檢查專案的設定資訊。' error_no_default_issue_status: '尚未定義項目狀態的預設值。請您前往「網站管理」->「項目狀態清單」頁面,檢查相關組態設定。' @@ -353,7 +356,7 @@ field_done_ratio: 完成百分比 field_auth_source: 認證模式 field_hide_mail: 隱藏我的電子郵件 - field_comments: 註解 + field_comments: 回應 field_url: 網址 field_start_page: 首頁 field_subproject: 子專案 @@ -372,7 +375,7 @@ field_time_zone: 時區 field_searchable: 可用做搜尋條件 field_default_value: 預設值 - field_comments_sorting: 註解排序 + field_comments_sorting: 回應排序 field_parent_title: 父頁面 field_editable: 可編輯 field_watcher: 觀察者 @@ -380,11 +383,20 @@ field_content: 內容 field_group_by: 結果分組方式 field_sharing: 共用 - field_parent_issue: 父工作項目 + field_parent_issue: 父任務 field_member_of_group: "被指派者的群組" field_assigned_to_role: "被指派者的角色" field_text: 內容文字 field_visible: 可被看見 + field_warn_on_leaving_unsaved: "提醒我將要離開的頁面中尚有未儲存的資料" + field_issues_visibility: 項目可見度 + field_is_private: 私人 + field_commit_logs_encoding: 認可訊息編碼 + field_scm_path_encoding: 路徑編碼 + field_path_to_repository: 儲存機制路徑 + field_root_directory: 根資料夾 + field_cvsroot: CVSROOT + field_cvs_module: 模組 setting_app_title: 標題 setting_app_subtitle: 副標題 @@ -401,18 +413,17 @@ setting_text_formatting: 文字格式 setting_wiki_compression: 壓縮 Wiki 歷史文章 setting_feeds_limit: RSS 新聞限制 - setting_autofetch_changesets: 自動取得送交版次 + setting_autofetch_changesets: 自動擷取認可 setting_default_projects_public: 新建立之專案預設為「公開」 - setting_sys_api_enabled: 啟用管理版本庫之網頁服務 (Web Service) - setting_commit_ref_keywords: 送交用於參照項目之關鍵字 - setting_commit_fix_keywords: 送交用於修正項目之關鍵字 + setting_sys_api_enabled: 啟用管理儲存機制的網頁服務 (Web Service) + setting_commit_ref_keywords: 認可用於參照項目之關鍵字 + setting_commit_fix_keywords: 認可用於修正項目之關鍵字 setting_autologin: 自動登入 setting_date_format: 日期格式 setting_time_format: 時間格式 setting_cross_project_issue_relations: 允許關聯至其它專案的項目 setting_issue_list_default_columns: 預設顯示於項目清單的欄位 setting_repositories_encodings: 版本庫編碼 - setting_commit_logs_encoding: 送交訊息編碼 setting_emails_header: 電子郵件前頭說明 setting_emails_footer: 電子郵件附帶說明 setting_protocol: 協定 @@ -429,7 +440,7 @@ setting_gravatar_default: 預設全球認證大頭像圖片 setting_diff_max_lines_displayed: 差異顯示行數之最大值 setting_file_max_size_displayed: 檔案內容顯示大小之最大值 - setting_repository_log_display_limit: 版次顯示數目之最大值 + setting_repository_log_display_limit: 修訂版顯示數目之最大值 setting_openid: 允許使用 OpenID 登入與註冊 setting_password_min_length: 密碼最小長度 setting_new_project_user_role_id: 管理者以外之用戶建立新專案時,將被指派的角色 @@ -441,7 +452,7 @@ setting_rest_api_enabled: 啟用 REST 網路服務技術(Web Service) setting_cache_formatted_text: 快取已格式化文字 setting_default_notification_option: 預設通知選項 - setting_commit_logtime_enabled: 啟用送交中的時間記錄 + setting_commit_logtime_enabled: 啟用認可中的時間記錄 setting_commit_logtime_activity_id: 時間記錄對應的活動 setting_gantt_items_limit: 甘特圖中項目顯示數量的最大值 @@ -457,6 +468,8 @@ permission_add_issues: 新增項目 permission_edit_issues: 編輯項目 permission_manage_issue_relations: 管理項目關聯 + permission_set_issues_private: 設定項目為公開或私人 + permission_set_own_issues_private: 設定自己的項目為公開或私人 permission_add_issue_notes: 新增筆記 permission_edit_issue_notes: 編輯筆記 permission_edit_own_issue_notes: 編輯自己的筆記 @@ -474,7 +487,7 @@ permission_edit_time_entries: 編輯工時紀錄 permission_edit_own_time_entries: 編輯自己的工時記錄 permission_manage_news: 管理新聞 - permission_comment_news: 註解新聞 + permission_comment_news: 回應新聞 permission_manage_documents: 管理文件 permission_view_documents: 檢視文件 permission_manage_files: 管理檔案 @@ -487,10 +500,10 @@ permission_edit_wiki_pages: 編輯 wiki 頁面 permission_delete_wiki_pages_attachments: 刪除附件 permission_protect_wiki_pages: 專案 wiki 頁面 - permission_manage_repository: 管理版本庫 - permission_browse_repository: 瀏覽版本庫 + permission_manage_repository: 管理儲存機制 + permission_browse_repository: 瀏覽儲存機制 permission_view_changesets: 檢視變更集 - permission_commit_access: 存取送交之變更 + permission_commit_access: 存取認可 permission_manage_boards: 管理討論版 permission_view_messages: 檢視訊息 permission_add_messages: 新增訊息 @@ -499,7 +512,7 @@ permission_delete_messages: 刪除訊息 permission_delete_own_messages: 刪除自己的訊息 permission_export_wiki_pages: 匯出 wiki 頁面 - permission_manage_subtasks: 管理子工作項目 + permission_manage_subtasks: 管理子任務 project_module_issue_tracking: 項目追蹤 project_module_time_tracking: 工時追蹤 @@ -532,6 +545,9 @@ label_issues_by: "項目按 %{value} 分組顯示" label_issue_added: 項目已新增 label_issue_updated: 項目已更新 + label_issue_note_added: 筆記已新增 + label_issue_status_updated: 狀態已更新 + label_issue_priority_updated: 優先權已更新 label_document: 文件 label_document_new: 建立新文件 label_document_plural: 文件 @@ -540,6 +556,8 @@ label_role_plural: 角色 label_role_new: 建立新角色 label_role_and_permissions: 角色與權限 + label_role_anonymous: 匿名者 + label_role_non_member: 非會員 label_member: 成員 label_member_new: 建立新成員 label_member_plural: 成員 @@ -619,6 +637,7 @@ label_news_latest: 最近新聞 label_news_view_all: 檢視全部的新聞 label_news_added: 新聞已新增 + label_news_comment_added: 回應已加入新聞 label_settings: 設定 label_overview: 概觀 label_version: 版本 @@ -665,18 +684,19 @@ label_last_changes: "最近 %{count} 個變更" label_change_view_all: 檢視全部的變更 label_personalize_page: 自訂版面 - label_comment: 註解 - label_comment_plural: 註解 + label_comment: 回應 + label_comment_plural: 回應 label_x_comments: - zero: 無註解 - one: 1 個註解 - other: "%{count} 個註解" - label_comment_add: 加入新註解 - label_comment_added: 新註解已加入 - label_comment_delete: 刪除註解 + zero: 無回應 + one: 1 個回應 + other: "%{count} 個回應" + label_comment_add: 加入新回應 + label_comment_added: 新回應已加入 + label_comment_delete: 刪除回應 label_query: 自訂查詢 label_query_plural: 自訂查詢 label_query_new: 建立新查詢 + label_my_queries: 我的自訂查詢 label_filter_add: 加入新篩選條件 label_filter_plural: 篩選條件 label_equals: 等於 @@ -702,26 +722,26 @@ label_contains: 包含 label_not_contains: 不包含 label_day_plural: 天 - label_repository: 版本控管 - label_repository_plural: 版本控管 + label_repository: 儲存機制 + label_repository_plural: 儲存機制清單 label_browse: 瀏覽 label_modification: "%{count} 變更" label_modification_plural: "%{count} 變更" label_branch: 分支 label_tag: 標籤 - label_revision: 版次 - label_revision_plural: 版次清單 - label_revision_id: "版次 %{value}" - label_associated_revisions: 相關版次 + label_revision: 修訂版 + label_revision_plural: 修訂版清單 + label_revision_id: "修訂版 %{value}" + label_associated_revisions: 關聯的修訂版 label_added: 已新增 label_modified: 已修改 label_copied: 已複製 label_renamed: 已重新命名 label_deleted: 已刪除 - label_latest_revision: 最新版次 - label_latest_revision_plural: 最近版次清單 - label_view_revisions: 檢視版次清單 - label_view_all_revisions: 檢視全部的版次清單 + label_latest_revision: 最新的修訂版 + label_latest_revision_plural: 最新的修訂版清單 + label_view_revisions: 檢視修訂版清單 + label_view_all_revisions: 檢視所有的的修訂版清單 label_max_size: 最大長度 label_sort_highest: 移動至開頭 label_sort_higher: 往上移動 @@ -753,8 +773,8 @@ label_time_tracking: 工時追蹤 label_change_plural: 變更 label_statistics: 統計資訊 - label_commits_per_month: 依月份統計送交次數 - label_commits_per_author: 依作者統計送交次數 + label_commits_per_month: 依月份統計認可 + label_commits_per_author: 依作者統計認可 label_view_diff: 檢視差異 label_diff_inline: 直列 label_diff_side_by_side: 並排 @@ -814,7 +834,8 @@ label_changeset_plural: 變更集清單 label_default_columns: 預設欄位清單 label_no_change_option: (維持不變) - label_bulk_edit_selected_issues: 編輯選定的項目 + label_bulk_edit_selected_issues: 大量編輯選取的項目 + label_bulk_edit_selected_time_entries: 大量編輯選取的工時項目 label_theme: 畫面主題 label_default: 預設 label_search_titles_only: 僅搜尋標題 @@ -872,16 +893,24 @@ label_missing_api_access_key: 找不到 API 存取金鑰 label_api_access_key_created_on: "API 存取金鑰建立於 %{value} 之前" label_profile: 配置概況 - label_subtask_plural: 子工作項目 + label_subtask_plural: 子任務 label_project_copy_notifications: 在複製專案的過程中,傳送通知郵件 label_principal_search: "搜尋用戶或群組:" label_user_search: "搜尋用戶:" + label_additional_workflow_transitions_for_author: 用戶為作者時額外允許的流程轉換 + label_additional_workflow_transitions_for_assignee: 用戶為被指定者時額外允許的流程轉換 + label_issues_visibility_all: 所有項目 + label_issues_visibility_public: 所有非私人項目 + label_issues_visibility_own: 使用者所建立的或被指派的項目 + label_git_report_last_commit: 報告最後認可的文件和目錄 button_login: 登入 button_submit: 送出 button_save: 儲存 button_check_all: 全選 button_uncheck_all: 全不選 + button_collapse_all: 全部摺疊 + button_expand_all: 全部展開 button_delete: 刪除 button_create: 建立 button_create_and_continue: 繼續建立 @@ -941,6 +970,7 @@ text_are_you_sure: 確定執行? text_are_you_sure_with_children: "確定刪除此工作項目及其子項目?" text_journal_changed: "%{label} 從 %{old} 變更為 %{new}" + text_journal_changed_no_detail: "%{label} 已更新" text_journal_set_to: "%{label} 設定為 %{value}" text_journal_deleted: "%{label} 已刪除 (%{old})" text_journal_added: "%{label} %{value} 已新增" @@ -955,7 +985,7 @@ text_unallowed_characters: 不允許的字元 text_comma_separated: 可輸入多個值(須以逗號分隔)。 text_line_separated: 可輸入多個值(須以換行符號分隔,即每列只能輸入一個值)。 - text_issues_ref_in_commit_messages: 送交訊息中參照(或修正)項目之關鍵字 + text_issues_ref_in_commit_messages: 認可訊息中參照(或修正)項目之關鍵字 text_issue_added: "項目 %{id} 已被 %{author} 通報。" text_issue_updated: "項目 %{id} 已被 %{author} 更新。" text_wiki_destroy_confirmation: 您確定要刪除這個 wiki 和其中的所有內容? @@ -968,6 +998,8 @@ text_status_changed_by_changeset: "已套用至變更集 %{value}." text_time_logged_by_changeset: "紀錄於變更集 %{value}." text_issues_destroy_confirmation: '確定刪除已選擇的項目?' + text_issues_destroy_descendants_confirmation: "這麼做將會一併刪除 %{count} 子任務。" + text_time_entries_destroy_confirmation: 您確定要刪除所選擇的工時紀錄? text_select_project_modules: '選擇此專案可使用之模組:' text_default_administrator_account_changed: 已變更預設管理員帳號內容 text_file_repository_writable: 可寫入附加檔案目錄 @@ -981,7 +1013,7 @@ text_enumeration_destroy_question: "目前有 %{count} 個物件使用此列舉值。" text_enumeration_category_reassign_to: '重新設定其列舉值為:' text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/configuration.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。" - text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與版本庫使用者之對應關係。\n版本庫中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。" + text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與儲存機制紀錄使用者之對應關係。\n儲存機制中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。" text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值' text_custom_field_possible_values_info: '一列輸入一個值' text_wiki_page_destroy_question: "此頁面包含 %{descendants} 個子頁面及延伸頁面。 請選擇您想要的動作?" @@ -991,7 +1023,15 @@ text_own_membership_delete_confirmation: "您在專案中,所擁有的部分或全部權限即將被移除,在這之後可能無法再次編輯此專案。\n您確定要繼續執行這個動作?" text_zoom_in: 放大 text_zoom_out: 縮小 - + text_warn_on_leaving_unsaved: "若您離開這個頁面,此頁面所包含的未儲存資料將會遺失。" + text_scm_path_encoding_note: "預設: UTF-8" + text_git_repository_note: "純(Bare)儲存機制與本機儲存機制 (e.g. /gitrepo, c:\gitrepo)" + text_mercurial_repository_note: "本機儲存機制 (e.g. /hgrepo, c:\hgrepo)" + text_scm_command: 命令 + text_scm_command_version: 版本 + text_scm_config: 您可以在 config/configuration.yml 中設定 SCM 命令。請在編輯該檔案之後重新啟動 Redmine 應用程式。 + text_scm_command_not_available: SCM 命令無法使用。請檢查管理面板中的設定。 + default_role_manager: 管理人員 default_role_developer: 開發人員 default_role_reporter: 報告人員 @@ -1018,7 +1058,3 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 - field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text - text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. - label_my_queries: My custom queries - text_journal_changed_no_detail: "%{label} updated" diff -r adc8466df404 -r 753f1380d6bc config/locales/zh.yml --- a/config/locales/zh.yml Thu Mar 03 15:08:45 2011 +0000 +++ b/config/locales/zh.yml Mon Jun 06 14:41:04 2011 +0100 @@ -1,29 +1,38 @@ # Chinese (China) translations for Ruby on Rails # by tsechingho (http://github.com/tsechingho) - zh: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%b%d日" long: "%Y年%b%d日" + day_names: [星期天, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六] abbr_day_names: [日, 一, 二, 三, 四, 五, 六] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] - order: [ :year, :month, :day ] - + # Used in date_select and datime_select. + order: + - :year + - :month + - :day + time: formats: default: "%Y年%b%d日 %A %H:%M:%S" time: "%H:%M" - time: "%H:%M" short: "%b%d日 %H:%M" long: "%Y年%b%d日 %H:%M" am: "上午" pm: "下午" - + datetime: distance_in_words: half_a_minute: "半分钟" @@ -60,32 +69,13 @@ almost_x_years: one: "将近 1 年" other: "将近 %{count} 年" - prompts: - year: "年" - month: "月" - day: "日" - hour: "时" - minute: "分" - second: "秒" - + number: + # Default format for numbers format: - separator: "." - delimiter: "," + separator: "." + delimiter: "" precision: 3 - currency: - format: - format: "%n %u" - unit: "元" - separator: "." - delimiter: "," - precision: 2 - percentage: - format: - delimiter: "" - precision: - format: - delimiter: "" human: format: delimiter: "" @@ -96,24 +86,24 @@ byte: one: "Byte" other: "Bytes" - kb: "KB" + kb: "kB" mb: "MB" gb: "GB" tb: "TB" - + + +# Used in array.to_sentence. support: array: - words_connector: ", " - two_words_connector: " 和 " - last_word_connector: ", 和 " - + sentence_connector: "和" + skip_last_comma: false + activerecord: errors: template: - header: - one: "有 1 个错误发生导致「%{model}」无法被保存。" - other: "有 %{count} 个错误发生导致「%{model}」无法被保存。" - body: "如下字段出现错误:" + header: + one: "由于发生了一个错误 %{model} 无法保存" + other: "%{count} 个错误使得 %{model} 无法保存" messages: inclusion: "不包含于列表中" exclusion: "是保留关键字" @@ -127,6 +117,7 @@ wrong_length: "长度非法(必须为 %{count} 个字符)" taken: "已经被使用" not_a_number: "不是数字" + not_a_date: "不是合法日期" greater_than: "必须大于 %{count}" greater_than_or_equal_to: "必须大于或等于 %{count}" equal_to: "必须等于 %{count}" @@ -137,7 +128,7 @@ greater_than_start_date: "必须在起始日期之后" not_same_project: "不属于同一个项目" circular_dependency: "此关联将导致循环依赖" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "问题不能关联到它的子任务" actionview_instancetag_blank_option: 请选择 @@ -168,17 +159,21 @@ notice_file_not_found: 您访问的页面不存在或已被删除。 notice_locking_conflict: 数据已被另一位用户更新 notice_not_authorized: 对不起,您无权访问此页面。 - notice_email_sent: "邮件已成功发送到 %{value}" + notice_not_authorized_archived_project: 要访问的项目已经归档。 + notice_email_sent: "邮件已发送至 %{value}" notice_email_error: "发送邮件时发生错误 (%{value})" notice_feeds_access_key_reseted: 您的RSS存取键已被重置。 notice_api_access_key_reseted: 您的API访问键已被重置。 notice_failed_to_save_issues: "%{count} 个问题保存失败(共选择 %{total} 个问题):%{ids}." + notice_failed_to_save_members: "成员保存失败: %{errors}." notice_no_issue_selected: "未选择任何问题!请选择您要编辑的问题。" notice_account_pending: "您的帐号已被成功创建,正在等待管理员的审核。" notice_default_data_loaded: 成功载入默认设置。 notice_unable_delete_version: 无法删除版本 + notice_unable_delete_time_entry: 无法删除工时 notice_issue_done_ratios_updated: 问题完成度已更新。 - + notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" + error_can_t_load_default_data: "无法载入默认设置:%{value}" error_scm_not_found: "版本库中不存在该条目和(或)其修订版本。" error_scm_command_failed: "访问版本库时发生错误:%{value}" @@ -186,13 +181,17 @@ error_issue_not_found_in_project: '问题不存在或不属于此项目' error_no_tracker_in_project: 该项目未设定跟踪标签,请检查项目配置。 error_no_default_issue_status: 未设置默认的问题状态。请检查系统设置("管理" -> "问题状态")。 + error_can_not_delete_custom_field: 无法删除自定义属性 + error_can_not_delete_tracker: "该跟踪标签已包含问题,无法删除" + error_can_not_remove_role: "该角色正在使用中,无法删除" error_can_not_reopen_issue_on_closed_version: 该问题被关联到一个已经关闭的版本,因此无法重新打开。 error_can_not_archive_project: 该项目无法被存档 error_issue_done_ratios_not_updated: 问题完成度未能被更新。 error_workflow_copy_source: 请选择一个源跟踪标签或者角色 error_workflow_copy_target: 请选择目标跟踪标签和角色 - - warning_attachments_not_saved: "%{count} 个文件保存失败。" + error_unable_delete_issue_status: '无法删除问题状态' + error_unable_to_connect: "无法连接 (%{value})" + warning_attachments_not_saved: "%{count} 个文件保存失败" mail_subject_lost_password: "您的 %{value} 密码" mail_body_lost_password: '请点击以下链接来修改您的密码:' @@ -206,9 +205,9 @@ mail_body_reminder: "指派给您的 %{count} 个问题需要在 %{days} 天内完成:" mail_subject_wiki_content_added: "'%{id}' wiki页面已添加" mail_body_wiki_content_added: "'%{id}' wiki页面已由 %{author} 添加。" - mail_subject_wiki_content_updated: "'%{id}' wiki页面已更新" + mail_subject_wiki_content_updated: "'%{id}' wiki页面已更新。" mail_body_wiki_content_updated: "'%{id}' wiki页面已由 %{author} 更新。" - + gui_validation_error: 1 个错误 gui_validation_error_plural: "%{count} 个错误" @@ -247,11 +246,12 @@ field_priority: 优先级 field_fixed_version: 目标版本 field_user: 用户 + field_principal: 用户/用户组 field_role: 角色 field_homepage: 主页 field_is_public: 公开 field_parent: 上级项目 - field_is_in_roadmap: 在路线图中显示问题 + field_is_in_roadmap: 在路线图中显示 field_login: 登录名 field_mail_notification: 邮件通知 field_admin: 管理员 @@ -272,8 +272,8 @@ field_attr_lastname: 姓氏属性 field_attr_mail: 邮件属性 field_onthefly: 即时用户生成 - field_start_date: 开始 - field_done_ratio: 完成度 + field_start_date: 开始日期 + field_done_ratio: % 完成 field_auth_source: 认证模式 field_hide_mail: 隐藏我的邮件地址 field_comments: 注释 @@ -291,6 +291,7 @@ field_redirect_existing_links: 重定向到现有链接 field_estimated_hours: 预期时间 field_column_names: 列 + field_time_entries: 工时 field_time_zone: 时区 field_searchable: 可用作搜索条件 field_default_value: 默认值 @@ -302,7 +303,12 @@ field_content: 内容 field_group_by: 根据此条件分组 field_sharing: 共享 - + field_parent_issue: 父任务 + field_member_of_group: 用户组的成员 + field_assigned_to_role: 角色的成员 + field_text: 文本字段 + field_visible: 可见的 + setting_app_title: 应用程序标题 setting_app_subtitle: 应用程序子标题 setting_welcome_text: 欢迎文字 @@ -310,7 +316,7 @@ setting_login_required: 要求认证 setting_self_registration: 允许自注册 setting_attachment_max_size: 附件大小限制 - setting_issues_export_limit: 问题输出条目的限制 + setting_issues_export_limit: 问题导出条目的限制 setting_mail_from: 邮件发件人地址 setting_bcc_recipients: 使用密件抄送 (bcc) setting_plain_text_mail: 纯文本(无HTML) @@ -329,7 +335,7 @@ setting_cross_project_issue_relations: 允许不同项目之间的问题关联 setting_issue_list_default_columns: 问题列表中显示的默认列 setting_repositories_encodings: 版本库编码 - setting_commit_logs_encoding: 提交注释的编码 + setting_emails_header: 邮件头 setting_emails_footer: 邮件签名 setting_protocol: 协议 setting_per_page_options: 每页显示条目个数的设置 @@ -355,12 +361,18 @@ setting_issue_done_ratio_issue_status: 使用问题状态 setting_start_of_week: 日历开始于 setting_rest_api_enabled: 启用REST web service - + setting_cache_formatted_text: 缓存格式化文字 + setting_default_notification_option: 默认提醒选项 + setting_commit_logtime_enabled: 激活时间日志 + setting_commit_logtime_activity_id: 记录的活动 + setting_gantt_items_limit: 在甘特图上显示的最大记录数 + permission_add_project: 新建项目 permission_add_subprojects: 新建子项目 permission_edit_project: 编辑项目 permission_select_project_modules: 选择项目模块 permission_manage_members: 管理成员 + permission_manage_project_activities: 管理项目活动 permission_manage_versions: 管理版本 permission_manage_categories: 管理问题类别 permission_view_issues: 查看问题 @@ -408,7 +420,9 @@ permission_edit_own_messages: 编辑自己的帖子 permission_delete_messages: 删除帖子 permission_delete_own_messages: 删除自己的帖子 - + permission_export_wiki_pages: 导出 wiki 页面 + permission_manage_subtasks: 管理子任务 + project_module_issue_tracking: 问题跟踪 project_module_time_tracking: 时间跟踪 project_module_news: 新闻 @@ -417,6 +431,8 @@ project_module_wiki: Wiki project_module_repository: 版本库 project_module_boards: 讨论区 + project_module_calendar: 日历 + project_module_gantt: 甘特图 label_user: 用户 label_user_plural: 用户 @@ -475,6 +491,7 @@ label_my_page: 我的工作台 label_my_account: 我的帐号 label_my_projects: 我的项目 + label_my_page_block: 我的工作台模块 label_administration: 管理 label_login: 登录 label_logout: 退出 @@ -484,7 +501,7 @@ label_last_login: 最后登录 label_registered_on: 注册于 label_activity: 活动 - label_overall_activity: 全部活动 + label_overall_activity: 活动概览 label_user_activity: "%{value} 的活动" label_new: 新建 label_logged_as: 登录为 @@ -547,18 +564,18 @@ one: 1 打开 other: "%{count} 打开" label_x_closed_issues_abbr: - zero: 0 关闭 - one: 1 关闭 - other: "%{count} 关闭" + zero: 0 已关闭 + one: 1 已关闭 + other: "%{count} 已关闭" label_total: 合计 label_permissions: 权限 label_current_status: 当前状态 - label_new_statuses_allowed: 可变更的新状态 + label_new_statuses_allowed: 允许的新状态 label_all: 全部 label_none: 无 label_nobody: 无人 - label_next: 下一个 - label_previous: 上一个 + label_next: 下一页 + label_previous: 上一页 label_used_by: 使用中 label_details: 详情 label_add_note: 添加说明 @@ -652,6 +669,7 @@ label_changes_details: 所有变更的详情 label_issue_tracking: 问题跟踪 label_spent_time: 耗时 + label_overall_spent_time: 总体耗时 label_f_hour: "%{value} 小时" label_f_hour_plural: "%{value} 小时" label_time_tracking: 时间跟踪 @@ -689,6 +707,8 @@ label_board: 讨论区 label_board_new: 新建讨论区 label_board_plural: 讨论区 + label_board_locked: 锁定 + label_board_sticky: 置顶 label_topic_plural: 主题 label_message_plural: 帖子 label_message_last: 最新的帖子 @@ -722,12 +742,16 @@ label_search_titles_only: 仅在标题中搜索 label_user_mail_option_all: "收取我的项目的所有通知" label_user_mail_option_selected: "收取选中项目的所有通知..." + label_user_mail_option_none: "不收取任何通知" + label_user_mail_option_only_my_events: "只收取我跟踪或参与的项目的通知" + label_user_mail_option_only_assigned: "只收取分配给我的" + label_user_mail_option_only_owner: 只收取由我创建的 label_user_mail_no_self_notified: "不要发送对我自己提交的修改的通知" label_registration_activation_by_email: 通过邮件认证激活帐号 label_registration_manual_activation: 手动激活帐号 label_registration_automatic_activation: 自动激活帐号 label_display_per_page: "每页显示:%{value}" - label_age: 年龄 + label_age: 提交时间 label_change_properties: 修改属性 label_general: 一般 label_more: 更多 @@ -769,6 +793,11 @@ label_api_access_key: API访问键 label_missing_api_access_key: 缺少API访问键 label_api_access_key_created_on: API访问键是在 %{value} 之前建立的 + label_profile: 简介 + label_subtask_plural: 子任务 + label_project_copy_notifications: 复制项目时发送邮件通知 + label_principal_search: "搜索用户或组:" + label_user_search: "搜索用户:" button_login: 登录 button_submit: 提交 @@ -780,6 +809,7 @@ button_create_and_continue: 创建并继续 button_test: 测试 button_edit: 编辑 + button_edit_associated_wikipage: "编辑相关wiki页面: %{page_title}" button_add: 新增 button_change: 修改 button_apply: 应用 @@ -817,13 +847,13 @@ status_active: 活动的 status_registered: 已注册 status_locked: 已锁定 - + version_status_open: 打开 version_status_locked: 锁定 version_status_closed: 关闭 field_active: 活动 - + text_select_mail_notifications: 选择需要发送邮件通知的动作 text_regexp_info: 例如:^[A-Z0-9]+$ text_min_max_length_info: 0 表示没有限制 @@ -831,6 +861,7 @@ text_subprojects_destroy_warning: "以下子项目也将被同时删除:%{value}" text_workflow_edit: 选择角色和跟踪标签来编辑工作流程 text_are_you_sure: 您确定? + text_are_you_sure_with_children: "删除问题及子任务?" text_journal_changed: "%{label} 从 %{old} 变更为 %{new}" text_journal_set_to: "%{label} 被设置为 %{value}" text_journal_deleted: "%{label} 已删除 (%{old})" @@ -857,6 +888,7 @@ text_no_configuration_data: "角色、跟踪标签、问题状态和工作流程还没有设置。\n强烈建议您先载入默认设置,然后在此基础上进行修改。" text_load_default_configuration: 载入默认设置 text_status_changed_by_changeset: "已应用到变更列表 %{value}." + text_time_logged_by_changeset: "已应用到修订版本 %{value}." text_issues_destroy_confirmation: '您确定要删除选中的问题吗?' text_select_project_modules: '请选择此项目可以使用的模块:' text_default_administrator_account_changed: 默认的管理员帐号已改变 @@ -868,18 +900,20 @@ text_assign_time_entries_to_project: 将已上报的工作量提交到项目中 text_reassign_time_entries: '将已上报的工作量指定到此问题:' text_user_wrote: "%{value} 写到:" + text_enumeration_destroy_question: "%{count} 个对象被关联到了这个枚举值。" text_enumeration_category_reassign_to: '将它们关联到新的枚举值:' - text_enumeration_destroy_question: "%{count} 个对象被关联到了这个枚举值。" text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/configuration.yml中配置您的SMTP服务器信息并重新启动以使其生效。" text_repository_usernames_mapping: "选择或更新与版本库中的用户名对应的Redmine用户。\n版本库中与Redmine中的同名用户将被自动对应。" text_diff_truncated: '... 差别内容超过了可显示的最大行数并已被截断' text_custom_field_possible_values_info: '每项数值一行' text_wiki_page_destroy_question: 此页面有 %{descendants} 个子页面和下级页面。您想进行那种操作? - text_wiki_page_reassign_children: 将子页面的上级页面设置为 text_wiki_page_nullify_children: 将子页面保留为根页面 text_wiki_page_destroy_children: 删除子页面及其所有下级页面 + text_wiki_page_reassign_children: 将子页面的上级页面设置为 text_own_membership_delete_confirmation: 你正在删除你现有的某些或全部权限,如果这样做了你可能将会再也无法编辑该项目了。你确定要继续吗? - + text_zoom_in: Zoom in + text_zoom_out: Zoom out + default_role_manager: 管理人员 default_role_developer: 开发人员 default_role_reporter: 报告人员 @@ -906,52 +940,43 @@ enumeration_doc_categories: 文档类别 enumeration_activities: 活动(时间跟踪) enumeration_system_activity: 系统活动 - label_board_sticky: 置顶 - label_board_locked: 锁定 - permission_export_wiki_pages: 导出 wiki 页面 - setting_cache_formatted_text: 缓存格式化文本 - permission_manage_project_activities: 管理项目活动 - error_unable_delete_issue_status: 无法删除问题状态 - label_profile: 简介 - permission_manage_subtasks: 管理子任务 - field_parent_issue: 父任务 - label_subtask_plural: 子任务 - label_project_copy_notifications: 复制项目时发送邮件通知 - error_can_not_delete_custom_field: 不能删除自定义属性 - error_unable_to_connect: 不能连接到 (%{value}) - error_can_not_remove_role: 该角色正在使用中, 不能删除. - error_can_not_delete_tracker: 该跟踪标签包含问题, 不能删除. - field_principal: 用户/用户组 - label_my_page_block: 我的工作台模块 - notice_failed_to_save_members: "成员保存失败:%{errors}。" - text_zoom_out: 缩小 - text_zoom_in: 放大 - notice_unable_delete_time_entry: 无法删除工时记录。 - label_overall_spent_time: 所有项目耗用工时 - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" + label_news_comment_added: Comment added to a news + button_expand_all: Expand all + button_collapse_all: Collapse all + label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee + label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author + label_bulk_edit_selected_time_entries: Bulk edit selected time entries + text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? + label_role_anonymous: Anonymous + label_role_non_member: Non member + label_issue_note_added: Note added + label_issue_status_updated: Status updated + label_issue_priority_updated: Priority updated + label_issues_visibility_own: Issues created by or assigned to the user + field_issues_visibility: Issues visibility + label_issues_visibility_all: All issues + permission_set_own_issues_private: Set own issues public or private + field_is_private: Private + permission_set_issues_private: Set issues public or private + label_issues_visibility_public: All non private issues + text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). + + field_commit_logs_encoding: 提交注释的编码 + field_scm_path_encoding: Path encoding + text_scm_path_encoding_note: "Default: UTF-8" + field_path_to_repository: Path to repository + field_root_directory: Root directory + field_cvs_module: Module + field_cvsroot: CVSROOT + text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) + text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) + text_scm_command: Command + text_scm_command_version: Version + label_git_report_last_commit: Report last commit for files and directories + text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it. + text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel. diff -r adc8466df404 -r 753f1380d6bc config/routes.rb --- a/config/routes.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/config/routes.rb Mon Jun 06 14:41:04 2011 +0100 @@ -14,13 +14,21 @@ map.connect 'roles/workflow/:id/:role_id/:tracker_id', :controller => 'roles', :action => 'workflow' map.connect 'help/:ctrl/:page', :controller => 'help' - map.connect 'projects/:project_id/time_entries/report', :controller => 'time_entry_reports', :action => 'report' map.with_options :controller => 'time_entry_reports', :action => 'report',:conditions => {:method => :get} do |time_report| + time_report.connect 'projects/:project_id/issues/:issue_id/time_entries/report' + time_report.connect 'projects/:project_id/issues/:issue_id/time_entries/report.:format' + time_report.connect 'projects/:project_id/time_entries/report' + time_report.connect 'projects/:project_id/time_entries/report.:format' time_report.connect 'time_entries/report' time_report.connect 'time_entries/report.:format' - time_report.connect 'projects/:project_id/time_entries/report.:format' end + map.bulk_edit_time_entry 'time_entries/bulk_edit', + :controller => 'timelog', :action => 'bulk_edit', :conditions => { :method => :get } + map.bulk_update_time_entry 'time_entries/bulk_edit', + :controller => 'timelog', :action => 'bulk_update', :conditions => { :method => :post } + map.time_entries_context_menu '/time_entries/context_menu', + :controller => 'context_menus', :action => 'time_entries' # TODO: wasteful since this is also nested under issues, projects, and projects/issues map.resources :time_entries, :controller => 'timelog' @@ -80,10 +88,16 @@ map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new', :id => /\d+/, :conditions => { :method => :post } map.connect '/issues/:id/destroy', :controller => 'issues', :action => 'destroy', :conditions => { :method => :post } # legacy - map.resource :gantt, :path_prefix => '/issues', :controller => 'gantts', :only => [:show, :update] - map.resource :gantt, :path_prefix => '/projects/:project_id/issues', :controller => 'gantts', :only => [:show, :update] - map.resource :calendar, :path_prefix => '/issues', :controller => 'calendars', :only => [:show, :update] - map.resource :calendar, :path_prefix => '/projects/:project_id/issues', :controller => 'calendars', :only => [:show, :update] + map.with_options :controller => 'gantts', :action => 'show' do |gantts_routes| + gantts_routes.connect '/projects/:project_id/issues/gantt' + gantts_routes.connect '/projects/:project_id/issues/gantt.:format' + gantts_routes.connect '/issues/gantt.:format' + end + + map.with_options :controller => 'calendars', :action => 'show' do |calendars_routes| + calendars_routes.connect '/projects/:project_id/issues/calendar' + calendars_routes.connect '/issues/calendar' + end map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports| reports.connect 'projects/:id/issues/report', :action => 'issue_report' @@ -215,6 +229,7 @@ map.resources :groups #left old routes at the bottom for backwards compat + map.connect 'projects/:project_id/queries/:action', :controller => 'queries' map.connect 'projects/:project_id/issues/:action', :controller => 'issues' map.connect 'projects/:project_id/documents/:action', :controller => 'documents' map.connect 'projects/:project_id/boards/:action/:id', :controller => 'boards' diff -r adc8466df404 -r 753f1380d6bc db/.svn/all-wcprops --- a/db/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/db/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 27 -/svn/!svn/ver/4981/trunk/db +V 41 +/svn/!svn/ver/5878/branches/1.2-stable/db END diff -r adc8466df404 -r 753f1380d6bc db/.svn/entries --- a/db/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/db/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/db +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/db http://redmine.rubyforge.org/svn -2011-03-01T10:14:47.182368Z -4981 +2011-05-12T17:29:18.150936Z +5762 tmaruyama has-props diff -r adc8466df404 -r 753f1380d6bc db/migrate/.svn/all-wcprops --- a/db/migrate/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/db/migrate/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,1121 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 35 -/svn/!svn/ver/4981/trunk/db/migrate +V 49 +/svn/!svn/ver/5878/branches/1.2-stable/db/migrate END -20101107130441_add_custom_fields_visible.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/4383/trunk/db/migrate/20101107130441_add_custom_fields_visible.rb -END -077_remove_issue_statuses_html_color.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/881/trunk/db/migrate/077_remove_issue_statuses_html_color.rb -END -053_add_changes_branch.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/559/trunk/db/migrate/053_add_changes_branch.rb -END -20091017214519_add_missing_indexes_to_custom_values.rb -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214519_add_missing_indexes_to_custom_values.rb -END -101_populate_changesets_user_id.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/2006/trunk/db/migrate/101_populate_changesets_user_id.rb -END -033_add_timelog_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/674/trunk/db/migrate/033_add_timelog_permissions.rb -END -078_add_custom_fields_position.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/1623/trunk/db/migrate/078_add_custom_fields_position.rb -END -006_calendar_and_activity.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/674/trunk/db/migrate/006_calendar_and_activity.rb -END -029_create_wiki_contents.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/479/trunk/db/migrate/029_create_wiki_contents.rb -END -028_create_wiki_pages.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/323/trunk/db/migrate/028_create_wiki_pages.rb -END -20090704172355_create_groups_users.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2869/trunk/db/migrate/20090704172355_create_groups_users.rb -END -20101114115359_change_projects_identifier_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/4402/trunk/db/migrate/20101114115359_change_projects_identifier_limit.rb -END -080_add_users_type.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/919/trunk/db/migrate/080_add_users_type.rb -END -20091017214440_add_missing_indexes_to_wiki_contents.rb -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214440_add_missing_indexes_to_wiki_contents.rb -END -018_set_doc_and_files_notifications.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/674/trunk/db/migrate/018_set_doc_and_files_notifications.rb -END -20100129193402_change_users_mail_notification_to_string.rb -K 25 -svn:wc:ra_dav:version-url -V 94 -/svn/!svn/ver/4413/trunk/db/migrate/20100129193402_change_users_mail_notification_to_string.rb -END -008_create_user_preferences.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/67/trunk/db/migrate/008_create_user_preferences.rb -END -025_add_search_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/674/trunk/db/migrate/025_add_search_permission.rb -END -023_add_tracker_is_in_roadmap.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/228/trunk/db/migrate/023_add_tracker_is_in_roadmap.rb -END -20091220183727_add_index_to_settings_name.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/3206/trunk/db/migrate/20091220183727_add_index_to_settings_name.rb -END -20091017214236_add_missing_indexes_to_time_entries.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214236_add_missing_indexes_to_time_entries.rb -END -035_create_changes.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/377/trunk/db/migrate/035_create_changes.rb -END -102_add_custom_fields_editable.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/2276/trunk/db/migrate/102_add_custom_fields_editable.rb -END -20091017213332_add_missing_indexes_to_documents.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213332_add_missing_indexes_to_documents.rb -END -096_add_commit_access_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/1814/trunk/db/migrate/096_add_commit_access_permission.rb -END -20090401221305_update_enumerations_to_sti.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/2777/trunk/db/migrate/20090401221305_update_enumerations_to_sti.rb -END -091_change_changesets_revision_to_string.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/1236/trunk/db/migrate/091_change_changesets_revision_to_string.rb -END -024_add_roadmap_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/674/trunk/db/migrate/024_add_roadmap_permission.rb -END -20091017214720_add_missing_indexes_to_wiki_redirects.rb -K 25 -svn:wc:ra_dav:version-url -V 91 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214720_add_missing_indexes_to_wiki_redirects.rb -END -072_add_enumerations_position.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/1623/trunk/db/migrate/072_add_enumerations_position.rb -END -034_create_changesets.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/479/trunk/db/migrate/034_create_changesets.rb -END -20090614091200_fix_messages_sticky_null.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2787/trunk/db/migrate/20090614091200_fix_messages_sticky_null.rb -END -108_add_identity_url_to_users.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/2440/trunk/db/migrate/108_add_identity_url_to_users.rb -END -20091220184736_add_indexes_to_issue_status.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3206/trunk/db/migrate/20091220184736_add_indexes_to_issue_status.rb -END -20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb -K 25 -svn:wc:ra_dav:version-url -V 105 -/svn/!svn/ver/4013/trunk/db/migrate/20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb -END -044_set_language_length_to_five.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/518/trunk/db/migrate/044_set_language_length_to_five.rb -END -20091227112908_change_wiki_contents_text_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/3254/trunk/db/migrate/20091227112908_change_wiki_contents_text_limit.rb -END -090_change_versions_name_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/1220/trunk/db/migrate/090_change_versions_name_limit.rb -END -20090503121510_drop_members_role_id.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/2726/trunk/db/migrate/20090503121510_drop_members_role_id.rb -END -021_add_tracker_position.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/864/trunk/db/migrate/021_add_tracker_position.rb -END -012_add_comments_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/674/trunk/db/migrate/012_add_comments_permissions.rb -END -20110223180953_salt_user_passwords.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/4936/trunk/db/migrate/20110223180953_salt_user_passwords.rb -END -038_add_custom_field_is_filter.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/447/trunk/db/migrate/038_add_custom_field_is_filter.rb -END -20100221100219_add_index_on_changesets_scmid.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/3471/trunk/db/migrate/20100221100219_add_index_on_changesets_scmid.rb -END -046_create_messages.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/529/trunk/db/migrate/046_create_messages.rb -END -20091225164732_remove_enumerations_opt.rb -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/3240/trunk/db/migrate/20091225164732_remove_enumerations_opt.rb -END -20110220160626_add_workflows_assignee_and_author.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/4895/trunk/db/migrate/20110220160626_add_workflows_assignee_and_author.rb -END -030_add_projects_feeds_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/674/trunk/db/migrate/030_add_projects_feeds_permissions.rb -END -045_create_boards.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/864/trunk/db/migrate/045_create_boards.rb -END -20110228000000_add_repositories_log_encoding.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/4980/trunk/db/migrate/20110228000000_add_repositories_log_encoding.rb -END -076_allow_null_position.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/1140/trunk/db/migrate/076_allow_null_position.rb -END -20091017213835_add_missing_indexes_to_user_preferences.rb -K 25 -svn:wc:ra_dav:version-url -V 93 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213835_add_missing_indexes_to_user_preferences.rb -END -20091220183509_add_lft_and_rgt_indexes_to_projects.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/3206/trunk/db/migrate/20091220183509_add_lft_and_rgt_indexes_to_projects.rb -END -20091017212644_add_missing_indexes_to_messages.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2928/trunk/db/migrate/20091017212644_add_missing_indexes_to_messages.rb -END -20100705164950_change_changes_path_length_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/3860/trunk/db/migrate/20100705164950_change_changes_path_length_limit.rb -END -20091017213910_add_missing_indexes_to_issues.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213910_add_missing_indexes_to_issues.rb -END -20091017214406_add_missing_indexes_to_attachments.rb -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214406_add_missing_indexes_to_attachments.rb -END -081_create_projects_trackers.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/920/trunk/db/migrate/081_create_projects_trackers.rb -END -20091017214308_add_missing_indexes_to_news.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214308_add_missing_indexes_to_news.rb -END -20090403001910_add_project_to_enumerations.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2947/trunk/db/migrate/20090403001910_add_project_to_enumerations.rb -END -107_add_open_id_authentication_tables.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/2439/trunk/db/migrate/107_add_open_id_authentication_tables.rb -END -075_add_members_mail_notification.rb -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/855/trunk/db/migrate/075_add_members_mail_notification.rb -END -047_add_boards_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/674/trunk/db/migrate/047_add_boards_permissions.rb -END -037_add_project_identifier.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/397/trunk/db/migrate/037_add_project_identifier.rb -END -073_add_enumerations_is_default.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/803/trunk/db/migrate/073_add_enumerations_is_default.rb -END -20100313171051_add_index_on_issues_nested_set.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3578/trunk/db/migrate/20100313171051_add_index_on_issues_nested_set.rb -END -071_add_queries_column_names.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/782/trunk/db/migrate/071_add_queries_column_names.rb -END -20091123212029_add_default_done_ratio_to_issue_status.rb -K 25 -svn:wc:ra_dav:version-url -V 92 -/svn/!svn/ver/3151/trunk/db/migrate/20091123212029_add_default_done_ratio_to_issue_status.rb -END -020_add_role_position.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/864/trunk/db/migrate/020_add_role_position.rb -END -20091010093521_fix_users_custom_values.rb -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/2905/trunk/db/migrate/20091010093521_fix_users_custom_values.rb -END -001_setup.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/1764/trunk/db/migrate/001_setup.rb -END -016_add_repositories_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/674/trunk/db/migrate/016_add_repositories_permissions.rb -END -20100129193813_update_mail_notification_values.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/4413/trunk/db/migrate/20100129193813_update_mail_notification_values.rb -END -20091017214611_add_missing_indexes_to_journals.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214611_add_missing_indexes_to_journals.rb -END -041_rename_comment_to_comments.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/482/trunk/db/migrate/041_rename_comment_to_comments.rb -END -20091017214107_add_missing_indexes_to_custom_fields.rb -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214107_add_missing_indexes_to_custom_fields.rb -END -089_add_attachments_description.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/1180/trunk/db/migrate/089_add_attachments_description.rb -END -067_create_wiki_redirects.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/720/trunk/db/migrate/067_create_wiki_redirects.rb -END -20091017214750_add_missing_indexes_to_custom_fields_trackers.rb -K 25 -svn:wc:ra_dav:version-url -V 99 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214750_add_missing_indexes_to_custom_fields_trackers.rb -END -103_set_custom_fields_editable.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/2279/trunk/db/migrate/103_set_custom_fields_editable.rb -END -20110226120132_change_auth_sources_account_password_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 96 -/svn/!svn/ver/4950/trunk/db/migrate/20110226120132_change_auth_sources_account_password_limit.rb -END -094_change_projects_homepage_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/1457/trunk/db/migrate/094_change_projects_homepage_limit.rb -END -093_add_wiki_pages_protected.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/1415/trunk/db/migrate/093_add_wiki_pages_protected.rb -END -039_create_watchers.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/454/trunk/db/migrate/039_create_watchers.rb -END -083_add_messages_sticky.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/926/trunk/db/migrate/083_add_messages_sticky.rb -END -060_change_changesets_committer_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/1222/trunk/db/migrate/060_change_changesets_committer_limit.rb -END -069_add_issues_estimated_hours.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/731/trunk/db/migrate/069_add_issues_estimated_hours.rb -END -027_create_wikis.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/323/trunk/db/migrate/027_create_wikis.rb -END -20101104182107_add_unique_index_on_members.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/4610/trunk/db/migrate/20101104182107_add_unique_index_on_members.rb -END -20100313132032_add_issues_nested_sets_columns.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3573/trunk/db/migrate/20100313132032_add_issues_nested_sets_columns.rb -END -061_add_roles_builtin.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/674/trunk/db/migrate/061_add_roles_builtin.rb -END -026_add_repository_login_and_password.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/319/trunk/db/migrate/026_add_repository_login_and_password.rb -END -022_serialize_possibles_values.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/223/trunk/db/migrate/022_serialize_possibles_values.rb -END -106_remove_projects_projects_count.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2305/trunk/db/migrate/106_remove_projects_projects_count.rb -END -20090318181151_extend_settings_name.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/2599/trunk/db/migrate/20090318181151_extend_settings_name.rb -END -079_add_user_preferences_time_zone.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/917/trunk/db/migrate/079_add_user_preferences_time_zone.rb -END -099_add_delete_wiki_pages_attachments_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/1938/trunk/db/migrate/099_add_delete_wiki_pages_attachments_permission.rb -END -098_set_topic_authors_as_watchers.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2415/trunk/db/migrate/098_set_topic_authors_as_watchers.rb -END -059_add_roles_assignable.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/649/trunk/db/migrate/059_add_roles_assignable.rb -END -013_create_queries.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/95/trunk/db/migrate/013_create_queries.rb -END -049_add_wiki_destroy_page_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/674/trunk/db/migrate/049_add_wiki_destroy_page_permission.rb -END -040_create_changesets_issues.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/473/trunk/db/migrate/040_create_changesets_issues.rb -END -048_allow_null_version_effective_date.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/1140/trunk/db/migrate/048_allow_null_version_effective_date.rb -END -085_add_role_tracker_old_status_index_to_workflows.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/1069/trunk/db/migrate/085_add_role_tracker_old_status_index_to_workflows.rb -END -20091017213257_add_missing_indexes_to_auth_sources.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213257_add_missing_indexes_to_auth_sources.rb -END -070_change_attachments_content_type_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/1222/trunk/db/migrate/070_change_attachments_content_type_limit.rb -END -092_change_changes_from_revision_to_string.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/1236/trunk/db/migrate/092_change_changes_from_revision_to_string.rb -END -20110223180944_add_users_salt.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/4936/trunk/db/migrate/20110223180944_add_users_salt.rb -END -20090214190337_add_watchers_user_id_type_index.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2466/trunk/db/migrate/20090214190337_add_watchers_user_id_type_index.rb -END -20091017212457_add_missing_indexes_to_custom_fields_projects.rb -K 25 -svn:wc:ra_dav:version-url -V 99 -/svn/!svn/ver/2928/trunk/db/migrate/20091017212457_add_missing_indexes_to_custom_fields_projects.rb -END -054_add_changesets_scmid.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/559/trunk/db/migrate/054_add_changesets_scmid.rb -END -097_add_view_wiki_edits_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/1896/trunk/db/migrate/097_add_view_wiki_edits_permission.rb -END -065_add_settings_updated_on.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/685/trunk/db/migrate/065_add_settings_updated_on.rb -END -20091017213716_add_missing_indexes_to_member_roles.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213716_add_missing_indexes_to_member_roles.rb -END -20091108092559_add_versions_status.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/3259/trunk/db/migrate/20091108092559_add_versions_status.rb -END -20091017213228_add_missing_indexes_to_watchers.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213228_add_missing_indexes_to_watchers.rb -END -20110228000100_copy_repositories_log_encoding.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/4981/trunk/db/migrate/20110228000100_copy_repositories_log_encoding.rb -END -063_add_roles_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/674/trunk/db/migrate/063_add_roles_permissions.rb -END -20090704172350_populate_users_type.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2869/trunk/db/migrate/20090704172350_populate_users_type.rb -END -20090503121505_populate_member_roles.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/2729/trunk/db/migrate/20090503121505_populate_member_roles.rb -END -052_add_changes_revision.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/559/trunk/db/migrate/052_add_changes_revision.rb -END -050_add_wiki_attachments_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/674/trunk/db/migrate/050_add_wiki_attachments_permissions.rb -END -062_insert_builtin_roles.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/674/trunk/db/migrate/062_insert_builtin_roles.rb -END -104_add_projects_lft_and_rgt.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/2304/trunk/db/migrate/104_add_projects_lft_and_rgt.rb -END -074_add_auth_sources_tls.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/845/trunk/db/migrate/074_add_auth_sources_tls.rb -END -20091114105931_add_view_issues_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/3039/trunk/db/migrate/20091114105931_add_view_issues_permission.rb -END -20091017214336_add_missing_indexes_to_users.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214336_add_missing_indexes_to_users.rb -END -082_add_messages_locked.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/926/trunk/db/migrate/082_add_messages_locked.rb -END -20091017213113_add_missing_indexes_to_enumerations.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213113_add_missing_indexes_to_enumerations.rb -END -20091017213444_add_missing_indexes_to_tokens.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213444_add_missing_indexes_to_tokens.rb -END -20090503121501_create_member_roles.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2726/trunk/db/migrate/20090503121501_create_member_roles.rb -END -057_add_versions_wiki_page_title.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/564/trunk/db/migrate/057_add_versions_wiki_page_title.rb -END -20090323224724_add_type_to_enumerations.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2777/trunk/db/migrate/20090323224724_add_type_to_enumerations.rb -END -004_export_pdf.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/674/trunk/db/migrate/004_export_pdf.rb -END -031_add_repository_root_url.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/344/trunk/db/migrate/031_add_repository_root_url.rb -END -20091205124427_add_versions_sharing.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/3123/trunk/db/migrate/20091205124427_add_versions_sharing.rb -END -20091017214644_add_missing_indexes_to_issue_relations.rb -K 25 -svn:wc:ra_dav:version-url -V 92 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214644_add_missing_indexes_to_issue_relations.rb -END -036_add_changeset_commit_date.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/383/trunk/db/migrate/036_add_changeset_commit_date.rb -END -051_add_project_status.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/549/trunk/db/migrate/051_add_project_status.rb -END -105_build_projects_tree.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/2304/trunk/db/migrate/105_build_projects_tree.rb -END -20091017214015_add_missing_indexes_to_members.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214015_add_missing_indexes_to_members.rb -END -20090401231134_add_active_field_to_enumerations.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/2946/trunk/db/migrate/20090401231134_add_active_field_to_enumerations.rb -END -084_change_auth_sources_account_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/1222/trunk/db/migrate/084_change_auth_sources_account_limit.rb -END -20090704172358_add_member_roles_inherited_from.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2869/trunk/db/migrate/20090704172358_add_member_roles_inherited_from.rb -END -019_add_issue_status_position.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/864/trunk/db/migrate/019_add_issue_status_position.rb -END -20091017212227_add_missing_indexes_to_workflows.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/2928/trunk/db/migrate/20091017212227_add_missing_indexes_to_workflows.rb -END -20101114115114_change_projects_name_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/4402/trunk/db/migrate/20101114115114_change_projects_name_limit.rb -END -20090406161854_add_parent_id_to_enumerations.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2947/trunk/db/migrate/20090406161854_add_parent_id_to_enumerations.rb -END -20091017212938_add_missing_indexes_to_repositories.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2928/trunk/db/migrate/20091017212938_add_missing_indexes_to_repositories.rb -END -005_issue_start_date.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/67/trunk/db/migrate/005_issue_start_date.rb -END -009_add_hide_mail_pref.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/67/trunk/db/migrate/009_add_hide_mail_pref.rb -END -056_add_repositories_changes_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/674/trunk/db/migrate/056_add_repositories_changes_permission.rb -END -20110224000000_add_repositories_path_encoding.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/4940/trunk/db/migrate/20110224000000_add_repositories_path_encoding.rb -END -032_create_time_entries.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/479/trunk/db/migrate/032_create_time_entries.rb -END -20110226120112_change_repositories_password_limit.rb -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/4950/trunk/db/migrate/20110226120112_change_repositories_password_limit.rb -END -068_create_enabled_modules.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/725/trunk/db/migrate/068_create_enabled_modules.rb -END -20091017214136_add_missing_indexes_to_queries.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2928/trunk/db/migrate/20091017214136_add_missing_indexes_to_queries.rb -END -20091017213151_add_missing_indexes_to_wiki_pages.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213151_add_missing_indexes_to_wiki_pages.rb -END -066_add_custom_value_customized_index.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/702/trunk/db/migrate/066_add_custom_value_customized_index.rb -END -007_create_journals.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/674/trunk/db/migrate/007_create_journals.rb -END -088_add_custom_fields_default_value.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/1091/trunk/db/migrate/088_add_custom_fields_default_value.rb -END -003_issue_add_note.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/674/trunk/db/migrate/003_issue_add_note.rb -END -20091017213027_add_missing_indexes_to_comments.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213027_add_missing_indexes_to_comments.rb -END -20091017213536_add_missing_indexes_to_changesets.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213536_add_missing_indexes_to_changesets.rb -END -086_add_custom_fields_searchable.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/994/trunk/db/migrate/086_add_custom_fields_searchable.rb -END -042_create_issue_relations.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/506/trunk/db/migrate/042_create_issue_relations.rb -END -011_add_news_comments_count.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/81/trunk/db/migrate/011_add_news_comments_count.rb -END -20090312172426_add_queries_sort_criteria.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/2572/trunk/db/migrate/20090312172426_add_queries_sort_criteria.rb -END -20091017213642_add_missing_indexes_to_issue_categories.rb -K 25 -svn:wc:ra_dav:version-url -V 93 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213642_add_missing_indexes_to_issue_categories.rb -END -100_add_changesets_user_id.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/2006/trunk/db/migrate/100_add_changesets_user_id.rb -END -010_create_comments.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/479/trunk/db/migrate/010_create_comments.rb -END -064_drop_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/674/trunk/db/migrate/064_drop_permissions.rb -END -20090312194159_add_projects_trackers_unique_index.rb -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2580/trunk/db/migrate/20090312194159_add_projects_trackers_unique_index.rb -END -043_add_relations_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/674/trunk/db/migrate/043_add_relations_permissions.rb -END -055_add_repositories_type.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/559/trunk/db/migrate/055_add_repositories_type.rb -END -20091025163651_add_activity_indexes.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/2981/trunk/db/migrate/20091025163651_add_activity_indexes.rb -END -058_add_issue_categories_assigned_to_id.rb -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/577/trunk/db/migrate/058_add_issue_categories_assigned_to_id.rb -END -002_issue_move.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/674/trunk/db/migrate/002_issue_move.rb -END -015_create_repositories.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/106/trunk/db/migrate/015_create_repositories.rb -END -20090425161243_add_queries_group_by.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/2696/trunk/db/migrate/20090425161243_add_queries_group_by.rb -END -014_add_queries_permissions.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/674/trunk/db/migrate/014_add_queries_permissions.rb -END -087_change_projects_description_to_text.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/1189/trunk/db/migrate/087_change_projects_description_to_text.rb -END -20091017213757_add_missing_indexes_to_boards.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213757_add_missing_indexes_to_boards.rb -END -017_create_settings.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/167/trunk/db/migrate/017_create_settings.rb -END -20110227125750_change_journal_details_values_to_text.rb -K 25 -svn:wc:ra_dav:version-url -V 91 -/svn/!svn/ver/4954/trunk/db/migrate/20110227125750_change_journal_details_values_to_text.rb -END -095_add_wiki_pages_parent_id.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/1698/trunk/db/migrate/095_add_wiki_pages_parent_id.rb -END diff -r adc8466df404 -r 753f1380d6bc db/migrate/.svn/entries --- a/db/migrate/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/db/migrate/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/db/migrate +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/db/migrate http://redmine.rubyforge.org/svn -2011-03-01T10:14:47.182368Z -4981 +2011-05-12T17:29:18.150936Z +5762 tmaruyama @@ -32,7 +32,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 21dc29619a0cfd0f3aa12d77cc5cb132 2010-11-07T14:17:35.749175Z 4383 @@ -66,7 +66,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e1234fbaef167ddc0013ffe1d3bc67b9 2007-11-04T11:40:17.595469Z 881 @@ -100,7 +100,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 0b2c38434ec4b25c41f50963a46a3bc6 2007-06-12T20:12:05.590809Z 559 @@ -134,7 +134,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z dba48c03009eb5bcbd2f686a37c42147 2009-10-17T22:23:29.892475Z 2928 @@ -162,13 +162,47 @@ 208 +20110408103312_add_roles_issues_visibility.rb +file + + + + +2011-06-06T13:18:33.000000Z +a2bd4929e0871bc3fd00ca4a5aa321cc +2011-04-11T17:53:15.908614Z +5416 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +253 + 101_populate_changesets_user_id.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z b17611805f3b447ec0f0b703ea8b6d10 2008-11-10T18:59:06.897210Z 2006 @@ -202,7 +236,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 23ebbc94eb59590d0f0b200b4b38289b 2007-08-29T16:52:35.680643Z 674 @@ -236,7 +270,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z ffabca1301a0ade41918ec9d6618fda0 2008-07-04T17:58:14.743502Z 1623 @@ -270,7 +304,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e6ff0ff9c004d9688e79b550991ec109 2007-08-29T16:52:35.680643Z 674 @@ -304,7 +338,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 39c994e2469a6dfb97fa50cf595439e8 2007-04-25T15:06:20.062636Z 479 @@ -338,7 +372,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 828df977f9e16943bc74595c65774c62 2007-03-10T15:09:49.115269Z 323 @@ -372,7 +406,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z eea8e3f0a1fe28e8c686af190259a3d6 2009-09-12T08:36:46.650954Z 2869 @@ -406,7 +440,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z be338f41292d95bb7ba3caa125999de0 2010-11-14T12:33:14.198318Z 4402 @@ -440,7 +474,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 06c8b504bcdd08c2f5dcf14a0b927420 2007-11-20T15:40:16.305800Z 919 @@ -474,7 +508,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 283fb200008f4dae98e0b3d46f0b97aa 2009-10-17T22:23:29.892475Z 2928 @@ -508,7 +542,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z da329a16de705c673418c18119f788d8 2007-08-29T16:52:35.680643Z 674 @@ -542,7 +576,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 627e34913535f16f767133cbdc5b57f0 2010-11-20T09:55:06.580420Z 4413 @@ -576,7 +610,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 5bb1427a275abe1f2ec4b6b03a087cd8 2006-12-03T19:55:45.161980Z 62 @@ -604,13 +638,47 @@ 281 +023_add_tracker_is_in_roadmap.rb +file + + + + +2011-06-06T13:15:00.000000Z +f4c10807bb47b69af35e9402966089f1 +2007-02-04T09:18:40.598564Z +228 +jplang + + + + + + + + + + + + + + + + + + + + + +230 + 025_add_search_permission.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 42937036f9c414f7d9b028f629b1ce20 2007-08-29T16:52:35.680643Z 674 @@ -638,47 +706,13 @@ 412 -023_add_tracker_is_in_roadmap.rb -file - - - - -2011-03-03T11:05:12.000000Z -f4c10807bb47b69af35e9402966089f1 -2007-02-04T09:18:40.598564Z -228 -jplang - - - - - - - - - - - - - - - - - - - - - -230 - 20091220183727_add_index_to_settings_name.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z c5d86ec3cda95998a3fb590c6f492b6b 2009-12-20T19:13:22.787652Z 3206 @@ -712,7 +746,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z b2f88560d10a9676bdb65e18f9a13d65 2009-10-17T22:23:29.892475Z 2928 @@ -746,7 +780,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z a269e98b11a4d0d865c82328d7af5663 2007-03-25T12:12:15.060977Z 377 @@ -780,7 +814,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 69a42a62536b1f435ce1080ceccb4c75 2009-01-17T11:18:04.652409Z 2276 @@ -814,7 +848,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 84bec26b6eaebc64c437c5a3b4784a94 2009-10-17T22:23:29.892475Z 2928 @@ -848,7 +882,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 53ee6af48c18534db0ffdd4fa5c5df7f 2008-09-13T16:31:11.005265Z 1814 @@ -876,39 +910,39 @@ 321 -20090401221305_update_enumerations_to_sti.rb -file - - - - -2011-03-03T11:05:12.000000Z -d343c3ba8f04d1cc71f20c9860d5907b -2009-05-30T23:30:36.923541Z -2777 -edavis10 - - - - - - - - - - - - - - - - - - - - - -329 +024_add_roadmap_permission.rb +file + + + + +2011-06-06T13:15:00.000000Z +f1b96e04888c0a48bf29dd0556ba8027 +2007-08-29T16:52:35.680643Z +674 +jplang + + + + + + + + + + + + + + + + + + + + + +445 091_change_changesets_revision_to_string.rb file @@ -916,7 +950,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 611baff063a1d909ba581aa98018cae7 2008-03-12T20:28:49.748698Z 1236 @@ -944,39 +978,39 @@ 245 -024_add_roadmap_permission.rb -file - - - - -2011-03-03T11:05:12.000000Z -f1b96e04888c0a48bf29dd0556ba8027 -2007-08-29T16:52:35.680643Z -674 -jplang - - - - - - - - - - - - - - - - - - - - - -445 +20090401221305_update_enumerations_to_sti.rb +file + + + + +2011-06-06T13:15:00.000000Z +d343c3ba8f04d1cc71f20c9860d5907b +2009-05-30T23:30:36.923541Z +2777 +edavis10 + + + + + + + + + + + + + + + + + + + + + +329 20091017214720_add_missing_indexes_to_wiki_redirects.rb file @@ -984,7 +1018,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 72e8d36a80b63657037f175b368f2e2c 2009-10-17T22:23:29.892475Z 2928 @@ -1018,7 +1052,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 891f793e4f2ab50f57b8488c764ceff1 2008-07-04T17:58:14.743502Z 1623 @@ -1052,7 +1086,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 82595f307b6fe5053151a681b737f063 2007-04-25T15:06:20.062636Z 479 @@ -1086,7 +1120,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z c460bb38faa03667fc34a3b131ec40df 2009-06-14T09:19:20.900273Z 2787 @@ -1120,7 +1154,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z b175e6c85c5faf4b5d2f092f65338b10 2009-02-11T19:06:55.627694Z 2440 @@ -1154,7 +1188,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 7aa35de55587b897fea800e8044039a8 2009-12-20T19:13:22.787652Z 3206 @@ -1188,7 +1222,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e4eff12465b879f063cac04a709438b9 2010-08-22T18:42:00.112555Z 4013 @@ -1222,7 +1256,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 0492f13cf6f16f90603fdd82c388bace 2007-05-08T09:26:57.307537Z 518 @@ -1256,7 +1290,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 9a69054334fcbc6b72eb8b5ae9957129 2009-12-27T11:57:13.519273Z 3254 @@ -1290,7 +1324,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z b17259dfa6f46844e0f86b110577fbc6 2008-03-09T15:36:47.697904Z 1220 @@ -1324,7 +1358,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e00a737604d0be6b94c92236e4f378eb 2009-05-10T10:54:31.775505Z 2726 @@ -1358,7 +1392,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 2fb7c5a95c8ed07756c3fbb917c98230 2007-10-22T21:07:13.432482Z 864 @@ -1392,7 +1426,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 1702102b56ee973066c86d659252a366 2007-08-29T16:52:35.680643Z 674 @@ -1426,7 +1460,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z f72892b525076a1ffaf1f2548822d560 2011-02-23T17:27:31.762248Z 4936 @@ -1460,7 +1494,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 0c630c7ad4fbe9ccbb897363a422efa6 2007-04-17T10:53:20.697217Z 447 @@ -1494,7 +1528,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 6e9fdd6731ba51e864563938c05ed9da 2010-02-21T14:40:00.085842Z 3471 @@ -1528,7 +1562,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 8e58d8ec43e40266d62fd64b4b6a9a09 2007-05-13T17:09:56.765659Z 529 @@ -1562,7 +1596,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 6350cf7f18c7d61d54bf2bfa55e108d3 2009-12-25T17:13:58.090736Z 3240 @@ -1596,7 +1630,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z 8e7a8d0f81e207e3d673703de33fdb69 2011-02-20T15:38:07.840581Z 4895 @@ -1630,7 +1664,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 3216f04b6b84aaa6d29bc0f3e5d8c462 2007-08-29T16:52:35.680643Z 674 @@ -1664,7 +1698,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z fb852fdf1ab4266ab05a36ff105b7ceb 2007-10-22T21:07:13.432482Z 864 @@ -1698,7 +1732,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z dbe736040dcb44e3db78219ecfdb3d62 2011-03-01T09:47:06.578325Z 4980 @@ -1732,7 +1766,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 9f0c1dd813015fc37cd47062fe15ef91 2008-02-12T21:11:16.312726Z 1140 @@ -1766,7 +1800,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e08dfbd6aca488a1513bfe7c59e2da90 2009-10-17T22:23:29.892475Z 2928 @@ -1800,7 +1834,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 767d76b65ff41dd9860747d14bb24ee1 2009-12-20T19:13:22.787652Z 3206 @@ -1834,7 +1868,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 93159e216a0265b8f239566bfb91fd8e 2009-10-17T22:23:29.892475Z 2928 @@ -1868,7 +1902,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 5fa98acba6010a7450722133bfb66962 2010-07-24T00:19:32.307471Z 3860 @@ -1902,7 +1936,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z eeff80bd1cee52d49f1eb78fab035adf 2009-10-17T22:23:29.892475Z 2928 @@ -1936,7 +1970,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 09b6720db5ea81c8e22aff9dd89fc0bd 2009-10-17T22:23:29.892475Z 2928 @@ -1970,7 +2004,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z b392b3c84d6d7b8bba99011778f5b54e 2007-11-20T20:29:03.757553Z 920 @@ -2004,7 +2038,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 2ae2d679057fe2db7b7a8bdabc2cbf6d 2009-10-17T22:23:29.892475Z 2928 @@ -2032,73 +2066,39 @@ 170 -20090403001910_add_project_to_enumerations.rb -file - - - - -2011-03-03T11:05:12.000000Z -01a97aa31f8b9917a84790f23e0e90d1 -2009-10-21T22:34:34.183882Z -2947 -edavis10 - - - - - - - - - - - - - - - - - - - - - -318 - -107_add_open_id_authentication_tables.rb -file - - - - -2011-03-03T11:05:12.000000Z -af4786659f25d96a43468cdc4bcfae44 -2009-02-11T19:06:50.454280Z -2439 -edavis10 - - - - - - - - - - - - - - - - - - - - - -601 +20110412065600_add_issues_is_private.rb +file + + + + +2011-06-06T13:18:33.000000Z +45b9c6859dfc448518b532c7e062e808 +2011-04-15T13:23:13.506236Z +5466 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +218 075_add_members_mail_notification.rb file @@ -2106,7 +2106,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 82e35d32f60c71db17de62592693c737 2007-10-20T12:47:05.860183Z 855 @@ -2134,13 +2134,81 @@ 242 +20090403001910_add_project_to_enumerations.rb +file + + + + +2011-06-06T13:15:00.000000Z +01a97aa31f8b9917a84790f23e0e90d1 +2009-10-21T22:34:34.183882Z +2947 +edavis10 + + + + + + + + + + + + + + + + + + + + + +318 + +107_add_open_id_authentication_tables.rb +file + + + + +2011-06-06T13:15:00.000000Z +af4786659f25d96a43468cdc4bcfae44 +2009-02-11T19:06:50.454280Z +2439 +edavis10 + + + + + + + + + + + + + + + + + + + + + +601 + 047_add_boards_permissions.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 3ac5fb29973ffa0ca94ac90387c73b78 2007-08-29T16:52:35.680643Z 674 @@ -2168,47 +2236,13 @@ 895 -037_add_project_identifier.rb -file - - - - -2011-03-03T11:05:12.000000Z -e61809aaf1ac8a2a290c4574ed598ff0 -2007-04-02T06:29:09.277122Z -397 -jplang - - - - - - - - - - - - - - - - - - - - - -202 - 073_add_enumerations_is_default.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z db7f5c6597e13933c96cb58cbbd1f0bd 2007-10-05T17:44:15.414646Z 803 @@ -2236,13 +2270,47 @@ 236 +037_add_project_identifier.rb +file + + + + +2011-06-06T13:15:00.000000Z +e61809aaf1ac8a2a290c4574ed598ff0 +2007-04-02T06:29:09.277122Z +397 +jplang + + + + + + + + + + + + + + + + + + + + + +202 + 20100313171051_add_index_on_issues_nested_set.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 243f136f05a508fff7ca52423f65c959 2010-03-13T17:17:10.453825Z 3578 @@ -2276,7 +2344,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e5f0fe89be9a00fe1f8b246bde88fca1 2007-10-01T08:44:17.920088Z 782 @@ -2310,7 +2378,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z bb79c723b9d9fdabe49ed18ebb8a6caf 2009-12-11T18:48:34.197724Z 3151 @@ -2344,7 +2412,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z b8b7c422c3d666340afaec3a52c5d6a4 2007-10-22T21:07:13.432482Z 864 @@ -2372,13 +2440,115 @@ 275 +20100129193813_update_mail_notification_values.rb +file + + + + +2011-06-06T13:15:00.000000Z +d2251c92048ec4169e2c220f1510d803 +2010-11-20T09:55:06.580420Z +4413 +jplang + + + + + + + + + + + + + + + + + + + + + +241 + +016_add_repositories_permissions.rb +file + + + + +2011-06-06T13:15:00.000000Z +e770aa6387bb4737804d5024e743cd25 +2007-08-29T16:52:35.680643Z +674 +jplang + + + + + + + + + + + + + + + + + + + + + +1658 + +001_setup.rb +file + + + + +2011-06-06T13:15:00.000000Z +b740a77ff87e6390f7ad86eaf0710040 +2008-08-25T16:35:20.899166Z +1764 +jplang + + + + + + + + + + + + + + + + + + + + + +18072 + 20091010093521_fix_users_custom_values.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 55350d451c622488f9358f7bbe12d4de 2009-10-10T10:16:00.250819Z 2905 @@ -2406,115 +2576,13 @@ 276 -001_setup.rb -file - - - - -2011-03-03T11:05:12.000000Z -b740a77ff87e6390f7ad86eaf0710040 -2008-08-25T16:35:20.899166Z -1764 -jplang - - - - - - - - - - - - - - - - - - - - - -18072 - -016_add_repositories_permissions.rb -file - - - - -2011-03-03T11:05:12.000000Z -e770aa6387bb4737804d5024e743cd25 -2007-08-29T16:52:35.680643Z -674 -jplang - - - - - - - - - - - - - - - - - - - - - -1658 - -20100129193813_update_mail_notification_values.rb -file - - - - -2011-03-03T11:05:12.000000Z -d2251c92048ec4169e2c220f1510d803 -2010-11-20T09:55:06.580420Z -4413 -jplang - - - - - - - - - - - - - - - - - - - - - -241 - 20091017214611_add_missing_indexes_to_journals.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 4cedb1faff3054d9be6250b589882b50 2009-10-17T22:23:29.892475Z 2928 @@ -2542,13 +2610,47 @@ 263 +20091017214107_add_missing_indexes_to_custom_fields.rb +file + + + + +2011-06-06T13:15:00.000000Z +0e1e45e51997617f8672e6d0d5ed8e51 +2009-10-17T22:23:29.892475Z +2928 +edavis10 + + + + + + + + + + + + + + + + + + + + + +211 + 041_rename_comment_to_comments.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 4901b560613f6a0ae3e5df5bcf2dd11c 2007-04-25T16:48:01.299251Z 482 @@ -2576,14 +2678,14 @@ 896 -20091017214107_add_missing_indexes_to_custom_fields.rb -file - - - - -2011-03-03T11:05:12.000000Z -0e1e45e51997617f8672e6d0d5ed8e51 +20091017214750_add_missing_indexes_to_custom_fields_trackers.rb +file + + + + +2011-06-06T13:15:00.000000Z +871a600c06a6965f52c63177a82fbe15 2009-10-17T22:23:29.892475Z 2928 edavis10 @@ -2608,7 +2710,41 @@ -211 +275 + +067_create_wiki_redirects.rb +file + + + + +2011-06-06T13:15:00.000000Z +31acec69fd7efa0c26dec61f860b0c85 +2007-09-09T17:05:38.846724Z +720 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +441 089_add_attachments_description.rb file @@ -2616,7 +2752,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z f60a0c1f633a6ff65fb2734173b57fe4 2008-02-29T19:46:58.834023Z 1180 @@ -2644,81 +2780,13 @@ 201 -067_create_wiki_redirects.rb -file - - - - -2011-03-03T11:05:12.000000Z -31acec69fd7efa0c26dec61f860b0c85 -2007-09-09T17:05:38.846724Z -720 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -441 - -20091017214750_add_missing_indexes_to_custom_fields_trackers.rb -file - - - - -2011-03-03T11:05:12.000000Z -871a600c06a6965f52c63177a82fbe15 -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -275 - 103_set_custom_fields_editable.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 320b459ced6ed78d09a3743ad60b3200 2009-01-18T10:54:08.545108Z 2279 @@ -2752,7 +2820,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z fccbbb0aadf883abb7a337961c2199e4 2011-02-26T13:09:25.657748Z 4950 @@ -2786,7 +2854,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z cf04e90903f0d068e4503cb465026ef7 2008-05-25T13:37:29.456358Z 1457 @@ -2814,13 +2882,47 @@ 264 +039_create_watchers.rb +file + + + + +2011-06-06T13:15:00.000000Z +07bf6636d0acf3ec84b38648bbe2c07a +2007-04-21T12:09:07.794422Z +454 +jplang + + + + + + + + + + + + + + + + + + + + + +337 + 093_add_wiki_pages_protected.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 5be8fe0eee7c90901f9ba49030412f40 2008-05-04T15:05:38.117137Z 1415 @@ -2848,16 +2950,16 @@ 227 -039_create_watchers.rb -file - - - - -2011-03-03T11:05:12.000000Z -07bf6636d0acf3ec84b38648bbe2c07a -2007-04-21T12:09:07.794422Z -454 +060_change_changesets_committer_limit.rb +file + + + + +2011-06-06T13:15:00.000000Z +0abbef63f1f391688df012906a94877b +2008-03-09T18:25:37.323226Z +1222 jplang @@ -2880,7 +2982,7 @@ -337 +241 083_add_messages_sticky.rb file @@ -2888,7 +2990,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z be494b64b18017ebe3ccdff9a34abdbd 2007-11-24T12:25:07.449637Z 926 @@ -2916,47 +3018,13 @@ 193 -060_change_changesets_committer_limit.rb -file - - - - -2011-03-03T11:05:12.000000Z -0abbef63f1f391688df012906a94877b -2008-03-09T18:25:37.323226Z -1222 -jplang - - - - - - - - - - - - - - - - - - - - - -241 - 069_add_issues_estimated_hours.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z a574e8a4f8f80a464ca2b8bcbd43287f 2007-09-15T14:54:15.583528Z 731 @@ -2990,7 +3058,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z cd7530e8030bf9e675ca5922c2494d83 2007-03-10T15:09:49.115269Z 323 @@ -3024,7 +3092,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 7a04693ea608e342b463c73c461b2da0 2011-01-01T23:08:49.766359Z 4610 @@ -3058,7 +3126,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z d1a11dec6b93af060f84f9b2a1e36421 2010-03-13T14:56:49.379682Z 3573 @@ -3092,7 +3160,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z f1661157bd19c5fd4f7a4244745571bf 2007-08-29T16:52:35.680643Z 674 @@ -3126,7 +3194,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 8381c8e67d31387ec86e821025f5ae8b 2007-03-09T18:03:31.183366Z 319 @@ -3160,7 +3228,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z f8359b001e33e9508d158589c81f7bee 2007-02-03T12:57:33.179243Z 223 @@ -3194,7 +3262,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 63b0f6e295adf5f1d1eee803e4cc6287 2009-01-24T11:48:38.049684Z 2305 @@ -3228,7 +3296,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 668305a363cf6997eb9f2259d00cc26d 2009-03-19T00:01:24.358528Z 2599 @@ -3262,7 +3330,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z c8a6c8715446f22f6a3f4e2040dd873d 2007-11-19T22:28:43.818228Z 917 @@ -3296,7 +3364,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 7f2d97409681d462705d00de37e78476 2008-10-18T10:07:49.851665Z 1938 @@ -3324,13 +3392,47 @@ 339 +059_add_roles_assignable.rb +file + + + + +2011-06-06T13:15:00.000000Z +aa67262417630fc088eb57df8d2dd9d3 +2007-08-16T17:47:41.639068Z +649 +jplang + + + + + + + + + + + + + + + + + + + + + +199 + 098_set_topic_authors_as_watchers.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z d885a13afc268875b79c4cbf9524f3e8 2009-02-08T17:24:39.400993Z 2415 @@ -3358,47 +3460,13 @@ 749 -059_add_roles_assignable.rb -file - - - - -2011-03-03T11:05:12.000000Z -aa67262417630fc088eb57df8d2dd9d3 -2007-08-16T17:47:41.639068Z -649 -jplang - - - - - - - - - - - - - - - - - - - - - -199 - 013_create_queries.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 528b6095ca0376cecdd966ddd0b345c4 2006-12-16T13:37:32.633739Z 95 @@ -3432,7 +3500,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 2d559ef99ec458f472f5c22c0a8bf5f4 2007-08-29T16:52:35.680643Z 674 @@ -3460,13 +3528,47 @@ 418 +048_allow_null_version_effective_date.rb +file + + + + +2011-06-06T13:15:00.000000Z +a7d8c7f023a76a8dbb0d0950797c08f8 +2008-02-12T21:11:16.312726Z +1140 +jplang + + + + + + + + + + + + + + + + + + + + + +225 + 040_create_changesets_issues.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z dc28d8674409819b866f6d878b33d288 2007-04-24T13:57:27.960164Z 473 @@ -3494,47 +3596,13 @@ 418 -048_allow_null_version_effective_date.rb -file - - - - -2011-03-03T11:05:12.000000Z -a7d8c7f023a76a8dbb0d0950797c08f8 -2008-02-12T21:11:16.312726Z -1140 -jplang - - - - - - - - - - - - - - - - - - - - - -225 - 085_add_role_tracker_old_status_index_to_workflows.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z ba997a6179b5ab0f421b149c54725357 2008-01-15T20:40:59.035860Z 1069 @@ -3568,7 +3636,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e256cf4a148fd48c409ea6983d569e7d 2009-10-17T22:23:29.892475Z 2928 @@ -3602,7 +3670,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 02bfb0be1b161bd757a75f69bfe79bc7 2008-03-09T18:25:37.323226Z 1222 @@ -3630,13 +3698,47 @@ 252 +20110223180944_add_users_salt.rb +file + + + + +2011-06-06T13:15:00.000000Z +6dd75e3da92087226c787a4edc76032e +2011-02-23T17:27:31.762248Z +4936 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +176 + 092_change_changes_from_revision_to_string.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z f77d77e81db6f6ac5bb3844255f8ab33 2008-03-12T20:28:49.748698Z 1236 @@ -3664,47 +3766,13 @@ 218 -20110223180944_add_users_salt.rb -file - - - - -2011-03-03T11:40:18.000000Z -6dd75e3da92087226c787a4edc76032e -2011-02-23T17:27:31.762248Z -4936 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -176 - 20090214190337_add_watchers_user_id_type_index.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 5d4b3c5646cc6c136e706ac5d7e0b377 2009-02-14T19:06:44.812480Z 2466 @@ -3732,13 +3800,47 @@ 252 +054_add_changesets_scmid.rb +file + + + + +2011-06-06T13:15:00.000000Z +b61285ac64245c1571e536a8c7e05a94 +2007-06-12T20:12:05.590809Z +559 +jplang + + + + + + + + + + + + + + + + + + + + + +180 + 20091017212457_add_missing_indexes_to_custom_fields_projects.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 90bb42121a57db140491ecb2a0763d00 2009-10-17T22:23:29.892475Z 2928 @@ -3766,39 +3868,73 @@ 275 -054_add_changesets_scmid.rb -file - - - - -2011-03-03T11:05:12.000000Z -b61285ac64245c1571e536a8c7e05a94 -2007-06-12T20:12:05.590809Z -559 +20091017213716_add_missing_indexes_to_member_roles.rb +file + + + + +2011-06-06T13:15:00.000000Z +4bfd0623186217eee4346313f148ea7a +2009-10-17T22:23:29.892475Z +2928 +edavis10 + + + + + + + + + + + + + + + + + + + + + +272 + +065_add_settings_updated_on.rb +file + + + + +2011-06-06T13:15:00.000000Z +708c039fe82ad86e9930122cac4757b1 +2007-08-31T17:45:32.784580Z +685 jplang - - - - - - - - - - - - - - - - - - - - - -180 +has-props + + + + + + + + + + + + + + + + + + + + +248 097_add_view_wiki_edits_permission.rb file @@ -3806,7 +3942,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e00f8e7739afbb2d07a21decd1422a0a 2008-09-21T20:38:36.877257Z 1896 @@ -3834,81 +3970,13 @@ 298 -065_add_settings_updated_on.rb -file - - - - -2011-03-03T11:05:12.000000Z -708c039fe82ad86e9930122cac4757b1 -2007-08-31T17:45:32.784580Z -685 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -248 - -20091017213716_add_missing_indexes_to_member_roles.rb -file - - - - -2011-03-03T11:05:12.000000Z -4bfd0623186217eee4346313f148ea7a -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -272 - 20091108092559_add_versions_status.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 71d997c1a32c4ba3dd4b31a34885fc7a 2009-12-29T14:53:29.047095Z 3259 @@ -3942,7 +4010,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e8d897645c7176e7fd23f1578b882b5f 2009-10-17T22:23:29.892475Z 2928 @@ -3976,7 +4044,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z 22941cc81d233c2602be827d70670c10 2011-03-01T10:14:47.182368Z 4981 @@ -4010,7 +4078,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 9ddb69b602d6d3ee5da01f8a9e9f78db 2007-08-29T16:52:35.680643Z 674 @@ -4044,7 +4112,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 055f00efdb87ff8934c36d5eb99b741f 2009-09-12T08:36:46.650954Z 2869 @@ -4072,13 +4140,47 @@ 155 +052_add_changes_revision.rb +file + + + + +2011-06-06T13:15:00.000000Z +3af07746c4eab3a1716744971ac26ffc +2007-06-12T20:12:05.590809Z +559 +jplang + + + + + + + + + + + + + + + + + + + + + +180 + 20090503121505_populate_member_roles.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 27279bf98b3155975ce59a359d0a29aa 2009-05-10T11:18:09.335765Z 2729 @@ -4106,81 +4208,13 @@ 276 -052_add_changes_revision.rb -file - - - - -2011-03-03T11:05:12.000000Z -3af07746c4eab3a1716744971ac26ffc -2007-06-12T20:12:05.590809Z -559 -jplang - - - - - - - - - - - - - - - - - - - - - -180 - -050_add_wiki_attachments_permissions.rb -file - - - - -2011-03-03T11:05:12.000000Z -67d6e1898c150c8df560cb2ce8a2f2d7 -2007-08-29T16:52:35.680643Z -674 -jplang - - - - - - - - - - - - - - - - - - - - - -718 - 062_insert_builtin_roles.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 596f1acbdbc340c39d19f19f7b4cb6c6 2007-08-29T16:52:35.680643Z 674 @@ -4208,13 +4242,81 @@ 403 +050_add_wiki_attachments_permissions.rb +file + + + + +2011-06-06T13:15:00.000000Z +67d6e1898c150c8df560cb2ce8a2f2d7 +2007-08-29T16:52:35.680643Z +674 +jplang + + + + + + + + + + + + + + + + + + + + + +718 + +20110511000000_add_repositories_extra_info.rb +file + + + + +2011-06-06T13:18:33.000000Z +9a19740d9c35a12356f7dedfb588af43 +2011-05-12T17:29:18.150936Z +5762 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +198 + 104_add_projects_lft_and_rgt.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 46effb13ff7d1a62b7b8c93afc7da9c8 2009-01-24T11:31:15.122844Z 2304 @@ -4248,7 +4350,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e7e163729c56cd9807450574d2beeda8 2007-10-16T19:19:10.481742Z 845 @@ -4282,7 +4384,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 886411cb32a18ec492acc798194210af 2009-11-14T12:08:47.175978Z 3039 @@ -4316,7 +4418,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 4ed0fffe6158eeda69a021c362f61157 2007-11-24T12:25:07.449637Z 926 @@ -4350,7 +4452,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 22e6afc0519b7befbae2c4a4433c20f5 2009-10-17T22:23:29.892475Z 2928 @@ -4384,7 +4486,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 8251942eb30b7c709ac6e3dc1ab5eedb 2009-10-17T22:23:29.892475Z 2928 @@ -4418,7 +4520,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 4c220f0316e1b04fa8350f0309698f24 2009-10-17T22:23:29.892475Z 2928 @@ -4452,7 +4554,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 16792ab92fda3a70516d55a011c01fce 2009-05-10T10:54:31.775505Z 2726 @@ -4486,7 +4588,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 6a4944f1162c00f2405200fb38773886 2007-06-14T18:26:27.748707Z 564 @@ -4520,7 +4622,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 0c0cee6df5f26eb3378c9b22a1162a5a 2009-05-30T23:30:36.923541Z 2777 @@ -4554,7 +4656,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 6e59569f25a79a0a75797fa4ebb60936 2007-08-29T16:52:35.680643Z 674 @@ -4588,7 +4690,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 00a100c0ca092df63e8542fc6d0bc78c 2007-03-18T15:48:05.787958Z 344 @@ -4622,7 +4724,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z ee71a22f869c9dbee6f322ad25f45934 2009-12-06T10:28:20.099964Z 3123 @@ -4656,7 +4758,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 21d40b6390e67409bad1d4525c26accb 2009-10-17T22:23:29.892475Z 2928 @@ -4690,7 +4792,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 1b013e3bbb624874d78eaf3332ccb3d5 2007-03-26T16:41:54.592250Z 383 @@ -4724,7 +4826,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e658f4ed3c99264bf4c036b87b8cf39f 2007-05-27T17:42:04.537618Z 549 @@ -4758,7 +4860,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 4d0267b0a9d4cb2ec782d10247a4c33f 2009-01-24T11:31:15.122844Z 2304 @@ -4792,7 +4894,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z eef7b68156646d86ea515aed9aa525ed 2009-10-17T22:23:29.892475Z 2928 @@ -4826,7 +4928,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 1567606924d88ae66474e848de86577a 2009-10-21T22:34:28.905707Z 2946 @@ -4860,7 +4962,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z ccfd197b34214a0d74d952aa65dcd5a6 2008-03-09T18:25:37.323226Z 1222 @@ -4894,7 +4996,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z f5ae107f30300b547d535ddc5b1b999c 2009-09-12T08:36:46.650954Z 2869 @@ -4928,7 +5030,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 9cef93921160d49f5d3aa4968ecc4eb1 2007-10-22T21:07:13.432482Z 864 @@ -4962,7 +5064,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 6c70abafef3dc834c722ed7135d6a7df 2009-10-17T22:23:29.892475Z 2928 @@ -4996,7 +5098,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 0000368c453072e56da62defbc80441e 2010-11-14T12:33:14.198318Z 4402 @@ -5030,7 +5132,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z cf095d9afbc6429b8d759eb737a0781f 2009-10-21T22:34:34.183882Z 2947 @@ -5064,7 +5166,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 9aa91971db6c6f14ddd1ae768085b0a8 2009-10-17T22:23:29.892475Z 2928 @@ -5098,7 +5200,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 3e5f2220de578b306ce323997c495db6 2006-11-12T18:50:30.642587Z 44 @@ -5132,7 +5234,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 0fb07bc55cf61720437b40e4ae244e05 2006-12-03T20:51:17.306207Z 63 @@ -5166,7 +5268,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 417051f45603460a17909e4a5029c779 2007-08-29T16:52:35.680643Z 674 @@ -5200,7 +5302,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z 7cd80bdf7897357500a46e87ed82b84b 2011-02-24T05:58:37.876075Z 4940 @@ -5234,7 +5336,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z a62243f0bc2f1b1b11a47da172d011a5 2007-04-25T15:06:20.062636Z 479 @@ -5268,7 +5370,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z e809364786bdcce227961318e7428700 2011-02-26T13:09:25.657748Z 4950 @@ -5296,13 +5398,47 @@ 276 +20110401192910_add_index_to_users_type.rb +file + + + + +2011-06-06T13:18:33.000000Z +d7c5fa22340bcd1fd37b58d1eb09adfc +2011-04-01T19:32:07.711451Z +5288 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +158 + 068_create_enabled_modules.rb file -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 96962340557b9a1f70a215d88b07c2c1 2007-09-14T11:34:08.234701Z 725 @@ -5336,7 +5472,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 8ad3f0193d5e3b8d52293bbf2828c2d2 2009-10-17T22:23:29.892475Z 2928 @@ -5370,7 +5506,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z fd6ccbccc44ceccab8de7c3c48696ecc 2009-10-17T22:23:29.892475Z 2928 @@ -5404,7 +5540,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 1798d606a43c6a29029535c28b49beff 2007-09-04T22:07:44.613701Z 702 @@ -5438,7 +5574,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z d714e81a7a9c29b60e405233765cbd33 2007-08-29T16:52:35.680643Z 674 @@ -5472,7 +5608,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z a27ef00d6ec6b3f4dc63ad004181c10e 2008-01-20T23:38:55.025648Z 1091 @@ -5506,7 +5642,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 497529b269185b1833b959c98db3c1d1 2007-08-29T16:52:35.680643Z 674 @@ -5540,7 +5676,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z d39d0037e4f06dfb7db18d9082608832 2009-10-17T22:23:29.892475Z 2928 @@ -5574,7 +5710,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 79d11b147c1061901a888d89c3e5029b 2009-10-17T22:23:29.892475Z 2928 @@ -5608,7 +5744,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 1cbe32e981634898d5b0f80b2c63798b 2007-12-14T18:54:55.323993Z 994 @@ -5642,7 +5778,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 717687210dcbeeebff8337561a427e70 2007-05-05T13:22:27.245135Z 506 @@ -5676,7 +5812,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 05c7ea8c5dc45498164a324f7db2887a 2006-12-10T18:35:48.564790Z 81 @@ -5710,7 +5846,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z ce38342dea044adf8b277f6483f1a742 2009-03-12T18:06:54.054174Z 2572 @@ -5744,7 +5880,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z dbeea4ad5a501200711cb4195856597e 2009-10-17T22:23:29.892475Z 2928 @@ -5778,7 +5914,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 4c1203f40e8e7b568ddce15af4f3ad9b 2008-11-10T18:59:06.897210Z 2006 @@ -5812,7 +5948,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z c62ac2ca3e59bb91e5bb4e206abdaed1 2007-04-25T15:06:20.062636Z 479 @@ -5846,7 +5982,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 3bb4b5f081354ea7d943f0b7c6f07284 2007-08-29T16:52:35.680643Z 674 @@ -5880,7 +6016,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 3460b737f353524921cfd9ac4199fc44 2009-03-12T19:49:39.983871Z 2580 @@ -5914,7 +6050,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 560e67e7b88186a0e21a2f614b6d83c7 2007-08-29T16:52:35.680643Z 674 @@ -5948,7 +6084,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z c22348c101d1a03b2d808cb89b3175a5 2007-06-12T20:12:05.590809Z 559 @@ -5982,7 +6118,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 87d90f2ce2101811b7aaf0031a74e0c1 2009-10-25T16:56:46.187627Z 2981 @@ -6016,7 +6152,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 84fe06ac7cefc2eebba29ac872241d88 2007-06-29T17:21:37.739022Z 577 @@ -6050,7 +6186,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z d7a9aad3796f37d70ac2ab4af9c80656 2007-08-29T16:52:35.680643Z 674 @@ -6084,7 +6220,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z defb118deb2deb23648d50da5cf71047 2006-12-24T13:38:45.881735Z 106 @@ -6118,7 +6254,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 89cbe3b06f14ba6d9a5cda47f4239f60 2009-04-26T13:09:14.221938Z 2696 @@ -6152,7 +6288,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z f2e06da76555942fd3017134d618bbac 2007-08-29T16:52:35.680643Z 674 @@ -6186,7 +6322,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 5ff56d564f2da50c289c1dfd90053a4b 2008-03-05T09:16:19.220849Z 1189 @@ -6220,7 +6356,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 0ae6a6924263cf5317b539c81b952f03 2009-10-17T22:23:29.892475Z 2928 @@ -6254,7 +6390,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 121548a48360a22daa537af42ee8902b 2007-01-21T11:50:22.864544Z 167 @@ -6288,7 +6424,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z 768603dc014def8d2fc0a0bb8d81ef79 2011-02-27T13:34:41.060565Z 4954 @@ -6322,7 +6458,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z e50cfa8ef5216f0f7d266dac1e38c9da 2008-07-26T11:46:24.917066Z 1698 diff -r adc8466df404 -r 753f1380d6bc db/migrate/20110401192910_add_index_to_users_type.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110401192910_add_index_to_users_type.rb Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,9 @@ +class AddIndexToUsersType < ActiveRecord::Migration + def self.up + add_index :users, :type + end + + def self.down + remove_index :users, :type + end +end diff -r adc8466df404 -r 753f1380d6bc db/migrate/20110408103312_add_roles_issues_visibility.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110408103312_add_roles_issues_visibility.rb Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,9 @@ +class AddRolesIssuesVisibility < ActiveRecord::Migration + def self.up + add_column :roles, :issues_visibility, :string, :limit => 30, :default => 'default', :null => false + end + + def self.down + remove_column :roles, :issues_visibility + end +end diff -r adc8466df404 -r 753f1380d6bc db/migrate/20110412065600_add_issues_is_private.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110412065600_add_issues_is_private.rb Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,9 @@ +class AddIssuesIsPrivate < ActiveRecord::Migration + def self.up + add_column :issues, :is_private, :boolean, :default => false, :null => false + end + + def self.down + remove_column :issues, :is_private + end +end diff -r adc8466df404 -r 753f1380d6bc db/migrate/20110511000000_add_repositories_extra_info.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110511000000_add_repositories_extra_info.rb Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,9 @@ +class AddRepositoriesExtraInfo < ActiveRecord::Migration + def self.up + add_column :repositories, :extra_info, :text + end + + def self.down + remove_column :repositories, :extra_info + end +end diff -r adc8466df404 -r 753f1380d6bc doc/.svn/all-wcprops --- a/doc/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,47 +1,23 @@ K 25 svn:wc:ra_dav:version-url -V 28 -/svn/!svn/ver/4784/trunk/doc +V 42 +/svn/!svn/ver/5967/branches/1.2-stable/doc END UPGRADING K 25 svn:wc:ra_dav:version-url -V 38 -/svn/!svn/ver/4752/trunk/doc/UPGRADING -END -RUNNING_TESTS -K 25 -svn:wc:ra_dav:version-url -V 42 -/svn/!svn/ver/3438/trunk/doc/RUNNING_TESTS -END -README_FOR_APP -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/1732/trunk/doc/README_FOR_APP +V 52 +/svn/!svn/ver/5967/branches/1.2-stable/doc/UPGRADING END INSTALL K 25 svn:wc:ra_dav:version-url -V 36 -/svn/!svn/ver/4752/trunk/doc/INSTALL +V 50 +/svn/!svn/ver/5967/branches/1.2-stable/doc/INSTALL END CHANGELOG K 25 svn:wc:ra_dav:version-url -V 38 -/svn/!svn/ver/4784/trunk/doc/CHANGELOG +V 52 +/svn/!svn/ver/5967/branches/1.2-stable/doc/CHANGELOG END -COPYING -K 25 -svn:wc:ra_dav:version-url -V 35 -/svn/!svn/ver/883/trunk/doc/COPYING -END -git.rdoc -K 25 -svn:wc:ra_dav:version-url -V 37 -/svn/!svn/ver/4273/trunk/doc/git.rdoc -END diff -r adc8466df404 -r 753f1380d6bc doc/.svn/entries --- a/doc/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/doc +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/doc http://redmine.rubyforge.org/svn -2011-01-30T14:37:23.564601Z -4784 +2011-05-30T16:40:52.269746Z +5967 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:05:14.000000Z -c87e4b9ee82c334658b1c76106dfd469 -2011-01-23T10:22:00.456857Z -4752 +2011-06-06T13:20:52.000000Z +62141e99676ae9e0fc6a9afcc9f72128 +2011-05-30T16:40:52.269746Z +5967 jplang has-props @@ -58,7 +58,7 @@ -1949 +1941 RUNNING_TESTS file @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z cc987c3ab1bf29e6ebe5313bef953b5b 2010-02-16T16:40:50.914879Z 3438 @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z ba2ffee528eae310e20bf761619bc85f 2008-08-11T20:49:52.309238Z 1732 @@ -134,10 +134,10 @@ -2011-03-03T11:05:14.000000Z -daf24adc36bb93a3d0e1c5a7e4b14fc5 -2011-01-23T10:22:00.456857Z -4752 +2011-06-06T13:20:52.000000Z +fc379757634a83944c89421ef3bbc763 +2011-05-30T16:40:52.269746Z +5967 jplang has-props @@ -160,7 +160,7 @@ -3003 +3009 CHANGELOG file @@ -168,10 +168,10 @@ -2011-03-03T11:05:14.000000Z -a6dd03cb1256e4bf125b81d353206416 -2011-01-30T14:37:23.564601Z -4784 +2011-06-06T13:20:52.000000Z +b9957a947aae3aff38216b32c540e2cf +2011-05-30T16:40:52.269746Z +5967 jplang has-props @@ -194,7 +194,7 @@ -85714 +95811 COPYING file @@ -202,7 +202,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 751419260aa954499f7abaabaa882bbe 2007-11-04T13:19:42.552822Z 883 @@ -230,37 +230,3 @@ 17987 -git.rdoc -file - - - - -2011-03-03T11:05:14.000000Z -cc77650493d11d18eabb058fbdf7ac24 -2010-10-22T17:18:11.628381Z -4273 -edavis10 - - - - - - - - - - - - - - - - - - - - - -2248 - diff -r adc8466df404 -r 753f1380d6bc doc/.svn/text-base/CHANGELOG.svn-base --- a/doc/.svn/text-base/CHANGELOG.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/.svn/text-base/CHANGELOG.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -4,6 +4,161 @@ Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ +== 2011-05-30 v1.2.0 + +* Defect #61: Broken character encoding in pdf export +* Defect #1965: Redmine is not Tab Safe +* Defect #2274: Filesystem Repository path encoding of non UTF-8 characters +* Defect #2664: Mercurial: Repository path encoding of non UTF-8 characters +* Defect #3421: Mercurial reads files from working dir instead of changesets +* Defect #3462: CVS: Repository path encoding of non UTF-8 characters +* Defect #3715: Login page should not show projects link and search box if authentication is required +* Defect #3724: Mercurial repositories display revision ID instead of changeset ID +* Defect #3761: Most recent CVS revisions are missing in "revisions" view +* Defect #4270: CVS Repository view in Project doesn't show Author, Revision, Comment +* Defect #5138: Don't use Ajax for pagination +* Defect #5152: Cannot use certain characters for user and role names. +* Defect #5251: Git: Repository path encoding of non UTF-8 characters +* Defect #5373: Translation missing when adding invalid watchers +* Defect #5817: Shared versions not shown in subproject's gantt chart +* Defect #6013: git tab,browsing, very slow -- even after first time +* Defect #6148: Quoting, newlines, and nightmares... +* Defect #6256: Redmine considers non ASCII and UTF-16 text files as binary in SCM +* Defect #6476: Subproject's issues are not shown in the subproject's gantt +* Defect #6496: Remove i18n 0.3.x/0.4.x hack for Rails 2.3.5 +* Defect #6562: Context-menu deletion of issues deletes all subtasks too without explicit prompt +* Defect #6604: Issues targeted at parent project versions' are not shown on gantt chart +* Defect #6706: Resolving issues with the commit message produces the wrong comment with CVS +* Defect #6901: Copy/Move an issue does not give any history of who actually did the action. +* Defect #6905: Specific heading-content breaks CSS +* Defect #7000: Project filter not applied on versions in Gantt chart +* Defect #7097: Starting day of week cannot be set to Saturday +* Defect #7114: New gantt doesn't display some projects +* Defect #7146: Git adapter lost commits before 7 days from database latest changeset +* Defect #7218: Date range error on issue query +* Defect #7257: "Issues by" version links bad criterias +* Defect #7279: CSS class ".icon-home" is not used. +* Defect #7320: circular dependency >2 issues +* Defect #7352: Filters not working in Gantt charts +* Defect #7367: Receiving pop3 email should not output debug messages +* Defect #7373: Error with PDF output and ruby 1.9.2 +* Defect #7379: Remove extraneous hidden_field on wiki history +* Defect #7516: Redmine does not work with RubyGems 1.5.0 +* Defect #7518: Mercurial diff can be wrong if the previous changeset isn't the parent +* Defect #7581: Not including a spent time value on the main issue update screen causes silent data loss +* Defect #7582: hiding form pages from search engines +* Defect #7597: Subversion and Mercurial log have the possibility to miss encoding +* Defect #7604: ActionView::TemplateError (undefined method `name' for nil:NilClass) +* Defect #7605: Using custom queries always redirects to "Issues" tab +* Defect #7615: CVS diffs do not handle new files properly +* Defect #7618: SCM diffs do not handle one line new files properly +* Defect #7639: Some date fields do not have requested format. +* Defect #7657: Wrong commit range in git log command on Windows +* Defect #7818: Wiki pages don't use the local timezone to display the "Updated ? hours ago" mouseover +* Defect #7821: Git "previous" and "next" revisions are incorrect +* Defect #7827: CVS: Age column on repository view is off by timezone delta +* Defect #7843: Add a relation between issues = explicit login window ! (basic authentication popup is prompted on AJAX request) +* Defect #8011: {{toc}} does not display headlines with inline code markup +* Defect #8029: List of users for adding to a group may be empty if 100 first users have been added +* Defect #8064: Text custom fields do not wrap on the issue list +* Defect #8071: Watching a subtask from the context menu updates main issue watch link +* Defect #8072: Two untranslatable default role names +* Defect #8075: Some "notifiable" names are not i18n-enabled +* Defect #8081: GIT: Commits missing when user has the "decorate" git option enabled +* Defect #8088: Colorful indentation of subprojects must be on right in RTL locales +* Defect #8239: notes field is not propagated during issue copy +* Defect #8356: GET /time_entries.xml ignores limit/offset parameters +* Defect #8432: Private issues information shows up on Activity page for unauthorized users +* Feature #746: Versioned issue descriptions +* Feature #1067: Differentiate public/private saved queries in the sidebar +* Feature #1236: Make destination folder for attachment uploads configurable +* Feature #1735: Per project repository log encoding setting +* Feature #1763: Autologin-cookie should be configurable +* Feature #1981: display mercurial tags +* Feature #2074: Sending email notifications when comments are added in the news section +* Feature #2096: Custom fields referencing system tables (users and versions) +* Feature #2732: Allow additional workflow transitions for author and assignee +* Feature #2910: Warning on leaving edited issue/wiki page without saving +* Feature #3396: Git: use --encoding=UTF-8 in "git log" +* Feature #4273: SCM command availability automatic check in administration panel +* Feature #4477: Use mime types in downloading from repository +* Feature #5518: Graceful fallback for "missing translation" needed +* Feature #5520: Text format buttons and preview link missing when editing comment +* Feature #5831: Parent Task to Issue Bulk Edit +* Feature #6887: Upgrade to Rails 2.3.11 +* Feature #7139: Highlight changes inside diff lines +* Feature #7236: Collapse All for Groups +* Feature #7246: Handle "named branch" for mercurial +* Feature #7296: Ability for admin to delete users +* Feature #7318: Add user agent to Redmine Mailhandler +* Feature #7408: Add an application configuration file +* Feature #7409: Cross project Redmine links +* Feature #7410: Add salt to user passwords +* Feature #7411: Option to cipher LDAP ans SCM passwords stored in the database +* Feature #7412: Add an issue visibility level to each role +* Feature #7414: Private issues +* Feature #7517: Configurable path of executable for scm adapters +* Feature #7640: Add "mystery man" gravatar to options +* Feature #7858: RubyGems 1.6 support +* Feature #7893: Group filter on the users list +* Feature #7899: Box for editing comments should open with the formatting toolbar +* Feature #7921: issues by pulldown should have 'status' option +* Feature #7996: Bulk edit and context menu for time entries +* Feature #8006: Right click context menu for Related Issues +* Feature #8209: I18n YAML files not parsable with psych yaml library +* Feature #8345: Link to user profile from account page +* Feature #8365: Git: per project setting to report last commit or not in repository tree +* Patch #5148: metaKey not handled in issues selection +* Patch #5629: Wrap text fields properly in PDF +* Patch #7418: Redmine Persian Translation +* Patch #8295: Wrap title fields properly in PDF +* Patch #8310: fixes automatic line break problem with TCPDF +* Patch #8312: Switch to TCPDF from FPDF for PDF export + +== 2011-04-29 v1.1.3 + +* Defect #5773: Email reminders are sent to locked users +* Defect #6590: Wrong file list link in email notification on new file upload +* Defect #7589: Wiki page with backslash in title can not be found +* Defect #7785: Mailhandler keywords are not removed when updating issues +* Defect #7794: Internal server error on formatting an issue as a PDF in Japanese +* Defect #7838: Gantt- Issues does not show up in green when start and end date are the same +* Defect #7846: Headers (h1, etc.) containing backslash followed by a digit are not displayed correctly +* Defect #7875: CSV export separators in polish locale (pl.yml) +* Defect #7890: Internal server error when referencing an issue without project in commit message +* Defect #7904: Subprojects not properly deleted when deleting a parent project +* Defect #7939: Simultaneous Wiki Updates Cause Internal Error +* Defect #7951: Atom links broken on wiki index +* Defect #7954: IE 9 can not select issues, does not display context menu +* Defect #7985: Trying to do a bulk edit results in "Internal Error" +* Defect #8003: Error raised by reposman.rb under Windows server 2003 +* Defect #8012: Wrong selection of modules when adding new project after validation error +* Defect #8038: Associated Revisions OL/LI items are not styled properly in issue view +* Defect #8067: CSV exporting in Italian locale +* Defect #8235: bulk edit issues and copy issues error in es, gl and ca locales +* Defect #8244: selected modules are not activated when copying a project +* Patch #7278: Update Simplified Chinese translation to 1.1 +* Patch #7390: Fixes in Czech localization +* Patch #7963: Reminder email: Link for show all issues does not sort + +== 2011-03-07 v1.1.2 + +* Defect #3132: Bulk editing menu non-functional in Opera browser +* Defect #6090: Most binary files become corrupted when downloading from CVS repository browser when Redmine is running on a Windows server +* Defect #7280: Issues subjects wrap in Gantt +* Defect #7288: Non ASCII filename downloaded from repo is broken on Internet Explorer. +* Defect #7317: Gantt tab gives internal error due to nil avatar icon +* Defect #7497: Aptana Studio .project file added to version 1.1.1-stable +* Defect #7611: Workflow summary shows X icon for workflow with exactly 1 status transition +* Defect #7625: Syntax highlighting unavailable from board new topic or topic edit preview +* Defect #7630: Spent time in commits not recognized +* Defect #7656: MySQL SQL Syntax Error when filtering issues by Assignee's Group +* Defect #7718: Minutes logged in commit message are converted to hours +* Defect #7763: Email notification are sent to watchers even if 'No events' setting is chosen +* Feature #7608: Add "retro" gravatars +* Patch #7598: Extensible MailHandler +* Patch #7795: Internal server error at journals#index with custom fields + == 2011-01-30 v1.1.1 * Defect #4899: Redmine fails to list files for darcs repository diff -r adc8466df404 -r 753f1380d6bc doc/.svn/text-base/INSTALL.svn-base --- a/doc/.svn/text-base/INSTALL.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/.svn/text-base/INSTALL.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,7 +1,7 @@ == Redmine installation Redmine - project management software -Copyright (C) 2006-2010 Jean-Philippe Lang +Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ @@ -9,21 +9,21 @@ * Ruby 1.8.6 or 1.8.7 -* RubyGems 1.3.1 +* RubyGems 1.3.7 -* Ruby on Rails 2.3.5 (official downloadable Redmine releases are packaged with +* Ruby on Rails 2.3.11 (official downloadable Redmine releases are packaged with the appropriate Rails version) -* Rack 1.0.1 gem +* Rack 1.1.0 gem * Rake 0.8.3 gem * I18n 0.4.2 gem * A database: - * MySQL (tested with MySQL 5) - * PostgreSQL (tested with PostgreSQL 8.1) - * SQLite (tested with SQLite 3) + * MySQL (tested with MySQL 5.1) + * PostgreSQL (tested with PostgreSQL 8.4) + * SQLite3 (tested with SQLite 3.6) Optional: * SCM binaries (e.g. svn), for repository browsing (must be available in PATH) diff -r adc8466df404 -r 753f1380d6bc doc/.svn/text-base/UPGRADING.svn-base --- a/doc/.svn/text-base/UPGRADING.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/.svn/text-base/UPGRADING.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,7 +1,7 @@ == Redmine upgrade Redmine - project management software -Copyright (C) 2006-2010 Jean-Philippe Lang +Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ @@ -30,7 +30,7 @@ 6. Migrate your database - If you are upgrading to Rails 2.3.5 as part of this migration, you + If you are upgrading to Rails 2.3.11 as part of this migration, you need to upgrade the plugin migrations before running the plugin migrations using: rake db:migrate:upgrade_plugin_migrations RAILS_ENV="production" @@ -56,7 +56,7 @@ == Notes -* Rails 2.3.5 is required for versions 0.9.x and 1.0.x. +* Rails 2.3.11 is required for versions 1.2.x. == References diff -r adc8466df404 -r 753f1380d6bc doc/.svn/text-base/git.rdoc.svn-base --- a/doc/.svn/text-base/git.rdoc.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -= Contributing to Redmine with git and github - -(This is a beta document. If you can improve it, fork it and send a patch/pull request.) - -The official repository is at http://github.com/edavis10/redmine - -Official branches: - -* master - is automatically mirrored to svn trunk. DO NOT COMMIT OR MERGE INTO THIS BRANCH -* [0.6, 0.7, 0.8, 0.9, 1.0,...]-stable - is automatically mirrored to svn release branches. DO NOT COMMIT OR MERGE INTO THIS BRANCH -* integration-to-svn-trunk - this branch is a git-only branch that will track master (trunk). Any code in here will be eventually merged into master but it may be rebased as any time (git-svn needs to rebase to commit to svn) -* integration-to-svn-stable-1.0 - this branch is a git-only branch that will track the 1.0-stable branch in svn. Any code in here will be eventually merged into master and 1.0-stable but it may be rebased as any time (git-svn needs to rebase to commit to svn) - -I (edavis10) might have some other branches on the repository for work in progress. - -== Branch naming standards - -Redmine has two kinds of development: - -* bug fixes -* new feature development - -Both bug fixes and new feature development should be done in a branch named after the issue number on Redmine.org. So if you are fixing Issue #6244 your branch should be named: - -* 6244 -* 6244-sort-people-by-display-name (optional description) -* issue/6244 (optional "issue" prefix) -* issue/6244-sort-people-by-display-name (optional prefix and description) - -That way when the branch is merged into the Redmine core, the correct issue can be updated. - -Longer term feature development might require multiple branches. Just your best judgment and try to keep the issue id in the name. - -If you don't have an issue for your patch, create an issue on redmine.org and say it's a placeholder issue for your work. Better yet, add a brief overview of what you are working on to the issue and you might get some help with it. - -== Coding Standards - -Follow the coding standards on the Redmine wiki: http://www.redmine.org/wiki/redmine/Coding_Standards#Commits. Make sure you commit logs conform to the standards, otherwise someone else will have to rewrite them for you and you might lose attribution during the conversion to svn. - - diff -r adc8466df404 -r 753f1380d6bc doc/CHANGELOG --- a/doc/CHANGELOG Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/CHANGELOG Mon Jun 06 14:41:04 2011 +0100 @@ -4,6 +4,161 @@ Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ +== 2011-05-30 v1.2.0 + +* Defect #61: Broken character encoding in pdf export +* Defect #1965: Redmine is not Tab Safe +* Defect #2274: Filesystem Repository path encoding of non UTF-8 characters +* Defect #2664: Mercurial: Repository path encoding of non UTF-8 characters +* Defect #3421: Mercurial reads files from working dir instead of changesets +* Defect #3462: CVS: Repository path encoding of non UTF-8 characters +* Defect #3715: Login page should not show projects link and search box if authentication is required +* Defect #3724: Mercurial repositories display revision ID instead of changeset ID +* Defect #3761: Most recent CVS revisions are missing in "revisions" view +* Defect #4270: CVS Repository view in Project doesn't show Author, Revision, Comment +* Defect #5138: Don't use Ajax for pagination +* Defect #5152: Cannot use certain characters for user and role names. +* Defect #5251: Git: Repository path encoding of non UTF-8 characters +* Defect #5373: Translation missing when adding invalid watchers +* Defect #5817: Shared versions not shown in subproject's gantt chart +* Defect #6013: git tab,browsing, very slow -- even after first time +* Defect #6148: Quoting, newlines, and nightmares... +* Defect #6256: Redmine considers non ASCII and UTF-16 text files as binary in SCM +* Defect #6476: Subproject's issues are not shown in the subproject's gantt +* Defect #6496: Remove i18n 0.3.x/0.4.x hack for Rails 2.3.5 +* Defect #6562: Context-menu deletion of issues deletes all subtasks too without explicit prompt +* Defect #6604: Issues targeted at parent project versions' are not shown on gantt chart +* Defect #6706: Resolving issues with the commit message produces the wrong comment with CVS +* Defect #6901: Copy/Move an issue does not give any history of who actually did the action. +* Defect #6905: Specific heading-content breaks CSS +* Defect #7000: Project filter not applied on versions in Gantt chart +* Defect #7097: Starting day of week cannot be set to Saturday +* Defect #7114: New gantt doesn't display some projects +* Defect #7146: Git adapter lost commits before 7 days from database latest changeset +* Defect #7218: Date range error on issue query +* Defect #7257: "Issues by" version links bad criterias +* Defect #7279: CSS class ".icon-home" is not used. +* Defect #7320: circular dependency >2 issues +* Defect #7352: Filters not working in Gantt charts +* Defect #7367: Receiving pop3 email should not output debug messages +* Defect #7373: Error with PDF output and ruby 1.9.2 +* Defect #7379: Remove extraneous hidden_field on wiki history +* Defect #7516: Redmine does not work with RubyGems 1.5.0 +* Defect #7518: Mercurial diff can be wrong if the previous changeset isn't the parent +* Defect #7581: Not including a spent time value on the main issue update screen causes silent data loss +* Defect #7582: hiding form pages from search engines +* Defect #7597: Subversion and Mercurial log have the possibility to miss encoding +* Defect #7604: ActionView::TemplateError (undefined method `name' for nil:NilClass) +* Defect #7605: Using custom queries always redirects to "Issues" tab +* Defect #7615: CVS diffs do not handle new files properly +* Defect #7618: SCM diffs do not handle one line new files properly +* Defect #7639: Some date fields do not have requested format. +* Defect #7657: Wrong commit range in git log command on Windows +* Defect #7818: Wiki pages don't use the local timezone to display the "Updated ? hours ago" mouseover +* Defect #7821: Git "previous" and "next" revisions are incorrect +* Defect #7827: CVS: Age column on repository view is off by timezone delta +* Defect #7843: Add a relation between issues = explicit login window ! (basic authentication popup is prompted on AJAX request) +* Defect #8011: {{toc}} does not display headlines with inline code markup +* Defect #8029: List of users for adding to a group may be empty if 100 first users have been added +* Defect #8064: Text custom fields do not wrap on the issue list +* Defect #8071: Watching a subtask from the context menu updates main issue watch link +* Defect #8072: Two untranslatable default role names +* Defect #8075: Some "notifiable" names are not i18n-enabled +* Defect #8081: GIT: Commits missing when user has the "decorate" git option enabled +* Defect #8088: Colorful indentation of subprojects must be on right in RTL locales +* Defect #8239: notes field is not propagated during issue copy +* Defect #8356: GET /time_entries.xml ignores limit/offset parameters +* Defect #8432: Private issues information shows up on Activity page for unauthorized users +* Feature #746: Versioned issue descriptions +* Feature #1067: Differentiate public/private saved queries in the sidebar +* Feature #1236: Make destination folder for attachment uploads configurable +* Feature #1735: Per project repository log encoding setting +* Feature #1763: Autologin-cookie should be configurable +* Feature #1981: display mercurial tags +* Feature #2074: Sending email notifications when comments are added in the news section +* Feature #2096: Custom fields referencing system tables (users and versions) +* Feature #2732: Allow additional workflow transitions for author and assignee +* Feature #2910: Warning on leaving edited issue/wiki page without saving +* Feature #3396: Git: use --encoding=UTF-8 in "git log" +* Feature #4273: SCM command availability automatic check in administration panel +* Feature #4477: Use mime types in downloading from repository +* Feature #5518: Graceful fallback for "missing translation" needed +* Feature #5520: Text format buttons and preview link missing when editing comment +* Feature #5831: Parent Task to Issue Bulk Edit +* Feature #6887: Upgrade to Rails 2.3.11 +* Feature #7139: Highlight changes inside diff lines +* Feature #7236: Collapse All for Groups +* Feature #7246: Handle "named branch" for mercurial +* Feature #7296: Ability for admin to delete users +* Feature #7318: Add user agent to Redmine Mailhandler +* Feature #7408: Add an application configuration file +* Feature #7409: Cross project Redmine links +* Feature #7410: Add salt to user passwords +* Feature #7411: Option to cipher LDAP ans SCM passwords stored in the database +* Feature #7412: Add an issue visibility level to each role +* Feature #7414: Private issues +* Feature #7517: Configurable path of executable for scm adapters +* Feature #7640: Add "mystery man" gravatar to options +* Feature #7858: RubyGems 1.6 support +* Feature #7893: Group filter on the users list +* Feature #7899: Box for editing comments should open with the formatting toolbar +* Feature #7921: issues by pulldown should have 'status' option +* Feature #7996: Bulk edit and context menu for time entries +* Feature #8006: Right click context menu for Related Issues +* Feature #8209: I18n YAML files not parsable with psych yaml library +* Feature #8345: Link to user profile from account page +* Feature #8365: Git: per project setting to report last commit or not in repository tree +* Patch #5148: metaKey not handled in issues selection +* Patch #5629: Wrap text fields properly in PDF +* Patch #7418: Redmine Persian Translation +* Patch #8295: Wrap title fields properly in PDF +* Patch #8310: fixes automatic line break problem with TCPDF +* Patch #8312: Switch to TCPDF from FPDF for PDF export + +== 2011-04-29 v1.1.3 + +* Defect #5773: Email reminders are sent to locked users +* Defect #6590: Wrong file list link in email notification on new file upload +* Defect #7589: Wiki page with backslash in title can not be found +* Defect #7785: Mailhandler keywords are not removed when updating issues +* Defect #7794: Internal server error on formatting an issue as a PDF in Japanese +* Defect #7838: Gantt- Issues does not show up in green when start and end date are the same +* Defect #7846: Headers (h1, etc.) containing backslash followed by a digit are not displayed correctly +* Defect #7875: CSV export separators in polish locale (pl.yml) +* Defect #7890: Internal server error when referencing an issue without project in commit message +* Defect #7904: Subprojects not properly deleted when deleting a parent project +* Defect #7939: Simultaneous Wiki Updates Cause Internal Error +* Defect #7951: Atom links broken on wiki index +* Defect #7954: IE 9 can not select issues, does not display context menu +* Defect #7985: Trying to do a bulk edit results in "Internal Error" +* Defect #8003: Error raised by reposman.rb under Windows server 2003 +* Defect #8012: Wrong selection of modules when adding new project after validation error +* Defect #8038: Associated Revisions OL/LI items are not styled properly in issue view +* Defect #8067: CSV exporting in Italian locale +* Defect #8235: bulk edit issues and copy issues error in es, gl and ca locales +* Defect #8244: selected modules are not activated when copying a project +* Patch #7278: Update Simplified Chinese translation to 1.1 +* Patch #7390: Fixes in Czech localization +* Patch #7963: Reminder email: Link for show all issues does not sort + +== 2011-03-07 v1.1.2 + +* Defect #3132: Bulk editing menu non-functional in Opera browser +* Defect #6090: Most binary files become corrupted when downloading from CVS repository browser when Redmine is running on a Windows server +* Defect #7280: Issues subjects wrap in Gantt +* Defect #7288: Non ASCII filename downloaded from repo is broken on Internet Explorer. +* Defect #7317: Gantt tab gives internal error due to nil avatar icon +* Defect #7497: Aptana Studio .project file added to version 1.1.1-stable +* Defect #7611: Workflow summary shows X icon for workflow with exactly 1 status transition +* Defect #7625: Syntax highlighting unavailable from board new topic or topic edit preview +* Defect #7630: Spent time in commits not recognized +* Defect #7656: MySQL SQL Syntax Error when filtering issues by Assignee's Group +* Defect #7718: Minutes logged in commit message are converted to hours +* Defect #7763: Email notification are sent to watchers even if 'No events' setting is chosen +* Feature #7608: Add "retro" gravatars +* Patch #7598: Extensible MailHandler +* Patch #7795: Internal server error at journals#index with custom fields + == 2011-01-30 v1.1.1 * Defect #4899: Redmine fails to list files for darcs repository diff -r adc8466df404 -r 753f1380d6bc doc/INSTALL --- a/doc/INSTALL Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/INSTALL Mon Jun 06 14:41:04 2011 +0100 @@ -1,7 +1,7 @@ == Redmine installation Redmine - project management software -Copyright (C) 2006-2010 Jean-Philippe Lang +Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ @@ -9,21 +9,21 @@ * Ruby 1.8.6 or 1.8.7 -* RubyGems 1.3.1 +* RubyGems 1.3.7 -* Ruby on Rails 2.3.5 (official downloadable Redmine releases are packaged with +* Ruby on Rails 2.3.11 (official downloadable Redmine releases are packaged with the appropriate Rails version) -* Rack 1.0.1 gem +* Rack 1.1.0 gem * Rake 0.8.3 gem * I18n 0.4.2 gem * A database: - * MySQL (tested with MySQL 5) - * PostgreSQL (tested with PostgreSQL 8.1) - * SQLite (tested with SQLite 3) + * MySQL (tested with MySQL 5.1) + * PostgreSQL (tested with PostgreSQL 8.4) + * SQLite3 (tested with SQLite 3.6) Optional: * SCM binaries (e.g. svn), for repository browsing (must be available in PATH) diff -r adc8466df404 -r 753f1380d6bc doc/UPGRADING --- a/doc/UPGRADING Thu Mar 03 15:08:45 2011 +0000 +++ b/doc/UPGRADING Mon Jun 06 14:41:04 2011 +0100 @@ -1,7 +1,7 @@ == Redmine upgrade Redmine - project management software -Copyright (C) 2006-2010 Jean-Philippe Lang +Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ @@ -30,7 +30,7 @@ 6. Migrate your database - If you are upgrading to Rails 2.3.5 as part of this migration, you + If you are upgrading to Rails 2.3.11 as part of this migration, you need to upgrade the plugin migrations before running the plugin migrations using: rake db:migrate:upgrade_plugin_migrations RAILS_ENV="production" @@ -56,7 +56,7 @@ == Notes -* Rails 2.3.5 is required for versions 0.9.x and 1.0.x. +* Rails 2.3.11 is required for versions 1.2.x. == References diff -r adc8466df404 -r 753f1380d6bc doc/git.rdoc --- a/doc/git.rdoc Thu Mar 03 15:08:45 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -= Contributing to Redmine with git and github - -(This is a beta document. If you can improve it, fork it and send a patch/pull request.) - -The official repository is at http://github.com/edavis10/redmine - -Official branches: - -* master - is automatically mirrored to svn trunk. DO NOT COMMIT OR MERGE INTO THIS BRANCH -* [0.6, 0.7, 0.8, 0.9, 1.0,...]-stable - is automatically mirrored to svn release branches. DO NOT COMMIT OR MERGE INTO THIS BRANCH -* integration-to-svn-trunk - this branch is a git-only branch that will track master (trunk). Any code in here will be eventually merged into master but it may be rebased as any time (git-svn needs to rebase to commit to svn) -* integration-to-svn-stable-1.0 - this branch is a git-only branch that will track the 1.0-stable branch in svn. Any code in here will be eventually merged into master and 1.0-stable but it may be rebased as any time (git-svn needs to rebase to commit to svn) - -I (edavis10) might have some other branches on the repository for work in progress. - -== Branch naming standards - -Redmine has two kinds of development: - -* bug fixes -* new feature development - -Both bug fixes and new feature development should be done in a branch named after the issue number on Redmine.org. So if you are fixing Issue #6244 your branch should be named: - -* 6244 -* 6244-sort-people-by-display-name (optional description) -* issue/6244 (optional "issue" prefix) -* issue/6244-sort-people-by-display-name (optional prefix and description) - -That way when the branch is merged into the Redmine core, the correct issue can be updated. - -Longer term feature development might require multiple branches. Just your best judgment and try to keep the issue id in the name. - -If you don't have an issue for your patch, create an issue on redmine.org and say it's a placeholder issue for your work. Better yet, add a brief overview of what you are working on to the issue and you might get some help with it. - -== Coding Standards - -Follow the coding standards on the Redmine wiki: http://www.redmine.org/wiki/redmine/Coding_Standards#Commits. Make sure you commit logs conform to the standards, otherwise someone else will have to rewrite them for you and you might lose attribution during the conversion to svn. - - diff -r adc8466df404 -r 753f1380d6bc extra/.svn/all-wcprops --- a/extra/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 30 -/svn/!svn/ver/4936/trunk/extra +V 44 +/svn/!svn/ver/5878/branches/1.2-stable/extra END diff -r adc8466df404 -r 753f1380d6bc extra/.svn/entries --- a/extra/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra http://redmine.rubyforge.org/svn -2011-02-23T17:27:31.762248Z -4936 -jplang +2011-05-17T13:32:08.404109Z +5825 +tmaruyama diff -r adc8466df404 -r 753f1380d6bc extra/mail_handler/.svn/all-wcprops --- a/extra/mail_handler/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4725/trunk/extra/mail_handler -END -rdm-mailhandler.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4725/trunk/extra/mail_handler/rdm-mailhandler.rb -END diff -r adc8466df404 -r 753f1380d6bc extra/mail_handler/.svn/entries --- a/extra/mail_handler/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/mail_handler/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/mail_handler +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/mail_handler http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z f3a0f406bd2e6d3caacb7e7c22079df0 2011-01-15T14:48:33.715032Z 4725 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/.svn/entries --- a/extra/sample_plugin/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin http://redmine.rubyforge.org/svn @@ -44,7 +44,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z cb8636f8b6659a091f3e1f018a64a2f5 2009-07-02T18:40:06.298867Z 2798 @@ -78,7 +78,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 4d87ae4412bda3ec3b4c9a8bc17fafb6 2009-02-26T16:37:48.671184Z 2530 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/.svn/entries --- a/extra/sample_plugin/app/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/controllers/.svn/entries --- a/extra/sample_plugin/app/controllers/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/controllers/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/controllers +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z 9e3b32d475f8b06df8d45b28a2732d76 2009-02-21T11:04:50.579477Z 2493 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/models/.svn/entries --- a/extra/sample_plugin/app/models/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/models/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/models +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z 5161ccc668c61730638ef23bec50232f 2008-07-27T19:18:35.954247Z 1704 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/views/.svn/entries --- a/extra/sample_plugin/app/views/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/views/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app/views http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/views/example/.svn/entries --- a/extra/sample_plugin/app/views/example/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/views/example/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/example +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app/views/example http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z 674cc3fb92754e41d7e7d5fb7ed0eda7 2007-09-23T18:50:53.732551Z 753 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z cf9e02439886339b70ee199313902c96 2007-09-23T18:50:53.732551Z 753 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/views/my/.svn/entries --- a/extra/sample_plugin/app/views/my/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/views/my/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app/views/my http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/views/my/blocks/.svn/entries --- a/extra/sample_plugin/app/views/my/blocks/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/views/my/blocks/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my/blocks +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app/views/my/blocks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z e2d729cf488b7b7411cffb259c10559a 2009-02-26T16:36:56.835799Z 2529 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/app/views/settings/.svn/entries --- a/extra/sample_plugin/app/views/settings/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/app/views/settings/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/settings +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/app/views/settings http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z 065925dde040b66230ae06437114c77f 2009-07-02T18:40:06.298867Z 2798 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/assets/.svn/entries --- a/extra/sample_plugin/assets/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/assets/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/assets http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/assets/images/.svn/entries --- a/extra/sample_plugin/assets/images/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/assets/images/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/images +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/assets/images http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z 81bcc262c08473fa7cb05cc78176652f 2007-09-23T18:50:53.732551Z 753 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/assets/stylesheets/.svn/entries --- a/extra/sample_plugin/assets/stylesheets/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/assets/stylesheets/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/stylesheets +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/assets/stylesheets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z ced97da84497db69b30e6e17a55c3fb9 2007-09-23T18:50:53.732551Z 753 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/config/.svn/entries --- a/extra/sample_plugin/config/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/config/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/config http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/config/locales/.svn/entries --- a/extra/sample_plugin/config/locales/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/config/locales/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config/locales +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/config/locales http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z c1dc7060239e61ce13e8840b305000c5 2009-02-08T16:13:02.919112Z 2413 @@ -66,7 +66,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z 989492284a42bf9777e2bd0d39b40254 2009-02-08T16:13:02.919112Z 2413 diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/db/.svn/entries --- a/extra/sample_plugin/db/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/db/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/db http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc extra/sample_plugin/db/migrate/.svn/entries --- a/extra/sample_plugin/db/migrate/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/sample_plugin/db/migrate/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db/migrate +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/sample_plugin/db/migrate http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z 2316ab57f3d60b7f04b4bdfdebf6fd8e 2008-07-27T19:10:56.352148Z 1703 diff -r adc8466df404 -r 753f1380d6bc extra/soundsoftware/reposman-soundsoftware.rb --- a/extra/soundsoftware/reposman-soundsoftware.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/soundsoftware/reposman-soundsoftware.rb Mon Jun 06 14:41:04 2011 +0100 @@ -7,7 +7,7 @@ # == Usage # # reposman [OPTIONS...] -s [DIR] -r [HOST] -# +# # Examples: # reposman --svn-dir=/var/svn --redmine-host=redmine.example.net --scm subversion # reposman -s /var/git -r redmine.example.net -u http://svn.example.net --scm git @@ -57,7 +57,7 @@ # -q, --quiet no log # # == References -# +# # You can find more information on the redmine's wiki : http://www.redmine.org/wiki/redmine/HowTos @@ -210,7 +210,7 @@ log("retrieved #{projects.size} projects", :level => 1) def set_owner_and_rights(project, repos_path, &block) - if RUBY_PLATFORM =~ /mswin/ + if mswin? yield if block_given? else uid, gid = Etc.getpwnam($svn_owner).uid, ($use_groupid ? Etc.getgrnam(project.identifier).gid : Etc.getgrnam($svn_group).gid) @@ -230,9 +230,9 @@ def owner_name(file) mswin? ? $svn_owner : - Etc.getpwuid( File.stat(file).uid ).name + Etc.getpwuid( File.stat(file).uid ).name end - + def mswin? (RUBY_PLATFORM =~ /(:?mswin|mingw)/) || (RUBY_PLATFORM == 'java' && (ENV['OS'] || ENV['os']) =~ /windows/i) end @@ -251,7 +251,6 @@ repos_path = File.join($repos_base, project.identifier).gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR) create_repos = false - # Logic required for SoundSoftware.ac.uk repositories: # # * If the project has a repository path declared already, @@ -342,9 +341,7 @@ rescue => e log("\trepository #{repos_path} not registered in Redmine: #{e.message}"); end - log("\trepository #{repos_path} created"); end +end -end - diff -r adc8466df404 -r 753f1380d6bc extra/svn/.svn/all-wcprops --- a/extra/svn/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/svn/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,29 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 34 -/svn/!svn/ver/4936/trunk/extra/svn +V 48 +/svn/!svn/ver/5878/branches/1.2-stable/extra/svn END -reposman.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4288/trunk/extra/svn/reposman.rb -END -svnserve.wrapper -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/402/trunk/extra/svn/svnserve.wrapper -END -Redmine.pm -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/4936/trunk/extra/svn/Redmine.pm -END -create_views.sql -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/396/trunk/extra/svn/create_views.sql -END diff -r adc8466df404 -r 753f1380d6bc extra/svn/.svn/entries --- a/extra/svn/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/svn/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/extra/svn +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/extra/svn http://redmine.rubyforge.org/svn -2011-02-23T17:27:31.762248Z -4936 -jplang +2011-05-17T13:32:08.404109Z +5825 +tmaruyama @@ -32,11 +32,11 @@ -2011-03-03T11:05:12.000000Z -a0d169b0fc20459335e531e4f3921ede -2010-10-24T21:00:05.611798Z -4288 -jplang +2011-06-06T13:18:33.000000Z +b9371e264b5907bf884bf17deba8c835 +2011-05-17T13:32:08.404109Z +5825 +tmaruyama has-props @@ -58,7 +58,7 @@ -10545 +10512 svnserve.wrapper file @@ -66,7 +66,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z f41d78e45e03554626edf5e4e6663d80 2007-04-02T19:01:31.084001Z 402 @@ -100,7 +100,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z c3d331d6024a3d0f0c250fda387ce052 2011-02-23T17:27:31.762248Z 4936 @@ -134,7 +134,7 @@ -2011-03-03T11:05:12.000000Z +2011-06-06T13:15:00.000000Z 96fdfe0a7a4913dbbfc1b871d7abab02 2007-04-01T19:43:59.029417Z 396 diff -r adc8466df404 -r 753f1380d6bc extra/svn/.svn/text-base/reposman.rb.svn-base --- a/extra/svn/.svn/text-base/reposman.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/svn/.svn/text-base/reposman.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -7,7 +7,7 @@ # == Usage # # reposman [OPTIONS...] -s [DIR] -r [HOST] -# +# # Examples: # reposman --svn-dir=/var/svn --redmine-host=redmine.example.net --scm subversion # reposman -s /var/git -r redmine.example.net -u http://svn.example.net --scm git @@ -57,7 +57,7 @@ # -q, --quiet no log # # == References -# +# # You can find more information on the redmine's wiki : http://www.redmine.org/wiki/redmine/HowTos @@ -205,7 +205,7 @@ log("retrieved #{projects.size} projects", :level => 1) def set_owner_and_rights(project, repos_path, &block) - if RUBY_PLATFORM =~ /mswin/ + if mswin? yield if block_given? else uid, gid = Etc.getpwnam($svn_owner).uid, ($use_groupid ? Etc.getgrnam(project.identifier).gid : Etc.getgrnam($svn_group).gid) @@ -225,9 +225,9 @@ def owner_name(file) mswin? ? $svn_owner : - Etc.getpwuid( File.stat(file).uid ).name + Etc.getpwuid( File.stat(file).uid ).name end - + def mswin? (RUBY_PLATFORM =~ /(:?mswin|mingw)/) || (RUBY_PLATFORM == 'java' && (ENV['OS'] || ENV['os']) =~ /windows/i) end @@ -246,7 +246,6 @@ repos_path = File.join($repos_base, project.identifier).gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR) if File.directory?(repos_path) - # we must verify that repository has the good owner and the good # rights before leaving other_read = other_read_right?(repos_path) @@ -304,9 +303,6 @@ log("\trepository #{repos_path} not registered in Redmine: #{e.message}"); end end - log("\trepository #{repos_path} created"); end - end - \ No newline at end of file diff -r adc8466df404 -r 753f1380d6bc extra/svn/reposman.rb --- a/extra/svn/reposman.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/extra/svn/reposman.rb Mon Jun 06 14:41:04 2011 +0100 @@ -7,7 +7,7 @@ # == Usage # # reposman [OPTIONS...] -s [DIR] -r [HOST] -# +# # Examples: # reposman --svn-dir=/var/svn --redmine-host=redmine.example.net --scm subversion # reposman -s /var/git -r redmine.example.net -u http://svn.example.net --scm git @@ -59,7 +59,7 @@ # -q, --quiet no log # # == References -# +# # You can find more information on the redmine's wiki : http://www.redmine.org/wiki/redmine/HowTos @@ -215,7 +215,7 @@ log("retrieved #{projects.size} projects", :level => 1) def set_owner_and_rights(project, repos_path, &block) - if RUBY_PLATFORM =~ /mswin/ + if mswin? yield if block_given? else uid, gid = Etc.getpwnam($svn_owner).uid, ($use_groupid ? Etc.getgrnam(project.identifier).gid : Etc.getgrnam($svn_group).gid) @@ -235,9 +235,9 @@ def owner_name(file) mswin? ? $svn_owner : - Etc.getpwuid( File.stat(file).uid ).name + Etc.getpwuid( File.stat(file).uid ).name end - + def mswin? (RUBY_PLATFORM =~ /(:?mswin|mingw)/) || (RUBY_PLATFORM == 'java' && (ENV['OS'] || ENV['os']) =~ /windows/i) end @@ -256,7 +256,6 @@ repos_path = File.join($repos_base, project.identifier).gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR) if File.directory?(repos_path) - # we must verify that repository has the good owner and the good # rights before leaving other_read = other_read_right?(repos_path) @@ -314,9 +313,7 @@ log("\trepository #{repos_path} not registered in Redmine: #{e.message}"); end end - log("\trepository #{repos_path} created"); end +end -end - diff -r adc8466df404 -r 753f1380d6bc files/.svn/entries --- a/files/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/files/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/files +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:13.000000Z +2011-06-06T13:15:00.000000Z ae0415159f2c4dba3fc1a559d4c0f9f5 2006-06-28T18:11:03.549769Z 4 diff -r adc8466df404 -r 753f1380d6bc lib/.svn/all-wcprops --- a/lib/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,41 +1,17 @@ -K 25 -svn:wc:ra_dav:version-url -V 28 -/svn/!svn/ver/4993/trunk/lib -END -faster_csv.rb K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/3007/trunk/lib/faster_csv.rb +/svn/!svn/ver/5943/branches/1.2-stable/lib END redmine.rb K 25 svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4954/trunk/lib/redmine.rb -END -tabular_form_builder.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3804/trunk/lib/tabular_form_builder.rb +V 53 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine.rb END redcloth3.rb K 25 svn:wc:ra_dav:version-url -V 41 -/svn/!svn/ver/4468/trunk/lib/redcloth3.rb +V 55 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redcloth3.rb END -ar_condition.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/1227/trunk/lib/ar_condition.rb -END -diff.rb -K 25 -svn:wc:ra_dav:version-url -V 36 -/svn/!svn/ver/2840/trunk/lib/diff.rb -END diff -r adc8466df404 -r 753f1380d6bc lib/.svn/entries --- a/lib/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib http://redmine.rubyforge.org/svn -2011-03-03T05:51:46.224821Z -4993 +2011-05-28T03:34:47.536780Z +5943 tmaruyama @@ -38,7 +38,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 1657561b457dadfa5d004a393bdd1a2e 2009-11-04T13:22:26.440808Z 3007 @@ -78,10 +78,10 @@ -2011-03-03T11:40:18.000000Z -931d36182ff7c72cf9e133581a6e1822 -2011-02-27T13:34:41.060565Z -4954 +2011-06-06T13:20:53.000000Z +0db4c288bb61c89e63cd92b6218a718a +2011-04-15T13:30:25.989544Z +5468 jplang has-props @@ -104,7 +104,7 @@ -12850 +13364 tabular_form_builder.rb file @@ -112,7 +112,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 9d8fb5ede85fd780f018b74b36a83034 2010-06-20T19:03:09.888571Z 3804 @@ -149,10 +149,10 @@ -2011-03-03T11:05:14.000000Z -d76edcf3565b73d5e63e37d3e1c72512 -2010-12-05T10:09:18.457497Z -4468 +2011-06-06T13:20:53.000000Z +ed903f4f804480cf72cd46a16cb64b92 +2011-03-14T20:35:36.619571Z +5133 jplang has-props @@ -175,7 +175,7 @@ -38680 +38769 ar_condition.rb file @@ -183,7 +183,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 55e7cfa4fcb3619e9939d29336ecdf02 2008-03-11T19:33:38.611682Z 1227 @@ -217,7 +217,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 1ecc6c4c4ae6aa3e75600673b4b78add 2009-08-15T22:41:40.505056Z 2840 diff -r adc8466df404 -r 753f1380d6bc lib/.svn/text-base/redcloth3.rb.svn-base --- a/lib/.svn/text-base/redcloth3.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/.svn/text-base/redcloth3.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -296,11 +296,11 @@ rip_offtags text no_textile text escape_html_tags text + # need to do this before #hard_break and #blocks + block_textile_quotes text unless @lite_mode hard_break text unless @lite_mode refs text - # need to do this before text is split by #blocks - block_textile_quotes text blocks text end inline text @@ -707,11 +707,13 @@ atts = pba( atts ) # pass to prefix handler + replacement = nil if respond_to? "textile_#{ tag }", true - text.gsub!( $&, method( "textile_#{ tag }" ).call( tag, atts, cite, content ) ) + replacement = method( "textile_#{ tag }" ).call( tag, atts, cite, content ) elsif respond_to? "textile_#{ tagpre }_", true - text.gsub!( $&, method( "textile_#{ tagpre }_" ).call( tagpre, num, atts, cite, content ) ) + replacement = method( "textile_#{ tagpre }_" ).call( tagpre, num, atts, cite, content ) end + text.gsub!( $& ) { replacement } if replacement end end diff -r adc8466df404 -r 753f1380d6bc lib/.svn/text-base/redmine.rb.svn-base --- a/lib/.svn/text-base/redmine.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/.svn/text-base/redmine.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -41,6 +41,8 @@ fields.register Redmine::CustomFieldFormat.new('list', :label => :label_list, :order => 5) fields.register Redmine::CustomFieldFormat.new('date', :label => :label_date, :order => 6) fields.register Redmine::CustomFieldFormat.new('bool', :label => :label_boolean, :order => 7) + fields.register Redmine::CustomFieldFormat.new('user', :label => :label_user, :only => %w(Issue TimeEntry Version Project), :edit_as => 'list', :order => 8) + fields.register Redmine::CustomFieldFormat.new('version', :label => :label_version, :only => %w(Issue TimeEntry Version Project), :edit_as => 'list', :order => 9) end # Permissions @@ -69,6 +71,8 @@ map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new]} map.permission :manage_issue_relations, {:issue_relations => [:new, :destroy]} map.permission :manage_subtasks, {} + map.permission :set_issues_private, {} + map.permission :set_own_issues_private, {}, :require => :loggedin map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new]} map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin map.permission :edit_own_issue_notes, {:journals => :edit}, :require => :loggedin @@ -84,10 +88,10 @@ end map.project_module :time_tracking do |map| - map.permission :log_time, {:timelog => [:new, :create, :edit, :update]}, :require => :loggedin + map.permission :log_time, {:timelog => [:new, :create, :edit, :update, :bulk_edit, :bulk_update]}, :require => :loggedin map.permission :view_time_entries, :timelog => [:index, :show], :time_entry_reports => [:report] - map.permission :edit_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy]}, :require => :member - map.permission :edit_own_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy]}, :require => :loggedin + map.permission :edit_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member + map.permission :edit_own_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member end diff -r adc8466df404 -r 753f1380d6bc lib/SVG/.svn/entries --- a/lib/SVG/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/SVG/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/SVG +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/SVG http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 393a5ca445f6965873eca0259a17f833 2007-03-25T17:11:46.804742Z 380 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 072cf60873854a186c6eba9b74dbe389 2007-03-25T17:11:46.804742Z 380 diff -r adc8466df404 -r 753f1380d6bc lib/SVG/Graph/.svn/entries --- a/lib/SVG/Graph/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/SVG/Graph/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/SVG/Graph +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/SVG/Graph http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 0a49ed37717b08c6bccdc843a03a333d 2009-03-30T19:58:17.407192Z 2642 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 55ff835de5a0fb0fd2d6a236b1c5c436 2009-03-30T19:58:17.407192Z 2642 @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z a39e9963eaae7bb913b6d8d2dfe0506f 2009-03-30T19:58:17.407192Z 2642 @@ -134,7 +134,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 184772c0f1732eadf12b0e8bc9e172f7 2009-03-30T19:58:17.407192Z 2642 @@ -168,7 +168,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z fad5865539cbd7ba3433fd6d47b9d3f2 2009-11-07T10:40:54.677820Z 3017 @@ -202,7 +202,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z cc9051d7617dfe6dd6cc47fe83fd6ec4 2009-03-30T19:58:17.407192Z 2642 @@ -236,7 +236,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z f092a4b0f16876381bc9283058eeb48c 2007-03-25T17:11:46.804742Z 380 @@ -270,7 +270,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 73dbcb4a1cba46b4e46a81881d24ff1a 2009-03-30T19:58:17.407192Z 2642 @@ -304,7 +304,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z d8e95d0e507a02a74a5ac3435560d3bd 2007-03-25T17:11:46.804742Z 380 diff -r adc8466df404 -r 753f1380d6bc lib/generators/.svn/entries --- a/lib/generators/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/generators/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/generators +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/generators http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc lib/generators/redmine_plugin/.svn/entries --- a/lib/generators/redmine_plugin/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/generators/redmine_plugin/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/generators/redmine_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 334056a407de9091bb8774ba986c53f9 2009-06-10T03:39:02.884087Z 2785 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z be5d60ef31ac822cd5650ab976dcc543 2009-06-10T03:39:02.884087Z 2785 diff -r adc8466df404 -r 753f1380d6bc lib/generators/redmine_plugin/templates/.svn/entries --- a/lib/generators/redmine_plugin/templates/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/generators/redmine_plugin/templates/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin/templates +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/generators/redmine_plugin/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 2d39c559d341be440cb60911ef125dd9 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z d97a21936cfb77543031f7d9a5d5131a 2008-10-25T04:37:31.779636Z 1949 @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z d14592489e5b7d34b33d2487f4770b7d 2008-10-25T04:37:31.779636Z 1949 @@ -134,7 +134,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z ab791ada26df5c9c1a13b771e988a36f 2009-06-10T03:39:02.884087Z 2785 @@ -168,7 +168,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 39cb16a49db6c72cdd7a63447d5b188f 2010-06-17T19:02:13.409991Z 3771 diff -r adc8466df404 -r 753f1380d6bc lib/generators/redmine_plugin_controller/.svn/entries --- a/lib/generators/redmine_plugin_controller/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/generators/redmine_plugin_controller/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/generators/redmine_plugin_controller http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 60c1792566a450d246dd66ff274ae06c 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 23b15404071adb39cb140a6113057f15 2010-02-28T12:15:47.320153Z 3514 diff -r adc8466df404 -r 753f1380d6bc lib/generators/redmine_plugin_controller/templates/.svn/entries --- a/lib/generators/redmine_plugin_controller/templates/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/generators/redmine_plugin_controller/templates/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller/templates +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/generators/redmine_plugin_controller/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 0ae9d2e8e624fef815f60164d47b6464 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z e8491aac2379dbba3d3ddadc30f6db07 2008-10-25T09:35:51.426668Z 1951 @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 2fdd792e6b6825b4f1802ba4767e0435 2008-10-25T09:35:51.426668Z 1951 @@ -134,7 +134,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 22e765f47aacc324789509219797d087 2010-06-17T19:02:07.893033Z 3770 diff -r adc8466df404 -r 753f1380d6bc lib/generators/redmine_plugin_model/.svn/entries --- a/lib/generators/redmine_plugin_model/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/generators/redmine_plugin_model/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/generators/redmine_plugin_model http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z ca5ffbd9dfb099b2f38ca21c030ffea0 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z ba0c0092c69cca4c21b1b26027f7472b 2010-02-28T12:15:47.320153Z 3514 diff -r adc8466df404 -r 753f1380d6bc lib/generators/redmine_plugin_model/templates/.svn/entries --- a/lib/generators/redmine_plugin_model/templates/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/generators/redmine_plugin_model/templates/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model/templates +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/generators/redmine_plugin_model/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z ce0817700ec27f10f7d07f998bff6991 2008-10-25T09:35:51.426668Z 1951 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z a4081d31f6d22e7655b4f6e9fb894a03 2009-10-17T21:08:33.644420Z 2926 @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 115e77dae670747c95b5ff22c01d4174 2008-09-05T10:31:06.632668Z 1786 @@ -134,7 +134,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 3a783571ccc96a2f639329700dda677b 2010-06-17T19:02:07.893033Z 3770 diff -r adc8466df404 -r 753f1380d6bc lib/plugins/.svn/entries --- a/lib/plugins/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/plugins/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/plugins +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/plugins http://redmine.rubyforge.org/svn diff -r adc8466df404 -r 753f1380d6bc lib/redcloth3.rb --- a/lib/redcloth3.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redcloth3.rb Mon Jun 06 14:41:04 2011 +0100 @@ -296,11 +296,11 @@ rip_offtags text no_textile text escape_html_tags text + # need to do this before #hard_break and #blocks + block_textile_quotes text unless @lite_mode hard_break text unless @lite_mode refs text - # need to do this before text is split by #blocks - block_textile_quotes text blocks text end inline text @@ -707,11 +707,13 @@ atts = pba( atts ) # pass to prefix handler + replacement = nil if respond_to? "textile_#{ tag }", true - text.gsub!( $&, method( "textile_#{ tag }" ).call( tag, atts, cite, content ) ) + replacement = method( "textile_#{ tag }" ).call( tag, atts, cite, content ) elsif respond_to? "textile_#{ tagpre }_", true - text.gsub!( $&, method( "textile_#{ tagpre }_" ).call( tagpre, num, atts, cite, content ) ) + replacement = method( "textile_#{ tagpre }_" ).call( tagpre, num, atts, cite, content ) end + text.gsub!( $& ) { replacement } if replacement end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine.rb --- a/lib/redmine.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine.rb Mon Jun 06 14:41:04 2011 +0100 @@ -41,6 +41,8 @@ fields.register Redmine::CustomFieldFormat.new('list', :label => :label_list, :order => 5) fields.register Redmine::CustomFieldFormat.new('date', :label => :label_date, :order => 6) fields.register Redmine::CustomFieldFormat.new('bool', :label => :label_boolean, :order => 7) + fields.register Redmine::CustomFieldFormat.new('user', :label => :label_user, :only => %w(Issue TimeEntry Version Project), :edit_as => 'list', :order => 8) + fields.register Redmine::CustomFieldFormat.new('version', :label => :label_version, :only => %w(Issue TimeEntry Version Project), :edit_as => 'list', :order => 9) end # Permissions @@ -69,6 +71,8 @@ map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new]} map.permission :manage_issue_relations, {:issue_relations => [:new, :destroy]} map.permission :manage_subtasks, {} + map.permission :set_issues_private, {} + map.permission :set_own_issues_private, {}, :require => :loggedin map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new]} map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin map.permission :edit_own_issue_notes, {:journals => :edit}, :require => :loggedin @@ -84,10 +88,10 @@ end map.project_module :time_tracking do |map| - map.permission :log_time, {:timelog => [:new, :create, :edit, :update]}, :require => :loggedin + map.permission :log_time, {:timelog => [:new, :create, :edit, :update, :bulk_edit, :bulk_update]}, :require => :loggedin map.permission :view_time_entries, :timelog => [:index, :show], :time_entry_reports => [:report] - map.permission :edit_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy]}, :require => :member - map.permission :edit_own_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy]}, :require => :loggedin + map.permission :edit_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member + map.permission :edit_own_time_entries, {:timelog => [:new, :create, :edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/.svn/all-wcprops --- a/lib/redmine/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,161 +1,41 @@ K 25 svn:wc:ra_dav:version-url -V 36 -/svn/!svn/ver/4993/trunk/lib/redmine +V 50 +/svn/!svn/ver/5879/branches/1.2-stable/lib/redmine END -i18n.rb +codeset_util.rb K 25 svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4894/trunk/lib/redmine/i18n.rb +V 66 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/codeset_util.rb END -pop3.rb +version.rb K 25 svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4737/trunk/lib/redmine/pop3.rb -END -safe_attributes.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4491/trunk/lib/redmine/safe_attributes.rb -END -platform.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/1753/trunk/lib/redmine/platform.rb +V 61 +/svn/!svn/ver/5879/branches/1.2-stable/lib/redmine/version.rb END custom_field_format.rb K 25 svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3675/trunk/lib/redmine/custom_field_format.rb -END -themes.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4559/trunk/lib/redmine/themes.rb -END -version.rb -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/4784/trunk/lib/redmine/version.rb -END -imap.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/2220/trunk/lib/redmine/imap.rb +V 73 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/custom_field_format.rb END mime_type.rb K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/3258/trunk/lib/redmine/mime_type.rb -END -info.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/2776/trunk/lib/redmine/info.rb -END -access_keys.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.rb -END -activity.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/1702/trunk/lib/redmine/activity.rb -END -wiki_formatting.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3446/trunk/lib/redmine/wiki_formatting.rb -END -menu_manager.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4406/trunk/lib/redmine/menu_manager.rb -END -plugin.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4293/trunk/lib/redmine/plugin.rb -END -utils.rb -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/2234/trunk/lib/redmine/utils.rb -END -hook.rb -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4406/trunk/lib/redmine/hook.rb -END -access_control.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/1907/trunk/lib/redmine/access_control.rb -END -search.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/3444/trunk/lib/redmine/search.rb -END -configuration.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4949/trunk/lib/redmine/configuration.rb -END -core_ext.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/1361/trunk/lib/redmine/core_ext.rb -END -ciphering.rb -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4950/trunk/lib/redmine/ciphering.rb -END -about.rb -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/2766/trunk/lib/redmine/about.rb -END -syntax_highlighting.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3619/trunk/lib/redmine/syntax_highlighting.rb +V 63 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/mime_type.rb END unified_diff.rb K 25 svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4929/trunk/lib/redmine/unified_diff.rb +V 66 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/unified_diff.rb END notifiable.rb K 25 svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/4222/trunk/lib/redmine/notifiable.rb +V 64 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/notifiable.rb END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/.svn/entries --- a/lib/redmine/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine http://redmine.rubyforge.org/svn -2011-03-03T05:51:46.224821Z -4993 -tmaruyama +2011-05-22T09:20:14.586112Z +5879 +jplang @@ -35,7 +35,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 85ff863202dfbf2a6e9447a3bcf7cc06 2011-01-22T12:09:07.652831Z 4737 @@ -63,13 +63,47 @@ 2461 +codeset_util.rb +file + + + + +2011-06-06T13:20:53.000000Z +49dc0eec18109d69f897a5e3e1e7a44b +2011-04-16T06:43:49.720334Z +5474 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +744 + themes.rb file -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 23fd3a13b8bcd6b3e2547e913d5fae18 2010-12-22T21:41:08.746858Z 4559 @@ -103,7 +137,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z caeedebd5c05aede1d232510d03ad136 2008-12-31T14:56:30.439880Z 2220 @@ -140,7 +174,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z ddadcd03b97455adae2451a2140afbf6 2009-05-30T23:00:22.602473Z 2776 @@ -174,7 +208,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 41c2852d003d94cb23c231f06be62d12 2008-01-20T13:07:19.003764Z 1081 @@ -211,7 +245,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z d04b071ce8f05b44ca6993c56fea9b1f 2009-01-04T17:09:25.896068Z 2234 @@ -245,7 +279,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z e7e4c44515553e36bffa6e8f8960080b 2008-09-25T18:51:03.022592Z 1907 @@ -279,7 +313,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 6f968bcc4f81562e9cbddb02ebc62601 2010-02-17T20:05:51.124365Z 3444 @@ -316,7 +350,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z 2f47dda69333c012a55496a3792c369e 2011-02-25T14:30:05.998365Z 4949 @@ -350,7 +384,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 91ed592a8419f1bec48ba880c7a86e29 2009-05-25T19:10:26.065563Z 2766 @@ -384,7 +418,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 4a40844a6cd11aa7409bc8f4e9a2c74e 2010-03-28T11:30:48.135356Z 3619 @@ -418,11 +452,11 @@ -2011-03-03T11:05:14.000000Z -cfdd5556d40422dd9610d2124a2fefac -2010-09-28T21:09:06.467392Z -4222 -edavis10 +2011-06-06T13:20:53.000000Z +818a8c71d5080050c1fe5a95e1469a3d +2011-03-04T14:32:58.878627Z +5003 +jplang @@ -444,7 +478,7 @@ -916 +976 i18n.rb file @@ -452,7 +486,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z cc684405103aabd5f4aea0c21fd7c732 2011-02-20T14:56:37.399906Z 4894 @@ -489,7 +523,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 7f659c02de1ea89806beda1772dc4d36 2010-12-12T13:11:53.259618Z 4491 @@ -523,7 +557,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 68165c83be56d3204c582958d933ff0a 2008-08-25T11:01:37.715099Z 1753 @@ -557,10 +591,10 @@ -2011-03-03T11:05:14.000000Z -c6c19bce5ff3b4298316ffb112478868 -2011-01-30T14:37:23.564601Z -4784 +2011-06-06T13:20:53.000000Z +fe0857b61f8e946781b4eb6cb6298a1f +2011-05-22T09:20:14.586112Z +5879 jplang has-props @@ -583,7 +617,7 @@ -1056 +1083 custom_field_format.rb file @@ -591,11 +625,12 @@ -2011-03-03T11:05:14.000000Z -7fd1fcfb204480b0e9903fd03c53a563 -2010-04-16T15:34:05.970144Z -3675 -edavis10 +2011-06-06T13:20:53.000000Z +ae8c89a602b7d18e390aa1a7865a2319 +2011-04-01T14:02:05.869935Z +5275 +jplang +has-props @@ -616,8 +651,7 @@ - -2761 +3066 mime_type.rb file @@ -625,11 +659,11 @@ -2011-03-03T11:05:14.000000Z -dbfad515b1d5c277d2f8e9d67233185e -2009-12-29T13:28:30.604471Z -3258 -jplang +2011-06-06T13:20:53.000000Z +9494e5229ba69caf5121fd1f90c0fb9e +2011-03-22T04:35:48.334519Z +5190 +tmaruyama has-props @@ -651,7 +685,7 @@ -3498 +3525 wiki_formatting dir @@ -665,7 +699,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 88435997a6d77548eab82526df38caf1 2008-07-27T18:38:31.746909Z 1702 @@ -699,7 +733,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 648c40cc515e97d063d2c2f218cbbc23 2010-02-17T20:47:50.603139Z 3446 @@ -733,7 +767,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 81bc46012d5a0067e18e08bada197d8c 2010-10-25T23:32:01.793182Z 4293 @@ -767,7 +801,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 7f3739a749929e1f65efb292620d361b 2010-11-14T16:24:21.989522Z 4406 @@ -801,7 +835,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z dfacee092edce74d74e8ea7d7a54aeba 2010-11-14T16:24:21.989522Z 4406 @@ -835,7 +869,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 7632bcee464a923f5aa7c9eba29f8081 2008-04-26T11:59:51.889210Z 1361 @@ -869,7 +903,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z 763ba2f765c62f378371f2472679c464 2011-02-26T13:09:25.657748Z 4950 @@ -906,11 +940,11 @@ -2011-03-03T11:40:18.000000Z -561d23da6665fb790120f9d59962fb78 -2011-02-23T07:03:45.049119Z -4929 -tmaruyama +2011-06-06T13:20:53.000000Z +34031c9894d99cfc79820222a06d34c5 +2011-03-11T20:23:29.177962Z +5094 +jplang has-props @@ -932,5 +966,5 @@ -5678 +7317 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/.svn/text-base/custom_field_format.rb.svn-base --- a/lib/redmine/.svn/text-base/custom_field_format.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/.svn/text-base/custom_field_format.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -22,12 +22,14 @@ cattr_accessor :available @@available = {} - attr_accessor :name, :order, :label + attr_accessor :name, :order, :label, :edit_as, :class_names def initialize(name, options={}) self.name = name self.label = options[:label] self.order = options[:order] + self.edit_as = options[:edit_as] || name + self.class_names = options[:only] end def format(value) @@ -47,12 +49,11 @@ return value } end - - # Allow displaying the edit type of another field_format - # - # Example: display a custom field as a list - def edit_as - name + + ['user', 'version'].each do |name| + define_method("format_as_#{name}") {|value| + return value.blank? ? "" : name.classify.constantize.find_by_id(value.to_i).to_s + } end class << self @@ -79,8 +80,10 @@ end # Return an array of custom field formats which can be used in select_tag - def as_select - @@available.values.sort {|a,b| + def as_select(class_name=nil) + fields = @@available.values + fields = fields.select {|field| field.class_names.nil? || field.class_names.include?(class_name)} + fields.sort {|a,b| a.order <=> b.order }.collect {|custom_field_format| [ l(custom_field_format.label), custom_field_format.name ] diff -r adc8466df404 -r 753f1380d6bc lib/redmine/.svn/text-base/mime_type.rb.svn-base --- a/lib/redmine/.svn/text-base/mime_type.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/.svn/text-base/mime_type.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -37,6 +37,7 @@ 'text/xml' => 'xml,xsd,mxml', 'text/yaml' => 'yml,yaml', 'text/csv' => 'csv', + 'text/x-po' => 'po', 'image/gif' => 'gif', 'image/jpeg' => 'jpg,jpeg,jpe', 'image/png' => 'png', diff -r adc8466df404 -r 753f1380d6bc lib/redmine/.svn/text-base/notifiable.rb.svn-base --- a/lib/redmine/.svn/text-base/notifiable.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/.svn/text-base/notifiable.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -14,6 +14,7 @@ notifications << Notifiable.new('issue_status_updated', 'issue_updated') notifications << Notifiable.new('issue_priority_updated', 'issue_updated') notifications << Notifiable.new('news_added') + notifications << Notifiable.new('news_comment_added') notifications << Notifiable.new('document_added') notifications << Notifiable.new('file_added') notifications << Notifiable.new('message_posted') diff -r adc8466df404 -r 753f1380d6bc lib/redmine/.svn/text-base/unified_diff.rb.svn-base --- a/lib/redmine/.svn/text-base/unified_diff.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/.svn/text-base/unified_diff.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,14 +17,16 @@ module Redmine # Class used to parse unified diffs - class UnifiedDiff < Array + class UnifiedDiff < Array + attr_reader :diff_type + def initialize(diff, options={}) options.assert_valid_keys(:type, :max_lines) diff = diff.split("\n") if diff.is_a?(String) - diff_type = options[:type] || 'inline' + @diff_type = options[:type] || 'inline' lines = 0 @truncated = false - diff_table = DiffTable.new(diff_type) + diff_table = DiffTable.new(@diff_type) diff.each do |line| line_encoding = nil if line.respond_to?(:force_encoding) @@ -53,17 +55,15 @@ end # Class that represents a file diff - class DiffTable < Hash - attr_reader :file_name, :line_num_l, :line_num_r + class DiffTable < Array + attr_reader :file_name # Initialize with a Diff file and the type of Diff View # The type view must be inline or sbs (side_by_side) def initialize(type="inline") @parsing = false - @nb_line = 1 - @start = false - @before = 'same' - @second = true + @added = 0 + @removed = 0 @type = type end @@ -86,11 +86,21 @@ @line_num_l = $2.to_i @line_num_r = $5.to_i else - @nb_line += 1 if parse_line(line, @type) + parse_line(line, @type) end end return true end + + def each_line + prev_line_left, prev_line_right = nil, nil + each do |line| + spacing = prev_line_left && prev_line_right && (line.nb_line_left != prev_line_left+1) && (line.nb_line_right != prev_line_right+1) + yield spacing, line + prev_line_left = line.nb_line_left.to_i if line.nb_line_left.to_i > 0 + prev_line_right = line.nb_line_right.to_i if line.nb_line_right.to_i > 0 + end + end def inspect puts '### DIFF TABLE ###' @@ -100,74 +110,91 @@ end end - private - # Test if is a Side By Side type - def sbs?(type, func) - if @start and type == "sbs" - if @before == func and @second - tmp_nb_line = @nb_line - self[tmp_nb_line] = Diff.new - else - @second = false - tmp_nb_line = @start - @start += 1 - @nb_line -= 1 - end - else - tmp_nb_line = @nb_line - @start = @nb_line - self[tmp_nb_line] = Diff.new - @second = true - end - unless self[tmp_nb_line] - @nb_line += 1 - self[tmp_nb_line] = Diff.new - else - self[tmp_nb_line] - end - end + private # Escape the HTML for the diff def escapeHTML(line) CGI.escapeHTML(line) end + + def diff_for_added_line + if @type == 'sbs' && @removed > 0 && @added < @removed + self[-(@removed - @added)] + else + diff = Diff.new + self << diff + diff + end + end def parse_line(line, type="inline") if line[0, 1] == "+" - diff = sbs? type, 'add' - @before = 'add' + diff = diff_for_added_line diff.line_right = escapeHTML line[1..-1] diff.nb_line_right = @line_num_r diff.type_diff_right = 'diff_in' @line_num_r += 1 + @added += 1 true elsif line[0, 1] == "-" - diff = sbs? type, 'remove' - @before = 'remove' + diff = Diff.new diff.line_left = escapeHTML line[1..-1] diff.nb_line_left = @line_num_l diff.type_diff_left = 'diff_out' + self << diff @line_num_l += 1 + @removed += 1 true - elsif line[0, 1] =~ /\s/ - @before = 'same' - @start = false - diff = Diff.new - diff.line_right = escapeHTML line[1..-1] - diff.nb_line_right = @line_num_r - diff.line_left = escapeHTML line[1..-1] - diff.nb_line_left = @line_num_l - self[@nb_line] = diff - @line_num_l += 1 - @line_num_r += 1 - true - elsif line[0, 1] = "\\" + else + write_offsets + if line[0, 1] =~ /\s/ + diff = Diff.new + diff.line_right = escapeHTML line[1..-1] + diff.nb_line_right = @line_num_r + diff.line_left = escapeHTML line[1..-1] + diff.nb_line_left = @line_num_l + self << diff + @line_num_l += 1 + @line_num_r += 1 + true + elsif line[0, 1] = "\\" true else false end end end + + def write_offsets + if @added > 0 && @added == @removed + @added.times do |i| + line = self[-(1 + i)] + removed = (@type == 'sbs') ? line : self[-(1 + @added + i)] + offsets = offsets(removed.line_left, line.line_right) + removed.offsets = line.offsets = offsets + end + end + @added = 0 + @removed = 0 + end + + def offsets(line_left, line_right) + if line_left.present? && line_right.present? && line_left != line_right + max = [line_left.size, line_right.size].min + starting = 0 + while starting < max && line_left[starting] == line_right[starting] + starting += 1 + end + ending = -1 + while ending >= -(max - starting) && line_left[ending] == line_right[ending] + ending -= 1 + end + unless starting == 0 && ending == -1 + [starting, ending] + end + end + end + end # A line of diff class Diff @@ -177,6 +204,7 @@ attr_accessor :line_right attr_accessor :type_diff_right attr_accessor :type_diff_left + attr_accessor :offsets def initialize() self.nb_line_left = '' @@ -186,6 +214,38 @@ self.type_diff_right = '' self.type_diff_left = '' end + + def type_diff + type_diff_right == 'diff_in' ? type_diff_right : type_diff_left + end + + def line + type_diff_right == 'diff_in' ? line_right : line_left + end + + def html_line_left + if offsets + line_left.dup.insert(offsets.first, '').insert(offsets.last, '') + else + line_left + end + end + + def html_line_right + if offsets + line_right.dup.insert(offsets.first, '').insert(offsets.last, '') + else + line_right + end + end + + def html_line + if offsets + line.dup.insert(offsets.first, '').insert(offsets.last, '') + else + line + end + end def inspect puts '### Start Line Diff ###' diff -r adc8466df404 -r 753f1380d6bc lib/redmine/.svn/text-base/version.rb.svn-base --- a/lib/redmine/.svn/text-base/version.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/.svn/text-base/version.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -3,9 +3,9 @@ module Redmine module VERSION #:nodoc: MAJOR = 1 - MINOR = 1 - TINY = 1 - + MINOR = 2 + TINY = 0 + # Branch values: # * official release: nil # * stable branch: stable @@ -20,24 +20,25 @@ f = File.open(entries_path, 'r') entries = f.read f.close - if entries.match(%r{^\d+}) - revision = $1.to_i if entries.match(%r{^\d+\s+dir\s+(\d+)\s}) - else - xml = REXML::Document.new(entries) - revision = xml.elements['wc-entries'].elements[1].attributes['revision'].to_i - end - rescue - # Could not find the current revision - end - end - revision + if entries.match(%r{^\d+}) + revision = $1.to_i if entries.match(%r{^\d+\s+dir\s+(\d+)\s}) + else + xml = REXML::Document.new(entries) + revision = + xml.elements['wc-entries'].elements[1].attributes['revision'].to_i + end + rescue + # Could not find the current revision + end + end + revision end REVISION = self.revision - ARRAY = [MAJOR, MINOR, TINY, BRANCH, REVISION].compact - STRING = ARRAY.join('.') + ARRAY = [MAJOR, MINOR, TINY, BRANCH, REVISION].compact + STRING = ARRAY.join('.') - def self.to_a; ARRAY end + def self.to_a; ARRAY end def self.to_s; STRING end end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/activity/.svn/entries --- a/lib/redmine/activity/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/activity/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/activity +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/activity http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 20597949bb74e98a3ffc97bc8a3ead7d 2010-07-06T02:22:03.226147Z 3829 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/codeset_util.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/codeset_util.rb Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,31 @@ +require 'iconv' + +module Redmine + module CodesetUtil + + def self.replace_invalid_utf8(str) + return str if str.nil? + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + if ! str.valid_encoding? + str = str.encode("US-ASCII", :invalid => :replace, + :undef => :replace, :replace => '?').encode("UTF-8") + end + else + ic = Iconv.new('UTF-8', 'UTF-8') + txtar = "" + begin + txtar += ic.iconv(str) + rescue Iconv::IllegalSequence + txtar += $!.success + str = '?' + $!.failed[1,$!.failed.length] + retry + rescue + txtar += $!.success + end + str = txtar + end + str + end + end +end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/core_ext/.svn/entries --- a/lib/redmine/core_ext/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/core_ext/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/core_ext http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z fcafa1cc4149d3a5de82816c61b7fa02 2009-08-17T16:32:24.020380Z 2844 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/core_ext/string/.svn/entries --- a/lib/redmine/core_ext/string/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/core_ext/string/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext/string +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/core_ext/string http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z e614ecdb2fac85cd9f8808e7cff7f9de 2009-08-17T16:32:24.020380Z 2844 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 1cc26c5de967944da3a6b07331512637 2009-10-10T15:09:19.510095Z 2912 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/custom_field_format.rb --- a/lib/redmine/custom_field_format.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/custom_field_format.rb Mon Jun 06 14:41:04 2011 +0100 @@ -22,12 +22,14 @@ cattr_accessor :available @@available = {} - attr_accessor :name, :order, :label + attr_accessor :name, :order, :label, :edit_as, :class_names def initialize(name, options={}) self.name = name self.label = options[:label] self.order = options[:order] + self.edit_as = options[:edit_as] || name + self.class_names = options[:only] end def format(value) @@ -47,12 +49,11 @@ return value } end - - # Allow displaying the edit type of another field_format - # - # Example: display a custom field as a list - def edit_as - name + + ['user', 'version'].each do |name| + define_method("format_as_#{name}") {|value| + return value.blank? ? "" : name.classify.constantize.find_by_id(value.to_i).to_s + } end class << self @@ -79,8 +80,10 @@ end # Return an array of custom field formats which can be used in select_tag - def as_select - @@available.values.sort {|a,b| + def as_select(class_name=nil) + fields = @@available.values + fields = fields.select {|field| field.class_names.nil? || field.class_names.include?(class_name)} + fields.sort {|a,b| a.order <=> b.order }.collect {|custom_field_format| [ l(custom_field_format.label), custom_field_format.name ] diff -r adc8466df404 -r 753f1380d6bc lib/redmine/default_data/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/default_data/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 63 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/default_data +END +loader.rb +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/default_data/loader.rb +END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/default_data/.svn/entries --- a/lib/redmine/default_data/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/default_data/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/default_data +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/default_data http://redmine.rubyforge.org/svn -2010-06-30T01:55:44.694582Z -3820 -edavis10 +2011-04-15T13:23:13.506236Z +5466 +jplang @@ -32,11 +32,11 @@ -2011-03-03T11:05:14.000000Z -41958e843a8ba03548eed089e8002549 -2010-06-30T01:55:44.694582Z -3820 -edavis10 +2011-06-06T13:20:53.000000Z +a052713b43f76c049afa9cba6ed46e77 +2011-04-15T13:23:13.506236Z +5466 +jplang has-props @@ -58,5 +58,5 @@ -10686 +10750 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/default_data/.svn/text-base/loader.rb.svn-base --- a/lib/redmine/default_data/.svn/text-base/loader.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/default_data/.svn/text-base/loader.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -41,6 +41,7 @@ Role.transaction do # Roles manager = Role.create! :name => l(:default_role_manager), + :issues_visibility => 'all', :position => 1 manager.permissions = manager.setable_permissions.collect {|p| p.name} manager.save! diff -r adc8466df404 -r 753f1380d6bc lib/redmine/default_data/loader.rb --- a/lib/redmine/default_data/loader.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/default_data/loader.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -41,6 +41,7 @@ Role.transaction do # Roles manager = Role.create! :name => l(:default_role_manager), + :issues_visibility => 'all', :position => 1 manager.permissions = manager.setable_permissions.collect {|p| p.name} manager.save! diff -r adc8466df404 -r 753f1380d6bc lib/redmine/export/.svn/all-wcprops --- a/lib/redmine/export/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/export/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4736/trunk/lib/redmine/export +V 57 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/export END pdf.rb K 25 svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/4736/trunk/lib/redmine/export/pdf.rb +V 64 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/export/pdf.rb END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/export/.svn/entries --- a/lib/redmine/export/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/export/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/export +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/export http://redmine.rubyforge.org/svn -2011-01-22T11:57:02.732751Z -4736 -jplang +2011-05-10T01:03:28.091124Z +5723 +tmaruyama @@ -32,11 +32,11 @@ -2011-03-03T11:05:14.000000Z -b8bd24e9575d51f0c49f8245a5d593a2 -2011-01-22T11:57:02.732751Z -4736 -jplang +2011-06-06T13:20:53.000000Z +2ed64538eebb760396d45f10184ff550 +2011-05-10T01:03:28.091124Z +5723 +tmaruyama has-props @@ -58,5 +58,5 @@ -10786 +14982 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/export/.svn/text-base/pdf.rb.svn-base --- a/lib/redmine/export/.svn/text-base/pdf.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/export/.svn/text-base/pdf.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,72 +1,81 @@ # encoding: utf-8 # # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'iconv' require 'rfpdf/fpdf' -require 'rfpdf/chinese' +require 'fpdf/chinese' +require 'fpdf/japanese' +require 'fpdf/korean' module Redmine module Export module PDF include ActionView::Helpers::TextHelper include ActionView::Helpers::NumberHelper - - class IFPDF < FPDF + + class ITCPDF < TCPDF include Redmine::I18n attr_accessor :footer_date - + def initialize(lang) - super() set_language_if_valid lang - case current_language.to_s.downcase - when 'ko' + pdf_encoding = l(:general_pdf_encoding).upcase + if RUBY_VERSION < '1.9' + @ic = Iconv.new(pdf_encoding, 'UTF-8') + end + super('P', 'mm', 'A4', (pdf_encoding == 'UTF-8'), pdf_encoding) + case pdf_encoding + when 'UTF-8' + @font_for_content = 'FreeSans' + @font_for_footer = 'FreeSans' + when 'CP949' extend(PDF_Korean) AddUHCFont() @font_for_content = 'UHC' - @font_for_footer = 'UHC' - when 'ja' + @font_for_footer = 'UHC' + when 'CP932' extend(PDF_Japanese) AddSJISFont() @font_for_content = 'SJIS' - @font_for_footer = 'SJIS' - when 'zh' + @font_for_footer = 'SJIS' + when 'GB18030' extend(PDF_Chinese) AddGBFont() @font_for_content = 'GB' - @font_for_footer = 'GB' - when 'zh-tw' + @font_for_footer = 'GB' + when 'BIG5' extend(PDF_Chinese) AddBig5Font() @font_for_content = 'Big5' - @font_for_footer = 'Big5' + @font_for_footer = 'Big5' else @font_for_content = 'Arial' - @font_for_footer = 'Helvetica' + @font_for_footer = 'Helvetica' end SetCreator(Redmine::Info.app_name) SetFont(@font_for_content) end - + def SetFontStyle(style, size) SetFont(@font_for_content, style, size) end - + def SetTitle(txt) txt = begin utf16txt = Iconv.conv('UTF-16BE', 'UTF-8', txt) @@ -78,7 +87,7 @@ end || '' super(txt) end - + def textstring(s) # Format a text string if s =~ /^ space_left + pdf.AddPage("L") + base_x = pdf.GetX + base_y = pdf.GetY + end + + # write the cells on page + pdf.RDMCell(col_id_width, row_height, issue.id.to_s, "T", 0, 'C', 1) + issues_to_pdf_write_cells(pdf, col_values, col_width, row_height) + issues_to_pdf_draw_borders(pdf, base_x, base_y, base_y + max_height, col_id_width, col_width) + pdf.SetY(base_y + max_height); end + if issues.size == Setting.issues_export_limit.to_i pdf.SetFontStyle('B',10) - pdf.Cell(0, row_height, '...') + pdf.RDMCell(0, row_height, '...') end pdf.Output end + # Renders MultiCells and returns the maximum height used + def issues_to_pdf_write_cells(pdf, col_values, col_widths, + row_height, head=false) + base_y = pdf.GetY + max_height = row_height + col_values.each_with_index do |column, i| + col_x = pdf.GetX + if head == true + pdf.RDMMultiCell(col_widths[i], row_height, column.caption, "T", 'L', 1) + else + pdf.RDMMultiCell(col_widths[i], row_height, column, "T", 'L', 1) + end + max_height = (pdf.GetY - base_y) if (pdf.GetY - base_y) > max_height + pdf.SetXY(col_x + col_widths[i], base_y); + end + return max_height + end + + # Draw lines to close the row (MultiCell border drawing in not uniform) + def issues_to_pdf_draw_borders(pdf, top_x, top_y, lower_y, + id_width, col_widths) + col_x = top_x + id_width + pdf.Line(col_x, top_y, col_x, lower_y) # id right border + col_widths.each do |width| + col_x += width + pdf.Line(col_x, top_y, col_x, lower_y) # columns right border + end + pdf.Line(top_x, top_y, top_x, lower_y) # left border + pdf.Line(top_x, lower_y, col_x, lower_y) # bottom border + end + # Returns a PDF string of a single issue def issue_to_pdf(issue) - pdf = IFPDF.new(current_language) + pdf = ITCPDF.new(current_language) pdf.SetTitle("#{issue.project} - ##{issue.tracker} #{issue.id}") - pdf.AliasNbPages + pdf.alias_nb_pages pdf.footer_date = format_date(Date.today) pdf.AddPage - - pdf.SetFontStyle('B',11) - pdf.Cell(190,10, "#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}") + pdf.SetFontStyle('B',11) + pdf.RDMMultiCell(190,5, + "#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}") pdf.Ln - + y0 = pdf.GetY - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_status) + ":","LT") + pdf.RDMCell(35,5, l(:field_status) + ":","LT") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.status.to_s,"RT") + pdf.RDMCell(60,5, issue.status.to_s,"RT") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_priority) + ":","LT") + pdf.RDMCell(35,5, l(:field_priority) + ":","LT") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.priority.to_s,"RT") + pdf.RDMCell(60,5, issue.priority.to_s,"RT") pdf.Ln - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_author) + ":","L") + pdf.RDMCell(35,5, l(:field_author) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.author.to_s,"R") + pdf.RDMCell(60,5, issue.author.to_s,"R") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_category) + ":","L") + pdf.RDMCell(35,5, l(:field_category) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.category.to_s,"R") - pdf.Ln - + pdf.RDMCell(60,5, issue.category.to_s,"R") + pdf.Ln + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_created_on) + ":","L") + pdf.RDMCell(35,5, l(:field_created_on) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, format_date(issue.created_on),"R") + pdf.RDMCell(60,5, format_date(issue.created_on),"R") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_assigned_to) + ":","L") + pdf.RDMCell(35,5, l(:field_assigned_to) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.assigned_to.to_s,"R") + pdf.RDMCell(60,5, issue.assigned_to.to_s,"R") pdf.Ln - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_updated_on) + ":","LB") + pdf.RDMCell(35,5, l(:field_updated_on) + ":","LB") pdf.SetFontStyle('',9) - pdf.Cell(60,5, format_date(issue.updated_on),"RB") + pdf.RDMCell(60,5, format_date(issue.updated_on),"RB") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_due_date) + ":","LB") + pdf.RDMCell(35,5, l(:field_due_date) + ":","LB") pdf.SetFontStyle('',9) - pdf.Cell(60,5, format_date(issue.due_date),"RB") + pdf.RDMCell(60,5, format_date(issue.due_date),"RB") pdf.Ln - + for custom_value in issue.custom_field_values pdf.SetFontStyle('B',9) - pdf.Cell(35,5, custom_value.custom_field.name + ":","L") + pdf.RDMCell(35,5, custom_value.custom_field.name + ":","L") pdf.SetFontStyle('',9) - pdf.MultiCell(155,5, (show_value custom_value),"R") + pdf.RDMMultiCell(155,5, (show_value custom_value),"R") end - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_subject) + ":","LTB") + pdf.RDMCell(35,5, l(:field_subject) + ":","LT") pdf.SetFontStyle('',9) - pdf.Cell(155,5, issue.subject,"RTB") - pdf.Ln - + pdf.RDMMultiCell(155,5, issue.subject,"RT") + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_description) + ":") + pdf.RDMCell(35,5, l(:field_description) + ":","LT") pdf.SetFontStyle('',9) - pdf.MultiCell(155,5, issue.description.to_s,"BR") - + pdf.RDMMultiCell(155,5, issue.description.to_s,"RT") + pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY) - pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY) + pdf.Line(pdf.GetX, pdf.GetY, pdf.GetX + 190, pdf.GetY) pdf.Ln - - if issue.changesets.any? && User.current.allowed_to?(:view_changesets, issue.project) + + if issue.changesets.any? && + User.current.allowed_to?(:view_changesets, issue.project) pdf.SetFontStyle('B',9) - pdf.Cell(190,5, l(:label_associated_revisions), "B") + pdf.RDMCell(190,5, l(:label_associated_revisions), "B") pdf.Ln for changeset in issue.changesets pdf.SetFontStyle('B',8) - pdf.Cell(190,5, format_time(changeset.committed_on) + " - " + changeset.author.to_s) + pdf.RDMCell(190,5, + format_time(changeset.committed_on) + " - " + changeset.author.to_s) pdf.Ln unless changeset.comments.blank? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, changeset.comments.to_s) - end + pdf.RDMMultiCell(190,5, changeset.comments.to_s) + end pdf.Ln end end - + pdf.SetFontStyle('B',9) - pdf.Cell(190,5, l(:label_history), "B") - pdf.Ln - for journal in issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC") + pdf.RDMCell(190,5, l(:label_history), "B") + pdf.Ln + for journal in issue.journals.find( + :all, :include => [:user, :details], + :order => "#{Journal.table_name}.created_on ASC") pdf.SetFontStyle('B',8) - pdf.Cell(190,5, format_time(journal.created_on) + " - " + journal.user.name) + pdf.RDMCell(190,5, + format_time(journal.created_on) + " - " + journal.user.name) pdf.Ln pdf.SetFontStyle('I',8) for detail in journal.details - pdf.Cell(190,5, "- " + show_detail(detail, true)) - pdf.Ln + pdf.RDMMultiCell(190,5, "- " + show_detail(detail, true)) end if journal.notes? + pdf.Ln unless journal.details.empty? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, journal.notes.to_s) - end + pdf.RDMMultiCell(190,5, journal.notes.to_s) + end pdf.Ln end - + if issue.attachments.any? pdf.SetFontStyle('B',9) - pdf.Cell(190,5, l(:label_attachment_plural), "B") + pdf.RDMCell(190,5, l(:label_attachment_plural), "B") pdf.Ln for attachment in issue.attachments pdf.SetFontStyle('',8) - pdf.Cell(80,5, attachment.filename) - pdf.Cell(20,5, number_to_human_size(attachment.filesize),0,0,"R") - pdf.Cell(25,5, format_date(attachment.created_on),0,0,"R") - pdf.Cell(65,5, attachment.author.name,0,0,"R") + pdf.RDMCell(80,5, attachment.filename) + pdf.RDMCell(20,5, number_to_human_size(attachment.filesize),0,0,"R") + pdf.RDMCell(25,5, format_date(attachment.created_on),0,0,"R") + pdf.RDMCell(65,5, attachment.author.name,0,0,"R") pdf.Ln end end pdf.Output end + class RDMPdfEncoding + include Redmine::I18n + def self.rdm_pdf_iconv(ic, txt) + txt ||= '' + if txt.respond_to?(:force_encoding) + txt.force_encoding('UTF-8') + if l(:general_pdf_encoding).upcase != 'UTF-8' + txt = txt.encode(l(:general_pdf_encoding), :invalid => :replace, + :undef => :replace, :replace => '?') + else + txt = Redmine::CodesetUtil.replace_invalid_utf8(txt) + end + txt.force_encoding('ASCII-8BIT') + else + ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8') + txtar = "" + begin + txtar += ic.iconv(txt) + rescue Iconv::IllegalSequence + txtar += $!.success + txt = '?' + $!.failed[1,$!.failed.length] + retry + rescue + txtar += $!.success + end + txt = txtar + end + txt + end + end end end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/export/pdf.rb --- a/lib/redmine/export/pdf.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/export/pdf.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,72 +1,81 @@ # encoding: utf-8 # # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'iconv' require 'rfpdf/fpdf' -require 'rfpdf/chinese' +require 'fpdf/chinese' +require 'fpdf/japanese' +require 'fpdf/korean' module Redmine module Export module PDF include ActionView::Helpers::TextHelper include ActionView::Helpers::NumberHelper - - class IFPDF < FPDF + + class ITCPDF < TCPDF include Redmine::I18n attr_accessor :footer_date - + def initialize(lang) - super() set_language_if_valid lang - case current_language.to_s.downcase - when 'ko' + pdf_encoding = l(:general_pdf_encoding).upcase + if RUBY_VERSION < '1.9' + @ic = Iconv.new(pdf_encoding, 'UTF-8') + end + super('P', 'mm', 'A4', (pdf_encoding == 'UTF-8'), pdf_encoding) + case pdf_encoding + when 'UTF-8' + @font_for_content = 'FreeSans' + @font_for_footer = 'FreeSans' + when 'CP949' extend(PDF_Korean) AddUHCFont() @font_for_content = 'UHC' - @font_for_footer = 'UHC' - when 'ja' + @font_for_footer = 'UHC' + when 'CP932' extend(PDF_Japanese) AddSJISFont() @font_for_content = 'SJIS' - @font_for_footer = 'SJIS' - when 'zh' + @font_for_footer = 'SJIS' + when 'GB18030' extend(PDF_Chinese) AddGBFont() @font_for_content = 'GB' - @font_for_footer = 'GB' - when 'zh-tw' + @font_for_footer = 'GB' + when 'BIG5' extend(PDF_Chinese) AddBig5Font() @font_for_content = 'Big5' - @font_for_footer = 'Big5' + @font_for_footer = 'Big5' else @font_for_content = 'Arial' - @font_for_footer = 'Helvetica' + @font_for_footer = 'Helvetica' end SetCreator(Redmine::Info.app_name) SetFont(@font_for_content) end - + def SetFontStyle(style, size) SetFont(@font_for_content, style, size) end - + def SetTitle(txt) txt = begin utf16txt = Iconv.conv('UTF-16BE', 'UTF-8', txt) @@ -78,7 +87,7 @@ end || '' super(txt) end - + def textstring(s) # Format a text string if s =~ /^ space_left + pdf.AddPage("L") + base_x = pdf.GetX + base_y = pdf.GetY + end + + # write the cells on page + pdf.RDMCell(col_id_width, row_height, issue.id.to_s, "T", 0, 'C', 1) + issues_to_pdf_write_cells(pdf, col_values, col_width, row_height) + issues_to_pdf_draw_borders(pdf, base_x, base_y, base_y + max_height, col_id_width, col_width) + pdf.SetY(base_y + max_height); end + if issues.size == Setting.issues_export_limit.to_i pdf.SetFontStyle('B',10) - pdf.Cell(0, row_height, '...') + pdf.RDMCell(0, row_height, '...') end pdf.Output end + # Renders MultiCells and returns the maximum height used + def issues_to_pdf_write_cells(pdf, col_values, col_widths, + row_height, head=false) + base_y = pdf.GetY + max_height = row_height + col_values.each_with_index do |column, i| + col_x = pdf.GetX + if head == true + pdf.RDMMultiCell(col_widths[i], row_height, column.caption, "T", 'L', 1) + else + pdf.RDMMultiCell(col_widths[i], row_height, column, "T", 'L', 1) + end + max_height = (pdf.GetY - base_y) if (pdf.GetY - base_y) > max_height + pdf.SetXY(col_x + col_widths[i], base_y); + end + return max_height + end + + # Draw lines to close the row (MultiCell border drawing in not uniform) + def issues_to_pdf_draw_borders(pdf, top_x, top_y, lower_y, + id_width, col_widths) + col_x = top_x + id_width + pdf.Line(col_x, top_y, col_x, lower_y) # id right border + col_widths.each do |width| + col_x += width + pdf.Line(col_x, top_y, col_x, lower_y) # columns right border + end + pdf.Line(top_x, top_y, top_x, lower_y) # left border + pdf.Line(top_x, lower_y, col_x, lower_y) # bottom border + end + # Returns a PDF string of a single issue def issue_to_pdf(issue) - pdf = IFPDF.new(current_language) + pdf = ITCPDF.new(current_language) pdf.SetTitle("#{issue.project} - ##{issue.tracker} #{issue.id}") - pdf.AliasNbPages + pdf.alias_nb_pages pdf.footer_date = format_date(Date.today) pdf.AddPage - - pdf.SetFontStyle('B',11) - pdf.Cell(190,10, "#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}") + pdf.SetFontStyle('B',11) + pdf.RDMMultiCell(190,5, + "#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}") pdf.Ln - + y0 = pdf.GetY - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_status) + ":","LT") + pdf.RDMCell(35,5, l(:field_status) + ":","LT") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.status.to_s,"RT") + pdf.RDMCell(60,5, issue.status.to_s,"RT") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_priority) + ":","LT") + pdf.RDMCell(35,5, l(:field_priority) + ":","LT") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.priority.to_s,"RT") + pdf.RDMCell(60,5, issue.priority.to_s,"RT") pdf.Ln - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_author) + ":","L") + pdf.RDMCell(35,5, l(:field_author) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.author.to_s,"R") + pdf.RDMCell(60,5, issue.author.to_s,"R") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_category) + ":","L") + pdf.RDMCell(35,5, l(:field_category) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.category.to_s,"R") - pdf.Ln - + pdf.RDMCell(60,5, issue.category.to_s,"R") + pdf.Ln + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_created_on) + ":","L") + pdf.RDMCell(35,5, l(:field_created_on) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, format_date(issue.created_on),"R") + pdf.RDMCell(60,5, format_date(issue.created_on),"R") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_assigned_to) + ":","L") + pdf.RDMCell(35,5, l(:field_assigned_to) + ":","L") pdf.SetFontStyle('',9) - pdf.Cell(60,5, issue.assigned_to.to_s,"R") + pdf.RDMCell(60,5, issue.assigned_to.to_s,"R") pdf.Ln - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_updated_on) + ":","LB") + pdf.RDMCell(35,5, l(:field_updated_on) + ":","LB") pdf.SetFontStyle('',9) - pdf.Cell(60,5, format_date(issue.updated_on),"RB") + pdf.RDMCell(60,5, format_date(issue.updated_on),"RB") pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_due_date) + ":","LB") + pdf.RDMCell(35,5, l(:field_due_date) + ":","LB") pdf.SetFontStyle('',9) - pdf.Cell(60,5, format_date(issue.due_date),"RB") + pdf.RDMCell(60,5, format_date(issue.due_date),"RB") pdf.Ln - + for custom_value in issue.custom_field_values pdf.SetFontStyle('B',9) - pdf.Cell(35,5, custom_value.custom_field.name + ":","L") + pdf.RDMCell(35,5, custom_value.custom_field.name + ":","L") pdf.SetFontStyle('',9) - pdf.MultiCell(155,5, (show_value custom_value),"R") + pdf.RDMMultiCell(155,5, (show_value custom_value),"R") end - + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_subject) + ":","LTB") + pdf.RDMCell(35,5, l(:field_subject) + ":","LT") pdf.SetFontStyle('',9) - pdf.Cell(155,5, issue.subject,"RTB") - pdf.Ln - + pdf.RDMMultiCell(155,5, issue.subject,"RT") + pdf.SetFontStyle('B',9) - pdf.Cell(35,5, l(:field_description) + ":") + pdf.RDMCell(35,5, l(:field_description) + ":","LT") pdf.SetFontStyle('',9) - pdf.MultiCell(155,5, issue.description.to_s,"BR") - + pdf.RDMMultiCell(155,5, issue.description.to_s,"RT") + pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY) - pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY) + pdf.Line(pdf.GetX, pdf.GetY, pdf.GetX + 190, pdf.GetY) pdf.Ln - - if issue.changesets.any? && User.current.allowed_to?(:view_changesets, issue.project) + + if issue.changesets.any? && + User.current.allowed_to?(:view_changesets, issue.project) pdf.SetFontStyle('B',9) - pdf.Cell(190,5, l(:label_associated_revisions), "B") + pdf.RDMCell(190,5, l(:label_associated_revisions), "B") pdf.Ln for changeset in issue.changesets pdf.SetFontStyle('B',8) - pdf.Cell(190,5, format_time(changeset.committed_on) + " - " + changeset.author.to_s) + pdf.RDMCell(190,5, + format_time(changeset.committed_on) + " - " + changeset.author.to_s) pdf.Ln unless changeset.comments.blank? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, changeset.comments.to_s) - end + pdf.RDMMultiCell(190,5, changeset.comments.to_s) + end pdf.Ln end end - + pdf.SetFontStyle('B',9) - pdf.Cell(190,5, l(:label_history), "B") - pdf.Ln - for journal in issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC") + pdf.RDMCell(190,5, l(:label_history), "B") + pdf.Ln + for journal in issue.journals.find( + :all, :include => [:user, :details], + :order => "#{Journal.table_name}.created_on ASC") pdf.SetFontStyle('B',8) - pdf.Cell(190,5, format_time(journal.created_on) + " - " + journal.user.name) + pdf.RDMCell(190,5, + format_time(journal.created_on) + " - " + journal.user.name) pdf.Ln pdf.SetFontStyle('I',8) for detail in journal.details - pdf.Cell(190,5, "- " + show_detail(detail, true)) - pdf.Ln + pdf.RDMMultiCell(190,5, "- " + show_detail(detail, true)) end if journal.notes? + pdf.Ln unless journal.details.empty? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, journal.notes.to_s) - end + pdf.RDMMultiCell(190,5, journal.notes.to_s) + end pdf.Ln end - + if issue.attachments.any? pdf.SetFontStyle('B',9) - pdf.Cell(190,5, l(:label_attachment_plural), "B") + pdf.RDMCell(190,5, l(:label_attachment_plural), "B") pdf.Ln for attachment in issue.attachments pdf.SetFontStyle('',8) - pdf.Cell(80,5, attachment.filename) - pdf.Cell(20,5, number_to_human_size(attachment.filesize),0,0,"R") - pdf.Cell(25,5, format_date(attachment.created_on),0,0,"R") - pdf.Cell(65,5, attachment.author.name,0,0,"R") + pdf.RDMCell(80,5, attachment.filename) + pdf.RDMCell(20,5, number_to_human_size(attachment.filesize),0,0,"R") + pdf.RDMCell(25,5, format_date(attachment.created_on),0,0,"R") + pdf.RDMCell(65,5, attachment.author.name,0,0,"R") pdf.Ln end end pdf.Output end + class RDMPdfEncoding + include Redmine::I18n + def self.rdm_pdf_iconv(ic, txt) + txt ||= '' + if txt.respond_to?(:force_encoding) + txt.force_encoding('UTF-8') + if l(:general_pdf_encoding).upcase != 'UTF-8' + txt = txt.encode(l(:general_pdf_encoding), :invalid => :replace, + :undef => :replace, :replace => '?') + else + txt = Redmine::CodesetUtil.replace_invalid_utf8(txt) + end + txt.force_encoding('ASCII-8BIT') + else + ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8') + txtar = "" + begin + txtar += ic.iconv(txt) + rescue Iconv::IllegalSequence + txtar += $!.success + txt = '?' + $!.failed[1,$!.failed.length] + retry + rescue + txtar += $!.success + end + txt = txtar + end + txt + end + end end end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/helpers/.svn/all-wcprops --- a/lib/redmine/helpers/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/helpers/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,23 +1,17 @@ K 25 svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4968/trunk/lib/redmine/helpers +V 58 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/helpers END gantt.rb K 25 svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4968/trunk/lib/redmine/helpers/gantt.rb -END -diff.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4953/trunk/lib/redmine/helpers/diff.rb +V 67 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/helpers/gantt.rb END calendar.rb K 25 svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3166/trunk/lib/redmine/helpers/calendar.rb +V 70 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/helpers/calendar.rb END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/helpers/.svn/entries --- a/lib/redmine/helpers/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/helpers/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/helpers +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/helpers http://redmine.rubyforge.org/svn -2011-02-28T20:23:28.847227Z -4968 -jplang +2011-05-09T11:12:27.265905Z +5720 +tmaruyama @@ -32,11 +32,11 @@ -2011-03-03T11:40:18.000000Z -b06b1d003a56093679e3004b619b0e04 -2011-02-28T20:23:28.847227Z -4968 -jplang +2011-06-06T13:20:53.000000Z +111af23362cad335d5d23c03cc7668d1 +2011-05-09T11:12:27.265905Z +5720 +tmaruyama has-props @@ -58,7 +58,7 @@ -32380 +31709 diff.rb file @@ -66,7 +66,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z a3487dfca2baab10aacea141b7c0fc5f 2011-02-27T12:50:47.369941Z 4953 @@ -100,11 +100,11 @@ -2011-03-03T11:05:14.000000Z -0a7d81755cf7c1519d4b4c1d84712139 -2009-12-13T04:06:55.726600Z -3166 -edavis10 +2011-06-06T13:20:53.000000Z +4e48abe08914d8b6e345e9752257a603 +2011-03-27T15:43:26.269165Z +5228 +jplang has-props @@ -126,5 +126,5 @@ -2733 +2787 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/helpers/.svn/text-base/calendar.rb.svn-base --- a/lib/redmine/helpers/.svn/text-base/calendar.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/helpers/.svn/text-base/calendar.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -68,6 +68,8 @@ case Setting.start_of_week.to_i when 1 @first_dow ||= (1 - 1)%7 + 1 + when 6 + @first_dow ||= (6 - 1)%7 + 1 when 7 @first_dow ||= (7 - 1)%7 + 1 else diff -r adc8466df404 -r 753f1380d6bc lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base --- a/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -38,10 +38,10 @@ attr_accessor :query attr_accessor :project attr_accessor :view - + def initialize(options={}) options = options.dup - + if options[:year] && options[:year].to_i >0 @year_from = options[:year].to_i if options[:month] && options[:month].to_i >=1 && options[:month].to_i <= 12 @@ -53,27 +53,27 @@ @month_from ||= Date.today.month @year_from ||= Date.today.year end - + zoom = (options[:zoom] || User.current.pref[:gantt_zoom]).to_i - @zoom = (zoom > 0 && zoom < 5) ? zoom : 2 + @zoom = (zoom > 0 && zoom < 5) ? zoom : 2 months = (options[:months] || User.current.pref[:gantt_months]).to_i @months = (months > 0 && months < 25) ? months : 6 - + # Save gantt parameters as user preference (zoom and months count) if (User.current.logged? && (@zoom != User.current.pref[:gantt_zoom] || @months != User.current.pref[:gantt_months])) User.current.pref[:gantt_zoom], User.current.pref[:gantt_months] = @zoom, @months User.current.preference.save end - + @date_from = Date.civil(@year_from, @month_from, 1) @date_to = (@date_from >> @months) - 1 - + @subjects = '' @lines = '' @number_of_rows = nil - + @issue_ancestors = [] - + @truncated = false if options.has_key?(:max_rows) @max_rows = options[:max_rows] @@ -85,61 +85,35 @@ def common_params { :controller => 'gantts', :action => 'show', :project_id => @project } end - + def params common_params.merge({ :zoom => zoom, :year => year_from, :month => month_from, :months => months }) end - + def params_previous common_params.merge({:year => (date_from << months).year, :month => (date_from << months).month, :zoom => zoom, :months => months }) end - + def params_next common_params.merge({:year => (date_from >> months).year, :month => (date_from >> months).month, :zoom => zoom, :months => months }) end - ### Extracted from the HTML view/helpers # Returns the number of rows that will be rendered on the Gantt chart def number_of_rows return @number_of_rows if @number_of_rows - - rows = if @project - number_of_rows_on_project(@project) - else - Project.roots.visible.has_module('issue_tracking').inject(0) do |total, project| - total += number_of_rows_on_project(project) - end - end - + + rows = projects.inject(0) {|total, p| total += number_of_rows_on_project(p)} rows > @max_rows ? @max_rows : rows end # Returns the number of rows that will be used to list a project on # the Gantt chart. This will recurse for each subproject. def number_of_rows_on_project(project) - # Remove the project requirement for Versions because it will - # restrict issues to only be on the current project. This - # ends up missing issues which are assigned to shared versions. - @query.project = nil if @query.project + return 0 unless projects.include?(project) - # One Root project count = 1 - # Issues without a Version - count += project.issues.for_gantt.without_version.with_query(@query).count - - # Versions - count += project.versions.count - - # Issues on the Versions - project.versions.each do |version| - count += version.fixed_issues.for_gantt.with_query(@query).count - end - - # Subprojects - project.children.visible.has_module('issue_tracking').each do |subproject| - count += number_of_rows_on_project(subproject) - end - + count += project_issues(project).size + count += project_versions(project).size count end @@ -154,96 +128,119 @@ render(options.merge(:only => :lines)) unless @lines_rendered @lines end - + + # Returns issues that will be rendered + def issues + @issues ||= @query.issues( + :include => [:assigned_to, :tracker, :priority, :category, :fixed_version], + :order => "#{Project.table_name}.lft ASC, #{Issue.table_name}.id ASC", + :limit => @max_rows + ) + end + + # Return all the project nodes that will be displayed + def projects + return @projects if @projects + + ids = issues.collect(&:project).uniq.collect(&:id) + if ids.any? + # All issues projects and their visible ancestors + @projects = Project.visible.all( + :joins => "LEFT JOIN #{Project.table_name} child ON #{Project.table_name}.lft <= child.lft AND #{Project.table_name}.rgt >= child.rgt", + :conditions => ["child.id IN (?)", ids], + :order => "#{Project.table_name}.lft ASC" + ).uniq + else + @projects = [] + end + end + + # Returns the issues that belong to +project+ + def project_issues(project) + @issues_by_project ||= issues.group_by(&:project) + @issues_by_project[project] || [] + end + + # Returns the distinct versions of the issues that belong to +project+ + def project_versions(project) + project_issues(project).collect(&:fixed_version).compact.uniq + end + + # Returns the issues that belong to +project+ and are assigned to +version+ + def version_issues(project, version) + project_issues(project).select {|issue| issue.fixed_version == version} + end + def render(options={}) - options = {:indent => 4, :render => :subject, :format => :html}.merge(options) - + options = {:top => 0, :top_increment => 20, :indent_increment => 20, :render => :subject, :format => :html}.merge(options) + indent = options[:indent] || 4 + @subjects = '' unless options[:only] == :lines @lines = '' unless options[:only] == :subjects @number_of_rows = 0 - - if @project - render_project(@project, options) - else - Project.roots.visible.has_module('issue_tracking').each do |project| - render_project(project, options) - break if abort? - end + + Project.project_tree(projects) do |project, level| + options[:indent] = indent + level * options[:indent_increment] + render_project(project, options) + break if abort? end - + @subjects_rendered = true unless options[:only] == :lines @lines_rendered = true unless options[:only] == :subjects - + render_end(options) end def render_project(project, options={}) - options[:top] = 0 unless options.key? :top - options[:indent_increment] = 20 unless options.key? :indent_increment - options[:top_increment] = 20 unless options.key? :top_increment - subject_for_project(project, options) unless options[:only] == :lines line_for_project(project, options) unless options[:only] == :subjects - + options[:top] += options[:top_increment] options[:indent] += options[:indent_increment] @number_of_rows += 1 return if abort? - - # Second, Issues without a version - issues = project.issues.for_gantt.without_version.with_query(@query).all(:limit => current_limit) + + issues = project_issues(project).select {|i| i.fixed_version.nil?} sort_issues!(issues) if issues render_issues(issues, options) return if abort? end - # Third, Versions - project.versions.sort.each do |version| - render_version(version, options) - return if abort? + versions = project_versions(project) + versions.each do |version| + render_version(project, version, options) end - # Fourth, subprojects - project.children.visible.has_module('issue_tracking').each do |project| - render_project(project, options) - return if abort? - end unless project.leaf? - # Remove indent to hit the next sibling options[:indent] -= options[:indent_increment] end def render_issues(issues, options={}) @issue_ancestors = [] - + issues.each do |i| subject_for_issue(i, options) unless options[:only] == :lines line_for_issue(i, options) unless options[:only] == :subjects - + options[:top] += options[:top_increment] @number_of_rows += 1 break if abort? end - + options[:indent] -= (options[:indent_increment] * @issue_ancestors.size) end - def render_version(version, options={}) + def render_version(project, version, options={}) # Version header subject_for_version(version, options) unless options[:only] == :lines line_for_version(version, options) unless options[:only] == :subjects - + options[:top] += options[:top_increment] @number_of_rows += 1 return if abort? - - # Remove the project requirement for Versions because it will - # restrict issues to only be on the current project. This - # ends up missing issues which are assigned to shared versions. - @query.project = nil if @query.project - - issues = version.fixed_issues.for_gantt.with_query(@query).all(:limit => current_limit) + + issues = version_issues(project, version) if issues sort_issues!(issues) # Indent issues @@ -252,10 +249,10 @@ options[:indent] -= options[:indent_increment] end end - + def render_end(options={}) case options[:format] - when :pdf + when :pdf options[:pdf].Line(15, options[:top], PDF::TotalWidth, options[:top]) end end @@ -280,10 +277,10 @@ if project.is_a?(Project) && project.start_date && project.due_date options[:zoom] ||= 1 options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom] - + coords = coordinates(project.start_date, project.due_date, nil, options[:zoom]) label = h(project) - + case options[:format] when :html html_task(options, coords, :css => "project task", :label => label, :markers => true) @@ -318,7 +315,7 @@ if version.is_a?(Version) && version.start_date && version.due_date options[:zoom] ||= 1 options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom] - + coords = coordinates(version.start_date, version.due_date, version.completed_pourcent, options[:zoom]) label = "#{h version } #{h version.completed_pourcent.to_i.to_s}%" label = h("#{version.project} -") + label unless @project && @project == version.project @@ -342,14 +339,14 @@ @issue_ancestors.pop options[:indent] -= options[:indent_increment] end - + output = case options[:format] when :html css_classes = '' css_classes << ' issue-overdue' if issue.overdue? css_classes << ' issue-behind-schedule' if issue.behind_schedule? css_classes << ' icon icon-issue' unless Setting.gravatar_enabled? && issue.assigned_to - + subject = "" if issue.assigned_to.present? assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name @@ -369,7 +366,7 @@ @issue_ancestors << issue options[:indent] += options[:indent_increment] end - + output end @@ -378,7 +375,7 @@ if issue.is_a?(Issue) && issue.due_before coords = coordinates(issue.start_date, issue.due_before, issue.done_ratio, options[:zoom]) label = "#{ issue.status.name } #{ issue.done_ratio }%" - + case options[:format] when :html html_task(options, coords, :css => "task " + (issue.leaf? ? 'leaf' : 'parent'), :label => label, :issue => issue, :markers => !issue.leaf?) @@ -396,31 +393,31 @@ # Generates a gantt image # Only defined if RMagick is avalaible def to_image(format='PNG') - date_to = (@date_from >> @months)-1 + date_to = (@date_from >> @months)-1 show_weeks = @zoom > 1 show_days = @zoom > 2 - + subject_width = 400 - header_heigth = 18 + header_height = 18 # width of one day in pixels zoom = @zoom*2 g_width = (@date_to - @date_from + 1)*zoom g_height = 20 * number_of_rows + 30 - headers_heigth = (show_weeks ? 2*header_heigth : header_heigth) - height = g_height + headers_heigth - + headers_height = (show_weeks ? 2*header_height : header_height) + height = g_height + headers_height + imgl = Magick::ImageList.new imgl.new_image(subject_width+g_width+1, height) gc = Magick::Draw.new - + # Subjects gc.stroke('transparent') - subjects(:image => gc, :top => (headers_heigth + 20), :indent => 4, :format => :image) - + subjects(:image => gc, :top => (headers_height + 20), :indent => 4, :format => :image) + # Months headers month_f = @date_from left = subject_width - @months.times do + @months.times do width = ((month_f >> 1) - month_f) * zoom gc.fill('white') gc.stroke('grey') @@ -433,11 +430,11 @@ left = left + width month_f = month_f >> 1 end - + # Weeks headers if show_weeks left = subject_width - height = header_heigth + height = header_height if @date_from.cwday == 1 # date_from is monday week_f = date_from @@ -448,7 +445,7 @@ gc.fill('white') gc.stroke('grey') gc.stroke_width(1) - gc.rectangle(left, header_heigth, left + width, 2*header_heigth + g_height-1) + gc.rectangle(left, header_height, left + width, 2*header_height + g_height-1) left = left + width end while week_f <= date_to @@ -456,111 +453,111 @@ gc.fill('white') gc.stroke('grey') gc.stroke_width(1) - gc.rectangle(left.round, header_heigth, left.round + width, 2*header_heigth + g_height-1) + gc.rectangle(left.round, header_height, left.round + width, 2*header_height + g_height-1) gc.fill('black') gc.stroke('transparent') gc.stroke_width(1) - gc.text(left.round + 2, header_heigth + 14, week_f.cweek.to_s) + gc.text(left.round + 2, header_height + 14, week_f.cweek.to_s) left = left + width week_f = week_f+7 end end - + # Days details (week-end in grey) if show_days left = subject_width - height = g_height + header_heigth - 1 + height = g_height + header_height - 1 wday = @date_from.cwday - (date_to - @date_from + 1).to_i.times do + (date_to - @date_from + 1).to_i.times do width = zoom gc.fill(wday == 6 || wday == 7 ? '#eee' : 'white') gc.stroke('#ddd') gc.stroke_width(1) - gc.rectangle(left, 2*header_heigth, left + width, 2*header_heigth + g_height-1) + gc.rectangle(left, 2*header_height, left + width, 2*header_height + g_height-1) left = left + width wday = wday + 1 wday = 1 if wday > 7 end end - + # border gc.fill('transparent') gc.stroke('grey') gc.stroke_width(1) - gc.rectangle(0, 0, subject_width+g_width, headers_heigth) + gc.rectangle(0, 0, subject_width+g_width, headers_height) gc.stroke('black') - gc.rectangle(0, 0, subject_width+g_width, g_height+ headers_heigth-1) - + gc.rectangle(0, 0, subject_width+g_width, g_height+ headers_height-1) + # content - top = headers_heigth + 20 + top = headers_height + 20 gc.stroke('transparent') lines(:image => gc, :top => top, :zoom => zoom, :subject_width => subject_width, :format => :image) - + # today red line if Date.today >= @date_from and Date.today <= date_to gc.stroke('red') x = (Date.today-@date_from+1)*zoom + subject_width - gc.line(x, headers_heigth, x, headers_heigth + g_height-1) - end - + gc.line(x, headers_height, x, headers_height + g_height-1) + end + gc.draw(imgl) imgl.format = format imgl.to_blob end if Object.const_defined?(:Magick) def to_pdf - pdf = ::Redmine::Export::PDF::IFPDF.new(current_language) + pdf = ::Redmine::Export::PDF::ITCPDF.new(current_language) pdf.SetTitle("#{l(:label_gantt)} #{project}") - pdf.AliasNbPages + pdf.alias_nb_pages pdf.footer_date = format_date(Date.today) pdf.AddPage("L") pdf.SetFontStyle('B',12) pdf.SetX(15) - pdf.Cell(PDF::LeftPaneWidth, 20, project.to_s) + pdf.RDMCell(PDF::LeftPaneWidth, 20, project.to_s) pdf.Ln pdf.SetFontStyle('B',9) - + subject_width = PDF::LeftPaneWidth - header_heigth = 5 - - headers_heigth = header_heigth + header_height = 5 + + headers_height = header_height show_weeks = false show_days = false - + if self.months < 7 show_weeks = true - headers_heigth = 2*header_heigth + headers_height = 2*header_height if self.months < 3 show_days = true - headers_heigth = 3*header_heigth + headers_height = 3*header_height end end - + g_width = PDF.right_pane_width zoom = (g_width) / (self.date_to - self.date_from + 1) g_height = 120 - t_height = g_height + headers_heigth - + t_height = g_height + headers_height + y_start = pdf.GetY - + # Months headers month_f = self.date_from left = subject_width - height = header_heigth - self.months.times do - width = ((month_f >> 1) - month_f) * zoom + height = header_height + self.months.times do + width = ((month_f >> 1) - month_f) * zoom pdf.SetY(y_start) pdf.SetX(left) - pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C") + pdf.RDMCell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C") left = left + width month_f = month_f >> 1 - end - + end + # Weeks headers if show_weeks left = subject_width - height = header_heigth + height = header_height if self.date_from.cwday == 1 # self.date_from is monday week_f = self.date_from @@ -568,44 +565,44 @@ # find next monday after self.date_from week_f = self.date_from + (7 - self.date_from.cwday + 1) width = (7 - self.date_from.cwday + 1) * zoom-1 - pdf.SetY(y_start + header_heigth) + pdf.SetY(y_start + header_height) pdf.SetX(left) - pdf.Cell(width + 1, height, "", "LTR") + pdf.RDMCell(width + 1, height, "", "LTR") left = left + width+1 end while week_f <= self.date_to width = (week_f + 6 <= self.date_to) ? 7 * zoom : (self.date_to - week_f + 1) * zoom - pdf.SetY(y_start + header_heigth) + pdf.SetY(y_start + header_height) pdf.SetX(left) - pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C") + pdf.RDMCell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C") left = left + width week_f = week_f+7 end end - + # Days headers if show_days left = subject_width - height = header_heigth + height = header_height wday = self.date_from.cwday pdf.SetFontStyle('B',7) - (self.date_to - self.date_from + 1).to_i.times do + (self.date_to - self.date_from + 1).to_i.times do width = zoom - pdf.SetY(y_start + 2 * header_heigth) + pdf.SetY(y_start + 2 * header_height) pdf.SetX(left) - pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C") + pdf.RDMCell(width, height, day_name(wday).first, "LTR", 0, "C") left = left + width wday = wday + 1 wday = 1 if wday > 7 end end - + pdf.SetY(y_start) pdf.SetX(15) - pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1) - + pdf.RDMCell(subject_width+g_width-15, headers_height, "", 1) + # Tasks - top = headers_heigth + y_start + top = headers_height + y_start options = { :top => top, :zoom => zoom, @@ -620,12 +617,12 @@ render(options) pdf.Output end - + private - + def coordinates(start_date, end_date, progress, zoom=nil) zoom ||= @zoom - + coords = {} if start_date && end_date && start_date < self.date_to && end_date > self.date_from if start_date > self.date_from @@ -640,17 +637,17 @@ else coords[:bar_end] = self.date_to - self.date_from + 1 end - + if progress - progress_date = start_date + (end_date - start_date) * (progress / 100.0) + progress_date = start_date + (end_date - start_date + 1) * (progress / 100.0) if progress_date > self.date_from && progress_date > start_date if progress_date < self.date_to - coords[:bar_progress_end] = progress_date - self.date_from + 1 + coords[:bar_progress_end] = progress_date - self.date_from else coords[:bar_progress_end] = self.date_to - self.date_from + 1 end end - + if progress_date < Date.today late_date = [Date.today, end_date].min if late_date > self.date_from && late_date > start_date @@ -663,7 +660,7 @@ end end end - + # Transforms dates into pixels witdh coords.keys.each do |key| coords[key] = (coords[key] * zoom).floor @@ -675,7 +672,7 @@ def sort_issues!(issues) issues.sort! { |a, b| gantt_issue_compare(a, b, issues) } end - + # TODO: top level issues should be sorted by start date def gantt_issue_compare(x, y, issues) if x.root_id == y.root_id @@ -684,7 +681,7 @@ x.root_id <=> y.root_id end end - + def current_limit if @max_rows @max_rows - @number_of_rows @@ -692,13 +689,13 @@ nil end end - + def abort? if @max_rows && @number_of_rows >= @max_rows @truncated = true end end - + def pdf_new_page?(options) if options[:top] > 180 options[:pdf].Line(15, options[:top], PDF::TotalWidth, options[:top]) @@ -707,41 +704,41 @@ options[:pdf].Line(15, options[:top] - 0.1, PDF::TotalWidth, options[:top] - 0.1) end end - + def html_subject(params, subject, options={}) style = "position: absolute;top:#{params[:top]}px;left:#{params[:indent]}px;" style << "width:#{params[:subject_width] - params[:indent]}px;" if params[:subject_width] - + output = view.content_tag 'div', subject, :class => options[:css], :style => style, :title => options[:title] @subjects << output output end - + def pdf_subject(params, subject, options={}) params[:pdf].SetY(params[:top]) params[:pdf].SetX(15) - + char_limit = PDF::MaxCharactorsForSubject - params[:indent] - params[:pdf].Cell(params[:subject_width]-15, 5, (" " * params[:indent]) + subject.to_s.sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") - + params[:pdf].RDMCell(params[:subject_width]-15, 5, (" " * params[:indent]) + subject.to_s.sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") + params[:pdf].SetY(params[:top]) params[:pdf].SetX(params[:subject_width]) - params[:pdf].Cell(params[:g_width], 5, "", "LR") + params[:pdf].RDMCell(params[:g_width], 5, "", "LR") end - + def image_subject(params, subject, options={}) params[:image].fill('black') params[:image].stroke('transparent') params[:image].stroke_width(1) params[:image].text(params[:indent], params[:top] + 2, subject) end - + def html_task(params, coords, options={}) output = '' # Renders the task bar, with progress and late if coords[:bar_start] && coords[:bar_end] output << "
     
    " - + if coords[:bar_late_end] output << "
     
    " end @@ -774,28 +771,28 @@ @lines << output output end - + def pdf_task(params, coords, options={}) height = options[:height] || 2 - + # Renders the task bar, with progress and late if coords[:bar_start] && coords[:bar_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(200,200,200) - params[:pdf].Cell(coords[:bar_end] - coords[:bar_start], height, "", 0, 0, "", 1) - + params[:pdf].RDMCell(coords[:bar_end] - coords[:bar_start], height, "", 0, 0, "", 1) + if coords[:bar_late_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(255,100,100) - params[:pdf].Cell(coords[:bar_late_end] - coords[:bar_start], height, "", 0, 0, "", 1) + params[:pdf].RDMCell(coords[:bar_late_end] - coords[:bar_start], height, "", 0, 0, "", 1) end if coords[:bar_progress_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(90,200,90) - params[:pdf].Cell(coords[:bar_progress_end] - coords[:bar_start], height, "", 0, 0, "", 1) + params[:pdf].RDMCell(coords[:bar_progress_end] - coords[:bar_start], height, "", 0, 0, "", 1) end end # Renders the markers @@ -804,30 +801,30 @@ params[:pdf].SetY(params[:top] + 1) params[:pdf].SetX(params[:subject_width] + coords[:start] - 1) params[:pdf].SetFillColor(50,50,200) - params[:pdf].Cell(2, 2, "", 0, 0, "", 1) + params[:pdf].RDMCell(2, 2, "", 0, 0, "", 1) end if coords[:end] params[:pdf].SetY(params[:top] + 1) params[:pdf].SetX(params[:subject_width] + coords[:end] - 1) params[:pdf].SetFillColor(50,50,200) - params[:pdf].Cell(2, 2, "", 0, 0, "", 1) + params[:pdf].RDMCell(2, 2, "", 0, 0, "", 1) end end # Renders the label on the right if options[:label] params[:pdf].SetX(params[:subject_width] + (coords[:bar_end] || 0) + 5) - params[:pdf].Cell(30, 2, options[:label]) + params[:pdf].RDMCell(30, 2, options[:label]) end end def image_task(params, coords, options={}) height = options[:height] || 6 - + # Renders the task bar, with progress and late if coords[:bar_start] && coords[:bar_end] params[:image].fill('#aaa') params[:image].rectangle(params[:subject_width] + coords[:bar_start], params[:top], params[:subject_width] + coords[:bar_end], params[:top] - height) - + if coords[:bar_late_end] params[:image].fill('#f66') params[:image].rectangle(params[:subject_width] + coords[:bar_start], params[:top], params[:subject_width] + coords[:bar_late_end], params[:top] - height) diff -r adc8466df404 -r 753f1380d6bc lib/redmine/helpers/calendar.rb --- a/lib/redmine/helpers/calendar.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/helpers/calendar.rb Mon Jun 06 14:41:04 2011 +0100 @@ -68,6 +68,8 @@ case Setting.start_of_week.to_i when 1 @first_dow ||= (1 - 1)%7 + 1 + when 6 + @first_dow ||= (6 - 1)%7 + 1 when 7 @first_dow ||= (7 - 1)%7 + 1 else diff -r adc8466df404 -r 753f1380d6bc lib/redmine/helpers/gantt.rb --- a/lib/redmine/helpers/gantt.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/helpers/gantt.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -38,10 +38,10 @@ attr_accessor :query attr_accessor :project attr_accessor :view - + def initialize(options={}) options = options.dup - + if options[:year] && options[:year].to_i >0 @year_from = options[:year].to_i if options[:month] && options[:month].to_i >=1 && options[:month].to_i <= 12 @@ -53,27 +53,27 @@ @month_from ||= Date.today.month @year_from ||= Date.today.year end - + zoom = (options[:zoom] || User.current.pref[:gantt_zoom]).to_i - @zoom = (zoom > 0 && zoom < 5) ? zoom : 2 + @zoom = (zoom > 0 && zoom < 5) ? zoom : 2 months = (options[:months] || User.current.pref[:gantt_months]).to_i @months = (months > 0 && months < 25) ? months : 6 - + # Save gantt parameters as user preference (zoom and months count) if (User.current.logged? && (@zoom != User.current.pref[:gantt_zoom] || @months != User.current.pref[:gantt_months])) User.current.pref[:gantt_zoom], User.current.pref[:gantt_months] = @zoom, @months User.current.preference.save end - + @date_from = Date.civil(@year_from, @month_from, 1) @date_to = (@date_from >> @months) - 1 - + @subjects = '' @lines = '' @number_of_rows = nil - + @issue_ancestors = [] - + @truncated = false if options.has_key?(:max_rows) @max_rows = options[:max_rows] @@ -85,61 +85,35 @@ def common_params { :controller => 'gantts', :action => 'show', :project_id => @project } end - + def params common_params.merge({ :zoom => zoom, :year => year_from, :month => month_from, :months => months }) end - + def params_previous common_params.merge({:year => (date_from << months).year, :month => (date_from << months).month, :zoom => zoom, :months => months }) end - + def params_next common_params.merge({:year => (date_from >> months).year, :month => (date_from >> months).month, :zoom => zoom, :months => months }) end - ### Extracted from the HTML view/helpers # Returns the number of rows that will be rendered on the Gantt chart def number_of_rows return @number_of_rows if @number_of_rows - - rows = if @project - number_of_rows_on_project(@project) - else - Project.roots.visible.has_module('issue_tracking').inject(0) do |total, project| - total += number_of_rows_on_project(project) - end - end - + + rows = projects.inject(0) {|total, p| total += number_of_rows_on_project(p)} rows > @max_rows ? @max_rows : rows end # Returns the number of rows that will be used to list a project on # the Gantt chart. This will recurse for each subproject. def number_of_rows_on_project(project) - # Remove the project requirement for Versions because it will - # restrict issues to only be on the current project. This - # ends up missing issues which are assigned to shared versions. - @query.project = nil if @query.project + return 0 unless projects.include?(project) - # One Root project count = 1 - # Issues without a Version - count += project.issues.for_gantt.without_version.with_query(@query).count - - # Versions - count += project.versions.count - - # Issues on the Versions - project.versions.each do |version| - count += version.fixed_issues.for_gantt.with_query(@query).count - end - - # Subprojects - project.children.visible.has_module('issue_tracking').each do |subproject| - count += number_of_rows_on_project(subproject) - end - + count += project_issues(project).size + count += project_versions(project).size count end @@ -154,96 +128,119 @@ render(options.merge(:only => :lines)) unless @lines_rendered @lines end - + + # Returns issues that will be rendered + def issues + @issues ||= @query.issues( + :include => [:assigned_to, :tracker, :priority, :category, :fixed_version], + :order => "#{Project.table_name}.lft ASC, #{Issue.table_name}.id ASC", + :limit => @max_rows + ) + end + + # Return all the project nodes that will be displayed + def projects + return @projects if @projects + + ids = issues.collect(&:project).uniq.collect(&:id) + if ids.any? + # All issues projects and their visible ancestors + @projects = Project.visible.all( + :joins => "LEFT JOIN #{Project.table_name} child ON #{Project.table_name}.lft <= child.lft AND #{Project.table_name}.rgt >= child.rgt", + :conditions => ["child.id IN (?)", ids], + :order => "#{Project.table_name}.lft ASC" + ).uniq + else + @projects = [] + end + end + + # Returns the issues that belong to +project+ + def project_issues(project) + @issues_by_project ||= issues.group_by(&:project) + @issues_by_project[project] || [] + end + + # Returns the distinct versions of the issues that belong to +project+ + def project_versions(project) + project_issues(project).collect(&:fixed_version).compact.uniq + end + + # Returns the issues that belong to +project+ and are assigned to +version+ + def version_issues(project, version) + project_issues(project).select {|issue| issue.fixed_version == version} + end + def render(options={}) - options = {:indent => 4, :render => :subject, :format => :html}.merge(options) - + options = {:top => 0, :top_increment => 20, :indent_increment => 20, :render => :subject, :format => :html}.merge(options) + indent = options[:indent] || 4 + @subjects = '' unless options[:only] == :lines @lines = '' unless options[:only] == :subjects @number_of_rows = 0 - - if @project - render_project(@project, options) - else - Project.roots.visible.has_module('issue_tracking').each do |project| - render_project(project, options) - break if abort? - end + + Project.project_tree(projects) do |project, level| + options[:indent] = indent + level * options[:indent_increment] + render_project(project, options) + break if abort? end - + @subjects_rendered = true unless options[:only] == :lines @lines_rendered = true unless options[:only] == :subjects - + render_end(options) end def render_project(project, options={}) - options[:top] = 0 unless options.key? :top - options[:indent_increment] = 20 unless options.key? :indent_increment - options[:top_increment] = 20 unless options.key? :top_increment - subject_for_project(project, options) unless options[:only] == :lines line_for_project(project, options) unless options[:only] == :subjects - + options[:top] += options[:top_increment] options[:indent] += options[:indent_increment] @number_of_rows += 1 return if abort? - - # Second, Issues without a version - issues = project.issues.for_gantt.without_version.with_query(@query).all(:limit => current_limit) + + issues = project_issues(project).select {|i| i.fixed_version.nil?} sort_issues!(issues) if issues render_issues(issues, options) return if abort? end - # Third, Versions - project.versions.sort.each do |version| - render_version(version, options) - return if abort? + versions = project_versions(project) + versions.each do |version| + render_version(project, version, options) end - # Fourth, subprojects - project.children.visible.has_module('issue_tracking').each do |project| - render_project(project, options) - return if abort? - end unless project.leaf? - # Remove indent to hit the next sibling options[:indent] -= options[:indent_increment] end def render_issues(issues, options={}) @issue_ancestors = [] - + issues.each do |i| subject_for_issue(i, options) unless options[:only] == :lines line_for_issue(i, options) unless options[:only] == :subjects - + options[:top] += options[:top_increment] @number_of_rows += 1 break if abort? end - + options[:indent] -= (options[:indent_increment] * @issue_ancestors.size) end - def render_version(version, options={}) + def render_version(project, version, options={}) # Version header subject_for_version(version, options) unless options[:only] == :lines line_for_version(version, options) unless options[:only] == :subjects - + options[:top] += options[:top_increment] @number_of_rows += 1 return if abort? - - # Remove the project requirement for Versions because it will - # restrict issues to only be on the current project. This - # ends up missing issues which are assigned to shared versions. - @query.project = nil if @query.project - - issues = version.fixed_issues.for_gantt.with_query(@query).all(:limit => current_limit) + + issues = version_issues(project, version) if issues sort_issues!(issues) # Indent issues @@ -252,10 +249,10 @@ options[:indent] -= options[:indent_increment] end end - + def render_end(options={}) case options[:format] - when :pdf + when :pdf options[:pdf].Line(15, options[:top], PDF::TotalWidth, options[:top]) end end @@ -280,10 +277,10 @@ if project.is_a?(Project) && project.start_date && project.due_date options[:zoom] ||= 1 options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom] - + coords = coordinates(project.start_date, project.due_date, nil, options[:zoom]) label = h(project) - + case options[:format] when :html html_task(options, coords, :css => "project task", :label => label, :markers => true) @@ -318,7 +315,7 @@ if version.is_a?(Version) && version.start_date && version.due_date options[:zoom] ||= 1 options[:g_width] ||= (self.date_to - self.date_from + 1) * options[:zoom] - + coords = coordinates(version.start_date, version.due_date, version.completed_pourcent, options[:zoom]) label = "#{h version } #{h version.completed_pourcent.to_i.to_s}%" label = h("#{version.project} -") + label unless @project && @project == version.project @@ -342,14 +339,14 @@ @issue_ancestors.pop options[:indent] -= options[:indent_increment] end - + output = case options[:format] when :html css_classes = '' css_classes << ' issue-overdue' if issue.overdue? css_classes << ' issue-behind-schedule' if issue.behind_schedule? css_classes << ' icon icon-issue' unless Setting.gravatar_enabled? && issue.assigned_to - + subject = "" if issue.assigned_to.present? assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name @@ -369,7 +366,7 @@ @issue_ancestors << issue options[:indent] += options[:indent_increment] end - + output end @@ -378,7 +375,7 @@ if issue.is_a?(Issue) && issue.due_before coords = coordinates(issue.start_date, issue.due_before, issue.done_ratio, options[:zoom]) label = "#{ issue.status.name } #{ issue.done_ratio }%" - + case options[:format] when :html html_task(options, coords, :css => "task " + (issue.leaf? ? 'leaf' : 'parent'), :label => label, :issue => issue, :markers => !issue.leaf?) @@ -396,31 +393,31 @@ # Generates a gantt image # Only defined if RMagick is avalaible def to_image(format='PNG') - date_to = (@date_from >> @months)-1 + date_to = (@date_from >> @months)-1 show_weeks = @zoom > 1 show_days = @zoom > 2 - + subject_width = 400 - header_heigth = 18 + header_height = 18 # width of one day in pixels zoom = @zoom*2 g_width = (@date_to - @date_from + 1)*zoom g_height = 20 * number_of_rows + 30 - headers_heigth = (show_weeks ? 2*header_heigth : header_heigth) - height = g_height + headers_heigth - + headers_height = (show_weeks ? 2*header_height : header_height) + height = g_height + headers_height + imgl = Magick::ImageList.new imgl.new_image(subject_width+g_width+1, height) gc = Magick::Draw.new - + # Subjects gc.stroke('transparent') - subjects(:image => gc, :top => (headers_heigth + 20), :indent => 4, :format => :image) - + subjects(:image => gc, :top => (headers_height + 20), :indent => 4, :format => :image) + # Months headers month_f = @date_from left = subject_width - @months.times do + @months.times do width = ((month_f >> 1) - month_f) * zoom gc.fill('white') gc.stroke('grey') @@ -433,11 +430,11 @@ left = left + width month_f = month_f >> 1 end - + # Weeks headers if show_weeks left = subject_width - height = header_heigth + height = header_height if @date_from.cwday == 1 # date_from is monday week_f = date_from @@ -448,7 +445,7 @@ gc.fill('white') gc.stroke('grey') gc.stroke_width(1) - gc.rectangle(left, header_heigth, left + width, 2*header_heigth + g_height-1) + gc.rectangle(left, header_height, left + width, 2*header_height + g_height-1) left = left + width end while week_f <= date_to @@ -456,111 +453,111 @@ gc.fill('white') gc.stroke('grey') gc.stroke_width(1) - gc.rectangle(left.round, header_heigth, left.round + width, 2*header_heigth + g_height-1) + gc.rectangle(left.round, header_height, left.round + width, 2*header_height + g_height-1) gc.fill('black') gc.stroke('transparent') gc.stroke_width(1) - gc.text(left.round + 2, header_heigth + 14, week_f.cweek.to_s) + gc.text(left.round + 2, header_height + 14, week_f.cweek.to_s) left = left + width week_f = week_f+7 end end - + # Days details (week-end in grey) if show_days left = subject_width - height = g_height + header_heigth - 1 + height = g_height + header_height - 1 wday = @date_from.cwday - (date_to - @date_from + 1).to_i.times do + (date_to - @date_from + 1).to_i.times do width = zoom gc.fill(wday == 6 || wday == 7 ? '#eee' : 'white') gc.stroke('#ddd') gc.stroke_width(1) - gc.rectangle(left, 2*header_heigth, left + width, 2*header_heigth + g_height-1) + gc.rectangle(left, 2*header_height, left + width, 2*header_height + g_height-1) left = left + width wday = wday + 1 wday = 1 if wday > 7 end end - + # border gc.fill('transparent') gc.stroke('grey') gc.stroke_width(1) - gc.rectangle(0, 0, subject_width+g_width, headers_heigth) + gc.rectangle(0, 0, subject_width+g_width, headers_height) gc.stroke('black') - gc.rectangle(0, 0, subject_width+g_width, g_height+ headers_heigth-1) - + gc.rectangle(0, 0, subject_width+g_width, g_height+ headers_height-1) + # content - top = headers_heigth + 20 + top = headers_height + 20 gc.stroke('transparent') lines(:image => gc, :top => top, :zoom => zoom, :subject_width => subject_width, :format => :image) - + # today red line if Date.today >= @date_from and Date.today <= date_to gc.stroke('red') x = (Date.today-@date_from+1)*zoom + subject_width - gc.line(x, headers_heigth, x, headers_heigth + g_height-1) - end - + gc.line(x, headers_height, x, headers_height + g_height-1) + end + gc.draw(imgl) imgl.format = format imgl.to_blob end if Object.const_defined?(:Magick) def to_pdf - pdf = ::Redmine::Export::PDF::IFPDF.new(current_language) + pdf = ::Redmine::Export::PDF::ITCPDF.new(current_language) pdf.SetTitle("#{l(:label_gantt)} #{project}") - pdf.AliasNbPages + pdf.alias_nb_pages pdf.footer_date = format_date(Date.today) pdf.AddPage("L") pdf.SetFontStyle('B',12) pdf.SetX(15) - pdf.Cell(PDF::LeftPaneWidth, 20, project.to_s) + pdf.RDMCell(PDF::LeftPaneWidth, 20, project.to_s) pdf.Ln pdf.SetFontStyle('B',9) - + subject_width = PDF::LeftPaneWidth - header_heigth = 5 - - headers_heigth = header_heigth + header_height = 5 + + headers_height = header_height show_weeks = false show_days = false - + if self.months < 7 show_weeks = true - headers_heigth = 2*header_heigth + headers_height = 2*header_height if self.months < 3 show_days = true - headers_heigth = 3*header_heigth + headers_height = 3*header_height end end - + g_width = PDF.right_pane_width zoom = (g_width) / (self.date_to - self.date_from + 1) g_height = 120 - t_height = g_height + headers_heigth - + t_height = g_height + headers_height + y_start = pdf.GetY - + # Months headers month_f = self.date_from left = subject_width - height = header_heigth - self.months.times do - width = ((month_f >> 1) - month_f) * zoom + height = header_height + self.months.times do + width = ((month_f >> 1) - month_f) * zoom pdf.SetY(y_start) pdf.SetX(left) - pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C") + pdf.RDMCell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C") left = left + width month_f = month_f >> 1 - end - + end + # Weeks headers if show_weeks left = subject_width - height = header_heigth + height = header_height if self.date_from.cwday == 1 # self.date_from is monday week_f = self.date_from @@ -568,44 +565,44 @@ # find next monday after self.date_from week_f = self.date_from + (7 - self.date_from.cwday + 1) width = (7 - self.date_from.cwday + 1) * zoom-1 - pdf.SetY(y_start + header_heigth) + pdf.SetY(y_start + header_height) pdf.SetX(left) - pdf.Cell(width + 1, height, "", "LTR") + pdf.RDMCell(width + 1, height, "", "LTR") left = left + width+1 end while week_f <= self.date_to width = (week_f + 6 <= self.date_to) ? 7 * zoom : (self.date_to - week_f + 1) * zoom - pdf.SetY(y_start + header_heigth) + pdf.SetY(y_start + header_height) pdf.SetX(left) - pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C") + pdf.RDMCell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C") left = left + width week_f = week_f+7 end end - + # Days headers if show_days left = subject_width - height = header_heigth + height = header_height wday = self.date_from.cwday pdf.SetFontStyle('B',7) - (self.date_to - self.date_from + 1).to_i.times do + (self.date_to - self.date_from + 1).to_i.times do width = zoom - pdf.SetY(y_start + 2 * header_heigth) + pdf.SetY(y_start + 2 * header_height) pdf.SetX(left) - pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C") + pdf.RDMCell(width, height, day_name(wday).first, "LTR", 0, "C") left = left + width wday = wday + 1 wday = 1 if wday > 7 end end - + pdf.SetY(y_start) pdf.SetX(15) - pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1) - + pdf.RDMCell(subject_width+g_width-15, headers_height, "", 1) + # Tasks - top = headers_heigth + y_start + top = headers_height + y_start options = { :top => top, :zoom => zoom, @@ -620,12 +617,12 @@ render(options) pdf.Output end - + private - + def coordinates(start_date, end_date, progress, zoom=nil) zoom ||= @zoom - + coords = {} if start_date && end_date && start_date < self.date_to && end_date > self.date_from if start_date > self.date_from @@ -640,17 +637,17 @@ else coords[:bar_end] = self.date_to - self.date_from + 1 end - + if progress - progress_date = start_date + (end_date - start_date) * (progress / 100.0) + progress_date = start_date + (end_date - start_date + 1) * (progress / 100.0) if progress_date > self.date_from && progress_date > start_date if progress_date < self.date_to - coords[:bar_progress_end] = progress_date - self.date_from + 1 + coords[:bar_progress_end] = progress_date - self.date_from else coords[:bar_progress_end] = self.date_to - self.date_from + 1 end end - + if progress_date < Date.today late_date = [Date.today, end_date].min if late_date > self.date_from && late_date > start_date @@ -663,7 +660,7 @@ end end end - + # Transforms dates into pixels witdh coords.keys.each do |key| coords[key] = (coords[key] * zoom).floor @@ -675,7 +672,7 @@ def sort_issues!(issues) issues.sort! { |a, b| gantt_issue_compare(a, b, issues) } end - + # TODO: top level issues should be sorted by start date def gantt_issue_compare(x, y, issues) if x.root_id == y.root_id @@ -684,7 +681,7 @@ x.root_id <=> y.root_id end end - + def current_limit if @max_rows @max_rows - @number_of_rows @@ -692,13 +689,13 @@ nil end end - + def abort? if @max_rows && @number_of_rows >= @max_rows @truncated = true end end - + def pdf_new_page?(options) if options[:top] > 180 options[:pdf].Line(15, options[:top], PDF::TotalWidth, options[:top]) @@ -707,41 +704,41 @@ options[:pdf].Line(15, options[:top] - 0.1, PDF::TotalWidth, options[:top] - 0.1) end end - + def html_subject(params, subject, options={}) style = "position: absolute;top:#{params[:top]}px;left:#{params[:indent]}px;" style << "width:#{params[:subject_width] - params[:indent]}px;" if params[:subject_width] - + output = view.content_tag 'div', subject, :class => options[:css], :style => style, :title => options[:title] @subjects << output output end - + def pdf_subject(params, subject, options={}) params[:pdf].SetY(params[:top]) params[:pdf].SetX(15) - + char_limit = PDF::MaxCharactorsForSubject - params[:indent] - params[:pdf].Cell(params[:subject_width]-15, 5, (" " * params[:indent]) + subject.to_s.sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") - + params[:pdf].RDMCell(params[:subject_width]-15, 5, (" " * params[:indent]) + subject.to_s.sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") + params[:pdf].SetY(params[:top]) params[:pdf].SetX(params[:subject_width]) - params[:pdf].Cell(params[:g_width], 5, "", "LR") + params[:pdf].RDMCell(params[:g_width], 5, "", "LR") end - + def image_subject(params, subject, options={}) params[:image].fill('black') params[:image].stroke('transparent') params[:image].stroke_width(1) params[:image].text(params[:indent], params[:top] + 2, subject) end - + def html_task(params, coords, options={}) output = '' # Renders the task bar, with progress and late if coords[:bar_start] && coords[:bar_end] output << "
     
    " - + if coords[:bar_late_end] output << "
     
    " end @@ -774,28 +771,28 @@ @lines << output output end - + def pdf_task(params, coords, options={}) height = options[:height] || 2 - + # Renders the task bar, with progress and late if coords[:bar_start] && coords[:bar_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(200,200,200) - params[:pdf].Cell(coords[:bar_end] - coords[:bar_start], height, "", 0, 0, "", 1) - + params[:pdf].RDMCell(coords[:bar_end] - coords[:bar_start], height, "", 0, 0, "", 1) + if coords[:bar_late_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(255,100,100) - params[:pdf].Cell(coords[:bar_late_end] - coords[:bar_start], height, "", 0, 0, "", 1) + params[:pdf].RDMCell(coords[:bar_late_end] - coords[:bar_start], height, "", 0, 0, "", 1) end if coords[:bar_progress_end] params[:pdf].SetY(params[:top]+1.5) params[:pdf].SetX(params[:subject_width] + coords[:bar_start]) params[:pdf].SetFillColor(90,200,90) - params[:pdf].Cell(coords[:bar_progress_end] - coords[:bar_start], height, "", 0, 0, "", 1) + params[:pdf].RDMCell(coords[:bar_progress_end] - coords[:bar_start], height, "", 0, 0, "", 1) end end # Renders the markers @@ -804,30 +801,30 @@ params[:pdf].SetY(params[:top] + 1) params[:pdf].SetX(params[:subject_width] + coords[:start] - 1) params[:pdf].SetFillColor(50,50,200) - params[:pdf].Cell(2, 2, "", 0, 0, "", 1) + params[:pdf].RDMCell(2, 2, "", 0, 0, "", 1) end if coords[:end] params[:pdf].SetY(params[:top] + 1) params[:pdf].SetX(params[:subject_width] + coords[:end] - 1) params[:pdf].SetFillColor(50,50,200) - params[:pdf].Cell(2, 2, "", 0, 0, "", 1) + params[:pdf].RDMCell(2, 2, "", 0, 0, "", 1) end end # Renders the label on the right if options[:label] params[:pdf].SetX(params[:subject_width] + (coords[:bar_end] || 0) + 5) - params[:pdf].Cell(30, 2, options[:label]) + params[:pdf].RDMCell(30, 2, options[:label]) end end def image_task(params, coords, options={}) height = options[:height] || 6 - + # Renders the task bar, with progress and late if coords[:bar_start] && coords[:bar_end] params[:image].fill('#aaa') params[:image].rectangle(params[:subject_width] + coords[:bar_start], params[:top], params[:subject_width] + coords[:bar_end], params[:top] - height) - + if coords[:bar_late_end] params[:image].fill('#f66') params[:image].rectangle(params[:subject_width] + coords[:bar_start], params[:top], params[:subject_width] + coords[:bar_late_end], params[:top] - height) diff -r adc8466df404 -r 753f1380d6bc lib/redmine/mime_type.rb --- a/lib/redmine/mime_type.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/mime_type.rb Mon Jun 06 14:41:04 2011 +0100 @@ -37,6 +37,7 @@ 'text/xml' => 'xml,xsd,mxml', 'text/yaml' => 'yml,yaml', 'text/csv' => 'csv', + 'text/x-po' => 'po', 'image/gif' => 'gif', 'image/jpeg' => 'jpg,jpeg,jpe', 'image/png' => 'png', diff -r adc8466df404 -r 753f1380d6bc lib/redmine/notifiable.rb --- a/lib/redmine/notifiable.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/notifiable.rb Mon Jun 06 14:41:04 2011 +0100 @@ -14,6 +14,7 @@ notifications << Notifiable.new('issue_status_updated', 'issue_updated') notifications << Notifiable.new('issue_priority_updated', 'issue_updated') notifications << Notifiable.new('news_added') + notifications << Notifiable.new('news_comment_added') notifications << Notifiable.new('document_added') notifications << Notifiable.new('file_added') notifications << Notifiable.new('message_posted') diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/.svn/all-wcprops --- a/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,11 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 40 -/svn/!svn/ver/4993/trunk/lib/redmine/scm +V 54 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm END -base.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/3440/trunk/lib/redmine/scm/base.rb -END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/.svn/entries --- a/lib/redmine/scm/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/scm http://redmine.rubyforge.org/svn -2011-03-03T05:51:46.224821Z -4993 +2011-05-21T02:39:42.521746Z +5870 tmaruyama @@ -35,7 +35,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 3a053c03d210decd9105a24ff5e1aa8f 2010-02-16T22:41:59.625572Z 3440 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/all-wcprops --- a/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,53 +1,53 @@ K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters +V 63 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters END subversion_adapter.rb K 25 svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/subversion_adapter.rb +V 85 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/subversion_adapter.rb END bazaar_adapter.rb K 25 svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/bazaar_adapter.rb +V 81 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/bazaar_adapter.rb END abstract_adapter.rb K 25 svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/4959/trunk/lib/redmine/scm/adapters/abstract_adapter.rb +V 83 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/abstract_adapter.rb END git_adapter.rb K 25 svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/git_adapter.rb +V 78 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/git_adapter.rb END mercurial_adapter.rb K 25 svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/mercurial_adapter.rb +V 84 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/mercurial_adapter.rb END filesystem_adapter.rb K 25 svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/4941/trunk/lib/redmine/scm/adapters/filesystem_adapter.rb +V 85 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/filesystem_adapter.rb END cvs_adapter.rb K 25 svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/cvs_adapter.rb +V 78 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/cvs_adapter.rb END darcs_adapter.rb K 25 svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/darcs_adapter.rb +V 80 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/darcs_adapter.rb END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/entries --- a/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/scm/adapters http://redmine.rubyforge.org/svn -2011-03-03T05:51:46.224821Z -4993 +2011-05-21T02:39:42.521746Z +5870 tmaruyama @@ -32,11 +32,12 @@ -2011-03-03T11:40:18.000000Z -7e0b7e8a12996f271854b48e2d7611e4 -2011-03-03T05:51:46.224821Z -4993 +2011-06-06T13:20:53.000000Z +bf7d7b180f55d2100736e363ce125552 +2011-05-10T17:52:56.415969Z +5731 tmaruyama +has-props @@ -57,8 +58,7 @@ - -11535 +11495 bazaar_adapter.rb file @@ -66,10 +66,10 @@ -2011-03-03T11:40:18.000000Z -2614557fb37905301939071ec226fe16 -2011-03-03T05:32:33.802461Z -4992 +2011-06-06T13:20:53.000000Z +8bcb2a65cfdf8d27dc53f10469887018 +2011-05-06T12:57:32.851840Z +5668 tmaruyama has-props @@ -92,7 +92,7 @@ -8274 +8398 mercurial dir @@ -103,10 +103,10 @@ -2011-03-03T11:40:18.000000Z -5cc0323dd42df9a3377099b0fdf9e95f -2011-02-28T04:46:42.639929Z -4959 +2011-06-06T13:20:53.000000Z +b5e95cdfce320e25a25588b5bf01d39a +2011-05-21T02:16:51.624699Z +5863 tmaruyama has-props @@ -129,7 +129,7 @@ -9832 +9625 git_adapter.rb file @@ -137,10 +137,10 @@ -2011-03-03T11:40:18.000000Z -ba10ae64fed2363f2533aa558752be37 -2011-03-03T05:32:33.802461Z -4992 +2011-06-06T13:20:53.000000Z +8b7b85fc7884f18402dfd33412bb1632 +2011-05-21T02:39:42.521746Z +5870 tmaruyama has-props @@ -163,7 +163,7 @@ -11905 +13537 mercurial_adapter.rb file @@ -171,10 +171,10 @@ -2011-03-03T11:40:18.000000Z -fe99380d7b29fe936554e10293751813 -2011-03-03T05:51:46.224821Z -4993 +2011-06-06T13:20:53.000000Z +ef24fdf73dd59d164e60121c21aa5b93 +2011-05-21T02:38:04.545904Z +5868 tmaruyama has-props @@ -197,7 +197,7 @@ -11159 +11824 filesystem_adapter.rb file @@ -205,10 +205,10 @@ -2011-03-03T11:40:18.000000Z -4acd04cfa5dac0e54a35b8ef4a565217 -2011-02-24T05:58:59.661399Z -4941 +2011-06-06T13:20:53.000000Z +23ac49fabb89c7578c173ef09c7f280f +2011-05-21T02:17:34.152882Z +5864 tmaruyama has-props @@ -231,7 +231,7 @@ -4266 +4409 cvs_adapter.rb file @@ -239,10 +239,10 @@ -2011-03-03T11:40:18.000000Z -a3914eff33df4b5a05a108945137360b -2011-03-03T05:32:33.802461Z -4992 +2011-06-06T13:20:53.000000Z +0c56303ba5340dfff7860be537a1ccc1 +2011-05-21T02:18:53.346845Z +5866 tmaruyama has-props @@ -265,7 +265,7 @@ -14573 +16766 darcs_adapter.rb file @@ -273,10 +273,10 @@ -2011-03-03T11:40:18.000000Z -23725596dd2797f4dcdd5336e715c59a -2011-03-03T05:32:33.802461Z -4992 +2011-06-06T13:20:53.000000Z +f039e19c659f52d26c9be8a566b90539 +2011-05-06T12:57:54.181968Z +5669 tmaruyama has-props @@ -299,5 +299,5 @@ -8925 +8935 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -90,12 +90,16 @@ def url @url end - + + def path_encoding + nil + end + # get info about the svn repository def info return nil end - + # Returns the entry identified by path and revision identifier # or nil if entry doesn't exist in the repository def entry(path=nil, identifier=nil) @@ -111,10 +115,10 @@ es ? es.detect {|e| e.name == search_name} : nil end end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) return nil end @@ -122,30 +126,30 @@ return nil end - def tags + def tags return nil end def default_branch return nil end - + def properties(path, identifier=nil) return nil end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) return nil end - + def diff(path, identifier_from, identifier_to=nil) return nil end - + def cat(path, identifier=nil) return nil end - + def with_leading_slash(path) path ||= '' (path[0,1]!="/") ? "/#{path}" : path @@ -175,7 +179,7 @@ info = self.info info ? info.root_url : nil end - + def target(path) path ||= '' base = path.match(/^\//) ? root_url : url @@ -223,7 +227,7 @@ q = (Redmine::Platform.mswin? ? '"' : "'") cmd.to_s.gsub(/(\-\-(password|username))\s+(#{q}[^#{q}]+#{q}|[^#{q}]\S+)/, '\\1 xxxx') end - + def strip_credential(cmd) self.class.strip_credential(cmd) end @@ -242,7 +246,7 @@ class Entries < Array def sort_by_name - sort {|x,y| + sort {|x,y| if x.kind == y.kind x.name.to_s <=> y.name.to_s else @@ -250,12 +254,12 @@ end } end - + def revisions revisions ||= Revisions.new(collect{|entry| entry.lastrev}.compact) end end - + class Info attr_accessor :root_url, :lastrev def initialize(attributes={}) @@ -263,7 +267,7 @@ self.lastrev = attributes[:lastrev] end end - + class Entry attr_accessor :name, :path, :kind, :size, :lastrev def initialize(attributes={}) @@ -273,20 +277,20 @@ self.size = attributes[:size].to_i if attributes[:size] self.lastrev = attributes[:lastrev] end - + def is_file? 'file' == self.kind end - + def is_dir? 'dir' == self.kind end - + def is_text? Redmine::MimeType.is_type?('text', name) end end - + class Revisions < Array def latest sort {|x,y| @@ -296,53 +300,48 @@ 0 end }.last - end + end end - + class Revision - attr_accessor :scmid, :name, :author, :time, :message, :paths, :revision, :branch - attr_writer :identifier + attr_accessor :scmid, :name, :author, :time, :message, + :paths, :revision, :branch, :identifier def initialize(attributes={}) self.identifier = attributes[:identifier] - self.scmid = attributes[:scmid] - self.name = attributes[:name] || self.identifier - self.author = attributes[:author] - self.time = attributes[:time] - self.message = attributes[:message] || "" - self.paths = attributes[:paths] - self.revision = attributes[:revision] - self.branch = attributes[:branch] - end - - # Returns the identifier of this revision; see also Changeset model - def identifier - (@identifier || revision).to_s + self.scmid = attributes[:scmid] + self.name = attributes[:name] || self.identifier + self.author = attributes[:author] + self.time = attributes[:time] + self.message = attributes[:message] || "" + self.paths = attributes[:paths] + self.revision = attributes[:revision] + self.branch = attributes[:branch] end # Returns the readable identifier. def format_identifier - identifier + self.identifier.to_s end end class Annotate attr_reader :lines, :revisions - + def initialize @lines = [] @revisions = [] end - + def add_line(line, revision) @lines << line @revisions << revision end - + def content content = lines.join("\n") end - + def empty? lines.empty? end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -78,12 +78,12 @@ # Returns an Entries collection # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) path ||= '' entries = Entries.new cmd = "#{self.class.sq_bin} ls -v --show-ids" - identifier = -1 unless identifier && identifier.to_i > 0 - cmd << " -r#{identifier.to_i}" + identifier = -1 unless identifier && identifier.to_i > 0 + cmd << " -r#{identifier.to_i}" cmd << " #{target(path)}" shellout(cmd) do |io| prefix = "#{url}/#{path}".gsub('\\', '/') @@ -120,7 +120,6 @@ parsing = nil else next unless revision - if line =~ /^revno: (\d+)($|\s\[merge\]$)/ revision.identifier = $1.to_i elsif line =~ /^committer: (.+)$/ @@ -168,7 +167,7 @@ def diff(path, identifier_from, identifier_to=nil) path ||= '' if identifier_to - identifier_to = identifier_to.to_i + identifier_to = identifier_to.to_i else identifier_to = identifier_from.to_i - 1 end @@ -209,7 +208,13 @@ identifier = nil io.each_line do |line| next unless line =~ %r{^(\d+) ([^|]+)\| (.*)$} - blame.add_line($3.rstrip, Revision.new(:identifier => $1.to_i, :author => $2.strip)) + rev = $1 + blame.add_line($3.rstrip, + Revision.new( + :identifier => rev, + :revision => rev, + :author => $2.strip + )) end end return nil if $? && $?.exitstatus != 0 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -5,12 +5,12 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -25,6 +25,9 @@ # CVS executable name CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs" + # raised if scm command exited with error, e.g. unknown revision. + class ScmCommandAborted < CommandFailed; end + class << self def client_command @@bin ||= CVS_BIN @@ -58,26 +61,25 @@ end # Guidelines for the input: - # url -> the project-path, relative to the cvsroot (eg. module name) + # url -> the project-path, relative to the cvsroot (eg. module name) # root_url -> the good old, sometimes damned, CVSROOT - # login -> unnecessary + # login -> unnecessary # password -> unnecessary too def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) - @url = url - @login = login if login && !login.empty? + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + @url = url + # TODO: better Exception here (IllegalArgumentException) + raise CommandFailed if root_url.blank? + @root_url = root_url + + # These are unused. + @login = login if login && !login.empty? @password = (password || "") if @login - #TODO: better Exception here (IllegalArgumentException) - raise CommandFailed if root_url.blank? - @root_url = root_url end - def root_url - @root_url - end - - def url - @url + def path_encoding + @path_encoding end def info @@ -92,43 +94,59 @@ # Returns an Entries collection # or nil if the given path doesn't exist in the repository # this method is used by the repository-browser (aka LIST) - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) logger.debug " entries '#{path}' with identifier '#{identifier}'" - path_with_project="#{url}#{with_leading_slash(path)}" + path_locale = scm_iconv(@path_encoding, 'UTF-8', path) + path_locale.force_encoding("ASCII-8BIT") if path_locale.respond_to?(:force_encoding) entries = Entries.new - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rls -e" - cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier - cmd << " #{shell_quote path_with_project}" - shellout(cmd) do |io| - io.each_line(){|line| - fields=line.chop.split('/',-1) + cmd_args = %w|-q rls -e| + cmd_args << "-D" << time_to_cvstime_rlog(identifier) if identifier + cmd_args << path_with_proj(path) + scm_cmd(*cmd_args) do |io| + io.each_line() do |line| + fields = line.chop.split('/',-1) logger.debug(">>InspectLine #{fields.inspect}") - if fields[0]!="D" - entries << Entry.new({:name => fields[-5], + time = nil + # Thu Dec 13 16:27:22 2007 + time_l = fields[-3].split(' ') + if time_l.size == 5 && time_l[4].length == 4 + begin + time = Time.parse( + "#{time_l[1]} #{time_l[2]} #{time_l[3]} GMT #{time_l[4]}") + rescue + end + end + entries << Entry.new( + { + :name => scm_iconv('UTF-8', @path_encoding, fields[-5]), #:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]), - :path => "#{path}/#{fields[-5]}", + :path => scm_iconv('UTF-8', @path_encoding, "#{path_locale}/#{fields[-5]}"), :kind => 'file', :size => nil, - :lastrev => Revision.new({ - :revision => fields[-4], - :name => fields[-4], - :time => Time.parse(fields[-3]), - :author => '' + :lastrev => Revision.new( + { + :revision => fields[-4], + :name => scm_iconv('UTF-8', @path_encoding, fields[-4]), + :time => time, + :author => '' + }) }) - }) else - entries << Entry.new({:name => fields[1], - :path => "#{path}/#{fields[1]}", - :kind => 'dir', - :size => nil, + entries << Entry.new( + { + :name => scm_iconv('UTF-8', @path_encoding, fields[1]), + :path => scm_iconv('UTF-8', @path_encoding, "#{path_locale}/#{fields[1]}"), + :kind => 'dir', + :size => nil, :lastrev => nil - }) + }) end - } + end end - return nil if $? && $?.exitstatus != 0 entries.sort_by_name + rescue ScmCommandAborted + nil end STARTLOG="----------------------------" @@ -138,111 +156,106 @@ # in the repository. both identifier have to be dates or nil. # these method returns nothing but yield every result in block def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}, &block) - logger.debug " revisions path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" - - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rlog" - cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from - cmd << " #{shell_quote path_with_project}" - shellout(cmd) do |io| - state="entry_start" - - commit_log=String.new - revision=nil - date=nil - author=nil - entry_path=nil - entry_name=nil - file_state=nil - branch_map=nil - + path_with_project_utf8 = path_with_proj(path) + path_with_project_locale = scm_iconv(@path_encoding, 'UTF-8', path_with_project_utf8) + logger.debug " revisions path:" + + "'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" + cmd_args = %w|-q rlog| + cmd_args << "-d" << ">#{time_to_cvstime_rlog(identifier_from)}" if identifier_from + cmd_args << path_with_project_utf8 + scm_cmd(*cmd_args) do |io| + state = "entry_start" + commit_log = String.new + revision = nil + date = nil + author = nil + entry_path = nil + entry_name = nil + file_state = nil + branch_map = nil io.each_line() do |line| - - if state!="revision" && /^#{ENDLOG}/ =~ line - commit_log=String.new - revision=nil - state="entry_start" + if state != "revision" && /^#{ENDLOG}/ =~ line + commit_log = String.new + revision = nil + state = "entry_start" end - - if state=="entry_start" - branch_map=Hash.new - if /^RCS file: #{Regexp.escape(root_url_path)}\/#{Regexp.escape(path_with_project)}(.+),v$/ =~ line + if state == "entry_start" + branch_map = Hash.new + if /^RCS file: #{Regexp.escape(root_url_path)}\/#{Regexp.escape(path_with_project_locale)}(.+),v$/ =~ line entry_path = normalize_cvs_path($1) entry_name = normalize_path(File.basename($1)) logger.debug("Path #{entry_path} <=> Name #{entry_name}") elsif /^head: (.+)$/ =~ line entry_headRev = $1 #unless entry.nil? elsif /^symbolic names:/ =~ line - state="symbolic" #unless entry.nil? + state = "symbolic" #unless entry.nil? elsif /^#{STARTLOG}/ =~ line - commit_log=String.new - state="revision" - end + commit_log = String.new + state = "revision" + end next - elsif state=="symbolic" - if /^(.*):\s(.*)/ =~ (line.strip) - branch_map[$1]=$2 + elsif state == "symbolic" + if /^(.*):\s(.*)/ =~ (line.strip) + branch_map[$1] = $2 else - state="tags" + state = "tags" next - end - elsif state=="tags" + end + elsif state == "tags" if /^#{STARTLOG}/ =~ line commit_log = "" - state="revision" + state = "revision" elsif /^#{ENDLOG}/ =~ line - state="head" + state = "head" end next - elsif state=="revision" + elsif state == "revision" if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line if revision - - revHelper=CvsRevisionHelper.new(revision) - revBranch="HEAD" - - branch_map.each() do |branch_name,branch_point| + revHelper = CvsRevisionHelper.new(revision) + revBranch = "HEAD" + branch_map.each() do |branch_name, branch_point| if revHelper.is_in_branch_with_symbol(branch_point) - revBranch=branch_name + revBranch = branch_name end end - logger.debug("********** YIELD Revision #{revision}::#{revBranch}") - yield Revision.new({ - :time => date, - :author => author, - :message=>commit_log.chomp, + :time => date, + :author => author, + :message => commit_log.chomp, :paths => [{ :revision => revision, - :branch=> revBranch, - :path=>entry_path, - :name=>entry_name, - :kind=>'file', - :action=>file_state - }] - }) + :branch => revBranch, + :path => scm_iconv('UTF-8', @path_encoding, entry_path), + :name => scm_iconv('UTF-8', @path_encoding, entry_name), + :kind => 'file', + :action => file_state + }] + }) end - - commit_log=String.new - revision=nil - + commit_log = String.new + revision = nil if /^#{ENDLOG}/ =~ line - state="entry_start" + state = "entry_start" end next end if /^branches: (.+)$/ =~ line - #TODO: version.branch = $1 + # TODO: version.branch = $1 elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line - revision = $1 + revision = $1 elsif /^date:\s+(\d+.\d+.\d+\s+\d+:\d+:\d+)/ =~ line - date = Time.parse($1) - author = /author: ([^;]+)/.match(line)[1] - file_state = /state: ([^;]+)/.match(line)[1] - #TODO: linechanges only available in CVS.... maybe a feature our SVN implementation. i'm sure, they are - # useful for stats or something else + date = Time.parse($1) + line_utf8 = scm_iconv('UTF-8', options[:log_encoding], line) + author_utf8 = /author: ([^;]+)/.match(line_utf8)[1] + author = scm_iconv(options[:log_encoding], 'UTF-8', author_utf8) + file_state = /state: ([^;]+)/.match(line)[1] + # TODO: + # linechanges only available in CVS.... + # maybe a feature our SVN implementation. + # I'm sure, they are useful for stats or something else # linechanges =/lines: \+(\d+) -(\d+)/.match(line) # unless linechanges.nil? # version.line_plus = linechanges[1] @@ -257,52 +270,66 @@ end end end + rescue ScmCommandAborted + Revisions.new end def diff(path, identifier_from, identifier_to=nil) - logger.debug " diff path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" + logger.debug " diff path:'#{path}'" + + ",identifier_from #{identifier_from}, identifier_to #{identifier_to}" + cmd_args = %w|rdiff -u| + cmd_args << "-r#{identifier_to}" + cmd_args << "-r#{identifier_from}" + cmd_args << path_with_proj(path) diff = [] - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.each_line do |line| diff << line end end - return nil if $? && $?.exitstatus != 0 diff + rescue ScmCommandAborted + nil end def cat(path, identifier=nil) identifier = (identifier) ? identifier : "HEAD" logger.debug " cat path:'#{path}',identifier #{identifier}" - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} co" - cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier - cmd << " -p #{shell_quote path_with_project}" + cmd_args = %w|-q co| + cmd_args << "-D" << time_to_cvstime(identifier) if identifier + cmd_args << "-p" << path_with_proj(path) cat = nil - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.binmode cat = io.read end - return nil if $? && $?.exitstatus != 0 cat + rescue ScmCommandAborted + nil end def annotate(path, identifier=nil) - identifier = (identifier) ? identifier.to_i : "HEAD" + identifier = (identifier) ? identifier : "HEAD" logger.debug " annotate path:'#{path}',identifier #{identifier}" - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" + cmd_args = %w|rannotate| + cmd_args << "-D" << time_to_cvstime(identifier) if identifier + cmd_args << path_with_proj(path) blame = Annotate.new - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.each_line do |line| next unless line =~ %r{^([\d\.]+)\s+\(([^\)]+)\s+[^\)]+\):\s(.*)$} - blame.add_line($3.rstrip, Revision.new(:revision => $1, :author => $2.strip)) + blame.add_line( + $3.rstrip, + Revision.new( + :revision => $1, + :identifier => nil, + :author => $2.strip + )) end end - return nil if $? && $?.exitstatus != 0 blame + rescue ScmCommandAborted + Annotate.new end private @@ -317,12 +344,12 @@ # convert a date/time into the CVS-format def time_to_cvstime(time) return nil if time.nil? - return Time.now if time == 'HEAD' - + time = Time.now if time == 'HEAD' + unless time.kind_of? Time time = Time.parse(time) end - return time.strftime("%Y-%m-%d %H:%M:%S") + return time_to_cvstime_rlog(time) end def time_to_cvstime_rlog(time) @@ -330,77 +357,104 @@ t1 = time.clone.localtime return t1.strftime("%Y-%m-%d %H:%M:%S") end - + def normalize_cvs_path(path) normalize_path(path.gsub(/Attic\//,'')) end - + def normalize_path(path) path.sub(/^(\/)*(.*)/,'\2').sub(/(.*)(,v)+/,'\1') - end - end - + end + + def path_with_proj(path) + "#{url}#{with_leading_slash(path)}" + end + private :path_with_proj + + class Revision < Redmine::Scm::Adapters::Revision + # Returns the readable identifier + def format_identifier + revision.to_s + end + end + + def scm_cmd(*args, &block) + full_args = [CVS_BIN, '-d', root_url] + full_args += args + full_args_locale = [] + full_args.map do |e| + full_args_locale << scm_iconv(@path_encoding, 'UTF-8', e) + end + ret = shellout(full_args_locale.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise ScmCommandAborted, "cvs exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :scm_cmd + end + class CvsRevisionHelper attr_accessor :complete_rev, :revision, :base, :branchid - + def initialize(complete_rev) @complete_rev = complete_rev parseRevision() end - + def branchPoint return @base end - + def branchVersion if isBranchRevision return @base+"."+@branchid end return @base end - + def isBranchRevision !@branchid.nil? end - + def prevRev - unless @revision==0 - return buildRevision(@revision-1) + unless @revision == 0 + return buildRevision( @revision - 1 ) end - return buildRevision(@revision) + return buildRevision( @revision ) end - + def is_in_branch_with_symbol(branch_symbol) - bpieces=branch_symbol.split(".") - branch_start="#{bpieces[0..-3].join(".")}.#{bpieces[-1]}" - return (branchVersion==branch_start) + bpieces = branch_symbol.split(".") + branch_start = "#{bpieces[0..-3].join(".")}.#{bpieces[-1]}" + return ( branchVersion == branch_start ) end - + private def buildRevision(rev) - if rev== 0 + if rev == 0 if @branchid.nil? - @base+".0" + @base + ".0" else @base end - elsif @branchid.nil? - @base+"."+rev.to_s + elsif @branchid.nil? + @base + "." + rev.to_s else - @base+"."+@branchid+"."+rev.to_s + @base + "." + @branchid + "." + rev.to_s end end - + # Interpretiert die cvs revisionsnummern wie z.b. 1.14 oder 1.3.0.15 def parseRevision() - pieces=@complete_rev.split(".") - @revision=pieces.last.to_i - baseSize=1 - baseSize+=(pieces.size/2) - @base=pieces[0..-baseSize].join(".") + pieces = @complete_rev.split(".") + @revision = pieces.last.to_i + baseSize = 1 + baseSize += (pieces.size / 2) + @base = pieces[0..-baseSize].join(".") if baseSize > 2 - @branchid=pieces[-2] - end + @branchid = pieces[-2] + end end end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -76,7 +76,7 @@ # Returns an Entries collection # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) path_prefix = (path.blank? ? '' : "#{path}/") if path.blank? path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' ) diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# RedMine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # FileSystem adapter # File written by Paul Rivier, at Demotera. @@ -8,12 +8,12 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -35,14 +35,18 @@ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) @url = with_trailling_slash(url) - @path_encoding = path_encoding || 'UTF-8' + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + end + + def path_encoding + @path_encoding end def format_path_ends(path, leading=true, trailling=true) - path = leading ? with_leading_slash(path) : + path = leading ? with_leading_slash(path) : without_leading_slash(path) - trailling ? with_trailling_slash(path) : - without_trailling_slash(path) + trailling ? with_trailling_slash(path) : + without_trailling_slash(path) end def info @@ -54,13 +58,15 @@ return nil end - def entries(path="", identifier=nil) + def entries(path="", identifier=nil, options={}) entries = Entries.new trgt_utf8 = target(path) trgt = scm_iconv(@path_encoding, 'UTF-8', trgt_utf8) Dir.new(trgt).each do |e1| e_utf8 = scm_iconv('UTF-8', @path_encoding, e1) - relative_path_utf8 = format_path_ends((format_path_ends(path,false,true) + e_utf8),false,false) + next if e_utf8.blank? + relative_path_utf8 = format_path_ends( + (format_path_ends(path,false,true) + e_utf8),false,false) t1_utf8 = target(relative_path_utf8) t1 = scm_iconv(@path_encoding, 'UTF-8', t1_utf8) relative_path = scm_iconv(@path_encoding, 'UTF-8', relative_path_utf8) @@ -76,7 +82,7 @@ :path => utf_8_path, :kind => (File.directory?(t1) ? 'dir' : 'file'), :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first), - :lastrev => + :lastrev => Revision.new({:time => (File.mtime(t1)) }) }) end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -22,8 +22,6 @@ module Adapters class GitAdapter < AbstractAdapter - SCM_GIT_REPORT_LAST_COMMIT = true - # Git executable name GIT_BIN = Redmine::Configuration['scm_git_command'] || "git" @@ -64,7 +62,11 @@ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) super - @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + end + + def path_encoding + @path_encoding end def info @@ -78,59 +80,88 @@ def branches return @branches if @branches @branches = [] - cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color" - shellout(cmd) do |io| + cmd_args = %w|branch --no-color| + scm_cmd(*cmd_args) do |io| io.each_line do |line| @branches << line.match('\s*\*?\s*(.*)$')[1] end end @branches.sort! + rescue ScmCommandAborted + nil end def tags return @tags if @tags - cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag" - shellout(cmd) do |io| + cmd_args = %w|tag| + scm_cmd(*cmd_args) do |io| @tags = io.readlines.sort!.map{|t| t.strip} end + rescue ScmCommandAborted + nil + end + + def default_branch + bras = self.branches + return nil if bras.nil? + bras.include?('master') ? 'master' : bras.first + end + + def entry(path=nil, identifier=nil) + parts = path.to_s.split(%r{[\/\\]}).select {|n| !n.blank?} + search_path = parts[0..-2].join('/') + search_name = parts[-1] + if search_path.blank? && search_name.blank? + # Root entry + Entry.new(:path => '', :kind => 'dir') + else + # Search for the entry in the parent directory + es = entries(search_path, identifier, + options = {:report_last_commit => false}) + es ? es.detect {|e| e.name == search_name} : nil + end end - def default_branch - branches.include?('master') ? 'master' : branches.first - end - - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) path ||= '' + p = scm_iconv(@path_encoding, 'UTF-8', path) entries = Entries.new - cmd = "#{self.class.sq_bin} --git-dir #{target('')} ls-tree -l " - cmd << shell_quote("HEAD:" + path) if identifier.nil? - cmd << shell_quote(identifier + ":" + path) if identifier - shellout(cmd) do |io| + cmd_args = %w|ls-tree -l| + cmd_args << "HEAD:#{p}" if identifier.nil? + cmd_args << "#{identifier}:#{p}" if identifier + scm_cmd(*cmd_args) do |io| io.each_line do |line| e = line.chomp.to_s if e =~ /^\d+\s+(\w+)\s+([0-9a-f]{40})\s+([0-9-]+)\t(.+)$/ type = $1 - sha = $2 + sha = $2 size = $3 name = $4 - full_path = path.empty? ? name : "#{path}/#{name}" - entries << Entry.new({:name => name, - :path => full_path, + if name.respond_to?(:force_encoding) + name.force_encoding(@path_encoding) + end + full_path = p.empty? ? name : "#{p}/#{name}" + n = scm_iconv('UTF-8', @path_encoding, name) + full_p = scm_iconv('UTF-8', @path_encoding, full_path) + entries << Entry.new({:name => n, + :path => full_p, :kind => (type == "tree") ? 'dir' : 'file', :size => (type == "tree") ? nil : size, - :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new + :lastrev => options[:report_last_commit] ? + lastrev(full_path, identifier) : Revision.new }) unless entries.detect{|entry| entry.name == name} end end end - return nil if $? && $?.exitstatus != 0 entries.sort_by_name + rescue ScmCommandAborted + nil end def lastrev(path, rev) return nil if path.nil? cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1| - cmd_args << rev if rev + cmd_args << rev if rev cmd_args << "--" << path unless path.empty? lines = [] scm_cmd(*cmd_args) { |io| lines = io.readlines } @@ -141,11 +172,11 @@ Revision.new({ :identifier => id, - :scmid => id, - :author => author, - :time => time, - :message => nil, - :paths => nil + :scmid => id, + :author => author, + :time => time, + :message => nil, + :paths => nil }) rescue NoMethodError => e logger.error("The revision '#{path}' has a wrong format") @@ -156,7 +187,7 @@ end def revisions(path, identifier_from, identifier_to, options={}) - revisions = Revisions.new + revs = Revisions.new cmd_args = %w|log --no-color --encoding=UTF-8 --raw --date=iso --pretty=fuller| cmd_args << "--reverse" if options[:reverse] cmd_args << "--all" if options[:all] @@ -166,13 +197,12 @@ from_to << "#{identifier_to}" if identifier_to cmd_args << from_to if !from_to.empty? cmd_args << "--since=#{options[:since].strftime("%Y-%m-%d %H:%M:%S")}" if options[:since] - cmd_args << "--" << path if path && !path.empty? + cmd_args << "--" << scm_iconv(@path_encoding, 'UTF-8', path) if path && !path.empty? scm_cmd *cmd_args do |io| files=[] changeset = {} parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files - revno = 1 io.each_line do |line| if line =~ /^commit ([0-9a-f]{40})$/ @@ -182,20 +212,19 @@ parsing_descr = 0 revision = Revision.new({ :identifier => changeset[:commit], - :scmid => changeset[:commit], - :author => changeset[:author], - :time => Time.parse(changeset[:date]), - :message => changeset[:description], - :paths => files + :scmid => changeset[:commit], + :author => changeset[:author], + :time => Time.parse(changeset[:date]), + :message => changeset[:description], + :paths => files }) if block_given? yield revision else - revisions << revision + revs << revision end changeset = {} files = [] - revno = revno + 1 end changeset[:commit] = $1 elsif (parsing_descr == 0) && line =~ /^(\w+):\s*(.*)$/ @@ -210,73 +239,75 @@ parsing_descr = 1 changeset[:description] = "" elsif (parsing_descr == 1 || parsing_descr == 2) \ - && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\t(.+)$/ + && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\t(.+)$/ parsing_descr = 2 - fileaction = $1 - filepath = $2 - files << {:action => fileaction, :path => filepath} + fileaction = $1 + filepath = $2 + p = scm_iconv('UTF-8', @path_encoding, filepath) + files << {:action => fileaction, :path => p} elsif (parsing_descr == 1 || parsing_descr == 2) \ - && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\d+\s+(\S+)\t(.+)$/ + && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\d+\s+(\S+)\t(.+)$/ parsing_descr = 2 - fileaction = $1 - filepath = $3 - files << {:action => fileaction, :path => filepath} + fileaction = $1 + filepath = $3 + p = scm_iconv('UTF-8', @path_encoding, filepath) + files << {:action => fileaction, :path => p} elsif (parsing_descr == 1) && line.chomp.to_s == "" parsing_descr = 2 elsif (parsing_descr == 1) changeset[:description] << line[4..-1] end - end + end if changeset[:commit] revision = Revision.new({ :identifier => changeset[:commit], - :scmid => changeset[:commit], - :author => changeset[:author], - :time => Time.parse(changeset[:date]), - :message => changeset[:description], - :paths => files - }) - + :scmid => changeset[:commit], + :author => changeset[:author], + :time => Time.parse(changeset[:date]), + :message => changeset[:description], + :paths => files + }) if block_given? yield revision else - revisions << revision + revs << revision end end end - revisions - rescue ScmCommandAborted - revisions + revs + rescue ScmCommandAborted => e + logger.error("git log #{from_to.to_s} error: #{e.message}") + revs end def diff(path, identifier_from, identifier_to=nil) path ||= '' - + cmd_args = [] if identifier_to - cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" + cmd_args << "diff" << "--no-color" << identifier_to << identifier_from else - cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" + cmd_args << "show" << "--no-color" << identifier_from end - - cmd << " -- #{shell_quote path}" unless path.empty? + cmd_args << "--" << scm_iconv(@path_encoding, 'UTF-8', path) unless path.empty? diff = [] - shellout(cmd) do |io| + scm_cmd *cmd_args do |io| io.each_line do |line| diff << line end end - return nil if $? && $?.exitstatus != 0 diff + rescue ScmCommandAborted + nil end - + def annotate(path, identifier=nil) identifier = 'HEAD' if identifier.blank? - cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" + cmd_args = %w|blame| + cmd_args << "-p" << identifier << "--" << scm_iconv(@path_encoding, 'UTF-8', path) blame = Annotate.new content = nil - shellout(cmd) { |io| io.binmode; content = io.read } - return nil if $? && $?.exitstatus != 0 + scm_cmd(*cmd_args) { |io| io.binmode; content = io.read } # git annotates binary files return nil if content.is_binary_data? identifier = '' @@ -288,26 +319,35 @@ elsif line =~ /^author (.+)/ authors_by_commit[identifier] = $1.strip elsif line =~ /^\t(.*)/ - blame.add_line($1, Revision.new(:identifier => identifier, :author => authors_by_commit[identifier])) + blame.add_line($1, Revision.new( + :identifier => identifier, + :revision => identifier, + :scmid => identifier, + :author => authors_by_commit[identifier] + )) identifier = '' author = '' end end blame + rescue ScmCommandAborted + nil end def cat(path, identifier=nil) if identifier.nil? identifier = 'HEAD' end - cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" + cmd_args = %w|show --no-color| + cmd_args << "#{identifier}:#{scm_iconv(@path_encoding, 'UTF-8', path)}" cat = nil - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.binmode cat = io.read end - return nil if $? && $?.exitstatus != 0 cat + rescue ScmCommandAborted + nil end class Revision < Redmine::Scm::Adapters::Revision @@ -320,6 +360,10 @@ def scm_cmd(*args, &block) repo_path = root_url || url full_args = [GIT_BIN, '--git-dir', repo_path] + if self.class.client_version_above?([1, 7, 2]) + full_args << '-c' << 'core.quotepath=false' + full_args << '-c' << 'log.decorate=no' + end full_args += args ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) if $? && $?.exitstatus != 0 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -47,7 +47,7 @@ end def client_available - !client_version.empty? + client_version_above?([0, 9, 5]) end def hgversion @@ -83,7 +83,11 @@ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) super - @path_encoding = path_encoding || 'UTF-8' + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + end + + def path_encoding + @path_encoding end def info @@ -118,7 +122,7 @@ end def summary - return @summary if @summary + return @summary if @summary hg 'rhsummary' do |io| output = io.read if output.respond_to?(:force_encoding) @@ -132,7 +136,7 @@ end private :summary - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) p1 = scm_iconv(@path_encoding, 'UTF-8', path) manifest = hg('rhmanifest', '-r', CGI.escape(hgrev(identifier)), CGI.escape(without_leading_slash(p1.to_s))) do |io| @@ -193,30 +197,39 @@ rescue end end - as_ary(log['logentry']).each do |le| cpalist = as_ary(le['paths']['path-copied']).map do |e| - [e['__content__'], e['copyfrom-path']].map { |s| CGI.unescape(s) } + [e['__content__'], e['copyfrom-path']].map do |s| + scm_iconv('UTF-8', @path_encoding, CGI.unescape(s)) + end end cpmap = Hash[*cpalist.flatten] - paths = as_ary(le['paths']['path']).map do |e| p = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['__content__']) ) - {:action => e['action'], :path => with_leading_slash(p), - :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil), - :from_revision => (cpmap.member?(p) ? le['revision'] : nil)} + {:action => e['action'], + :path => with_leading_slash(p), + :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil), + :from_revision => (cpmap.member?(p) ? le['node'] : nil)} end.sort { |a, b| a[:path] <=> b[:path] } - yield Revision.new(:revision => le['revision'], - :scmid => le['node'], - :author => (le['author']['__content__'] rescue ''), - :time => Time.parse(le['date']['__content__']).localtime, - :message => le['msg']['__content__'], - :paths => paths) + :scmid => le['node'], + :author => (le['author']['__content__'] rescue ''), + :time => Time.parse(le['date']['__content__']), + :message => le['msg']['__content__'], + :paths => paths) end self end + # Returns list of nodes in the specified branch + def nodes_in_branch(branch, options={}) + hg_args = ['rhlog', '--template', '{node|short}\n', '--rhbranch', CGI.escape(branch)] + hg_args << '--from' << CGI.escape(branch) + hg_args << '--to' << '0' + hg_args << '--limit' << options[:limit] if options[:limit] + hg(*hg_args) { |io| io.readlines.map { |e| e.chomp } } + end + def diff(path, identifier_from, identifier_to=nil) hg_args = %w|rhdiff| if identifier_to @@ -241,7 +254,7 @@ def cat(path, identifier=nil) p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) - hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io| + hg 'rhcat', '-r', CGI.escape(hgrev(identifier)), hgtarget(p) do |io| io.binmode io.read end @@ -252,7 +265,7 @@ def annotate(path, identifier=nil) p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) blame = Annotate.new - hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io| + hg 'rhannotate', '-ncu', '-r', CGI.escape(hgrev(identifier)), hgtarget(p) do |io| io.each_line do |line| line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding) next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$} diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,282 +1,291 @@ -# Redmine - project management software -# Copyright (C) 2006-2010 Jean-Philippe Lang -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -require 'redmine/scm/adapters/abstract_adapter' -require 'uri' - -module Redmine - module Scm - module Adapters - class SubversionAdapter < AbstractAdapter - - # SVN executable name - SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn" - - class << self - def client_command - @@bin ||= SVN_BIN - end - - def sq_bin - @@sq_bin ||= shell_quote(SVN_BIN) - end - - def client_version - @@client_version ||= (svn_binary_version || []) - end - - def client_available - !client_version.empty? - end - - def svn_binary_version - scm_version = scm_version_from_command_line.dup - if scm_version.respond_to?(:force_encoding) - scm_version.force_encoding('ASCII-8BIT') - end - if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) - m[2].scan(%r{\d+}).collect(&:to_i) - end - end - - def scm_version_from_command_line - shellout("#{sq_bin} --version") { |io| io.read }.to_s - end - end - - # Get info about the svn repository - def info - cmd = "#{self.class.sq_bin} info --xml #{target}" - cmd << credentials_string - info = nil - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - #root_url = doc.elements["info/entry/repository/root"].text - info = Info.new({:root_url => doc['info']['entry']['repository']['root']['__content__'], - :lastrev => Revision.new({ - :identifier => doc['info']['entry']['commit']['revision'], - :time => Time.parse(doc['info']['entry']['commit']['date']['__content__']).localtime, - :author => (doc['info']['entry']['commit']['author'] ? doc['info']['entry']['commit']['author']['__content__'] : "") - }) - }) - rescue - end - end - return nil if $? && $?.exitstatus != 0 - info - rescue CommandFailed - return nil - end - - # Returns an Entries collection - # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) - path ||= '' - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - entries = Entries.new - cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}" - cmd << credentials_string - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - each_xml_element(doc['lists']['list'], 'entry') do |entry| - commit = entry['commit'] - commit_date = commit['date'] - # Skip directory if there is no commit date (usually that - # means that we don't have read access to it) - next if entry['kind'] == 'dir' && commit_date.nil? - name = entry['name']['__content__'] - entries << Entry.new({:name => URI.unescape(name), - :path => ((path.empty? ? "" : "#{path}/") + name), - :kind => entry['kind'], - :size => ((s = entry['size']) ? s['__content__'].to_i : nil), - :lastrev => Revision.new({ - :identifier => commit['revision'], - :time => Time.parse(commit_date['__content__'].to_s).localtime, - :author => ((a = commit['author']) ? a['__content__'] : nil) - }) - }) - end - rescue Exception => e - logger.error("Error parsing svn output: #{e.message}") - logger.error("Output was:\n #{output}") - end - end - return nil if $? && $?.exitstatus != 0 - logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? - entries.sort_by_name - end - - def properties(path, identifier=nil) - # proplist xml output supported in svn 1.5.0 and higher - return nil unless self.class.client_version_above?([1, 5, 0]) - - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}" - cmd << credentials_string - properties = {} - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - each_xml_element(doc['properties']['target'], 'property') do |property| - properties[ property['name'] ] = property['__content__'].to_s - end - rescue - end - end - return nil if $? && $?.exitstatus != 0 - properties - end - - def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) - path ||= '' - identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" - identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1 - revisions = Revisions.new - cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}" - cmd << credentials_string - cmd << " --verbose " if options[:with_paths] - cmd << " --limit #{options[:limit].to_i}" if options[:limit] - cmd << ' ' + target(path) - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - each_xml_element(doc['log'], 'logentry') do |logentry| - paths = [] - each_xml_element(logentry['paths'], 'path') do |path| - paths << {:action => path['action'], - :path => path['__content__'], - :from_path => path['copyfrom-path'], - :from_revision => path['copyfrom-rev'] - } - end if logentry['paths'] && logentry['paths']['path'] - paths.sort! { |x,y| x[:path] <=> y[:path] } - - revisions << Revision.new({:identifier => logentry['revision'], - :author => (logentry['author'] ? logentry['author']['__content__'] : ""), - :time => Time.parse(logentry['date']['__content__'].to_s).localtime, - :message => logentry['msg']['__content__'], - :paths => paths - }) - end - rescue - end - end - return nil if $? && $?.exitstatus != 0 - revisions - end - - def diff(path, identifier_from, identifier_to=nil, type="inline") - path ||= '' - identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : '' - - identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1) - - cmd = "#{self.class.sq_bin} diff -r " - cmd << "#{identifier_to}:" - cmd << "#{identifier_from}" - cmd << " #{target(path)}@#{identifier_from}" - cmd << credentials_string - diff = [] - shellout(cmd) do |io| - io.each_line do |line| - diff << line - end - end - return nil if $? && $?.exitstatus != 0 - diff - end - - def cat(path, identifier=nil) - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" - cmd << credentials_string - cat = nil - shellout(cmd) do |io| - io.binmode - cat = io.read - end - return nil if $? && $?.exitstatus != 0 - cat - end - - def annotate(path, identifier=nil) - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" - cmd << credentials_string - blame = Annotate.new - shellout(cmd) do |io| - io.each_line do |line| - next unless line =~ %r{^\s*(\d+)\s*(\S+)\s(.*)$} - blame.add_line($3.rstrip, Revision.new(:identifier => $1.to_i, :author => $2.strip)) - end - end - return nil if $? && $?.exitstatus != 0 - blame - end - - private - - def credentials_string - str = '' - str << " --username #{shell_quote(@login)}" unless @login.blank? - str << " --password #{shell_quote(@password)}" unless @login.blank? || @password.blank? - str << " --no-auth-cache --non-interactive" - str - end - - # Helper that iterates over the child elements of a xml node - # MiniXml returns a hash when a single child is found or an array of hashes for multiple children - def each_xml_element(node, name) - if node && node[name] - if node[name].is_a?(Hash) - yield node[name] - else - node[name].each do |element| - yield element - end - end - end - end - - def target(path = '') - base = path.match(/^\//) ? root_url : url - uri = "#{base}/#{path}" - uri = URI.escape(URI.escape(uri), '[]') - shell_quote(uri.gsub(/[?<>\*]/, '')) - end - end - end - end -end +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require 'redmine/scm/adapters/abstract_adapter' +require 'uri' + +module Redmine + module Scm + module Adapters + class SubversionAdapter < AbstractAdapter + + # SVN executable name + SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn" + + class << self + def client_command + @@bin ||= SVN_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(SVN_BIN) + end + + def client_version + @@client_version ||= (svn_binary_version || []) + end + + def client_available + # --xml options are introduced in 1.3. + # http://subversion.apache.org/docs/release-notes/1.3.html + client_version_above?([1, 3]) + end + + def svn_binary_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s + end + end + + # Get info about the svn repository + def info + cmd = "#{self.class.sq_bin} info --xml #{target}" + cmd << credentials_string + info = nil + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + # root_url = doc.elements["info/entry/repository/root"].text + info = Info.new({:root_url => doc['info']['entry']['repository']['root']['__content__'], + :lastrev => Revision.new({ + :identifier => doc['info']['entry']['commit']['revision'], + :time => Time.parse(doc['info']['entry']['commit']['date']['__content__']).localtime, + :author => (doc['info']['entry']['commit']['author'] ? doc['info']['entry']['commit']['author']['__content__'] : "") + }) + }) + rescue + end + end + return nil if $? && $?.exitstatus != 0 + info + rescue CommandFailed + return nil + end + + # Returns an Entries collection + # or nil if the given path doesn't exist in the repository + def entries(path=nil, identifier=nil, options={}) + path ||= '' + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + entries = Entries.new + cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}" + cmd << credentials_string + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + each_xml_element(doc['lists']['list'], 'entry') do |entry| + commit = entry['commit'] + commit_date = commit['date'] + # Skip directory if there is no commit date (usually that + # means that we don't have read access to it) + next if entry['kind'] == 'dir' && commit_date.nil? + name = entry['name']['__content__'] + entries << Entry.new({:name => URI.unescape(name), + :path => ((path.empty? ? "" : "#{path}/") + name), + :kind => entry['kind'], + :size => ((s = entry['size']) ? s['__content__'].to_i : nil), + :lastrev => Revision.new({ + :identifier => commit['revision'], + :time => Time.parse(commit_date['__content__'].to_s).localtime, + :author => ((a = commit['author']) ? a['__content__'] : nil) + }) + }) + end + rescue Exception => e + logger.error("Error parsing svn output: #{e.message}") + logger.error("Output was:\n #{output}") + end + end + return nil if $? && $?.exitstatus != 0 + logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? + entries.sort_by_name + end + + def properties(path, identifier=nil) + # proplist xml output supported in svn 1.5.0 and higher + return nil unless self.class.client_version_above?([1, 5, 0]) + + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}" + cmd << credentials_string + properties = {} + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + each_xml_element(doc['properties']['target'], 'property') do |property| + properties[ property['name'] ] = property['__content__'].to_s + end + rescue + end + end + return nil if $? && $?.exitstatus != 0 + properties + end + + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) + path ||= '' + identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" + identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1 + revisions = Revisions.new + cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}" + cmd << credentials_string + cmd << " --verbose " if options[:with_paths] + cmd << " --limit #{options[:limit].to_i}" if options[:limit] + cmd << ' ' + target(path) + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + each_xml_element(doc['log'], 'logentry') do |logentry| + paths = [] + each_xml_element(logentry['paths'], 'path') do |path| + paths << {:action => path['action'], + :path => path['__content__'], + :from_path => path['copyfrom-path'], + :from_revision => path['copyfrom-rev'] + } + end if logentry['paths'] && logentry['paths']['path'] + paths.sort! { |x,y| x[:path] <=> y[:path] } + + revisions << Revision.new({:identifier => logentry['revision'], + :author => (logentry['author'] ? logentry['author']['__content__'] : ""), + :time => Time.parse(logentry['date']['__content__'].to_s).localtime, + :message => logentry['msg']['__content__'], + :paths => paths + }) + end + rescue + end + end + return nil if $? && $?.exitstatus != 0 + revisions + end + + def diff(path, identifier_from, identifier_to=nil, type="inline") + path ||= '' + identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : '' + + identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1) + + cmd = "#{self.class.sq_bin} diff -r " + cmd << "#{identifier_to}:" + cmd << "#{identifier_from}" + cmd << " #{target(path)}@#{identifier_from}" + cmd << credentials_string + diff = [] + shellout(cmd) do |io| + io.each_line do |line| + diff << line + end + end + return nil if $? && $?.exitstatus != 0 + diff + end + + def cat(path, identifier=nil) + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" + cmd << credentials_string + cat = nil + shellout(cmd) do |io| + io.binmode + cat = io.read + end + return nil if $? && $?.exitstatus != 0 + cat + end + + def annotate(path, identifier=nil) + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" + cmd << credentials_string + blame = Annotate.new + shellout(cmd) do |io| + io.each_line do |line| + next unless line =~ %r{^\s*(\d+)\s*(\S+)\s(.*)$} + rev = $1 + blame.add_line($3.rstrip, + Revision.new( + :identifier => rev, + :revision => rev, + :author => $2.strip + )) + end + end + return nil if $? && $?.exitstatus != 0 + blame + end + + private + + def credentials_string + str = '' + str << " --username #{shell_quote(@login)}" unless @login.blank? + str << " --password #{shell_quote(@password)}" unless @login.blank? || @password.blank? + str << " --no-auth-cache --non-interactive" + str + end + + # Helper that iterates over the child elements of a xml node + # MiniXml returns a hash when a single child is found + # or an array of hashes for multiple children + def each_xml_element(node, name) + if node && node[name] + if node[name].is_a?(Hash) + yield node[name] + else + node[name].each do |element| + yield element + end + end + end + end + + def target(path = '') + base = path.match(/^\//) ? root_url : url + uri = "#{base}/#{path}" + uri = URI.escape(URI.escape(uri), '[]') + shell_quote(uri.gsub(/[?<>\*]/, '')) + end + end + end + end +end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/abstract_adapter.rb --- a/lib/redmine/scm/adapters/abstract_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/abstract_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -90,12 +90,16 @@ def url @url end - + + def path_encoding + nil + end + # get info about the svn repository def info return nil end - + # Returns the entry identified by path and revision identifier # or nil if entry doesn't exist in the repository def entry(path=nil, identifier=nil) @@ -111,10 +115,10 @@ es ? es.detect {|e| e.name == search_name} : nil end end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) return nil end @@ -122,30 +126,30 @@ return nil end - def tags + def tags return nil end def default_branch return nil end - + def properties(path, identifier=nil) return nil end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) return nil end - + def diff(path, identifier_from, identifier_to=nil) return nil end - + def cat(path, identifier=nil) return nil end - + def with_leading_slash(path) path ||= '' (path[0,1]!="/") ? "/#{path}" : path @@ -175,7 +179,7 @@ info = self.info info ? info.root_url : nil end - + def target(path) path ||= '' base = path.match(/^\//) ? root_url : url @@ -223,7 +227,7 @@ q = (Redmine::Platform.mswin? ? '"' : "'") cmd.to_s.gsub(/(\-\-(password|username))\s+(#{q}[^#{q}]+#{q}|[^#{q}]\S+)/, '\\1 xxxx') end - + def strip_credential(cmd) self.class.strip_credential(cmd) end @@ -242,7 +246,7 @@ class Entries < Array def sort_by_name - sort {|x,y| + sort {|x,y| if x.kind == y.kind x.name.to_s <=> y.name.to_s else @@ -250,12 +254,12 @@ end } end - + def revisions revisions ||= Revisions.new(collect{|entry| entry.lastrev}.compact) end end - + class Info attr_accessor :root_url, :lastrev def initialize(attributes={}) @@ -263,7 +267,7 @@ self.lastrev = attributes[:lastrev] end end - + class Entry attr_accessor :name, :path, :kind, :size, :lastrev def initialize(attributes={}) @@ -273,20 +277,20 @@ self.size = attributes[:size].to_i if attributes[:size] self.lastrev = attributes[:lastrev] end - + def is_file? 'file' == self.kind end - + def is_dir? 'dir' == self.kind end - + def is_text? Redmine::MimeType.is_type?('text', name) end end - + class Revisions < Array def latest sort {|x,y| @@ -296,53 +300,48 @@ 0 end }.last - end + end end - + class Revision - attr_accessor :scmid, :name, :author, :time, :message, :paths, :revision, :branch - attr_writer :identifier + attr_accessor :scmid, :name, :author, :time, :message, + :paths, :revision, :branch, :identifier def initialize(attributes={}) self.identifier = attributes[:identifier] - self.scmid = attributes[:scmid] - self.name = attributes[:name] || self.identifier - self.author = attributes[:author] - self.time = attributes[:time] - self.message = attributes[:message] || "" - self.paths = attributes[:paths] - self.revision = attributes[:revision] - self.branch = attributes[:branch] - end - - # Returns the identifier of this revision; see also Changeset model - def identifier - (@identifier || revision).to_s + self.scmid = attributes[:scmid] + self.name = attributes[:name] || self.identifier + self.author = attributes[:author] + self.time = attributes[:time] + self.message = attributes[:message] || "" + self.paths = attributes[:paths] + self.revision = attributes[:revision] + self.branch = attributes[:branch] end # Returns the readable identifier. def format_identifier - identifier + self.identifier.to_s end end class Annotate attr_reader :lines, :revisions - + def initialize @lines = [] @revisions = [] end - + def add_line(line, revision) @lines << line @revisions << revision end - + def content content = lines.join("\n") end - + def empty? lines.empty? end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/bazaar_adapter.rb --- a/lib/redmine/scm/adapters/bazaar_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/bazaar_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -78,12 +78,12 @@ # Returns an Entries collection # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) path ||= '' entries = Entries.new cmd = "#{self.class.sq_bin} ls -v --show-ids" - identifier = -1 unless identifier && identifier.to_i > 0 - cmd << " -r#{identifier.to_i}" + identifier = -1 unless identifier && identifier.to_i > 0 + cmd << " -r#{identifier.to_i}" cmd << " #{target(path)}" shellout(cmd) do |io| prefix = "#{url}/#{path}".gsub('\\', '/') @@ -120,7 +120,6 @@ parsing = nil else next unless revision - if line =~ /^revno: (\d+)($|\s\[merge\]$)/ revision.identifier = $1.to_i elsif line =~ /^committer: (.+)$/ @@ -168,7 +167,7 @@ def diff(path, identifier_from, identifier_to=nil) path ||= '' if identifier_to - identifier_to = identifier_to.to_i + identifier_to = identifier_to.to_i else identifier_to = identifier_from.to_i - 1 end @@ -209,7 +208,13 @@ identifier = nil io.each_line do |line| next unless line =~ %r{^(\d+) ([^|]+)\| (.*)$} - blame.add_line($3.rstrip, Revision.new(:identifier => $1.to_i, :author => $2.strip)) + rev = $1 + blame.add_line($3.rstrip, + Revision.new( + :identifier => rev, + :revision => rev, + :author => $2.strip + )) end end return nil if $? && $?.exitstatus != 0 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/cvs_adapter.rb --- a/lib/redmine/scm/adapters/cvs_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/cvs_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -5,12 +5,12 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -25,6 +25,9 @@ # CVS executable name CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs" + # raised if scm command exited with error, e.g. unknown revision. + class ScmCommandAborted < CommandFailed; end + class << self def client_command @@bin ||= CVS_BIN @@ -58,26 +61,25 @@ end # Guidelines for the input: - # url -> the project-path, relative to the cvsroot (eg. module name) + # url -> the project-path, relative to the cvsroot (eg. module name) # root_url -> the good old, sometimes damned, CVSROOT - # login -> unnecessary + # login -> unnecessary # password -> unnecessary too def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) - @url = url - @login = login if login && !login.empty? + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + @url = url + # TODO: better Exception here (IllegalArgumentException) + raise CommandFailed if root_url.blank? + @root_url = root_url + + # These are unused. + @login = login if login && !login.empty? @password = (password || "") if @login - #TODO: better Exception here (IllegalArgumentException) - raise CommandFailed if root_url.blank? - @root_url = root_url end - def root_url - @root_url - end - - def url - @url + def path_encoding + @path_encoding end def info @@ -92,43 +94,59 @@ # Returns an Entries collection # or nil if the given path doesn't exist in the repository # this method is used by the repository-browser (aka LIST) - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) logger.debug " entries '#{path}' with identifier '#{identifier}'" - path_with_project="#{url}#{with_leading_slash(path)}" + path_locale = scm_iconv(@path_encoding, 'UTF-8', path) + path_locale.force_encoding("ASCII-8BIT") if path_locale.respond_to?(:force_encoding) entries = Entries.new - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rls -e" - cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier - cmd << " #{shell_quote path_with_project}" - shellout(cmd) do |io| - io.each_line(){|line| - fields=line.chop.split('/',-1) + cmd_args = %w|-q rls -e| + cmd_args << "-D" << time_to_cvstime_rlog(identifier) if identifier + cmd_args << path_with_proj(path) + scm_cmd(*cmd_args) do |io| + io.each_line() do |line| + fields = line.chop.split('/',-1) logger.debug(">>InspectLine #{fields.inspect}") - if fields[0]!="D" - entries << Entry.new({:name => fields[-5], + time = nil + # Thu Dec 13 16:27:22 2007 + time_l = fields[-3].split(' ') + if time_l.size == 5 && time_l[4].length == 4 + begin + time = Time.parse( + "#{time_l[1]} #{time_l[2]} #{time_l[3]} GMT #{time_l[4]}") + rescue + end + end + entries << Entry.new( + { + :name => scm_iconv('UTF-8', @path_encoding, fields[-5]), #:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]), - :path => "#{path}/#{fields[-5]}", + :path => scm_iconv('UTF-8', @path_encoding, "#{path_locale}/#{fields[-5]}"), :kind => 'file', :size => nil, - :lastrev => Revision.new({ - :revision => fields[-4], - :name => fields[-4], - :time => Time.parse(fields[-3]), - :author => '' + :lastrev => Revision.new( + { + :revision => fields[-4], + :name => scm_iconv('UTF-8', @path_encoding, fields[-4]), + :time => time, + :author => '' + }) }) - }) else - entries << Entry.new({:name => fields[1], - :path => "#{path}/#{fields[1]}", - :kind => 'dir', - :size => nil, + entries << Entry.new( + { + :name => scm_iconv('UTF-8', @path_encoding, fields[1]), + :path => scm_iconv('UTF-8', @path_encoding, "#{path_locale}/#{fields[1]}"), + :kind => 'dir', + :size => nil, :lastrev => nil - }) + }) end - } + end end - return nil if $? && $?.exitstatus != 0 entries.sort_by_name + rescue ScmCommandAborted + nil end STARTLOG="----------------------------" @@ -138,111 +156,106 @@ # in the repository. both identifier have to be dates or nil. # these method returns nothing but yield every result in block def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}, &block) - logger.debug " revisions path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" - - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rlog" - cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from - cmd << " #{shell_quote path_with_project}" - shellout(cmd) do |io| - state="entry_start" - - commit_log=String.new - revision=nil - date=nil - author=nil - entry_path=nil - entry_name=nil - file_state=nil - branch_map=nil - + path_with_project_utf8 = path_with_proj(path) + path_with_project_locale = scm_iconv(@path_encoding, 'UTF-8', path_with_project_utf8) + logger.debug " revisions path:" + + "'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" + cmd_args = %w|-q rlog| + cmd_args << "-d" << ">#{time_to_cvstime_rlog(identifier_from)}" if identifier_from + cmd_args << path_with_project_utf8 + scm_cmd(*cmd_args) do |io| + state = "entry_start" + commit_log = String.new + revision = nil + date = nil + author = nil + entry_path = nil + entry_name = nil + file_state = nil + branch_map = nil io.each_line() do |line| - - if state!="revision" && /^#{ENDLOG}/ =~ line - commit_log=String.new - revision=nil - state="entry_start" + if state != "revision" && /^#{ENDLOG}/ =~ line + commit_log = String.new + revision = nil + state = "entry_start" end - - if state=="entry_start" - branch_map=Hash.new - if /^RCS file: #{Regexp.escape(root_url_path)}\/#{Regexp.escape(path_with_project)}(.+),v$/ =~ line + if state == "entry_start" + branch_map = Hash.new + if /^RCS file: #{Regexp.escape(root_url_path)}\/#{Regexp.escape(path_with_project_locale)}(.+),v$/ =~ line entry_path = normalize_cvs_path($1) entry_name = normalize_path(File.basename($1)) logger.debug("Path #{entry_path} <=> Name #{entry_name}") elsif /^head: (.+)$/ =~ line entry_headRev = $1 #unless entry.nil? elsif /^symbolic names:/ =~ line - state="symbolic" #unless entry.nil? + state = "symbolic" #unless entry.nil? elsif /^#{STARTLOG}/ =~ line - commit_log=String.new - state="revision" - end + commit_log = String.new + state = "revision" + end next - elsif state=="symbolic" - if /^(.*):\s(.*)/ =~ (line.strip) - branch_map[$1]=$2 + elsif state == "symbolic" + if /^(.*):\s(.*)/ =~ (line.strip) + branch_map[$1] = $2 else - state="tags" + state = "tags" next - end - elsif state=="tags" + end + elsif state == "tags" if /^#{STARTLOG}/ =~ line commit_log = "" - state="revision" + state = "revision" elsif /^#{ENDLOG}/ =~ line - state="head" + state = "head" end next - elsif state=="revision" + elsif state == "revision" if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line if revision - - revHelper=CvsRevisionHelper.new(revision) - revBranch="HEAD" - - branch_map.each() do |branch_name,branch_point| + revHelper = CvsRevisionHelper.new(revision) + revBranch = "HEAD" + branch_map.each() do |branch_name, branch_point| if revHelper.is_in_branch_with_symbol(branch_point) - revBranch=branch_name + revBranch = branch_name end end - logger.debug("********** YIELD Revision #{revision}::#{revBranch}") - yield Revision.new({ - :time => date, - :author => author, - :message=>commit_log.chomp, + :time => date, + :author => author, + :message => commit_log.chomp, :paths => [{ :revision => revision, - :branch=> revBranch, - :path=>entry_path, - :name=>entry_name, - :kind=>'file', - :action=>file_state - }] - }) + :branch => revBranch, + :path => scm_iconv('UTF-8', @path_encoding, entry_path), + :name => scm_iconv('UTF-8', @path_encoding, entry_name), + :kind => 'file', + :action => file_state + }] + }) end - - commit_log=String.new - revision=nil - + commit_log = String.new + revision = nil if /^#{ENDLOG}/ =~ line - state="entry_start" + state = "entry_start" end next end if /^branches: (.+)$/ =~ line - #TODO: version.branch = $1 + # TODO: version.branch = $1 elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line - revision = $1 + revision = $1 elsif /^date:\s+(\d+.\d+.\d+\s+\d+:\d+:\d+)/ =~ line - date = Time.parse($1) - author = /author: ([^;]+)/.match(line)[1] - file_state = /state: ([^;]+)/.match(line)[1] - #TODO: linechanges only available in CVS.... maybe a feature our SVN implementation. i'm sure, they are - # useful for stats or something else + date = Time.parse($1) + line_utf8 = scm_iconv('UTF-8', options[:log_encoding], line) + author_utf8 = /author: ([^;]+)/.match(line_utf8)[1] + author = scm_iconv(options[:log_encoding], 'UTF-8', author_utf8) + file_state = /state: ([^;]+)/.match(line)[1] + # TODO: + # linechanges only available in CVS.... + # maybe a feature our SVN implementation. + # I'm sure, they are useful for stats or something else # linechanges =/lines: \+(\d+) -(\d+)/.match(line) # unless linechanges.nil? # version.line_plus = linechanges[1] @@ -257,52 +270,66 @@ end end end + rescue ScmCommandAborted + Revisions.new end def diff(path, identifier_from, identifier_to=nil) - logger.debug " diff path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" + logger.debug " diff path:'#{path}'" + + ",identifier_from #{identifier_from}, identifier_to #{identifier_to}" + cmd_args = %w|rdiff -u| + cmd_args << "-r#{identifier_to}" + cmd_args << "-r#{identifier_from}" + cmd_args << path_with_proj(path) diff = [] - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.each_line do |line| diff << line end end - return nil if $? && $?.exitstatus != 0 diff + rescue ScmCommandAborted + nil end def cat(path, identifier=nil) identifier = (identifier) ? identifier : "HEAD" logger.debug " cat path:'#{path}',identifier #{identifier}" - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} co" - cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier - cmd << " -p #{shell_quote path_with_project}" + cmd_args = %w|-q co| + cmd_args << "-D" << time_to_cvstime(identifier) if identifier + cmd_args << "-p" << path_with_proj(path) cat = nil - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.binmode cat = io.read end - return nil if $? && $?.exitstatus != 0 cat + rescue ScmCommandAborted + nil end def annotate(path, identifier=nil) - identifier = (identifier) ? identifier.to_i : "HEAD" + identifier = (identifier) ? identifier : "HEAD" logger.debug " annotate path:'#{path}',identifier #{identifier}" - path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" + cmd_args = %w|rannotate| + cmd_args << "-D" << time_to_cvstime(identifier) if identifier + cmd_args << path_with_proj(path) blame = Annotate.new - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.each_line do |line| next unless line =~ %r{^([\d\.]+)\s+\(([^\)]+)\s+[^\)]+\):\s(.*)$} - blame.add_line($3.rstrip, Revision.new(:revision => $1, :author => $2.strip)) + blame.add_line( + $3.rstrip, + Revision.new( + :revision => $1, + :identifier => nil, + :author => $2.strip + )) end end - return nil if $? && $?.exitstatus != 0 blame + rescue ScmCommandAborted + Annotate.new end private @@ -317,12 +344,12 @@ # convert a date/time into the CVS-format def time_to_cvstime(time) return nil if time.nil? - return Time.now if time == 'HEAD' - + time = Time.now if time == 'HEAD' + unless time.kind_of? Time time = Time.parse(time) end - return time.strftime("%Y-%m-%d %H:%M:%S") + return time_to_cvstime_rlog(time) end def time_to_cvstime_rlog(time) @@ -330,77 +357,104 @@ t1 = time.clone.localtime return t1.strftime("%Y-%m-%d %H:%M:%S") end - + def normalize_cvs_path(path) normalize_path(path.gsub(/Attic\//,'')) end - + def normalize_path(path) path.sub(/^(\/)*(.*)/,'\2').sub(/(.*)(,v)+/,'\1') - end - end - + end + + def path_with_proj(path) + "#{url}#{with_leading_slash(path)}" + end + private :path_with_proj + + class Revision < Redmine::Scm::Adapters::Revision + # Returns the readable identifier + def format_identifier + revision.to_s + end + end + + def scm_cmd(*args, &block) + full_args = [CVS_BIN, '-d', root_url] + full_args += args + full_args_locale = [] + full_args.map do |e| + full_args_locale << scm_iconv(@path_encoding, 'UTF-8', e) + end + ret = shellout(full_args_locale.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise ScmCommandAborted, "cvs exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :scm_cmd + end + class CvsRevisionHelper attr_accessor :complete_rev, :revision, :base, :branchid - + def initialize(complete_rev) @complete_rev = complete_rev parseRevision() end - + def branchPoint return @base end - + def branchVersion if isBranchRevision return @base+"."+@branchid end return @base end - + def isBranchRevision !@branchid.nil? end - + def prevRev - unless @revision==0 - return buildRevision(@revision-1) + unless @revision == 0 + return buildRevision( @revision - 1 ) end - return buildRevision(@revision) + return buildRevision( @revision ) end - + def is_in_branch_with_symbol(branch_symbol) - bpieces=branch_symbol.split(".") - branch_start="#{bpieces[0..-3].join(".")}.#{bpieces[-1]}" - return (branchVersion==branch_start) + bpieces = branch_symbol.split(".") + branch_start = "#{bpieces[0..-3].join(".")}.#{bpieces[-1]}" + return ( branchVersion == branch_start ) end - + private def buildRevision(rev) - if rev== 0 + if rev == 0 if @branchid.nil? - @base+".0" + @base + ".0" else @base end - elsif @branchid.nil? - @base+"."+rev.to_s + elsif @branchid.nil? + @base + "." + rev.to_s else - @base+"."+@branchid+"."+rev.to_s + @base + "." + @branchid + "." + rev.to_s end end - + # Interpretiert die cvs revisionsnummern wie z.b. 1.14 oder 1.3.0.15 def parseRevision() - pieces=@complete_rev.split(".") - @revision=pieces.last.to_i - baseSize=1 - baseSize+=(pieces.size/2) - @base=pieces[0..-baseSize].join(".") + pieces = @complete_rev.split(".") + @revision = pieces.last.to_i + baseSize = 1 + baseSize += (pieces.size / 2) + @base = pieces[0..-baseSize].join(".") if baseSize > 2 - @branchid=pieces[-2] - end + @branchid = pieces[-2] + end end end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/darcs_adapter.rb --- a/lib/redmine/scm/adapters/darcs_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/darcs_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -76,7 +76,7 @@ # Returns an Entries collection # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) path_prefix = (path.blank? ? '' : "#{path}/") if path.blank? path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' ) diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/filesystem_adapter.rb --- a/lib/redmine/scm/adapters/filesystem_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/filesystem_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# RedMine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # FileSystem adapter # File written by Paul Rivier, at Demotera. @@ -8,12 +8,12 @@ # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -35,14 +35,18 @@ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) @url = with_trailling_slash(url) - @path_encoding = path_encoding || 'UTF-8' + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + end + + def path_encoding + @path_encoding end def format_path_ends(path, leading=true, trailling=true) - path = leading ? with_leading_slash(path) : + path = leading ? with_leading_slash(path) : without_leading_slash(path) - trailling ? with_trailling_slash(path) : - without_trailling_slash(path) + trailling ? with_trailling_slash(path) : + without_trailling_slash(path) end def info @@ -54,13 +58,15 @@ return nil end - def entries(path="", identifier=nil) + def entries(path="", identifier=nil, options={}) entries = Entries.new trgt_utf8 = target(path) trgt = scm_iconv(@path_encoding, 'UTF-8', trgt_utf8) Dir.new(trgt).each do |e1| e_utf8 = scm_iconv('UTF-8', @path_encoding, e1) - relative_path_utf8 = format_path_ends((format_path_ends(path,false,true) + e_utf8),false,false) + next if e_utf8.blank? + relative_path_utf8 = format_path_ends( + (format_path_ends(path,false,true) + e_utf8),false,false) t1_utf8 = target(relative_path_utf8) t1 = scm_iconv(@path_encoding, 'UTF-8', t1_utf8) relative_path = scm_iconv(@path_encoding, 'UTF-8', relative_path_utf8) @@ -76,7 +82,7 @@ :path => utf_8_path, :kind => (File.directory?(t1) ? 'dir' : 'file'), :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first), - :lastrev => + :lastrev => Revision.new({:time => (File.mtime(t1)) }) }) end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/git_adapter.rb --- a/lib/redmine/scm/adapters/git_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/git_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -22,8 +22,6 @@ module Adapters class GitAdapter < AbstractAdapter - SCM_GIT_REPORT_LAST_COMMIT = true - # Git executable name GIT_BIN = Redmine::Configuration['scm_git_command'] || "git" @@ -64,7 +62,11 @@ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) super - @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + end + + def path_encoding + @path_encoding end def info @@ -78,59 +80,88 @@ def branches return @branches if @branches @branches = [] - cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color" - shellout(cmd) do |io| + cmd_args = %w|branch --no-color| + scm_cmd(*cmd_args) do |io| io.each_line do |line| @branches << line.match('\s*\*?\s*(.*)$')[1] end end @branches.sort! + rescue ScmCommandAborted + nil end def tags return @tags if @tags - cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag" - shellout(cmd) do |io| + cmd_args = %w|tag| + scm_cmd(*cmd_args) do |io| @tags = io.readlines.sort!.map{|t| t.strip} end + rescue ScmCommandAborted + nil + end + + def default_branch + bras = self.branches + return nil if bras.nil? + bras.include?('master') ? 'master' : bras.first + end + + def entry(path=nil, identifier=nil) + parts = path.to_s.split(%r{[\/\\]}).select {|n| !n.blank?} + search_path = parts[0..-2].join('/') + search_name = parts[-1] + if search_path.blank? && search_name.blank? + # Root entry + Entry.new(:path => '', :kind => 'dir') + else + # Search for the entry in the parent directory + es = entries(search_path, identifier, + options = {:report_last_commit => false}) + es ? es.detect {|e| e.name == search_name} : nil + end end - def default_branch - branches.include?('master') ? 'master' : branches.first - end - - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) path ||= '' + p = scm_iconv(@path_encoding, 'UTF-8', path) entries = Entries.new - cmd = "#{self.class.sq_bin} --git-dir #{target('')} ls-tree -l " - cmd << shell_quote("HEAD:" + path) if identifier.nil? - cmd << shell_quote(identifier + ":" + path) if identifier - shellout(cmd) do |io| + cmd_args = %w|ls-tree -l| + cmd_args << "HEAD:#{p}" if identifier.nil? + cmd_args << "#{identifier}:#{p}" if identifier + scm_cmd(*cmd_args) do |io| io.each_line do |line| e = line.chomp.to_s if e =~ /^\d+\s+(\w+)\s+([0-9a-f]{40})\s+([0-9-]+)\t(.+)$/ type = $1 - sha = $2 + sha = $2 size = $3 name = $4 - full_path = path.empty? ? name : "#{path}/#{name}" - entries << Entry.new({:name => name, - :path => full_path, + if name.respond_to?(:force_encoding) + name.force_encoding(@path_encoding) + end + full_path = p.empty? ? name : "#{p}/#{name}" + n = scm_iconv('UTF-8', @path_encoding, name) + full_p = scm_iconv('UTF-8', @path_encoding, full_path) + entries << Entry.new({:name => n, + :path => full_p, :kind => (type == "tree") ? 'dir' : 'file', :size => (type == "tree") ? nil : size, - :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new + :lastrev => options[:report_last_commit] ? + lastrev(full_path, identifier) : Revision.new }) unless entries.detect{|entry| entry.name == name} end end end - return nil if $? && $?.exitstatus != 0 entries.sort_by_name + rescue ScmCommandAborted + nil end def lastrev(path, rev) return nil if path.nil? cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1| - cmd_args << rev if rev + cmd_args << rev if rev cmd_args << "--" << path unless path.empty? lines = [] scm_cmd(*cmd_args) { |io| lines = io.readlines } @@ -141,11 +172,11 @@ Revision.new({ :identifier => id, - :scmid => id, - :author => author, - :time => time, - :message => nil, - :paths => nil + :scmid => id, + :author => author, + :time => time, + :message => nil, + :paths => nil }) rescue NoMethodError => e logger.error("The revision '#{path}' has a wrong format") @@ -156,7 +187,7 @@ end def revisions(path, identifier_from, identifier_to, options={}) - revisions = Revisions.new + revs = Revisions.new cmd_args = %w|log --no-color --encoding=UTF-8 --raw --date=iso --pretty=fuller| cmd_args << "--reverse" if options[:reverse] cmd_args << "--all" if options[:all] @@ -166,13 +197,12 @@ from_to << "#{identifier_to}" if identifier_to cmd_args << from_to if !from_to.empty? cmd_args << "--since=#{options[:since].strftime("%Y-%m-%d %H:%M:%S")}" if options[:since] - cmd_args << "--" << path if path && !path.empty? + cmd_args << "--" << scm_iconv(@path_encoding, 'UTF-8', path) if path && !path.empty? scm_cmd *cmd_args do |io| files=[] changeset = {} parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files - revno = 1 io.each_line do |line| if line =~ /^commit ([0-9a-f]{40})$/ @@ -182,20 +212,19 @@ parsing_descr = 0 revision = Revision.new({ :identifier => changeset[:commit], - :scmid => changeset[:commit], - :author => changeset[:author], - :time => Time.parse(changeset[:date]), - :message => changeset[:description], - :paths => files + :scmid => changeset[:commit], + :author => changeset[:author], + :time => Time.parse(changeset[:date]), + :message => changeset[:description], + :paths => files }) if block_given? yield revision else - revisions << revision + revs << revision end changeset = {} files = [] - revno = revno + 1 end changeset[:commit] = $1 elsif (parsing_descr == 0) && line =~ /^(\w+):\s*(.*)$/ @@ -210,73 +239,75 @@ parsing_descr = 1 changeset[:description] = "" elsif (parsing_descr == 1 || parsing_descr == 2) \ - && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\t(.+)$/ + && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\t(.+)$/ parsing_descr = 2 - fileaction = $1 - filepath = $2 - files << {:action => fileaction, :path => filepath} + fileaction = $1 + filepath = $2 + p = scm_iconv('UTF-8', @path_encoding, filepath) + files << {:action => fileaction, :path => p} elsif (parsing_descr == 1 || parsing_descr == 2) \ - && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\d+\s+(\S+)\t(.+)$/ + && line =~ /^:\d+\s+\d+\s+[0-9a-f.]+\s+[0-9a-f.]+\s+(\w)\d+\s+(\S+)\t(.+)$/ parsing_descr = 2 - fileaction = $1 - filepath = $3 - files << {:action => fileaction, :path => filepath} + fileaction = $1 + filepath = $3 + p = scm_iconv('UTF-8', @path_encoding, filepath) + files << {:action => fileaction, :path => p} elsif (parsing_descr == 1) && line.chomp.to_s == "" parsing_descr = 2 elsif (parsing_descr == 1) changeset[:description] << line[4..-1] end - end + end if changeset[:commit] revision = Revision.new({ :identifier => changeset[:commit], - :scmid => changeset[:commit], - :author => changeset[:author], - :time => Time.parse(changeset[:date]), - :message => changeset[:description], - :paths => files - }) - + :scmid => changeset[:commit], + :author => changeset[:author], + :time => Time.parse(changeset[:date]), + :message => changeset[:description], + :paths => files + }) if block_given? yield revision else - revisions << revision + revs << revision end end end - revisions - rescue ScmCommandAborted - revisions + revs + rescue ScmCommandAborted => e + logger.error("git log #{from_to.to_s} error: #{e.message}") + revs end def diff(path, identifier_from, identifier_to=nil) path ||= '' - + cmd_args = [] if identifier_to - cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" + cmd_args << "diff" << "--no-color" << identifier_to << identifier_from else - cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" + cmd_args << "show" << "--no-color" << identifier_from end - - cmd << " -- #{shell_quote path}" unless path.empty? + cmd_args << "--" << scm_iconv(@path_encoding, 'UTF-8', path) unless path.empty? diff = [] - shellout(cmd) do |io| + scm_cmd *cmd_args do |io| io.each_line do |line| diff << line end end - return nil if $? && $?.exitstatus != 0 diff + rescue ScmCommandAborted + nil end - + def annotate(path, identifier=nil) identifier = 'HEAD' if identifier.blank? - cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" + cmd_args = %w|blame| + cmd_args << "-p" << identifier << "--" << scm_iconv(@path_encoding, 'UTF-8', path) blame = Annotate.new content = nil - shellout(cmd) { |io| io.binmode; content = io.read } - return nil if $? && $?.exitstatus != 0 + scm_cmd(*cmd_args) { |io| io.binmode; content = io.read } # git annotates binary files return nil if content.is_binary_data? identifier = '' @@ -288,26 +319,35 @@ elsif line =~ /^author (.+)/ authors_by_commit[identifier] = $1.strip elsif line =~ /^\t(.*)/ - blame.add_line($1, Revision.new(:identifier => identifier, :author => authors_by_commit[identifier])) + blame.add_line($1, Revision.new( + :identifier => identifier, + :revision => identifier, + :scmid => identifier, + :author => authors_by_commit[identifier] + )) identifier = '' author = '' end end blame + rescue ScmCommandAborted + nil end def cat(path, identifier=nil) if identifier.nil? identifier = 'HEAD' end - cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" + cmd_args = %w|show --no-color| + cmd_args << "#{identifier}:#{scm_iconv(@path_encoding, 'UTF-8', path)}" cat = nil - shellout(cmd) do |io| + scm_cmd(*cmd_args) do |io| io.binmode cat = io.read end - return nil if $? && $?.exitstatus != 0 cat + rescue ScmCommandAborted + nil end class Revision < Redmine::Scm::Adapters::Revision @@ -320,6 +360,10 @@ def scm_cmd(*args, &block) repo_path = root_url || url full_args = [GIT_BIN, '--git-dir', repo_path] + if self.class.client_version_above?([1, 7, 2]) + full_args << '-c' << 'core.quotepath=false' + full_args << '-c' << 'log.decorate=no' + end full_args += args ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) if $? && $?.exitstatus != 0 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/mercurial/.svn/all-wcprops --- a/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,23 +1,11 @@ K 25 svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4989/trunk/lib/redmine/scm/adapters/mercurial -END -hg-template-0.9.5.tmpl -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl +V 73 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/mercurial END redminehelper.py K 25 svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/4989/trunk/lib/redmine/scm/adapters/mercurial/redminehelper.py +V 90 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/scm/adapters/mercurial/redminehelper.py END -hg-template-1.0.tmpl -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl -END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/mercurial/.svn/entries --- a/lib/redmine/scm/adapters/mercurial/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters/mercurial +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/scm/adapters/mercurial http://redmine.rubyforge.org/svn -2011-03-02T10:17:36.526269Z -4989 +2011-03-14T02:23:54.474379Z +5112 tmaruyama has-props @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 961af0eb6ab17203d985cdeac685937e 2011-01-05T15:02:24.961855Z 4633 @@ -66,10 +66,10 @@ -2011-03-03T11:40:18.000000Z -5bf6790a201bf33c17cae96c6a9d75fc -2011-03-02T10:17:36.526269Z -4989 +2011-06-06T13:20:53.000000Z +e00d9a9bc9249ea3dca63636370ba377 +2011-03-14T02:23:54.474379Z +5112 tmaruyama @@ -92,7 +92,7 @@ -6270 +7856 hg-template-1.0.tmpl file @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 9d5de62ae8cdc141d3f8b970dbba07a0 2011-01-05T15:02:24.961855Z 4633 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base --- a/lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -120,9 +120,13 @@ ui.write('\n') def rhannotate(ui, repo, *pats, **opts): + rev = urllib.unquote_plus(opts.pop('rev', None)) + opts['rev'] = rev return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts) def rhcat(ui, repo, file1, *pats, **opts): + rev = urllib.unquote_plus(opts.pop('rev', None)) + opts['rev'] = rev return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts) def rhdiff(ui, repo, *pats, **opts): @@ -134,6 +138,18 @@ opts['nodates'] = True return commands.diff(ui, repo, *map(urllib.unquote_plus, pats), **opts) +def rhlog(ui, repo, *pats, **opts): + rev = opts.pop('rev') + bra0 = opts.pop('branch') + from_rev = urllib.unquote_plus(opts.pop('from', None)) + to_rev = urllib.unquote_plus(opts.pop('to' , None)) + bra = urllib.unquote_plus(opts.pop('rhbranch', None)) + from_rev = from_rev.replace('"', '\\"') + to_rev = to_rev.replace('"', '\\"') + opts['rev'] = ['"%s":"%s"' % (from_rev, to_rev)] + opts['branch'] = [bra] + return commands.log(ui, repo, *map(urllib.unquote_plus, pats), **opts) + def rhmanifest(ui, repo, path='', **opts): """output the sub-manifest of the specified directory""" ui.write('\n') @@ -176,6 +192,26 @@ [('r', 'rev', [], 'revision'), ('c', 'change', '', 'change made by revision')], 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'), + 'rhlog': (rhlog, + [ + ('r', 'rev', [], 'show the specified revision'), + ('b', 'branch', [], + 'show changesets within the given named branch', 'BRANCH'), + ('l', 'limit', '', + 'limit number of changes displayed', 'NUM'), + ('d', 'date', '', + 'show revisions matching date spec', 'DATE'), + ('u', 'user', [], + 'revisions committed by user', 'USER'), + ('', 'from', '', + '', ''), + ('', 'to', '', + '', ''), + ('', 'rhbranch', '', + '', ''), + ('', 'template', '', + 'display with template', 'TEMPLATE')], + 'hg rhlog [OPTION]... [FILE]'), 'rhmanifest': (rhmanifest, [('r', 'rev', '', 'show the specified revision')], 'hg rhmanifest [-r REV] [PATH]'), diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/mercurial/redminehelper.py --- a/lib/redmine/scm/adapters/mercurial/redminehelper.py Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/redminehelper.py Mon Jun 06 14:41:04 2011 +0100 @@ -120,9 +120,13 @@ ui.write('\n') def rhannotate(ui, repo, *pats, **opts): + rev = urllib.unquote_plus(opts.pop('rev', None)) + opts['rev'] = rev return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts) def rhcat(ui, repo, file1, *pats, **opts): + rev = urllib.unquote_plus(opts.pop('rev', None)) + opts['rev'] = rev return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts) def rhdiff(ui, repo, *pats, **opts): @@ -134,6 +138,18 @@ opts['nodates'] = True return commands.diff(ui, repo, *map(urllib.unquote_plus, pats), **opts) +def rhlog(ui, repo, *pats, **opts): + rev = opts.pop('rev') + bra0 = opts.pop('branch') + from_rev = urllib.unquote_plus(opts.pop('from', None)) + to_rev = urllib.unquote_plus(opts.pop('to' , None)) + bra = urllib.unquote_plus(opts.pop('rhbranch', None)) + from_rev = from_rev.replace('"', '\\"') + to_rev = to_rev.replace('"', '\\"') + opts['rev'] = ['"%s":"%s"' % (from_rev, to_rev)] + opts['branch'] = [bra] + return commands.log(ui, repo, *map(urllib.unquote_plus, pats), **opts) + def rhmanifest(ui, repo, path='', **opts): """output the sub-manifest of the specified directory""" ui.write('\n') @@ -176,6 +192,26 @@ [('r', 'rev', [], 'revision'), ('c', 'change', '', 'change made by revision')], 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'), + 'rhlog': (rhlog, + [ + ('r', 'rev', [], 'show the specified revision'), + ('b', 'branch', [], + 'show changesets within the given named branch', 'BRANCH'), + ('l', 'limit', '', + 'limit number of changes displayed', 'NUM'), + ('d', 'date', '', + 'show revisions matching date spec', 'DATE'), + ('u', 'user', [], + 'revisions committed by user', 'USER'), + ('', 'from', '', + '', ''), + ('', 'to', '', + '', ''), + ('', 'rhbranch', '', + '', ''), + ('', 'template', '', + 'display with template', 'TEMPLATE')], + 'hg rhlog [OPTION]... [FILE]'), 'rhmanifest': (rhmanifest, [('r', 'rev', '', 'show the specified revision')], 'hg rhmanifest [-r REV] [PATH]'), diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/mercurial_adapter.rb --- a/lib/redmine/scm/adapters/mercurial_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -47,7 +47,7 @@ end def client_available - !client_version.empty? + client_version_above?([0, 9, 5]) end def hgversion @@ -83,7 +83,11 @@ def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) super - @path_encoding = path_encoding || 'UTF-8' + @path_encoding = path_encoding.blank? ? 'UTF-8' : path_encoding + end + + def path_encoding + @path_encoding end def info @@ -118,7 +122,7 @@ end def summary - return @summary if @summary + return @summary if @summary hg 'rhsummary' do |io| output = io.read if output.respond_to?(:force_encoding) @@ -132,7 +136,7 @@ end private :summary - def entries(path=nil, identifier=nil) + def entries(path=nil, identifier=nil, options={}) p1 = scm_iconv(@path_encoding, 'UTF-8', path) manifest = hg('rhmanifest', '-r', CGI.escape(hgrev(identifier)), CGI.escape(without_leading_slash(p1.to_s))) do |io| @@ -192,30 +196,39 @@ rescue end end - as_ary(log['logentry']).each do |le| cpalist = as_ary(le['paths']['path-copied']).map do |e| - [e['__content__'], e['copyfrom-path']].map { |s| CGI.unescape(s) } + [e['__content__'], e['copyfrom-path']].map do |s| + scm_iconv('UTF-8', @path_encoding, CGI.unescape(s)) + end end cpmap = Hash[*cpalist.flatten] - paths = as_ary(le['paths']['path']).map do |e| p = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['__content__']) ) - {:action => e['action'], :path => with_leading_slash(p), - :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil), - :from_revision => (cpmap.member?(p) ? le['revision'] : nil)} + {:action => e['action'], + :path => with_leading_slash(p), + :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil), + :from_revision => (cpmap.member?(p) ? le['node'] : nil)} end.sort { |a, b| a[:path] <=> b[:path] } - yield Revision.new(:revision => le['revision'], - :scmid => le['node'], - :author => (le['author']['__content__'] rescue ''), - :time => Time.parse(le['date']['__content__']).localtime, - :message => le['msg']['__content__'], - :paths => paths) + :scmid => le['node'], + :author => (le['author']['__content__'] rescue ''), + :time => Time.parse(le['date']['__content__']), + :message => le['msg']['__content__'], + :paths => paths) end self end + # Returns list of nodes in the specified branch + def nodes_in_branch(branch, options={}) + hg_args = ['rhlog', '--template', '{node|short}\n', '--rhbranch', CGI.escape(branch)] + hg_args << '--from' << CGI.escape(branch) + hg_args << '--to' << '0' + hg_args << '--limit' << options[:limit] if options[:limit] + hg(*hg_args) { |io| io.readlines.map { |e| e.chomp } } + end + def diff(path, identifier_from, identifier_to=nil) hg_args = %w|rhdiff| if identifier_to @@ -240,7 +253,7 @@ def cat(path, identifier=nil) p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) - hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io| + hg 'rhcat', '-r', CGI.escape(hgrev(identifier)), hgtarget(p) do |io| io.binmode io.read end @@ -251,7 +264,7 @@ def annotate(path, identifier=nil) p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) blame = Annotate.new - hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io| + hg 'rhannotate', '-ncu', '-r', CGI.escape(hgrev(identifier)), hgtarget(p) do |io| io.each_line do |line| line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding) next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$} diff -r adc8466df404 -r 753f1380d6bc lib/redmine/scm/adapters/subversion_adapter.rb --- a/lib/redmine/scm/adapters/subversion_adapter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/scm/adapters/subversion_adapter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,282 +1,291 @@ -# Redmine - project management software -# Copyright (C) 2006-2010 Jean-Philippe Lang -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -require 'redmine/scm/adapters/abstract_adapter' -require 'uri' - -module Redmine - module Scm - module Adapters - class SubversionAdapter < AbstractAdapter - - # SVN executable name - SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn" - - class << self - def client_command - @@bin ||= SVN_BIN - end - - def sq_bin - @@sq_bin ||= shell_quote(SVN_BIN) - end - - def client_version - @@client_version ||= (svn_binary_version || []) - end - - def client_available - !client_version.empty? - end - - def svn_binary_version - scm_version = scm_version_from_command_line.dup - if scm_version.respond_to?(:force_encoding) - scm_version.force_encoding('ASCII-8BIT') - end - if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) - m[2].scan(%r{\d+}).collect(&:to_i) - end - end - - def scm_version_from_command_line - shellout("#{sq_bin} --version") { |io| io.read }.to_s - end - end - - # Get info about the svn repository - def info - cmd = "#{self.class.sq_bin} info --xml #{target}" - cmd << credentials_string - info = nil - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - #root_url = doc.elements["info/entry/repository/root"].text - info = Info.new({:root_url => doc['info']['entry']['repository']['root']['__content__'], - :lastrev => Revision.new({ - :identifier => doc['info']['entry']['commit']['revision'], - :time => Time.parse(doc['info']['entry']['commit']['date']['__content__']).localtime, - :author => (doc['info']['entry']['commit']['author'] ? doc['info']['entry']['commit']['author']['__content__'] : "") - }) - }) - rescue - end - end - return nil if $? && $?.exitstatus != 0 - info - rescue CommandFailed - return nil - end - - # Returns an Entries collection - # or nil if the given path doesn't exist in the repository - def entries(path=nil, identifier=nil) - path ||= '' - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - entries = Entries.new - cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}" - cmd << credentials_string - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - each_xml_element(doc['lists']['list'], 'entry') do |entry| - commit = entry['commit'] - commit_date = commit['date'] - # Skip directory if there is no commit date (usually that - # means that we don't have read access to it) - next if entry['kind'] == 'dir' && commit_date.nil? - name = entry['name']['__content__'] - entries << Entry.new({:name => URI.unescape(name), - :path => ((path.empty? ? "" : "#{path}/") + name), - :kind => entry['kind'], - :size => ((s = entry['size']) ? s['__content__'].to_i : nil), - :lastrev => Revision.new({ - :identifier => commit['revision'], - :time => Time.parse(commit_date['__content__'].to_s).localtime, - :author => ((a = commit['author']) ? a['__content__'] : nil) - }) - }) - end - rescue Exception => e - logger.error("Error parsing svn output: #{e.message}") - logger.error("Output was:\n #{output}") - end - end - return nil if $? && $?.exitstatus != 0 - logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? - entries.sort_by_name - end - - def properties(path, identifier=nil) - # proplist xml output supported in svn 1.5.0 and higher - return nil unless self.class.client_version_above?([1, 5, 0]) - - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}" - cmd << credentials_string - properties = {} - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - each_xml_element(doc['properties']['target'], 'property') do |property| - properties[ property['name'] ] = property['__content__'].to_s - end - rescue - end - end - return nil if $? && $?.exitstatus != 0 - properties - end - - def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) - path ||= '' - identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" - identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1 - revisions = Revisions.new - cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}" - cmd << credentials_string - cmd << " --verbose " if options[:with_paths] - cmd << " --limit #{options[:limit].to_i}" if options[:limit] - cmd << ' ' + target(path) - shellout(cmd) do |io| - output = io.read - if output.respond_to?(:force_encoding) - output.force_encoding('UTF-8') - end - begin - doc = ActiveSupport::XmlMini.parse(output) - each_xml_element(doc['log'], 'logentry') do |logentry| - paths = [] - each_xml_element(logentry['paths'], 'path') do |path| - paths << {:action => path['action'], - :path => path['__content__'], - :from_path => path['copyfrom-path'], - :from_revision => path['copyfrom-rev'] - } - end if logentry['paths'] && logentry['paths']['path'] - paths.sort! { |x,y| x[:path] <=> y[:path] } - - revisions << Revision.new({:identifier => logentry['revision'], - :author => (logentry['author'] ? logentry['author']['__content__'] : ""), - :time => Time.parse(logentry['date']['__content__'].to_s).localtime, - :message => logentry['msg']['__content__'], - :paths => paths - }) - end - rescue - end - end - return nil if $? && $?.exitstatus != 0 - revisions - end - - def diff(path, identifier_from, identifier_to=nil, type="inline") - path ||= '' - identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : '' - - identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1) - - cmd = "#{self.class.sq_bin} diff -r " - cmd << "#{identifier_to}:" - cmd << "#{identifier_from}" - cmd << " #{target(path)}@#{identifier_from}" - cmd << credentials_string - diff = [] - shellout(cmd) do |io| - io.each_line do |line| - diff << line - end - end - return nil if $? && $?.exitstatus != 0 - diff - end - - def cat(path, identifier=nil) - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" - cmd << credentials_string - cat = nil - shellout(cmd) do |io| - io.binmode - cat = io.read - end - return nil if $? && $?.exitstatus != 0 - cat - end - - def annotate(path, identifier=nil) - identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" - cmd << credentials_string - blame = Annotate.new - shellout(cmd) do |io| - io.each_line do |line| - next unless line =~ %r{^\s*(\d+)\s*(\S+)\s(.*)$} - blame.add_line($3.rstrip, Revision.new(:identifier => $1.to_i, :author => $2.strip)) - end - end - return nil if $? && $?.exitstatus != 0 - blame - end - - private - - def credentials_string - str = '' - str << " --username #{shell_quote(@login)}" unless @login.blank? - str << " --password #{shell_quote(@password)}" unless @login.blank? || @password.blank? - str << " --no-auth-cache --non-interactive" - str - end - - # Helper that iterates over the child elements of a xml node - # MiniXml returns a hash when a single child is found or an array of hashes for multiple children - def each_xml_element(node, name) - if node && node[name] - if node[name].is_a?(Hash) - yield node[name] - else - node[name].each do |element| - yield element - end - end - end - end - - def target(path = '') - base = path.match(/^\//) ? root_url : url - uri = "#{base}/#{path}" - uri = URI.escape(URI.escape(uri), '[]') - shell_quote(uri.gsub(/[?<>\*]/, '')) - end - end - end - end -end +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require 'redmine/scm/adapters/abstract_adapter' +require 'uri' + +module Redmine + module Scm + module Adapters + class SubversionAdapter < AbstractAdapter + + # SVN executable name + SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn" + + class << self + def client_command + @@bin ||= SVN_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(SVN_BIN) + end + + def client_version + @@client_version ||= (svn_binary_version || []) + end + + def client_available + # --xml options are introduced in 1.3. + # http://subversion.apache.org/docs/release-notes/1.3.html + client_version_above?([1, 3]) + end + + def svn_binary_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s + end + end + + # Get info about the svn repository + def info + cmd = "#{self.class.sq_bin} info --xml #{target}" + cmd << credentials_string + info = nil + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + # root_url = doc.elements["info/entry/repository/root"].text + info = Info.new({:root_url => doc['info']['entry']['repository']['root']['__content__'], + :lastrev => Revision.new({ + :identifier => doc['info']['entry']['commit']['revision'], + :time => Time.parse(doc['info']['entry']['commit']['date']['__content__']).localtime, + :author => (doc['info']['entry']['commit']['author'] ? doc['info']['entry']['commit']['author']['__content__'] : "") + }) + }) + rescue + end + end + return nil if $? && $?.exitstatus != 0 + info + rescue CommandFailed + return nil + end + + # Returns an Entries collection + # or nil if the given path doesn't exist in the repository + def entries(path=nil, identifier=nil, options={}) + path ||= '' + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + entries = Entries.new + cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}" + cmd << credentials_string + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + each_xml_element(doc['lists']['list'], 'entry') do |entry| + commit = entry['commit'] + commit_date = commit['date'] + # Skip directory if there is no commit date (usually that + # means that we don't have read access to it) + next if entry['kind'] == 'dir' && commit_date.nil? + name = entry['name']['__content__'] + entries << Entry.new({:name => URI.unescape(name), + :path => ((path.empty? ? "" : "#{path}/") + name), + :kind => entry['kind'], + :size => ((s = entry['size']) ? s['__content__'].to_i : nil), + :lastrev => Revision.new({ + :identifier => commit['revision'], + :time => Time.parse(commit_date['__content__'].to_s).localtime, + :author => ((a = commit['author']) ? a['__content__'] : nil) + }) + }) + end + rescue Exception => e + logger.error("Error parsing svn output: #{e.message}") + logger.error("Output was:\n #{output}") + end + end + return nil if $? && $?.exitstatus != 0 + logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? + entries.sort_by_name + end + + def properties(path, identifier=nil) + # proplist xml output supported in svn 1.5.0 and higher + return nil unless self.class.client_version_above?([1, 5, 0]) + + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}" + cmd << credentials_string + properties = {} + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + each_xml_element(doc['properties']['target'], 'property') do |property| + properties[ property['name'] ] = property['__content__'].to_s + end + rescue + end + end + return nil if $? && $?.exitstatus != 0 + properties + end + + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) + path ||= '' + identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" + identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1 + revisions = Revisions.new + cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}" + cmd << credentials_string + cmd << " --verbose " if options[:with_paths] + cmd << " --limit #{options[:limit].to_i}" if options[:limit] + cmd << ' ' + target(path) + shellout(cmd) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + doc = ActiveSupport::XmlMini.parse(output) + each_xml_element(doc['log'], 'logentry') do |logentry| + paths = [] + each_xml_element(logentry['paths'], 'path') do |path| + paths << {:action => path['action'], + :path => path['__content__'], + :from_path => path['copyfrom-path'], + :from_revision => path['copyfrom-rev'] + } + end if logentry['paths'] && logentry['paths']['path'] + paths.sort! { |x,y| x[:path] <=> y[:path] } + + revisions << Revision.new({:identifier => logentry['revision'], + :author => (logentry['author'] ? logentry['author']['__content__'] : ""), + :time => Time.parse(logentry['date']['__content__'].to_s).localtime, + :message => logentry['msg']['__content__'], + :paths => paths + }) + end + rescue + end + end + return nil if $? && $?.exitstatus != 0 + revisions + end + + def diff(path, identifier_from, identifier_to=nil, type="inline") + path ||= '' + identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : '' + + identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1) + + cmd = "#{self.class.sq_bin} diff -r " + cmd << "#{identifier_to}:" + cmd << "#{identifier_from}" + cmd << " #{target(path)}@#{identifier_from}" + cmd << credentials_string + diff = [] + shellout(cmd) do |io| + io.each_line do |line| + diff << line + end + end + return nil if $? && $?.exitstatus != 0 + diff + end + + def cat(path, identifier=nil) + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" + cmd << credentials_string + cat = nil + shellout(cmd) do |io| + io.binmode + cat = io.read + end + return nil if $? && $?.exitstatus != 0 + cat + end + + def annotate(path, identifier=nil) + identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" + cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" + cmd << credentials_string + blame = Annotate.new + shellout(cmd) do |io| + io.each_line do |line| + next unless line =~ %r{^\s*(\d+)\s*(\S+)\s(.*)$} + rev = $1 + blame.add_line($3.rstrip, + Revision.new( + :identifier => rev, + :revision => rev, + :author => $2.strip + )) + end + end + return nil if $? && $?.exitstatus != 0 + blame + end + + private + + def credentials_string + str = '' + str << " --username #{shell_quote(@login)}" unless @login.blank? + str << " --password #{shell_quote(@password)}" unless @login.blank? || @password.blank? + str << " --no-auth-cache --non-interactive" + str + end + + # Helper that iterates over the child elements of a xml node + # MiniXml returns a hash when a single child is found + # or an array of hashes for multiple children + def each_xml_element(node, name) + if node && node[name] + if node[name].is_a?(Hash) + yield node[name] + else + node[name].each do |element| + yield element + end + end + end + end + + def target(path = '') + base = path.match(/^\//) ? root_url : url + uri = "#{base}/#{path}" + uri = URI.escape(URI.escape(uri), '[]') + shell_quote(uri.gsub(/[?<>\*]/, '')) + end + end + end + end +end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/unified_diff.rb --- a/lib/redmine/unified_diff.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/unified_diff.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,14 +17,16 @@ module Redmine # Class used to parse unified diffs - class UnifiedDiff < Array + class UnifiedDiff < Array + attr_reader :diff_type + def initialize(diff, options={}) options.assert_valid_keys(:type, :max_lines) diff = diff.split("\n") if diff.is_a?(String) - diff_type = options[:type] || 'inline' + @diff_type = options[:type] || 'inline' lines = 0 @truncated = false - diff_table = DiffTable.new(diff_type) + diff_table = DiffTable.new(@diff_type) diff.each do |line| line_encoding = nil if line.respond_to?(:force_encoding) @@ -53,17 +55,15 @@ end # Class that represents a file diff - class DiffTable < Hash - attr_reader :file_name, :line_num_l, :line_num_r + class DiffTable < Array + attr_reader :file_name # Initialize with a Diff file and the type of Diff View # The type view must be inline or sbs (side_by_side) def initialize(type="inline") @parsing = false - @nb_line = 1 - @start = false - @before = 'same' - @second = true + @added = 0 + @removed = 0 @type = type end @@ -86,11 +86,21 @@ @line_num_l = $2.to_i @line_num_r = $5.to_i else - @nb_line += 1 if parse_line(line, @type) + parse_line(line, @type) end end return true end + + def each_line + prev_line_left, prev_line_right = nil, nil + each do |line| + spacing = prev_line_left && prev_line_right && (line.nb_line_left != prev_line_left+1) && (line.nb_line_right != prev_line_right+1) + yield spacing, line + prev_line_left = line.nb_line_left.to_i if line.nb_line_left.to_i > 0 + prev_line_right = line.nb_line_right.to_i if line.nb_line_right.to_i > 0 + end + end def inspect puts '### DIFF TABLE ###' @@ -100,74 +110,91 @@ end end - private - # Test if is a Side By Side type - def sbs?(type, func) - if @start and type == "sbs" - if @before == func and @second - tmp_nb_line = @nb_line - self[tmp_nb_line] = Diff.new - else - @second = false - tmp_nb_line = @start - @start += 1 - @nb_line -= 1 - end - else - tmp_nb_line = @nb_line - @start = @nb_line - self[tmp_nb_line] = Diff.new - @second = true - end - unless self[tmp_nb_line] - @nb_line += 1 - self[tmp_nb_line] = Diff.new - else - self[tmp_nb_line] - end - end + private # Escape the HTML for the diff def escapeHTML(line) CGI.escapeHTML(line) end + + def diff_for_added_line + if @type == 'sbs' && @removed > 0 && @added < @removed + self[-(@removed - @added)] + else + diff = Diff.new + self << diff + diff + end + end def parse_line(line, type="inline") if line[0, 1] == "+" - diff = sbs? type, 'add' - @before = 'add' + diff = diff_for_added_line diff.line_right = escapeHTML line[1..-1] diff.nb_line_right = @line_num_r diff.type_diff_right = 'diff_in' @line_num_r += 1 + @added += 1 true elsif line[0, 1] == "-" - diff = sbs? type, 'remove' - @before = 'remove' + diff = Diff.new diff.line_left = escapeHTML line[1..-1] diff.nb_line_left = @line_num_l diff.type_diff_left = 'diff_out' + self << diff @line_num_l += 1 + @removed += 1 true - elsif line[0, 1] =~ /\s/ - @before = 'same' - @start = false - diff = Diff.new - diff.line_right = escapeHTML line[1..-1] - diff.nb_line_right = @line_num_r - diff.line_left = escapeHTML line[1..-1] - diff.nb_line_left = @line_num_l - self[@nb_line] = diff - @line_num_l += 1 - @line_num_r += 1 - true - elsif line[0, 1] = "\\" + else + write_offsets + if line[0, 1] =~ /\s/ + diff = Diff.new + diff.line_right = escapeHTML line[1..-1] + diff.nb_line_right = @line_num_r + diff.line_left = escapeHTML line[1..-1] + diff.nb_line_left = @line_num_l + self << diff + @line_num_l += 1 + @line_num_r += 1 + true + elsif line[0, 1] = "\\" true else false end end end + + def write_offsets + if @added > 0 && @added == @removed + @added.times do |i| + line = self[-(1 + i)] + removed = (@type == 'sbs') ? line : self[-(1 + @added + i)] + offsets = offsets(removed.line_left, line.line_right) + removed.offsets = line.offsets = offsets + end + end + @added = 0 + @removed = 0 + end + + def offsets(line_left, line_right) + if line_left.present? && line_right.present? && line_left != line_right + max = [line_left.size, line_right.size].min + starting = 0 + while starting < max && line_left[starting] == line_right[starting] + starting += 1 + end + ending = -1 + while ending >= -(max - starting) && line_left[ending] == line_right[ending] + ending -= 1 + end + unless starting == 0 && ending == -1 + [starting, ending] + end + end + end + end # A line of diff class Diff @@ -177,6 +204,7 @@ attr_accessor :line_right attr_accessor :type_diff_right attr_accessor :type_diff_left + attr_accessor :offsets def initialize() self.nb_line_left = '' @@ -186,6 +214,38 @@ self.type_diff_right = '' self.type_diff_left = '' end + + def type_diff + type_diff_right == 'diff_in' ? type_diff_right : type_diff_left + end + + def line + type_diff_right == 'diff_in' ? line_right : line_left + end + + def html_line_left + if offsets + line_left.dup.insert(offsets.first, '').insert(offsets.last, '') + else + line_left + end + end + + def html_line_right + if offsets + line_right.dup.insert(offsets.first, '').insert(offsets.last, '') + else + line_right + end + end + + def html_line + if offsets + line.dup.insert(offsets.first, '').insert(offsets.last, '') + else + line + end + end def inspect puts '### Start Line Diff ###' diff -r adc8466df404 -r 753f1380d6bc lib/redmine/version.rb --- a/lib/redmine/version.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/version.rb Mon Jun 06 14:41:04 2011 +0100 @@ -3,9 +3,9 @@ module Redmine module VERSION #:nodoc: MAJOR = 1 - MINOR = 1 - TINY = 1 - + MINOR = 2 + TINY = 0 + # Branch values: # * official release: nil # * stable branch: stable @@ -20,24 +20,25 @@ f = File.open(entries_path, 'r') entries = f.read f.close - if entries.match(%r{^\d+}) - revision = $1.to_i if entries.match(%r{^\d+\s+dir\s+(\d+)\s}) - else - xml = REXML::Document.new(entries) - revision = xml.elements['wc-entries'].elements[1].attributes['revision'].to_i - end - rescue - # Could not find the current revision - end - end - revision + if entries.match(%r{^\d+}) + revision = $1.to_i if entries.match(%r{^\d+\s+dir\s+(\d+)\s}) + else + xml = REXML::Document.new(entries) + revision = + xml.elements['wc-entries'].elements[1].attributes['revision'].to_i + end + rescue + # Could not find the current revision + end + end + revision end REVISION = self.revision - ARRAY = [MAJOR, MINOR, TINY, BRANCH, REVISION].compact - STRING = ARRAY.join('.') + ARRAY = [MAJOR, MINOR, TINY, BRANCH, REVISION].compact + STRING = ARRAY.join('.') - def self.to_a; ARRAY end + def self.to_a; ARRAY end def self.to_s; STRING end end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/views/.svn/entries --- a/lib/redmine/views/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/views/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/views +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/views http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z e0e38b713c41ea63221dd877c6939983 2010-12-03T11:25:21.858858Z 4452 @@ -69,7 +69,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 849e9df27c041f540e690c6192939edf 2009-01-29T13:54:44.887081Z 2334 @@ -106,7 +106,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 04feeced33ca55e9fb99099efe2fdcf6 2010-12-03T11:25:21.858858Z 4452 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/views/builders/.svn/entries --- a/lib/redmine/views/builders/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/views/builders/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/builders +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/views/builders http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 8816150c9264dfa6e639af165670cbb1 2010-12-11T13:13:49.013705Z 4489 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z f9654f4bc43dbb5c01d5be2d6b045dd7 2010-12-11T13:13:49.013705Z 4489 @@ -100,7 +100,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 4b47e2fa5030d1cdad48f3abb5ab7c44 2010-12-03T11:25:21.858858Z 4452 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/views/my_page/.svn/entries --- a/lib/redmine/views/my_page/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/views/my_page/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/my_page +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/views/my_page http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z b06dfe20a85191516f81de5874f37ec6 2009-04-05T13:33:54.194067Z 2659 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/wiki_formatting/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/wiki_formatting +END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/.svn/entries --- a/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/wiki_formatting/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/wiki_formatting http://redmine.rubyforge.org/svn -2010-11-06T17:47:27.890964Z -4376 +2011-03-28T20:16:05.752041Z +5242 jplang @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 879f8ce24a6bb5e4f5ea3b6f798b7a63 2010-11-06T17:47:27.890964Z 4376 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/textile/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/wiki_formatting/textile/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/wiki_formatting/textile +END +helper.rb +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/wiki_formatting/textile/helper.rb +END +formatter.rb +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/5878/branches/1.2-stable/lib/redmine/wiki_formatting/textile/formatter.rb +END diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/textile/.svn/entries --- a/lib/redmine/wiki_formatting/textile/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/wiki_formatting/textile/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting/textile +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/redmine/wiki_formatting/textile http://redmine.rubyforge.org/svn -2010-11-06T17:47:27.890964Z -4376 +2011-03-28T20:16:05.752041Z +5242 jplang @@ -32,10 +32,10 @@ -2011-03-03T11:05:14.000000Z -dec83b1d0d7f682d1ebf1f172fe3c90b -2009-11-11T10:55:19.574870Z -3025 +2011-06-06T13:20:53.000000Z +e4c07fbafae7798129e133c528e1eec8 +2011-03-28T20:16:05.752041Z +5242 jplang has-props @@ -58,7 +58,7 @@ -1936 +2123 formatter.rb file @@ -66,10 +66,10 @@ -2011-03-03T11:05:14.000000Z -b8052f700ecb0991fabdd3a5b684a412 -2010-11-06T17:47:27.890964Z -4376 +2011-06-06T13:20:53.000000Z +aeba307e1011ac3f15b25fd91065ae2e +2011-03-14T20:35:36.619571Z +5133 jplang has-props @@ -92,5 +92,5 @@ -4724 +4722 diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/textile/.svn/text-base/formatter.rb.svn-base --- a/lib/redmine/wiki_formatting/textile/.svn/text-base/formatter.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/wiki_formatting/textile/.svn/text-base/formatter.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -43,7 +43,7 @@ # Patch for RedCloth. Fixed in RedCloth r128 but _why hasn't released it yet. # http://code.whytheluckystiff.net/redcloth/changeset/128 def hard_break( text ) - text.gsub!( /(.)\n(?!\n|\Z|>| *([#*=]+(\s|$)|[{|]))/, "\\1
    " ) if hard_breaks + text.gsub!( /(.)\n(?!\n|\Z| *([#*=]+(\s|$)|[{|]))/, "\\1
    " ) if hard_breaks end # Patch to add code highlighting support to RedCloth diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/textile/.svn/text-base/helper.rb.svn-base --- a/lib/redmine/wiki_formatting/textile/.svn/text-base/helper.rb.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/wiki_formatting/textile/.svn/text-base/helper.rb.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -20,17 +20,13 @@ module Textile module Helper def wikitoolbar_for(field_id) + heads_for_wiki_formatter # Is there a simple way to link to a public resource? url = "#{Redmine::Utils.relative_url_root}/help/wiki_syntax.html" - - help_link = l(:setting_text_formatting) + ': ' + - link_to(l(:label_help), url, - :onclick => "window.open(\"#{ url }\", \"\", \"resizable=yes, location=no, width=300, height=640, menubar=no, status=no, scrollbars=yes\"); return false;") + help_link = link_to(l(:setting_text_formatting), url, + :onclick => "window.open(\"#{ url }\", \"\", \"resizable=yes, location=no, width=300, height=640, menubar=no, status=no, scrollbars=yes\"); return false;") - javascript_include_tag('jstoolbar/jstoolbar') + - javascript_include_tag('jstoolbar/textile') + - javascript_include_tag("jstoolbar/lang/jstoolbar-#{current_language.to_s.downcase}") + - javascript_tag("var wikiToolbar = new jsToolBar($('#{field_id}')); wikiToolbar.setHelpLink('#{help_link}'); wikiToolbar.draw();") + javascript_tag("var wikiToolbar = new jsToolBar($('#{field_id}')); wikiToolbar.setHelpLink('#{escape_javascript help_link}'); wikiToolbar.draw();") end def initial_page_content(page) @@ -38,7 +34,15 @@ end def heads_for_wiki_formatter - stylesheet_link_tag 'jstoolbar' + unless @heads_for_wiki_formatter_included + content_for :header_tags do + javascript_include_tag('jstoolbar/jstoolbar') + + javascript_include_tag('jstoolbar/textile') + + javascript_include_tag("jstoolbar/lang/jstoolbar-#{current_language.to_s.downcase}") + + stylesheet_link_tag('jstoolbar') + end + @heads_for_wiki_formatter_included = true + end end end end diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/textile/formatter.rb --- a/lib/redmine/wiki_formatting/textile/formatter.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/wiki_formatting/textile/formatter.rb Mon Jun 06 14:41:04 2011 +0100 @@ -43,7 +43,7 @@ # Patch for RedCloth. Fixed in RedCloth r128 but _why hasn't released it yet. # http://code.whytheluckystiff.net/redcloth/changeset/128 def hard_break( text ) - text.gsub!( /(.)\n(?!\n|\Z|>| *([#*=]+(\s|$)|[{|]))/, "\\1
    " ) if hard_breaks + text.gsub!( /(.)\n(?!\n|\Z| *([#*=]+(\s|$)|[{|]))/, "\\1
    " ) if hard_breaks end # Patch to add code highlighting support to RedCloth diff -r adc8466df404 -r 753f1380d6bc lib/redmine/wiki_formatting/textile/helper.rb --- a/lib/redmine/wiki_formatting/textile/helper.rb Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/redmine/wiki_formatting/textile/helper.rb Mon Jun 06 14:41:04 2011 +0100 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -20,17 +20,13 @@ module Textile module Helper def wikitoolbar_for(field_id) + heads_for_wiki_formatter # Is there a simple way to link to a public resource? url = "#{Redmine::Utils.relative_url_root}/help/wiki_syntax.html" - - help_link = l(:setting_text_formatting) + ': ' + - link_to(l(:label_help), url, - :onclick => "window.open(\"#{ url }\", \"\", \"resizable=yes, location=no, width=300, height=640, menubar=no, status=no, scrollbars=yes\"); return false;") + help_link = link_to(l(:setting_text_formatting), url, + :onclick => "window.open(\"#{ url }\", \"\", \"resizable=yes, location=no, width=300, height=640, menubar=no, status=no, scrollbars=yes\"); return false;") - javascript_include_tag('jstoolbar/jstoolbar') + - javascript_include_tag('jstoolbar/textile') + - javascript_include_tag("jstoolbar/lang/jstoolbar-#{current_language.to_s.downcase}") + - javascript_tag("var wikiToolbar = new jsToolBar($('#{field_id}')); wikiToolbar.setHelpLink('#{help_link}'); wikiToolbar.draw();") + javascript_tag("var wikiToolbar = new jsToolBar($('#{field_id}')); wikiToolbar.setHelpLink('#{escape_javascript help_link}'); wikiToolbar.draw();") end def initial_page_content(page) @@ -38,7 +34,15 @@ end def heads_for_wiki_formatter - stylesheet_link_tag 'jstoolbar' + unless @heads_for_wiki_formatter_included + content_for :header_tags do + javascript_include_tag('jstoolbar/jstoolbar') + + javascript_include_tag('jstoolbar/textile') + + javascript_include_tag("jstoolbar/lang/jstoolbar-#{current_language.to_s.downcase}") + + stylesheet_link_tag('jstoolbar') + end + @heads_for_wiki_formatter_included = true + end end end end diff -r adc8466df404 -r 753f1380d6bc lib/tasks/.svn/all-wcprops --- a/lib/tasks/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,125 +1,23 @@ K 25 svn:wc:ra_dav:version-url -V 34 -/svn/!svn/ver/4950/trunk/lib/tasks -END -deprecated.rake -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/691/trunk/lib/tasks/deprecated.rake -END -jdbc.rake -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/3721/trunk/lib/tasks/jdbc.rake +V 48 +/svn/!svn/ver/5943/branches/1.2-stable/lib/tasks END extract_fixtures.rake K 25 svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/67/trunk/lib/tasks/extract_fixtures.rake -END -reminder.rake -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/4167/trunk/lib/tasks/reminder.rake -END -metrics.rake -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/2825/trunk/lib/tasks/metrics.rake -END -initializers.rake -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4405/trunk/lib/tasks/initializers.rake -END -ciphering.rake -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4950/trunk/lib/tasks/ciphering.rake -END -permissions.rake -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/3948/trunk/lib/tasks/permissions.rake -END -load_default_data.rake -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2592/trunk/lib/tasks/load_default_data.rake -END -testing.rake -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/4806/trunk/lib/tasks/testing.rake -END -watchers.rake -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/3167/trunk/lib/tasks/watchers.rake -END -plugins.rake -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/1786/trunk/lib/tasks/plugins.rake -END -yardoc.rake -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/3922/trunk/lib/tasks/yardoc.rake +V 70 +/svn/!svn/ver/5878/branches/1.2-stable/lib/tasks/extract_fixtures.rake END locales.rake K 25 svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/4937/trunk/lib/tasks/locales.rake -END -migrate_from_trac.rake -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4599/trunk/lib/tasks/migrate_from_trac.rake -END -migrate_from_mantis.rake -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4765/trunk/lib/tasks/migrate_from_mantis.rake +V 61 +/svn/!svn/ver/5878/branches/1.2-stable/lib/tasks/locales.rake END email.rake K 25 svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/4256/trunk/lib/tasks/email.rake +V 59 +/svn/!svn/ver/5943/branches/1.2-stable/lib/tasks/email.rake END -migrate_plugins.rake -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/752/trunk/lib/tasks/migrate_plugins.rake -END -ci.rake -K 25 -svn:wc:ra_dav:version-url -V 42 -/svn/!svn/ver/4643/trunk/lib/tasks/ci.rake -END -fetch_changesets.rake -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/1155/trunk/lib/tasks/fetch_changesets.rake -END diff -r adc8466df404 -r 753f1380d6bc lib/tasks/.svn/entries --- a/lib/tasks/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,15 +1,15 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/lib/tasks +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/lib/tasks http://redmine.rubyforge.org/svn -2011-02-26T13:09:25.657748Z -4950 -jplang +2011-05-28T03:34:47.536780Z +5943 +tmaruyama @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 03301be8b264b5cb46d05896861dcc4d 2007-09-02T08:08:10.346505Z 691 @@ -66,7 +66,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 2ee57ccc06c675e55c38a4153a27c7c3 2010-05-01T09:37:46.451305Z 3721 @@ -100,11 +100,11 @@ -2011-03-03T11:05:14.000000Z -0c57af5536009680bb8c3c3302fc628d -2006-07-29T09:32:58.780216Z -12 -jplang +2011-06-06T13:20:53.000000Z +7a4ab6c4928c49aa5194dec204164068 +2011-04-28T07:10:13.491200Z +5560 +tmaruyama @@ -126,7 +126,7 @@ -877 +863 reminder.rake file @@ -134,7 +134,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 07fcf57752978d65a694eb57adcc0851 2010-09-20T23:17:51.402972Z 4167 @@ -168,7 +168,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 0254f4ee916dee0a2572e63e947f8a1b 2009-07-27T00:55:43.057910Z 2825 @@ -202,7 +202,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z c25b466de7654465538a91e5f5ab32b9 2010-11-14T15:14:19.280754Z 4405 @@ -236,7 +236,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z b522c20249b1fad89c3276d10ccaaf6b 2011-02-26T13:09:25.657748Z 4950 @@ -270,7 +270,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 010fbb563237ff01803aa47736cf863e 2010-08-18T17:23:23.071766Z 3948 @@ -304,7 +304,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 984c757ee4c8fa78f649f8dd34b715cf 2009-03-15T10:03:56.604709Z 2592 @@ -338,7 +338,7 @@ -2011-03-03T11:40:18.000000Z +2011-06-06T13:15:00.000000Z ca73c8345daa839f0145c671ad94b91f 2011-02-11T15:30:45.959165Z 4806 @@ -372,7 +372,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 16eaf27a5959829a12961ff16e233600 2009-12-13T12:39:22.716082Z 3167 @@ -406,7 +406,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z f27a83cf3f04d7906ac2f3ca40d01a20 2008-09-05T10:31:06.632668Z 1786 @@ -440,7 +440,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 5c9889bed6f4a4d18dbeb3d904855bb6 2010-08-07T15:11:26.667915Z 3922 @@ -474,11 +474,11 @@ -2011-03-03T11:40:18.000000Z -ceb44040708bb290ad5b62b5a366e823 -2011-02-23T18:03:33.945201Z -4937 -jplang +2011-06-06T13:20:53.000000Z +d8372de066f74a4f6e71b5795a316cf3 +2011-05-10T11:41:30.089198Z +5724 +tmaruyama has-props @@ -500,7 +500,7 @@ -4250 +4206 migrate_from_trac.rake file @@ -508,7 +508,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z db60f05f7cd325cbdd984f0b6d7b42ea 2010-12-31T15:30:50.544770Z 4599 @@ -542,7 +542,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z ba7db3c8df92c72d300288ec7276dbad 2011-01-28T19:45:09.952949Z 4765 @@ -576,11 +576,11 @@ -2011-03-03T11:05:14.000000Z -7875b7a15307c626a93c284f33757320 -2010-10-15T22:50:33.240825Z -4256 -edavis10 +2011-06-06T13:20:53.000000Z +6d17052a266b55a94e9d8de784cc1331 +2011-05-28T03:34:47.536780Z +5943 +tmaruyama @@ -602,7 +602,7 @@ -8244 +8145 migrate_plugins.rake file @@ -610,7 +610,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 82e0901f7cbdda05ed63c12a764c3614 2007-09-23T17:19:27.414302Z 752 @@ -644,7 +644,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 93f8964aea856c06fb2eaa62ca2023c2 2011-01-06T18:52:37.169690Z 4643 @@ -678,7 +678,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 320b77011663b1209247bb809bc43ecb 2008-02-16T16:25:58.204498Z 1155 diff -r adc8466df404 -r 753f1380d6bc lib/tasks/.svn/text-base/email.rake.svn-base --- a/lib/tasks/.svn/text-base/email.rake.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/.svn/text-base/email.rake.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -29,7 +29,7 @@ create: create a user account no_permission_check=1 disable permission checking when receiving the email - + Issue attributes control options: project=PROJECT identifier of the target project status=STATUS name of the target status @@ -58,10 +58,10 @@ options[:allow_override] = ENV['allow_override'] if ENV['allow_override'] options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user'] options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check'] - + MailHandler.receive(STDIN.read, options) end - + desc <<-END_DESC Read emails from an IMAP server. @@ -73,7 +73,7 @@ create: create a user account no_permission_check=1 disable permission checking when receiving the email - + Available IMAP options: host=HOST IMAP server host (default: 127.0.0.1) port=PORT IMAP server port (default: 143) @@ -81,7 +81,7 @@ username=USERNAME IMAP account password=PASSWORD IMAP password folder=FOLDER IMAP folder to read (default: INBOX) - + Issue attributes control options: project=PROJECT identifier of the target project status=STATUS name of the target status @@ -91,22 +91,22 @@ allow_override=ATTRS allow email content to override attributes specified by previous options ATTRS is a comma separated list of attributes - + Processed emails control options: move_on_success=MAILBOX move emails that were successfully received to MAILBOX instead of deleting them move_on_failure=MAILBOX move emails that were ignored to MAILBOX - + Examples: # No project specified. Emails MUST contain the 'Project' keyword: - + rake redmine:email:receive_iamp RAILS_ENV="production" \\ host=imap.foo.bar username=redmine@example.net password=xxx # Fixed project and default tracker specified, but emails can override # both tracker and priority attributes: - + rake redmine:email:receive_iamp RAILS_ENV="production" \\ host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\ project=foo \\ @@ -123,7 +123,7 @@ :folder => ENV['folder'], :move_on_success => ENV['move_on_success'], :move_on_failure => ENV['move_on_failure']} - + options = { :issue => {} } %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] } options[:allow_override] = ENV['allow_override'] if ENV['allow_override'] @@ -132,7 +132,7 @@ Redmine::IMAP.check(imap_options, options) end - + desc <<-END_DESC Read emails from an POP3 server. @@ -148,7 +148,7 @@ See redmine:email:receive_imap for more options and examples. END_DESC - + task :receive_pop3 => :environment do pop_options = {:host => ENV['host'], :port => ENV['port'], @@ -156,24 +156,24 @@ :username => ENV['username'], :password => ENV['password'], :delete_unprocessed => ENV['delete_unprocessed']} - + options = { :issue => {} } %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] } options[:allow_override] = ENV['allow_override'] if ENV['allow_override'] options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user'] options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check'] - + Redmine::POP3.check(pop_options, options) end - + desc "Send a test email to the user with the provided login name" task :test, :login, :needs => :environment do |task, args| include Redmine::I18n - abort l(:notice_email_error, "Please include the user login to test with. Example: login=examle-login") if args[:login].blank? + abort l(:notice_email_error, "Please include the user login to test with. Example: rake redmine:email:test[login]") if args[:login].blank? user = User.find_by_login(args[:login]) - abort l(:notice_email_error, "User #{args[:login]} not found") unless user.logged? - + abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged? + ActionMailer::Base.raise_delivery_errors = true begin Mailer.deliver_test(User.current) diff -r adc8466df404 -r 753f1380d6bc lib/tasks/.svn/text-base/extract_fixtures.rake.svn-base --- a/lib/tasks/.svn/text-base/extract_fixtures.rake.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/.svn/text-base/extract_fixtures.rake.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -10,15 +10,13 @@ File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file| data = ActiveRecord::Base.connection.select_all(sql % table_name) file.write data.inject({}) { |hash, record| - - # cast extracted values - ActiveRecord::Base.connection.columns(table_name).each { |col| - record[col.name] = col.type_cast(record[col.name]) if record[col.name] - } - - hash["#{table_name}_#{i.succ!}"] = record - hash + # cast extracted values + ActiveRecord::Base.connection.columns(table_name).each { |col| + record[col.name] = col.type_cast(record[col.name]) if record[col.name] + } + hash["#{table_name}_#{i.succ!}"] = record + hash }.to_yaml end end -end \ No newline at end of file +end diff -r adc8466df404 -r 753f1380d6bc lib/tasks/.svn/text-base/locales.rake.svn-base --- a/lib/tasks/.svn/text-base/locales.rake.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/.svn/text-base/locales.rake.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -9,21 +9,21 @@ desc 'Updates language files based on en.yml content (only works for new top level keys).' task :update do dir = ENV['DIR'] || './config/locales' - + en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en'] - + files = Dir.glob(File.join(dir,'*.{yaml,yml}')) files.each do |file| puts "Updating file #{file}" file_strings = YAML.load(File.read(file)) file_strings = file_strings[file_strings.keys.first] - + missing_keys = en_strings.keys - file_strings.keys next if missing_keys.empty? - + puts "==> Missing #{missing_keys.size} keys (#{missing_keys.join(', ')})" lang = File.open(file, 'a') - + missing_keys.each do |key| {key => en_strings[key]}.to_yaml.each_line do |line| next if line =~ /^---/ || line.empty? @@ -31,11 +31,11 @@ lang << " #{line}" end end - + lang.close end end - + desc 'Checks interpolation arguments in locals against en.yml' task :check_interpolation do dir = ENV['DIR'] || './config/locales' @@ -44,7 +44,7 @@ files.each do |file| file_strings = YAML.load(File.read(file)) file_strings = file_strings[file_strings.keys.first] - + file_strings.each do |key, string| next unless string.is_a?(String) string.scan /%\{\w+\}/ do |match| @@ -71,7 +71,7 @@ deletes = ENV['key'] ? Regexp.union(ENV['key'].split(',')) : nil # Ignore multiline keys (begin with | or >) and keys with children (nothing meaningful after :) delete_regex = /\A #{deletes}: +[^\|>\s#].*\z/ - + files.each do |path| # Skip certain locales (puts "Skipping #{path}"; next) if File.basename(path, ".yml") =~ skips @@ -80,7 +80,7 @@ File.open(path, 'w') {|file| orig_content.each_line {|line| file.puts line unless line.chomp =~ delete_regex}} end end - + desc <<-END_DESC Adds a new top-level translation string to all locale file (only works for childless keys, probably doesn\'t work on windows, doesn't check for duplicates). diff -r adc8466df404 -r 753f1380d6bc lib/tasks/email.rake --- a/lib/tasks/email.rake Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/email.rake Mon Jun 06 14:41:04 2011 +0100 @@ -1,16 +1,16 @@ # Redmine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -29,7 +29,7 @@ create: create a user account no_permission_check=1 disable permission checking when receiving the email - + Issue attributes control options: project=PROJECT identifier of the target project status=STATUS name of the target status @@ -58,10 +58,10 @@ options[:allow_override] = ENV['allow_override'] if ENV['allow_override'] options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user'] options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check'] - + MailHandler.receive(STDIN.read, options) end - + desc <<-END_DESC Read emails from an IMAP server. @@ -73,7 +73,7 @@ create: create a user account no_permission_check=1 disable permission checking when receiving the email - + Available IMAP options: host=HOST IMAP server host (default: 127.0.0.1) port=PORT IMAP server port (default: 143) @@ -81,7 +81,7 @@ username=USERNAME IMAP account password=PASSWORD IMAP password folder=FOLDER IMAP folder to read (default: INBOX) - + Issue attributes control options: project=PROJECT identifier of the target project status=STATUS name of the target status @@ -91,22 +91,22 @@ allow_override=ATTRS allow email content to override attributes specified by previous options ATTRS is a comma separated list of attributes - + Processed emails control options: move_on_success=MAILBOX move emails that were successfully received to MAILBOX instead of deleting them move_on_failure=MAILBOX move emails that were ignored to MAILBOX - + Examples: # No project specified. Emails MUST contain the 'Project' keyword: - + rake redmine:email:receive_iamp RAILS_ENV="production" \\ host=imap.foo.bar username=redmine@example.net password=xxx # Fixed project and default tracker specified, but emails can override # both tracker and priority attributes: - + rake redmine:email:receive_iamp RAILS_ENV="production" \\ host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\ project=foo \\ @@ -123,7 +123,7 @@ :folder => ENV['folder'], :move_on_success => ENV['move_on_success'], :move_on_failure => ENV['move_on_failure']} - + options = { :issue => {} } %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] } options[:allow_override] = ENV['allow_override'] if ENV['allow_override'] @@ -132,7 +132,7 @@ Redmine::IMAP.check(imap_options, options) end - + desc <<-END_DESC Read emails from an POP3 server. @@ -148,7 +148,7 @@ See redmine:email:receive_imap for more options and examples. END_DESC - + task :receive_pop3 => :environment do pop_options = {:host => ENV['host'], :port => ENV['port'], @@ -156,24 +156,24 @@ :username => ENV['username'], :password => ENV['password'], :delete_unprocessed => ENV['delete_unprocessed']} - + options = { :issue => {} } %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] } options[:allow_override] = ENV['allow_override'] if ENV['allow_override'] options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user'] options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check'] - + Redmine::POP3.check(pop_options, options) end - + desc "Send a test email to the user with the provided login name" task :test, :login, :needs => :environment do |task, args| include Redmine::I18n - abort l(:notice_email_error, "Please include the user login to test with. Example: login=examle-login") if args[:login].blank? + abort l(:notice_email_error, "Please include the user login to test with. Example: rake redmine:email:test[login]") if args[:login].blank? user = User.find_by_login(args[:login]) - abort l(:notice_email_error, "User #{args[:login]} not found") unless user.logged? - + abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged? + ActionMailer::Base.raise_delivery_errors = true begin Mailer.deliver_test(User.current) diff -r adc8466df404 -r 753f1380d6bc lib/tasks/extract_fixtures.rake --- a/lib/tasks/extract_fixtures.rake Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/extract_fixtures.rake Mon Jun 06 14:41:04 2011 +0100 @@ -10,15 +10,13 @@ File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file| data = ActiveRecord::Base.connection.select_all(sql % table_name) file.write data.inject({}) { |hash, record| - - # cast extracted values - ActiveRecord::Base.connection.columns(table_name).each { |col| - record[col.name] = col.type_cast(record[col.name]) if record[col.name] - } - - hash["#{table_name}_#{i.succ!}"] = record - hash + # cast extracted values + ActiveRecord::Base.connection.columns(table_name).each { |col| + record[col.name] = col.type_cast(record[col.name]) if record[col.name] + } + hash["#{table_name}_#{i.succ!}"] = record + hash }.to_yaml end end -end \ No newline at end of file +end diff -r adc8466df404 -r 753f1380d6bc lib/tasks/locales.rake --- a/lib/tasks/locales.rake Thu Mar 03 15:08:45 2011 +0000 +++ b/lib/tasks/locales.rake Mon Jun 06 14:41:04 2011 +0100 @@ -9,21 +9,21 @@ desc 'Updates language files based on en.yml content (only works for new top level keys).' task :update do dir = ENV['DIR'] || './config/locales' - + en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en'] - + files = Dir.glob(File.join(dir,'*.{yaml,yml}')) files.each do |file| puts "Updating file #{file}" file_strings = YAML.load(File.read(file)) file_strings = file_strings[file_strings.keys.first] - + missing_keys = en_strings.keys - file_strings.keys next if missing_keys.empty? - + puts "==> Missing #{missing_keys.size} keys (#{missing_keys.join(', ')})" lang = File.open(file, 'a') - + missing_keys.each do |key| {key => en_strings[key]}.to_yaml.each_line do |line| next if line =~ /^---/ || line.empty? @@ -31,11 +31,11 @@ lang << " #{line}" end end - + lang.close end end - + desc 'Checks interpolation arguments in locals against en.yml' task :check_interpolation do dir = ENV['DIR'] || './config/locales' @@ -44,7 +44,7 @@ files.each do |file| file_strings = YAML.load(File.read(file)) file_strings = file_strings[file_strings.keys.first] - + file_strings.each do |key, string| next unless string.is_a?(String) string.scan /%\{\w+\}/ do |match| @@ -71,7 +71,7 @@ deletes = ENV['key'] ? Regexp.union(ENV['key'].split(',')) : nil # Ignore multiline keys (begin with | or >) and keys with children (nothing meaningful after :) delete_regex = /\A #{deletes}: +[^\|>\s#].*\z/ - + files.each do |path| # Skip certain locales (puts "Skipping #{path}"; next) if File.basename(path, ".yml") =~ skips @@ -80,7 +80,7 @@ File.open(path, 'w') {|file| orig_content.each_line {|line| file.puts line unless line.chomp =~ delete_regex}} end end - + desc <<-END_DESC Adds a new top-level translation string to all locale file (only works for childless keys, probably doesn\'t work on windows, doesn't check for duplicates). diff -r adc8466df404 -r 753f1380d6bc log/.svn/entries --- a/log/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/log/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,8 +1,8 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/log +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/log http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-03-03T11:05:11.000000Z +2011-06-06T13:15:00.000000Z ae0415159f2c4dba3fc1a559d4c0f9f5 2006-10-15T09:00:05.847811Z 31 diff -r adc8466df404 -r 753f1380d6bc public/.svn/all-wcprops --- a/public/.svn/all-wcprops Thu Mar 03 15:08:45 2011 +0000 +++ b/public/.svn/all-wcprops Mon Jun 06 14:41:04 2011 +0100 @@ -1,47 +1,17 @@ K 25 svn:wc:ra_dav:version-url -V 31 -/svn/!svn/ver/4954/trunk/public -END -dispatch.fcgi.example -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/2017/trunk/public/dispatch.fcgi.example +V 45 +/svn/!svn/ver/5961/branches/1.2-stable/public END 500.html K 25 svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/419/trunk/public/500.html +V 54 +/svn/!svn/ver/5878/branches/1.2-stable/public/500.html END 404.html K 25 svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/419/trunk/public/404.html +V 54 +/svn/!svn/ver/5878/branches/1.2-stable/public/404.html END -dispatch.cgi.example -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/2017/trunk/public/dispatch.cgi.example -END -dispatch.rb.example -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/2017/trunk/public/dispatch.rb.example -END -favicon.ico -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/3845/trunk/public/favicon.ico -END -htaccess.fcgi.example -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4775/trunk/public/htaccess.fcgi.example -END diff -r adc8466df404 -r 753f1380d6bc public/.svn/entries --- a/public/.svn/entries Thu Mar 03 15:08:45 2011 +0000 +++ b/public/.svn/entries Mon Jun 06 14:41:04 2011 +0100 @@ -1,14 +1,14 @@ 10 dir -4993 -http://redmine.rubyforge.org/svn/trunk/public +6000 +http://redmine.rubyforge.org/svn/branches/1.2-stable/public http://redmine.rubyforge.org/svn -2011-02-27T13:34:41.060565Z -4954 +2011-05-29T12:06:05.086159Z +5961 jplang has-props @@ -32,7 +32,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z aeefa1552a4af651eadd16f4e0bb1323 2008-11-11T13:54:10.112610Z 2017 @@ -72,11 +72,11 @@ -2011-03-03T11:05:14.000000Z -b78e2e9e0cd94c786bb9404516e062c4 -2007-04-04T18:20:45.423396Z -419 -jplang +2011-06-06T13:20:53.000000Z +18ae067e7e513237ff7f6162b48a42c4 +2011-04-27T00:21:35.080410Z +5552 +tmaruyama has-props @@ -98,7 +98,7 @@ -576 +674 help dir @@ -112,11 +112,11 @@ -2011-03-03T11:05:14.000000Z -5acfd3818d5f470c26a1af577d06195e -2007-04-04T18:20:45.423396Z -419 -jplang +2011-06-06T13:20:53.000000Z +f0fc42f7395f7301cdddfb37c50b9173 +2011-04-27T00:21:14.313029Z +5551 +tmaruyama has-props @@ -138,7 +138,7 @@ -484 +485 dispatch.cgi.example file @@ -146,7 +146,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 5a5128856eb14ac7b3f94099cb504775 2008-11-11T13:54:10.112610Z 2017 @@ -180,7 +180,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 5a5128856eb14ac7b3f94099cb504775 2008-11-11T13:54:10.112610Z 2017 @@ -217,7 +217,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 6d85758acb4f4baa4d242ba451c91026 2010-07-16T03:45:50.104236Z 3845 @@ -251,7 +251,7 @@ -2011-03-03T11:05:14.000000Z +2011-06-06T13:15:00.000000Z 67c99c6ef23adb15d9efed92be959b6e 2011-01-30T06:31:28.038726Z 4775 diff -r adc8466df404 -r 753f1380d6bc public/.svn/text-base/404.html.svn-base --- a/public/.svn/text-base/404.html.svn-base Thu Mar 03 15:08:45 2011 +0000 +++ b/public/.svn/text-base/404.html.svn-base Mon Jun 06 14:41:04 2011 +0100 @@ -1,7 +1,7 @@ -redMine 404 error +Redmine 404 error