# HG changeset patch # User Chris Cannam # Date 1299154313 0 # Node ID 73ff0e6a11b156dcaa5b00b3386b03bef56a8310 # Parent eeebe205a0562c9814c0b2c39e1cc019f43cf0df# Parent 7cec015f07ce4a03f4928f1dcf11dc26da6369ac * Merge from branch cannam-pre-20110113-merge diff -r 7cec015f07ce -r 73ff0e6a11b1 .gitignore --- a/.gitignore Tue Feb 22 16:48:15 2011 +0000 +++ b/.gitignore Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,7 @@ +/.project +/.loadpath /config/additional_environment.rb +/config/configuration.yml /config/database.yml /config/email.yml /config/initializers/session_store.rb @@ -7,6 +10,8 @@ /db/*.sqlite3 /db/schema.rb /files/* +/lib/redmine/scm/adapters/mercurial/redminehelper.pyc +/lib/redmine/scm/adapters/mercurial/redminehelper.pyo /log/*.log* /log/mongrel_debug /public/dispatch.* diff -r 7cec015f07ce -r 73ff0e6a11b1 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,26 @@ +syntax: glob + +.project +.loadpath +config/additional_environment.rb +config/configuration.yml +config/database.yml +config/email.yml +config/initializers/session_store.rb +coverage +db/*.db +db/*.sqlite3 +db/schema.rb +files/* +lib/redmine/scm/adapters/mercurial/redminehelper.pyc +lib/redmine/scm/adapters/mercurial/redminehelper.pyo +log/*.log* +log/mongrel_debug +public/dispatch.* +public/plugin_assets +tmp/cache/* +tmp/sessions/* +tmp/sockets/* +tmp/test/* +vendor/rails +*.rbc diff -r 7cec015f07ce -r 73ff0e6a11b1 .svn/all-wcprops --- a/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 24 -/svn/!svn/ver/4411/trunk +/svn/!svn/ver/4993/trunk +END +.hgignore +K 25 +svn:wc:ra_dav:version-url +V 34 +/svn/!svn/ver/4834/trunk/.hgignore END Rakefile K 25 @@ -19,5 +25,5 @@ K 25 svn:wc:ra_dav:version-url V 35 -/svn/!svn/ver/3768/trunk/.gitignore +/svn/!svn/ver/4834/trunk/.gitignore END diff -r 7cec015f07ce -r 73ff0e6a11b1 .svn/dir-prop-base --- a/.svn/dir-prop-base Tue Feb 22 16:48:15 2011 +0000 +++ b/.svn/dir-prop-base Thu Mar 03 12:11:53 2011 +0000 @@ -4,7 +4,9 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81:/trunk:1751 K 10 svn:ignore -V 9 +V 28 coverage +.project +.loadpath END diff -r 7cec015f07ce -r 73ff0e6a11b1 .svn/entries --- a/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk http://redmine.rubyforge.org/svn -2010-11-17T18:27:38.712585Z -4411 -jplang +2011-03-03T05:51:46.224821Z +4993 +tmaruyama has-props @@ -29,6 +29,18 @@ test dir +.hgignore +file + + + + + +970b3ffe21e2c668737cf5abf0d0ac48 +2011-02-15T11:04:52.942730Z +4834 +tmaruyama + app dir @@ -41,7 +53,7 @@ -2010-09-23T14:37:44.367737Z +2011-03-03T11:05:14.000000Z bbf560d44f092d22a30d3a562436ad8c 2006-12-05T20:45:04.842118Z 67 @@ -69,13 +81,16 @@ 307 +extra +dir + README.rdoc file -2010-09-23T14:37:44.367737Z +2011-03-03T11:05:14.000000Z 67c937b1f1d0603e69f322de34bbfe04 2010-07-18T15:49:24.341728Z 3849 @@ -103,9 +118,6 @@ 208 -extra -dir - db dir @@ -133,11 +145,11 @@ -2010-09-23T14:37:44.363818Z -201a803b90bbd2a1624c4ce1dd260098 -2010-06-09T22:01:21.132822Z -3768 -edavis10 +2011-03-03T11:40:18.000000Z +84dbba0b6ddcd80d28c62a3f8e344bc4 +2011-02-15T11:04:52.942730Z +4834 +tmaruyama @@ -159,7 +171,7 @@ -322 +477 lib dir diff -r 7cec015f07ce -r 73ff0e6a11b1 .svn/text-base/.gitignore.svn-base --- a/.svn/text-base/.gitignore.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/.svn/text-base/.gitignore.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,7 @@ +/.project +/.loadpath /config/additional_environment.rb +/config/configuration.yml /config/database.yml /config/email.yml /config/initializers/session_store.rb @@ -7,6 +10,8 @@ /db/*.sqlite3 /db/schema.rb /files/* +/lib/redmine/scm/adapters/mercurial/redminehelper.pyc +/lib/redmine/scm/adapters/mercurial/redminehelper.pyo /log/*.log* /log/mongrel_debug /public/dispatch.* diff -r 7cec015f07ce -r 73ff0e6a11b1 .svn/text-base/.hgignore.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.svn/text-base/.hgignore.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,27 @@ +syntax: glob + +.project +.loadpath +config/additional_environment.rb +config/configuration.yml +config/database.yml +config/email.yml +config/initializers/session_store.rb +coverage +db/*.db +db/*.sqlite3 +db/schema.rb +files/* +lib/redmine/scm/adapters/mercurial/redminehelper.pyc +lib/redmine/scm/adapters/mercurial/redminehelper.pyo +log/*.log* +log/mongrel_debug +public/dispatch.* +public/plugin_assets +tmp/* +tmp/cache/* +tmp/sessions/* +tmp/sockets/* +tmp/test/* +vendor/rails +*.rbc diff -r 7cec015f07ce -r 73ff0e6a11b1 .svn/tmp/.hgignore.tmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.svn/tmp/.hgignore.tmp Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,26 @@ +syntax: glob + +.project +.loadpath +config/additional_environment.rb +config/configuration.yml +config/database.yml +config/email.yml +config/initializers/session_store.rb +coverage +db/*.db +db/*.sqlite3 +db/schema.rb +files/* +lib/redmine/scm/adapters/mercurial/redminehelper.pyc +lib/redmine/scm/adapters/mercurial/redminehelper.pyo +log/*.log* +log/mongrel_debug +public/dispatch.* +public/plugin_assets +tmp/cache/* +tmp/sessions/* +tmp/sockets/* +tmp/test/* +vendor/rails +*.rbc diff -r 7cec015f07ce -r 73ff0e6a11b1 app/.svn/all-wcprops --- a/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 28 -/svn/!svn/ver/4411/trunk/app +/svn/!svn/ver/4990/trunk/app END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/.svn/entries --- a/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app http://redmine.rubyforge.org/svn -2010-11-17T18:27:38.712585Z -4411 -jplang +2011-03-03T03:30:10.954225Z +4990 +tmaruyama diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/all-wcprops --- a/app/controllers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4411/trunk/app/controllers +/svn/!svn/ver/4954/trunk/app/controllers END issues_controller.rb K 25 svn:wc:ra_dav:version-url V 61 -/svn/!svn/ver/4411/trunk/app/controllers/issues_controller.rb +/svn/!svn/ver/4741/trunk/app/controllers/issues_controller.rb END queries_controller.rb K 25 @@ -37,13 +37,13 @@ K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/3945/trunk/app/controllers/auto_completes_controller.rb +/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/4224/trunk/app/controllers/my_controller.rb +/svn/!svn/ver/4497/trunk/app/controllers/my_controller.rb END comments_controller.rb K 25 @@ -57,29 +57,23 @@ 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 -context_menus_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/4242/trunk/app/controllers/context_menus_controller.rb -END journals_controller.rb K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/4034/trunk/app/controllers/journals_controller.rb -END -workflows_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3536/trunk/app/controllers/workflows_controller.rb +/svn/!svn/ver/4954/trunk/app/controllers/journals_controller.rb END time_entry_reports_controller.rb K 25 @@ -87,6 +81,12 @@ 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 @@ -99,29 +99,23 @@ V 75 /svn/!svn/ver/4075/trunk/app/controllers/project_enumerations_controller.rb END -settings_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4220/trunk/app/controllers/settings_controller.rb -END -timelog_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4410/trunk/app/controllers/timelog_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 -users_controller.rb +settings_controller.rb K 25 svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4382/trunk/app/controllers/users_controller.rb +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 @@ -129,6 +123,12 @@ 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 @@ -139,7 +139,13 @@ K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/4286/trunk/app/controllers/application_controller.rb +/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 @@ -153,12 +159,6 @@ V 67 /svn/!svn/ver/3744/trunk/app/controllers/auth_sources_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 search_controller.rb K 25 svn:wc:ra_dav:version-url @@ -175,7 +175,7 @@ K 25 svn:wc:ra_dav:version-url V 70 -/svn/!svn/ver/3591/trunk/app/controllers/issue_relations_controller.rb +/svn/!svn/ver/4764/trunk/app/controllers/issue_relations_controller.rb END versions_controller.rb K 25 @@ -199,7 +199,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4174/trunk/app/controllers/news_controller.rb +/svn/!svn/ver/4505/trunk/app/controllers/news_controller.rb END trackers_controller.rb K 25 @@ -235,7 +235,7 @@ K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/3680/trunk/app/controllers/repositories_controller.rb +/svn/!svn/ver/4860/trunk/app/controllers/repositories_controller.rb END admin_controller.rb K 25 @@ -247,13 +247,13 @@ K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/4397/trunk/app/controllers/projects_controller.rb +/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/3906/trunk/app/controllers/account_controller.rb +/svn/!svn/ver/4757/trunk/app/controllers/account_controller.rb END calendars_controller.rb K 25 @@ -283,13 +283,13 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4303/trunk/app/controllers/wiki_controller.rb +/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/4047/trunk/app/controllers/activities_controller.rb +/svn/!svn/ver/4579/trunk/app/controllers/activities_controller.rb END enumerations_controller.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/entries --- a/app/controllers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/controllers http://redmine.rubyforge.org/svn -2010-11-17T18:27:38.712585Z -4411 +2011-02-27T13:34:41.060565Z +4954 jplang @@ -32,10 +32,10 @@ -2010-11-19T13:04:46.996826Z -e6c77385e49176b593367b44e7b33f3e -2010-11-17T18:27:38.712585Z -4411 +2011-03-03T11:05:10.000000Z +b2f39d4816a34c8fdbe451324ff298e4 +2011-01-22T13:28:20.816262Z +4741 jplang has-props @@ -58,7 +58,7 @@ -12834 +12253 queries_controller.rb file @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 7ad6758cfd160c4b6ef6d71be06e087c 2010-04-19T15:08:28.751734Z 3684 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 7a73aba15fcd447531d1552de01706d9 2009-12-20T09:44:28.044710Z 3201 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 612f3e7497e14c728934e83fbe5778c4 2009-12-20T09:45:04.782778Z 3202 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 3ee494bd8196306eab8913bd462b44da 2010-06-20T16:08:15.578906Z 3798 @@ -202,33 +202,33 @@ -2010-09-23T14:37:44.391741Z -8cd8e21323a4500a05c26e4ebdde1812 -2010-08-17T15:03:58.074505Z -3945 -edavis10 - - - - - - - - - - - - - - - - - - - - - -665 +2011-03-03T11:05:10.000000Z +edbdb443ff7cc8f299f7772b3532eca1 +2010-12-12T16:06:43.892596Z +4503 +jplang + + + + + + + + + + + + + + + + + + + + + +772 my_controller.rb file @@ -236,11 +236,11 @@ -2010-11-19T13:04:46.996826Z -b465d7aeca2d6b4cc11159ae9bc7349e -2010-09-28T22:13:11.637219Z -4224 -edavis10 +2011-03-03T11:05:10.000000Z +40ea055e0f9f9aa83680751fdab5a0a5 +2010-12-12T14:25:23.262992Z +4497 +jplang has-props @@ -262,7 +262,7 @@ -6021 +5768 comments_controller.rb file @@ -270,7 +270,7 @@ -2010-09-24T12:48:26.271687Z +2011-03-03T11:05:10.000000Z c2289eb9b654117a101c072955d4c705 2010-09-23T15:20:19.085385Z 4172 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 20e245fa61dc0dcb2f105a8f0e6af98c 2010-06-19T19:51:43.174421Z 3784 @@ -332,13 +332,47 @@ 3447 +context_menus_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +596c3ab10f8cf4687f6d8b163e7a2243 +2010-12-29T19:55:52.079810Z +4580 +jplang + + + + + + + + + + + + + + + + + + + + + +1847 + welcome_controller.rb file -2010-09-23T14:37:44.403745Z +2011-03-03T11:05:10.000000Z 95ad1acf7766861a4dbd0aebd9c847de 2009-10-21T03:21:31.657956Z 2941 @@ -366,51 +400,17 @@ 1091 -context_menus_controller.rb -file - - - - -2010-11-19T13:04:46.996826Z -2db29b69c3f0130e470a0a11dfc1f28b -2010-10-08T03:09:51.863032Z -4242 -jbbarth - - - - - - - - - - - - - - - - - - - - - -1821 - journals_controller.rb file -2010-09-23T14:37:44.395735Z -deb481ad0f862b9305b79f292d59fb51 -2010-08-23T15:04:36.844654Z -4034 -edavis10 +2011-03-03T11:40:18.000000Z +0610cb98929633e94c97f1060f4f1566 +2011-02-27T13:34:41.060565Z +4954 +jplang has-props @@ -432,41 +432,7 @@ -3439 - -workflows_controller.rb -file - - - - -2010-09-23T14:37:44.403745Z -5052c701a12ad27e88950dd4a745b0f8 -2010-03-04T05:33:45.236699Z -3536 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -3346 +4081 time_entry_reports_controller.rb file @@ -474,7 +440,7 @@ -2010-11-19T13:04:46.996826Z +2011-03-03T11:05:10.000000Z dadcb57d89dc3c90c5fa099b143c07f8 2010-10-05T16:07:17.015270Z 4232 @@ -502,13 +468,47 @@ 9308 +workflows_controller.rb +file + + + + +2011-03-03T11:40:18.000000Z +73cdba17212ad890eea7b7c7ee140d7e +2011-02-20T15:38:07.840581Z +4895 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +4041 + reports_controller.rb file -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 8f7e6e7308912a6169a700b0c88174a0 2010-04-27T16:43:52.584075Z 3692 @@ -542,7 +542,7 @@ -2010-09-24T12:48:26.271687Z +2011-03-03T11:05:10.000000Z 828b364ba2850ceddb3caa566bf10124 2010-09-10T16:00:49.687515Z 4075 @@ -570,47 +570,13 @@ 856 -timelog_controller.rb -file - - - - -2010-11-19T13:04:46.996826Z -7984019db8d0beb1d7ff158390d4ad68 -2010-11-16T20:27:45.364396Z -4410 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -8623 - custom_fields_controller.rb file -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 00272455ac5be11da48f92c4a443c538 2010-04-03T11:54:24.331654Z 3627 @@ -644,11 +610,11 @@ -2010-11-19T13:04:46.996826Z -4328cabdf111342d147b245bc61bb75e -2010-09-28T20:19:55.214366Z -4220 -edavis10 +2011-03-03T11:05:10.000000Z +98c4c9f33f038160a44752d229926c32 +2010-11-27T14:06:11.754120Z +4432 +jplang has-props @@ -670,7 +636,41 @@ -2239 +2271 + +timelog_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +3e6698f208a263105c7b4a59c60b26b3 +2010-12-14T18:29:24.891563Z +4511 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +10484 issue_moves_controller.rb file @@ -678,7 +678,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z cacd6ffe0ce299e2ede9d45b7ef8af42 2010-10-25T18:44:46.868009Z 4292 @@ -712,10 +712,10 @@ -2010-11-19T13:04:47.000764Z -3af0a81ba74621dc21d877a579b39d9c -2010-11-07T14:15:01.891476Z -4382 +2011-03-03T11:05:10.000000Z +7860374d98cda03916d9b06d9ec8d370 +2011-01-16T15:23:11.666065Z +4729 jplang has-props @@ -738,7 +738,7 @@ -7565 +8474 files_controller.rb file @@ -746,7 +746,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z f0246e8f8dde5ea7b93e4dc2162181fc 2010-09-26T08:07:41.604064Z 4177 @@ -780,10 +780,10 @@ -2010-11-19T13:04:47.000764Z -8f7d4c9d306ae9d59ea0e064466454d1 -2010-10-23T11:07:04.019894Z -4286 +2011-03-03T11:05:10.000000Z +218c497f1c4c6d7b41cdac214e595156 +2010-12-23T14:49:14.339855Z +4573 jplang has-props @@ -806,7 +806,7 @@ -13669 +15545 previews_controller.rb file @@ -814,7 +814,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z c5ae4fae18159e70fd81c2487bb1daa1 2010-09-24T16:26:46.819682Z 4174 @@ -842,13 +842,47 @@ 957 +ldap_auth_sources_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +5f7b9cb2e9c8a60db58ea0833cf481c5 +2010-05-23T03:16:31.304135Z +3744 +edavis10 + + + + + + + + + + + + + + + + + + + + + +917 + auth_sources_controller.rb file -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 237280766d09418161536250d514a7bf 2010-05-23T03:16:31.304135Z 3744 @@ -876,47 +910,13 @@ 2542 -ldap_auth_sources_controller.rb -file - - - - -2010-09-23T14:37:44.395735Z -5f7b9cb2e9c8a60db58ea0833cf481c5 -2010-05-23T03:16:31.304135Z -3744 -edavis10 - - - - - - - - - - - - - - - - - - - - - -917 - search_controller.rb file -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 0015154998f830227b636ee423f007f3 2010-06-20T20:01:32.722003Z 3806 @@ -950,7 +950,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z f3f4378ec15e1401ead0dcac4e9cb059 2010-03-03T17:05:00.967826Z 3528 @@ -978,13 +978,47 @@ 5824 +issue_relations_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +8c5249f85056c74e0ab06b5dfa9fed72 +2011-01-27T21:38:47.430923Z +4764 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2450 + versions_controller.rb file -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z a98fb262a20669600a85c0f72202c5e6 2010-11-01T13:13:32.982466Z 4354 @@ -1012,47 +1046,13 @@ 6241 -issue_relations_controller.rb -file - - - - -2010-09-23T14:37:44.395735Z -c57448661f2eaab81c76f23d7f51e0ab -2010-03-16T15:17:47.586688Z -3591 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -2220 - boards_controller.rb file -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 52638c82da929081099076d5aa0f9212 2010-08-16T23:39:27.396462Z 3942 @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 21c0e5d894d1429ac39f3253ae021594 2010-01-05T18:16:03.565347Z 3281 @@ -1120,11 +1120,11 @@ -2010-11-19T13:04:47.000764Z -d9e36fcf69f18973b274648b7b70dccf -2010-09-24T16:26:46.819682Z -4174 -edavis10 +2011-03-03T11:05:10.000000Z +cb358f888a6a92cc99bef83af92cd766 +2010-12-12T17:00:52.100205Z +4505 +jplang has-props @@ -1146,7 +1146,7 @@ -3221 +3369 trackers_controller.rb file @@ -1154,7 +1154,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z a5e793eb94e501be4c1a39acc65cc568 2010-04-03T11:54:24.331654Z 3627 @@ -1188,7 +1188,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 77209ec52ddcefafb0bfbb76195167ec 2010-08-10T22:37:00.826946Z 3934 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z f0fdda9126d71c0b2d4638de50ab1097 2010-02-12T19:15:39.389877Z 3416 @@ -1256,7 +1256,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 28f2e44219870c62c9844354b78af6e1 2010-04-03T11:54:24.331654Z 3627 @@ -1290,7 +1290,7 @@ -2010-09-23T14:37:44.403745Z +2011-03-03T11:05:10.000000Z 7ae79a9d22586240a01af73834b718a3 2010-02-05T16:57:02.094258Z 3370 @@ -1324,11 +1324,11 @@ -2010-09-23T14:37:44.399747Z -a90fd2992bc17c6cee999369521194c4 -2010-04-17T12:51:46.860438Z -3680 -jplang +2011-03-03T11:40:18.000000Z +5511ecf5c7190efe44398994a222b486 +2011-02-17T14:17:04.791825Z +4860 +tmaruyama has-props @@ -1350,7 +1350,7 @@ -10750 +11539 admin_controller.rb file @@ -1358,7 +1358,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z ed65a11326fe54914ba3a750a2b6f943 2009-12-19T20:33:24.113306Z 3200 @@ -1392,10 +1392,10 @@ -2010-11-19T13:04:47.000764Z -b0f584d53a742f6c89b157030f9d6a8d -2010-11-13T10:05:43.644565Z -4397 +2011-03-03T11:05:10.000000Z +c07d79c1bd100dd8972ea408c4fe549f +2011-01-06T20:57:17.003359Z +4647 jplang has-props @@ -1418,7 +1418,7 @@ -10011 +10103 account_controller.rb file @@ -1426,11 +1426,11 @@ -2010-09-23T14:37:44.391741Z -d0ff6be1c749b765d9d64bef64c27537 -2010-08-03T15:26:50.842290Z -3906 -edavis10 +2011-03-03T11:05:10.000000Z +7b162cad903bb22948f7040a48509256 +2011-01-23T11:40:07.678287Z +4757 +jplang has-props @@ -1452,7 +1452,7 @@ -8962 +9350 calendars_controller.rb file @@ -1460,7 +1460,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z 0be20cab6d5ea49f428a90cf3afef3e3 2010-11-07T22:38:10.728638Z 4388 @@ -1494,7 +1494,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 119ceb4a27aa554d03867f46cb142d0e 2010-03-17T15:41:58.766740Z 3597 @@ -1528,7 +1528,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z 81dbee1745da99b9ea499f3fbe1d3944 2010-11-07T22:38:10.728638Z 4388 @@ -1562,7 +1562,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z c2c68bf5fa3ed22a8f55c8414d1efce9 2010-03-17T15:41:58.766740Z 3597 @@ -1596,11 +1596,11 @@ -2010-11-19T13:04:47.004764Z -0af823002ab9c7e8f59b3d12cf6267e9 -2010-10-28T21:25:38.778234Z -4303 -edavis10 +2011-03-03T11:05:10.000000Z +ccc57886f63cb0efb0149b601dd2ac43 +2010-11-27T10:34:44.408431Z +4429 +jplang has-props @@ -1622,7 +1622,7 @@ -10145 +10185 activities_controller.rb file @@ -1630,33 +1630,33 @@ -2010-09-24T12:48:26.275788Z -88f55d118861ffaca0992fa5ec55d51f -2010-08-27T14:05:54.014502Z -4047 -edavis10 - - - - - - - - - - - - - - - - - - - - - -1952 +2011-03-03T11:05:10.000000Z +ad33818a03b408419be4e616e8c88b5c +2010-12-29T19:37:42.740543Z +4579 +jplang + + + + + + + + + + + + + + + + + + + + + +2037 enumerations_controller.rb file @@ -1664,7 +1664,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 1caaedc7bb0a3085878dc94446c70ab0 2010-03-02T20:03:09.514061Z 3524 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/account_controller.rb.svn-base --- a/app/controllers/.svn/text-base/account_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/account_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -203,12 +203,24 @@ self.logged_user = user # generate a key and set cookie if autologin if params[:autologin] && Setting.autologin? - token = Token.create(:user => user, :action => 'autologin') - cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now } + set_autologin_cookie(user) end call_hook(:controller_account_success_authentication_after, {:user => user }) redirect_back_or_default :controller => 'my', :action => 'page' end + + def set_autologin_cookie(user) + token = Token.create(:user => user, :action => 'autologin') + cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin' + cookie_options = { + :value => token.value, + :expires => 1.year.from_now, + :path => (Redmine::Configuration['autologin_cookie_path'] || '/'), + :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false), + :httponly => true + } + cookies[cookie_name] = cookie_options + end # Onthefly creation failed, display the registration form to fill/fix attributes def onthefly_creation_failed(user, auth_source_options = { }) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/activities_controller.rb.svn-base --- a/app/controllers/.svn/text-base/activities_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/activities_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -23,7 +23,7 @@ events = @activity.events(@date_from, @date_to) - if events.empty? || stale?(:etag => [events.first, User.current]) + 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 { @events_by_day = events.group_by(&:event_date) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/application_controller.rb.svn-base --- a/app/controllers/.svn/text-base/application_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/application_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -22,7 +22,7 @@ include Redmine::I18n layout 'base' - exempt_from_layout 'builder' + exempt_from_layout 'builder', 'rsb' # Remove broken cookie after upgrade from 0.8.x (#4292) # See https://rails.lighthouseapp.com/projects/8994/tickets/3360 @@ -71,10 +71,10 @@ elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action]) # RSS key authentication does not start a session User.find_by_rss_key(params[:key]) - elsif Setting.rest_api_enabled? && ['xml', 'json'].include?(params[:format]) - if params[:key].present? && accept_key_auth_actions.include?(params[:action]) + elsif Setting.rest_api_enabled? && api_request? + if (key = api_key_from_request) && accept_key_auth_actions.include?(params[:action]) # Use API key - User.find_by_api_key(params[:key]) + User.find_by_api_key(key) else # HTTP Basic, either username/password or API key/random authenticate_with_http_basic do |username, password| @@ -349,6 +349,30 @@ per_page end + # Returns offset and limit used to retrieve objects + # for an API response based on offset, limit and page parameters + def api_offset_and_limit(options=params) + if options[:offset].present? + offset = options[:offset].to_i + if offset < 0 + offset = 0 + end + end + limit = options[:limit].to_i + if limit < 1 + limit = 25 + elsif limit > 100 + limit = 100 + end + if offset.nil? && options[:page].present? + offset = (options[:page].to_i - 1) * limit + offset = 0 if offset < 0 + end + offset ||= 0 + + [offset, limit] + end + # qvalues http header parser # code taken from webrick def parse_qvalues(value) @@ -378,6 +402,15 @@ 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? + params[:key] + elsif request.headers["X-Redmine-API-Key"].present? + request.headers["X-Redmine-API-Key"] + end + end # Renders a warning flash if obj has unsaved attachments def render_attachment_warning_if_needed(obj) @@ -413,5 +446,37 @@ { attribute => error } end.to_json end + + # Renders API response on validation failure + def render_validation_errors(object) + options = { :status => :unprocessable_entity, :layout => false } + options.merge!(case params[:format] + when 'xml'; { :xml => object.errors } + when 'json'; { :json => {'errors' => object.errors} } # ActiveResource client compliance + else + raise "Unknown format #{params[:format]} in #render_validation_errors" + end + ) + 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) + if api_request? + begin + return self.view_paths.find_template(default_template_name(action_name), 'api') + rescue ::ActionView::MissingTemplate + # the api template was not found + # fallback to the default behaviour + end + end + super + end + + # Overrides #pick_layout so that #render with no arguments + # doesn't use the layout for api requests + def pick_layout(*args) + api_request? ? nil : super + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/auto_completes_controller.rb.svn-base --- a/app/controllers/.svn/text-base/auto_completes_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/auto_completes_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -4,12 +4,14 @@ def issues @issues = [] q = params[:q].to_s + query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues if q.match(/^\d+$/) - @issues << @project.issues.visible.find_by_id(q.to_i) + @issues << query.visible.find_by_id(q.to_i) end unless q.blank? - @issues += @project.issues.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10) + @issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10) end + @issues.compact! render :layout => false end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/context_menus_controller.rb.svn-base --- a/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -2,7 +2,8 @@ helper :watchers def issues - @issues = Issue.find_all_by_id(params[:ids], :include => :project) + @issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project) + if (@issues.size == 1) @issue = @issues.first @allowed_statuses = @issue.new_statuses_allowed_to(User.current) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/issue_relations_controller.rb.svn-base --- a/app/controllers/.svn/text-base/issue_relations_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/issue_relations_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -28,6 +28,7 @@ respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } format.js do + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } render :update do |page| page.replace_html "relations", :partial => 'issues/relations' if @relation.errors.empty? @@ -47,7 +48,10 @@ end respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } - format.js { render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} } + format.js { + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } + render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} + } end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/issues_controller.rb.svn-base --- a/app/controllers/.svn/text-base/issues_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/issues_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -44,6 +44,8 @@ include AttachmentsHelper helper :queries include QueriesHelper + helper :repositories + include RepositoriesHelper helper :sort include SortHelper include IssuesHelper @@ -65,27 +67,29 @@ sort_update(@query.sortable_columns) if @query.valid? - limit = case params[:format] + case params[:format] when 'csv', 'pdf' - Setting.issues_export_limit.to_i + @limit = Setting.issues_export_limit.to_i when 'atom' - Setting.feeds_limit.to_i + @limit = Setting.feeds_limit.to_i + when 'xml', 'json' + @offset, @limit = api_offset_and_limit else - per_page_option + @limit = per_page_option end @issue_count = @query.issue_count - @issue_pages = Paginator.new self, @issue_count, limit, params['page'] + @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 => @issue_pages.current.offset, - :limit => limit) + :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.xml { render :layout => false } - format.json { render :text => @issues.to_json, :layout => false } + format.api format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } format.csv { send_data(issues_to_csv(@issues, @project), :type => 'text/csv; header=present', :filename => 'export.csv') } format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') } @@ -104,14 +108,14 @@ @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? + @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 respond_to do |format| format.html { render :template => 'issues/show.rhtml' } - format.xml { render :layout => false } - format.json { render :text => @issue.to_json, :layout => false } + format.api format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' } format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") } end @@ -138,15 +142,13 @@ redirect_to(params[:continue] ? { :action => 'new', :project_id => @project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } : { :action => 'show', :id => @issue }) } - format.xml { render :action => 'show', :status => :created, :location => url_for(:controller => 'issues', :action => 'show', :id => @issue) } - format.json { render :text => @issue.to_json, :status => :created, :location => url_for(:controller => 'issues', :action => 'show'), :layout => false } + format.api { render :action => 'show', :status => :created, :location => issue_url(@issue) } end return else respond_to do |format| format.html { render :action => 'new' } - format.xml { render(:xml => @issue.errors, :status => :unprocessable_entity); return } - format.json { render :text => object_errors_to_json(@issue), :status => :unprocessable_entity, :layout => false } + format.api { render_validation_errors(@issue) } end end end @@ -171,8 +173,7 @@ respond_to do |format| format.html { redirect_back_or_default({:action => 'show', :id => @issue}) } - format.xml { head :ok } - format.json { head :ok } + format.api { head :ok } end else render_attachment_warning_if_needed(@issue) @@ -181,8 +182,7 @@ respond_to do |format| format.html { render :action => 'edit' } - format.xml { render :xml => @issue.errors, :status => :unprocessable_entity } - format.json { render :text => object_errors_to_json(@issue), :status => :unprocessable_entity, :layout => false } + format.api { render_validation_errors(@issue) } end end end @@ -232,17 +232,14 @@ TimeEntry.update_all("issue_id = #{reassign_to.id}", ['issue_id IN (?)', @issues]) end else - unless params[:format] == 'xml' || params[:format] == 'json' - # display the destroy form if it's a user request - return - end + # display the destroy form if it's a user request + return unless api_request? end end @issues.each(&:destroy) respond_to do |format| format.html { redirect_back_or_default(:action => 'index', :project_id => @project) } - format.xml { head :ok } - format.json { head :ok } + format.api { head :ok } end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/journals_controller.rb.svn-base --- a/app/controllers/.svn/text-base/journals_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/journals_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -16,11 +16,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalsController < ApplicationController - before_filter :find_journal, :only => [:edit] + before_filter :find_journal, :only => [:edit, :diff] before_filter :find_issue, :only => [:new] before_filter :find_optional_project, :only => [:index] + before_filter :authorize, :only => [:new, :edit, :diff] accept_key_auth :index - + menu_item :issues + helper :issues helper :queries include QueriesHelper @@ -42,6 +44,17 @@ render_404 end + def diff + @issue = @journal.issue + if params[:detail_id].present? + @detail = @journal.details.find_by_id(params[:detail_id]) + else + @detail = @journal.details.detect {|d| d.prop_key == 'description'} + end + (render_404; return false) unless @issue && @detail + @diff = Redmine::Helpers::Diff.new(@detail.value, @detail.old_value) + end + def new journal = Journal.find(params[:journal_id]) if params[:journal_id] if journal @@ -66,6 +79,7 @@ end def edit + (render_403; return false) unless @journal.editable_by?(User.current) if request.post? @journal.update_attributes(:notes => params[:notes]) if params[:notes] @journal.destroy if @journal.details.empty? && @journal.notes.blank? @@ -74,13 +88,21 @@ format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id } format.js { render :action => 'update' } end + else + respond_to do |format| + format.html { + # TODO: implement non-JS journal update + render :nothing => true + } + format.js + end end end -private + private + def find_journal @journal = Journal.find(params[:id]) - (render_403; return false) unless @journal.editable_by?(User.current) @project = @journal.journalized.project rescue ActiveRecord::RecordNotFound render_404 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/my_controller.rb.svn-base --- a/app/controllers/.svn/text-base/my_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/my_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -19,6 +19,7 @@ before_filter :require_login helper :issues + helper :users helper :custom_fields BLOCKS = { 'issuesassignedtome' => :label_assigned_to_me_issues, @@ -53,21 +54,18 @@ @user = User.current @pref = @user.pref if request.post? - @user.attributes = params[:user] - @user.mail_notification = params[:notification_option] || 'only_my_events' + @user.safe_attributes = params[:user] @user.pref.attributes = params[:pref] @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') if @user.save @user.pref.save - @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) + @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : []) set_language_if_valid @user.language flash[:notice] = l(:notice_account_updated) redirect_to :action => 'account' return end end - @notification_options = @user.valid_notification_options - @notification_option = @user.mail_notification #? ? 'all' : (@user.notified_projects_ids.empty? ? 'none' : 'selected') end # Manage user's password diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/news_controller.rb.svn-base --- a/app/controllers/.svn/text-base/news_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/news_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -26,15 +26,26 @@ accept_key_auth :index def index - @news_pages, @newss = paginate :news, - :per_page => 10, - :conditions => Project.allowed_to_condition(User.current, :view_news, :project => @project), - :include => [:author, :project], - :order => "#{News.table_name}.created_on DESC" + case params[:format] + when 'xml', 'json' + @offset, @limit = api_offset_and_limit + else + @limit = 10 + end + + scope = @project ? @project.news.visible : News.visible + + @news_count = scope.count + @news_pages = Paginator.new self, @news_count, @limit, params['page'] + @offset ||= @news_pages.current.offset + @newss = scope.all(:include => [:author, :project], + :order => "#{News.table_name}.created_on DESC", + :offset => @offset, + :limit => @limit) + respond_to do |format| format.html { render :layout => false if request.xhr? } - format.xml { render :xml => @newss.to_xml } - format.json { render :json => @newss.to_json } + format.api format.atom { render_feed(@newss, :title => (@project ? @project.name : Setting.app_title) + ": #{l(:label_news_plural)}") } end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/projects_controller.rb.svn-base --- a/app/controllers/.svn/text-base/projects_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/projects_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -24,7 +24,7 @@ before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy] before_filter :authorize_global, :only => [:new, :create] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ] - accept_key_auth :index + accept_key_auth :index, :show, :create, :update, :destroy after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller| if controller.request.post? @@ -32,9 +32,6 @@ end end - # TODO: convert to PUT only - verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed } - helper :sort include SortHelper helper :custom_fields @@ -52,8 +49,10 @@ format.html { @projects = Project.visible.find(:all, :order => 'lft') } - format.xml { - @projects = Project.visible.find(:all, :order => 'lft') + format.api { + @offset, @limit = api_offset_and_limit + @project_count = Project.visible.count + @projects = Project.visible.all(:offset => @offset, :limit => @limit, :order => 'lft') } format.atom { projects = Project.visible.find(:all, :order => 'created_on DESC', @@ -67,19 +66,15 @@ @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position") @trackers = Tracker.all @project = Project.new(params[:project]) - - @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers? - @project.trackers = Tracker.all - @project.is_public = Setting.default_projects_public? - @project.enabled_module_names = Setting.default_projects_modules end + verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } def create @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position") @trackers = Tracker.all - @project = Project.new(params[:project]) + @project = Project.new + @project.safe_attributes = params[:project] - @project.enabled_module_names = params[:enabled_modules] if validate_parent_id && @project.save @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') # Add current user as a project member if he is not admin @@ -93,12 +88,12 @@ flash[:notice] = l(:notice_successful_create) redirect_to :controller => 'projects', :action => 'settings', :id => @project } - format.xml { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) } + format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) } end else respond_to do |format| format.html { render :action => 'new' } - format.xml { render :xml => @project.errors, :status => :unprocessable_entity } + format.api { render_validation_errors(@project) } end end @@ -120,18 +115,19 @@ end else Mailer.with_deliveries(params[:notifications] == '1') do - @project = Project.new(params[:project]) + @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) - redirect_to :controller => 'projects', :action => 'settings' + redirect_to :controller => 'projects', :action => 'settings', :id => @project elsif !@project.new_record? # Project was created # But some objects were not copied due to validation failures # (eg. issues from disabled trackers) # TODO: inform about that - redirect_to :controller => 'projects', :action => 'settings' + redirect_to :controller => 'projects', :action => 'settings', :id => @project end end end @@ -169,7 +165,7 @@ respond_to do |format| format.html - format.xml + format.api end end @@ -185,8 +181,10 @@ def edit end + # TODO: convert to PUT only + verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed } def update - @project.attributes = params[:project] + @project.safe_attributes = params[:project] if validate_parent_id && @project.save @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') respond_to do |format| @@ -194,7 +192,7 @@ flash[:notice] = l(:notice_successful_update) redirect_to :action => 'settings', :id => @project } - format.xml { head :ok } + format.api { head :ok } end else respond_to do |format| @@ -202,13 +200,14 @@ settings render :action => 'settings' } - format.xml { render :xml => @project.errors, :status => :unprocessable_entity } + format.api { render_validation_errors(@project) } end end end - + + verify :method => :post, :only => :modules, :render => {:nothing => true, :status => :method_not_allowed } def modules - @project.enabled_module_names = params[:enabled_modules] + @project.enabled_module_names = params[:enabled_module_names] flash[:notice] = l(:notice_successful_update) redirect_to :action => 'settings', :id => @project, :tab => 'modules' end @@ -233,11 +232,11 @@ if request.get? # display confirmation view else - if params[:format] == 'xml' || params[:confirm] + if api_request? || params[:confirm] @project_to_destroy.destroy respond_to do |format| format.html { redirect_to :controller => 'admin', :action => 'projects' } - format.xml { head :ok } + format.api { head :ok } end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/repositories_controller.rb.svn-base --- a/app/controllers/.svn/text-base/repositories_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/repositories_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -67,13 +67,13 @@ redirect_to :action => 'committers', :id => @project end end - + def destroy @repository.destroy redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'repository' end - - def show + + def show @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? @entries = @repository.entries(@path, @rev) @@ -88,30 +88,31 @@ end alias_method :browse, :show - + def changes @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i) @properties = @repository.properties(@path, @rev) + @changeset = @repository.find_changeset_by_name(@rev) end - + def revisions @changeset_count = @repository.changesets.count @changeset_pages = Paginator.new self, @changeset_count, - per_page_option, - params['page'] + per_page_option, + params['page'] @changesets = @repository.changesets.find(:all, - :limit => @changeset_pages.items_per_page, - :offset => @changeset_pages.current.offset, - :include => [:user, :repository]) + :limit => @changeset_pages.items_per_page, + :offset => @changeset_pages.current.offset, + :include => [:user, :repository]) respond_to do |format| format.html { render :layout => false if request.xhr? } format.atom { render_feed(@changesets, :title => "#{@project.name}: #{l(:label_revision_plural)}") } end end - + def entry @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @@ -121,24 +122,28 @@ @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.is_binary_data? || + (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) # Force the download - send_data @content, :filename => @path.split('/').last + send_data @content, :filename => filename_for_content_disposition(@path.split('/').last) else # Prevent empty lines when displaying a file with Windows style eol @content.gsub!("\r\n", "\n") + @changeset = @repository.find_changeset_by_name(@rev) end end - + def annotate @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry - + @annotate = @repository.scm.annotate(@path, @rev) (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty? + @changeset = @repository.find_changeset_by_name(@rev) end - + def revision + raise ChangesetNotFound if @rev.blank? @changeset = @repository.find_changeset_by_name(@rev) raise ChangesetNotFound unless @changeset @@ -149,7 +154,7 @@ rescue ChangesetNotFound show_error_not_found end - + def diff if params[:format] == 'diff' @diff = @repository.diff(@path, @rev, @rev_to) @@ -174,14 +179,18 @@ @diff = @repository.diff(@path, @rev, @rev_to) show_error_not_found unless @diff end + + @changeset = @repository.find_changeset_by_name(@rev) + @changeset_to = @rev_to ? @repository.find_changeset_by_name(@rev_to) : nil + @diff_format_revisions = @repository.diff_format_revisions(@changeset, @changeset_to) end end - - def stats + + def stats end - + def graph - data = nil + data = nil case params[:graph] when "commits_per_month" data = graph_commits_per_month(@repository) @@ -196,7 +205,10 @@ end end -private + private + + REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i + def find_repository @project = Project.find(params[:id]) @repository = @project.repository @@ -205,6 +217,12 @@ @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 + end + end rescue ActiveRecord::RecordNotFound render_404 rescue InvalidRevisionParam @@ -212,7 +230,7 @@ end def show_error_not_found - render_error l(:error_scm_not_found) + render_error :message => l(:error_scm_not_found), :status => 404 end # Handler for Redmine::Scm::Adapters::CommandFailed exception diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/settings_controller.rb.svn-base --- a/app/controllers/.svn/text-base/settings_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/settings_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -44,6 +44,8 @@ @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 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/timelog_controller.rb.svn-base --- a/app/controllers/.svn/text-base/timelog_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/timelog_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# 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 @@ -18,10 +18,11 @@ class TimelogController < ApplicationController menu_item :issues before_filter :find_project, :only => [:new, :create] - before_filter :find_time_entry, :only => [:edit, :update, :destroy] + before_filter :find_time_entry, :only => [:show, :edit, :update, :destroy] before_filter :authorize, :except => [:index] before_filter :find_optional_project, :only => [:index] - + accept_key_auth :index, :show, :create, :update, :destroy + helper :sort include SortHelper helper :issues @@ -66,6 +67,16 @@ 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}], @@ -85,6 +96,14 @@ end end end + + def show + respond_to do |format| + # TODO: Implement html response + format.html { render :nothing => true, :status => 406 } + format.api + end + end def new @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today) @@ -102,10 +121,18 @@ call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry }) if @time_entry.save - flash[:notice] = l(:notice_successful_update) - redirect_back_or_default :action => 'index', :project_id => @time_entry.project + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_update) + redirect_back_or_default :action => 'index', :project_id => @time_entry.project + } + format.api { render :action => 'show', :status => :created, :location => time_entry_url(@time_entry) } + end else - render :action => 'edit' + respond_to do |format| + format.html { render :action => 'edit' } + format.api { render_validation_errors(@time_entry) } + end end end @@ -122,21 +149,40 @@ call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry }) if @time_entry.save - flash[:notice] = l(:notice_successful_update) - redirect_back_or_default :action => 'index', :project_id => @time_entry.project + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_update) + redirect_back_or_default :action => 'index', :project_id => @time_entry.project + } + format.api { head :ok } + end else - render :action => 'edit' + respond_to do |format| + format.html { render :action => 'edit' } + format.api { render_validation_errors(@time_entry) } + end end end verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed } def destroy if @time_entry.destroy && @time_entry.destroyed? - flash[:notice] = l(:notice_successful_delete) + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_delete) + redirect_to :back + } + format.api { head :ok } + end else - flash[:error] = l(:notice_unable_delete_time_entry) + respond_to do |format| + format.html { + flash[:error] = l(:notice_unable_delete_time_entry) + redirect_to :back + } + format.api { render_validation_errors(@time_entry) } + end end - redirect_to :back rescue ::ActionController::RedirectBackError redirect_to :action => 'index', :project_id => @time_entry.project end @@ -154,11 +200,11 @@ end def find_project - if params[:issue_id] - @issue = Issue.find(params[:issue_id]) + if (issue_id = (params[:issue_id] || params[:time_entry] && params[:time_entry][:issue_id])).present? + @issue = Issue.find(issue_id) @project = @issue.project - elsif params[:project_id] - @project = Project.find(params[:project_id]) + elsif (project_id = (params[:project_id] || params[:time_entry] && params[:time_entry][:project_id])).present? + @project = Project.find(project_id) else render_404 return false diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/users_controller.rb.svn-base --- a/app/controllers/.svn/text-base/users_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/users_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# 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 @@ -19,6 +19,8 @@ layout 'admin' before_filter :require_admin, :except => :show + before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership] + accept_key_auth :index, :show, :create, :update, :destroy helper :sort include SortHelper @@ -29,6 +31,13 @@ sort_init 'login', 'asc' sort_update %w(login firstname lastname mail admin created_on last_login_on) + case params[:format] + when 'xml', 'json' + @offset, @limit = api_offset_and_limit + else + @limit = per_page_option + end + @status = params[:status] ? params[:status].to_i : 1 c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status]) @@ -38,20 +47,21 @@ end @user_count = User.count(:conditions => c.conditions) - @user_pages = Paginator.new self, @user_count, - per_page_option, - params['page'] - @users = User.find :all,:order => sort_clause, + @user_pages = Paginator.new self, @user_count, @limit, params['page'] + @offset ||= @user_pages.current.offset + @users = User.find :all, + :order => sort_clause, :conditions => c.conditions, - :limit => @user_pages.items_per_page, - :offset => @user_pages.current.offset + :limit => @limit, + :offset => @offset - render :layout => !request.xhr? + respond_to do |format| + format.html { render :layout => !request.xhr? } + format.api + end end def show - @user = User.find(params[:id]) - # show projects based on current user visibility @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current)) @@ -64,104 +74,119 @@ return end end - render :layout => 'base' - - rescue ActiveRecord::RecordNotFound - render_404 + + respond_to do |format| + format.html { render :layout => 'base' } + format.api + end end def new - @notification_options = User::MAIL_NOTIFICATION_OPTIONS - @notification_option = Setting.default_notification_option - - @user = User.new(:language => Setting.default_language) + @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option) @auth_sources = AuthSource.find(:all) end verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } def create - @notification_options = User::MAIL_NOTIFICATION_OPTIONS - @notification_option = Setting.default_notification_option - - @user = User.new(params[:user]) + @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option) + @user.safe_attributes = params[:user] @user.admin = params[:user][:admin] || false @user.login = params[:user][:login] - @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id + @user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] unless @user.auth_source_id # TODO: Similar to My#account - @user.mail_notification = params[:notification_option] || 'only_my_events' @user.pref.attributes = params[:pref] @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') if @user.save @user.pref.save - @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) + @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : []) - Mailer.deliver_account_information(@user, params[:password]) if params[:send_information] - flash[:notice] = l(:notice_successful_create) - redirect_to(params[:continue] ? {:controller => 'users', :action => 'new'} : - {:controller => 'users', :action => 'edit', :id => @user}) - return + Mailer.deliver_account_information(@user, params[:user][:password]) if params[:send_information] + + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_create) + redirect_to(params[:continue] ? + {:controller => 'users', :action => 'new'} : + {:controller => 'users', :action => 'edit', :id => @user} + ) + } + format.api { render :action => 'show', :status => :created, :location => user_url(@user) } + end else @auth_sources = AuthSource.find(:all) - @notification_option = @user.mail_notification + # Clear password input + @user.password = @user.password_confirmation = nil - render :action => 'new' + respond_to do |format| + format.html { render :action => 'new' } + format.api { render_validation_errors(@user) } + end end end def edit - @user = User.find(params[:id]) - @notification_options = @user.valid_notification_options - @notification_option = @user.mail_notification - @auth_sources = AuthSource.find(:all) @membership ||= Member.new end verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } def update - @user = User.find(params[:id]) - @notification_options = @user.valid_notification_options - @notification_option = @user.mail_notification - @user.admin = params[:user][:admin] if params[:user][:admin] @user.login = params[:user][:login] if params[:user][:login] - if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) - @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] + if params[:user][:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) + @user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] end - @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids] - @user.attributes = params[:user] + @user.safe_attributes = params[:user] # Was the account actived ? (do it before User#save clears the change) was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE]) # TODO: Similar to My#account - @user.mail_notification = params[:notification_option] || 'only_my_events' @user.pref.attributes = params[:pref] @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') if @user.save @user.pref.save - @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) + @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : []) if was_activated Mailer.deliver_account_activated(@user) - elsif @user.active? && params[:send_information] && !params[:password].blank? && @user.auth_source_id.nil? - Mailer.deliver_account_information(@user, params[:password]) + elsif @user.active? && params[:send_information] && !params[:user][:password].blank? && @user.auth_source_id.nil? + Mailer.deliver_account_information(@user, params[:user][:password]) end - flash[:notice] = l(:notice_successful_update) - redirect_to :back + + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_update) + redirect_to :back + } + format.api { head :ok } + end else @auth_sources = AuthSource.find(:all) @membership ||= Member.new + # Clear password input + @user.password = @user.password_confirmation = nil - render :action => :edit + respond_to do |format| + format.html { render :action => :edit } + format.api { render_validation_errors(@user) } + end end rescue ::ActionController::RedirectBackError redirect_to :controller => 'users', :action => 'edit', :id => @user end + verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed } + def destroy + @user.destroy + respond_to do |format| + format.html { redirect_to(users_url) } + format.api { head :ok } + end + end + def edit_membership - @user = User.find(params[:id]) @membership = Member.edit_membership(params[:membership_id], params[:membership], @user) @membership.save if request.post? respond_to do |format| @@ -184,7 +209,6 @@ end def destroy_membership - @user = User.find(params[:id]) @membership = Member.find(params[:membership_id]) if request.post? && @membership.deletable? @membership.destroy @@ -194,4 +218,17 @@ format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} } end end + + private + + def find_user + if params[:id] == 'current' + require_login || return + @user = User.current + else + @user = User.find(params[:id]) + end + rescue ActiveRecord::RecordNotFound + render_404 + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/wiki_controller.rb.svn-base --- a/app/controllers/.svn/text-base/wiki_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/wiki_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -125,6 +125,8 @@ render_attachment_warning_if_needed(@page) call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page}) redirect_to :action => 'show', :project_id => @project, :id => @page.title + else + render :action => 'edit' end rescue ActiveRecord::StaleObjectError diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/.svn/text-base/workflows_controller.rb.svn-base --- a/app/controllers/.svn/text-base/workflows_controller.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/.svn/text-base/workflows_controller.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -32,14 +32,17 @@ if request.post? Workflow.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id]) - (params[:issue_status] || []).each { |old, news| - news.each { |new| - @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => old, :new_status_id => new) + (params[:issue_status] || []).each { |status_id, transitions| + transitions.each { |new_status_id, options| + author = options.is_a?(Array) && options.include?('author') && !options.include?('always') + assignee = options.is_a?(Array) && options.include?('assignee') && !options.include?('always') + @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee) } } if @role.save flash[:notice] = l(:notice_successful_update) redirect_to :action => 'edit', :role_id => @role, :tracker_id => @tracker + return end end @@ -48,6 +51,14 @@ @statuses = @tracker.issue_statuses end @statuses ||= IssueStatus.find(:all, :order => 'position') + + if @tracker && @role && @statuses.any? + workflows = Workflow.all(:conditions => {:role_id => @role.id, :tracker_id => @tracker.id}) + @workflows = {} + @workflows['always'] = workflows.select {|w| !w.author && !w.assignee} + @workflows['author'] = workflows.select {|w| w.author} + @workflows['assignee'] = workflows.select {|w| w.assignee} + end end def copy diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/account_controller.rb --- a/app/controllers/account_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/account_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -216,12 +216,24 @@ self.logged_user = user # generate a key and set cookie if autologin if params[:autologin] && Setting.autologin? - token = Token.create(:user => user, :action => 'autologin') - cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now } + set_autologin_cookie(user) end call_hook(:controller_account_success_authentication_after, {:user => user }) redirect_back_or_default :controller => 'my', :action => 'page' end + + def set_autologin_cookie(user) + token = Token.create(:user => user, :action => 'autologin') + cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin' + cookie_options = { + :value => token.value, + :expires => 1.year.from_now, + :path => (Redmine::Configuration['autologin_cookie_path'] || '/'), + :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false), + :httponly => true + } + cookies[cookie_name] = cookie_options + end # Onthefly creation failed, display the registration form to fill/fix attributes def onthefly_creation_failed(user, auth_source_options = { }) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/activities_controller.rb --- a/app/controllers/activities_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/activities_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -23,7 +23,7 @@ events = @activity.events(@date_from, @date_to) - if events.empty? || stale?(:etag => [events.first, User.current]) + 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 { @events_by_day = events.group_by(&:event_date) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/application_controller.rb --- a/app/controllers/application_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/application_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -22,7 +22,7 @@ include Redmine::I18n layout 'base' - exempt_from_layout 'builder' + exempt_from_layout 'builder', 'rsb' # Remove broken cookie after upgrade from 0.8.x (#4292) # See https://rails.lighthouseapp.com/projects/8994/tickets/3360 @@ -71,10 +71,10 @@ elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action]) # RSS key authentication does not start a session User.find_by_rss_key(params[:key]) - elsif Setting.rest_api_enabled? && ['xml', 'json'].include?(params[:format]) - if params[:key].present? && accept_key_auth_actions.include?(params[:action]) + elsif Setting.rest_api_enabled? && api_request? + if (key = api_key_from_request) && accept_key_auth_actions.include?(params[:action]) # Use API key - User.find_by_api_key(params[:key]) + User.find_by_api_key(key) else # HTTP Basic, either username/password or API key/random authenticate_with_http_basic do |username, password| @@ -355,6 +355,30 @@ per_page end + # Returns offset and limit used to retrieve objects + # for an API response based on offset, limit and page parameters + def api_offset_and_limit(options=params) + if options[:offset].present? + offset = options[:offset].to_i + if offset < 0 + offset = 0 + end + end + limit = options[:limit].to_i + if limit < 1 + limit = 25 + elsif limit > 100 + limit = 100 + end + if offset.nil? && options[:page].present? + offset = (options[:page].to_i - 1) * limit + offset = 0 if offset < 0 + end + offset ||= 0 + + [offset, limit] + end + # qvalues http header parser # code taken from webrick def parse_qvalues(value) @@ -384,6 +408,15 @@ 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? + params[:key] + elsif request.headers["X-Redmine-API-Key"].present? + request.headers["X-Redmine-API-Key"] + end + end # Renders a warning flash if obj has unsaved attachments def render_attachment_warning_if_needed(obj) @@ -419,5 +452,37 @@ { attribute => error } end.to_json end + + # Renders API response on validation failure + def render_validation_errors(object) + options = { :status => :unprocessable_entity, :layout => false } + options.merge!(case params[:format] + when 'xml'; { :xml => object.errors } + when 'json'; { :json => {'errors' => object.errors} } # ActiveResource client compliance + else + raise "Unknown format #{params[:format]} in #render_validation_errors" + end + ) + 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) + if api_request? + begin + return self.view_paths.find_template(default_template_name(action_name), 'api') + rescue ::ActionView::MissingTemplate + # the api template was not found + # fallback to the default behaviour + end + end + super + end + + # Overrides #pick_layout so that #render with no arguments + # doesn't use the layout for api requests + def pick_layout(*args) + api_request? ? nil : super + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/auto_completes_controller.rb --- a/app/controllers/auto_completes_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/auto_completes_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -4,12 +4,14 @@ def issues @issues = [] q = params[:q].to_s + query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues if q.match(/^\d+$/) - @issues << @project.issues.visible.find_by_id(q.to_i) + @issues << query.visible.find_by_id(q.to_i) end unless q.blank? - @issues += @project.issues.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10) + @issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10) end + @issues.compact! render :layout => false end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/context_menus_controller.rb --- a/app/controllers/context_menus_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/context_menus_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -2,7 +2,8 @@ helper :watchers def issues - @issues = Issue.find_all_by_id(params[:ids], :include => :project) + @issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project) + if (@issues.size == 1) @issue = @issues.first @allowed_statuses = @issue.new_statuses_allowed_to(User.current) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/issue_relations_controller.rb --- a/app/controllers/issue_relations_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/issue_relations_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -28,6 +28,7 @@ respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } format.js do + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } render :update do |page| page.replace_html "relations", :partial => 'issues/relations' if @relation.errors.empty? @@ -47,7 +48,10 @@ end respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } - format.js { render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} } + format.js { + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } + render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} + } end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/issues_controller.rb --- a/app/controllers/issues_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/issues_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -44,6 +44,8 @@ include AttachmentsHelper helper :queries include QueriesHelper + helper :repositories + include RepositoriesHelper helper :sort include SortHelper include IssuesHelper @@ -65,27 +67,29 @@ sort_update(@query.sortable_columns) if @query.valid? - limit = case params[:format] + case params[:format] when 'csv', 'pdf' - Setting.issues_export_limit.to_i + @limit = Setting.issues_export_limit.to_i when 'atom' - Setting.feeds_limit.to_i + @limit = Setting.feeds_limit.to_i + when 'xml', 'json' + @offset, @limit = api_offset_and_limit else - per_page_option + @limit = per_page_option end @issue_count = @query.issue_count - @issue_pages = Paginator.new self, @issue_count, limit, params['page'] + @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 => @issue_pages.current.offset, - :limit => limit) + :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.xml { render :layout => false } - format.json { render :text => @issues.to_json, :layout => false } + format.api format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } format.csv { send_data(issues_to_csv(@issues, @project), :type => 'text/csv; header=present', :filename => 'export.csv') } format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') } @@ -104,14 +108,14 @@ @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? + @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 respond_to do |format| format.html { render :template => 'issues/show.rhtml' } - format.xml { render :layout => false } - format.json { render :text => @issue.to_json, :layout => false } + format.api format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' } format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") } end @@ -147,15 +151,13 @@ redirect_to(params[:continue] ? { :action => 'new', :project_id => @project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } : { :action => 'show', :id => @issue }) } - format.xml { render :action => 'show', :status => :created, :location => url_for(:controller => 'issues', :action => 'show', :id => @issue) } - format.json { render :text => @issue.to_json, :status => :created, :location => url_for(:controller => 'issues', :action => 'show'), :layout => false } + format.api { render :action => 'show', :status => :created, :location => issue_url(@issue) } end return else respond_to do |format| format.html { render :action => 'new' } - format.xml { render(:xml => @issue.errors, :status => :unprocessable_entity); return } - format.json { render :text => object_errors_to_json(@issue), :status => :unprocessable_entity, :layout => false } + format.api { render_validation_errors(@issue) } end end end @@ -180,8 +182,7 @@ respond_to do |format| format.html { redirect_back_or_default({:action => 'show', :id => @issue}) } - format.xml { head :ok } - format.json { head :ok } + format.api { head :ok } end else render_attachment_warning_if_needed(@issue) @@ -190,8 +191,7 @@ respond_to do |format| format.html { render :action => 'edit' } - format.xml { render :xml => @issue.errors, :status => :unprocessable_entity } - format.json { render :text => object_errors_to_json(@issue), :status => :unprocessable_entity, :layout => false } + format.api { render_validation_errors(@issue) } end end end @@ -241,17 +241,14 @@ TimeEntry.update_all("issue_id = #{reassign_to.id}", ['issue_id IN (?)', @issues]) end else - unless params[:format] == 'xml' || params[:format] == 'json' - # display the destroy form if it's a user request - return - end + # display the destroy form if it's a user request + return unless api_request? end end @issues.each(&:destroy) respond_to do |format| format.html { redirect_back_or_default(:action => 'index', :project_id => @project) } - format.xml { head :ok } - format.json { head :ok } + format.api { head :ok } end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/journals_controller.rb --- a/app/controllers/journals_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/journals_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -16,11 +16,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalsController < ApplicationController - before_filter :find_journal, :only => [:edit] + before_filter :find_journal, :only => [:edit, :diff] before_filter :find_issue, :only => [:new] before_filter :find_optional_project, :only => [:index] + before_filter :authorize, :only => [:new, :edit, :diff] accept_key_auth :index - + menu_item :issues + helper :issues helper :queries include QueriesHelper @@ -42,6 +44,17 @@ render_404 end + def diff + @issue = @journal.issue + if params[:detail_id].present? + @detail = @journal.details.find_by_id(params[:detail_id]) + else + @detail = @journal.details.detect {|d| d.prop_key == 'description'} + end + (render_404; return false) unless @issue && @detail + @diff = Redmine::Helpers::Diff.new(@detail.value, @detail.old_value) + end + def new journal = Journal.find(params[:journal_id]) if params[:journal_id] if journal @@ -66,6 +79,7 @@ end def edit + (render_403; return false) unless @journal.editable_by?(User.current) if request.post? @journal.update_attributes(:notes => params[:notes]) if params[:notes] @journal.destroy if @journal.details.empty? && @journal.notes.blank? @@ -74,13 +88,21 @@ format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id } format.js { render :action => 'update' } end + else + respond_to do |format| + format.html { + # TODO: implement non-JS journal update + render :nothing => true + } + format.js + end end end -private + private + def find_journal @journal = Journal.find(params[:id]) - (render_403; return false) unless @journal.editable_by?(User.current) @project = @journal.journalized.project rescue ActiveRecord::RecordNotFound render_404 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/my_controller.rb --- a/app/controllers/my_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/my_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -19,6 +19,7 @@ before_filter :require_login helper :issues + helper :users helper :custom_fields BLOCKS = { 'issuesassignedtome' => :label_assigned_to_me_issues, @@ -62,8 +63,7 @@ end if request.post? - @user.attributes = params[:user] - @user.mail_notification = params[:notification_option] || 'only_my_events' + @user.safe_attributes = params[:user] @user.pref.attributes = params[:pref] @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') @@ -88,15 +88,13 @@ if @user.save @user.pref.save - @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) + @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : []) set_language_if_valid @user.language flash[:notice] = l(:notice_account_updated) redirect_to :action => 'account' return end end - @notification_options = @user.valid_notification_options - @notification_option = @user.mail_notification #? ? 'all' : (@user.notified_projects_ids.empty? ? 'none' : 'selected') end # Manage user's password diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/news_controller.rb --- a/app/controllers/news_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/news_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -26,15 +26,26 @@ accept_key_auth :index def index - @news_pages, @newss = paginate :news, - :per_page => 10, - :conditions => Project.allowed_to_condition(User.current, :view_news, :project => @project), - :include => [:author, :project], - :order => "#{News.table_name}.created_on DESC" + case params[:format] + when 'xml', 'json' + @offset, @limit = api_offset_and_limit + else + @limit = 10 + end + + scope = @project ? @project.news.visible : News.visible + + @news_count = scope.count + @news_pages = Paginator.new self, @news_count, @limit, params['page'] + @offset ||= @news_pages.current.offset + @newss = scope.all(:include => [:author, :project], + :order => "#{News.table_name}.created_on DESC", + :offset => @offset, + :limit => @limit) + respond_to do |format| format.html { render :layout => false if request.xhr? } - format.xml { render :xml => @newss.to_xml } - format.json { render :json => @newss.to_json } + format.api format.atom { render_feed(@newss, :title => (@project ? @project.name : Setting.app_title) + ": #{l(:label_news_plural)}") } end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/projects_controller.rb --- a/app/controllers/projects_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/projects_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -24,7 +24,7 @@ before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy] before_filter :authorize_global, :only => [:new, :create] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ] - accept_key_auth :index + accept_key_auth :index, :show, :create, :update, :destroy after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller| if controller.request.post? @@ -32,9 +32,6 @@ end end - # TODO: convert to PUT only - verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed } - helper :sort include SortHelper helper :custom_fields @@ -63,8 +60,10 @@ end render :template => 'projects/index.rhtml', :layout => !request.xhr? } - format.xml { - @projects = Project.visible.find(:all, :order => 'lft') + format.api { + @offset, @limit = api_offset_and_limit + @project_count = Project.visible.count + @projects = Project.visible.all(:offset => @offset, :limit => @limit, :order => 'lft') } format.atom { projects = Project.visible.find(:all, :order => 'created_on DESC', @@ -78,19 +77,15 @@ @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position") @trackers = Tracker.all @project = Project.new(params[:project]) - - @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers? - @project.trackers = Tracker.all - @project.is_public = Setting.default_projects_public? - @project.enabled_module_names = Setting.default_projects_modules end + verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } def create @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position") @trackers = Tracker.all - @project = Project.new(params[:project]) + @project = Project.new + @project.safe_attributes = params[:project] - @project.enabled_module_names = params[:enabled_modules] if validate_parent_id && @project.save @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') # Add current user as a project member if he is not admin @@ -104,12 +99,12 @@ flash[:notice] = l(:notice_successful_create) redirect_to :controller => 'projects', :action => 'settings', :id => @project } - format.xml { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) } + format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) } end else respond_to do |format| format.html { render :action => 'new' } - format.xml { render :xml => @project.errors, :status => :unprocessable_entity } + format.api { render_validation_errors(@project) } end end @@ -131,18 +126,19 @@ end else Mailer.with_deliveries(params[:notifications] == '1') do - @project = Project.new(params[:project]) + @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) - redirect_to :controller => 'projects', :action => 'settings' + redirect_to :controller => 'projects', :action => 'settings', :id => @project elsif !@project.new_record? # Project was created # But some objects were not copied due to validation failures # (eg. issues from disabled trackers) # TODO: inform about that - redirect_to :controller => 'projects', :action => 'settings' + redirect_to :controller => 'projects', :action => 'settings', :id => @project end end end @@ -180,7 +176,7 @@ respond_to do |format| format.html - format.xml + format.api end end @@ -196,8 +192,10 @@ def edit end + # TODO: convert to PUT only + verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed } def update - @project.attributes = params[:project] + @project.safe_attributes = params[:project] if validate_parent_id && @project.save @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') respond_to do |format| @@ -205,7 +203,7 @@ flash[:notice] = l(:notice_successful_update) redirect_to :action => 'settings', :id => @project } - format.xml { head :ok } + format.api { head :ok } end else respond_to do |format| @@ -213,13 +211,14 @@ settings render :action => 'settings' } - format.xml { render :xml => @project.errors, :status => :unprocessable_entity } + format.api { render_validation_errors(@project) } end end end - + + verify :method => :post, :only => :modules, :render => {:nothing => true, :status => :method_not_allowed } def modules - @project.enabled_module_names = params[:enabled_modules] + @project.enabled_module_names = params[:enabled_module_names] flash[:notice] = l(:notice_successful_update) redirect_to :action => 'settings', :id => @project, :tab => 'modules' end @@ -244,11 +243,11 @@ if request.get? # display confirmation view else - if params[:format] == 'xml' || params[:confirm] + if api_request? || params[:confirm] @project_to_destroy.destroy respond_to do |format| format.html { redirect_to :controller => 'admin', :action => 'projects' } - format.xml { head :ok } + format.api { head :ok } end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/repositories_controller.rb --- a/app/controllers/repositories_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/repositories_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -67,13 +67,13 @@ redirect_to :action => 'committers', :id => @project end end - + def destroy @repository.destroy redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'repository' end - - def show + + def show @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? @entries = @repository.entries(@path, @rev) @@ -88,30 +88,31 @@ end alias_method :browse, :show - + def changes @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i) @properties = @repository.properties(@path, @rev) + @changeset = @repository.find_changeset_by_name(@rev) end - + def revisions @changeset_count = @repository.changesets.count @changeset_pages = Paginator.new self, @changeset_count, - per_page_option, - params['page'] + per_page_option, + params['page'] @changesets = @repository.changesets.find(:all, - :limit => @changeset_pages.items_per_page, - :offset => @changeset_pages.current.offset, - :include => [:user, :repository]) + :limit => @changeset_pages.items_per_page, + :offset => @changeset_pages.current.offset, + :include => [:user, :repository]) respond_to do |format| format.html { render :layout => false if request.xhr? } format.atom { render_feed(@changesets, :title => "#{@project.name}: #{l(:label_revision_plural)}") } end end - + def entry @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @@ -121,24 +122,28 @@ @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.is_binary_data? || + (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) # Force the download - send_data @content, :filename => @path.split('/').last + send_data @content, :filename => filename_for_content_disposition(@path.split('/').last) else # Prevent empty lines when displaying a file with Windows style eol @content.gsub!("\r\n", "\n") + @changeset = @repository.find_changeset_by_name(@rev) end end - + def annotate @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry - + @annotate = @repository.scm.annotate(@path, @rev) (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty? + @changeset = @repository.find_changeset_by_name(@rev) end - + def revision + raise ChangesetNotFound if @rev.blank? @changeset = @repository.find_changeset_by_name(@rev) raise ChangesetNotFound unless @changeset @@ -149,7 +154,7 @@ rescue ChangesetNotFound show_error_not_found end - + def diff if params[:format] == 'diff' @diff = @repository.diff(@path, @rev, @rev_to) @@ -174,14 +179,18 @@ @diff = @repository.diff(@path, @rev, @rev_to) show_error_not_found unless @diff end + + @changeset = @repository.find_changeset_by_name(@rev) + @changeset_to = @rev_to ? @repository.find_changeset_by_name(@rev_to) : nil + @diff_format_revisions = @repository.diff_format_revisions(@changeset, @changeset_to) end end - - def stats + + def stats end - + def graph - data = nil + data = nil case params[:graph] when "commits_per_month" data = graph_commits_per_month(@repository) @@ -196,7 +205,10 @@ end end -private + private + + REV_PARAM_RE = %r{\A[a-f0-9]*\Z}i + def find_repository @project = Project.find(params[:id]) @repository = @project.repository @@ -205,6 +217,12 @@ @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 + end + end rescue ActiveRecord::RecordNotFound render_404 rescue InvalidRevisionParam @@ -212,7 +230,7 @@ end def show_error_not_found - render_error l(:error_scm_not_found) + render_error :message => l(:error_scm_not_found), :status => 404 end # Handler for Redmine::Scm::Adapters::CommandFailed exception diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/settings_controller.rb --- a/app/controllers/settings_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/settings_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -44,6 +44,8 @@ @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 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/timelog_controller.rb --- a/app/controllers/timelog_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/timelog_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# 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 @@ -18,10 +18,11 @@ class TimelogController < ApplicationController menu_item :issues before_filter :find_project, :only => [:new, :create] - before_filter :find_time_entry, :only => [:edit, :update, :destroy] + before_filter :find_time_entry, :only => [:show, :edit, :update, :destroy] before_filter :authorize, :except => [:index] before_filter :find_optional_project, :only => [:index] - + accept_key_auth :index, :show, :create, :update, :destroy + helper :sort include SortHelper helper :issues @@ -66,6 +67,16 @@ 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}], @@ -85,6 +96,14 @@ end end end + + def show + respond_to do |format| + # TODO: Implement html response + format.html { render :nothing => true, :status => 406 } + format.api + end + end def new @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today) @@ -102,10 +121,18 @@ call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry }) if @time_entry.save - flash[:notice] = l(:notice_successful_update) - redirect_back_or_default :action => 'index', :project_id => @time_entry.project + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_update) + redirect_back_or_default :action => 'index', :project_id => @time_entry.project + } + format.api { render :action => 'show', :status => :created, :location => time_entry_url(@time_entry) } + end else - render :action => 'edit' + respond_to do |format| + format.html { render :action => 'edit' } + format.api { render_validation_errors(@time_entry) } + end end end @@ -122,21 +149,40 @@ call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry }) if @time_entry.save - flash[:notice] = l(:notice_successful_update) - redirect_back_or_default :action => 'index', :project_id => @time_entry.project + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_update) + redirect_back_or_default :action => 'index', :project_id => @time_entry.project + } + format.api { head :ok } + end else - render :action => 'edit' + respond_to do |format| + format.html { render :action => 'edit' } + format.api { render_validation_errors(@time_entry) } + end end end verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed } def destroy if @time_entry.destroy && @time_entry.destroyed? - flash[:notice] = l(:notice_successful_delete) + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_delete) + redirect_to :back + } + format.api { head :ok } + end else - flash[:error] = l(:notice_unable_delete_time_entry) + respond_to do |format| + format.html { + flash[:error] = l(:notice_unable_delete_time_entry) + redirect_to :back + } + format.api { render_validation_errors(@time_entry) } + end end - redirect_to :back rescue ::ActionController::RedirectBackError redirect_to :action => 'index', :project_id => @time_entry.project end @@ -154,11 +200,11 @@ end def find_project - if params[:issue_id] - @issue = Issue.find(params[:issue_id]) + if (issue_id = (params[:issue_id] || params[:time_entry] && params[:time_entry][:issue_id])).present? + @issue = Issue.find(issue_id) @project = @issue.project - elsif params[:project_id] - @project = Project.find(params[:project_id]) + elsif (project_id = (params[:project_id] || params[:time_entry] && params[:time_entry][:project_id])).present? + @project = Project.find(project_id) else render_404 return false diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/users_controller.rb --- a/app/controllers/users_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/users_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# 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 @@ -19,6 +19,8 @@ layout 'admin' before_filter :require_admin, :except => :show + before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership] + accept_key_auth :index, :show, :create, :update, :destroy helper :sort include SortHelper @@ -29,6 +31,13 @@ sort_init 'login', 'asc' sort_update %w(login firstname lastname mail admin created_on last_login_on) + case params[:format] + when 'xml', 'json' + @offset, @limit = api_offset_and_limit + else + @limit = per_page_option + end + @status = params[:status] ? params[:status].to_i : 1 c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status]) @@ -38,19 +47,21 @@ end @user_count = User.count(:conditions => c.conditions) - @user_pages = Paginator.new self, @user_count, - per_page_option, - params['page'] - @users = User.find :all,:order => sort_clause, + @user_pages = Paginator.new self, @user_count, @limit, params['page'] + @offset ||= @user_pages.current.offset + @users = User.find :all, + :order => sort_clause, :conditions => c.conditions, - :limit => @user_pages.items_per_page, - :offset => @user_pages.current.offset + :limit => @limit, + :offset => @offset - render :layout => !request.xhr? + respond_to do |format| + format.html { render :layout => !request.xhr? } + format.api + end end def show - @user = User.find(params[:id]) if @user.ssamr_user_detail != nil @description = @user.ssamr_user_detail.description @@ -77,17 +88,15 @@ return end end - render :layout => 'base' - - rescue ActiveRecord::RecordNotFound - render_404 + + respond_to do |format| + format.html { render :layout => 'base' } + format.api + end end def new - @notification_options = User::MAIL_NOTIFICATION_OPTIONS - @notification_option = Setting.default_notification_option - - @user = User.new(:language => Setting.default_language) + @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option) @auth_sources = AuthSource.find(:all) @ssamr_user_details = SsamrUserDetail.new @@ -95,16 +104,14 @@ verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } def create - @notification_options = User::MAIL_NOTIFICATION_OPTIONS - @notification_option = Setting.default_notification_option - + @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option) + @user.safe_attributes = params[:user] @user = User.new(params[:user]) @user.admin = params[:user][:admin] || false @user.login = params[:user][:login] - @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id + @user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] unless @user.auth_source_id # TODO: Similar to My#account - @user.mail_notification = params[:notification_option] || 'only_my_events' @user.pref.attributes = params[:pref] @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') @@ -118,25 +125,32 @@ @ssamr_user_details.save! - @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) - Mailer.deliver_account_information(@user, params[:password]) if params[:send_information] - flash[:notice] = l(:notice_successful_create) - redirect_to(params[:continue] ? {:controller => 'users', :action => 'new'} : - {:controller => 'users', :action => 'edit', :id => @user}) - return + Mailer.deliver_account_information(@user, params[:user][:password]) if params[:send_information] + + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_create) + redirect_to(params[:continue] ? + {:controller => 'users', :action => 'new'} : + {:controller => 'users', :action => 'edit', :id => @user} + ) + } + format.api { render :action => 'show', :status => :created, :location => user_url(@user) } + end else @auth_sources = AuthSource.find(:all) - @notification_option = @user.mail_notification + # Clear password input + @user.password = @user.password_confirmation = nil - render :action => 'new' + respond_to do |format| + format.html { render :action => 'new' } + format.api { render_validation_errors(@user) } + end end end def edit - @user = User.find(params[:id]) - @notification_options = @user.valid_notification_options - @notification_option = @user.mail_notification @ssamr_user_details = @user.ssamr_user_detail @@ -152,22 +166,15 @@ verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } def update - @user = User.find(params[:id]) - - @notification_options = @user.valid_notification_options - @notification_option = @user.mail_notification - @user.admin = params[:user][:admin] if params[:user][:admin] @user.login = params[:user][:login] if params[:user][:login] - if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) - @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] + if params[:user][:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) + @user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] end - @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids] - @user.attributes = params[:user] + @user.safe_attributes = params[:user] # Was the account actived ? (do it before User#save clears the change) was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE]) # TODO: Similar to My#account - @user.mail_notification = params[:notification_option] || 'only_my_events' @user.pref.attributes = params[:pref] @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') @@ -193,27 +200,46 @@ if @user.save @user.pref.save - @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) + @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : []) if was_activated Mailer.deliver_account_activated(@user) - elsif @user.active? && params[:send_information] && !params[:password].blank? && @user.auth_source_id.nil? - Mailer.deliver_account_information(@user, params[:password]) + elsif @user.active? && params[:send_information] && !params[:user][:password].blank? && @user.auth_source_id.nil? + Mailer.deliver_account_information(@user, params[:user][:password]) end - flash[:notice] = l(:notice_successful_update) - redirect_to :back + + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_update) + redirect_to :back + } + format.api { head :ok } + end else @auth_sources = AuthSource.find(:all) @membership ||= Member.new + # Clear password input + @user.password = @user.password_confirmation = nil - render :action => :edit + respond_to do |format| + format.html { render :action => :edit } + format.api { render_validation_errors(@user) } + end end rescue ::ActionController::RedirectBackError redirect_to :controller => 'users', :action => 'edit', :id => @user end + verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed } + def destroy + @user.destroy + respond_to do |format| + format.html { redirect_to(users_url) } + format.api { head :ok } + end + end + def edit_membership - @user = User.find(params[:id]) @membership = Member.edit_membership(params[:membership_id], params[:membership], @user) @membership.save if request.post? respond_to do |format| @@ -236,7 +262,6 @@ end def destroy_membership - @user = User.find(params[:id]) @membership = Member.find(params[:membership_id]) if request.post? && @membership.deletable? @membership.destroy @@ -246,4 +271,17 @@ format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} } end end + + private + + def find_user + if params[:id] == 'current' + require_login || return + @user = User.current + else + @user = User.find(params[:id]) + end + rescue ActiveRecord::RecordNotFound + render_404 + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/wiki_controller.rb --- a/app/controllers/wiki_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/wiki_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -125,6 +125,8 @@ render_attachment_warning_if_needed(@page) call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page}) redirect_to :action => 'show', :project_id => @project, :id => @page.title + else + render :action => 'edit' end rescue ActiveRecord::StaleObjectError diff -r 7cec015f07ce -r 73ff0e6a11b1 app/controllers/workflows_controller.rb --- a/app/controllers/workflows_controller.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/controllers/workflows_controller.rb Thu Mar 03 12:11:53 2011 +0000 @@ -32,14 +32,17 @@ if request.post? Workflow.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id]) - (params[:issue_status] || []).each { |old, news| - news.each { |new| - @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => old, :new_status_id => new) + (params[:issue_status] || []).each { |status_id, transitions| + transitions.each { |new_status_id, options| + author = options.is_a?(Array) && options.include?('author') && !options.include?('always') + assignee = options.is_a?(Array) && options.include?('assignee') && !options.include?('always') + @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee) } } if @role.save flash[:notice] = l(:notice_successful_update) redirect_to :action => 'edit', :role_id => @role, :tracker_id => @tracker + return end end @@ -48,6 +51,14 @@ @statuses = @tracker.issue_statuses end @statuses ||= IssueStatus.find(:all, :order => 'position') + + if @tracker && @role && @statuses.any? + workflows = Workflow.all(:conditions => {:role_id => @role.id, :tracker_id => @tracker.id}) + @workflows = {} + @workflows['always'] = workflows.select {|w| !w.author && !w.assignee} + @workflows['author'] = workflows.select {|w| w.author} + @workflows['assignee'] = workflows.select {|w| w.assignee} + end end def copy diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/all-wcprops --- a/app/helpers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 36 -/svn/!svn/ver/4391/trunk/app/helpers +/svn/!svn/ver/4990/trunk/app/helpers END trackers_helper.rb K 25 @@ -37,7 +37,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/3659/trunk/app/helpers/repositories_helper.rb +/svn/!svn/ver/4990/trunk/app/helpers/repositories_helper.rb END admin_helper.rb K 25 @@ -79,7 +79,7 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4375/trunk/app/helpers/wiki_helper.rb +/svn/!svn/ver/4952/trunk/app/helpers/wiki_helper.rb END enumerations_helper.rb K 25 @@ -91,7 +91,13 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4281/trunk/app/helpers/issues_helper.rb +/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 @@ -99,12 +105,6 @@ V 52 /svn/!svn/ver/4283/trunk/app/helpers/gantt_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 mail_handler_helper.rb K 25 svn:wc:ra_dav:version-url @@ -135,29 +135,29 @@ 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 -journals_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4062/trunk/app/helpers/journals_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 -custom_fields_helper.rb +timelog_helper.rb K 25 svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3675/trunk/app/helpers/custom_fields_helper.rb +V 54 +/svn/!svn/ver/3708/trunk/app/helpers/timelog_helper.rb END settings_helper.rb K 25 @@ -165,17 +165,11 @@ V 55 /svn/!svn/ver/4222/trunk/app/helpers/settings_helper.rb END -timelog_helper.rb +custom_fields_helper.rb K 25 svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3708/trunk/app/helpers/timelog_helper.rb -END -users_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4230/trunk/app/helpers/users_helper.rb +V 60 +/svn/!svn/ver/4480/trunk/app/helpers/custom_fields_helper.rb END issue_moves_helper.rb K 25 @@ -183,11 +177,17 @@ 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/4391/trunk/app/helpers/application_helper.rb +/svn/!svn/ver/4900/trunk/app/helpers/application_helper.rb END auth_sources_helper.rb K 25 @@ -205,7 +205,13 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3373/trunk/app/helpers/messages_helper.rb +/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 @@ -213,12 +219,6 @@ V 54 /svn/!svn/ver/955/trunk/app/helpers/versions_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 boards_helper.rb K 25 svn:wc:ra_dav:version-url @@ -229,7 +229,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/2116/trunk/app/helpers/attachments_helper.rb +/svn/!svn/ver/4605/trunk/app/helpers/attachments_helper.rb END news_helper.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/entries --- a/app/helpers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/helpers http://redmine.rubyforge.org/svn -2010-11-11T13:39:14.764400Z -4391 -jplang +2011-03-03T03:30:10.954225Z +4990 +tmaruyama @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z e1b19c2c81df384b2026001d1d9605fd 2007-03-12T17:59:02.654744Z 333 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z ab0af291fb143223852a6edddc64b74b 2009-09-12T08:36:46.650954Z 2869 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z 0cd3093356b7034ee950ca327fc7aabc 2007-03-12T17:59:02.654744Z 333 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 69869e026dc6cbacc618214e4bb13b1b 2007-03-12T17:59:02.654744Z 333 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 491ead5828edb57adcd7333943656c94 2010-03-27T16:55:20.312262Z 3618 @@ -202,11 +202,11 @@ -2010-09-24T11:56:52.900009Z -d617582e4bc6a3eedbc4f37f8fa3d509 -2010-04-11T15:18:49.769279Z -3659 -jplang +2011-03-03T11:40:18.000000Z +824b766582f7177458a587dcfcf980f5 +2011-03-03T03:30:10.954225Z +4990 +tmaruyama has-props @@ -228,7 +228,7 @@ -7654 +9702 admin_helper.rb file @@ -236,7 +236,7 @@ -2010-09-24T12:48:25.903794Z +2011-03-03T11:05:09.000000Z 258ebc9ad13b3111585e5118ec607d1b 2010-09-10T23:07:10.817821Z 4080 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z 19efbd2b30f44f233d5140437e2707a0 2010-08-08T07:07:20.961363Z 3924 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z 42d20ee00a3c45e3411634dbb09e2447 2007-03-12T17:59:02.654744Z 333 @@ -338,7 +338,7 @@ -2010-09-24T12:48:25.903794Z +2011-03-03T11:05:09.000000Z c8780c65337211f34097d74a8c3c9f6e 2010-08-26T16:37:26.575205Z 4046 @@ -372,7 +372,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z 1257aafe6669c839ab46dac2b2732ae0 2007-03-12T17:59:02.654744Z 333 @@ -406,7 +406,7 @@ -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z ceb0fce7a4c271df3ae182c29caf9c03 2007-03-12T17:59:02.654744Z 333 @@ -440,10 +440,10 @@ -2010-11-19T13:04:46.900732Z -3e6762604b5e9a201b7a7bb2edc1f78f -2010-11-06T14:30:32.528294Z -4375 +2011-03-03T11:40:18.000000Z +44832549db555bb9e047a67ae330f34a +2011-02-27T12:35:31.414622Z +4952 jplang has-props @@ -466,7 +466,7 @@ -2297 +1315 enumerations_helper.rb file @@ -474,7 +474,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z fc5ec20dd0ca3ce1d954b219417eff70 2007-03-12T17:59:02.654744Z 333 @@ -508,10 +508,10 @@ -2010-11-19T13:04:46.900732Z -b5569bf5b4ba507a522f4e371505ae0c -2010-10-22T22:29:32.969473Z -4281 +2011-03-03T11:40:18.000000Z +9dfadb196899bf96fdff7c7c34914e8c +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -534,41 +534,7 @@ -10075 - -gantt_helper.rb -file - - - - -2010-11-19T13:04:46.900732Z -dfac5226f31c3c232d7dcc9416172071 -2010-10-23T09:08:55.877887Z -4283 -jplang - - - - - - - - - - - - - - - - - - - - - -1988 +11599 queries_helper.rb file @@ -576,7 +542,7 @@ -2010-11-19T13:04:46.900732Z +2011-03-03T11:05:09.000000Z 6b997d023cc081b101be1949eb18f893 2010-11-07T15:38:51.908839Z 4387 @@ -604,13 +570,47 @@ 3722 +gantt_helper.rb +file + + + + +2011-03-03T11:05:09.000000Z +dfac5226f31c3c232d7dcc9416172071 +2010-10-23T09:08:55.877887Z +4283 +jplang + + + + + + + + + + + + + + + + + + + + + +1988 + mail_handler_helper.rb file -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z c79faf6237abac40fabce0eacbfbb4cb 2008-06-25T19:25:28.386590Z 1584 @@ -644,7 +644,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z fc71d3a83fe0178e0c6d9519c7a62dde 2010-03-13T17:45:41.194736Z 3579 @@ -678,7 +678,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z d7134d76eff99aef107d8930903b10e0 2007-03-12T17:59:02.654744Z 333 @@ -712,7 +712,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z cc94b2fd5c6a87acac13bbe6e91bd39a 2007-03-12T17:59:02.654744Z 333 @@ -746,7 +746,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 2d03eb3683f312ec26736c696319ec76 2007-03-12T17:59:02.654744Z 333 @@ -774,13 +774,47 @@ 817 +journals_helper.rb +file + + + + +2011-03-03T11:05:09.000000Z +b64edde44bceed7fb0911f87dba971aa +2010-09-05T22:57:20.669640Z +4062 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +2266 + workflows_helper.rb file -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 4f7bcbe149363ecb18080e3ce6c3f761 2008-09-28T12:03:17.584169Z 1914 @@ -808,47 +842,13 @@ 824 -journals_helper.rb -file - - - - -2010-09-24T12:48:25.903794Z -b64edde44bceed7fb0911f87dba971aa -2010-09-05T22:57:20.669640Z -4062 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -2266 - reports_helper.rb file -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 9daafcfffa933849b3ee09fe5fd7b0cc 2007-08-13T17:00:59.400243Z 629 @@ -876,17 +876,17 @@ 1265 -custom_fields_helper.rb +timelog_helper.rb file -2010-09-23T14:37:44.423776Z -97753365c8eb76a948d7417d5db31079 -2010-04-16T15:34:05.970144Z -3675 -edavis10 +2011-03-03T11:05:09.000000Z +1888fd2d4a1be5fa0d6ad8a63238e2b4 +2010-04-30T12:18:11.536180Z +3708 +jplang has-props @@ -908,7 +908,7 @@ -5322 +6636 settings_helper.rb file @@ -916,7 +916,7 @@ -2010-11-19T13:04:46.900732Z +2011-03-03T11:05:09.000000Z 868d0dc19e332ae2c817321637a8e31f 2010-09-28T21:09:06.467392Z 4222 @@ -944,16 +944,16 @@ 3858 -timelog_helper.rb +custom_fields_helper.rb file -2010-09-23T14:37:44.431779Z -1888fd2d4a1be5fa0d6ad8a63238e2b4 -2010-04-30T12:18:11.536180Z -3708 +2011-03-03T11:05:09.000000Z +19a8f1c143030c42136fe167f167db15 +2010-12-10T10:12:19.202442Z +4480 jplang has-props @@ -976,7 +976,7 @@ -6636 +5702 issue_moves_helper.rb file @@ -984,7 +984,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z 66e99bd3af036c92a773a91e92a725f9 2010-08-11T14:42:10.119704Z 3936 @@ -1018,11 +1018,11 @@ -2010-11-19T13:04:46.900732Z -01b097606863e1e2938e7222d07fc2b7 -2010-09-30T18:22:46.611444Z -4230 -edavis10 +2011-03-03T11:05:09.000000Z +1bedb4287035a6f89074da0b37640c28 +2010-12-12T14:25:23.262992Z +4497 +jplang has-props @@ -1044,7 +1044,7 @@ -2644 +2767 application_helper.rb file @@ -1052,10 +1052,10 @@ -2010-11-19T13:04:46.900732Z -a9ac6edf6104b93a669ba1b0705f4fc6 -2010-11-11T13:39:14.764400Z -4391 +2011-03-03T11:40:18.000000Z +9d39fe6e2dd4535f7a006a77150961bc +2011-02-21T09:53:29.844413Z +4900 jplang has-props @@ -1078,7 +1078,7 @@ -34105 +36020 auth_sources_helper.rb file @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z 19759b6e665f9063140da8ac473d9e31 2007-03-12T17:59:02.654744Z 333 @@ -1120,7 +1120,7 @@ -2010-11-19T13:04:46.900732Z +2011-03-03T11:05:09.000000Z dedb3c62af67e076703aa2f60c97fb2b 2010-11-01T12:55:15.292443Z 4353 @@ -1154,10 +1154,10 @@ -2010-09-23T14:37:44.427784Z -70db854f3fd0a38d203a65c44d93bb13 -2010-02-06T12:54:13.653502Z -3373 +2011-03-03T11:05:09.000000Z +d083581ae234853db09e79e4e88d6ad3 +2011-01-23T17:02:10.030897Z +4760 jplang has-props @@ -1180,7 +1180,41 @@ -1364 +823 + +issue_relations_helper.rb +file + + + + +2011-03-03T11:05:09.000000Z +fef3a97e6644b418b44f9551aa65af95 +2007-05-05T13:22:27.245135Z +506 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1017 versions_helper.rb file @@ -1188,7 +1222,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z fd18226266f3e53f6af000ac07a13313 2007-12-07T10:26:07.864320Z 955 @@ -1216,47 +1250,13 @@ 2170 -issue_relations_helper.rb -file - - - - -2010-09-23T14:37:44.427784Z -fef3a97e6644b418b44f9551aa65af95 -2007-05-05T13:22:27.245135Z -506 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1017 - boards_helper.rb file -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z 0ca8f33522734ee0417089366037a7cb 2007-05-13T17:09:56.765659Z 529 @@ -1290,10 +1290,10 @@ -2010-09-23T14:37:44.423776Z -6e15ada8c772d8daf8062cec2885ad9c -2008-12-09T16:54:46.963649Z -2116 +2011-03-03T11:05:09.000000Z +58bc2391be7fedbf3e55ef07454cb04c +2011-01-01T19:12:35.568700Z +4605 jplang has-props @@ -1316,7 +1316,7 @@ -1367 +1743 news_helper.rb file @@ -1324,7 +1324,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z d808f6794a2fa7cd059ed56d5c8d1b28 2007-03-12T17:59:02.654744Z 333 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/application_helper.rb.svn-base --- a/app/helpers/.svn/text-base/application_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/application_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -104,8 +104,24 @@ # * :text - Link text (default to the formatted revision) def link_to_revision(revision, project, options={}) text = options.delete(:text) || format_revision(revision) + rev = revision.respond_to?(:identifier) ? revision.identifier : revision - link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => revision}, :title => l(:label_revision_id, revision)) + 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( + h(truncate(message.subject, :length => 60)), + { :controller => 'messages', :action => 'show', + :board_id => message.board_id, + :id => message.root, + :r => (message.parent_id && message.id), + :anchor => (message.parent_id ? "message-#{message.id}" : nil) + }.merge(options), + html_options + ) end # Generates a link to a project if active @@ -449,12 +465,19 @@ 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) } - - parse_non_pre_blocks(text) do |text| + + @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) @@ -579,16 +602,26 @@ # source:some/file#L120 -> Link to line 120 of the file # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 # export:some/file -> Force the download of the file - # Forum messages: + # Forum messages: # message#1218 -> Link to message with id 1218 + # + # Links can refer other objects from other projects, using project identifier: + # identifier:r52 + # identifier:document:"Some document" + # identifier:version:1.0.0 + # identifier:source:some/file def parse_redmine_links(text, project, obj, attr, only_path, options) - text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| - leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8 + text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-]+):)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| + leading, esc, project_prefix, project_identifier, prefix, sep, identifier = $1, $2, $3, $4, $5, $7 || $9, $8 || $10 link = nil + if project_identifier + project = Project.visible.find_by_identifier(project_identifier) + end if esc.nil? if prefix.nil? && sep == 'r' - if project && (changeset = project.changesets.find_by_revision(identifier)) - link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, + # project.changesets.visible raises an SQL error because of a double join on repositories + if project && project.repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(project.repository.id, identifier)) + link = link_to("#{project_prefix}r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100)) end @@ -602,24 +635,18 @@ :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})") end when 'document' - if document = Document.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if document = Document.visible.find_by_id(oid) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if version = Version.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if version = Version.visible.find_by_id(oid) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'message' - if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current)) - link = link_to h(truncate(message.subject, :length => 60)), {:only_path => only_path, - :controller => 'messages', - :action => 'show', - :board_id => message.board, - :id => message.root, - :anchor => (message.parent ? "message-#{message.id}" : nil)}, - :class => 'message' + if message = Message.visible.find_by_id(oid, :include => :parent) + link = link_to_message(message, {:only_path => only_path}, :class => 'message') end when 'project' if p = Project.visible.find_by_id(oid) @@ -631,26 +658,26 @@ name = identifier.gsub(%r{^"(.*)"$}, "\\1") case prefix when 'document' - if project && document = project.documents.find_by_title(name) + if project && document = project.documents.visible.find_by_title(name) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if project && version = project.versions.find_by_name(name) + if project && version = project.versions.visible.find_by_name(name) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'commit' - if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"])) - link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, + if project && project.repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", project.repository.id, "#{name}%"])) + link = link_to h("#{project_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100) end when 'source', 'export' - if project && project.repository + if project && project.repository && User.current.allowed_to?(:browse_repository, project) name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$} path, rev, anchor = $1, $3, $5 - link = link_to h("#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, + link = link_to h("#{project_prefix}#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :path => to_path_param(path), :rev => rev, :anchor => anchor, @@ -670,25 +697,30 @@ end end end - leading + (link || "#{prefix}#{sep}#{identifier}") + leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}") end end - TOC_RE = /

\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE) HEADING_RE = /]+)?>(.+?)<\/h(1|2|3|4)>/i unless const_defined?(:HEADING_RE) # Headings and TOC - # Adds ids and links to headings and renders the TOC if needed unless options[:headings] is set to false + # Adds ids and links to headings unless options[:headings] is set to false def parse_headings(text, project, obj, attr, only_path, options) - headings = [] + 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*)?}, '-') - headings << [level, anchor, item] + @parsed_headings << [level, anchor, item] "#{content}" - end unless options[:headings] == false - + 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 if headings.empty? '' @@ -862,11 +894,42 @@ '' end end + + # Returns the javascript tags that are included in the html layout head + def javascript_heads + tags = javascript_include_tag(:defaults) + unless User.current.pref.warn_on_leaving_unsaved == '0' + tags << "\n" + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });") + end + tags + end def favicon "" end + + # Returns true if arg is expected in the API response + def include_in_api_response?(arg) + unless @included_in_api_response + param = params[:include] + @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',') + @included_in_api_response.collect!(&:strip) + end + @included_in_api_response.include?(arg.to_s) + end + # Returns options or nil if nometa param or X-Redmine-Nometa header + # was set in the request + def api_meta(options) + if params[:nometa].present? || request.headers['X-Redmine-Nometa'] + # compatibility mode for activeresource clients that raise + # an error when unserializing an array with attributes + nil + else + options + end + end + private def wiki_helper diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/attachments_helper.rb.svn-base --- a/app/helpers/.svn/text-base/attachments_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/attachments_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -29,6 +29,18 @@ end def to_utf8(str) - str + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + return str if str.valid_encoding? + 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 + # "UTF-8//IGNORE" is not supported on some OS + str + end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/custom_fields_helper.rb.svn-base --- a/app/helpers/.svn/text-base/custom_fields_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/custom_fields_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -104,4 +104,15 @@ def custom_field_formats_for_select Redmine::CustomFieldFormat.as_select end + + # Renders the custom_values in api views + def render_api_custom_values(custom_values, api) + api.array :custom_fields do + custom_values.each do |custom_value| + api.custom_field :id => custom_value.custom_field_id, :name => custom_value.custom_field.name do + api.value custom_value.value + end + end + end unless custom_values.empty? + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/issues_helper.rb.svn-base --- a/app/helpers/.svn/text-base/issues_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/issues_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -106,13 +106,32 @@ # 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, - :select => 'id, name', + :select => 'id, name, is_public', :order => "name ASC", :conditions => visible.conditions) end @sidebar_queries end + 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?} + out << query_links(l(:label_my_queries), queries) if queries.any? + queries = sidebar_queries.select {|q| q.is_public?} + out << query_links(l(:label_query_plural), queries) if queries.any? + out + end + def show_detail(detail, no_html=false) case detail.property when 'attr' @@ -164,7 +183,16 @@ end end - if !detail.value.blank? + 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', + {:controller => 'journals', :action => 'diff', :id => detail.journal_id, :detail_id => detail.id}, + :title => l(:label_view_diff) + s << " (#{ diff_link })" + end + s + elsif !detail.value.blank? case detail.property when 'attr', 'cf' if !detail.old_value.blank? @@ -189,6 +217,20 @@ end end + # Renders issue children recursively + def render_api_issue_children(issue, api) + return if issue.leaf? + api.array :children do + issue.children.each do |child| + api.issue(:id => child.id) do + api.tracker(:id => child.tracker_id, :name => child.tracker.name) unless child.tracker.nil? + api.subject child.subject + render_api_issue_children(child, api) + end + end + end + end + def issues_to_csv(issues, project = nil) ic = Iconv.new(l(:general_csv_encoding), 'UTF-8') decimal_separator = l(:general_csv_decimal_separator) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/messages_helper.rb.svn-base --- a/app/helpers/.svn/text-base/messages_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/messages_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -16,14 +16,4 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MessagesHelper - - def link_to_message(message) - return '' unless message - link_to h(truncate(message.subject, :length => 60)), :controller => 'messages', - :action => 'show', - :board_id => message.board_id, - :id => message.root, - :r => (message.parent_id && message.id), - :anchor => (message.parent_id ? "message-#{message.id}" : nil) - end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/repositories_helper.rb.svn-base --- a/app/helpers/.svn/text-base/repositories_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/repositories_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -18,16 +18,20 @@ require 'iconv' module RepositoriesHelper - def format_revision(txt) - txt.to_s[0,8] + def format_revision(revision) + if revision.respond_to? :format_identifier + revision.format_identifier + else + revision.to_s + end end - + def truncate_at_line_break(text, length = 255) if text text.gsub(%r{^(.{#{length}}[^\n]*)\n.+$}m, '\\1...') end end - + def render_properties(properties) unless properties.nil? || properties.empty? content = '' @@ -37,7 +41,7 @@ content_tag('ul', content, :class => 'properties') end end - + def render_changeset_changes changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change| case change.action @@ -71,10 +75,10 @@ render_changes_tree(tree[:s]) end - + def render_changes_tree(tree) return '' if tree.nil? - + output = '' output << '

' output end - + def to_utf8(str) - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii + return str if str.blank? + 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 + @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) @encodings.each do |encoding| begin @@ -122,67 +135,118 @@ # do nothing here and try the next encoding end end + str = 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 - - def repository_field_tags(form, repository) + + def repository_field_tags(form, repository) method = repository.class.name.demodulize.underscore + "_field_tags" - send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) && method != 'repository_field_tags' + if repository.is_a?(Repository) && + respond_to?(method) && method != 'repository_field_tags' + send(method, form, repository) + end end - + def scm_select_tag(repository) scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] Redmine::Scm::Base.all.each do |scm| - scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm) + if Setting.enabled_scm.include?(scm) || + (repository && repository.class.name.demodulize == scm) + scm_options << ["Repository::#{scm}".constantize.scm_name, scm] + end end - 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 }, :method => :get, :with => "Form.serialize(this.form)") + :onchange => remote_function( + :url => { + :controller => 'repositories', + :action => 'edit', + :id => @project + }, + :method => :get, + :with => "Form.serialize(this.form)") ) end - + def with_leading_slash(path) path.to_s.starts_with?('/') ? path : "/#{path}" end - + def without_leading_slash(path) path.gsub(%r{^/+}, '') end def subversion_field_tags(form, repository) - content_tag('p', form.text_field(:url, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)) + + content_tag('p', form.text_field(:url, :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + '
(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') + content_tag('p', form.text_field(:login, :size => 30)) + - content_tag('p', form.password_field(:password, :size => 30, :name => 'ignore', - :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), - :onfocus => "this.value=''; this.name='repository[password]';", - :onchange => "this.name='repository[password]';")) + content_tag('p', form.password_field( + :password, :size => 30, :name => 'ignore', + :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), + :onfocus => "this.value=''; this.name='repository[password]';", + :onchange => "this.name='repository[password]';")) 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.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)) end - + def mercurial_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
local repository (e.g. /hgrepo, c:\hgrepo)' ) end def git_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Path to .git directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Path to repository', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
a bare and local repository (e.g. /gitrepo, c:\gitrepo)') 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.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)) 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.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)) end - + def filesystem_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => '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') end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/users_helper.rb.svn-base --- a/app/helpers/.svn/text-base/users_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/users_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -33,6 +33,10 @@ options end + def user_mail_notification_options(user) + user.valid_notification_options.collect {|o| [l(o.last), o.first]} + end + def change_status_link(user) url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil} diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/.svn/text-base/wiki_helper.rb.svn-base --- a/app/helpers/.svn/text-base/wiki_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/.svn/text-base/wiki_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -29,41 +29,4 @@ end s end - - def html_diff(wdiff) - words = wdiff.words.collect{|word| h(word)} - words_add = 0 - words_del = 0 - dels = 0 - del_off = 0 - wdiff.diff.diffs.each do |diff| - add_at = nil - add_to = nil - del_at = nil - deleted = "" - diff.each do |change| - pos = change[1] - if change[0] == "+" - add_at = pos + dels unless add_at - add_to = pos + dels - words_add += 1 - else - del_at = pos unless del_at - deleted << ' ' + h(change[2]) - words_del += 1 - end - end - if add_at - words[add_at] = '' + words[add_at] - words[add_to] = words[add_to] + '' - end - if del_at - words.insert del_at - del_off + dels + words_add, '' + deleted + '' - dels += 1 - del_off += words_del - words_del = 0 - end - end - simple_format_without_paragraph(words.join(' ')) - end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/application_helper.rb --- a/app/helpers/application_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/application_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -109,6 +109,20 @@ 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( + h(truncate(message.subject, :length => 60)), + { :controller => 'messages', :action => 'show', + :board_id => message.board_id, + :id => message.root, + :r => (message.parent_id && message.id), + :anchor => (message.parent_id ? "message-#{message.id}" : nil) + }.merge(options), + html_options + ) + end # Generates a link to a project if active # Examples: @@ -458,12 +472,19 @@ 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) } - - parse_non_pre_blocks(text) do |text| + + @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) @@ -588,16 +609,26 @@ # source:some/file#L120 -> Link to line 120 of the file # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 # export:some/file -> Force the download of the file - # Forum messages: + # Forum messages: # message#1218 -> Link to message with id 1218 + # + # Links can refer other objects from other projects, using project identifier: + # identifier:r52 + # identifier:document:"Some document" + # identifier:version:1.0.0 + # identifier:source:some/file def parse_redmine_links(text, project, obj, attr, only_path, options) - text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| - leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8 + text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-]+):)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| + leading, esc, project_prefix, project_identifier, prefix, sep, identifier = $1, $2, $3, $4, $5, $7 || $9, $8 || $10 link = nil + if project_identifier + project = Project.visible.find_by_identifier(project_identifier) + end if esc.nil? if prefix.nil? && sep == 'r' - if project && (changeset = project.changesets.find_by_revision(identifier)) - link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, + # project.changesets.visible raises an SQL error because of a double join on repositories + if project && project.repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(project.repository.id, identifier)) + link = link_to("#{project_prefix}r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100)) end @@ -611,24 +642,18 @@ :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})") end when 'document' - if document = Document.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if document = Document.visible.find_by_id(oid) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if version = Version.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if version = Version.visible.find_by_id(oid) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'message' - if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current)) - link = link_to h(truncate(message.subject, :length => 60)), {:only_path => only_path, - :controller => 'messages', - :action => 'show', - :board_id => message.board, - :id => message.root, - :anchor => (message.parent ? "message-#{message.id}" : nil)}, - :class => 'message' + if message = Message.visible.find_by_id(oid, :include => :parent) + link = link_to_message(message, {:only_path => only_path}, :class => 'message') end when 'project' if p = Project.visible.find_by_id(oid) @@ -640,26 +665,26 @@ name = identifier.gsub(%r{^"(.*)"$}, "\\1") case prefix when 'document' - if project && document = project.documents.find_by_title(name) + if project && document = project.documents.visible.find_by_title(name) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if project && version = project.versions.find_by_name(name) + if project && version = project.versions.visible.find_by_name(name) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'commit' - if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"])) - link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier}, + if project && project.repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", project.repository.id, "#{name}%"])) + link = link_to h("#{project_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100) end when 'source', 'export' - if project && project.repository + if project && project.repository && User.current.allowed_to?(:browse_repository, project) name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$} path, rev, anchor = $1, $3, $5 - link = link_to h("#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, + link = link_to h("#{project_prefix}#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :path => to_path_param(path), :rev => rev, :anchor => anchor, @@ -679,25 +704,30 @@ end end end - leading + (link || "#{prefix}#{sep}#{identifier}") + leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}") end end - TOC_RE = /

\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE) HEADING_RE = /]+)?>(.+?)<\/h(1|2|3|4)>/i unless const_defined?(:HEADING_RE) # Headings and TOC - # Adds ids and links to headings and renders the TOC if needed unless options[:headings] is set to false + # Adds ids and links to headings unless options[:headings] is set to false def parse_headings(text, project, obj, attr, only_path, options) - headings = [] + 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*)?}, '-') - headings << [level, anchor, item] + @parsed_headings << [level, anchor, item] "#{content}" - end unless options[:headings] == false - + 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 if headings.empty? '' @@ -871,11 +901,42 @@ '' end end + + # Returns the javascript tags that are included in the html layout head + def javascript_heads + tags = javascript_include_tag(:defaults) + unless User.current.pref.warn_on_leaving_unsaved == '0' + tags << "\n" + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });") + end + tags + end def favicon "" end + + # Returns true if arg is expected in the API response + def include_in_api_response?(arg) + unless @included_in_api_response + param = params[:include] + @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',') + @included_in_api_response.collect!(&:strip) + end + @included_in_api_response.include?(arg.to_s) + end + # Returns options or nil if nometa param or X-Redmine-Nometa header + # was set in the request + def api_meta(options) + if params[:nometa].present? || request.headers['X-Redmine-Nometa'] + # compatibility mode for activeresource clients that raise + # an error when unserializing an array with attributes + nil + else + options + end + end + private def wiki_helper diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/attachments_helper.rb --- a/app/helpers/attachments_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/attachments_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -29,6 +29,18 @@ end def to_utf8(str) - str + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + return str if str.valid_encoding? + 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 + # "UTF-8//IGNORE" is not supported on some OS + str + end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/custom_fields_helper.rb --- a/app/helpers/custom_fields_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/custom_fields_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -104,4 +104,15 @@ def custom_field_formats_for_select Redmine::CustomFieldFormat.as_select end + + # Renders the custom_values in api views + def render_api_custom_values(custom_values, api) + api.array :custom_fields do + custom_values.each do |custom_value| + api.custom_field :id => custom_value.custom_field_id, :name => custom_value.custom_field.name do + api.value custom_value.value + end + end + end unless custom_values.empty? + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/issues_helper.rb --- a/app/helpers/issues_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/issues_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -106,13 +106,32 @@ # 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, - :select => 'id, name', + :select => 'id, name, is_public', :order => "name ASC", :conditions => visible.conditions) end @sidebar_queries end + 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?} + out << query_links(l(:label_my_queries), queries) if queries.any? + queries = sidebar_queries.select {|q| q.is_public?} + out << query_links(l(:label_query_plural), queries) if queries.any? + out + end + def show_detail(detail, no_html=false) case detail.property when 'attr' @@ -164,7 +183,16 @@ end end - if !detail.value.blank? + 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', + {:controller => 'journals', :action => 'diff', :id => detail.journal_id, :detail_id => detail.id}, + :title => l(:label_view_diff) + s << " (#{ diff_link })" + end + s + elsif !detail.value.blank? case detail.property when 'attr', 'cf' if !detail.old_value.blank? @@ -189,6 +217,20 @@ end end + # Renders issue children recursively + def render_api_issue_children(issue, api) + return if issue.leaf? + api.array :children do + issue.children.each do |child| + api.issue(:id => child.id) do + api.tracker(:id => child.tracker_id, :name => child.tracker.name) unless child.tracker.nil? + api.subject child.subject + render_api_issue_children(child, api) + end + end + end + end + def issues_to_csv(issues, project = nil) ic = Iconv.new(l(:general_csv_encoding), 'UTF-8') decimal_separator = l(:general_csv_decimal_separator) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/messages_helper.rb --- a/app/helpers/messages_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/messages_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -16,14 +16,4 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MessagesHelper - - def link_to_message(message) - return '' unless message - link_to h(truncate(message.subject, :length => 60)), :controller => 'messages', - :action => 'show', - :board_id => message.board_id, - :id => message.root, - :r => (message.parent_id && message.id), - :anchor => (message.parent_id ? "message-#{message.id}" : nil) - end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/projects_helper.rb --- a/app/helpers/projects_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/projects_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -172,6 +172,8 @@ original_project = @project + level = 0 + projects.each do |project| s << render_project_in_table(project, cycle('odd', 'even'), 0) end @@ -179,8 +181,9 @@ s << "" @project = original_project - s + level = 0 + oddeven = cycle('odd','even') end @@ -216,11 +219,19 @@ end if mgrs.size < 3 s << '' << mgrs.join(', ') << '' + mgrs << link_to_user(m) + end + if mgrs.size < 3 + s << '' << mgrs.join(', ') << '' else s << mgrs.join(', ') + end end end end + s << "" + + ancestors << project end s << "" diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/repositories_helper.rb --- a/app/helpers/repositories_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/repositories_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -18,31 +18,20 @@ require 'iconv' module RepositoriesHelper - # truncate rev to 8 chars if it's quite long - def truncate_long_revision_name(rev) - rev.to_s.size <= 12 ? rev.to_s : rev.to_s[0, 8] - end - private :truncate_long_revision_name - def format_revision(revision) - if [:identifier, :revision, :scmid].all? { |e| revision.respond_to? e } - if revision.scmid and revision.revision != revision.scmid and /[^\d]/ !~ revision.revision - "#{revision.revision}:#{revision.scmid}" # number:hashid - else - truncate_long_revision_name(revision.identifier) - end + if revision.respond_to? :format_identifier + revision.format_identifier else - truncate_long_revision_name(revision) + revision.to_s end end - module_function :format_revision # callable as RepositoriesHelper.format_revision - + def truncate_at_line_break(text, length = 255) if text text.gsub(%r{^(.{#{length}}[^\n]*)\n.+$}m, '\\1...') end end - + def render_properties(properties) unless properties.nil? || properties.empty? content = '' @@ -52,7 +41,7 @@ content_tag('ul', content, :class => 'properties') end end - + def render_changeset_changes changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change| case change.action @@ -86,10 +75,10 @@ render_changes_tree(tree[:s]) end - + def render_changes_tree(tree) return '' if tree.nil? - + output = '' output << '

' output end - + def to_utf8(str) - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii + return str if str.blank? + 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 + @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) @encodings.each do |encoding| begin @@ -137,68 +135,118 @@ # do nothing here and try the next encoding end end + str = 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 - - def repository_field_tags(form, repository) + + def repository_field_tags(form, repository) method = repository.class.name.demodulize.underscore + "_field_tags" - send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) && method != 'repository_field_tags' + if repository.is_a?(Repository) && + respond_to?(method) && method != 'repository_field_tags' + send(method, form, repository) + end end - + def scm_select_tag(repository) scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] Redmine::Scm::Base.all.each do |scm| - scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm) + if Setting.enabled_scm.include?(scm) || + (repository && repository.class.name.demodulize == scm) + scm_options << ["Repository::#{scm}".constantize.scm_name, scm] + end end - 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 }, :method => :get, :with => "Form.serialize(this.form)") + :onchange => remote_function( + :url => { + :controller => 'repositories', + :action => 'edit', + :id => @project + }, + :method => :get, + :with => "Form.serialize(this.form)") ) end - + def with_leading_slash(path) path.to_s.starts_with?('/') ? path : "/#{path}" end - + def without_leading_slash(path) path.gsub(%r{^/+}, '') end def subversion_field_tags(form, repository) - content_tag('p', form.text_field(:url, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)) + + content_tag('p', form.text_field(:url, :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + '
(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') + content_tag('p', form.text_field(:login, :size => 30)) + - content_tag('p', form.password_field(:password, :size => 30, :name => 'ignore', - :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), - :onfocus => "this.value=''; this.name='repository[password]';", - :onchange => "this.name='repository[password]';")) + content_tag('p', form.password_field( + :password, :size => 30, :name => 'ignore', + :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), + :onfocus => "this.value=''; this.name='repository[password]';", + :onchange => "this.name='repository[password]';")) 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.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)) end - + def mercurial_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => true)) -# (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
local repository (e.g. /hgrepo, c:\hgrepo)' ) end def git_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Path to .git directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Path to repository', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
a bare and local repository (e.g. /gitrepo, c:\gitrepo)') 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.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)) 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.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)) end - + def filesystem_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => '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') end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/users_helper.rb --- a/app/helpers/users_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/users_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -33,6 +33,10 @@ options end + def user_mail_notification_options(user) + user.valid_notification_options.collect {|o| [l(o.last), o.first]} + end + def change_status_link(user) url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil} diff -r 7cec015f07ce -r 73ff0e6a11b1 app/helpers/wiki_helper.rb --- a/app/helpers/wiki_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/helpers/wiki_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -29,41 +29,4 @@ end s end - - def html_diff(wdiff) - words = wdiff.words.collect{|word| h(word)} - words_add = 0 - words_del = 0 - dels = 0 - del_off = 0 - wdiff.diff.diffs.each do |diff| - add_at = nil - add_to = nil - del_at = nil - deleted = "" - diff.each do |change| - pos = change[1] - if change[0] == "+" - add_at = pos + dels unless add_at - add_to = pos + dels - words_add += 1 - else - del_at = pos unless del_at - deleted << ' ' + h(change[2]) - words_del += 1 - end - end - if add_at - words[add_at] = '' + words[add_at] - words[add_to] = words[add_to] + '' - end - if del_at - words.insert del_at - del_off + dels + words_add, '' + deleted + '' - dels += 1 - del_off += words_del - words_del = 0 - end - end - simple_format_without_paragraph(words.join(' ')) - end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/all-wcprops --- a/app/models/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,31 +1,31 @@ K 25 svn:wc:ra_dav:version-url V 35 -/svn/!svn/ver/4404/trunk/app/models +/svn/!svn/ver/4982/trunk/app/models END document.rb K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/3358/trunk/app/models/document.rb +/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/4404/trunk/app/models/mail_handler.rb +/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/3472/trunk/app/models/repository.rb +/svn/!svn/ver/4982/trunk/app/models/repository.rb END time_entry.rb K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4277/trunk/app/models/time_entry.rb +/svn/!svn/ver/4708/trunk/app/models/time_entry.rb END token.rb K 25 @@ -43,7 +43,7 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3492/trunk/app/models/auth_source_ldap.rb +/svn/!svn/ver/4950/trunk/app/models/auth_source_ldap.rb END principal.rb K 25 @@ -81,11 +81,17 @@ 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/4394/trunk/app/models/issue.rb +/svn/!svn/ver/4954/trunk/app/models/issue.rb END time_entry_activity_custom_field.rb K 25 @@ -93,12 +99,6 @@ V 71 /svn/!svn/ver/2952/trunk/app/models/time_entry_activity_custom_field.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_priority.rb K 25 svn:wc:ra_dav:version-url @@ -133,7 +133,7 @@ K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4296/trunk/app/models/wiki_page.rb +/svn/!svn/ver/4952/trunk/app/models/wiki_page.rb END comment.rb K 25 @@ -151,7 +151,7 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4387/trunk/app/models/query.rb +/svn/!svn/ver/4888/trunk/app/models/query.rb END member.rb K 25 @@ -169,7 +169,7 @@ K 25 svn:wc:ra_dav:version-url V 45 -/svn/!svn/ver/4373/trunk/app/models/mailer.rb +/svn/!svn/ver/4752/trunk/app/models/mailer.rb END journal.rb K 25 @@ -199,25 +199,25 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/3672/trunk/app/models/custom_field.rb +/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/3417/trunk/app/models/setting.rb +/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/4234/trunk/app/models/user.rb +/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/3745/trunk/app/models/auth_source.rb +/svn/!svn/ver/4950/trunk/app/models/auth_source.rb END news_observer.rb K 25 @@ -229,7 +229,7 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/3373/trunk/app/models/message.rb +/svn/!svn/ver/4759/trunk/app/models/message.rb END wiki_redirect.rb K 25 @@ -241,7 +241,7 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/3729/trunk/app/models/issue_relation.rb +/svn/!svn/ver/4467/trunk/app/models/issue_relation.rb END document_observer.rb K 25 @@ -253,7 +253,7 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4073/trunk/app/models/version.rb +/svn/!svn/ver/4574/trunk/app/models/version.rb END issue_priority_custom_field.rb K 25 @@ -265,13 +265,13 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/3167/trunk/app/models/board.rb +/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/3774/trunk/app/models/attachment.rb +/svn/!svn/ver/4755/trunk/app/models/attachment.rb END group_custom_field.rb K 25 @@ -283,7 +283,7 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/3881/trunk/app/models/issue_status.rb +/svn/!svn/ver/4895/trunk/app/models/issue_status.rb END time_entry_activity.rb K 25 @@ -295,19 +295,19 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/3188/trunk/app/models/tracker.rb +/svn/!svn/ver/4599/trunk/app/models/tracker.rb END journal_detail.rb K 25 svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/478/trunk/app/models/journal_detail.rb +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/2869/trunk/app/models/group.rb +/svn/!svn/ver/4437/trunk/app/models/group.rb END issue_observer.rb K 25 @@ -319,13 +319,13 @@ K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/3928/trunk/app/models/changeset.rb +/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/3363/trunk/app/models/role.rb +/svn/!svn/ver/4599/trunk/app/models/role.rb END project_custom_field.rb K 25 @@ -337,7 +337,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/3632/trunk/app/models/wiki.rb +/svn/!svn/ver/4680/trunk/app/models/wiki.rb END custom_value.rb K 25 @@ -349,7 +349,7 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4402/trunk/app/models/project.rb +/svn/!svn/ver/4645/trunk/app/models/project.rb END document_category.rb K 25 @@ -361,11 +361,11 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/3358/trunk/app/models/news.rb +/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/1623/trunk/app/models/user_preference.rb +/svn/!svn/ver/4900/trunk/app/models/user_preference.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/entries --- a/app/models/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/models http://redmine.rubyforge.org/svn -2010-11-14T13:48:01.671461Z -4404 -jplang +2011-03-01T10:27:30.170724Z +4982 +tmaruyama @@ -35,11 +35,11 @@ -2010-09-23T14:37:44.471831Z -6edd75717c818c718387e30ec7aee840 -2010-02-01T18:57:12.733490Z -3358 -edavis10 +2011-03-03T11:05:09.000000Z +190c117fe2ccfc4b1ebe70ae94e0d779 +2011-01-23T16:47:59.732003Z +4759 +jplang has-props @@ -61,7 +61,7 @@ -1995 +2197 mail_handler.rb file @@ -69,11 +69,11 @@ -2010-11-19T13:04:46.952746Z -dd4785525bab24b6791967d66ffe6cb9 -2010-11-14T13:48:01.671461Z -4404 -jplang +2011-03-03T11:40:18.000000Z +ed655ccb5c306f548b3997d2dd3e3d60 +2011-02-12T10:08:11.630366Z +4820 +jbbarth has-props @@ -95,7 +95,7 @@ -13455 +13778 repository.rb file @@ -103,11 +103,11 @@ -2010-09-24T11:56:52.924049Z -6d9599543924edc24abb739bd3f7e718 -2010-02-21T14:42:45.276472Z -3472 -jplang +2011-03-03T11:40:18.000000Z +a3fb46324c320aab8869e523c2a35d2a +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -129,7 +129,7 @@ -6831 +8497 time_entry.rb file @@ -137,10 +137,10 @@ -2010-11-19T13:04:46.956816Z -aa2cc7da3c19ce52813f08949e6cefec -2010-10-22T20:40:11.668687Z -4277 +2011-03-03T11:05:09.000000Z +db327d70b8e3bcf04992bf7c69522467 +2011-01-14T18:04:16.470040Z +4708 jplang has-props @@ -163,7 +163,7 @@ -4087 +4162 token.rb file @@ -171,7 +171,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 441a5648e149e471c91928dc7f3f29a6 2009-06-02T17:24:50.360628Z 2778 @@ -205,7 +205,7 @@ -2010-11-19T13:04:46.956816Z +2011-03-03T11:05:09.000000Z 7d895b3a013ce8f4e63dd4e7aab7eb20 2010-09-28T20:20:00.843023Z 4221 @@ -239,10 +239,10 @@ -2010-09-23T14:37:44.467732Z -87f2ff0401993963de36fe7502cd6949 -2010-02-26T09:13:12.187275Z -3492 +2011-03-03T11:40:18.000000Z +82898965a0c07d8fa25a52cfced3139f +2011-02-26T13:09:25.657748Z +4950 jplang has-props @@ -273,7 +273,7 @@ -2010-09-24T12:48:25.923798Z +2011-03-03T11:05:09.000000Z 01332c0957f952b76c01e7c7ebd112f0 2010-09-10T18:46:23.747988Z 4076 @@ -307,7 +307,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z 6bf31c0491d87fff1481a91519f66363 2009-11-15T15:22:55.021661Z 3064 @@ -341,7 +341,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z cd405a055651d29541f2ebcf4e22f8dc 2007-03-15T22:11:02.843262Z 337 @@ -375,7 +375,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z da42817b3f290549a03ada82a93dc5d0 2007-12-07T10:26:07.864320Z 955 @@ -409,7 +409,7 @@ -2010-09-23T14:37:44.467732Z +2011-03-03T11:05:09.000000Z 622826f16c01373c631876eb1e480a65 2010-07-24T00:19:32.307471Z 3860 @@ -443,7 +443,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 90ec955317994a58df9a5a7f85b810e7 2009-12-25T17:13:58.090736Z 3240 @@ -471,13 +471,81 @@ 3856 +issue.rb +file + + + + +2011-03-03T11:40:18.000000Z +de5e44263227d075bddb23d8f478e24d +2011-02-27T13:34:41.060565Z +4954 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +32300 + +member_role.rb +file + + + + +2011-03-03T11:05:09.000000Z +95caba31fc55fea2d5ff257e70cf14b2 +2009-12-26T16:14:55.591181Z +3250 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2011 + time_entry_activity_custom_field.rb file -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z d5549b2847a255d4bdd7185a670988b5 2009-10-21T22:35:03.091600Z 2952 @@ -505,81 +573,13 @@ 896 -member_role.rb -file - - - - -2010-09-23T14:37:44.475780Z -95caba31fc55fea2d5ff257e70cf14b2 -2009-12-26T16:14:55.591181Z -3250 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2011 - -issue.rb -file - - - - -2010-11-19T13:04:46.956816Z -35d32fdd4b71df26207f71005d93580e -2010-11-12T11:34:53.754717Z -4394 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -32352 - issue_priority.rb file -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 028b9a9be35e74573921f9865f953439 2009-12-25T17:13:58.090736Z 3240 @@ -613,7 +613,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z 50c2305c38ffecfb2138cd437e1c255c 2009-12-13T14:26:54.396245Z 3169 @@ -641,13 +641,47 @@ 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 -2010-11-19T13:04:46.956816Z +2011-03-03T11:05:09.000000Z 3cac6a9c934a472fcbdf99cd00e5bfbb 2010-10-27T16:27:06.240747Z 4296 @@ -675,81 +709,13 @@ 4480 -watcher.rb -file - - - - -2010-09-23T14:37:44.491776Z -c72443f206052fafae720378fba40163 -2009-12-13T12:39:22.716082Z -3167 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2093 - -wiki_page.rb -file - - - - -2010-11-19T13:04:46.956816Z -a45da72d99c7bc05ce93eb86205942e5 -2010-10-27T16:27:06.240747Z -4296 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -6720 - enabled_module.rb file -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 56631baa5560f63cbb213855761c8fcc 2009-10-25T10:31:01.135799Z 2970 @@ -777,13 +743,47 @@ 1296 +wiki_page.rb +file + + + + +2011-03-03T11:40:18.000000Z +f95a3be2b4090d0bd5b7d74b9e1d0a7c +2011-02-27T12:35:31.414622Z +4952 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +6539 + comment.rb file -2010-09-23T14:37:44.467732Z +2011-03-03T11:05:09.000000Z 0ca314834c39ddc12f2993caf5722e79 2007-04-25T15:06:20.062636Z 479 @@ -817,7 +817,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z a6804cb0c0abc6de72a184e7384ed36d 2009-05-17T09:55:13.601447Z 2749 @@ -851,10 +851,10 @@ -2010-11-19T13:04:46.956816Z -ab1aeac4c9dd4c6ff846a281927b515a -2010-11-07T15:38:51.908839Z -4387 +2011-03-03T11:40:18.000000Z +886a34f5ef28f29a9eadb6e24dee89d6 +2011-02-20T13:03:32.835478Z +4888 jplang has-props @@ -877,7 +877,7 @@ -26148 +26359 member.rb file @@ -885,7 +885,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z 84d28844bbac90dab2c56a27ed58db18 2010-08-09T05:10:00.803890Z 3929 @@ -919,7 +919,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 60dadf29c4da2a4e97f463a647b8e98d 2009-10-21T22:34:22.740755Z 2945 @@ -953,10 +953,10 @@ -2010-11-19T13:04:46.956816Z -1c4b2494e527ab830998b06f67b18f52 -2010-11-06T13:23:23.456511Z -4373 +2011-03-03T11:05:09.000000Z +f7340d6a500dabc6fa0aae801539d5e5 +2011-01-23T10:22:00.456857Z +4752 jplang has-props @@ -979,7 +979,41 @@ -18490 +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 @@ -987,7 +1021,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z 4561dfcb12b3fa066a9516c59a9eef94 2010-04-30T12:19:51.238583Z 3709 @@ -1015,47 +1049,13 @@ 4028 -journal.rb -file - - - - -2010-09-24T12:48:25.923798Z -f3797cd6a4b7e4d256aba15e317e98b1 -2010-09-05T22:57:20.669640Z -4062 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -3214 - user_custom_field.rb file -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 47067c42f4d6607335adf75d11c3323b 2007-03-12T17:59:02.654744Z 333 @@ -1089,7 +1089,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 7dbc4f88d9fcd8f1057ea6d5982a1099 2008-07-22T18:52:00.008047Z 1689 @@ -1123,11 +1123,11 @@ -2010-09-23T14:37:44.467732Z -48b90644181e44606c63f82c3655baa1 -2010-04-16T15:33:49.924704Z -3672 -edavis10 +2011-03-03T11:05:09.000000Z +a81e0b41100d375e6327075ab1f59242 +2010-12-31T15:30:50.544770Z +4599 +jplang has-props @@ -1149,7 +1149,7 @@ -4344 +4287 setting.rb file @@ -1157,11 +1157,11 @@ -2010-09-23T14:37:44.487730Z -5a0ad520fc95e7fefd2c6e6a1c9c3e76 -2010-02-12T22:08:02.981984Z -3417 -edavis10 +2011-03-03T11:40:18.000000Z +2815413f18c2ff6c015f0742ac28710a +2011-02-21T09:41:34.953350Z +4899 +tmaruyama has-props @@ -1183,7 +1183,7 @@ -5164 +5188 user.rb file @@ -1191,11 +1191,11 @@ -2010-11-19T13:04:46.956816Z -de9dd6a174b66d7a7f16a699f1f1698f -2010-10-06T05:08:38.847540Z -4234 -jbbarth +2011-03-03T11:40:18.000000Z +8616fc89354fef549fdfc741600c1118 +2011-02-23T17:27:31.762248Z +4936 +jplang has-props @@ -1217,7 +1217,7 @@ -15699 +19152 auth_source.rb file @@ -1225,11 +1225,11 @@ -2010-09-23T14:37:44.467732Z -837db713425e094779466a392a668679 -2010-05-23T03:16:37.499264Z -3745 -edavis10 +2011-03-03T11:40:18.000000Z +f746a9534698bb8db5abf4bb7c9dd5ef +2011-02-26T13:09:25.657748Z +4950 +jplang has-props @@ -1251,7 +1251,7 @@ -1811 +2013 news_observer.rb file @@ -1259,7 +1259,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z b98015db4679606ee5f8d75e55574745 2009-03-28T00:38:57.780983Z 2637 @@ -1293,10 +1293,10 @@ -2010-09-23T14:37:44.475780Z -66b09263cf7988c661307523991d83d5 -2010-02-06T12:54:13.653502Z -3373 +2011-03-03T11:05:09.000000Z +82f0a68c26f05f4ed6aa94418a447a00 +2011-01-23T16:47:59.732003Z +4759 jplang has-props @@ -1319,7 +1319,7 @@ -3576 +3789 wiki_redirect.rb file @@ -1327,7 +1327,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z 4e4c64bab677a9e081fc1230ff6a3773 2007-09-09T17:05:38.846724Z 720 @@ -1361,10 +1361,10 @@ -2010-09-23T14:37:44.475780Z -c90f5daaa6fe06429b93f2010ba90fa0 -2010-05-01T14:07:36.553776Z -3729 +2011-03-03T11:05:09.000000Z +e79f69fb89a7015471e190050ba97847 +2010-12-04T18:10:02.635321Z +4467 jplang has-props @@ -1387,7 +1387,7 @@ -4550 +4580 document_observer.rb file @@ -1395,7 +1395,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z b76852d33bcfab19bb6c4e3e727da0ed 2009-03-28T00:38:57.780983Z 2637 @@ -1429,11 +1429,11 @@ -2010-09-24T12:48:25.927735Z -7f91847223c06c86cef6696956c67846 -2010-09-10T03:09:11.557425Z -4073 -edavis10 +2011-03-03T11:05:09.000000Z +9fdcb569734799b2fface5b9c6207856 +2010-12-23T14:58:52.304263Z +4574 +jplang has-props @@ -1455,7 +1455,7 @@ -7741 +7615 issue_priority_custom_field.rb file @@ -1463,7 +1463,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z 478dceec50480a17a7f2c321fc59e794 2009-10-21T22:34:22.740755Z 2945 @@ -1497,10 +1497,10 @@ -2010-09-23T14:37:44.467732Z -9927f674ea1f10f785af7adfd11e6f83 -2009-12-13T12:39:22.716082Z -3167 +2011-03-03T11:05:09.000000Z +aaa3cd558c500d4db3bb506878e12fc1 +2010-11-27T12:42:11.793330Z +4431 jplang has-props @@ -1523,7 +1523,7 @@ -2140 +2137 attachment.rb file @@ -1531,11 +1531,11 @@ -2010-09-23T14:37:44.467732Z -56226fcf13a57b18ed9faf979b5cf1bc -2010-06-19T03:54:28.250424Z -3774 -edavis10 +2011-03-03T11:05:09.000000Z +527c189ff333588f46ed31db163dcc5c +2011-01-23T10:41:43.320139Z +4755 +jplang has-props @@ -1557,7 +1557,7 @@ -6702 +6756 group_custom_field.rb file @@ -1565,7 +1565,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 2c07c440361210f71d2eb821ce95ce12 2009-09-12T08:36:46.650954Z 2869 @@ -1599,10 +1599,10 @@ -2010-09-23T14:37:44.475780Z -44dc499c4e4dfc3601165f07e6daa4b5 -2010-07-25T10:48:27.199057Z -3881 +2011-03-03T11:40:18.000000Z +4670d7c2c9ef9e23b0812e79c84c02de +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -1625,7 +1625,7 @@ -3447 +3396 time_entry_activity.rb file @@ -1633,7 +1633,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 2508e3911e5bb016a9925502244b358f 2009-12-25T17:13:58.090736Z 3240 @@ -1667,10 +1667,10 @@ -2010-09-23T14:37:44.487730Z -00670b3218d9d2d2a8435809f524827f -2009-12-18T15:41:32.828284Z -3188 +2011-03-03T11:05:09.000000Z +e7d08a30fb7e14fd7486a7d7e04efccb +2010-12-31T15:30:50.544770Z +4599 jplang has-props @@ -1693,7 +1693,7 @@ -2205 +2150 journal_detail.rb file @@ -1701,10 +1701,10 @@ -2010-09-23T14:37:44.475780Z -4b700215d4c3bf72071a45448fa2b0e3 -2007-04-24T18:26:42.003879Z -478 +2011-03-03T11:40:18.000000Z +5f341c076b3e061541111187994969c8 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -1727,7 +1727,7 @@ -1028 +864 group.rb file @@ -1735,10 +1735,10 @@ -2010-09-23T14:37:44.471831Z -7fa34bcff98b6a84bbe125d949af18af -2009-09-12T08:36:46.650954Z -2869 +2011-03-03T11:05:09.000000Z +a6be23c5316bf4e17cd5601624202b18 +2010-11-27T14:46:51.426568Z +4437 jplang has-props @@ -1761,7 +1761,7 @@ -1884 +1918 issue_observer.rb file @@ -1769,7 +1769,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z d4026d660fcb2601834d26268468aec2 2009-03-28T00:38:57.780983Z 2637 @@ -1803,11 +1803,11 @@ -2010-09-24T11:56:52.912062Z -434403a24695ff195df946e1db456ca7 -2010-08-08T20:26:33.212059Z -3928 -jbbarth +2011-03-03T11:40:18.000000Z +949462e61d78ec8bd5afc1af77363985 +2011-02-28T12:09:32.515358Z +4962 +tmaruyama has-props @@ -1829,7 +1829,7 @@ -7481 +9103 role.rb file @@ -1837,11 +1837,11 @@ -2010-09-23T14:37:44.487730Z -47730c63e98da3fdb40ab8551ee3d509 -2010-02-03T17:47:47.868223Z -3363 -edavis10 +2011-03-03T11:05:09.000000Z +15c62eb20c0904d6061c427984ea5ad6 +2010-12-31T15:30:50.544770Z +4599 +jplang has-props @@ -1863,7 +1863,7 @@ -5143 +5088 project_custom_field.rb file @@ -1871,7 +1871,7 @@ -2010-09-23T14:37:44.479733Z +2011-03-03T11:05:09.000000Z 926ef98901f13ba13688fdc3ab0184fc 2007-03-12T17:59:02.654744Z 333 @@ -1905,10 +1905,10 @@ -2010-09-23T14:37:44.491776Z -5012ec7e38525085a500671f68708ba5 -2010-04-11T12:56:18.077630Z -3632 +2011-03-03T11:05:09.000000Z +c1467b11ffdf01173add19cbdcbecccd +2011-01-10T18:32:04.408692Z +4680 jplang has-props @@ -1931,7 +1931,7 @@ -3031 +3109 custom_value.rb file @@ -1939,7 +1939,7 @@ -2010-11-19T13:04:46.960863Z +2011-03-03T11:05:09.000000Z 6938d61d0f9e1fc190bb1d0e6c05546e 2010-11-07T14:15:01.891476Z 4382 @@ -1973,10 +1973,10 @@ -2010-11-19T13:04:46.960863Z -87ee5ad7f6983a739700f40cff0d65ae -2010-11-14T12:33:14.198318Z -4402 +2011-03-03T11:05:09.000000Z +85527d6304192255d188255b78b10fb5 +2011-01-06T20:36:31.826591Z +4645 jplang has-props @@ -1999,7 +1999,7 @@ -30070 +31594 document_category.rb file @@ -2007,7 +2007,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z aeaf540cf9f940cbec4ddfc984dd6af5 2009-12-25T17:13:58.090736Z 3240 @@ -2041,11 +2041,11 @@ -2010-09-23T14:37:44.475780Z -b1b4aa93c05ff00a28d777ecdd77d66d -2010-02-01T18:57:12.733490Z -3358 -edavis10 +2011-03-03T11:05:09.000000Z +ce0648ce457209d4a582b3076287bf01 +2010-12-12T17:00:52.100205Z +4505 +jplang has-props @@ -2067,7 +2067,7 @@ -1885 +2051 user_preference.rb file @@ -2075,10 +2075,10 @@ -2010-09-23T14:37:44.487730Z -41ea06399352eb7b8c2903357abe1ab0 -2008-07-04T17:58:14.743502Z -1623 +2011-03-03T11:40:18.000000Z +feac9af79af67a78c767bd3def262255 +2011-02-21T09:53:29.844413Z +4900 jplang has-props @@ -2101,5 +2101,5 @@ -1513 +1671 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/attachment.rb.svn-base --- a/app/models/.svn/text-base/attachment.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/attachment.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,7 @@ "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} cattr_accessor :storage_path - @@storage_path = "#{RAILS_ROOT}/files" + @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files" def validate if self.filesize > Setting.attachment_max_size.to_i.kilobytes diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/auth_source.rb.svn-base --- a/app/models/.svn/text-base/auth_source.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/auth_source.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AuthSource < ActiveRecord::Base + include Redmine::Ciphering + has_many :users validates_presence_of :name @@ -31,6 +33,14 @@ def auth_method_name "Abstract" end + + def account_password + read_ciphered_attribute(:account_password) + end + + def account_password=(arg) + write_ciphered_attribute(:account_password, arg) + end def allow_password_changes? self.class.allow_password_changes? diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/auth_source_ldap.rb.svn-base --- a/app/models/.svn/text-base/auth_source_ldap.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/auth_source_ldap.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -20,8 +20,8 @@ class AuthSourceLdap < AuthSource validates_presence_of :host, :port, :attr_login - validates_length_of :name, :host, :account_password, :maximum => 60, :allow_nil => true - validates_length_of :account, :base_dn, :maximum => 255, :allow_nil => true + validates_length_of :name, :host, :maximum => 60, :allow_nil => true + validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_nil => true validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true validates_numericality_of :port, :only_integer => true diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/board.rb.svn-base --- a/app/models/.svn/text-base/board.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/board.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -18,7 +18,7 @@ class Board < ActiveRecord::Base belongs_to :project has_many :topics, :class_name => 'Message', :conditions => "#{Message.table_name}.parent_id IS NULL", :order => "#{Message.table_name}.created_on DESC" - has_many :messages, :dependent => :delete_all, :order => "#{Message.table_name}.created_on DESC" + has_many :messages, :dependent => :destroy, :order => "#{Message.table_name}.created_on DESC" belongs_to :last_message, :class_name => 'Message', :foreign_key => :last_message_id acts_as_list :scope => :project_id acts_as_watchable diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/changeset.rb.svn-base --- a/app/models/.svn/text-base/changeset.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/changeset.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -23,10 +23,10 @@ has_many :changes, :dependent => :delete_all has_and_belongs_to_many :issues - acts_as_event :title => Proc.new {|o| "#{l(:label_revision)} #{o.revision}" + (o.short_comments.blank? ? '' : (': ' + o.short_comments))}, + acts_as_event :title => Proc.new {|o| "#{l(:label_revision)} #{o.format_identifier}" + (o.short_comments.blank? ? '' : (': ' + o.short_comments))}, :description => :long_comments, :datetime => :committed_on, - :url => Proc.new {|o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :rev => o.revision}} + :url => Proc.new {|o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :rev => o.identifier}} acts_as_searchable :columns => 'comments', :include => {:repository => :project}, @@ -47,20 +47,30 @@ def revision=(r) write_attribute :revision, (r.nil? ? nil : r.to_s) end - - def comments=(comment) - write_attribute(:comments, Changeset.normalize_comments(comment)) + + # Returns the identifier of this changeset; depending on repository backends + def identifier + if repository.class.respond_to? :changeset_identifier + repository.class.changeset_identifier self + else + revision.to_s + end end def committed_on=(date) self.commit_date = date super end + + # Returns the readable identifier + def format_identifier + if repository.class.respond_to? :format_changeset_identifier + repository.class.format_changeset_identifier self + else + identifier + end + end - def committer=(arg) - write_attribute(:committer, self.class.to_utf8(arg.to_s)) - end - def project repository.project end @@ -70,59 +80,51 @@ end def before_create - self.user = repository.find_committer_user(committer) + 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.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)?)? + | + ((\d+)(h|hours?|m|min)) + | + (\d+):(\d+) + | + (\d+([\.,]\d+)?)h? + ) + /x + def scan_comment_for_issue_ids return if comments.blank? # keywords used to reference issues ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip) + 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("|") - return if kw_regexp.blank? referenced_issues = [] - if ref_keywords.delete('*') - # find any issue ID in the comments - target_issue_ids = [] - comments.scan(%r{([\s\(\[,-]|^)#(\d+)(?=[[:punct:]]|\s|<|$)}).each { |m| target_issue_ids << m[1] } - referenced_issues += find_referenced_issues_by_id(target_issue_ids) - end - - comments.scan(Regexp.new("(#{kw_regexp})[\s:]+(([\s,;&]*#?\\d+)+)", Regexp::IGNORECASE)).each do |match| - action = match[0] - target_issue_ids = match[1].scan(/\d+/) - target_issues = find_referenced_issues_by_id(target_issue_ids) - if fix_keywords.include?(action.downcase) && fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id) - # update status of issues - logger.debug "Issues fixed by changeset #{self.revision}: #{issue_ids.join(', ')}." if logger && logger.debug? - target_issues.each do |issue| - # 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 - next if issue.status.is_closed? - csettext = "r#{self.revision}" - if self.scmid && (! (csettext =~ /^r[0-9]+$/)) - csettext = "commit:\"#{self.scmid}\"" - end - journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, csettext)) - issue.status = fix_status - unless Setting.commit_fix_done_ratio.blank? - issue.done_ratio = Setting.commit_fix_done_ratio.to_i - end - Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update, - { :changeset => self, :issue => issue }) - issue.save + 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 + referenced_issues << issue + fix_issue(issue) if fix_keywords.include?(action.to_s.downcase) + log_time(issue, hours) if hours && Setting.commit_logtime_enabled? end end - referenced_issues += target_issues end referenced_issues.uniq! @@ -136,6 +138,14 @@ def long_comments @long_comments || split_comments.last end + + def text_tag + if scmid? + "commit:#{scmid}" + else + "r#{revision}" + end + end # Returns the previous changeset def previous @@ -147,11 +157,6 @@ @next ||= Changeset.find(:first, :conditions => ['id > ? AND repository_id = ?', self.id, self.repository_id], :order => 'id ASC') end - # Strips and reencodes a commit log before insertion into the database - def self.normalize_comments(str) - to_utf8(str.to_s.strip) - end - # Creates a new Change from it's common parameters def create_change(change) Change.create(:changeset => self, @@ -160,16 +165,67 @@ :from_path => change[:from_path], :from_revision => change[:from_revision]) end - + private - # Finds issues that can be referenced by the commit message - # i.e. issues that belong to the repository project, a subproject or a parent project - def find_referenced_issues_by_id(ids) - return [] if ids.compact.empty? - Issue.find_all_by_id(ids, :include => :project).select {|issue| - project == issue.project || project.is_ancestor_of?(issue.project) || project.is_descendant_of?(issue.project) - } + # Finds an issue that can be referenced by the commit message + # i.e. an issue that belong to the repository project, a subproject or a parent project + def find_referenced_issue_by_id(id) + 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) + 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? + issue.done_ratio = Setting.commit_fix_done_ratio.to_i + end + Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update, + { :changeset => self, :issue => issue }) + unless issue.save + logger.warn("Issue ##{issue.id} could not be saved by changeset #{id}: #{issue.errors.full_messages}") if logger + 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) + ) + 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 @@ -179,9 +235,17 @@ return @short_comments, @long_comments end - def self.to_utf8(str) - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii - encoding = Setting.commit_logs_encoding.to_s.strip + public + + # Strips and reencodes a commit log before insertion into the database + def self.normalize_comments(str, encoding) + 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) @@ -189,12 +253,20 @@ # do nothing here end end - # removes invalid UTF8 sequences - begin - Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] - rescue Iconv::InvalidEncoding - # "UTF-8//IGNORE" is not supported on some OS - 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 + else + # removes invalid UTF8 sequences + begin + str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] + rescue Iconv::InvalidEncoding + # "UTF-8//IGNORE" is not supported on some OS + end end + str end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/custom_field.rb.svn-base --- a/app/models/.svn/text-base/custom_field.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/custom_field.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -23,7 +23,6 @@ validates_presence_of :name, :field_format validates_uniqueness_of :name, :scope => :type validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\.\'\-]*$/i validates_inclusion_of :field_format, :in => Redmine::CustomFieldFormat.available_formats def initialize(attributes = nil) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/document.rb.svn-base --- a/app/models/.svn/text-base/document.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/document.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -29,6 +29,9 @@ 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) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_documents, project) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/group.rb.svn-base --- a/app/models/.svn/text-base/group.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/group.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -31,6 +31,7 @@ def user_added(user) members.each do |member| + next if member.project.nil? user_member = Member.find_by_project_id_and_user_id(member.project_id, user.id) || Member.new(:project_id => member.project_id, :user_id => user.id) member.member_roles.each do |member_role| user_member.member_roles << MemberRole.new(:role => member_role.role, :inherited_from => member_role.id) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/issue.rb.svn-base --- a/app/models/.svn/text-base/issue.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/issue.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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,6 +16,8 @@ # 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' @@ -32,7 +34,7 @@ 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' + acts_as_nested_set :scope => 'root_id', :dependent => :destroy acts_as_attachable :after_remove => :attachment_removed acts_as_customizable acts_as_watchable @@ -68,8 +70,7 @@ :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"] named_scope :for_gantt, lambda { { - :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version], - :order => "#{Issue.table_name}.due_date ASC, #{Issue.table_name}.start_date ASC, #{Issue.table_name}.id ASC" + :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version] } } @@ -88,7 +89,6 @@ before_create :default_assign 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 :destroy_children after_destroy :update_parent_attributes # Returns true if usr or current user is allowed to view the issue @@ -215,30 +215,29 @@ write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h) end - SAFE_ATTRIBUTES = %w( - tracker_id - status_id - parent_issue_id - category_id - assigned_to_id - priority_id - fixed_version_id - subject - description - start_date - due_date - done_ratio - estimated_hours - custom_field_values - lock_version - ) unless const_defined?(:SAFE_ATTRIBUTES) + safe_attributes 'tracker_id', + 'status_id', + 'parent_issue_id', + 'category_id', + 'assigned_to_id', + 'priority_id', + 'fixed_version_id', + 'subject', + 'description', + 'start_date', + 'due_date', + 'done_ratio', + 'estimated_hours', + 'custom_field_values', + 'custom_fields', + 'lock_version', + :if => lambda {|issue, user| issue.new_record? || user.allowed_to?(:edit_issues, issue.project) } - SAFE_ATTRIBUTES_ON_TRANSITION = %w( - status_id - assigned_to_id - fixed_version_id - done_ratio - ) unless const_defined?(:SAFE_ATTRIBUTES_ON_TRANSITION) + safe_attributes 'status_id', + 'assigned_to_id', + 'fixed_version_id', + 'done_ratio', + :if => lambda {|issue, user| issue.new_statuses_allowed_to(user).any? } # Safely sets attributes # Should be called from controllers instead of #attributes= @@ -249,13 +248,8 @@ return unless attrs.is_a?(Hash) # User can change issue attributes only if he has :edit permission or if a workflow transition is allowed - if new_record? || user.allowed_to?(:edit_issues, project) - attrs = attrs.reject {|k,v| !SAFE_ATTRIBUTES.include?(k)} - elsif new_statuses_allowed_to(user).any? - attrs = attrs.reject {|k,v| !SAFE_ATTRIBUTES_ON_TRANSITION.include?(k)} - else - return - end + attrs = delete_unsafe_attributes(attrs, user) + return if attrs.empty? # Tracker must be set before since new_statuses_allowed_to depends on it. if t = attrs.delete('tracker_id') @@ -276,7 +270,7 @@ if !user.allowed_to?(:manage_subtasks, project) attrs.delete('parent_issue_id') elsif !attrs['parent_issue_id'].blank? - attrs.delete('parent_issue_id') unless Issue.visible(user).exists?(attrs['parent_issue_id']) + attrs.delete('parent_issue_id') unless Issue.visible(user).exists?(attrs['parent_issue_id'].to_i) end end @@ -428,7 +422,12 @@ # 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(user.roles_for_project(project), tracker) + statuses = status.find_new_statuses_allowed_to( + user.roles_for_project(project), + tracker, + author == user, + assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id + ) statuses << status unless statuses.empty? statuses << IssueStatus.default if include_default statuses = statuses.uniq.sort @@ -461,11 +460,14 @@ (relations_from + relations_to).sort end - def all_dependent_issues + def all_dependent_issues(except=nil) + except ||= self dependencies = [] relations_from.each do |relation| - dependencies << relation.issue_to - dependencies += relation.issue_to.all_dependent_issues + if relation.issue_to && relation.issue_to != except + dependencies << relation.issue_to + dependencies += relation.issue_to.all_dependent_issues(except) + end end dependencies end @@ -760,14 +762,6 @@ end end - def destroy_children - unless leaf? - children.each do |child| - child.destroy - end - 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) @@ -835,7 +829,7 @@ def create_journal if @current_journal # attributes changes - (Issue.column_names - %w(id description root_id lft rgt lock_version created_on updated_on)).each {|c| + (Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c| @current_journal.details << JournalDetail.new(:property => 'attr', :prop_key => c, :old_value => @issue_before_change.send(c), diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/issue_relation.rb.svn-base --- a/app/models/.svn/text-base/issue_relation.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/issue_relation.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -84,14 +84,15 @@ def set_issue_to_dates soonest_start = self.successor_soonest_start - if soonest_start + if soonest_start && issue_to issue_to.reschedule_after(soonest_start) end end def successor_soonest_start - return nil unless (TYPE_PRECEDES == self.relation_type) && (issue_from.start_date || issue_from.due_date) - (issue_from.due_date || issue_from.start_date) + 1 + delay + if (TYPE_PRECEDES == self.relation_type) && delay && issue_from && (issue_from.start_date || issue_from.due_date) + (issue_from.due_date || issue_from.start_date) + 1 + delay + end end def <=>(relation) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/issue_status.rb.svn-base --- a/app/models/.svn/text-base/issue_status.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/issue_status.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -25,7 +25,6 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\'\-]*$/i validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true def after_save @@ -51,10 +50,16 @@ # Returns an array of all statuses the given role can switch to # Uses association cache when called more than one time - def new_statuses_allowed_to(roles, tracker) + def new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker role_ids = roles.collect(&:id) - new_statuses = workflows.select {|w| role_ids.include?(w.role_id) && w.tracker_id == tracker.id}.collect{|w| w.new_status}.compact.sort + transitions = workflows.select do |w| + role_ids.include?(w.role_id) && + w.tracker_id == tracker.id && + (author || !w.author) && + (assignee || !w.assignee) + end + transitions.collect{|w| w.new_status}.compact.sort else [] end @@ -62,24 +67,19 @@ # Same thing as above but uses a database query # More efficient than the previous method if called just once - def find_new_statuses_allowed_to(roles, tracker) + def find_new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker + conditions = {:role_id => roles.collect(&:id), :tracker_id => tracker.id} + conditions[:author] = false unless author + conditions[:assignee] = false unless assignee + workflows.find(:all, :include => :new_status, - :conditions => { :role_id => roles.collect(&:id), - :tracker_id => tracker.id}).collect{ |w| w.new_status }.compact.sort + :conditions => conditions).collect{|w| w.new_status}.compact.sort else [] end end - - def new_status_allowed_to?(status, roles, tracker) - if status && roles && tracker - !workflows.find(:first, :conditions => {:new_status_id => status.id, :role_id => roles.collect(&:id), :tracker_id => tracker.id}).nil? - else - false - end - end def <=>(status) position <=> status.position diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/journal_detail.rb.svn-base --- a/app/models/.svn/text-base/journal_detail.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/journal_detail.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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,9 +17,4 @@ class JournalDetail < ActiveRecord::Base belongs_to :journal - - def before_save - self.value = value[0..254] if value && value.is_a?(String) - self.old_value = old_value[0..254] if old_value && old_value.is_a?(String) - end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/mail_handler.rb.svn-base --- a/app/models/.svn/text-base/mail_handler.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/mail_handler.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -100,7 +100,7 @@ elsif m = email.subject.match(MESSAGE_REPLY_SUBJECT_RE) receive_message_reply(m[1].to_i) else - receive_issue + dispatch_to_default end rescue ActiveRecord::RecordInvalid => e # TODO: send a email to the user @@ -113,6 +113,10 @@ logger.error "MailHandler: unauthorized attempt from #{user}" if logger false end + + def dispatch_to_default + receive_issue + end # Creates a new issue def receive_issue @@ -148,6 +152,9 @@ raise UnauthorizedAction unless user.allowed_to?(:add_issue_notes, issue.project) || user.allowed_to?(:edit_issues, issue.project) end + # ignore CLI-supplied defaults for new issues + @@handler_options[:issue].clear + journal = issue.init_journal(user, cleaned_up_text_body) issue.safe_attributes = issue_attributes_from_keywords(issue) issue.safe_attributes = {'custom_field_values' => custom_field_values_from_keywords(issue)} @@ -232,8 +239,8 @@ def extract_keyword!(text, attr, format=nil) keys = [attr.to_s.humanize] if attr.is_a?(Symbol) - keys << l("field_#{attr}", :default => '', :locale => user.language) if user - keys << l("field_#{attr}", :default => '', :locale => Setting.default_language) + keys << l("field_#{attr}", :default => '', :locale => user.language) if user && user.language.present? + keys << l("field_#{attr}", :default => '', :locale => Setting.default_language) if Setting.default_language.present? end keys.reject! {|k| k.blank?} keys.collect! {|k| Regexp.escape(k)} @@ -256,8 +263,8 @@ 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) - { - 'tracker_id' => ((k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id)) || issue.project.trackers.find(:first).try(:id), + 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), 'priority_id' => (k = get_keyword(:priority)) && IssuePriority.find_by_name(k).try(:id), 'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.find_by_name(k).try(:id), @@ -268,6 +275,12 @@ '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 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/mailer.rb.svn-base --- a/app/models/.svn/text-base/mailer.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/mailer.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -296,7 +296,7 @@ if raise_errors raise e elsif mylogger - mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/email.yml." + mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/configuration.yml." end ensure self.class.raise_delivery_errors = raise_errors diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/message.rb.svn-base --- a/app/models/.svn/text-base/message.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/message.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -42,6 +42,9 @@ 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) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/news.rb.svn-base --- a/app/models/.svn/text-base/news.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/news.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -29,6 +29,11 @@ acts_as_activity_provider :find_options => {:include => [:project, :author]}, :author_key => :author_id + named_scope :visible, lambda {|*args| { + :include => :project, + :conditions => Project.allowed_to_condition(args.first || User.current, :view_news) + }} + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_news, project) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/project.rb.svn-base --- a/app/models/.svn/text-base/project.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/project.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Project < ActiveRecord::Base + include Redmine::SafeAttributes + # Project statuses STATUS_ACTIVE = 1 STATUS_ARCHIVED = 9 @@ -64,7 +66,7 @@ :url => Proc.new {|o| {:controller => 'projects', :action => 'show', :id => o}}, :author => nil - attr_protected :status, :enabled_module_names + attr_protected :status validates_presence_of :name, :identifier validates_uniqueness_of :identifier @@ -84,6 +86,24 @@ named_scope :all_public, { :conditions => { :is_public => true } } named_scope :visible, lambda { { :conditions => Project.visible_by(User.current) } } + def initialize(attributes = nil) + super + + initialized = (attributes || {}).stringify_keys + if !initialized.key?('identifier') && Setting.sequential_project_identifiers? + self.identifier = Project.next_identifier + end + if !initialized.key?('is_public') + self.is_public = Setting.default_projects_public? + end + if !initialized.key?('enabled_module_names') + self.enabled_module_names = Setting.default_projects_modules + end + if !initialized.key?('trackers') && !initialized.key?('tracker_ids') + self.trackers = Tracker.all + end + end + def identifier=(identifier) super unless identifier_frozen? end @@ -431,24 +451,20 @@ # The earliest start date of a project, based on it's issues and versions def start_date - if module_enabled?(:issue_tracking) - [ - issues.minimum('start_date'), - shared_versions.collect(&:effective_date), - shared_versions.collect {|v| v.fixed_issues.minimum('start_date')} - ].flatten.compact.min - end + [ + issues.minimum('start_date'), + shared_versions.collect(&:effective_date), + shared_versions.collect(&:start_date) + ].flatten.compact.min end # The latest due date of an issue or version def due_date - if module_enabled?(:issue_tracking) - [ - issues.maximum('due_date'), - shared_versions.collect(&:effective_date), - shared_versions.collect {|v| v.fixed_issues.maximum('due_date')} - ].flatten.compact.max - end + [ + issues.maximum('due_date'), + shared_versions.collect(&:effective_date), + shared_versions.collect {|v| v.fixed_issues.maximum('due_date')} + ].flatten.compact.max end def overdue? @@ -492,7 +508,7 @@ def enabled_module_names=(module_names) if module_names && module_names.is_a?(Array) - module_names = module_names.collect(&:to_s) + 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 @@ -501,7 +517,25 @@ enabled_modules.clear end end + + # Returns an array of the enabled modules names + def enabled_module_names + enabled_modules.collect(&:name) + end + + safe_attributes 'name', + 'description', + 'homepage', + 'is_public', + 'identifier', + 'custom_field_values', + 'custom_fields', + 'tracker_ids', + 'issue_custom_field_ids' + safe_attributes 'enabled_module_names', + :if => lambda {|project, user| project.new_record? || user.allowed_to?(:select_project_modules, project) } + # Returns an array of projects that are in this project's hierarchy # # Example: parents, children, siblings @@ -669,12 +703,20 @@ end self.issues << new_issue - issues_map[issue.id] = new_issue + if new_issue.new_record? + logger.info "Project#copy_issues: issue ##{issue.id} could not be copied: #{new_issue.errors.full_messages}" if logger && logger.info + else + issues_map[issue.id] = new_issue unless new_issue.new_record? + end end # Relations after in case issues related each other project.issues.each do |issue| new_issue = issues_map[issue.id] + unless new_issue + # Issue was not copied + next + end # Relations issue.relations_from.each do |source_relation| @@ -701,7 +743,12 @@ # Copies members from +project+ def copy_members(project) - project.memberships.each do |member| + # Copy users first, then groups to handle members with inherited and given roles + members_to_copy = [] + members_to_copy += project.memberships.select {|m| m.principal.is_a?(User)} + members_to_copy += project.memberships.select {|m| !m.principal.is_a?(User)} + + members_to_copy.each do |member| new_member = Member.new new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on") # only copy non inherited roles diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/query.rb.svn-base --- a/app/models/.svn/text-base/query.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/query.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -187,10 +187,18 @@ if project user_values += project.users.sort.collect{|s| [s.name, s.id.to_s] } else - project_ids = Project.all(:conditions => Project.visible_by(User.current)).collect(&:id) - if project_ids.any? - # members of the user's projects - user_values += User.active.find(:all, :conditions => ["#{User.table_name}.id IN (SELECT DISTINCT user_id FROM members WHERE project_id IN (?))", project_ids]).sort.collect{|s| [s.name, s.id.to_s] } + all_projects = Project.visible.all + 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| + prefix = (level > 0 ? ('--' * level + ' ') : '') + project_values << ["#{prefix}#{p.name}", p.id.to_s] + end + @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} unless project_values.empty? end end @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty? @@ -225,12 +233,6 @@ @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => system_shared_versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } end add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true})) - # project filter - project_values = Project.all(:conditions => Project.visible_by(User.current), :order => 'lft').map do |p| - pre = (p.level > 0 ? ('--' * p.level + ' ') : '') - ["#{pre}#{p.name}",p.id.to_s] - end - @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} end @available_filters end @@ -376,15 +378,15 @@ # Returns true if the query is a grouped query def grouped? - !group_by.blank? + !group_by_column.nil? end def group_by_column - groupable_columns.detect {|c| c.name.to_s == group_by} + groupable_columns.detect {|c| c.groupable && c.name.to_s == group_by} end def group_by_statement - group_by_column.groupable + group_by_column.try(:groupable) end def project_statement @@ -564,9 +566,19 @@ sql = '' case operator when "=" - sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + if value.any? + sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + else + # IN an empty set + sql = "1=0" + end when "!" - sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + if value.any? + sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + else + # NOT IN an empty set + sql = "1=1" + end when "!*" sql = "#{db_table}.#{db_field} IS NULL" sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/repository.rb.svn-base --- a/app/models/.svn/text-base/repository.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/repository.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,8 @@ # 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 @@ -24,29 +26,43 @@ # 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) } - + # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) end - + # Removes leading and trailing whitespace 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 + + def scm_adapter + self.class.scm_adapter_class + end def scm - @scm ||= self.scm_adapter.new url, root_url, login, password + @scm ||= self.scm_adapter.new(url, root_url, + login, password, path_encoding) update_attribute(:root_url, @scm.root_url) if root_url.blank? @scm end - + def scm_name self.class.scm_name end - + def supports_cat? scm.supports_cat? end @@ -86,17 +102,25 @@ def diff(path, rev, rev_to) scm.diff(path, rev, rev_to) end - + + def diff_format_revisions(cs, cs_to, sep=':') + text = "" + text << cs_to.format_identifier + sep if cs_to + text << cs.format_identifier if cs + text + end + # Returns a path relative to the url of the repository def relative_path(path) path end - + # 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 + '%'])) end - + def latest_changeset @latest_changeset ||= changesets.find(:first) end @@ -165,18 +189,27 @@ user end end - + + def repo_log_encoding + encoding = log_encoding.to_s.strip + encoding.blank? ? 'UTF-8' : encoding + end + # Fetches new changesets for all repositories of active projects # Can be called periodically by an external script # eg. ruby script/runner "Repository.fetch_changesets" def self.fetch_changesets Project.active.has_module(:repository).find(:all, :include => :repository).each do |project| if project.repository - project.repository.fetch_changesets + begin + project.repository.fetch_changesets + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during fetching changesets: #{e.message}" + end end end end - + # scan changeset comments to find related and fixed issues for all repositories def self.scan_changesets_for_issue_ids find(:all).each(&:scan_changesets_for_issue_ids) @@ -189,16 +222,50 @@ def self.available_scm subclasses.collect {|klass| [klass.scm_name, klass.name]} end - + def self.factory(klass_name, *args) klass = "Repository::#{klass_name}".constantize klass.new(*args) rescue nil end - + + def self.scm_adapter_class + nil + end + + def self.scm_command + ret = "" + begin + ret = self.scm_adapter_class.client_command if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get command: #{e.message}" + end + ret + end + + def self.scm_version_string + ret = "" + begin + ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get version string: #{e.message}" + end + ret + end + + 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 + logger.error "scm: error during get scm available: #{e.message}" + end + ret + end + private - + def before_save # Strips url and root_url url.strip! diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/role.rb.svn-base --- a/app/models/.svn/text-base/role.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/role.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,6 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\'\-]*$/i def permissions read_attribute(:permissions) || [] diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/setting.rb.svn-base --- a/app/models/.svn/text-base/setting.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/setting.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -65,6 +65,7 @@ UTF-16LE EUC-JP Shift_JIS + CP932 GB18030 GBK ISCII91 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/time_entry.rb.svn-base --- a/app/models/.svn/text-base/time_entry.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/time_entry.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -66,6 +66,9 @@ # these attributes make time aggregations easier def spent_on=(date) super + if spent_on.is_a?(Time) + self.spent_on = spent_on.to_date + end self.tyear = spent_on ? spent_on.year : nil 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 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/tracker.rb.svn-base --- a/app/models/.svn/text-base/tracker.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/tracker.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -31,7 +31,6 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\'\-]*$/i def to_s; name end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/user.rb.svn-base --- a/app/models/.svn/text-base/user.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/user.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -18,7 +18,8 @@ require "digest/sha1" class User < Principal - + include Redmine::SafeAttributes + # Account statuses STATUS_ANONYMOUS = 0 STATUS_ACTIVE = 1 @@ -34,21 +35,21 @@ } MAIL_NOTIFICATION_OPTIONS = [ - [:all, :label_user_mail_option_all], - [:selected, :label_user_mail_option_selected], - [:none, :label_user_mail_option_none], - [:only_my_events, :label_user_mail_option_only_my_events], - [:only_assigned, :label_user_mail_option_only_assigned], - [:only_owner, :label_user_mail_option_only_owner] - ] + ['all', :label_user_mail_option_all], + ['selected', :label_user_mail_option_selected], + ['only_my_events', :label_user_mail_option_only_my_events], + ['only_assigned', :label_user_mail_option_only_assigned], + ['only_owner', :label_user_mail_option_only_owner], + ['none', :label_user_mail_option_none] + ] has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)}, :after_remove => Proc.new {|user, group| group.user_removed(user)} has_many :issue_categories, :foreign_key => 'assigned_to_id', :dependent => :nullify has_many :changesets, :dependent => :nullify has_one :preference, :dependent => :destroy, :class_name => 'UserPreference' - has_one :rss_token, :dependent => :destroy, :class_name => 'Token', :conditions => "action='feeds'" - has_one :api_token, :dependent => :destroy, :class_name => 'Token', :conditions => "action='api'" + has_one :rss_token, :class_name => 'Token', :conditions => "action='feeds'" + has_one :api_token, :class_name => 'Token', :conditions => "action='api'" belongs_to :auth_source # Active non-anonymous users scope @@ -59,7 +60,7 @@ attr_accessor :password, :password_confirmation attr_accessor :last_before_login_on # Prevents unauthorized assignments - attr_protected :login, :admin, :password, :password_confirmation, :hashed_password, :group_ids + attr_protected :login, :admin, :password, :password_confirmation, :hashed_password validates_presence_of :login, :firstname, :lastname, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) } validates_uniqueness_of :login, :if => Proc.new { |user| !user.login.blank? }, :case_sensitive => false @@ -67,12 +68,14 @@ # Login must contain lettres, numbers, underscores only validates_format_of :login, :with => /^[a-z0-9_\-@\.]*$/i validates_length_of :login, :maximum => 30 - validates_format_of :firstname, :lastname, :with => /^[\w\s\'\-\.]*$/i validates_length_of :firstname, :lastname, :maximum => 30 validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_nil => true validates_length_of :mail, :maximum => 60, :allow_nil => true validates_confirmation_of :password, :allow_nil => true + validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true + before_destroy :remove_references_before_destroy + def before_create self.mail_notification = Setting.default_notification_option if self.mail_notification.blank? true @@ -80,7 +83,9 @@ def before_save # update hashed_password if password was set - self.hashed_password = User.hash_password(self.password) if self.password && self.auth_source_id.blank? + if self.password && self.auth_source_id.blank? + salt_password(password) + end end def reload(*args) @@ -118,7 +123,7 @@ return nil unless user.auth_source.authenticate(login, password) else # authentication with local password - return nil unless User.hash_password(password) == user.hashed_password + return nil unless user.check_password?(password) end else # user is not yet registered, try to authenticate with available sources @@ -197,13 +202,21 @@ update_attribute(:status, STATUS_LOCKED) end + # Returns true if +clear_password+ is the correct user's password, otherwise false def check_password?(clear_password) if auth_source_id.present? auth_source.authenticate(self.login, clear_password) else - User.hash_password(clear_password) == self.hashed_password + User.hash_password("#{salt}#{User.hash_password clear_password}") == hashed_password end end + + # Generates a random salt and computes hashed_password for +clear_password+ + # The hashed password is stored in the following form: SHA1(salt + SHA1(password)) + def salt_password(clear_password) + self.salt = User.generate_salt + self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}") + end # Does the backend storage allow this user to change their password? def change_password_allowed? @@ -259,12 +272,16 @@ notified_projects_ids end + def valid_notification_options + self.class.valid_notification_options(self) + end + # Only users that belong to more than 1 project can select projects for which they are notified - def valid_notification_options + def self.valid_notification_options(user=nil) # Note that @user.membership.size would fail since AR ignores # :include association option when doing a count - if memberships.length < 1 - MAIL_NOTIFICATION_OPTIONS.delete_if {|option| option.first == :selected} + if user.nil? || user.memberships.length < 1 + MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'} else MAIL_NOTIFICATION_OPTIONS end @@ -390,32 +407,54 @@ def allowed_to_globally?(action, options) allowed_to?(action, nil, options.reverse_merge(:global => true)) end + + safe_attributes 'login', + 'firstname', + 'lastname', + 'mail', + 'mail_notification', + 'language', + 'custom_field_values', + 'custom_fields', + 'identity_url' + + safe_attributes 'status', + 'auth_source_id', + :if => lambda {|user, current_user| current_user.admin?} + + safe_attributes 'group_ids', + :if => lambda {|user, current_user| current_user.admin? && !user.new_record?} # Utility method to help check if a user should be notified about an # event. # # TODO: only supports Issue events currently def notify_about?(object) - case mail_notification.to_sym - when :all + case mail_notification + when 'all' true - when :selected - # Handled by the Project - when :none - false - when :only_my_events + when 'selected' + # user receives notifications for created/assigned issues on unselected projects if object.is_a?(Issue) && (object.author == self || object.assigned_to == self) true else false end - when :only_assigned + when 'none' + false + when 'only_my_events' + if object.is_a?(Issue) && (object.author == self || object.assigned_to == self) + true + else + false + end + when 'only_assigned' if object.is_a?(Issue) && object.assigned_to == self true else false end - when :only_owner + when 'only_owner' if object.is_a?(Issue) && object.author == self true else @@ -444,6 +483,20 @@ end anonymous_user end + + # Salts all existing unsalted passwords + # It changes password storage scheme from SHA1(password) to SHA1(salt + SHA1(password)) + # This method is used in the SaltPasswords migration and is to be kept as is + def self.salt_unsalted_passwords! + transaction do + User.find_each(:conditions => "salt IS NULL OR salt = ''") do |user| + next if user.hashed_password.blank? + salt = User.generate_salt + hashed_password = User.hash_password("#{salt}#{user.hashed_password}") + User.update_all("salt = '#{salt}', hashed_password = '#{hashed_password}'", ["id = ?", user.id] ) + end + end + end protected @@ -455,11 +508,42 @@ end private + + # Removes references that are not handled by associations + # Things that are not deleted are reassociated with the anonymous user + def remove_references_before_destroy + return if self.id.nil? + + substitute = User.anonymous + Attachment.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + Comment.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + Issue.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + Issue.update_all 'assigned_to_id = NULL', ['assigned_to_id = ?', id] + Journal.update_all ['user_id = ?', substitute.id], ['user_id = ?', id] + JournalDetail.update_all ['old_value = ?', substitute.id.to_s], ["property = 'attr' AND prop_key = 'assigned_to_id' AND old_value = ?", id.to_s] + JournalDetail.update_all ['value = ?', substitute.id.to_s], ["property = 'attr' AND prop_key = 'assigned_to_id' AND value = ?", id.to_s] + Message.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + News.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + # Remove private queries and keep public ones + Query.delete_all ['user_id = ? AND is_public = ?', id, false] + Query.update_all ['user_id = ?', substitute.id], ['user_id = ?', id] + TimeEntry.update_all ['user_id = ?', substitute.id], ['user_id = ?', id] + Token.delete_all ['user_id = ?', id] + Watcher.delete_all ['user_id = ?', id] + WikiContent.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + WikiContent::Version.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + end # Return password digest def self.hash_password(clear_password) Digest::SHA1.hexdigest(clear_password || "") end + + # Returns a 128bits random salt as a hex string (32 chars long) + def self.generate_salt + ActiveSupport::SecureRandom.hex(16) + end + end class AnonymousUser < User @@ -480,4 +564,9 @@ def mail; nil end def time_zone; nil end def rss_key; nil end + + # Anonymous user can not be destroyed + def destroy + false + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/user_preference.rb.svn-base --- a/app/models/.svn/text-base/user_preference.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/user_preference.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -51,4 +51,7 @@ def comments_sorting; self[:comments_sorting] end def comments_sorting=(order); self[:comments_sorting]=order end + + def warn_on_leaving_unsaved; self[:warn_on_leaving_unsaved] || '1'; end + def warn_on_leaving_unsaved=(value); self[:warn_on_leaving_unsaved]=value; end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/version.rb.svn-base --- a/app/models/.svn/text-base/version.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/version.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,7 @@ end def start_date - effective_date + @start_date ||= fixed_issues.minimum('start_date') end def due_date @@ -77,8 +77,7 @@ def behind_schedule? if completed_pourcent == 100 return false - elsif due_date && fixed_issues.present? && fixed_issues.minimum('start_date') # TODO: should use #start_date but that method is wrong... - start_date = fixed_issues.minimum('start_date') + elsif due_date && start_date done_date = start_date + ((due_date - start_date+1)* completed_pourcent/100).floor return done_date <= Date.today else diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/wiki.rb.svn-base --- a/app/models/.svn/text-base/wiki.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/wiki.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -46,10 +46,10 @@ def find_page(title, options = {}) title = start_page if title.blank? title = Wiki.titleize(title) - page = pages.find_by_title(title) + page = pages.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) if !page && !(options[:with_redirect] == false) # search for a redirect - redirect = redirects.find_by_title(title) + redirect = redirects.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) page = find_page(redirect.redirects_to, :with_redirect => false) if redirect end page diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/.svn/text-base/wiki_page.rb.svn-base --- a/app/models/.svn/text-base/wiki_page.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/.svn/text-base/wiki_page.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -149,17 +149,13 @@ end end -class WikiDiff - attr_reader :diff, :words, :content_to, :content_from +class WikiDiff < Redmine::Helpers::Diff + attr_reader :content_to, :content_from def initialize(content_to, content_from) @content_to = content_to @content_from = content_from - @words = content_to.text.split(/(\s+)/) - @words = @words.select {|word| word != ' '} - words_from = content_from.text.split(/(\s+)/) - words_from = words_from.select {|word| word != ' '} - @diff = words_from.diff @words + super(content_to.text, content_from.text) end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/attachment.rb --- a/app/models/attachment.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/attachment.rb Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,7 @@ "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} cattr_accessor :storage_path - @@storage_path = "#{RAILS_ROOT}/files" + @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files" def validate if self.filesize > Setting.attachment_max_size.to_i.kilobytes diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/auth_source.rb --- a/app/models/auth_source.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/auth_source.rb Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AuthSource < ActiveRecord::Base + include Redmine::Ciphering + has_many :users validates_presence_of :name @@ -31,6 +33,14 @@ def auth_method_name "Abstract" end + + def account_password + read_ciphered_attribute(:account_password) + end + + def account_password=(arg) + write_ciphered_attribute(:account_password, arg) + end def allow_password_changes? self.class.allow_password_changes? diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/auth_source_ldap.rb --- a/app/models/auth_source_ldap.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/auth_source_ldap.rb Thu Mar 03 12:11:53 2011 +0000 @@ -20,8 +20,8 @@ class AuthSourceLdap < AuthSource validates_presence_of :host, :port, :attr_login - validates_length_of :name, :host, :account_password, :maximum => 60, :allow_nil => true - validates_length_of :account, :base_dn, :maximum => 255, :allow_nil => true + validates_length_of :name, :host, :maximum => 60, :allow_nil => true + validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_nil => true validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true validates_numericality_of :port, :only_integer => true diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/board.rb --- a/app/models/board.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/board.rb Thu Mar 03 12:11:53 2011 +0000 @@ -18,7 +18,7 @@ class Board < ActiveRecord::Base belongs_to :project has_many :topics, :class_name => 'Message', :conditions => "#{Message.table_name}.parent_id IS NULL", :order => "#{Message.table_name}.created_on DESC" - has_many :messages, :dependent => :delete_all, :order => "#{Message.table_name}.created_on DESC" + has_many :messages, :dependent => :destroy, :order => "#{Message.table_name}.created_on DESC" belongs_to :last_message, :class_name => 'Message', :foreign_key => :last_message_id acts_as_list :scope => :project_id acts_as_watchable diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/changeset.rb --- a/app/models/changeset.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/changeset.rb Thu Mar 03 12:11:53 2011 +0000 @@ -23,7 +23,7 @@ has_many :changes, :dependent => :delete_all has_and_belongs_to_many :issues - acts_as_event :title => Proc.new {|o| "#{l(:label_revision)} #{RepositoriesHelper.format_revision(o)}" + (o.short_comments.blank? ? '' : (': ' + o.short_comments))}, + acts_as_event :title => Proc.new {|o| "#{l(:label_revision)} #{o.format_identifier}" + (o.short_comments.blank? ? '' : (': ' + o.short_comments))}, :description => :long_comments, :datetime => :committed_on, :url => Proc.new {|o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :rev => o.identifier}} @@ -48,35 +48,29 @@ write_attribute :revision, (r.nil? ? nil : r.to_s) end - # Returns the identifier of this changeset. - # e.g. revision number for centralized system; hash id for DVCS + # Returns the identifier of this changeset; depending on repository backends def identifier - scmid || revision - end - - # Returns the wiki identifier, "rN" or "commit:ABCDEF" - def wiki_identifier - if scmid # hash-like - "commit:#{scmid}" - else # numeric - "r#{revision}" + if repository.class.respond_to? :changeset_identifier + repository.class.changeset_identifier self + else + revision.to_s end end - private :wiki_identifier - - def comments=(comment) - write_attribute(:comments, Changeset.normalize_comments(comment)) - end def committed_on=(date) self.commit_date = date super end + + # Returns the readable identifier + def format_identifier + if repository.class.respond_to? :format_changeset_identifier + repository.class.format_changeset_identifier self + else + identifier + end + end - def committer=(arg) - write_attribute(:committer, self.class.to_utf8(arg.to_s)) - end - def project repository.project end @@ -86,55 +80,51 @@ end def before_create - self.user = repository.find_committer_user(committer) + 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.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)?)? + | + ((\d+)(h|hours?|m|min)) + | + (\d+):(\d+) + | + (\d+([\.,]\d+)?)h? + ) + /x + def scan_comment_for_issue_ids return if comments.blank? # keywords used to reference issues ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip) + 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("|") - return if kw_regexp.blank? referenced_issues = [] - if ref_keywords.delete('*') - # find any issue ID in the comments - target_issue_ids = [] - comments.scan(%r{([\s\(\[,-]|^)#(\d+)(?=[[:punct:]]|\s|<|$)}).each { |m| target_issue_ids << m[1] } - referenced_issues += find_referenced_issues_by_id(target_issue_ids) - end - - comments.scan(Regexp.new("(#{kw_regexp})[\s:]+(([\s,;&]*#?\\d+)+)", Regexp::IGNORECASE)).each do |match| - action = match[0] - target_issue_ids = match[1].scan(/\d+/) - target_issues = find_referenced_issues_by_id(target_issue_ids) - if fix_keywords.include?(action.downcase) && fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id) - # update status of issues - logger.debug "Issues fixed by changeset #{self.revision}: #{issue_ids.join(', ')}." if logger && logger.debug? - target_issues.each do |issue| - # 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 - next if issue.status.is_closed? - journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, wiki_identifier)) - issue.status = fix_status - unless Setting.commit_fix_done_ratio.blank? - issue.done_ratio = Setting.commit_fix_done_ratio.to_i - end - Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update, - { :changeset => self, :issue => issue }) - issue.save + 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 + referenced_issues << issue + fix_issue(issue) if fix_keywords.include?(action.to_s.downcase) + log_time(issue, hours) if hours && Setting.commit_logtime_enabled? end end - referenced_issues += target_issues end referenced_issues.uniq! @@ -148,6 +138,14 @@ def long_comments @long_comments || split_comments.last end + + def text_tag + if scmid? + "commit:#{scmid}" + else + "r#{revision}" + end + end # Returns the previous changeset def previous @@ -159,11 +157,6 @@ @next ||= Changeset.find(:first, :conditions => ['id > ? AND repository_id = ?', self.id, self.repository_id], :order => 'id ASC') end - # Strips and reencodes a commit log before insertion into the database - def self.normalize_comments(str) - to_utf8(str.to_s.strip) - end - # Creates a new Change from it's common parameters def create_change(change) Change.create(:changeset => self, @@ -172,16 +165,67 @@ :from_path => change[:from_path], :from_revision => change[:from_revision]) end - + private - # Finds issues that can be referenced by the commit message - # i.e. issues that belong to the repository project, a subproject or a parent project - def find_referenced_issues_by_id(ids) - return [] if ids.compact.empty? - Issue.find_all_by_id(ids, :include => :project).select {|issue| - project == issue.project || project.is_ancestor_of?(issue.project) || project.is_descendant_of?(issue.project) - } + # Finds an issue that can be referenced by the commit message + # i.e. an issue that belong to the repository project, a subproject or a parent project + def find_referenced_issue_by_id(id) + 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) + 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? + issue.done_ratio = Setting.commit_fix_done_ratio.to_i + end + Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update, + { :changeset => self, :issue => issue }) + unless issue.save + logger.warn("Issue ##{issue.id} could not be saved by changeset #{id}: #{issue.errors.full_messages}") if logger + 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) + ) + 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 @@ -191,9 +235,17 @@ return @short_comments, @long_comments end - def self.to_utf8(str) - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii - encoding = Setting.commit_logs_encoding.to_s.strip + public + + # Strips and reencodes a commit log before insertion into the database + def self.normalize_comments(str, encoding) + 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) @@ -201,12 +253,20 @@ # do nothing here end end - # removes invalid UTF8 sequences - begin - Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] - rescue Iconv::InvalidEncoding - # "UTF-8//IGNORE" is not supported on some OS - 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 + else + # removes invalid UTF8 sequences + begin + str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] + rescue Iconv::InvalidEncoding + # "UTF-8//IGNORE" is not supported on some OS + end end + str end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/custom_field.rb --- a/app/models/custom_field.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/custom_field.rb Thu Mar 03 12:11:53 2011 +0000 @@ -23,7 +23,6 @@ validates_presence_of :name, :field_format validates_uniqueness_of :name, :scope => :type validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\.\'\-]*$/i validates_inclusion_of :field_format, :in => Redmine::CustomFieldFormat.available_formats def initialize(attributes = nil) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/document.rb --- a/app/models/document.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/document.rb Thu Mar 03 12:11:53 2011 +0000 @@ -29,6 +29,9 @@ 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) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_documents, project) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/group.rb --- a/app/models/group.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/group.rb Thu Mar 03 12:11:53 2011 +0000 @@ -31,6 +31,7 @@ def user_added(user) members.each do |member| + next if member.project.nil? user_member = Member.find_by_project_id_and_user_id(member.project_id, user.id) || Member.new(:project_id => member.project_id, :user_id => user.id) member.member_roles.each do |member_role| user_member.member_roles << MemberRole.new(:role => member_role.role, :inherited_from => member_role.id) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/issue.rb --- a/app/models/issue.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/issue.rb Thu Mar 03 12:11:53 2011 +0000 @@ -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,6 +16,8 @@ # 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' @@ -27,12 +29,12 @@ has_many :journals, :as => :journalized, :dependent => :destroy has_many :time_entries, :dependent => :delete_all - has_and_belongs_to_many :changesets, :order => "#{Changeset.table_name}.id ASC" + 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' + acts_as_nested_set :scope => 'root_id', :dependent => :destroy acts_as_attachable :after_remove => :attachment_removed acts_as_customizable acts_as_watchable @@ -68,8 +70,7 @@ :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"] named_scope :for_gantt, lambda { { - :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version], - :order => "#{Issue.table_name}.due_date ASC, #{Issue.table_name}.start_date ASC, #{Issue.table_name}.id ASC" + :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version] } } @@ -88,7 +89,6 @@ before_create :default_assign 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 :destroy_children after_destroy :update_parent_attributes # Returns true if usr or current user is allowed to view the issue @@ -215,30 +215,29 @@ write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h) end - SAFE_ATTRIBUTES = %w( - tracker_id - status_id - parent_issue_id - category_id - assigned_to_id - priority_id - fixed_version_id - subject - description - start_date - due_date - done_ratio - estimated_hours - custom_field_values - lock_version - ) unless const_defined?(:SAFE_ATTRIBUTES) + safe_attributes 'tracker_id', + 'status_id', + 'parent_issue_id', + 'category_id', + 'assigned_to_id', + 'priority_id', + 'fixed_version_id', + 'subject', + 'description', + 'start_date', + 'due_date', + 'done_ratio', + 'estimated_hours', + 'custom_field_values', + 'custom_fields', + 'lock_version', + :if => lambda {|issue, user| issue.new_record? || user.allowed_to?(:edit_issues, issue.project) } - SAFE_ATTRIBUTES_ON_TRANSITION = %w( - status_id - assigned_to_id - fixed_version_id - done_ratio - ) unless const_defined?(:SAFE_ATTRIBUTES_ON_TRANSITION) + safe_attributes 'status_id', + 'assigned_to_id', + 'fixed_version_id', + 'done_ratio', + :if => lambda {|issue, user| issue.new_statuses_allowed_to(user).any? } # Safely sets attributes # Should be called from controllers instead of #attributes= @@ -249,13 +248,8 @@ return unless attrs.is_a?(Hash) # User can change issue attributes only if he has :edit permission or if a workflow transition is allowed - if new_record? || user.allowed_to?(:edit_issues, project) - attrs = attrs.reject {|k,v| !SAFE_ATTRIBUTES.include?(k)} - elsif new_statuses_allowed_to(user).any? - attrs = attrs.reject {|k,v| !SAFE_ATTRIBUTES_ON_TRANSITION.include?(k)} - else - return - end + attrs = delete_unsafe_attributes(attrs, user) + return if attrs.empty? # Tracker must be set before since new_statuses_allowed_to depends on it. if t = attrs.delete('tracker_id') @@ -276,7 +270,7 @@ if !user.allowed_to?(:manage_subtasks, project) attrs.delete('parent_issue_id') elsif !attrs['parent_issue_id'].blank? - attrs.delete('parent_issue_id') unless Issue.visible(user).exists?(attrs['parent_issue_id']) + attrs.delete('parent_issue_id') unless Issue.visible(user).exists?(attrs['parent_issue_id'].to_i) end end @@ -428,7 +422,12 @@ # 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(user.roles_for_project(project), tracker) + statuses = status.find_new_statuses_allowed_to( + user.roles_for_project(project), + tracker, + author == user, + assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id + ) statuses << status unless statuses.empty? statuses << IssueStatus.default if include_default statuses = statuses.uniq.sort @@ -461,11 +460,14 @@ (relations_from + relations_to).sort end - def all_dependent_issues + def all_dependent_issues(except=nil) + except ||= self dependencies = [] relations_from.each do |relation| - dependencies << relation.issue_to - dependencies += relation.issue_to.all_dependent_issues + if relation.issue_to && relation.issue_to != except + dependencies << relation.issue_to + dependencies += relation.issue_to.all_dependent_issues(except) + end end dependencies end @@ -761,14 +763,6 @@ end end - def destroy_children - unless leaf? - children.each do |child| - child.destroy - end - 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) @@ -836,7 +830,7 @@ def create_journal if @current_journal # attributes changes - (Issue.column_names - %w(id description root_id lft rgt lock_version created_on updated_on)).each {|c| + (Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c| @current_journal.details << JournalDetail.new(:property => 'attr', :prop_key => c, :old_value => @issue_before_change.send(c), diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/issue_relation.rb --- a/app/models/issue_relation.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/issue_relation.rb Thu Mar 03 12:11:53 2011 +0000 @@ -84,14 +84,15 @@ def set_issue_to_dates soonest_start = self.successor_soonest_start - if soonest_start + if soonest_start && issue_to issue_to.reschedule_after(soonest_start) end end def successor_soonest_start - return nil unless (TYPE_PRECEDES == self.relation_type) && (issue_from.start_date || issue_from.due_date) - (issue_from.due_date || issue_from.start_date) + 1 + delay + if (TYPE_PRECEDES == self.relation_type) && delay && issue_from && (issue_from.start_date || issue_from.due_date) + (issue_from.due_date || issue_from.start_date) + 1 + delay + end end def <=>(relation) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/issue_status.rb --- a/app/models/issue_status.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/issue_status.rb Thu Mar 03 12:11:53 2011 +0000 @@ -25,7 +25,6 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\'\-]*$/i validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true def after_save @@ -51,10 +50,16 @@ # Returns an array of all statuses the given role can switch to # Uses association cache when called more than one time - def new_statuses_allowed_to(roles, tracker) + def new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker role_ids = roles.collect(&:id) - new_statuses = workflows.select {|w| role_ids.include?(w.role_id) && w.tracker_id == tracker.id}.collect{|w| w.new_status}.compact.sort + transitions = workflows.select do |w| + role_ids.include?(w.role_id) && + w.tracker_id == tracker.id && + (author || !w.author) && + (assignee || !w.assignee) + end + transitions.collect{|w| w.new_status}.compact.sort else [] end @@ -62,24 +67,19 @@ # Same thing as above but uses a database query # More efficient than the previous method if called just once - def find_new_statuses_allowed_to(roles, tracker) + def find_new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker + conditions = {:role_id => roles.collect(&:id), :tracker_id => tracker.id} + conditions[:author] = false unless author + conditions[:assignee] = false unless assignee + workflows.find(:all, :include => :new_status, - :conditions => { :role_id => roles.collect(&:id), - :tracker_id => tracker.id}).collect{ |w| w.new_status }.compact.sort + :conditions => conditions).collect{|w| w.new_status}.compact.sort else [] end end - - def new_status_allowed_to?(status, roles, tracker) - if status && roles && tracker - !workflows.find(:first, :conditions => {:new_status_id => status.id, :role_id => roles.collect(&:id), :tracker_id => tracker.id}).nil? - else - false - end - end def <=>(status) position <=> status.position diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/journal_detail.rb --- a/app/models/journal_detail.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/journal_detail.rb Thu Mar 03 12:11:53 2011 +0000 @@ -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,9 +17,4 @@ class JournalDetail < ActiveRecord::Base belongs_to :journal - - def before_save - self.value = value[0..254] if value && value.is_a?(String) - self.old_value = old_value[0..254] if old_value && old_value.is_a?(String) - end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/mail_handler.rb --- a/app/models/mail_handler.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/mail_handler.rb Thu Mar 03 12:11:53 2011 +0000 @@ -100,7 +100,7 @@ elsif m = email.subject.match(MESSAGE_REPLY_SUBJECT_RE) receive_message_reply(m[1].to_i) else - receive_issue + dispatch_to_default end rescue ActiveRecord::RecordInvalid => e # TODO: send a email to the user @@ -113,6 +113,10 @@ logger.error "MailHandler: unauthorized attempt from #{user}" if logger false end + + def dispatch_to_default + receive_issue + end # Creates a new issue def receive_issue @@ -148,6 +152,9 @@ raise UnauthorizedAction unless user.allowed_to?(:add_issue_notes, issue.project) || user.allowed_to?(:edit_issues, issue.project) end + # ignore CLI-supplied defaults for new issues + @@handler_options[:issue].clear + journal = issue.init_journal(user, cleaned_up_text_body) issue.safe_attributes = issue_attributes_from_keywords(issue) issue.safe_attributes = {'custom_field_values' => custom_field_values_from_keywords(issue)} @@ -232,8 +239,8 @@ def extract_keyword!(text, attr, format=nil) keys = [attr.to_s.humanize] if attr.is_a?(Symbol) - keys << l("field_#{attr}", :default => '', :locale => user.language) if user - keys << l("field_#{attr}", :default => '', :locale => Setting.default_language) + keys << l("field_#{attr}", :default => '', :locale => user.language) if user && user.language.present? + keys << l("field_#{attr}", :default => '', :locale => Setting.default_language) if Setting.default_language.present? end keys.reject! {|k| k.blank?} keys.collect! {|k| Regexp.escape(k)} @@ -256,8 +263,8 @@ 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) - { - 'tracker_id' => ((k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id)) || issue.project.trackers.find(:first).try(:id), + 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), 'priority_id' => (k = get_keyword(:priority)) && IssuePriority.find_by_name(k).try(:id), 'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.find_by_name(k).try(:id), @@ -268,6 +275,12 @@ '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 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/mailer.rb --- a/app/models/mailer.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/mailer.rb Thu Mar 03 12:11:53 2011 +0000 @@ -296,7 +296,7 @@ if raise_errors raise e elsif mylogger - mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/email.yml." + mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/configuration.yml." end ensure self.class.raise_delivery_errors = raise_errors diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/message.rb --- a/app/models/message.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/message.rb Thu Mar 03 12:11:53 2011 +0000 @@ -42,6 +42,9 @@ 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) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/news.rb --- a/app/models/news.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/news.rb Thu Mar 03 12:11:53 2011 +0000 @@ -29,6 +29,11 @@ acts_as_activity_provider :find_options => {:include => [:project, :author]}, :author_key => :author_id + named_scope :visible, lambda {|*args| { + :include => :project, + :conditions => Project.allowed_to_condition(args.first || User.current, :view_news) + }} + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_news, project) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/project.rb --- a/app/models/project.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/project.rb Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Project < ActiveRecord::Base + include Redmine::SafeAttributes + # Project statuses STATUS_ACTIVE = 1 STATUS_ARCHIVED = 9 @@ -64,7 +66,7 @@ :url => Proc.new {|o| {:controller => 'projects', :action => 'show', :id => o}}, :author => nil - attr_protected :status, :enabled_module_names + attr_protected :status validates_presence_of :name, :identifier validates_uniqueness_of :identifier @@ -85,6 +87,24 @@ named_scope :visible, lambda { { :conditions => Project.visible_by(User.current) } } named_scope :visible_roots, lambda { { :conditions => Project.root_visible_by(User.current) } } + def initialize(attributes = nil) + super + + initialized = (attributes || {}).stringify_keys + if !initialized.key?('identifier') && Setting.sequential_project_identifiers? + self.identifier = Project.next_identifier + end + if !initialized.key?('is_public') + self.is_public = Setting.default_projects_public? + end + if !initialized.key?('enabled_module_names') + self.enabled_module_names = Setting.default_projects_modules + end + if !initialized.key?('trackers') && !initialized.key?('tracker_ids') + self.trackers = Tracker.all + end + end + def identifier=(identifier) super unless identifier_frozen? end @@ -443,24 +463,20 @@ # The earliest start date of a project, based on it's issues and versions def start_date - if module_enabled?(:issue_tracking) - [ - issues.minimum('start_date'), - shared_versions.collect(&:effective_date), - shared_versions.collect {|v| v.fixed_issues.minimum('start_date')} - ].flatten.compact.min - end + [ + issues.minimum('start_date'), + shared_versions.collect(&:effective_date), + shared_versions.collect(&:start_date) + ].flatten.compact.min end # The latest due date of an issue or version def due_date - if module_enabled?(:issue_tracking) - [ - issues.maximum('due_date'), - shared_versions.collect(&:effective_date), - shared_versions.collect {|v| v.fixed_issues.maximum('due_date')} - ].flatten.compact.max - end + [ + issues.maximum('due_date'), + shared_versions.collect(&:effective_date), + shared_versions.collect {|v| v.fixed_issues.maximum('due_date')} + ].flatten.compact.max end def overdue? @@ -504,7 +520,7 @@ def enabled_module_names=(module_names) if module_names && module_names.is_a?(Array) - module_names = module_names.collect(&:to_s) + 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 @@ -513,7 +529,25 @@ enabled_modules.clear end end + + # Returns an array of the enabled modules names + def enabled_module_names + enabled_modules.collect(&:name) + end + + safe_attributes 'name', + 'description', + 'homepage', + 'is_public', + 'identifier', + 'custom_field_values', + 'custom_fields', + 'tracker_ids', + 'issue_custom_field_ids' + safe_attributes 'enabled_module_names', + :if => lambda {|project, user| project.new_record? || user.allowed_to?(:select_project_modules, project) } + # Returns an array of projects that are in this project's hierarchy # # Example: parents, children, siblings @@ -681,12 +715,20 @@ end self.issues << new_issue - issues_map[issue.id] = new_issue + if new_issue.new_record? + logger.info "Project#copy_issues: issue ##{issue.id} could not be copied: #{new_issue.errors.full_messages}" if logger && logger.info + else + issues_map[issue.id] = new_issue unless new_issue.new_record? + end end # Relations after in case issues related each other project.issues.each do |issue| new_issue = issues_map[issue.id] + unless new_issue + # Issue was not copied + next + end # Relations issue.relations_from.each do |source_relation| @@ -713,7 +755,12 @@ # Copies members from +project+ def copy_members(project) - project.memberships.each do |member| + # Copy users first, then groups to handle members with inherited and given roles + members_to_copy = [] + members_to_copy += project.memberships.select {|m| m.principal.is_a?(User)} + members_to_copy += project.memberships.select {|m| !m.principal.is_a?(User)} + + members_to_copy.each do |member| new_member = Member.new new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on") # only copy non inherited roles diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/query.rb --- a/app/models/query.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/query.rb Thu Mar 03 12:11:53 2011 +0000 @@ -187,10 +187,18 @@ if project user_values += project.users.sort.collect{|s| [s.name, s.id.to_s] } else - project_ids = Project.all(:conditions => Project.visible_by(User.current)).collect(&:id) - if project_ids.any? - # members of the user's projects - user_values += User.active.find(:all, :conditions => ["#{User.table_name}.id IN (SELECT DISTINCT user_id FROM members WHERE project_id IN (?))", project_ids]).sort.collect{|s| [s.name, s.id.to_s] } + all_projects = Project.visible.all + 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| + prefix = (level > 0 ? ('--' * level + ' ') : '') + project_values << ["#{prefix}#{p.name}", p.id.to_s] + end + @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} unless project_values.empty? end end @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty? @@ -225,12 +233,6 @@ @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => system_shared_versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } end add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true})) - # project filter - project_values = Project.all(:conditions => Project.visible_by(User.current), :order => 'lft').map do |p| - pre = (p.level > 0 ? ('--' * p.level + ' ') : '') - ["#{pre}#{p.name}",p.id.to_s] - end - @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} end @available_filters end @@ -376,15 +378,15 @@ # Returns true if the query is a grouped query def grouped? - !group_by.blank? + !group_by_column.nil? end def group_by_column - groupable_columns.detect {|c| c.name.to_s == group_by} + groupable_columns.detect {|c| c.groupable && c.name.to_s == group_by} end def group_by_statement - group_by_column.groupable + group_by_column.try(:groupable) end def project_statement @@ -564,9 +566,19 @@ sql = '' case operator when "=" - sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + if value.any? + sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + else + # IN an empty set + sql = "1=0" + end when "!" - sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + if value.any? + sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + else + # NOT IN an empty set + sql = "1=1" + end when "!*" sql = "#{db_table}.#{db_field} IS NULL" sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository.rb --- a/app/models/repository.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository.rb Thu Mar 03 12:11:53 2011 +0000 @@ -16,37 +16,53 @@ # 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}.id DESC" + has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC" has_many :changes, :through => :changesets # 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) } - + # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) end - + # Removes leading and trailing whitespace 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 + + def scm_adapter + self.class.scm_adapter_class + end def scm - @scm ||= self.scm_adapter.new url, root_url, login, password + @scm ||= self.scm_adapter.new(url, root_url, + login, password, path_encoding) update_attribute(:root_url, @scm.root_url) if root_url.blank? @scm end - + def scm_name self.class.scm_name end - + def supports_cat? scm.supports_cat? end @@ -86,20 +102,25 @@ def diff(path, rev, rev_to) scm.diff(path, rev, rev_to) end - + + def diff_format_revisions(cs, cs_to, sep=':') + text = "" + text << cs_to.format_identifier + sep if cs_to + text << cs.format_identifier if cs + text + end + # Returns a path relative to the url of the repository def relative_path(path) path end - + # Finds and returns a revision with a number or the beginning of a hash def find_changeset_by_name(name) - # TODO: is this query efficient enough? can we write as single query? - e = changesets.find(:first, :conditions => ['revision = ? OR scmid = ?', name.to_s, name.to_s]) - return e if e - changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"]) + return nil if name.blank? + changesets.find(:first, :conditions => (name.match(/^\d*$/) ? ["revision = ?", name.to_s] : ["revision LIKE ?", name + '%'])) end - + def latest_changeset @latest_changeset ||= changesets.find(:first) end @@ -109,11 +130,12 @@ 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) else changes.find(:all, :include => {:changeset => :user}, :conditions => ["path = ?", path.with_leading_slash], - :order => "#{Changeset.table_name}.id DESC", + :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC", :limit => limit).collect(&:changeset) end end @@ -167,7 +189,12 @@ user end end - + + def repo_log_encoding + encoding = log_encoding.to_s.strip + encoding.blank? ? 'UTF-8' : encoding + end + # Fetches new changesets for all repositories of active projects # Can be called periodically by an external script # eg. ruby script/runner "Repository.fetch_changesets" @@ -177,12 +204,12 @@ begin project.repository.fetch_changesets rescue Redmine::Scm::Adapters::CommandFailed => e - logger.error "Repository: error during fetching changesets: #{e.message}" + logger.error "scm: error during fetching changesets: #{e.message}" end end end end - + # scan changeset comments to find related and fixed issues for all repositories def self.scan_changesets_for_issue_ids find(:all).each(&:scan_changesets_for_issue_ids) @@ -195,16 +222,50 @@ def self.available_scm subclasses.collect {|klass| [klass.scm_name, klass.name]} end - + def self.factory(klass_name, *args) klass = "Repository::#{klass_name}".constantize klass.new(*args) rescue nil end - + + def self.scm_adapter_class + nil + end + + def self.scm_command + ret = "" + begin + ret = self.scm_adapter_class.client_command if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get command: #{e.message}" + end + ret + end + + def self.scm_version_string + ret = "" + begin + ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get version string: #{e.message}" + end + ret + end + + 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 + logger.error "scm: error during get scm available: #{e.message}" + end + ret + end + private - + def before_save # Strips url and root_url url.strip! diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/all-wcprops --- a/app/models/repository/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,47 +1,47 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/3394/trunk/app/models/repository +/svn/!svn/ver/4982/trunk/app/models/repository END subversion.rb K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/3360/trunk/app/models/repository/subversion.rb +/svn/!svn/ver/4962/trunk/app/models/repository/subversion.rb END bazaar.rb K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/1537/trunk/app/models/repository/bazaar.rb +/svn/!svn/ver/4982/trunk/app/models/repository/bazaar.rb END git.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/3394/trunk/app/models/repository/git.rb +/svn/!svn/ver/4975/trunk/app/models/repository/git.rb END mercurial.rb K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/3360/trunk/app/models/repository/mercurial.rb +/svn/!svn/ver/4975/trunk/app/models/repository/mercurial.rb END filesystem.rb K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/1508/trunk/app/models/repository/filesystem.rb +/svn/!svn/ver/4975/trunk/app/models/repository/filesystem.rb END cvs.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/1768/trunk/app/models/repository/cvs.rb +/svn/!svn/ver/4982/trunk/app/models/repository/cvs.rb END darcs.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3360/trunk/app/models/repository/darcs.rb +/svn/!svn/ver/4982/trunk/app/models/repository/darcs.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/entries --- a/app/models/repository/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/models/repository http://redmine.rubyforge.org/svn -2010-02-07T15:17:21.677785Z -3394 -jplang +2011-03-01T10:27:30.170724Z +4982 +tmaruyama @@ -32,11 +32,11 @@ -2010-09-23T14:37:44.487730Z -b02ecaea01c5990cbde09689be12ec7d -2010-02-02T17:02:32.020293Z -3360 -edavis10 +2011-03-03T11:40:18.000000Z +b9f366b3f38bd42149e09e6ed0ed8755 +2011-02-28T12:09:32.515358Z +4962 +tmaruyama has-props @@ -58,7 +58,7 @@ -3306 +3358 bazaar.rb file @@ -66,11 +66,11 @@ -2010-09-23T14:37:44.483732Z -84591e1c5afa1b74a10954dd521ceb4e -2008-06-14T15:44:36.838876Z -1537 -jplang +2011-03-03T11:40:18.000000Z +d6a230859a110341c0d64865248db51c +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -92,7 +92,7 @@ -3617 +3877 git.rb file @@ -100,11 +100,11 @@ -2010-09-24T11:56:52.924049Z -b3a159a082904eaf5e084eb0ea2a6988 -2010-02-07T15:17:21.677785Z -3394 -jplang +2011-03-03T11:40:18.000000Z +dfce133f28c5c85af0740865903d5320 +2011-03-01T05:14:03.146872Z +4975 +tmaruyama has-props @@ -126,7 +126,7 @@ -2872 +4245 mercurial.rb file @@ -134,11 +134,11 @@ -2010-09-24T11:56:52.932091Z -6ca7d031f8d4d508518892a607462b88 -2010-02-02T17:02:32.020293Z -3360 -edavis10 +2011-03-03T11:40:18.000000Z +d659744391dfa02d54481d4dd8752930 +2011-03-01T05:14:03.146872Z +4975 +tmaruyama has-props @@ -160,7 +160,7 @@ -3505 +4022 filesystem.rb file @@ -168,11 +168,11 @@ -2010-09-23T14:37:44.483732Z -ed75a7df6cfdc54b7059c9bb20c079d3 -2008-06-08T15:40:24.603157Z -1508 -jplang +2011-03-03T11:40:18.000000Z +994276556c2feac05d149117eea01413 +2011-03-01T05:14:03.146872Z +4975 +tmaruyama has-props @@ -194,7 +194,7 @@ -1258 +1451 cvs.rb file @@ -202,11 +202,11 @@ -2010-09-23T14:37:44.483732Z -4bf6afb2a5e03df854a06fb116fc6fd2 -2008-08-26T12:28:15.338708Z -1768 -jplang +2011-03-03T11:40:18.000000Z +5eecf7abe1216489c4d1c2f6a107c36b +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -228,7 +228,7 @@ -6357 +6952 darcs.rb file @@ -236,11 +236,11 @@ -2010-09-23T14:37:44.483732Z -75c2836fd6ba92e0aef7a9cfc249ebb7 -2010-02-02T17:02:32.020293Z -3360 -edavis10 +2011-03-03T11:40:18.000000Z +03bf9128aa09528266cabb76ff0808a9 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -262,5 +262,5 @@ -3566 +3826 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/text-base/bazaar.rb.svn-base --- a/app/models/repository/.svn/text-base/bazaar.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/text-base/bazaar.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -19,16 +19,24 @@ class Repository::Bazaar < Repository attr_protected :root_url - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + 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 + end + + def self.scm_adapter_class Redmine::Scm::Adapters::BazaarAdapter end - + def self.scm_name 'Bazaar' end - + def entries(path=nil, identifier=nil) entries = scm.entries(path, identifier) if entries diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/text-base/cvs.rb.svn-base --- a/app/models/repository/.svn/text-base/cvs.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/text-base/cvs.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -19,16 +19,25 @@ require 'digest/sha1' class Repository::Cvs < Repository - validates_presence_of :url, :root_url + validates_presence_of :url, :root_url, :log_encoding - def scm_adapter + 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 + end + + def self.scm_adapter_class Redmine::Scm::Adapters::CvsAdapter end - + def self.scm_name 'CVS' end - + def entry(path=nil, identifier=nil) rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, rev.nil? ? nil : rev.committed_on) @@ -104,23 +113,28 @@ scm.revisions('', fetch_since, nil, :with_paths => true) do |revision| # only add the change to the database, if it doen't exists. the cvs log # is not exclusive at all. - unless changes.find_by_path_and_revision(scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) - revision + tmp_time = revision.time.clone + unless changes.find_by_path_and_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=>revision.time-time_delta..revision.time+time_delta, + :committed_on=>tmp_time - time_delta .. tmp_time + time_delta, :committer=>revision.author, - :comments=>Changeset.normalize_comments(revision.message) + :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 - latest = changesets.find(:first, :order => 'id DESC') + 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_rev_num}", + :revision => "tmp#{tmp_rev_num}", + :scmid => scmid, :committer => revision.author, - :committed_on => revision.time, + :committed_on => tmp_time, :comments => revision.message) tmp_rev_num += 1 end @@ -144,10 +158,13 @@ end # Renumber new changesets in chronological order - changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset| + changesets.find( + :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 @@ -155,7 +172,9 @@ # 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 - @current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0) + sql = "SELECT revision FROM #{Changeset.table_name} " + sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'" + @current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0) @current_revision_number += 1 end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/text-base/darcs.rb.svn-base --- a/app/models/repository/.svn/text-base/darcs.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/text-base/darcs.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -18,16 +18,24 @@ require 'redmine/scm/adapters/darcs_adapter' class Repository::Darcs < Repository - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + 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 + end + + def self.scm_adapter_class Redmine::Scm::Adapters::DarcsAdapter end - + def self.scm_name 'Darcs' end - + def entry(path=nil, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, patch.nil? ? nil : patch.scmid) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/text-base/filesystem.rb.svn-base --- a/app/models/repository/.svn/text-base/filesystem.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/text-base/filesystem.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -24,14 +24,21 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::FilesystemAdapter end - + def self.scm_name 'Filesystem' end - + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/text-base/git.rb.svn-base --- a/app/models/repository/.svn/text-base/git.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/text-base/git.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -21,14 +21,35 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Path to repository", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::GitAdapter end - + def self.scm_name 'Git' end + def repo_log_encoding + 'UTF-8' + end + + # Returns the identifier for the given git changeset + def self.changeset_identifier(changeset) + changeset.scmid + end + + # Returns the readable identifier for the given git changeset + def self.format_changeset_identifier(changeset) + changeset.revision[0, 8] + end + def branches scm.branches end @@ -37,6 +58,13 @@ scm.tags end + def find_changeset_by_name(name) + return nil if name.nil? || name.empty? + e = changesets.find(:first, :conditions => ['revision = ?', name.to_s]) + return e if e + 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 @@ -62,7 +90,28 @@ revisions.reject!{|r| recent_revisions.include?(r.scmid)} # Save the remaining ones to the database - revisions.each{|r| r.save(self)} unless revisions.nil? + unless revisions.nil? + revisions.each do |rev| + 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 + end + end + end + end end def latest_changesets(path,rev,limit=10) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/text-base/mercurial.rb.svn-base --- a/app/models/repository/.svn/text-base/mercurial.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/text-base/mercurial.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -18,73 +18,101 @@ require 'redmine/scm/adapters/mercurial_adapter' class Repository::Mercurial < Repository + # sort changesets by revision number + has_many :changesets, :order => "#{Changeset.table_name}.id DESC", :foreign_key => 'repository_id' + attr_protected :root_url validates_presence_of :url - def scm_adapter + 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 + end + + def self.scm_adapter_class Redmine::Scm::Adapters::MercurialAdapter end - + def self.scm_name 'Mercurial' end - - def entries(path=nil, identifier=nil) - entries=scm.entries(path, identifier) - if entries - entries.each do |entry| - next unless entry.is_file? - # Set the filesize unless browsing a specific revision - if identifier.nil? - full_path = File.join(root_url, entry.path) - entry.size = File.stat(full_path).size if File.file?(full_path) - end - # Search the DB for the entry's last change - change = changes.find(:first, :conditions => ["path = ?", scm.with_leading_slash(entry.path)], :order => "#{Changeset.table_name}.committed_on DESC") - if change - entry.lastrev.identifier = change.changeset.revision - entry.lastrev.name = change.changeset.revision - entry.lastrev.author = change.changeset.committer - entry.lastrev.revision = change.revision + + def repo_log_encoding + 'UTF-8' + end + + # Returns the readable identifier for the given mercurial changeset + def self.format_changeset_identifier(changeset) + "#{changeset.revision}:#{changeset.scmid}" + end + + # Returns the identifier for the given Mercurial changeset + def self.changeset_identifier(changeset) + changeset.scmid + end + + def branches + nil + end + + def tags + nil + end + + def diff_format_revisions(cs, cs_to, sep=':') + super(cs, cs_to, ' ') + end + + # Finds and returns a revision with a number or the beginning of a hash + def find_changeset_by_name(name) + return nil if name.nil? || name.empty? + if /[^\d]/ =~ name or name.to_s.size > 8 + e = changesets.find(:first, :conditions => ['scmid = ?', name.to_s]) + else + e = changesets.find(:first, :conditions => ['revision = ?', name.to_s]) + end + return e if e + changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"]) # last ditch + end + + # Returns the latest changesets for +path+; sorted by revision number + # Default behavior is to search in cached changesets + 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) + end + end + + def fetch_changesets + scm_rev = scm.info.lastrev.revision.to_i + db_rev = latest_changeset ? latest_changeset.revision.to_i : -1 + return unless db_rev < scm_rev # already up-to-date + + logger.debug "Fetching changesets for repository #{url}" if logger + (db_rev + 1).step(scm_rev, FETCH_AT_ONCE) do |i| + transaction do + scm.each_revision('', i, [i + FETCH_AT_ONCE - 1, scm_rev].min) do |re| + cs = Changeset.create(:repository => self, + :revision => re.revision, + :scmid => re.scmid, + :committer => re.author, + :committed_on => re.time, + :comments => re.message) + re.paths.each { |e| cs.create_change(e) } end end end - entries - end - - def fetch_changesets - scm_info = scm.info - if scm_info - # latest revision found in database - db_revision = latest_changeset ? latest_changeset.revision.to_i : -1 - # latest revision in the repository - latest_revision = scm_info.lastrev - return if latest_revision.nil? - scm_revision = latest_revision.identifier.to_i - if db_revision < scm_revision - logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug? - identifier_from = db_revision + 1 - while (identifier_from <= scm_revision) - # loads changesets by batches of 100 - identifier_to = [identifier_from + 99, scm_revision].min - revisions = scm.revisions('', identifier_from, identifier_to, :with_paths => true) - transaction do - revisions.each do |revision| - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :scmid => revision.scmid, - :committer => revision.author, - :committed_on => revision.time, - :comments => revision.message) - - revision.paths.each do |change| - changeset.create_change(change) - end - end - end unless revisions.nil? - identifier_from = identifier_to + 1 - end - end - end + self end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/.svn/text-base/subversion.rb.svn-base --- a/app/models/repository/.svn/text-base/subversion.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/.svn/text-base/subversion.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -22,14 +22,18 @@ validates_presence_of :url validates_format_of :url, :with => /^(http|https|svn(\+[^\s:\/\\]+)?|file):\/\/.+/i - def scm_adapter + def self.scm_adapter_class Redmine::Scm::Adapters::SubversionAdapter end - + def self.scm_name 'Subversion' end + def repo_log_encoding + 'UTF-8' + end + def latest_changesets(path, rev, limit=10) revisions = scm.revisions(path, rev, nil, :limit => limit) revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : [] diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/bazaar.rb --- a/app/models/repository/bazaar.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/bazaar.rb Thu Mar 03 12:11:53 2011 +0000 @@ -19,16 +19,24 @@ class Repository::Bazaar < Repository attr_protected :root_url - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + 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 + end + + def self.scm_adapter_class Redmine::Scm::Adapters::BazaarAdapter end - + def self.scm_name 'Bazaar' end - + def entries(path=nil, identifier=nil) entries = scm.entries(path, identifier) if entries diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/cvs.rb --- a/app/models/repository/cvs.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/cvs.rb Thu Mar 03 12:11:53 2011 +0000 @@ -19,16 +19,25 @@ require 'digest/sha1' class Repository::Cvs < Repository - validates_presence_of :url, :root_url + validates_presence_of :url, :root_url, :log_encoding - def scm_adapter + 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 + end + + def self.scm_adapter_class Redmine::Scm::Adapters::CvsAdapter end - + def self.scm_name 'CVS' end - + def entry(path=nil, identifier=nil) rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, rev.nil? ? nil : rev.committed_on) @@ -104,23 +113,28 @@ scm.revisions('', fetch_since, nil, :with_paths => true) do |revision| # only add the change to the database, if it doen't exists. the cvs log # is not exclusive at all. - unless changes.find_by_path_and_revision(scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) - revision + tmp_time = revision.time.clone + unless changes.find_by_path_and_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=>revision.time-time_delta..revision.time+time_delta, + :committed_on=>tmp_time - time_delta .. tmp_time + time_delta, :committer=>revision.author, - :comments=>Changeset.normalize_comments(revision.message) + :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 - latest = changesets.find(:first, :order => 'id DESC') + 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_rev_num}", + :revision => "tmp#{tmp_rev_num}", + :scmid => scmid, :committer => revision.author, - :committed_on => revision.time, + :committed_on => tmp_time, :comments => revision.message) tmp_rev_num += 1 end @@ -144,10 +158,13 @@ end # Renumber new changesets in chronological order - changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset| + changesets.find( + :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 @@ -155,7 +172,9 @@ # 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 - @current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0) + sql = "SELECT revision FROM #{Changeset.table_name} " + sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'" + @current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0) @current_revision_number += 1 end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/darcs.rb --- a/app/models/repository/darcs.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/darcs.rb Thu Mar 03 12:11:53 2011 +0000 @@ -18,16 +18,24 @@ require 'redmine/scm/adapters/darcs_adapter' class Repository::Darcs < Repository - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + 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 + end + + def self.scm_adapter_class Redmine::Scm::Adapters::DarcsAdapter end - + def self.scm_name 'Darcs' end - + def entry(path=nil, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, patch.nil? ? nil : patch.scmid) diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/filesystem.rb --- a/app/models/repository/filesystem.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/filesystem.rb Thu Mar 03 12:11:53 2011 +0000 @@ -24,14 +24,21 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::FilesystemAdapter end - + def self.scm_name 'Filesystem' end - + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/git.rb --- a/app/models/repository/git.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/git.rb Thu Mar 03 12:11:53 2011 +0000 @@ -21,14 +21,35 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Path to repository", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::GitAdapter end - + def self.scm_name 'Git' end + def repo_log_encoding + 'UTF-8' + end + + # Returns the identifier for the given git changeset + def self.changeset_identifier(changeset) + changeset.scmid + end + + # Returns the readable identifier for the given git changeset + def self.format_changeset_identifier(changeset) + changeset.revision[0, 8] + end + def branches scm.branches end @@ -37,6 +58,13 @@ scm.tags end + def find_changeset_by_name(name) + return nil if name.nil? || name.empty? + e = changesets.find(:first, :conditions => ['revision = ?', name.to_s]) + return e if e + 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 @@ -49,7 +77,7 @@ 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, :reverse => true) + revisions = scm.revisions('', nil, nil, :all => true, :since => since) return if revisions.nil? || revisions.empty? recent_changesets = changesets.find(:all, :conditions => ['committed_on >= ?', since]) @@ -62,7 +90,28 @@ revisions.reject!{|r| recent_revisions.include?(r.scmid)} # Save the remaining ones to the database - revisions.each{|r| r.save(self)} unless revisions.nil? + unless revisions.nil? + revisions.each do |rev| + 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 + end + end + end + end end def latest_changesets(path,rev,limit=10) @@ -75,7 +124,7 @@ "scmid IN (?)", revisions.map!{|c| c.scmid} ], - :order => 'id DESC' + :order => 'committed_on DESC' ) end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/mercurial.rb --- a/app/models/repository/mercurial.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/mercurial.rb Thu Mar 03 12:11:53 2011 +0000 @@ -18,58 +18,81 @@ require 'redmine/scm/adapters/mercurial_adapter' class Repository::Mercurial < Repository + # sort changesets by revision number + has_many :changesets, :order => "#{Changeset.table_name}.id DESC", :foreign_key => 'repository_id' + attr_protected :root_url validates_presence_of :url FETCH_AT_ONCE = 100 # number of changesets to fetch at once - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::MercurialAdapter end - + def self.scm_name 'Mercurial' end - - def entries(path=nil, identifier=nil) - scm.entries(path, identifier) + + def repo_log_encoding + 'UTF-8' + end + + # Returns the readable identifier for the given mercurial changeset + def self.format_changeset_identifier(changeset) + "#{changeset.revision}:#{changeset.scmid}" + end + + # Returns the identifier for the given Mercurial changeset + def self.changeset_identifier(changeset) + changeset.scmid end def branches - bras = scm.branches - bras.sort unless bras == %w|default| + nil end - # Returns the latest changesets for +path+ - def latest_changesets(path, rev, limit=10) - changesets.find(:all, :include => :user, - :conditions => latest_changesets_cond(path, rev, limit), - :limit => limit) + def tags + nil end - def latest_changesets_cond(path, rev, limit) - cond, args = [], [] + def diff_format_revisions(cs, cs_to, sep=':') + super(cs, cs_to, ' ') + end - if scm.branchmap.member? rev - # dirty hack to filter by branch. branch name should be in database. - cond << "#{Changeset.table_name}.scmid IN (?)" - args << scm.nodes_in_branch(rev, path, rev, 0, :limit => limit) - elsif last = rev ? find_changeset_by_name(scm.tagmap[rev] || rev) : nil - cond << "#{Changeset.table_name}.id <= ?" - args << last.id + # Finds and returns a revision with a number or the beginning of a hash + def find_changeset_by_name(name) + return nil if name.nil? || name.empty? + if /[^\d]/ =~ name or name.to_s.size > 8 + e = changesets.find(:first, :conditions => ['scmid = ?', name.to_s]) + else + e = changesets.find(:first, :conditions => ['revision = ?', name.to_s]) end + return e if e + changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"]) # last ditch + end - unless path.blank? - # TODO: there must be a better way to build sub-query - 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 ?))" - args << path.with_leading_slash << "#{path.with_leading_slash}/%" + # Returns the latest changesets for +path+; sorted by revision number + # Default behavior is to search in cached changesets + 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) 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 7cec015f07ce -r 73ff0e6a11b1 app/models/repository/subversion.rb --- a/app/models/repository/subversion.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/repository/subversion.rb Thu Mar 03 12:11:53 2011 +0000 @@ -22,14 +22,18 @@ validates_presence_of :url validates_format_of :url, :with => /^(http|https|svn(\+[^\s:\/\\]+)?|file):\/\/.+/i - def scm_adapter + def self.scm_adapter_class Redmine::Scm::Adapters::SubversionAdapter end - + def self.scm_name 'Subversion' end + def repo_log_encoding + 'UTF-8' + end + def latest_changesets(path, rev, limit=10) revisions = scm.revisions(path, rev, nil, :limit => limit) revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : [] diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/role.rb --- a/app/models/role.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/role.rb Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,6 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\'\-]*$/i def permissions read_attribute(:permissions) || [] diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/setting.rb --- a/app/models/setting.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/setting.rb Thu Mar 03 12:11:53 2011 +0000 @@ -65,6 +65,7 @@ UTF-16LE EUC-JP Shift_JIS + CP932 GB18030 GBK ISCII91 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/time_entry.rb --- a/app/models/time_entry.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/time_entry.rb Thu Mar 03 12:11:53 2011 +0000 @@ -66,6 +66,9 @@ # these attributes make time aggregations easier def spent_on=(date) super + if spent_on.is_a?(Time) + self.spent_on = spent_on.to_date + end self.tyear = spent_on ? spent_on.year : nil 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 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/tracker.rb --- a/app/models/tracker.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/tracker.rb Thu Mar 03 12:11:53 2011 +0000 @@ -31,7 +31,6 @@ validates_presence_of :name validates_uniqueness_of :name validates_length_of :name, :maximum => 30 - validates_format_of :name, :with => /^[\w\s\'\-]*$/i def to_s; name end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/user.rb --- a/app/models/user.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/user.rb Thu Mar 03 12:11:53 2011 +0000 @@ -18,7 +18,8 @@ require "digest/sha1" class User < Principal - + include Redmine::SafeAttributes + # Account statuses STATUS_ANONYMOUS = 0 STATUS_ACTIVE = 1 @@ -34,21 +35,21 @@ } MAIL_NOTIFICATION_OPTIONS = [ - [:all, :label_user_mail_option_all], - [:selected, :label_user_mail_option_selected], - [:none, :label_user_mail_option_none], - [:only_my_events, :label_user_mail_option_only_my_events], - [:only_assigned, :label_user_mail_option_only_assigned], - [:only_owner, :label_user_mail_option_only_owner] - ] + ['all', :label_user_mail_option_all], + ['selected', :label_user_mail_option_selected], + ['only_my_events', :label_user_mail_option_only_my_events], + ['only_assigned', :label_user_mail_option_only_assigned], + ['only_owner', :label_user_mail_option_only_owner], + ['none', :label_user_mail_option_none] + ] has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)}, :after_remove => Proc.new {|user, group| group.user_removed(user)} has_many :issue_categories, :foreign_key => 'assigned_to_id', :dependent => :nullify has_many :changesets, :dependent => :nullify has_one :preference, :dependent => :destroy, :class_name => 'UserPreference' - has_one :rss_token, :dependent => :destroy, :class_name => 'Token', :conditions => "action='feeds'" - has_one :api_token, :dependent => :destroy, :class_name => 'Token', :conditions => "action='api'" + has_one :rss_token, :class_name => 'Token', :conditions => "action='feeds'" + has_one :api_token, :class_name => 'Token', :conditions => "action='api'" belongs_to :auth_source has_one :ssamr_user_detail, :dependent => :destroy, :class_name => 'SsamrUserDetail' @@ -62,7 +63,7 @@ attr_accessor :password, :password_confirmation attr_accessor :last_before_login_on # Prevents unauthorized assignments - attr_protected :login, :admin, :password, :password_confirmation, :hashed_password, :group_ids + attr_protected :login, :admin, :password, :password_confirmation, :hashed_password validates_presence_of :login, :firstname, :lastname, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) } @@ -73,12 +74,14 @@ # Login must contain lettres, numbers, underscores only validates_format_of :login, :with => /^[a-z0-9_\-@\.]*$/i validates_length_of :login, :maximum => 30 - validates_format_of :firstname, :lastname, :with => /^[\w\s\'\-\.]*$/i validates_length_of :firstname, :lastname, :maximum => 30 validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_nil => true validates_length_of :mail, :maximum => 60, :allow_nil => true validates_confirmation_of :password, :allow_nil => true + validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true + before_destroy :remove_references_before_destroy + validates_acceptance_of :terms_and_conditions, :on => :create, :message => :must_accept_terms_and_conditions def before_create @@ -88,7 +91,9 @@ def before_save # update hashed_password if password was set - self.hashed_password = User.hash_password(self.password) if self.password && self.auth_source_id.blank? + if self.password && self.auth_source_id.blank? + salt_password(password) + end end def reload(*args) @@ -130,7 +135,7 @@ return nil unless user.auth_source.authenticate(login, password) else # authentication with local password - return nil unless User.hash_password(password) == user.hashed_password + return nil unless user.check_password?(password) end else # user is not yet registered, try to authenticate with available sources @@ -209,13 +214,21 @@ update_attribute(:status, STATUS_LOCKED) end + # Returns true if +clear_password+ is the correct user's password, otherwise false def check_password?(clear_password) if auth_source_id.present? auth_source.authenticate(self.login, clear_password) else - User.hash_password(clear_password) == self.hashed_password + User.hash_password("#{salt}#{User.hash_password clear_password}") == hashed_password end end + + # Generates a random salt and computes hashed_password for +clear_password+ + # The hashed password is stored in the following form: SHA1(salt + SHA1(password)) + def salt_password(clear_password) + self.salt = User.generate_salt + self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}") + end # Does the backend storage allow this user to change their password? def change_password_allowed? @@ -271,12 +284,16 @@ notified_projects_ids end + def valid_notification_options + self.class.valid_notification_options(self) + end + # Only users that belong to more than 1 project can select projects for which they are notified - def valid_notification_options + def self.valid_notification_options(user=nil) # Note that @user.membership.size would fail since AR ignores # :include association option when doing a count - if memberships.length < 1 - MAIL_NOTIFICATION_OPTIONS.delete_if {|option| option.first == :selected} + if user.nil? || user.memberships.length < 1 + MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'} else MAIL_NOTIFICATION_OPTIONS end @@ -402,32 +419,54 @@ def allowed_to_globally?(action, options) allowed_to?(action, nil, options.reverse_merge(:global => true)) end + + safe_attributes 'login', + 'firstname', + 'lastname', + 'mail', + 'mail_notification', + 'language', + 'custom_field_values', + 'custom_fields', + 'identity_url' + + safe_attributes 'status', + 'auth_source_id', + :if => lambda {|user, current_user| current_user.admin?} + + safe_attributes 'group_ids', + :if => lambda {|user, current_user| current_user.admin? && !user.new_record?} # Utility method to help check if a user should be notified about an # event. # # TODO: only supports Issue events currently def notify_about?(object) - case mail_notification.to_sym - when :all + case mail_notification + when 'all' true - when :selected - # Handled by the Project - when :none - false - when :only_my_events + when 'selected' + # user receives notifications for created/assigned issues on unselected projects if object.is_a?(Issue) && (object.author == self || object.assigned_to == self) true else false end - when :only_assigned + when 'none' + false + when 'only_my_events' + if object.is_a?(Issue) && (object.author == self || object.assigned_to == self) + true + else + false + end + when 'only_assigned' if object.is_a?(Issue) && object.assigned_to == self true else false end - when :only_owner + when 'only_owner' if object.is_a?(Issue) && object.author == self true else @@ -456,6 +495,20 @@ end anonymous_user end + + # Salts all existing unsalted passwords + # It changes password storage scheme from SHA1(password) to SHA1(salt + SHA1(password)) + # This method is used in the SaltPasswords migration and is to be kept as is + def self.salt_unsalted_passwords! + transaction do + User.find_each(:conditions => "salt IS NULL OR salt = ''") do |user| + next if user.hashed_password.blank? + salt = User.generate_salt + hashed_password = User.hash_password("#{salt}#{user.hashed_password}") + User.update_all("salt = '#{salt}', hashed_password = '#{hashed_password}'", ["id = ?", user.id] ) + end + end + end protected @@ -467,11 +520,42 @@ end private + + # Removes references that are not handled by associations + # Things that are not deleted are reassociated with the anonymous user + def remove_references_before_destroy + return if self.id.nil? + + substitute = User.anonymous + Attachment.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + Comment.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + Issue.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + Issue.update_all 'assigned_to_id = NULL', ['assigned_to_id = ?', id] + Journal.update_all ['user_id = ?', substitute.id], ['user_id = ?', id] + JournalDetail.update_all ['old_value = ?', substitute.id.to_s], ["property = 'attr' AND prop_key = 'assigned_to_id' AND old_value = ?", id.to_s] + JournalDetail.update_all ['value = ?', substitute.id.to_s], ["property = 'attr' AND prop_key = 'assigned_to_id' AND value = ?", id.to_s] + Message.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + News.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + # Remove private queries and keep public ones + Query.delete_all ['user_id = ? AND is_public = ?', id, false] + Query.update_all ['user_id = ?', substitute.id], ['user_id = ?', id] + TimeEntry.update_all ['user_id = ?', substitute.id], ['user_id = ?', id] + Token.delete_all ['user_id = ?', id] + Watcher.delete_all ['user_id = ?', id] + WikiContent.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + WikiContent::Version.update_all ['author_id = ?', substitute.id], ['author_id = ?', id] + end # Return password digest def self.hash_password(clear_password) Digest::SHA1.hexdigest(clear_password || "") end + + # Returns a 128bits random salt as a hex string (32 chars long) + def self.generate_salt + ActiveSupport::SecureRandom.hex(16) + end + end class AnonymousUser < User @@ -492,4 +576,9 @@ def mail; nil end def time_zone; nil end def rss_key; nil end + + # Anonymous user can not be destroyed + def destroy + false + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/user_preference.rb --- a/app/models/user_preference.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/user_preference.rb Thu Mar 03 12:11:53 2011 +0000 @@ -51,4 +51,7 @@ def comments_sorting; self[:comments_sorting] end def comments_sorting=(order); self[:comments_sorting]=order end + + def warn_on_leaving_unsaved; self[:warn_on_leaving_unsaved] || '1'; end + def warn_on_leaving_unsaved=(value); self[:warn_on_leaving_unsaved]=value; end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/version.rb --- a/app/models/version.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/version.rb Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,7 @@ end def start_date - effective_date + @start_date ||= fixed_issues.minimum('start_date') end def due_date @@ -77,8 +77,7 @@ def behind_schedule? if completed_pourcent == 100 return false - elsif due_date && fixed_issues.present? && fixed_issues.minimum('start_date') # TODO: should use #start_date but that method is wrong... - start_date = fixed_issues.minimum('start_date') + elsif due_date && start_date done_date = start_date + ((due_date - start_date+1)* completed_pourcent/100).floor return done_date <= Date.today else diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/wiki.rb --- a/app/models/wiki.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/wiki.rb Thu Mar 03 12:11:53 2011 +0000 @@ -46,10 +46,10 @@ def find_page(title, options = {}) title = start_page if title.blank? title = Wiki.titleize(title) - page = pages.find_by_title(title) + page = pages.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) if !page && !(options[:with_redirect] == false) # search for a redirect - redirect = redirects.find_by_title(title) + redirect = redirects.first(:conditions => ["LOWER(title) LIKE LOWER(?)", title]) page = find_page(redirect.redirects_to, :with_redirect => false) if redirect end page diff -r 7cec015f07ce -r 73ff0e6a11b1 app/models/wiki_page.rb --- a/app/models/wiki_page.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/models/wiki_page.rb Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -149,17 +149,13 @@ end end -class WikiDiff - attr_reader :diff, :words, :content_to, :content_from +class WikiDiff < Redmine::Helpers::Diff + attr_reader :content_to, :content_from def initialize(content_to, content_from) @content_to = content_to @content_from = content_from - @words = content_to.text.split(/(\s+)/) - @words = @words.select {|word| word != ' '} - words_from = content_from.text.split(/(\s+)/) - words_from = words_from.select {|word| word != ' '} - @diff = words_from.diff @words + super(content_to.text, content_from.text) end end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/sweepers/.svn/all-wcprops --- a/app/sweepers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 37 -/svn/!svn/ver/1157/trunk/app/sweepers -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/sweepers/.svn/entries --- a/app/sweepers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/sweepers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/sweepers http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/.svn/all-wcprops --- a/app/views/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 34 -/svn/!svn/ver/4409/trunk/app/views +/svn/!svn/ver/4983/trunk/app/views END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/.svn/entries --- a/app/views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views http://redmine.rubyforge.org/svn -2010-11-16T19:49:08.085592Z -4409 -jplang +2011-03-01T10:27:51.597350Z +4983 +tmaruyama @@ -38,36 +38,36 @@ members dir -welcome +context_menus dir -context_menus +welcome dir journals dir +time_entry_reports +dir + workflows dir -time_entry_reports -dir - reports dir -timelog -dir - -settings -dir - layouts dir custom_fields dir +settings +dir + +timelog +dir + users dir @@ -77,15 +77,15 @@ files dir +previews +dir + ldap_auth_sources dir auth_sources dir -previews -dir - search dir diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/account/.svn/all-wcprops --- a/app/views/account/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 42 -/svn/!svn/ver/3530/trunk/app/views/account -END -password_recovery.rhtml -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/3341/trunk/app/views/account/password_recovery.rhtml -END -lost_password.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/747/trunk/app/views/account/lost_password.rhtml -END -register.rhtml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2678/trunk/app/views/account/register.rhtml -END -login.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3530/trunk/app/views/account/login.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/account/.svn/entries --- a/app/views/account/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/account/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/account http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.495777Z +2011-03-03T11:05:11.000000Z 232ce32581d2f869b81c300244decff5 2010-01-28T18:54:51.800438Z 3341 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.495777Z +2011-03-03T11:05:11.000000Z cf3d603bbb4825640988086c7871c165 2007-09-22T13:17:49.935719Z 747 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.495777Z +2011-03-03T11:05:11.000000Z 82c6920dc6c95e35b0248de4be82885b 2009-04-21T13:43:57.529967Z 2678 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.495777Z +2011-03-03T11:05:11.000000Z 72b586f183037fcab519bc7575d3b2b5 2010-03-03T20:21:05.265018Z 3530 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/activities/.svn/all-wcprops --- a/app/views/activities/.svn/all-wcprops Tue Feb 22 16:48:15 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 45 -/svn/!svn/ver/4047/trunk/app/views/activities -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4047/trunk/app/views/activities/index.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/activities/.svn/entries --- a/app/views/activities/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/activities/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/activities http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-24T12:48:29.578245Z +2011-03-03T11:05:11.000000Z 9e6d9091be2c8769f8e262500d974f84 2010-08-27T14:05:54.014502Z 4047 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/admin/.svn/all-wcprops --- a/app/views/admin/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 40 -/svn/!svn/ver/4271/trunk/app/views/admin -END -info.rhtml -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/3200/trunk/app/views/admin/info.rhtml -END -plugins.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/2041/trunk/app/views/admin/plugins.rhtml -END -_menu.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3909/trunk/app/views/admin/_menu.rhtml -END -_no_data.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/1040/trunk/app/views/admin/_no_data.rhtml -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3176/trunk/app/views/admin/index.rhtml -END -projects.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4271/trunk/app/views/admin/projects.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/admin/.svn/entries --- a/app/views/admin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/admin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/admin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.499776Z +2011-03-03T11:05:11.000000Z a7b3d0461b8dac7e68d5b758e6b93b45 2009-12-19T20:33:24.113306Z 3200 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.503775Z +2011-03-03T11:05:11.000000Z aacfd3ff934f52585eba4f460f52df31 2008-11-16T17:12:02.001794Z 2041 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.499776Z +2011-03-03T11:05:11.000000Z a2dcf50c0d70604e64f18cd28f15280b 2010-08-04T00:38:22.739166Z 3909 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.499776Z +2011-03-03T11:05:11.000000Z 8db715728d1f5851c242e085110f2bb6 2008-01-05T11:33:49.132886Z 1040 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.499776Z +2011-03-03T11:05:11.000000Z 35378eb3f0e385475e3bd0586f22324a 2009-12-17T18:21:02.630202Z 3176 @@ -202,7 +202,7 @@ -2010-11-19T13:04:49.448967Z +2011-03-03T11:05:11.000000Z 9aaefdc17951db18479f38fb0db73ea7 2010-10-22T15:11:04.321155Z 4271 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/attachments/.svn/all-wcprops --- a/app/views/attachments/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/3879/trunk/app/views/attachments -END -_links.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/2116/trunk/app/views/attachments/_links.rhtml -END -file.rhtml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2693/trunk/app/views/attachments/file.rhtml -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3879/trunk/app/views/attachments/_form.rhtml -END -diff.rhtml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2693/trunk/app/views/attachments/diff.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/attachments/.svn/entries --- a/app/views/attachments/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/attachments/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/attachments http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.503775Z +2011-03-03T11:05:10.000000Z 6f5329a1a81f3798a84a26b0261f5000 2008-12-09T16:54:46.963649Z 2116 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.507774Z +2011-03-03T11:05:10.000000Z b8bc854a91c56c3e3d45390e8ed4bb8d 2009-04-25T09:35:14.494071Z 2693 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.503775Z +2011-03-03T11:05:10.000000Z 9cd3f9685ce632814961d9f7e67c4d26 2010-07-25T10:34:55.569539Z 3879 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.503775Z +2011-03-03T11:05:10.000000Z 43e4ae1b5703daa55b37eb438a169304 2009-04-25T09:35:14.494071Z 2693 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/auth_sources/.svn/all-wcprops --- a/app/views/auth_sources/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/3744/trunk/app/views/auth_sources -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3436/trunk/app/views/auth_sources/index.html.erb -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/333/trunk/app/views/auth_sources/edit.rhtml -END -_form.html.erb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3744/trunk/app/views/auth_sources/_form.html.erb -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/333/trunk/app/views/auth_sources/new.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/auth_sources/.svn/entries --- a/app/views/auth_sources/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/auth_sources/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/auth_sources http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.507774Z +2011-03-03T11:05:10.000000Z 2f1b944eb2979ed37624c653969fa6bf 2010-02-15T16:41:21.789274Z 3436 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.507774Z +2011-03-03T11:05:10.000000Z 6f4f645b6d66417180eaadb0e204a56e 2007-03-12T17:59:02.654744Z 333 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.507774Z +2011-03-03T11:05:10.000000Z 4ea0fc7f46738e3709d552778de7a756 2010-05-23T03:16:31.304135Z 3744 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.507774Z +2011-03-03T11:05:10.000000Z 1cc2f5049536de6e5d6d4e926f96ab38 2007-03-12T17:59:02.654744Z 333 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/auto_completes/.svn/all-wcprops --- a/app/views/auto_completes/.svn/all-wcprops Tue Feb 22 16:48:15 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 49 -/svn/!svn/ver/3945/trunk/app/views/auto_completes -END -issues.html.erb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/3945/trunk/app/views/auto_completes/issues.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/auto_completes/.svn/entries --- a/app/views/auto_completes/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/auto_completes/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/auto_completes http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.511773Z +2011-03-03T11:05:10.000000Z d325b0677890591680b96985e16a0139 2010-08-17T15:03:58.074505Z 3945 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/boards/.svn/all-wcprops --- a/app/views/boards/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/boards/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4047/trunk/app/views/boards +/svn/!svn/ver/4889/trunk/app/views/boards END show.rhtml K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/3426/trunk/app/views/boards/show.rhtml +/svn/!svn/ver/4889/trunk/app/views/boards/show.rhtml END _form.rhtml K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/boards/.svn/entries --- a/app/views/boards/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/boards/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/boards http://redmine.rubyforge.org/svn -2010-08-27T14:05:54.014502Z -4047 -edavis10 +2011-02-20T13:11:10.508449Z +4889 +jplang @@ -32,10 +32,10 @@ -2010-09-23T14:37:44.515775Z -74a37f0fbb3bb635f2c0389a2624988e -2010-02-14T11:52:12.027647Z -3426 +2011-03-03T11:40:18.000000Z +0f9b1735f403a56ed575c63dc474a611 +2011-02-20T13:11:10.508449Z +4889 jplang has-props @@ -58,7 +58,7 @@ -3365 +3402 _form.rhtml file @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.515775Z +2011-03-03T11:05:10.000000Z 0416740cf4bf599b0da68e597c0cd44c 2007-05-13T17:09:56.765659Z 529 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.515775Z +2011-03-03T11:05:10.000000Z 00f3643ebd3d5af2322b92c885a6eec6 2007-05-13T17:09:56.765659Z 529 @@ -134,7 +134,7 @@ -2010-09-24T12:48:28.319823Z +2011-03-03T11:05:10.000000Z 5c323ebf8fea05f556896ed49186773b 2010-08-27T14:05:54.014502Z 4047 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.515775Z +2011-03-03T11:05:10.000000Z b951b4d73988508c5a42fdb7b7df695c 2007-05-13T17:09:56.765659Z 529 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/boards/.svn/text-base/show.rhtml.svn-base --- a/app/views/boards/.svn/text-base/show.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/boards/.svn/text-base/show.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -69,4 +69,5 @@ <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@project}: #{@board}") %> + <%= stylesheet_link_tag 'scm' %> <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/boards/show.rhtml --- a/app/views/boards/show.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/boards/show.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -69,4 +69,5 @@ <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@project}: #{@board}") %> + <%= stylesheet_link_tag 'scm' %> <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/calendars/.svn/all-wcprops --- a/app/views/calendars/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/calendars/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4238/trunk/app/views/calendars +/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/4238/trunk/app/views/calendars/show.html.erb +/svn/!svn/ver/4911/trunk/app/views/calendars/show.html.erb END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/calendars/.svn/entries --- a/app/views/calendars/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/calendars/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/calendars http://redmine.rubyforge.org/svn -2010-10-07T15:26:53.500793Z -4238 -winterheart +2011-02-21T14:02:22.565987Z +4911 +jplang @@ -32,11 +32,11 @@ -2010-11-19T13:04:49.472856Z -d47ece5d0e0ff017f3f1b5ce4b776ba0 -2010-10-07T15:26:53.500793Z -4238 -winterheart +2011-03-03T11:40:18.000000Z +7da8933c1cb08241ebe459d9cabe8043 +2011-02-21T14:02:22.565987Z +4911 +jplang has-props @@ -58,5 +58,5 @@ -1946 +2007 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/calendars/.svn/text-base/show.html.erb.svn-base --- a/app/views/calendars/.svn/text-base/show.html.erb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/calendars/.svn/text-base/show.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,10 +1,10 @@ -

<%= l(:label_calendar) %>

+

<%= @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%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -20,16 +20,16 @@ <%= select_year(@year, :prefix => "year", :discard_type => true) %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :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 => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/calendars/show.html.erb --- a/app/views/calendars/show.html.erb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/calendars/show.html.erb Thu Mar 03 12:11:53 2011 +0000 @@ -1,10 +1,10 @@ -

<%= l(:label_calendar) %>

+

<%= @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%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -20,16 +20,16 @@ <%= select_year(@year, :prefix => "year", :discard_type => true) %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :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 => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/common/.svn/all-wcprops --- a/app/views/common/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/common/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4286/trunk/app/views/common +/svn/!svn/ver/4604/trunk/app/views/common END _file.rhtml K 25 @@ -9,18 +9,18 @@ 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 -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 _preview.rhtml K 25 svn:wc:ra_dav:version-url @@ -31,7 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/3585/trunk/app/views/common/_diff.rhtml +/svn/!svn/ver/4604/trunk/app/views/common/_diff.rhtml END _calendar.rhtml K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/common/.svn/entries --- a/app/views/common/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/common/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/common http://redmine.rubyforge.org/svn -2010-10-23T11:07:04.019894Z -4286 +2011-01-01T13:40:36.520874Z +4604 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z f95c4268a6ac374ab617da665e57a3ad 2010-03-14T13:22:50.317701Z 3585 @@ -60,13 +60,47 @@ 369 +error.html.erb +file + + + + +2011-03-03T11:05:11.000000Z +882dace2c9ea129616067a2052cebef4 +2010-10-23T11:07:04.019894Z +4286 +jplang + + + + + + + + + + + + + + + + + + + + + +156 + feed.atom.rxml file -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z e2b0309f637e9a49ef39f8401f3190c5 2009-05-26T08:28:36.964305Z 2768 @@ -94,47 +128,13 @@ 1410 -error.html.erb -file - - - - -2010-11-19T13:04:49.456921Z -882dace2c9ea129616067a2052cebef4 -2010-10-23T11:07:04.019894Z -4286 -jplang - - - - - - - - - - - - - - - - - - - - - -156 - _preview.rhtml file -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z d03b1c3719bd49af7d930d210a8e8328 2008-07-26T12:54:54.604420Z 1699 @@ -168,10 +168,10 @@ -2010-09-23T14:37:44.523788Z -a03541085a4ee595977cbf760d20bf19 -2010-03-14T13:22:50.317701Z -3585 +2011-03-03T11:05:11.000000Z +1938ad8ac1793e75074891018e795398 +2011-01-01T13:40:36.520874Z +4604 jplang has-props @@ -194,7 +194,7 @@ -2506 +2520 _calendar.rhtml file @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z 18b2d631fabd5720aa07d369da11d0de 2010-06-19T22:52:15.523619Z 3790 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z 6e7716818f87ed1ad9839c6e9a92ed1b 2009-12-14T20:13:29.438642Z 3174 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/common/.svn/text-base/_diff.rhtml.svn-base --- a/app/views/common/.svn/text-base/_diff.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/common/.svn/text-base/_diff.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -4,7 +4,7 @@ <% if diff_type == 'sbs' -%> - + <% prev_line_left, prev_line_right = nil, nil -%> @@ -31,7 +31,7 @@ <% else -%>
<%= table_file.file_name %>
<%=to_utf8 table_file.file_name %>
- + <% prev_line_left, prev_line_right = nil, nil -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/common/_diff.rhtml --- a/app/views/common/_diff.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/common/_diff.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -4,7 +4,7 @@ <% if diff_type == 'sbs' -%>
<%= table_file.file_name %>
<%=to_utf8 table_file.file_name %>
- + <% prev_line_left, prev_line_right = nil, nil -%> @@ -31,7 +31,7 @@ <% else -%>
<%= table_file.file_name %>
<%=to_utf8 table_file.file_name %>
- + <% prev_line_left, prev_line_right = nil, nil -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/context_menus/.svn/all-wcprops --- a/app/views/context_menus/.svn/all-wcprops Tue Feb 22 16:48:15 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 48 -/svn/!svn/ver/4409/trunk/app/views/context_menus -END -issues.html.erb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4409/trunk/app/views/context_menus/issues.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/context_menus/.svn/entries --- a/app/views/context_menus/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/context_menus/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/context_menus http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:47.016806Z +2011-03-03T11:05:10.000000Z 1a873e0d09f011b6b274e955460d35a1 2010-11-16T19:49:08.085592Z 4409 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/custom_fields/.svn/all-wcprops --- a/app/views/custom_fields/.svn/all-wcprops Tue Feb 22 16:48:15 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 48 -/svn/!svn/ver/4382/trunk/app/views/custom_fields -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4382/trunk/app/views/custom_fields/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3144/trunk/app/views/custom_fields/edit.rhtml -END -_index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3672/trunk/app/views/custom_fields/_index.rhtml -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/2871/trunk/app/views/custom_fields/index.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3144/trunk/app/views/custom_fields/new.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/custom_fields/.svn/entries --- a/app/views/custom_fields/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/custom_fields/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/custom_fields http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:48.192856Z +2011-03-03T11:05:10.000000Z 7c1accc3dd22bd872e2e9b6a7f02a5c2 2010-11-07T14:15:01.891476Z 4382 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.527783Z +2011-03-03T11:05:10.000000Z 0c149f63c965988c70ecf48bde3222b3 2009-12-09T10:49:58.529326Z 3144 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.527783Z +2011-03-03T11:05:10.000000Z 3372a4aeafa9f940744f07c4ce8ca434 2010-04-16T15:33:49.924704Z 3672 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.527783Z +2011-03-03T11:05:10.000000Z 6441c559d374310cabfc9649eb5b3617 2009-09-12T09:13:13.676884Z 2871 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.527783Z +2011-03-03T11:05:10.000000Z 7658107f6af4536cedfc075202ad3f7c 2009-12-09T10:49:58.529326Z 3144 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/documents/.svn/all-wcprops --- a/app/views/documents/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/3603/trunk/app/views/documents -END -_document.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3602/trunk/app/views/documents/_document.rhtml -END -show.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3603/trunk/app/views/documents/show.rhtml -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2777/trunk/app/views/documents/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/333/trunk/app/views/documents/edit.rhtml -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2295/trunk/app/views/documents/index.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/1180/trunk/app/views/documents/new.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/documents/.svn/entries --- a/app/views/documents/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/documents/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/documents http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.531783Z +2011-03-03T11:05:11.000000Z 755690362ea0b5f92a82326872d3b0ea 2010-03-18T20:02:17.358992Z 3602 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.535729Z +2011-03-03T11:05:11.000000Z a7c10b428fb4d74827a6ffdcc3651a25 2010-03-18T20:06:16.936785Z 3603 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.535729Z +2011-03-03T11:05:11.000000Z 9d05f76602471c3dc339d8c54d2f4abc 2009-05-30T23:30:36.923541Z 2777 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.535729Z +2011-03-03T11:05:11.000000Z 41a0e984e939e8fad03f2be67b33a4fc 2007-03-12T17:59:02.654744Z 333 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.535729Z +2011-03-03T11:05:11.000000Z cf8b8406d31262625c1f2ab2b66020b2 2009-01-22T16:34:54.303755Z 2295 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.535729Z +2011-03-03T11:05:11.000000Z 60e54f2c42af4454d69bfc812bbf55ca 2008-02-29T19:46:58.834023Z 1180 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/enumerations/.svn/all-wcprops --- a/app/views/enumerations/.svn/all-wcprops Tue Feb 22 16:48:15 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 47 -/svn/!svn/ver/3734/trunk/app/views/enumerations -END -list.rhtml -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3734/trunk/app/views/enumerations/list.rhtml -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/2946/trunk/app/views/enumerations/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/2810/trunk/app/views/enumerations/edit.rhtml -END -destroy.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/1558/trunk/app/views/enumerations/destroy.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2810/trunk/app/views/enumerations/new.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/enumerations/.svn/entries --- a/app/views/enumerations/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/enumerations/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/enumerations http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.539728Z +2011-03-03T11:05:11.000000Z b4f45f24d2fb9546e609fd3299912be6 2010-05-09T11:19:15.980195Z 3734 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.539728Z +2011-03-03T11:05:11.000000Z 0a47386b406e4f425fe541d12c780467 2009-10-21T22:34:28.905707Z 2946 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.539728Z +2011-03-03T11:05:11.000000Z 668687299206262ccf34ac3a44f57c33 2009-07-05T12:22:02.133266Z 2810 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.539728Z +2011-03-03T11:05:11.000000Z b9c8a97c172197a30cbb6c08000a9fa7 2008-06-17T19:10:54.015252Z 1558 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.539728Z +2011-03-03T11:05:11.000000Z e6eaade1aac54267080f56f5a09d3fd1 2009-07-05T12:22:02.133266Z 2810 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/files/.svn/all-wcprops --- a/app/views/files/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 40 -/svn/!svn/ver/4268/trunk/app/views/files -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4268/trunk/app/views/files/index.html.erb -END -new.html.erb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4085/trunk/app/views/files/new.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/files/.svn/entries --- a/app/views/files/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/files/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:49.392852Z +2011-03-03T11:05:10.000000Z 05986f09d13424caeb68601c7c9ff16b 2010-10-22T14:45:02.987126Z 4268 @@ -66,7 +66,7 @@ -2010-09-24T12:48:27.722352Z +2011-03-03T11:05:10.000000Z 7cd15d28fd27afa1f10b921c8b35cd7a 2010-09-14T16:24:07.840869Z 4085 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/gantts/.svn/all-wcprops --- a/app/views/gantts/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/gantts/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4283/trunk/app/views/gantts +/svn/!svn/ver/4913/trunk/app/views/gantts END show.html.erb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4283/trunk/app/views/gantts/show.html.erb +/svn/!svn/ver/4913/trunk/app/views/gantts/show.html.erb END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/gantts/.svn/entries --- a/app/views/gantts/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/gantts/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/gantts http://redmine.rubyforge.org/svn -2010-10-23T09:08:55.877887Z -4283 +2011-02-21T15:06:11.321114Z +4913 jplang @@ -32,10 +32,10 @@ -2010-11-19T13:04:49.480864Z -e0ed1c5fd05cd8c8f3f930c443564ebc -2010-10-23T09:08:55.877887Z -4283 +2011-03-03T11:40:18.000000Z +6f609d119b323e4fd1a249dfbd614e38 +2011-02-21T15:06:11.321114Z +4913 jplang has-props @@ -58,5 +58,5 @@ -6213 +6326 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/gantts/.svn/text-base/show.html.erb.svn-base --- a/app/views/gantts/.svn/text-base/show.html.erb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/gantts/.svn/text-base/show.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ <% @gantt.view = self %> -

<%= l(:label_gantt) %>

+

<%= @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%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -23,16 +23,16 @@ <%= hidden_field_tag 'zoom', @gantt.zoom %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :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 => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> @@ -59,10 +59,19 @@ # Width of the entire chart g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom -# Collect the number of issues on Versions + +@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width) + g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max t_height = g_height + headers_height + + %> + +<% if @gantt.truncated %> +

<%= l(:notice_gantt_chart_truncated, :max => @gantt.max_rows) %>

+<% end %> +
<%= table_file.file_name %>
<%=to_utf8 table_file.file_name %>
@@ -151,9 +161,7 @@ end end %> -<% top = headers_height + 10 %> - -<%= @gantt.lines(:top => top, :zoom => zoom, :g_width => g_width ) %> +<%= @gantt.lines %> <% # diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/gantts/show.html.erb --- a/app/views/gantts/show.html.erb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/gantts/show.html.erb Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ <% @gantt.view = self %> -

<%= l(:label_gantt) %>

+

<%= @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%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -23,16 +23,16 @@ <%= hidden_field_tag 'zoom', @gantt.zoom %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :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 => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> @@ -59,10 +59,19 @@ # Width of the entire chart g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom -# Collect the number of issues on Versions + +@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width) + g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max t_height = g_height + headers_height + + %> + +<% if @gantt.truncated %> +

<%= l(:notice_gantt_chart_truncated, :max => @gantt.max_rows) %>

+<% end %> +
@@ -70,9 +79,10 @@
-<% top = headers_height + 8 %> -<%= @gantt.subjects(:headers_height => headers_height, :top => top, :g_width => g_width) %> +
+<%= @gantt.subjects %> +
@@ -151,9 +161,7 @@ end end %> -<% top = headers_height + 10 %> - -<%= @gantt.lines(:top => top, :zoom => zoom, :g_width => g_width ) %> +<%= @gantt.lines %> <% # diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/groups/.svn/all-wcprops --- a/app/views/groups/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 41 -/svn/!svn/ver/4312/trunk/app/views/groups -END -autocomplete_for_user.html.erb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2869/trunk/app/views/groups/autocomplete_for_user.html.erb -END -edit.html.erb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/2871/trunk/app/views/groups/edit.html.erb -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2869/trunk/app/views/groups/index.html.erb -END -new.html.erb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3375/trunk/app/views/groups/new.html.erb -END -_general.html.erb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/2879/trunk/app/views/groups/_general.html.erb -END -_memberships.html.erb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3734/trunk/app/views/groups/_memberships.html.erb -END -_users.html.erb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4312/trunk/app/views/groups/_users.html.erb -END -show.html.erb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/2869/trunk/app/views/groups/show.html.erb -END -_form.html.erb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2869/trunk/app/views/groups/_form.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/groups/.svn/entries --- a/app/views/groups/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/groups/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/groups http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z 8798190a9ed51cd47a32f7fa3b14962b 2009-09-11T21:11:20.141433Z 2864 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z 77b68adb1216f00c034d0afa77a50bff 2009-09-12T09:13:13.676884Z 2871 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z 61731ddfe926e25ea2108a99a7dc594d 2009-07-05T11:38:40.659710Z 2807 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z f122118621575d0b74331d392b4aba4b 2010-02-06T13:26:29.318273Z 3375 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z 5fc442e9118fe012a7d4049daa4d68b4 2009-09-12T16:12:42.876344Z 2879 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z 5f484ae9be041e266944cc2710caa394 2010-05-09T11:19:15.980195Z 3734 @@ -236,7 +236,7 @@ -2010-11-19T13:04:49.444940Z +2011-03-03T11:05:11.000000Z 7738dc0db4c4ad48e82613829c1e991a 2010-10-30T16:47:33.260585Z 4312 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z ee1e9b07710ccd0b0dee7791dddc93bb 2009-07-05T13:54:34.821434Z 2812 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.547775Z +2011-03-03T11:05:11.000000Z 09eeec211f50994f28b31bcff9be43ef 2009-09-05T11:19:00.617770Z 2858 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_categories/.svn/all-wcprops --- a/app/views/issue_categories/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4385/trunk/app/views/issue_categories -END -new.html.erb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3549/trunk/app/views/issue_categories/new.html.erb -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4385/trunk/app/views/issue_categories/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/725/trunk/app/views/issue_categories/edit.rhtml -END -destroy.rhtml -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/1182/trunk/app/views/issue_categories/destroy.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_categories/.svn/entries --- a/app/views/issue_categories/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_categories/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issue_categories http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.551784Z +2011-03-03T11:05:11.000000Z 61ef938e10897a71008d145439614aa8 2010-03-06T18:43:00.594668Z 3549 @@ -66,7 +66,7 @@ -2010-11-19T13:04:49.476971Z +2011-03-03T11:05:11.000000Z e0d28729320423a7b8fcb6309b58de9a 2010-11-07T14:56:12.614499Z 4385 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.551784Z +2011-03-03T11:05:11.000000Z fc3f04670edce3c08e645d254198a89c 2007-09-14T11:34:08.234701Z 725 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.551784Z +2011-03-03T11:05:11.000000Z f7b34c60cf2f117d3c53be7b0840fe28 2008-02-29T22:54:07.325361Z 1182 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_moves/.svn/all-wcprops --- a/app/views/issue_moves/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_moves/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4292/trunk/app/views/issue_moves +/svn/!svn/ver/4583/trunk/app/views/issue_moves END new.rhtml K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/4292/trunk/app/views/issue_moves/new.rhtml +/svn/!svn/ver/4583/trunk/app/views/issue_moves/new.rhtml END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_moves/.svn/entries --- a/app/views/issue_moves/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_moves/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issue_moves http://redmine.rubyforge.org/svn -2010-10-25T18:44:46.868009Z -4292 -edavis10 +2010-12-29T20:48:51.915261Z +4583 +jplang @@ -32,11 +32,11 @@ -2010-11-19T13:04:48.788846Z -1ad6c5f00ec9a5a7509125da416b0b07 -2010-10-25T18:44:46.868009Z -4292 -edavis10 +2011-03-03T11:05:10.000000Z +9a221a421165c46becefe4e15dc6266c +2010-12-29T20:48:51.915261Z +4583 +jplang has-props @@ -58,5 +58,5 @@ -2701 +2874 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_moves/.svn/text-base/new.rhtml.svn-base --- a/app/views/issue_moves/.svn/text-base/new.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_moves/.svn/text-base/new.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -10,6 +10,10 @@ <%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
+
+<%= l(:label_change_properties) %> + +

<%= select_tag "new_project_id", project_tree_options_for_select(@allowed_projects, :selected => @target_project), @@ -22,13 +26,6 @@ <%= select_tag "new_tracker_id", "" + options_from_collection_for_select(@trackers, "id", "name") %>

- - <%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') + - content_tag('option', l(:label_nobody), :value => 'none') + - options_from_collection_for_select(@target_project.assignable_users, :id, :name)) %> -

- -

<%= select_tag('status_id', "" + options_from_collection_for_select(@available_statuses, :id, :name)) %>

@@ -39,6 +36,15 @@

+ + <%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') + + content_tag('option', l(:label_nobody), :value => 'none') + + options_from_collection_for_select(@target_project.assignable_users, :id, :name)) %> +

+
+ +
+

<%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %>

@@ -47,6 +53,9 @@ <%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %>

+
+ +
<%= l(:field_notes) %> <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_moves/new.rhtml --- a/app/views/issue_moves/new.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_moves/new.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -10,6 +10,10 @@ <%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
+
+<%= l(:label_change_properties) %> + +

<%= select_tag "new_project_id", project_tree_options_for_select(@allowed_projects, :selected => @target_project), @@ -22,13 +26,6 @@ <%= select_tag "new_tracker_id", "" + options_from_collection_for_select(@trackers, "id", "name") %>

- - <%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') + - content_tag('option', l(:label_nobody), :value => 'none') + - options_from_collection_for_select(@target_project.assignable_users, :id, :name)) %> -

- -

<%= select_tag('status_id', "" + options_from_collection_for_select(@available_statuses, :id, :name)) %>

@@ -39,6 +36,15 @@

+ + <%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') + + content_tag('option', l(:label_nobody), :value => 'none') + + options_from_collection_for_select(@target_project.assignable_users, :id, :name)) %> +

+
+ +
+

<%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %>

@@ -47,6 +53,9 @@ <%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %>

+
+ +
<%= l(:field_notes) %> <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_relations/.svn/all-wcprops --- a/app/views/issue_relations/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_relations/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/747/trunk/app/views/issue_relations +V 50 +/svn/!svn/ver/4502/trunk/app/views/issue_relations END _form.rhtml K 25 svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/747/trunk/app/views/issue_relations/_form.rhtml +V 62 +/svn/!svn/ver/4502/trunk/app/views/issue_relations/_form.rhtml END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_relations/.svn/entries --- a/app/views/issue_relations/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_relations/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issue_relations http://redmine.rubyforge.org/svn -2007-09-22T13:17:49.935719Z -747 +2010-12-12T16:04:28.950669Z +4502 jplang @@ -32,10 +32,10 @@ -2010-09-23T14:37:44.555783Z -36d83be727a082a187650a3604005824 -2007-09-22T13:17:49.935719Z -747 +2011-03-03T11:05:10.000000Z +7024ae266ddb4d218d7c24c3b17fa790 +2010-12-12T16:04:28.950669Z +4502 jplang has-props @@ -58,5 +58,5 @@ -538 +724 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_relations/.svn/text-base/_form.rhtml.svn-base --- a/app/views/issue_relations/.svn/text-base/_form.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_relations/.svn/text-base/_form.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,9 @@ <%= error_messages_for 'relation' %>

<%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %> -<%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 6 %> +<%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 10 %> +

+<%= javascript_tag "observeRelatedIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_relations/_form.rhtml --- a/app/views/issue_relations/_form.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_relations/_form.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,9 @@ <%= error_messages_for 'relation' %>

<%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %> -<%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 6 %> +<%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 10 %> +

+<%= javascript_tag "observeRelatedIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_statuses/.svn/all-wcprops --- a/app/views/issue_statuses/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/3600/trunk/app/views/issue_statuses -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3600/trunk/app/views/issue_statuses/index.html.erb -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3157/trunk/app/views/issue_statuses/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/2810/trunk/app/views/issue_statuses/edit.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/2810/trunk/app/views/issue_statuses/new.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issue_statuses/.svn/entries --- a/app/views/issue_statuses/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issue_statuses/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issue_statuses http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.559788Z +2011-03-03T11:05:11.000000Z 2d8b318bb1dbbe6dbb478716d52e65e9 2010-03-17T20:46:22.413470Z 3600 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.559788Z +2011-03-03T11:05:11.000000Z e4ea04eeab7c1f7265858a9dd09f1b7b 2009-12-12T10:33:12.138303Z 3157 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.559788Z +2011-03-03T11:05:11.000000Z 21f8b2f134a83413d09ae7e4d004c642 2009-07-05T12:22:02.133266Z 2810 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.559788Z +2011-03-03T11:05:11.000000Z af751ca552f43d9954a0cb1bbdb6e362 2009-07-05T12:22:02.133266Z 2810 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/all-wcprops --- a/app/views/issues/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4311/trunk/app/views/issues +/svn/!svn/ver/4908/trunk/app/views/issues END _relations.rhtml K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4065/trunk/app/views/issues/_relations.rhtml +/svn/!svn/ver/4741/trunk/app/views/issues/_relations.rhtml END _history.rhtml K 25 @@ -25,7 +25,7 @@ K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4242/trunk/app/views/issues/bulk_edit.rhtml +/svn/!svn/ver/4533/trunk/app/views/issues/bulk_edit.rhtml END _form.rhtml K 25 @@ -39,12 +39,6 @@ V 60 /svn/!svn/ver/3151/trunk/app/views/issues/_form_update.rhtml END -index.xml.builder -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3671/trunk/app/views/issues/index.xml.builder -END index.rhtml K 25 svn:wc:ra_dav:version-url @@ -55,7 +49,7 @@ K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/4012/trunk/app/views/issues/_sidebar.rhtml +/svn/!svn/ver/4908/trunk/app/views/issues/_sidebar.rhtml END _list.rhtml K 25 @@ -63,17 +57,17 @@ V 53 /svn/!svn/ver/4056/trunk/app/views/issues/_list.rhtml END -show.xml.builder +index.api.rsb K 25 svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3729/trunk/app/views/issues/show.xml.builder +V 55 +/svn/!svn/ver/4489/trunk/app/views/issues/index.api.rsb END show.rhtml K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/4264/trunk/app/views/issues/show.rhtml +/svn/!svn/ver/4530/trunk/app/views/issues/show.rhtml END _form_custom_fields.rhtml K 25 @@ -91,7 +85,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/3898/trunk/app/views/issues/_changesets.rhtml +/svn/!svn/ver/4652/trunk/app/views/issues/_changesets.rhtml END _edit.rhtml K 25 @@ -99,17 +93,23 @@ 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 -edit.rhtml +show.api.rsb K 25 svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/1129/trunk/app/views/issues/edit.rhtml +V 54 +/svn/!svn/ver/4741/trunk/app/views/issues/show.api.rsb END destroy.rhtml K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/entries --- a/app/views/issues/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issues http://redmine.rubyforge.org/svn -2010-10-30T16:15:31.867344Z -4311 -jbbarth +2011-02-21T13:34:33.010064Z +4908 +jplang @@ -32,11 +32,11 @@ -2010-09-24T12:48:29.596042Z -4659150afe6ae87105eaa29894e4d488 -2010-09-06T00:48:44.764418Z -4065 -edavis10 +2011-03-03T11:05:11.000000Z +071e7d5deebfed5ec01c6fa478e57a6d +2011-01-22T13:28:20.816262Z +4741 +jplang has-props @@ -58,41 +58,7 @@ -1816 - -_action_menu.rhtml -file - - - - -2010-11-19T13:04:50.824922Z -74c6e939ebb113c49a367fff0f463f63 -2010-10-15T23:11:05.712143Z -4258 -edavis10 - - - - - - - - - - - - - - - - - - - - - -1285 +1763 _history.rhtml file @@ -100,7 +66,7 @@ -2010-09-24T12:48:29.596042Z +2011-03-03T11:05:11.000000Z 8d719ade30044f529f104cda9dcdd6f4 2010-09-05T22:57:20.669640Z 4062 @@ -128,13 +94,81 @@ 859 +_action_menu.rhtml +file + + + + +2011-03-03T11:05:11.000000Z +74c6e939ebb113c49a367fff0f463f63 +2010-10-15T23:11:05.712143Z +4258 +edavis10 + + + + + + + + + + + + + + + + + + + + + +1285 + +bulk_edit.rhtml +file + + + + +2011-03-03T11:05:11.000000Z +f3bdc270087564333ffdacd38f1d363c +2010-12-18T14:14:04.023240Z +4533 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3443 + _form.rhtml file -2010-11-19T13:04:50.824922Z +2011-03-03T11:05:11.000000Z 7c3d2a41291eabbd1c7e28139be69e49 2010-10-30T16:15:31.867344Z 4311 @@ -162,47 +196,13 @@ 2033 -bulk_edit.rhtml -file - - - - -2010-11-19T13:04:50.824922Z -b60c0aee0477249fc72d3206e30a8a07 -2010-10-08T03:09:51.863032Z -4242 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -3438 - _form_update.rhtml file -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z 00a1336147a304d10f556a97f7105a83 2009-12-11T18:48:34.197724Z 3151 @@ -230,47 +230,13 @@ 649 -index.xml.builder -file - - - - -2010-09-23T14:37:44.575742Z -ed6c218138334e3950cb971252374472 -2010-04-13T17:51:06.988056Z -3671 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1559 - index.rhtml file -2010-09-24T12:48:29.596042Z +2011-03-03T11:05:11.000000Z 5a8516dceeaac8769ab1780f8e9cccd9 2010-09-16T21:33:49.399868Z 4093 @@ -304,11 +270,11 @@ -2010-09-23T14:37:44.571741Z -c2e4e73b27a58d99224ccc2d7f35dc84 -2010-08-22T18:30:26.413363Z -4012 -edavis10 +2011-03-03T11:40:18.000000Z +b9c2ef98cde787dfe8b1b0b4df497613 +2011-02-21T13:34:33.010064Z +4908 +jplang has-props @@ -330,7 +296,7 @@ -1135 +901 _list.rhtml file @@ -338,7 +304,7 @@ -2010-09-24T12:48:29.596042Z +2011-03-03T11:05:11.000000Z b5bd20e1b16f321b87b14ec6d0b7a9e7 2010-09-03T19:59:49.465806Z 4056 @@ -366,16 +332,16 @@ 1772 -show.xml.builder +index.api.rsb file -2010-09-23T14:37:44.575742Z -1a197244651b647927c95d8bcbb2b46d -2010-05-01T14:07:36.553776Z -3729 +2011-03-03T11:05:11.000000Z +db6f5533a330ebdcd1dd5e4c47098024 +2010-12-11T13:13:49.013705Z +4489 jplang has-props @@ -398,7 +364,7 @@ -2726 +1467 show.rhtml file @@ -406,10 +372,10 @@ -2010-11-19T13:04:50.824922Z -1f2adc49d35b7299cebfc9aff8152908 -2010-10-19T19:26:07.436051Z -4264 +2011-03-03T11:05:11.000000Z +f147a1cbca0263a122d10bf674d6dcbf +2010-12-18T13:40:50.641112Z +4530 jplang has-props @@ -432,7 +398,7 @@ -5399 +5468 _form_custom_fields.rhtml file @@ -440,7 +406,7 @@ -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z 5cac68d4655699c1a4ce40ef17da7b0a 2009-07-29T19:04:27.717761Z 2827 @@ -468,47 +434,13 @@ 353 -_changesets.rhtml -file - - - - -2010-09-23T14:37:44.571741Z -4c03735a361a24cc60a70975502bace7 -2010-07-29T15:48:53.812065Z -3898 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -509 - _list_simple.rhtml file -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z 334ec8cd87b661a181185092c242c41d 2010-08-08T07:07:20.961363Z 3924 @@ -536,13 +468,47 @@ 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 -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z ebae2e20ea4028620967382b877b5860 2010-08-18T15:01:35.032314Z 3946 @@ -570,13 +536,47 @@ 2768 +edit.rhtml +file + + + + +2011-03-03T11:05:11.000000Z +4b6048de503364b0ef668df08cceb602 +2008-02-09T16:11:18.249226Z +1129 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +90 + _attributes.rhtml file -2010-09-24T12:48:29.599802Z +2011-03-03T11:05:11.000000Z e2c801f0755567e34186cdbbc510d29d 2010-09-16T18:27:33.887969Z 4090 @@ -604,16 +604,16 @@ 2461 -edit.rhtml +show.api.rsb file -2010-09-23T14:37:44.575742Z -4b6048de503364b0ef668df08cceb602 -2008-02-09T16:11:18.249226Z -1129 +2011-03-03T11:05:11.000000Z +cdb3db6cd78da1f46578c9da61923c4e +2011-01-22T13:28:20.816262Z +4741 jplang has-props @@ -636,7 +636,7 @@ -90 +2808 destroy.rhtml file @@ -644,7 +644,7 @@ -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z b429d0e7dd6b3ef7bc1a28bdf0aeaf34 2009-04-24T17:18:36.117696Z 2685 @@ -678,7 +678,7 @@ -2010-11-19T13:04:50.824922Z +2011-03-03T11:05:11.000000Z 9889d4cce0dfd6d224e85fc1f489c623 2010-10-30T16:15:31.867344Z 4311 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/prop-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/issues/.svn/prop-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/prop-base/index.xml.builder.svn-base --- a/app/views/issues/.svn/prop-base/index.xml.builder.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/prop-base/show.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/issues/.svn/prop-base/show.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/prop-base/show.xml.builder.svn-base --- a/app/views/issues/.svn/prop-base/show.xml.builder.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/_changesets.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_changesets.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/.svn/text-base/_changesets.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ <% changesets.each do |changeset| %>
-

<%= link_to("#{l(:label_revision)} #{changeset.revision}", - :controller => 'repositories', :action => 'revision', :id => changeset.project, :rev => changeset.revision) %>
+

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

<%= textilizable(changeset, :comments) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/_relations.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_relations.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/.svn/text-base/_relations.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -6,9 +6,9 @@

<%=l(:label_related_issues)%>

-<% if @issue.relations.any? %> +<% if @relations.present? %>
@@ -70,9 +79,10 @@
-<% top = headers_height + 8 %> -<%= @gantt.subjects(:headers_height => headers_height, :top => top, :g_width => g_width) %> +
+<%= @gantt.subjects %> +
-<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %> +<% @relations.each do |relation| %> - + <% end -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/show.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/users/.svn/text-base/show.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,24 @@ +api.user do + api.id @user.id + api.login @user.login if User.current.admin? + api.firstname @user.firstname + api.lastname @user.lastname + api.mail @user.mail if User.current.admin? || !@user.pref.hide_mail + api.created_on @user.created_on + api.last_login_on @user.last_login_on + + render_api_custom_values @user.visible_custom_field_values, api + + api.array :memberships do + @memberships.each do |membership| + api.membership do + api.project :id => membership.project.id, :name => membership.project.name + api.array :roles do + membership.roles.each do |role| + api.role :id => role.id, :name => role.name + end + end + end if membership.project + end + end if include_in_api_response?('memberships') && @memberships +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/_form.rhtml --- a/app/views/users/_form.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/_form.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -55,11 +55,9 @@

<%= 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 %>
-

-<%= password_field_tag 'password', nil, :size => 25 %>
+

<%= f.password_field :password, :required => true, :size => 25 %>
<%= l(:text_caracters_minimum, :count => Setting.password_min_length) %>

-

-<%= password_field_tag 'password_confirmation', nil, :size => 25 %>

+

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

diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/_mail_notifications.html.erb --- a/app/views/users/_mail_notifications.html.erb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/_mail_notifications.html.erb Thu Mar 03 12:11:53 2011 +0000 @@ -1,8 +1,8 @@

-<%= select_tag 'notification_option', options_for_select(@notification_options.collect {|o| [l(o.last), o.first]}, @notification_option.to_sym), - :onchange => 'if ($("notification_option").value == "selected") {Element.show("notified-projects")} else {Element.hide("notified-projects")}' %> +<%= select_tag 'user[mail_notification]', options_for_select(user_mail_notification_options(@user), @user.mail_notification), + :onchange => 'if (this.value == "selected") {Element.show("notified-projects")} else {Element.hide("notified-projects")}' %>

-<% content_tag 'div', :id => 'notified-projects', :style => (@notification_option == 'selected' ? '' : 'display:none;') do %> +<% content_tag 'div', :id => 'notified-projects', :style => (@user.mail_notification == 'selected' ? '' : 'display:none;') do %>

<% @user.projects.each do |project| %>
<% end %>

diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/_memberships.rhtml --- a/app/views/users/_memberships.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/_memberships.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -38,8 +38,8 @@ <%= call_hook(:view_users_memberships_table_row, :user => @user, :membership => membership, :roles => roles, :projects => projects )%> + <% end; reset_cycle %> -<% end; reset_cycle %>
<%= 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? %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/_sidebar.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_sidebar.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/.svn/text-base/_sidebar.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -13,11 +13,5 @@ <% end %> <%= call_hook(:view_issues_sidebar_planning_bottom) %> -<% unless sidebar_queries.empty? -%> -

<%= l(:label_query_plural) %>

- -<% sidebar_queries.each do |query| -%> -<%= link_to(h(query.name), :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query) %>
-<% end -%> +<%= render_sidebar_queries %> <%= call_hook(:view_issues_sidebar_queries_bottom) %> -<% end -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/bulk_edit.rhtml.svn-base --- a/app/views/issues/.svn/text-base/bulk_edit.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/.svn/text-base/bulk_edit.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,7 @@ <%= select_tag('issue[fixed_version_id]', content_tag('option', l(:label_no_change_option), :value => '') + content_tag('option', l(:label_none), :value => 'none') + - version_options_for_select(@project.shared_versions.open)) %> + version_options_for_select(@project.shared_versions.open.sort)) %>

<% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/issues/.svn/text-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,28 @@ +api.array :issues, api_meta(:total_count => @issue_count, :offset => @offset, :limit => @limit) do + @issues.each do |issue| + api.issue do + api.id issue.id + api.project(:id => issue.project_id, :name => issue.project.name) unless issue.project.nil? + api.tracker(:id => issue.tracker_id, :name => issue.tracker.name) unless issue.tracker.nil? + api.status(:id => issue.status_id, :name => issue.status.name) unless issue.status.nil? + api.priority(:id => issue.priority_id, :name => issue.priority.name) unless issue.priority.nil? + api.author(:id => issue.author_id, :name => issue.author.name) unless issue.author.nil? + api.assigned_to(:id => issue.assigned_to_id, :name => issue.assigned_to.name) unless issue.assigned_to.nil? + api.category(:id => issue.category_id, :name => issue.category.name) unless issue.category.nil? + api.fixed_version(:id => issue.fixed_version_id, :name => issue.fixed_version.name) unless issue.fixed_version.nil? + api.parent(:id => issue.parent_id) unless issue.parent.nil? + + api.subject issue.subject + api.description issue.description + api.start_date issue.start_date + api.due_date issue.due_date + api.done_ratio issue.done_ratio + api.estimated_hours issue.estimated_hours + + render_api_custom_values issue.custom_field_values, api + + api.created_on issue.created_on + api.updated_on issue.updated_on + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/index.xml.builder.svn-base --- a/app/views/issues/.svn/text-base/index.xml.builder.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -xml.instruct! -xml.issues :type => 'array' do - @issues.each do |issue| - xml.issue do - xml.id issue.id - xml.project(:id => issue.project_id, :name => issue.project.name) unless issue.project.nil? - xml.tracker(:id => issue.tracker_id, :name => issue.tracker.name) unless issue.tracker.nil? - xml.status(:id => issue.status_id, :name => issue.status.name) unless issue.status.nil? - xml.priority(:id => issue.priority_id, :name => issue.priority.name) unless issue.priority.nil? - xml.author(:id => issue.author_id, :name => issue.author.name) unless issue.author.nil? - xml.assigned_to(:id => issue.assigned_to_id, :name => issue.assigned_to.name) unless issue.assigned_to.nil? - xml.category(:id => issue.category_id, :name => issue.category.name) unless issue.category.nil? - xml.fixed_version(:id => issue.fixed_version_id, :name => issue.fixed_version.name) unless issue.fixed_version.nil? - xml.parent(:id => issue.parent_id) unless issue.parent.nil? - - xml.subject issue.subject - xml.description issue.description - xml.start_date issue.start_date - xml.due_date issue.due_date - xml.done_ratio issue.done_ratio - xml.estimated_hours issue.estimated_hours - - xml.custom_fields do - issue.custom_field_values.each do |custom_value| - xml.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name - end - end - - xml.created_on issue.created_on - xml.updated_on issue.updated_on - end - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/show.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/issues/.svn/text-base/show.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,61 @@ +api.issue do + api.id @issue.id + api.project(:id => @issue.project_id, :name => @issue.project.name) unless @issue.project.nil? + api.tracker(:id => @issue.tracker_id, :name => @issue.tracker.name) unless @issue.tracker.nil? + api.status(:id => @issue.status_id, :name => @issue.status.name) unless @issue.status.nil? + api.priority(:id => @issue.priority_id, :name => @issue.priority.name) unless @issue.priority.nil? + api.author(:id => @issue.author_id, :name => @issue.author.name) unless @issue.author.nil? + api.assigned_to(:id => @issue.assigned_to_id, :name => @issue.assigned_to.name) unless @issue.assigned_to.nil? + api.category(:id => @issue.category_id, :name => @issue.category.name) unless @issue.category.nil? + api.fixed_version(:id => @issue.fixed_version_id, :name => @issue.fixed_version.name) unless @issue.fixed_version.nil? + api.parent(:id => @issue.parent_id) unless @issue.parent.nil? + + api.subject @issue.subject + api.description @issue.description + api.start_date @issue.start_date + api.due_date @issue.due_date + api.done_ratio @issue.done_ratio + api.estimated_hours @issue.estimated_hours + api.spent_hours(@issue.spent_hours) if User.current.allowed_to?(:view_time_entries, @project) + + render_api_custom_values @issue.custom_field_values, api + + api.created_on @issue.created_on + api.updated_on @issue.updated_on + + render_api_issue_children(@issue, api) if include_in_api_response?('children') + + api.array :relations do + @relations.each do |relation| + api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay) + end + end if include_in_api_response?('relations') && @relations.present? + + api.array :changesets do + @issue.changesets.each do |changeset| + api.changeset :revision => changeset.revision do + api.user(:id => changeset.user_id, :name => changeset.user.name) unless changeset.user.nil? + api.comments changeset.comments + api.committed_on changeset.committed_on + end + end + end if include_in_api_response?('changesets') && User.current.allowed_to?(:view_changesets, @project) + + api.array :journals do + @issue.journals.each do |journal| + api.journal :id => journal.id do + api.user(:id => journal.user_id, :name => journal.user.name) unless journal.user.nil? + api.notes journal.notes + api.created_on journal.created_on + api.array :details do + journal.details.each do |detail| + api.detail :property => detail.property, :name => detail.prop_key do + api.old_value detail.old_value + api.new_value detail.value + end + end + end + end + end + end if include_in_api_response?('journals') +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/show.rhtml.svn-base --- a/app/views/issues/.svn/text-base/show.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/.svn/text-base/show.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -47,14 +47,16 @@ <% if @issue.description? || @issue.attachments.any? -%>
-
-<%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') if @issue.description? %> -
- -
-<%= textilizable @issue, :description, :attachments => @issue.attachments %> -
- +<% if @issue.description? %> +
+ <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:controller => 'journals', :action => 'new', :id => @issue} }, :class => 'icon icon-comment') %> +
+ +

<%=l(:field_description)%>

+
+ <%= textilizable @issue, :description, :attachments => @issue.attachments %> +
+<% end %> <%= link_to_attachments @issue %> <% end -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/.svn/text-base/show.xml.builder.svn-base --- a/app/views/issues/.svn/text-base/show.xml.builder.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -xml.instruct! -xml.issue do - xml.id @issue.id - xml.project(:id => @issue.project_id, :name => @issue.project.name) unless @issue.project.nil? - xml.tracker(:id => @issue.tracker_id, :name => @issue.tracker.name) unless @issue.tracker.nil? - xml.status(:id => @issue.status_id, :name => @issue.status.name) unless @issue.status.nil? - xml.priority(:id => @issue.priority_id, :name => @issue.priority.name) unless @issue.priority.nil? - xml.author(:id => @issue.author_id, :name => @issue.author.name) unless @issue.author.nil? - xml.assigned_to(:id => @issue.assigned_to_id, :name => @issue.assigned_to.name) unless @issue.assigned_to.nil? - xml.category(:id => @issue.category_id, :name => @issue.category.name) unless @issue.category.nil? - xml.fixed_version(:id => @issue.fixed_version_id, :name => @issue.fixed_version.name) unless @issue.fixed_version.nil? - xml.parent(:id => @issue.parent_id) unless @issue.parent.nil? - - xml.subject @issue.subject - xml.description @issue.description - xml.start_date @issue.start_date - xml.due_date @issue.due_date - xml.done_ratio @issue.done_ratio - xml.estimated_hours @issue.estimated_hours - if User.current.allowed_to?(:view_time_entries, @project) - xml.spent_hours @issue.spent_hours - end - - xml.custom_fields do - @issue.custom_field_values.each do |custom_value| - xml.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name - end - end unless @issue.custom_field_values.empty? - - xml.created_on @issue.created_on - xml.updated_on @issue.updated_on - - xml.relations do - @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| - xml.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay) - end - end - - xml.changesets do - @issue.changesets.each do |changeset| - xml.changeset :revision => changeset.revision do - xml.user(:id => changeset.user_id, :name => changeset.user.name) unless changeset.user.nil? - xml.comments changeset.comments - xml.committed_on changeset.committed_on - end - end - end if User.current.allowed_to?(:view_changesets, @project) && @issue.changesets.any? - - xml.journals do - @issue.journals.each do |journal| - xml.journal :id => journal.id do - xml.user(:id => journal.user_id, :name => journal.user.name) unless journal.user.nil? - xml.notes journal.notes - xml.details do - journal.details.each do |detail| - xml.detail :property => detail.property, :name => detail.prop_key, :old => detail.old_value, :new => detail.value - end - end - end - end - end unless @issue.journals.empty? -end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/_changesets.rhtml --- a/app/views/issues/_changesets.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/_changesets.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ <% changesets.each do |changeset| %>
-

<%= link_to("#{l(:label_revision)} #{changeset.revision}", - :controller => 'repositories', :action => 'revision', :id => changeset.project, :rev => changeset.revision) %>
+

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

<%= textilizable(changeset, :comments) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/_relations.rhtml --- a/app/views/issues/_relations.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/_relations.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -6,9 +6,9 @@

<%=l(:label_related_issues)%>

-<% if @issue.relations.any? %> +<% if @relations.present? %> -<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %> +<% @relations.each do |relation| %> -<% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %> - +<% changeset = @project.repository.find_changeset_by_name(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %> + - + <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/.svn/text-base/_revisions.rhtml.svn-base --- a/app/views/repositories/.svn/text-base/_revisions.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/.svn/text-base/_revisions.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -13,9 +13,9 @@ <% line_num = 1 %> <% revisions.each do |changeset| %> - - - + + + diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/.svn/text-base/annotate.rhtml.svn-base --- a/app/views/repositories/.svn/text-base/annotate.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/.svn/text-base/annotate.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -19,7 +19,7 @@ + <%= (revision.identifier ? link_to_revision(revision, @project) : format_revision(revision)) if revision %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/.svn/text-base/diff.rhtml.svn-base --- a/app/views/repositories/.svn/text-base/diff.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/.svn/text-base/diff.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -

<%= l(:label_revision) %> <%= format_revision(@rev_to) + ':' if @rev_to %><%= format_revision(@rev) %> <%=h @path %>

+

<%= l(:label_revision) %> <%= @diff_format_revisions %> <%=h @path %>

<% form_tag({:path => to_path_param(@path)}, :method => 'get') do %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/.svn/text-base/revision.rhtml.svn-base --- a/app/views/repositories/.svn/text-base/revision.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/.svn/text-base/revision.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,25 +1,25 @@
« <% unless @changeset.previous.nil? -%> - <%= link_to_revision(@changeset.previous.revision, @project, :text => l(:label_previous)) %> + <%= link_to_revision(@changeset.previous, @project, :text => l(:label_previous)) %> <% else -%> <%= l(:label_previous) %> <% end -%> | <% unless @changeset.next.nil? -%> - <%= link_to_revision(@changeset.next.revision, @project, :text => l(:label_next)) %> + <%= link_to_revision(@changeset.next, @project, :text => l(:label_next)) %> <% else -%> <%= l(:label_next) %> <% end -%> »  <% form_tag({:controller => 'repositories', :action => 'revision', :id => @project, :rev => nil}, :method => :get) do %> - <%= text_field_tag 'rev', @rev[0,8], :size => 8 %> + <%= text_field_tag 'rev', @rev, :size => 8 %> <%= submit_tag 'OK', :name => nil %> <% end %>
-

<%= l(:label_revision) %> <%= format_revision(@changeset.revision) %>

+

<%= l(:label_revision) %> <%= format_revision(@changeset) %>

<% if @changeset.scmid %>ID: <%= @changeset.scmid %>
<% end %> <%= authoring(@changeset.committed_on, @changeset.author) %>

@@ -45,7 +45,7 @@
  • <%= l(:label_deleted) %>
  • -

    <%= link_to(l(:label_view_diff), :action => 'diff', :id => @project, :path => "", :rev => @changeset.revision) if @changeset.changes.any? %>

    +

    <%= link_to(l(:label_view_diff), :action => 'diff', :id => @project, :path => "", :rev => @changeset.identifier) if @changeset.changes.any? %>

    <%= render_changeset_changes %> @@ -56,4 +56,4 @@ <%= stylesheet_link_tag "scm" %> <% end %> -<% html_title("#{l(:label_revision)} #{@changeset.revision}") -%> +<% html_title("#{l(:label_revision)} #{format_revision(@changeset)}") -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/_breadcrumbs.rhtml --- a/app/views/repositories/_breadcrumbs.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/_breadcrumbs.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,6 @@ / <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %> <% end %> -<%= "@ #{h revision}" if revision %> +<%= "@ #{h format_revision(@changeset)}" if @changeset %> <% html_title(with_leading_slash(path)) -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/_dir_list_content.rhtml --- a/app/views/repositories/_dir_list_content.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/_dir_list_content.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -1,25 +1,27 @@ <% @entries.each do |entry| %> <% tr_id = Digest::MD5.hexdigest(entry.path) depth = params[:depth].to_i %> +<% ent_path = replace_invalid_utf8(entry.path) %> +<% ent_name = replace_invalid_utf8(entry.name) %>
    -<% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier.to_s) if entry.lastrev && entry.lastrev.identifier %> +<% changeset = @project.repository.find_changeset_by_name(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %> - + <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/diff.rhtml --- a/app/views/repositories/diff.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/diff.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -

    <%= l(:label_revision) %> <%= format_revision(@rev_to) + ':' if @rev_to %><%= format_revision(@rev) %> <%=h @path %>

    +

    <%= l(:label_revision) %> <%= @diff_format_revisions %> <%=h @path %>

    <% form_tag({:path => to_path_param(@path)}, :method => 'get') do %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/repositories/revision.rhtml --- a/app/views/repositories/revision.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/repositories/revision.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -56,4 +56,4 @@ <%= stylesheet_link_tag "scm" %> <% end %> -<% html_title("#{l(:label_revision)} #{@changeset.revision}") -%> +<% html_title("#{l(:label_revision)} #{format_revision(@changeset)}") -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/roles/.svn/all-wcprops --- a/app/views/roles/.svn/all-wcprops Tue Feb 22 16:48:15 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 40 -/svn/!svn/ver/3435/trunk/app/views/roles -END -report.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/2810/trunk/app/views/roles/report.rhtml -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3435/trunk/app/views/roles/index.html.erb -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/1943/trunk/app/views/roles/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/2979/trunk/app/views/roles/edit.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/2810/trunk/app/views/roles/new.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/roles/.svn/entries --- a/app/views/roles/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/roles/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/roles http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.675736Z +2011-03-03T11:05:11.000000Z cbcd3851055c3f5a5aa20d005b086872 2009-07-05T12:22:02.133266Z 2810 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.675736Z +2011-03-03T11:05:11.000000Z 82f5657ab6c01b56b039af0cf2312ade 2010-02-15T16:41:16.346582Z 3435 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.675736Z +2011-03-03T11:05:11.000000Z 652c40985320a23285c8e27439418f22 2008-10-24T15:24:35.832581Z 1943 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.675736Z +2011-03-03T11:05:11.000000Z 4bcaa15de1de193dd1f98128b71a420b 2009-10-25T13:28:36.522470Z 2979 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.675736Z +2011-03-03T11:05:11.000000Z 0ff8206c0e77e6356f9d16ccaeff13e2 2009-07-05T12:22:02.133266Z 2810 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/search/.svn/all-wcprops --- a/app/views/search/.svn/all-wcprops Tue Feb 22 16:48:15 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 41 -/svn/!svn/ver/2895/trunk/app/views/search -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/2895/trunk/app/views/search/index.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/search/.svn/entries --- a/app/views/search/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/search/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/search http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.679779Z +2011-03-03T11:05:10.000000Z 0235b1dd9d5f01dbaaab2b59dc006f2e 2009-09-20T14:06:57.257282Z 2895 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/.svn/all-wcprops --- a/app/views/settings/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,19 +1,19 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4362/trunk/app/views/settings +/svn/!svn/ver/4983/trunk/app/views/settings END _issues.rhtml K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/3198/trunk/app/views/settings/_issues.rhtml +/svn/!svn/ver/4513/trunk/app/views/settings/_issues.rhtml END _general.rhtml K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/3372/trunk/app/views/settings/_general.rhtml +/svn/!svn/ver/4426/trunk/app/views/settings/_general.rhtml END _authentication.rhtml K 25 @@ -37,7 +37,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/3198/trunk/app/views/settings/_display.rhtml +/svn/!svn/ver/4811/trunk/app/views/settings/_display.rhtml END edit.rhtml K 25 @@ -49,13 +49,13 @@ K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/3440/trunk/app/views/settings/_repositories.rhtml +/svn/!svn/ver/4983/trunk/app/views/settings/_repositories.rhtml END _notifications.rhtml K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4362/trunk/app/views/settings/_notifications.rhtml +/svn/!svn/ver/4730/trunk/app/views/settings/_notifications.rhtml END _projects.rhtml K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/.svn/entries --- a/app/views/settings/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/settings http://redmine.rubyforge.org/svn -2010-11-02T19:00:36.834304Z -4362 -edavis10 +2011-03-01T10:27:51.597350Z +4983 +tmaruyama @@ -32,10 +32,10 @@ -2010-09-23T14:37:44.683778Z -cafaf758de88dd8df50aeb849e398b77 -2009-12-19T20:07:09.039389Z -3198 +2011-03-03T11:05:10.000000Z +dad877e4db2f583979314edcb017bb1b +2010-12-15T21:18:06.237327Z +4513 jplang has-props @@ -58,7 +58,7 @@ -722 +787 _general.rhtml file @@ -66,11 +66,11 @@ -2010-09-23T14:37:44.683778Z -c0378ca172ae32638c076f39dd11e980 -2010-02-06T10:40:21.867545Z -3372 -jplang +2011-03-03T11:05:10.000000Z +7307d5f65399ab2f28eac1162a330678 +2010-11-25T20:27:44.648840Z +4426 +winterheart has-props @@ -92,7 +92,7 @@ -1354 +1446 _authentication.rhtml file @@ -100,7 +100,7 @@ -2010-11-19T13:04:48.200851Z +2011-03-03T11:05:10.000000Z 8005b162966a27cd4e7c30022320b47e 2010-10-29T22:28:24.886659Z 4306 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.683778Z +2011-03-03T11:05:10.000000Z 1da887b84f272fe4cde6fafaf198529a 2009-12-23T18:35:19.208194Z 3226 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.687777Z +2011-03-03T11:05:10.000000Z 1836fa87f24f7f62eafaed8d1886ca67 2007-10-13T14:11:06.987513Z 837 @@ -202,11 +202,11 @@ -2010-09-23T14:37:44.683778Z -af00d651b626c36ca365bd748f55ec40 -2009-12-19T20:07:09.039389Z -3198 -jplang +2011-03-03T11:40:18.000000Z +55169c45bb26caf3ff0c92c5b07d7bbe +2011-02-12T08:16:37.660908Z +4811 +jbbarth has-props @@ -228,7 +228,7 @@ -1041 +1061 edit.rhtml file @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.687777Z +2011-03-03T11:05:10.000000Z a629426fc7edef8be6c4545bce9a5abd 2009-09-12T09:13:13.676884Z 2871 @@ -270,11 +270,11 @@ -2010-09-23T14:37:44.687777Z -25dd64f95ba856913a30a41296c7de0a -2010-02-16T22:41:59.625572Z -3440 -edavis10 +2011-03-03T11:40:18.000000Z +7bc500aa382125fa379e7539d4566431 +2011-03-01T10:27:51.597350Z +4983 +tmaruyama has-props @@ -296,7 +296,7 @@ -1837 +2231 _notifications.rhtml file @@ -304,11 +304,11 @@ -2010-11-19T13:04:48.200851Z -3d9920b9875183abe7932cdfd335d36a -2010-11-02T19:00:36.834304Z -4362 -edavis10 +2011-03-03T11:05:10.000000Z +9f784c1426ed466df89a56d5ae835efe +2011-01-16T15:36:42.998302Z +4730 +jplang has-props @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.687777Z +2011-03-03T11:05:10.000000Z de489dd7dc60d569a855c1f33d941552 2009-12-19T20:07:09.039389Z 3198 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/.svn/text-base/_display.rhtml.svn-base --- a/app/views/settings/.svn/text-base/_display.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/.svn/text-base/_display.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@

    <%= setting_check_box :gravatar_enabled %>

    -

    <%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid']], :blank => :label_none %>

    +

    <%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid'], ["Retro", "retro"]], :blank => :label_none %>

    <%= submit_tag l(:button_save) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/.svn/text-base/_general.rhtml.svn-base --- a/app/views/settings/.svn/text-base/_general.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/.svn/text-base/_general.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -6,7 +6,7 @@

    <%= setting_text_area :welcome_text, :cols => 60, :rows => 5, :class => 'wiki-edit' %>

    <%= wikitoolbar_for 'settings_welcome_text' %> -

    <%= setting_text_field :attachment_max_size, :size => 6 %> KB

    +

    <%= setting_text_field :attachment_max_size, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= setting_text_field :per_page_options, :size => 20 %>
    <%= l(:text_comma_separated) %>

    @@ -26,7 +26,7 @@

    <%= setting_text_field :feeds_limit, :size => 6 %>

    -

    <%= setting_text_field :file_max_size_displayed, :size => 6 %> KB

    +

    <%= setting_text_field :file_max_size_displayed, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= setting_text_field :diff_max_lines_displayed, :size => 6 %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/.svn/text-base/_issues.rhtml.svn-base --- a/app/views/settings/.svn/text-base/_issues.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/.svn/text-base/_issues.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -8,6 +8,8 @@

    <%= setting_select :issue_done_ratio, Issue::DONE_RATIO_OPTIONS.collect {|i| [l("setting_issue_done_ratio_#{i}"), i]} %>

    <%= setting_text_field :issues_export_limit, :size => 6 %>

    + +

    <%= setting_text_field :gantt_items_limit, :size => 6 %>

    <%= l(:setting_issue_list_default_columns) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/.svn/text-base/_notifications.rhtml.svn-base --- a/app/views/settings/.svn/text-base/_notifications.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/.svn/text-base/_notifications.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -8,7 +8,7 @@

    <%= setting_check_box :plain_text_mail %>

    -

    <%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %>

    +

    <%= setting_select(:default_notification_option, User.valid_notification_options.collect {|o| [l(o.last), o.first.to_s]}) %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/.svn/text-base/_repositories.rhtml.svn-base --- a/app/views/settings/.svn/text-base/_repositories.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/.svn/text-base/_repositories.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -18,8 +18,6 @@

    <%= setting_text_field :repositories_encodings, :size => 60 %>
    <%= l(:text_comma_separated) %>

    -

    <%= setting_select :commit_logs_encoding, Setting::ENCODINGS %>

    -

    <%= setting_text_field :repository_log_display_limit, :size => 6 %>

    @@ -31,6 +29,13 @@  <%= l(:label_applied_status) %>: <%= setting_select :commit_fix_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>  <%= l(:field_done_ratio) %>: <%= setting_select :commit_fix_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
    <%= l(:text_comma_separated) %>

    + +

    <%= setting_check_box :commit_logtime_enabled, + :onclick => "if (this.checked) { Form.Element.enable('settings_commit_logtime_activity_id'); } else { Form.Element.disable('settings_commit_logtime_activity_id'); }"%>

    + +

    <%= setting_select :commit_logtime_activity_id, + [[l(:label_default), 0]] + TimeEntryActivity.shared.all.collect{|activity| [activity.name, activity.id.to_s]}, + :disabled => !Setting.commit_logtime_enabled?%>

    <%= submit_tag l(:button_save) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/_display.rhtml --- a/app/views/settings/_display.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/_display.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@

    <%= setting_check_box :gravatar_enabled %>

    -

    <%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid']], :blank => :label_none %>

    +

    <%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid'], ["Retro", "retro"]], :blank => :label_none %>

    <%= submit_tag l(:button_save) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/_general.rhtml --- a/app/views/settings/_general.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/_general.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -9,10 +9,10 @@

    <%= setting_text_area :welcome_text, :cols => 60, :rows => 5, :class => 'wiki-edit' %>

    <%= wikitoolbar_for 'settings_welcome_text' %> -

    <%= setting_text_area :tipoftheday_text, :cols => 60, :rows => 5, :class => 'wiki-edit' %>

    +

    <%= setting_text_field :attachment_max_size, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= wikitoolbar_for 'settings_tipoftheday_text' %> -

    <%= setting_text_field :attachment_max_size, :size => 6 %> KB

    +

    <%= setting_text_field :attachment_max_size, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= setting_text_field :per_page_options, :size => 20 %>
    <%= l(:text_comma_separated) %>

    @@ -32,7 +32,7 @@

    <%= setting_text_field :feeds_limit, :size => 6 %>

    -

    <%= setting_text_field :file_max_size_displayed, :size => 6 %> KB

    +

    <%= setting_text_field :file_max_size_displayed, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= setting_text_field :diff_max_lines_displayed, :size => 6 %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/_issues.rhtml --- a/app/views/settings/_issues.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/_issues.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -8,6 +8,8 @@

    <%= setting_select :issue_done_ratio, Issue::DONE_RATIO_OPTIONS.collect {|i| [l("setting_issue_done_ratio_#{i}"), i]} %>

    <%= setting_text_field :issues_export_limit, :size => 6 %>

    + +

    <%= setting_text_field :gantt_items_limit, :size => 6 %>

    <%= l(:setting_issue_list_default_columns) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/_notifications.rhtml --- a/app/views/settings/_notifications.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/_notifications.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -8,7 +8,7 @@

    <%= setting_check_box :plain_text_mail %>

    -

    <%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %>

    +

    <%= setting_select(:default_notification_option, User.valid_notification_options.collect {|o| [l(o.last), o.first.to_s]}) %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/settings/_repositories.rhtml --- a/app/views/settings/_repositories.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/settings/_repositories.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -18,8 +18,6 @@

    <%= setting_text_field :repositories_encodings, :size => 60 %>
    <%= l(:text_comma_separated) %>

    -

    <%= setting_select :commit_logs_encoding, Setting::ENCODINGS %>

    -

    <%= setting_text_field :repository_log_display_limit, :size => 6 %>

    @@ -31,6 +29,13 @@  <%= l(:label_applied_status) %>: <%= setting_select :commit_fix_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>  <%= l(:field_done_ratio) %>: <%= setting_select :commit_fix_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
    <%= l(:text_comma_separated) %>

    + +

    <%= setting_check_box :commit_logtime_enabled, + :onclick => "if (this.checked) { Form.Element.enable('settings_commit_logtime_activity_id'); } else { Form.Element.disable('settings_commit_logtime_activity_id'); }"%>

    + +

    <%= setting_select :commit_logtime_activity_id, + [[l(:label_default), 0]] + TimeEntryActivity.shared.all.collect{|activity| [activity.name, activity.id.to_s]}, + :disabled => !Setting.commit_logtime_enabled?%>

    <%= submit_tag l(:button_save) %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/time_entry_reports/.svn/all-wcprops --- a/app/views/time_entry_reports/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/4239/trunk/app/views/time_entry_reports -END -report.rhtml -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/4239/trunk/app/views/time_entry_reports/report.rhtml -END -_report_criteria.rhtml -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/4232/trunk/app/views/time_entry_reports/_report_criteria.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/time_entry_reports/.svn/entries --- a/app/views/time_entry_reports/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/time_entry_reports/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/time_entry_reports http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:48.181514Z +2011-03-03T11:05:10.000000Z d896f5cf56b2a3cd64887f239e584fdc 2010-10-07T15:51:09.349542Z 4239 @@ -66,7 +66,7 @@ -2010-11-19T13:04:48.181514Z +2011-03-03T11:05:10.000000Z 5fa73daf0a67b2a39fd10320bcd7ab45 2010-10-05T16:07:17.015270Z 4232 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/.svn/all-wcprops --- a/app/views/timelog/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/timelog/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/4250/trunk/app/views/timelog +/svn/!svn/ver/4466/trunk/app/views/timelog END _list.rhtml K 25 @@ -15,6 +15,12 @@ V 57 /svn/!svn/ver/4239/trunk/app/views/timelog/index.html.erb END +index.api.rsb +K 25 +svn:wc:ra_dav:version-url +V 56 +/svn/!svn/ver/4466/trunk/app/views/timelog/index.api.rsb +END edit.rhtml K 25 svn:wc:ra_dav:version-url @@ -27,3 +33,9 @@ V 60 /svn/!svn/ver/4235/trunk/app/views/timelog/_date_range.rhtml END +show.api.rsb +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/4466/trunk/app/views/timelog/show.api.rsb +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/.svn/entries --- a/app/views/timelog/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/timelog/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/timelog http://redmine.rubyforge.org/svn -2010-10-12T15:55:21.984670Z -4250 -edavis10 +2010-12-04T17:43:39.823144Z +4466 +jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 128d8975cacb0db79fc14a461544db09 2010-10-12T15:55:21.984670Z 4250 @@ -66,7 +66,7 @@ -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 404d6b75c96def01a9a6bf86a6f58697 2010-10-07T15:51:09.349542Z 4239 @@ -94,13 +94,47 @@ 1421 +index.api.rsb +file + + + + +2011-03-03T11:05:10.000000Z +9faa66f4b89685010b3683f26c387512 +2010-12-04T17:43:39.823144Z +4466 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +727 + edit.rhtml file -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 3bb82a2517a120b7a44add17f3369082 2010-10-11T15:31:42.953914Z 4248 @@ -134,7 +168,7 @@ -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 43628f95cde9503c20744c3b9fe9dfcd 2010-10-06T18:23:45.014848Z 4235 @@ -162,3 +196,37 @@ 1736 +show.api.rsb +file + + + + +2011-03-03T11:05:10.000000Z +5838cace900e781466a5826ba75b9f44 +2010-12-04T17:43:39.823144Z +4466 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +627 + diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/.svn/prop-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/timelog/.svn/prop-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/.svn/prop-base/show.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/timelog/.svn/prop-base/show.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/.svn/text-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/timelog/.svn/text-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,16 @@ +api.array :time_entries do + @entries.each do |time_entry| + api.time_entry do + api.id time_entry.id + api.project(:id => time_entry.project_id, :name => time_entry.project.name) unless time_entry.project.nil? + api.issue(:id => time_entry.issue_id) unless time_entry.issue.nil? + api.user(:id => time_entry.user_id, :name => time_entry.user.name) unless time_entry.user.nil? + api.activity(:id => time_entry.activity_id, :name => time_entry.activity.name) unless time_entry.activity.nil? + api.hours time_entry.hours + api.comments time_entry.comments + api.spent_on time_entry.spent_on + api.created_on time_entry.created_on + api.updated_on time_entry.updated_on + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/.svn/text-base/show.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/timelog/.svn/text-base/show.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,12 @@ +api.time_entry do + api.id @time_entry.id + api.project(:id => @time_entry.project_id, :name => @time_entry.project.name) unless @time_entry.project.nil? + api.issue(:id => @time_entry.issue_id) unless @time_entry.issue.nil? + api.user(:id => @time_entry.user_id, :name => @time_entry.user.name) unless @time_entry.user.nil? + api.activity(:id => @time_entry.activity_id, :name => @time_entry.activity.name) unless @time_entry.activity.nil? + api.hours @time_entry.hours + api.comments @time_entry.comments + api.spent_on @time_entry.spent_on + api.created_on @time_entry.created_on + api.updated_on @time_entry.updated_on +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/index.api.rsb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/timelog/index.api.rsb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,16 @@ +api.array :time_entries do + @entries.each do |time_entry| + api.time_entry do + api.id time_entry.id + api.project(:id => time_entry.project_id, :name => time_entry.project.name) unless time_entry.project.nil? + api.issue(:id => time_entry.issue_id) unless time_entry.issue.nil? + api.user(:id => time_entry.user_id, :name => time_entry.user.name) unless time_entry.user.nil? + api.activity(:id => time_entry.activity_id, :name => time_entry.activity.name) unless time_entry.activity.nil? + api.hours time_entry.hours + api.comments time_entry.comments + api.spent_on time_entry.spent_on + api.created_on time_entry.created_on + api.updated_on time_entry.updated_on + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/timelog/show.api.rsb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/timelog/show.api.rsb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,12 @@ +api.time_entry do + api.id @time_entry.id + api.project(:id => @time_entry.project_id, :name => @time_entry.project.name) unless @time_entry.project.nil? + api.issue(:id => @time_entry.issue_id) unless @time_entry.issue.nil? + api.user(:id => @time_entry.user_id, :name => @time_entry.user.name) unless @time_entry.user.nil? + api.activity(:id => @time_entry.activity_id, :name => @time_entry.activity.name) unless @time_entry.activity.nil? + api.hours @time_entry.hours + api.comments @time_entry.comments + api.spent_on @time_entry.spent_on + api.created_on @time_entry.created_on + api.updated_on @time_entry.updated_on +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/trackers/.svn/all-wcprops --- a/app/views/trackers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/3437/trunk/app/views/trackers -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3437/trunk/app/views/trackers/index.html.erb -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3162/trunk/app/views/trackers/_form.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3146/trunk/app/views/trackers/edit.rhtml -END -new.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3146/trunk/app/views/trackers/new.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/trackers/.svn/entries --- a/app/views/trackers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/trackers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/trackers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.695779Z +2011-03-03T11:05:10.000000Z 952031a6216d1b67897c30936b8c656c 2010-02-15T16:41:27.289923Z 3437 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.695779Z +2011-03-03T11:05:10.000000Z 0b8a4f0aead4d21c20c9cc8dd29141e5 2009-12-12T15:23:22.060140Z 3162 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.695779Z +2011-03-03T11:05:10.000000Z ac4b0e11130741048a5f7c7405bff3de 2009-12-09T11:03:55.646494Z 3146 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.695779Z +2011-03-03T11:05:10.000000Z cf313c286d40c5c44da29ad261b01421 2009-12-09T11:03:55.646494Z 3146 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/all-wcprops --- a/app/views/users/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4382/trunk/app/views/users +/svn/!svn/ver/4900/trunk/app/views/users END _general.rhtml K 25 @@ -13,7 +13,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/3924/trunk/app/views/users/_memberships.rhtml +/svn/!svn/ver/4508/trunk/app/views/users/_memberships.rhtml END _groups.rhtml K 25 @@ -31,7 +31,13 @@ K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/4223/trunk/app/views/users/_mail_notifications.html.erb +/svn/!svn/ver/4497/trunk/app/views/users/_mail_notifications.html.erb +END +index.api.rsb +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/4489/trunk/app/views/users/index.api.rsb END show.rhtml K 25 @@ -43,23 +49,29 @@ K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/4223/trunk/app/views/users/_form.rhtml +/svn/!svn/ver/4493/trunk/app/views/users/_form.rhtml +END +_preferences.html.erb +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4900/trunk/app/views/users/_preferences.html.erb END edit.rhtml K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4231/trunk/app/views/users/edit.rhtml -END -_preferences.html.erb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4223/trunk/app/views/users/_preferences.html.erb +/svn/!svn/ver/4729/trunk/app/views/users/edit.rhtml END index.rhtml K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/4231/trunk/app/views/users/index.rhtml +/svn/!svn/ver/4729/trunk/app/views/users/index.rhtml END +show.api.rsb +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/4486/trunk/app/views/users/show.api.rsb +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/entries --- a/app/views/users/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/users http://redmine.rubyforge.org/svn -2010-11-07T14:15:01.891476Z -4382 +2011-02-21T09:53:29.844413Z +4900 jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z 27e27971f72ee72e276157b29606a4f8 2010-10-11T20:34:33.692909Z 4249 @@ -66,10 +66,10 @@ -2010-09-23T14:37:44.699769Z -f5982959a0afd1bb9e499afe303de33d -2010-08-08T07:07:20.961363Z -3924 +2011-03-03T11:05:10.000000Z +82d8afa73a30d32a1df6dbf0a6ec9ccc +2010-12-12T21:21:57.860671Z +4508 jbbarth has-props @@ -92,7 +92,7 @@ -2948 +2950 _groups.rhtml file @@ -100,7 +100,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z f19cc195f524459954b4b4be5bfdcff5 2010-09-30T18:22:46.611444Z 4230 @@ -134,7 +134,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z 488647d93840c1ffa5834cc45817c1c3 2010-09-29T16:00:45.891709Z 4229 @@ -168,11 +168,11 @@ -2010-11-19T13:04:49.388892Z -9617ce493c6f68e4a861de49a13fc0b1 -2010-09-28T22:13:06.534232Z -4223 -edavis10 +2011-03-03T11:05:10.000000Z +e6086313266e733c482de5431e85f7a1 +2010-12-12T14:25:23.262992Z +4497 +jplang @@ -194,7 +194,41 @@ -872 +836 + +index.api.rsb +file + + + + +2011-03-03T11:05:10.000000Z +2232eeac9e0dea5001f5c7dbd9156a79 +2010-12-11T13:13:49.013705Z +4489 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +468 show.rhtml file @@ -202,7 +236,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z 1914aa4c363a1dab0cdba1e49ccc13ff 2010-11-07T14:15:01.891476Z 4382 @@ -236,11 +270,11 @@ -2010-11-19T13:04:49.388892Z -ac91549a6b11efcad3478c0c17248508 -2010-09-28T22:13:06.534232Z -4223 -edavis10 +2011-03-03T11:05:10.000000Z +35c46993d584ac75dd129b95ac411a10 +2010-12-12T13:39:55.171678Z +4493 +jplang has-props @@ -262,7 +296,41 @@ -1820 +1644 + +_preferences.html.erb +file + + + + +2011-03-03T11:40:18.000000Z +819ceb2599cdb65121387da777ec7454 +2011-02-21T09:53:29.844413Z +4900 +jplang + + + + + + + + + + + + + + + + + + + + + +502 edit.rhtml file @@ -270,11 +338,11 @@ -2010-11-19T13:04:49.392852Z -25485f87d56ef17bf204588edb4a0bed -2010-10-04T15:36:16.880272Z -4231 -edavis10 +2011-03-03T11:05:10.000000Z +334693af38532eb4e5c8801223e2c718 +2011-01-16T15:23:11.666065Z +4729 +jplang has-props @@ -296,41 +364,7 @@ -375 - -_preferences.html.erb -file - - - - -2010-11-19T13:04:49.392852Z -ebc1d625f2d6809ea491e7303f758e7a -2010-09-28T22:13:06.534232Z -4223 -edavis10 - - - - - - - - - - - - - - - - - - - - - -441 +523 index.rhtml file @@ -338,11 +372,11 @@ -2010-11-19T13:04:49.392852Z -ef23d8be0fbbefff33820156bb8f422a -2010-10-04T15:36:16.880272Z -4231 -edavis10 +2011-03-03T11:05:10.000000Z +82f2de0e0ade1e3dc2c39d3415d5580c +2011-01-16T15:23:11.666065Z +4729 +jplang has-props @@ -364,5 +398,39 @@ -2152 +2319 +show.api.rsb +file + + + + +2011-03-03T11:05:10.000000Z +5af24df58230f005be3a6814c6f53e33 +2010-12-11T10:19:11.273304Z +4486 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +811 + diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/prop-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/users/.svn/prop-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/prop-base/show.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/users/.svn/prop-base/show.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/_form.rhtml.svn-base --- a/app/views/users/.svn/text-base/_form.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/text-base/_form.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -25,11 +25,9 @@

    <%= 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 %>
    -

    -<%= password_field_tag 'password', nil, :size => 25 %>
    +

    <%= f.password_field :password, :required => true, :size => 25 %>
    <%= l(:text_caracters_minimum, :count => Setting.password_min_length) %>

    -

    -<%= password_field_tag 'password_confirmation', nil, :size => 25 %>

    +

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

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/_mail_notifications.html.erb.svn-base --- a/app/views/users/.svn/text-base/_mail_notifications.html.erb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/text-base/_mail_notifications.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,8 +1,8 @@

    -<%= select_tag 'notification_option', options_for_select(@notification_options.collect {|o| [l(o.last), o.first]}, @notification_option.to_sym), - :onchange => 'if ($("notification_option").value == "selected") {Element.show("notified-projects")} else {Element.hide("notified-projects")}' %> +<%= select_tag 'user[mail_notification]', options_for_select(user_mail_notification_options(@user), @user.mail_notification), + :onchange => 'if (this.value == "selected") {Element.show("notified-projects")} else {Element.hide("notified-projects")}' %>

    -<% content_tag 'div', :id => 'notified-projects', :style => (@notification_option == 'selected' ? '' : 'display:none;') do %> +<% content_tag 'div', :id => 'notified-projects', :style => (@user.mail_notification == 'selected' ? '' : 'display:none;') do %>

    <% @user.projects.each do |project| %>
    <% end %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/_memberships.rhtml.svn-base --- a/app/views/users/.svn/text-base/_memberships.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/text-base/_memberships.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -38,8 +38,8 @@ <%= call_hook(:view_users_memberships_table_row, :user => @user, :membership => membership, :roles => roles, :projects => projects )%> + <% end; reset_cycle %> -<% end; reset_cycle %>
    <%= 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? %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/_sidebar.rhtml --- a/app/views/issues/_sidebar.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/_sidebar.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -13,11 +13,5 @@ <% end %> <%= call_hook(:view_issues_sidebar_planning_bottom) %> -<% unless sidebar_queries.empty? -%> -

    <%= l(:label_query_plural) %>

    - -<% sidebar_queries.each do |query| -%> -<%= link_to(h(query.name), :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query) %>
    -<% end -%> +<%= render_sidebar_queries %> <%= call_hook(:view_issues_sidebar_queries_bottom) %> -<% end -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/bulk_edit.rhtml --- a/app/views/issues/bulk_edit.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/bulk_edit.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -43,7 +43,7 @@ <%= select_tag('issue[fixed_version_id]', content_tag('option', l(:label_no_change_option), :value => '') + content_tag('option', l(:label_none), :value => 'none') + - version_options_for_select(@project.shared_versions.open)) %> + version_options_for_select(@project.shared_versions.open.sort)) %>

    <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/index.api.rsb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/issues/index.api.rsb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,28 @@ +api.array :issues, api_meta(:total_count => @issue_count, :offset => @offset, :limit => @limit) do + @issues.each do |issue| + api.issue do + api.id issue.id + api.project(:id => issue.project_id, :name => issue.project.name) unless issue.project.nil? + api.tracker(:id => issue.tracker_id, :name => issue.tracker.name) unless issue.tracker.nil? + api.status(:id => issue.status_id, :name => issue.status.name) unless issue.status.nil? + api.priority(:id => issue.priority_id, :name => issue.priority.name) unless issue.priority.nil? + api.author(:id => issue.author_id, :name => issue.author.name) unless issue.author.nil? + api.assigned_to(:id => issue.assigned_to_id, :name => issue.assigned_to.name) unless issue.assigned_to.nil? + api.category(:id => issue.category_id, :name => issue.category.name) unless issue.category.nil? + api.fixed_version(:id => issue.fixed_version_id, :name => issue.fixed_version.name) unless issue.fixed_version.nil? + api.parent(:id => issue.parent_id) unless issue.parent.nil? + + api.subject issue.subject + api.description issue.description + api.start_date issue.start_date + api.due_date issue.due_date + api.done_ratio issue.done_ratio + api.estimated_hours issue.estimated_hours + + render_api_custom_values issue.custom_field_values, api + + api.created_on issue.created_on + api.updated_on issue.updated_on + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/index.xml.builder --- a/app/views/issues/index.xml.builder Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -xml.instruct! -xml.issues :type => 'array' do - @issues.each do |issue| - xml.issue do - xml.id issue.id - xml.project(:id => issue.project_id, :name => issue.project.name) unless issue.project.nil? - xml.tracker(:id => issue.tracker_id, :name => issue.tracker.name) unless issue.tracker.nil? - xml.status(:id => issue.status_id, :name => issue.status.name) unless issue.status.nil? - xml.priority(:id => issue.priority_id, :name => issue.priority.name) unless issue.priority.nil? - xml.author(:id => issue.author_id, :name => issue.author.name) unless issue.author.nil? - xml.assigned_to(:id => issue.assigned_to_id, :name => issue.assigned_to.name) unless issue.assigned_to.nil? - xml.category(:id => issue.category_id, :name => issue.category.name) unless issue.category.nil? - xml.fixed_version(:id => issue.fixed_version_id, :name => issue.fixed_version.name) unless issue.fixed_version.nil? - xml.parent(:id => issue.parent_id) unless issue.parent.nil? - - xml.subject issue.subject - xml.description issue.description - xml.start_date issue.start_date - xml.due_date issue.due_date - xml.done_ratio issue.done_ratio - xml.estimated_hours issue.estimated_hours - - xml.custom_fields do - issue.custom_field_values.each do |custom_value| - xml.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name - end - end - - xml.created_on issue.created_on - xml.updated_on issue.updated_on - end - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/show.api.rsb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/issues/show.api.rsb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,61 @@ +api.issue do + api.id @issue.id + api.project(:id => @issue.project_id, :name => @issue.project.name) unless @issue.project.nil? + api.tracker(:id => @issue.tracker_id, :name => @issue.tracker.name) unless @issue.tracker.nil? + api.status(:id => @issue.status_id, :name => @issue.status.name) unless @issue.status.nil? + api.priority(:id => @issue.priority_id, :name => @issue.priority.name) unless @issue.priority.nil? + api.author(:id => @issue.author_id, :name => @issue.author.name) unless @issue.author.nil? + api.assigned_to(:id => @issue.assigned_to_id, :name => @issue.assigned_to.name) unless @issue.assigned_to.nil? + api.category(:id => @issue.category_id, :name => @issue.category.name) unless @issue.category.nil? + api.fixed_version(:id => @issue.fixed_version_id, :name => @issue.fixed_version.name) unless @issue.fixed_version.nil? + api.parent(:id => @issue.parent_id) unless @issue.parent.nil? + + api.subject @issue.subject + api.description @issue.description + api.start_date @issue.start_date + api.due_date @issue.due_date + api.done_ratio @issue.done_ratio + api.estimated_hours @issue.estimated_hours + api.spent_hours(@issue.spent_hours) if User.current.allowed_to?(:view_time_entries, @project) + + render_api_custom_values @issue.custom_field_values, api + + api.created_on @issue.created_on + api.updated_on @issue.updated_on + + render_api_issue_children(@issue, api) if include_in_api_response?('children') + + api.array :relations do + @relations.each do |relation| + api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay) + end + end if include_in_api_response?('relations') && @relations.present? + + api.array :changesets do + @issue.changesets.each do |changeset| + api.changeset :revision => changeset.revision do + api.user(:id => changeset.user_id, :name => changeset.user.name) unless changeset.user.nil? + api.comments changeset.comments + api.committed_on changeset.committed_on + end + end + end if include_in_api_response?('changesets') && User.current.allowed_to?(:view_changesets, @project) + + api.array :journals do + @issue.journals.each do |journal| + api.journal :id => journal.id do + api.user(:id => journal.user_id, :name => journal.user.name) unless journal.user.nil? + api.notes journal.notes + api.created_on journal.created_on + api.array :details do + journal.details.each do |detail| + api.detail :property => detail.property, :name => detail.prop_key do + api.old_value detail.old_value + api.new_value detail.value + end + end + end + end + end + end if include_in_api_response?('journals') +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/show.rhtml --- a/app/views/issues/show.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/issues/show.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -47,14 +47,16 @@ <% if @issue.description? || @issue.attachments.any? -%>
    -
    -<%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') if @issue.description? %> -
    - -
    -<%= textilizable @issue, :description, :attachments => @issue.attachments %> -
    - +<% if @issue.description? %> +
    + <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:controller => 'journals', :action => 'new', :id => @issue} }, :class => 'icon icon-comment') %> +
    + +

    <%=l(:field_description)%>

    +
    + <%= textilizable @issue, :description, :attachments => @issue.attachments %> +
    +<% end %> <%= link_to_attachments @issue %> <% end -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/issues/show.xml.builder --- a/app/views/issues/show.xml.builder Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -xml.instruct! -xml.issue do - xml.id @issue.id - xml.project(:id => @issue.project_id, :name => @issue.project.name) unless @issue.project.nil? - xml.tracker(:id => @issue.tracker_id, :name => @issue.tracker.name) unless @issue.tracker.nil? - xml.status(:id => @issue.status_id, :name => @issue.status.name) unless @issue.status.nil? - xml.priority(:id => @issue.priority_id, :name => @issue.priority.name) unless @issue.priority.nil? - xml.author(:id => @issue.author_id, :name => @issue.author.name) unless @issue.author.nil? - xml.assigned_to(:id => @issue.assigned_to_id, :name => @issue.assigned_to.name) unless @issue.assigned_to.nil? - xml.category(:id => @issue.category_id, :name => @issue.category.name) unless @issue.category.nil? - xml.fixed_version(:id => @issue.fixed_version_id, :name => @issue.fixed_version.name) unless @issue.fixed_version.nil? - xml.parent(:id => @issue.parent_id) unless @issue.parent.nil? - - xml.subject @issue.subject - xml.description @issue.description - xml.start_date @issue.start_date - xml.due_date @issue.due_date - xml.done_ratio @issue.done_ratio - xml.estimated_hours @issue.estimated_hours - if User.current.allowed_to?(:view_time_entries, @project) - xml.spent_hours @issue.spent_hours - end - - xml.custom_fields do - @issue.custom_field_values.each do |custom_value| - xml.custom_field custom_value.value, :id => custom_value.custom_field_id, :name => custom_value.custom_field.name - end - end unless @issue.custom_field_values.empty? - - xml.created_on @issue.created_on - xml.updated_on @issue.updated_on - - xml.relations do - @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| - xml.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay) - end - end - - xml.changesets do - @issue.changesets.each do |changeset| - xml.changeset :revision => changeset.revision do - xml.user(:id => changeset.user_id, :name => changeset.user.name) unless changeset.user.nil? - xml.comments changeset.comments - xml.committed_on changeset.committed_on - end - end - end if User.current.allowed_to?(:view_changesets, @project) && @issue.changesets.any? - - xml.journals do - @issue.journals.each do |journal| - xml.journal :id => journal.id do - xml.user(:id => journal.user_id, :name => journal.user.name) unless journal.user.nil? - xml.notes journal.notes - xml.details do - journal.details.each do |detail| - xml.detail :property => detail.property, :name => detail.prop_key, :old => detail.old_value, :new => detail.value - end - end - end - end - end unless @issue.journals.empty? -end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/journals/.svn/all-wcprops --- a/app/views/journals/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/journals/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4034/trunk/app/views/journals +/svn/!svn/ver/4954/trunk/app/views/journals END _notes_form.rhtml K 25 @@ -21,6 +21,12 @@ 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 +END index.rxml K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/journals/.svn/entries --- a/app/views/journals/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/journals/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/journals http://redmine.rubyforge.org/svn -2010-08-23T15:04:36.844654Z -4034 -edavis10 +2011-02-27T13:34:41.060565Z +4954 +jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.579750Z +2011-03-03T11:05:10.000000Z fb8a5b1bfdbadbbaaa17ce7fc1dfcf3c 2009-10-11T10:36:11.599175Z 2924 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.579750Z +2011-03-03T11:05:10.000000Z 269ec86216a5d0340e02940f1b190d51 2010-03-17T04:13:05.342620Z 3596 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.579750Z +2011-03-03T11:05:10.000000Z ce552c52f7c423630412d0593cc1ee61 2008-02-02T10:50:31.694950Z 1105 @@ -128,13 +128,47 @@ 140 +diff.html.erb +file + + + + +2011-03-03T11:40:18.000000Z +073352211ae7cecb9e1ff5ea1ce17150 +2011-02-27T13:34:41.060565Z +4954 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +408 + index.rxml file -2010-09-23T14:37:44.579750Z +2011-03-03T11:05:10.000000Z ef7f777c9318cee52e909377c4f96e8b 2010-08-23T15:04:36.844654Z 4034 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/journals/.svn/prop-base/diff.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/journals/.svn/prop-base/diff.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/journals/.svn/text-base/diff.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/journals/.svn/text-base/diff.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,10 @@ +

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

    +

    <%= authoring @journal.created_on, @journal.user, :label => :label_updated_time_by %>

    + +
    +<%= simple_format_without_paragraph @diff.to_html %> +
    + +

    <%= link_to l(:button_back), issue_path(@issue), :onclick => 'history.back(); return false;' %>

    + +<% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/journals/diff.html.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/journals/diff.html.erb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,10 @@ +

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

    +

    <%= authoring @journal.created_on, @journal.user, :label => :label_updated_time_by %>

    + +
    +<%= simple_format_without_paragraph @diff.to_html %> +
    + +

    <%= link_to l(:button_back), issue_path(@issue), :onclick => 'history.back(); return false;' %>

    + +<% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/layouts/.svn/all-wcprops --- a/app/views/layouts/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/layouts/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/4362/trunk/app/views/layouts +/svn/!svn/ver/4965/trunk/app/views/layouts END base.rhtml K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4005/trunk/app/views/layouts/base.rhtml +/svn/!svn/ver/4965/trunk/app/views/layouts/base.rhtml END mailer.text.plain.erb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/layouts/.svn/entries --- a/app/views/layouts/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/layouts/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/layouts http://redmine.rubyforge.org/svn -2010-11-02T19:00:36.834304Z -4362 -edavis10 +2011-02-28T16:44:02.921792Z +4965 +jplang @@ -32,11 +32,11 @@ -2010-09-24T11:56:52.936024Z -2e429e8cf551d964a7e1a528ca56242d -2010-08-19T16:57:44.231882Z -4005 -winterheart +2011-03-03T11:40:18.000000Z +be984c02903b5fdba04df41a14c73242 +2011-02-28T16:44:02.921792Z +4965 +jplang has-props @@ -58,7 +58,7 @@ -2902 +2912 mailer.text.plain.erb file @@ -66,7 +66,7 @@ -2010-11-19T13:04:48.184855Z +2011-03-03T11:05:10.000000Z 490231bbc42932a0f9e1735a94d06260 2010-11-02T19:00:36.834304Z 4362 @@ -100,7 +100,7 @@ -2010-11-19T13:04:48.184855Z +2011-03-03T11:05:10.000000Z 5073a425d4e7896c725996f9cf35f74b 2010-11-02T19:00:36.834304Z 4362 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.583752Z +2011-03-03T11:05:10.000000Z cc6ca08e56314fb510561e8eeb4ede46 2009-12-17T18:21:02.630202Z 3176 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/layouts/.svn/text-base/base.rhtml.svn-base --- a/app/views/layouts/.svn/text-base/base.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/layouts/.svn/text-base/base.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -8,9 +8,10 @@ <%= favicon %> <%= stylesheet_link_tag 'application', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> -<%= javascript_include_tag :defaults %> +<%= javascript_heads %> +<%= heads_for_theme %> <%= heads_for_wiki_formatter %> - <%= yield :header_tags -%> - +
    @@ -68,7 +69,7 @@
    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/layouts/base.rhtml --- a/app/views/layouts/base.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/layouts/base.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -8,9 +8,10 @@ <%= favicon %> <%= stylesheet_link_tag 'application', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> -<%= javascript_include_tag :defaults %> +<%= javascript_heads %> +<%= heads_for_theme %> <%= heads_for_wiki_formatter %> - <%= yield :header_tags -%> - +
    @@ -83,7 +84,7 @@
    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/ldap_auth_sources/.svn/all-wcprops --- a/app/views/ldap_auth_sources/.svn/all-wcprops Tue Feb 22 16:48:15 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 52 -/svn/!svn/ver/3744/trunk/app/views/ldap_auth_sources -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3744/trunk/app/views/ldap_auth_sources/_form.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/ldap_auth_sources/.svn/entries --- a/app/views/ldap_auth_sources/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/ldap_auth_sources/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/ldap_auth_sources http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.583752Z +2011-03-03T11:05:10.000000Z 7eaca2b2857c3c1ef6fa72633333d56f 2010-05-23T03:16:31.304135Z 3744 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/mailer/.svn/all-wcprops --- a/app/views/mailer/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/mailer/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4296/trunk/app/views/mailer +/svn/!svn/ver/4892/trunk/app/views/mailer END wiki_content_added.text.plain.rhtml K 25 @@ -108,14 +108,20 @@ _issue_text_plain.rhtml K 25 svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/877/trunk/app/views/mailer/_issue_text_plain.rhtml +V 65 +/svn/!svn/ver/4892/trunk/app/views/mailer/_issue_text_plain.rhtml END _issue_text_html.rhtml K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/3452/trunk/app/views/mailer/_issue_text_html.rhtml +/svn/!svn/ver/4892/trunk/app/views/mailer/_issue_text_html.rhtml +END +news_added.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/877/trunk/app/views/mailer/news_added.text.plain.rhtml END attachments_added.text.html.rhtml K 25 @@ -123,12 +129,6 @@ V 75 /svn/!svn/ver/3452/trunk/app/views/mailer/attachments_added.text.html.rhtml END -news_added.text.plain.rhtml -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/877/trunk/app/views/mailer/news_added.text.plain.rhtml -END news_added.text.html.rhtml K 25 svn:wc:ra_dav:version-url @@ -141,35 +141,41 @@ V 72 /svn/!svn/ver/877/trunk/app/views/mailer/document_added.text.plain.rhtml END +document_added.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3452/trunk/app/views/mailer/document_added.text.html.rhtml +END issue_add.text.plain.rhtml K 25 svn:wc:ra_dav:version-url V 68 /svn/!svn/ver/2493/trunk/app/views/mailer/issue_add.text.plain.rhtml END -document_added.text.html.rhtml -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/3452/trunk/app/views/mailer/document_added.text.html.rhtml -END account_information.text.plain.rhtml K 25 svn:wc:ra_dav:version-url V 77 /svn/!svn/ver/877/trunk/app/views/mailer/account_information.text.plain.rhtml END +message_posted.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/932/trunk/app/views/mailer/message_posted.text.plain.rhtml +END account_information.text.html.rhtml K 25 svn:wc:ra_dav:version-url V 77 /svn/!svn/ver/3452/trunk/app/views/mailer/account_information.text.html.rhtml END -message_posted.text.plain.rhtml +wiki_content_updated.text.plain.rhtml K 25 svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/932/trunk/app/views/mailer/message_posted.text.plain.rhtml +V 79 +/svn/!svn/ver/4296/trunk/app/views/mailer/wiki_content_updated.text.plain.rhtml END lost_password.text.plain.rhtml K 25 @@ -177,12 +183,6 @@ V 72 /svn/!svn/ver/1683/trunk/app/views/mailer/lost_password.text.plain.rhtml END -wiki_content_updated.text.plain.rhtml -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/4296/trunk/app/views/mailer/wiki_content_updated.text.plain.rhtml -END wiki_content_updated.text.html.rhtml K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/mailer/.svn/entries --- a/app/views/mailer/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/mailer/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/mailer http://redmine.rubyforge.org/svn -2010-10-27T16:27:06.240747Z -4296 -edavis10 +2011-02-20T14:27:34.168395Z +4892 +jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:49.420968Z +2011-03-03T11:05:10.000000Z 1729c597befa0c9411266eb9d1c5b577 2010-10-27T16:27:06.240747Z 4296 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.599741Z +2011-03-03T11:05:10.000000Z e54fccdf5cf9e146cddf2adc5797d76f 2009-02-20T17:04:47.905923Z 2484 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 55d268cfc5ec4c2375739d401a00e9ca 2007-11-04T10:43:39.403792Z 877 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 157b6123ac6990f3cb83d1a24c441599 2007-11-18T17:46:55.863051Z 915 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 99836d2f584d6975add91d6f4885dfa3 2010-02-18T19:13:38.135448Z 3452 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 0fcec4c9195f18d0d58724feb863a27e 2007-11-04T10:43:39.403792Z 877 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 501bcdc81562733bce55a29655f6fd89 2009-02-21T11:04:50.579477Z 2493 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 746db1ca981aa5fc37569de58a3be57b 2010-02-18T19:13:38.135448Z 3452 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 55b994ef0e81fdc6d78f280c8716f230 2010-02-18T19:13:38.135448Z 3452 @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 76b612bb95df0f232af66dcfa75908a9 2010-02-18T19:13:38.135448Z 3452 @@ -372,7 +372,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 6a0fb1622f40125ab40706fa05705436 2009-02-21T11:04:50.579477Z 2493 @@ -406,7 +406,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 6efcff34ccd9ec0ebd5c501a38bd9e61 2009-07-05T14:14:44.411724Z 2814 @@ -440,7 +440,7 @@ -2010-11-19T13:04:49.420968Z +2011-03-03T11:05:10.000000Z 37e05984b98664e4b97c26b51196f9ab 2010-10-27T16:27:06.240747Z 4296 @@ -474,7 +474,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 62a282059a34f2aaa4d56b609e94e27c 2007-11-04T10:43:39.403792Z 877 @@ -508,7 +508,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z b95faada3d8a7eac9ddd90de85d377eb 2007-11-04T10:43:39.403792Z 877 @@ -542,7 +542,7 @@ -2010-09-23T14:37:44.599741Z +2011-03-03T11:05:10.000000Z b6dee3a7f5ce5253d3d66ea2d0aed032 2009-02-20T17:04:47.905923Z 2484 @@ -576,7 +576,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 382940abff8d469305e2b82eaac09875 2007-11-04T10:43:39.403792Z 877 @@ -610,8 +610,76 @@ -2010-09-23T14:37:44.599741Z -1f73b58bdc0fd4474073437ce2e219bd +2011-03-03T11:40:18.000000Z +76a51edc640a60b59fca8e679d0161b6 +2011-02-20T14:27:34.168395Z +4892 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +498 + +_issue_text_html.rhtml +file + + + + +2011-03-03T11:40:18.000000Z +68467469e0b5a8d3dc67dba7ba7e42b0 +2011-02-20T14:27:34.168395Z +4892 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +635 + +news_added.text.plain.rhtml +file + + + + +2011-03-03T11:05:10.000000Z +0cbce1fe1b288482af3095ce9bc555ed 2007-11-04T10:43:39.403792Z 877 jplang @@ -636,41 +704,7 @@ -492 - -_issue_text_html.rhtml -file - - - - -2010-09-23T14:37:44.599741Z -871cf6abc13d895f9de91ef4ac36c2bd -2010-02-18T19:13:38.135448Z -3452 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -629 +87 attachments_added.text.html.rhtml file @@ -678,7 +712,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z db9ef17343824d59b7a19db7036ee2f1 2010-02-18T19:13:38.135448Z 3452 @@ -706,47 +740,13 @@ 144 -news_added.text.plain.rhtml -file - - - - -2010-09-23T14:37:44.607738Z -0cbce1fe1b288482af3095ce9bc555ed -2007-11-04T10:43:39.403792Z -877 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -87 - news_added.text.html.rhtml file -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 7dffb9cfc22aef3b03d0d771179f26d6 2010-02-18T19:13:38.135448Z 3452 @@ -780,7 +780,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z d4eae87a9e17f49caeb6913659b9c42d 2007-11-04T10:43:39.403792Z 877 @@ -808,13 +808,47 @@ 107 +document_added.text.html.rhtml +file + + + + +2011-03-03T11:05:10.000000Z +06d5fbff057e28328f2be88419207f80 +2010-02-18T19:13:38.135448Z +3452 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +163 + issue_add.text.plain.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 52a0f774acd5b7aeeb3768de943af901 2009-02-21T11:04:50.579477Z 2493 @@ -842,47 +876,13 @@ 224 -document_added.text.html.rhtml -file - - - - -2010-09-23T14:37:44.603754Z -06d5fbff057e28328f2be88419207f80 -2010-02-18T19:13:38.135448Z -3452 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -163 - account_information.text.plain.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 2b46c7d28f33cec521374ccae2fd8451 2007-11-04T10:43:39.403792Z 877 @@ -910,13 +910,47 @@ 295 +message_posted.text.plain.rhtml +file + + + + +2011-03-03T11:05:10.000000Z +9b7ab36ebc57f0c02756d2b076e67b19 +2007-11-26T18:47:49.588558Z +932 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +68 + account_information.text.html.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z e7e91d7f18dd1547cfebafdf4822a18f 2010-02-18T19:13:38.135448Z 3452 @@ -944,17 +978,17 @@ 368 -message_posted.text.plain.rhtml +wiki_content_updated.text.plain.rhtml file -2010-09-23T14:37:44.603754Z -9b7ab36ebc57f0c02756d2b076e67b19 -2007-11-26T18:47:49.588558Z -932 -jplang +2011-03-03T11:05:10.000000Z +0cb005c22ad144fdbe29238b0080f28b +2010-10-27T16:27:06.240747Z +4296 +edavis10 has-props @@ -976,7 +1010,7 @@ -68 +288 lost_password.text.plain.rhtml file @@ -984,7 +1018,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 44018a44ceaecb5c9be3fed66e759064 2008-07-21T19:13:46.546624Z 1683 @@ -1012,47 +1046,13 @@ 97 -wiki_content_updated.text.plain.rhtml -file - - - - -2010-11-19T13:04:49.420968Z -0cb005c22ad144fdbe29238b0080f28b -2010-10-27T16:27:06.240747Z -4296 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -288 - lost_password.text.html.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z a53d9ea13c19cbce1edc375a01b5753d 2010-02-18T19:13:38.135448Z 3452 @@ -1086,7 +1086,7 @@ -2010-11-19T13:04:49.420968Z +2011-03-03T11:05:10.000000Z f35cf0d09dd393a255db2d428a3d30f0 2010-10-27T16:27:06.240747Z 4296 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/mailer/.svn/text-base/_issue_text_html.rhtml.svn-base --- a/app/views/mailer/.svn/text-base/_issue_text_html.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/mailer/.svn/text-base/_issue_text_html.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -7,7 +7,7 @@
  • <%=l(:field_assigned_to)%>: <%=h issue.assigned_to %>
  • <%=l(:field_category)%>: <%=h issue.category %>
  • <%=l(:field_fixed_version)%>: <%=h issue.fixed_version %>
  • -<% issue.custom_values.each do |c| %> +<% issue.custom_field_values.each do |c| %>
  • <%=h c.custom_field.name %>: <%=h show_value(c) %>
  • <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/mailer/.svn/text-base/_issue_text_plain.rhtml.svn-base --- a/app/views/mailer/.svn/text-base/_issue_text_plain.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/mailer/.svn/text-base/_issue_text_plain.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -7,7 +7,7 @@ <%=l(:field_assigned_to)%>: <%= issue.assigned_to %> <%=l(:field_category)%>: <%= issue.category %> <%=l(:field_fixed_version)%>: <%= issue.fixed_version %> -<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> +<% issue.custom_field_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> <% end %> <%= issue.description %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/mailer/_issue_text_html.rhtml --- a/app/views/mailer/_issue_text_html.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/mailer/_issue_text_html.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -7,7 +7,7 @@
  • <%=l(:field_assigned_to)%>: <%=h issue.assigned_to %>
  • <%=l(:field_category)%>: <%=h issue.category %>
  • <%=l(:field_fixed_version)%>: <%=h issue.fixed_version %>
  • -<% issue.custom_values.each do |c| %> +<% issue.custom_field_values.each do |c| %>
  • <%=h c.custom_field.name %>: <%=h show_value(c) %>
  • <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/mailer/_issue_text_plain.rhtml --- a/app/views/mailer/_issue_text_plain.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/mailer/_issue_text_plain.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -7,7 +7,7 @@ <%=l(:field_assigned_to)%>: <%= issue.assigned_to %> <%=l(:field_category)%>: <%= issue.category %> <%=l(:field_fixed_version)%>: <%= issue.fixed_version %> -<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> +<% issue.custom_field_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> <% end %> <%= issue.description %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/members/.svn/all-wcprops --- a/app/views/members/.svn/all-wcprops Tue Feb 22 16:48:15 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 42 -/svn/!svn/ver/2869/trunk/app/views/members -END -autocomplete_for_member.rhtml -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2869/trunk/app/views/members/autocomplete_for_member.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/members/.svn/entries --- a/app/views/members/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/members/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/members http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.611740Z +2011-03-03T11:05:10.000000Z 9e105ea0b16e73250d47d57f07d71cff 2009-09-12T08:36:46.650954Z 2869 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/messages/.svn/all-wcprops --- a/app/views/messages/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/messages/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/3877/trunk/app/views/messages +/svn/!svn/ver/4889/trunk/app/views/messages END show.rhtml K 25 @@ -19,7 +19,7 @@ K 25 svn:wc:ra_dav:version-url V 54 -/svn/!svn/ver/1205/trunk/app/views/messages/edit.rhtml +/svn/!svn/ver/4889/trunk/app/views/messages/edit.rhtml END new.rhtml K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/messages/.svn/entries --- a/app/views/messages/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/messages/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/messages http://redmine.rubyforge.org/svn -2010-07-25T10:02:12.905073Z -3877 +2011-02-20T13:11:10.508449Z +4889 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.615740Z +2011-03-03T11:05:10.000000Z c68f1ef8a922f2a408e0349d80db4376 2010-07-25T10:02:12.905073Z 3877 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.611740Z +2011-03-03T11:05:10.000000Z 4fecf6ec48e549e01ada68dc8d623f38 2010-01-25T17:26:02.255593Z 3339 @@ -100,10 +100,10 @@ -2010-09-23T14:37:44.611740Z -72a4fb6eecd42aceb751370901633f24 -2008-03-07T17:49:44.664945Z -1205 +2011-03-03T11:40:18.000000Z +65fbdcd20ac7f10349863c836306f7d3 +2011-02-20T13:11:10.508449Z +4889 jplang has-props @@ -126,7 +126,7 @@ -883 +965 new.rhtml file @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.611740Z +2011-03-03T11:05:10.000000Z 3512563f842c2e951d7738870f2d4065 2008-03-07T17:49:44.664945Z 1205 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/messages/.svn/text-base/edit.rhtml.svn-base --- a/app/views/messages/.svn/text-base/edit.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/messages/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -12,3 +12,7 @@ }, :accesskey => accesskey(:preview) %> <% end %>
    + +<% content_for :header_tags do %> + <%= stylesheet_link_tag 'scm' %> +<% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/messages/edit.rhtml --- a/app/views/messages/edit.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/messages/edit.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -12,3 +12,7 @@ }, :accesskey => accesskey(:preview) %> <% end %>
    + +<% content_for :header_tags do %> + <%= stylesheet_link_tag 'scm' %> +<% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/my/.svn/all-wcprops --- a/app/views/my/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/my/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 37 -/svn/!svn/ver/4380/trunk/app/views/my +/svn/!svn/ver/4722/trunk/app/views/my END account.rhtml K 25 @@ -37,5 +37,5 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4380/trunk/app/views/my/page_layout.rhtml +/svn/!svn/ver/4722/trunk/app/views/my/page_layout.rhtml END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/my/.svn/entries --- a/app/views/my/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/my/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/my http://redmine.rubyforge.org/svn -2010-11-07T12:36:19.797484Z -4380 +2011-01-15T14:04:11.836008Z +4722 jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:47.012855Z +2011-03-03T11:05:10.000000Z 746c4ac2d5bc111d91747aa0b0c54a5a 2010-09-28T22:13:06.534232Z 4223 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z afa83dffe27e19383284d8177f1f4687 2010-03-04T19:02:57.949679Z 3542 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z a43c901172c8b1750d24612b24f2db22 2009-04-21T13:43:57.529967Z 2678 @@ -137,7 +137,7 @@ -2010-09-23T14:37:44.619750Z +2011-03-03T11:05:10.000000Z 91a0469f13d98fd2504ca036e16660f1 2010-06-19T16:50:13.340830Z 3775 @@ -171,7 +171,7 @@ -2010-09-23T14:37:44.619750Z +2011-03-03T11:05:10.000000Z efb09bc859f5527d219f0dd3d5c12fe8 2009-02-26T16:15:07.718565Z 2528 @@ -205,10 +205,10 @@ -2010-11-19T13:04:47.012855Z -afbc3db612a251e1fcb34498f27c50b8 -2010-11-07T12:36:19.797484Z -4380 +2011-03-03T11:05:10.000000Z +852c99d50bf883063cd77b7042c145d4 +2011-01-15T14:04:11.836008Z +4722 jplang has-props @@ -231,5 +231,5 @@ -4274 +4275 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/my/.svn/text-base/page_layout.rhtml.svn-base --- a/app/views/my/.svn/text-base/page_layout.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/my/.svn/text-base/page_layout.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -36,7 +36,7 @@
    <% form_tag({:action => "add_block"}, :id => "block-form") do %> -<%= label_tag('block-select', l(:label_my_page_block)) %> +<%= label_tag('block-select', l(:label_my_page_block)) %>: <%= select_tag 'block', "" + options_for_select(@block_options), :id => "block-select" %> <%= link_to_remote l(:button_add), {:url => { :action => "add_block" }, diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/my/blocks/.svn/all-wcprops --- a/app/views/my/blocks/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4259/trunk/app/views/my/blocks -END -_issueswatched.rhtml -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/3557/trunk/app/views/my/blocks/_issueswatched.rhtml -END -_news.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/449/trunk/app/views/my/blocks/_news.rhtml -END -_issuesreportedbyme.rhtml -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/2598/trunk/app/views/my/blocks/_issuesreportedbyme.rhtml -END -_issuesassignedtome.rhtml -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/2777/trunk/app/views/my/blocks/_issuesassignedtome.rhtml -END -_timelog.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4259/trunk/app/views/my/blocks/_timelog.rhtml -END -_documents.rhtml -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/1766/trunk/app/views/my/blocks/_documents.rhtml -END -_calendar.rhtml -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3351/trunk/app/views/my/blocks/_calendar.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/my/blocks/.svn/entries --- a/app/views/my/blocks/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/my/blocks/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/my/blocks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z 0b880299704151a6acd66b5632f60426 2010-03-10T05:10:43.201527Z 3557 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z 6aa71a8cc8a018c4c564915c10355709 2007-04-20T09:53:44.242780Z 449 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z 55339408a7e093de86505f92845ed977 2009-03-17T17:34:49.297132Z 2598 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z bf22b792b1b79c60dc866718c074f370 2009-05-30T23:30:36.923541Z 2777 @@ -168,7 +168,7 @@ -2010-11-19T13:04:47.008792Z +2011-03-03T11:05:10.000000Z 2ba11e15a7f15f88fe061979d921b59d 2010-10-15T23:37:01.382819Z 4259 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z a21d8649f0daec69caabb118e9b6375c 2008-08-26T11:08:45.487893Z 1766 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z 3894ab9b2f76b3622a362843be2162be 2010-01-30T11:23:17.508662Z 3351 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/my/page_layout.rhtml --- a/app/views/my/page_layout.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/my/page_layout.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -36,7 +36,7 @@
    <% form_tag({:action => "add_block"}, :id => "block-form") do %> -<%= label_tag('block-select', l(:label_my_page_block)) %> +<%= label_tag('block-select', l(:label_my_page_block)) %>: <%= select_tag 'block', "" + options_for_select(@block_options), :id => "block-select" %> <%= link_to_remote l(:button_add), {:url => { :action => "add_block" }, diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/news/.svn/all-wcprops --- a/app/views/news/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/news/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4267/trunk/app/views/news +/svn/!svn/ver/4505/trunk/app/views/news END _news.rhtml K 25 @@ -9,11 +9,17 @@ V 51 /svn/!svn/ver/4214/trunk/app/views/news/_news.rhtml END +index.api.rsb +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/4505/trunk/app/views/news/index.api.rsb +END show.rhtml K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/4214/trunk/app/views/news/show.rhtml +/svn/!svn/ver/4412/trunk/app/views/news/show.rhtml END _form.rhtml K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/news/.svn/entries --- a/app/views/news/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/news/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/news http://redmine.rubyforge.org/svn -2010-10-22T14:42:38.351679Z -4267 +2010-12-12T17:00:52.100205Z +4505 jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:49.428894Z +2011-03-03T11:05:10.000000Z 2501c1cef884fd4a56abb3a4e736825f 2010-09-27T16:51:12.033537Z 4214 @@ -60,17 +60,51 @@ 384 +index.api.rsb +file + + + + +2011-03-03T11:05:10.000000Z +194919e4bc598629f690752af5340b5b +2010-12-12T17:00:52.100205Z +4505 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +506 + show.rhtml file -2010-11-19T13:04:49.428894Z -c21730c749ee8533fadff9abbea6ffd8 -2010-09-27T16:51:12.033537Z -4214 -edavis10 +2011-03-03T11:05:10.000000Z +969b4f69a93036097550cd14be8023bc +2010-11-20T09:38:54.291843Z +4412 +jplang has-props @@ -92,7 +126,7 @@ -2897 +2920 _form.rhtml file @@ -100,7 +134,7 @@ -2010-09-23T14:37:44.627781Z +2011-03-03T11:05:10.000000Z e06c154a981d18d975bcba8eb682df30 2007-09-22T17:52:43.686392Z 750 @@ -134,7 +168,7 @@ -2010-11-19T13:04:49.432892Z +2011-03-03T11:05:10.000000Z dd2c968c6b42916bff9b9e5de055e007 2010-09-27T16:51:12.033537Z 4214 @@ -168,7 +202,7 @@ -2010-11-19T13:04:49.432892Z +2011-03-03T11:05:10.000000Z 764ec3719917039d0cac3d375ec819c4 2010-10-22T14:42:38.351679Z 4267 @@ -202,7 +236,7 @@ -2010-11-19T13:04:49.432892Z +2011-03-03T11:05:10.000000Z 1e7f24dd1dc6a117b245a76174e4c8ae 2010-09-27T16:51:12.033537Z 4214 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/news/.svn/prop-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/news/.svn/prop-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/news/.svn/text-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/news/.svn/text-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,14 @@ +api.array :news, api_meta(:total_count => @news_count, :offset => @offset, :limit => @limit) do + @newss.each do |news| + api.news do + api.id news.id + api.project(:id => news.project_id, :name => news.project.name) unless news.project.nil? + api.author(:id => news.author_id, :name => news.author.name) unless news.author.nil? + + api.title news.title + api.summary news.summary + api.description news.description + api.created_on news.created_on + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/news/.svn/text-base/show.rhtml.svn-base --- a/app/views/news/.svn/text-base/show.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/news/.svn/text-base/show.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,10 +1,14 @@
    -<%= link_to_if_authorized l(:button_edit), - edit_news_path(@news), - :class => 'icon icon-edit', - :accesskey => accesskey(:edit), - :onclick => 'Element.show("edit-news"); return false;' %> -<%= link_to_if_authorized l(:button_delete), news_path(@news), :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %> +<%= link_to(l(:button_edit), + edit_news_path(@news), + :class => 'icon icon-edit', + :accesskey => accesskey(:edit), + :onclick => 'Element.show("edit-news"); return false;') if User.current.allowed_to?(:manage_news, @project) %> +<%= link_to(l(:button_delete), + news_path(@news), + :confirm => l(:text_are_you_sure), + :method => :delete, + :class => 'icon icon-del') if User.current.allowed_to?(:manage_news, @project) %>

    <%= avatar(@news.author, :size => "24") %><%=h @news.title %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/news/index.api.rsb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/news/index.api.rsb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,14 @@ +api.array :news, api_meta(:total_count => @news_count, :offset => @offset, :limit => @limit) do + @newss.each do |news| + api.news do + api.id news.id + api.project(:id => news.project_id, :name => news.project.name) unless news.project.nil? + api.author(:id => news.author_id, :name => news.author.name) unless news.author.nil? + + api.title news.title + api.summary news.summary + api.description news.description + api.created_on news.created_on + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/news/show.rhtml --- a/app/views/news/show.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/news/show.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -1,10 +1,14 @@
    -<%= link_to_if_authorized l(:button_edit), - edit_news_path(@news), - :class => 'icon icon-edit', - :accesskey => accesskey(:edit), - :onclick => 'Element.show("edit-news"); return false;' %> -<%= link_to_if_authorized l(:button_delete), news_path(@news), :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %> +<%= link_to(l(:button_edit), + edit_news_path(@news), + :class => 'icon icon-edit', + :accesskey => accesskey(:edit), + :onclick => 'Element.show("edit-news"); return false;') if User.current.allowed_to?(:manage_news, @project) %> +<%= link_to(l(:button_delete), + news_path(@news), + :confirm => l(:text_are_you_sure), + :method => :delete, + :class => 'icon icon-del') if User.current.allowed_to?(:manage_news, @project) %>

    <%= avatar(@news.author, :size => "24") %><%=h @news.title %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/previews/.svn/all-wcprops --- a/app/views/previews/.svn/all-wcprops Tue Feb 22 16:48:15 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/3946/trunk/app/views/previews -END -issue.html.erb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3946/trunk/app/views/previews/issue.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/previews/.svn/entries --- a/app/views/previews/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/previews/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/previews http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.631740Z +2011-03-03T11:05:10.000000Z 359c6608ef716c8b3b62fd96c241a680 2010-08-18T15:01:35.032314Z 3946 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/projects/.svn/all-wcprops --- a/app/views/projects/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/projects/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4402/trunk/app/views/projects +/svn/!svn/ver/4719/trunk/app/views/projects END copy.rhtml K 25 @@ -13,13 +13,13 @@ K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/4069/trunk/app/views/projects/new.html.erb +/svn/!svn/ver/4648/trunk/app/views/projects/new.html.erb END -show.xml.builder +index.api.rsb K 25 svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4382/trunk/app/views/projects/show.xml.builder +V 57 +/svn/!svn/ver/4572/trunk/app/views/projects/index.api.rsb END settings.rhtml K 25 @@ -37,7 +37,7 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4402/trunk/app/views/projects/_form.rhtml +/svn/!svn/ver/4648/trunk/app/views/projects/_form.rhtml END _edit.rhtml K 25 @@ -51,12 +51,6 @@ V 62 /svn/!svn/ver/2990/trunk/app/views/projects/list_members.rhtml END -index.xml.builder -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/4382/trunk/app/views/projects/index.xml.builder -END _members_box.html.erb K 25 svn:wc:ra_dav:version-url @@ -69,6 +63,12 @@ V 55 /svn/!svn/ver/4069/trunk/app/views/projects/index.rhtml END +show.api.rsb +K 25 +svn:wc:ra_dav:version-url +V 56 +/svn/!svn/ver/4486/trunk/app/views/projects/show.api.rsb +END destroy.rhtml K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/projects/.svn/entries --- a/app/views/projects/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/projects/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/projects http://redmine.rubyforge.org/svn -2010-11-14T12:33:14.198318Z -4402 +2011-01-15T13:20:18.866830Z +4719 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.643780Z +2011-03-03T11:05:11.000000Z 26653788620aef89a25b8ad819144e03 2010-03-21T11:17:29.163519Z 3608 @@ -69,44 +69,10 @@ -2010-09-24T12:48:28.956343Z -6d0e913f69c037dd846dd198fec2dbe8 -2010-09-07T15:00:27.481481Z -4069 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -627 - -show.xml.builder -file - - - - -2010-11-19T13:04:49.468916Z -2c71cdd8d404107942ca25fbd76f7099 -2010-11-07T14:15:01.891476Z -4382 +2011-03-03T11:05:11.000000Z +89a2baf21090ed983ffe265fa0929b29 +2011-01-06T21:02:19.982329Z +4648 jplang has-props @@ -129,7 +95,41 @@ -687 +289 + +index.api.rsb +file + + + + +2011-03-03T11:05:11.000000Z +4eef8200b378cb9b074da5abac7c5dfa +2010-12-23T13:34:44.668484Z +4572 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +589 settings.rhtml file @@ -137,7 +137,7 @@ -2010-09-23T14:37:44.643780Z +2011-03-03T11:05:11.000000Z 66d45b68c4615d2b502b2c6d06cf0951 2009-09-12T09:13:13.676884Z 2871 @@ -171,7 +171,7 @@ -2010-11-19T13:04:49.468916Z +2011-03-03T11:05:11.000000Z bbcdfa64f2a80d809b80b00c26fd0c8c 2010-11-07T14:15:01.891476Z 4382 @@ -205,10 +205,10 @@ -2010-11-19T13:04:49.468916Z -a7153b3d30bc50efcce516bb73b04f3b -2010-11-14T12:33:14.198318Z -4402 +2011-03-03T11:05:11.000000Z +b0519f745853f4f4e673c2e30389dc40 +2011-01-06T21:02:19.982329Z +4648 jplang has-props @@ -231,7 +231,7 @@ -1944 +2630 _edit.rhtml file @@ -239,7 +239,7 @@ -2010-09-24T12:48:28.959844Z +2011-03-03T11:05:11.000000Z e3a6cb86da5f31cae6c8fc0a4e6bad35 2010-09-09T18:57:21.507694Z 4071 @@ -273,7 +273,7 @@ -2010-09-23T14:37:44.643780Z +2011-03-03T11:05:11.000000Z 0f2ffbd9b87d4ecc80f5c8bcac0cc9e9 2009-10-29T18:44:16.555741Z 2990 @@ -301,47 +301,13 @@ 391 -index.xml.builder -file - - - - -2010-11-19T13:04:49.472856Z -0a17e1dac1d3e2ac43c08f0039802b8c -2010-11-07T14:15:01.891476Z -4382 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -729 - _members_box.html.erb file -2010-09-23T14:37:44.639741Z +2011-03-03T11:05:11.000000Z f880a7facfac62099e5b3fc4ebe862b3 2010-08-19T22:24:37.242219Z 4009 @@ -375,7 +341,7 @@ -2010-09-24T12:48:28.959844Z +2011-03-03T11:05:11.000000Z cb60b85b211b8c78058e4ccc5cdefc82 2010-09-07T15:00:27.481481Z 4069 @@ -403,13 +369,47 @@ 1155 +show.api.rsb +file + + + + +2011-03-03T11:05:11.000000Z +c49d7ceec0060eb7437c7e3f2b7629ed +2010-12-11T10:19:11.273304Z +4486 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +525 + destroy.rhtml file -2010-09-24T12:48:28.959844Z +2011-03-03T11:05:11.000000Z 308fa6064dd3e4d6d85be448402ba7b2 2010-09-09T18:57:21.507694Z 4071 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/projects/.svn/prop-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/projects/.svn/prop-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/projects/.svn/prop-base/index.xml.builder.svn-base --- a/app/views/projects/.svn/prop-base/index.xml.builder.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/projects/.svn/prop-base/show.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/projects/.svn/prop-base/show.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/projects/.svn/prop-base/show.xml.builder.svn-base --- a/app/views/projects/.svn/prop-base/show.xml.builder.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/projects/.svn/text-base/_form.rhtml.svn-base --- a/app/views/projects/.svn/text-base/_form.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/projects/.svn/text-base/_form.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -23,8 +23,22 @@ <%= call_hook(:view_projects_form, :project => @project, :form => f) %>
    +<% if @project.new_record? %> +
    <%= l(:label_module_plural) %> +<% Redmine::AccessControl.available_project_modules.each do |m| %> + +<% end %> +<%= hidden_field_tag 'project[enabled_module_names][]', '' %> +<%= javascript_tag 'observeProjectModules()' %> +
    +<% end %> + +<% if @project.new_record? || @project.module_enabled?('issue_tracking') %> <% unless @trackers.empty? %> -
    <%=l(:label_tracker_plural)%> +
    <%=l(:label_tracker_plural)%> <% @trackers.each do |tracker| %>
    +<% if @project.new_record? %> +
    <%= l(:label_module_plural) %> +<% Redmine::AccessControl.available_project_modules.each do |m| %> + +<% end %> +<%= hidden_field_tag 'project[enabled_module_names][]', '' %> +<%= javascript_tag 'observeProjectModules()' %> +
    +<% end %> + +<% if @project.new_record? || @project.module_enabled?('issue_tracking') %> <% unless @trackers.empty? %> -
    <%=l(:label_tracker_plural)%> +
    <%=l(:label_tracker_plural)%> <% @trackers.each do |tracker| %>
    <% if entry.is_dir? %> - "scmEntryClick('#{tr_id}')"%>">  <% end %> -<%= link_to h(entry.name), - {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(entry.path), :rev => @rev}, - :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(entry.name)}")%> +<%= link_to h(ent_name), + {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(ent_path), :rev => @rev}, + :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(ent_name)}")%> <%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %><%= link_to_revision(changeset.revision, @project) if changeset %><%= link_to_revision(changeset, @project) if changeset %> <%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %><%= changeset.nil? ? h(entry.lastrev.author.to_s.split('<').first) : changeset.author if entry.lastrev %><%= changeset.nil? ? h(replace_invalid_utf8(entry.lastrev.author.to_s.split('<').first)) : changeset.author if entry.lastrev %> <%=h truncate(changeset.comments, :length => 50) unless changeset.nil? %>
    <%= link_to_revision(changeset.revision, project) %><%= radio_button_tag('rev', changeset.revision, (line_num==1), :id => "cb-#{line_num}", :onclick => "$('cbto-#{line_num+1}').checked=true;") if show_diff && (line_num < revisions.size) %><%= radio_button_tag('rev_to', changeset.revision, (line_num==2), :id => "cbto-#{line_num}", :onclick => "if ($('cb-#{line_num}').checked==true) {$('cb-#{line_num-1}').checked=true;}") if show_diff && (line_num > 1) %><%= link_to_revision(changeset, project) %><%= radio_button_tag('rev', changeset.identifier, (line_num==1), :id => "cb-#{line_num}", :onclick => "$('cbto-#{line_num+1}').checked=true;") if show_diff && (line_num < revisions.size) %><%= radio_button_tag('rev_to', changeset.identifier, (line_num==2), :id => "cbto-#{line_num}", :onclick => "if ($('cb-#{line_num}').checked==true) {$('cb-#{line_num-1}').checked=true;}") if show_diff && (line_num > 1) %> <%= format_time(changeset.committed_on) %> <%=h changeset.author %> <%= textilizable(truncate_at_line_break(changeset.comments)) %>
    <%= line_num %> - <%= (revision.identifier ? link_to(format_revision(revision.identifier), :action => 'revision', :id => @project, :rev => revision.identifier) : format_revision(revision.revision)) if revision %> <%= h(revision.author.to_s.split('<').first) if revision %>
    <%= line %>
    <% if entry.is_dir? %> - "scmEntryClick('#{tr_id}')"%>">  <% end %> -<%= link_to h(entry.name), - {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(entry.path), :rev => @rev}, - :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(entry.name)}")%> +<%= link_to h(ent_name), + {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(ent_path), :rev => @rev}, + :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(ent_name)}")%> <%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %><%= link_to_revision(changeset, @project) if changeset %> <%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %><%= changeset.nil? ? h(entry.lastrev.author.to_s.split('<').first) : changeset.author if entry.lastrev %><%= changeset.nil? ? h(replace_invalid_utf8(entry.lastrev.author.to_s.split('<').first)) : changeset.author if entry.lastrev %> <%=h truncate(changeset.comments, :length => 50) unless changeset.nil? %>
    <% else %>

    <%= l(:label_no_data) %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/_preferences.html.erb.svn-base --- a/app/views/users/.svn/text-base/_preferences.html.erb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/text-base/_preferences.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -2,5 +2,6 @@

    <%= pref_fields.check_box :hide_mail %>

    <%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %>

    <%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %>

    +

    <%= pref_fields.check_box :warn_on_leaving_unsaved %>

    <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/edit.rhtml.svn-base --- a/app/views/users/.svn/text-base/edit.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,6 +1,7 @@
    <%= link_to l(:label_profile), user_path(@user), :class => 'icon icon-user' %> <%= change_status_link(@user) %> +<%= link_to(l(:button_delete), @user, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del') if User.current != @user %>

    <%= link_to l(:label_user_plural), :controller => 'users', :action => 'index' %> » <%=h @user.login %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/index.api.rsb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/users/.svn/text-base/index.api.rsb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,15 @@ +api.array :users, api_meta(:total_count => @user_count, :offset => @offset, :limit => @limit) do + @users.each do |user| + api.user do + api.id user.id + api.login user.login + api.firstname user.firstname + api.lastname user.lastname + api.mail user.mail + api.created_on user.created_on + api.last_login_on user.last_login_on + + render_api_custom_values user.visible_custom_field_values, api + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/.svn/text-base/index.rhtml.svn-base --- a/app/views/users/.svn/text-base/index.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/.svn/text-base/index.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -37,7 +37,10 @@
    <%= checked_image user.admin? %> <%= format_time(user.created_on) %> <%= change_status_link(user) %> + <%= change_status_link(user) %> + <%= link_to(l(:button_delete), user, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del') unless User.current == user %> +
    <% else %>

    <%= l(:label_no_data) %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/_preferences.html.erb --- a/app/views/users/_preferences.html.erb Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/_preferences.html.erb Thu Mar 03 12:11:53 2011 +0000 @@ -2,5 +2,6 @@

    <%= pref_fields.check_box :hide_mail %>

    <%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %>

    <%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %>

    +

    <%= pref_fields.check_box :warn_on_leaving_unsaved %>

    <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/edit.rhtml --- a/app/views/users/edit.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/edit.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -1,6 +1,7 @@
    <%= link_to l(:label_profile), user_path(@user), :class => 'icon icon-user' %> <%= change_status_link(@user) %> +<%= link_to(l(:button_delete), @user, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del') if User.current != @user %>

    <%= link_to l(:label_user_plural), :controller => 'users', :action => 'index' %> » <%=h @user.login %>

    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/index.api.rsb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/users/index.api.rsb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,15 @@ +api.array :users, api_meta(:total_count => @user_count, :offset => @offset, :limit => @limit) do + @users.each do |user| + api.user do + api.id user.id + api.login user.login + api.firstname user.firstname + api.lastname user.lastname + api.mail user.mail + api.created_on user.created_on + api.last_login_on user.last_login_on + + render_api_custom_values user.visible_custom_field_values, api + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/index.rhtml --- a/app/views/users/index.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/users/index.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -37,7 +37,10 @@ <%= checked_image user.admin? %> <%= format_time(user.created_on) %> <%= format_time(user.last_login_on) unless user.last_login_on.nil? %> - <%= change_status_link(user) %> + + <%= change_status_link(user) %> + <%= link_to(l(:button_delete), user, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del') unless User.current == user %> + <% end -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/users/show.api.rsb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/users/show.api.rsb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,24 @@ +api.user do + api.id @user.id + api.login @user.login if User.current.admin? + api.firstname @user.firstname + api.lastname @user.lastname + api.mail @user.mail if User.current.admin? || !@user.pref.hide_mail + api.created_on @user.created_on + api.last_login_on @user.last_login_on + + render_api_custom_values @user.visible_custom_field_values, api + + api.array :memberships do + @memberships.each do |membership| + api.membership do + api.project :id => membership.project.id, :name => membership.project.name + api.array :roles do + membership.roles.each do |role| + api.role :id => role.id, :name => role.name + end + end + end if membership.project + end + end if include_in_api_response?('memberships') && @memberships +end diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/versions/.svn/all-wcprops --- a/app/views/versions/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4307/trunk/app/views/versions -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/4082/trunk/app/views/versions/index.html.erb -END -new.html.erb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4097/trunk/app/views/versions/new.html.erb -END -show.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4307/trunk/app/views/versions/show.rhtml -END -_form.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3123/trunk/app/views/versions/_form.rhtml -END -_issue_counts.rhtml -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4098/trunk/app/views/versions/_issue_counts.rhtml -END -_overview.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3064/trunk/app/views/versions/_overview.rhtml -END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4097/trunk/app/views/versions/edit.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/versions/.svn/entries --- a/app/views/versions/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/versions/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/versions http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-24T12:48:28.303878Z +2011-03-03T11:05:10.000000Z a50c2acc01c8d25be8e2c8cd082a2272 2010-09-11T14:00:23.147923Z 4082 @@ -66,7 +66,7 @@ -2010-09-24T12:48:28.303878Z +2011-03-03T11:05:10.000000Z d53190d87d1c24abce0fc949f816a706 2010-09-17T15:55:08.377083Z 4097 @@ -100,7 +100,7 @@ -2010-11-19T13:04:49.396842Z +2011-03-03T11:05:10.000000Z ae897448ea943e1856633a3683c17a79 2010-10-29T22:40:02.439890Z 4307 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.707788Z +2011-03-03T11:05:10.000000Z acf01b501fb1e345fd7abf572233ead9 2009-12-06T10:28:20.099964Z 3123 @@ -168,7 +168,7 @@ -2010-09-24T12:48:28.303878Z +2011-03-03T11:05:10.000000Z b5364f2d6f4cb92d1f747cd3dda5098f 2010-09-17T16:11:43.740142Z 4098 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.707788Z +2011-03-03T11:05:10.000000Z 6e68f24a6d6571388df3018bc915d37a 2009-11-15T15:22:55.021661Z 3064 @@ -236,7 +236,7 @@ -2010-09-24T12:48:28.303878Z +2011-03-03T11:05:10.000000Z 85ddc3502659176221220bebef002d6c 2010-09-17T15:55:08.377083Z 4097 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/watchers/.svn/all-wcprops --- a/app/views/watchers/.svn/all-wcprops Tue Feb 22 16:48:15 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/3579/trunk/app/views/watchers -END -_watchers.rhtml -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3579/trunk/app/views/watchers/_watchers.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/watchers/.svn/entries --- a/app/views/watchers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/watchers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/watchers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.707788Z +2011-03-03T11:05:10.000000Z 7ece4fb161c765ac7e63c30883733d99 2010-03-13T17:45:41.194736Z 3579 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/welcome/.svn/all-wcprops --- a/app/views/welcome/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 42 -/svn/!svn/ver/4047/trunk/app/views/welcome -END -index.rhtml -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4047/trunk/app/views/welcome/index.rhtml -END -robots.rhtml -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/2319/trunk/app/views/welcome/robots.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/welcome/.svn/entries --- a/app/views/welcome/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/welcome/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/welcome http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-24T12:48:26.303754Z +2011-03-03T11:05:10.000000Z df32441c6802182ffb9a205c97ec8f3b 2010-08-27T14:05:54.014502Z 4047 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.711779Z +2011-03-03T11:05:10.000000Z dbe04ed0b787a5470a99a1f286c0685e 2009-01-27T17:27:50.299725Z 2319 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wiki/.svn/all-wcprops --- a/app/views/wiki/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/wiki/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4375/trunk/app/views/wiki +/svn/!svn/ver/4953/trunk/app/views/wiki END export_multiple.rhtml K 25 @@ -31,7 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4303/trunk/app/views/wiki/history.rhtml +/svn/!svn/ver/4740/trunk/app/views/wiki/history.rhtml END edit.rhtml K 25 @@ -55,7 +55,7 @@ K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/4296/trunk/app/views/wiki/diff.rhtml +/svn/!svn/ver/4953/trunk/app/views/wiki/diff.rhtml END _content.rhtml K 25 @@ -69,15 +69,15 @@ 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 -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 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wiki/.svn/entries --- a/app/views/wiki/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/wiki/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/wiki http://redmine.rubyforge.org/svn -2010-11-06T14:30:32.528294Z -4375 +2011-02-27T12:50:47.369941Z +4953 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.719778Z +2011-03-03T11:05:11.000000Z 071f00658656d063a029ff9efcfda553 2009-11-11T11:10:03.406528Z 3026 @@ -66,7 +66,7 @@ -2010-11-19T13:04:50.809800Z +2011-03-03T11:05:11.000000Z d47125b655bae6af3af29514ca23ec15 2010-10-25T16:16:46.309025Z 4290 @@ -100,7 +100,7 @@ -2010-11-19T13:04:50.809800Z +2011-03-03T11:05:11.000000Z 1ebc19864533a067dc46a3bc6f3e9b22 2010-10-28T21:25:38.778234Z 4303 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.719778Z +2011-03-03T11:05:11.000000Z 2ec7fba790578844437bd62bf95a9856 2009-11-11T11:10:03.406528Z 3026 @@ -168,11 +168,11 @@ -2010-11-19T13:04:50.812967Z -d489789686b9d26149c0583f775ba238 -2010-10-28T21:25:38.778234Z -4303 -edavis10 +2011-03-03T11:05:11.000000Z +032cfe657db049a60473a31d2d0391a2 +2011-01-22T13:21:24.424880Z +4740 +jplang has-props @@ -194,7 +194,7 @@ -1582 +1594 edit.rhtml file @@ -202,7 +202,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z cc9828c34998619dbd4b4925bf511be8 2010-10-28T21:25:38.778234Z 4303 @@ -236,7 +236,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z b45d32467f7beb06dbe055ecf7fdb247 2010-11-06T14:30:32.528294Z 4375 @@ -270,7 +270,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z 619db9d2a58a28c4b5c4baeaee88cc41 2010-10-27T16:27:06.240747Z 4296 @@ -304,11 +304,11 @@ -2010-11-19T13:04:50.812967Z -0379bb47f37911b04eb8391f397ac4ec -2010-10-27T16:27:06.240747Z -4296 -edavis10 +2011-03-03T11:40:18.000000Z +954230b09809d40bbd6f6514fb1fcc59 +2011-02-27T12:50:47.369941Z +4953 +jplang has-props @@ -330,7 +330,7 @@ -819 +931 _content.rhtml file @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.719778Z +2011-03-03T11:05:11.000000Z 8705c97ebf1405603afbbd8614ee9d2b 2007-11-12T14:36:33.182682Z 897 @@ -372,7 +372,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z 36a354ea1a705ec4843972e520ce2bd6 2010-10-27T16:27:06.240747Z 4296 @@ -400,13 +400,47 @@ 1212 +date_index.html.erb +file + + + + +2011-03-03T11:05:11.000000Z +5edb3698546c4aad9913945d39005221 +2010-10-28T21:25:38.778234Z +4303 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +1117 + destroy.rhtml file -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z 5f032c821889bfc8bf9e6eeca1023f58 2010-10-27T16:27:06.240747Z 4296 @@ -434,37 +468,3 @@ 908 -date_index.html.erb -file - - - - -2010-11-19T13:04:50.812967Z -5edb3698546c4aad9913945d39005221 -2010-10-28T21:25:38.778234Z -4303 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -1117 - diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wiki/.svn/text-base/diff.rhtml.svn-base --- a/app/views/wiki/.svn/text-base/diff.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/wiki/.svn/text-base/diff.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -5,13 +5,13 @@

    <%= @page.pretty_title %>

    -<%= l(:label_version) %> <%= link_to @diff.content_from.version, :action => 'show', :id => @page.title, :version => @diff.content_from.version %> +<%= l(:label_version) %> <%= link_to @diff.content_from.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_from.version %> (<%= @diff.content_from.author ? @diff.content_from.author.name : "anonyme" %>, <%= format_time(@diff.content_from.updated_on) %>) → -<%= l(:label_version) %> <%= link_to @diff.content_to.version, :action => 'show', :id => @page.title, :version => @diff.content_to.version %>/<%= @page.content.version %> +<%= l(:label_version) %> <%= link_to @diff.content_to.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_to.version %>/<%= @page.content.version %> (<%= @diff.content_to.author ? @diff.content_to.author.name : "anonyme" %>, <%= format_time(@diff.content_to.updated_on) %>)

    -
    - -<%= html_diff(@diff) %> +
    +<%= simple_format_without_paragraph @diff.to_html %> +
    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wiki/.svn/text-base/history.rhtml.svn-base --- a/app/views/wiki/.svn/text-base/history.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/wiki/.svn/text-base/history.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -3,8 +3,7 @@

    <%= l(:label_history) %>

    <% form_tag({:action => "diff"}, :method => :get) do %> - <%= hidden_field_tag('project_id', h(@project.to_param)) %> - +
    @@ -18,14 +17,14 @@ <% show_diff = @versions.size > 1 %> <% line_num = 1 %> <% @versions.each do |ver| %> -"> +"> - - - - + + + + <% line_num += 1 %> <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wiki/diff.rhtml --- a/app/views/wiki/diff.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/wiki/diff.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -5,13 +5,13 @@

    <%= @page.pretty_title %>

    -<%= l(:label_version) %> <%= link_to @diff.content_from.version, :action => 'show', :id => @page.title, :version => @diff.content_from.version %> +<%= l(:label_version) %> <%= link_to @diff.content_from.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_from.version %> (<%= @diff.content_from.author ? @diff.content_from.author.name : "anonyme" %>, <%= format_time(@diff.content_from.updated_on) %>) → -<%= l(:label_version) %> <%= link_to @diff.content_to.version, :action => 'show', :id => @page.title, :version => @diff.content_to.version %>/<%= @page.content.version %> +<%= l(:label_version) %> <%= link_to @diff.content_to.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_to.version %>/<%= @page.content.version %> (<%= @diff.content_to.author ? @diff.content_to.author.name : "anonyme" %>, <%= format_time(@diff.content_to.updated_on) %>)

    -
    - -<%= html_diff(@diff) %> +
    +<%= simple_format_without_paragraph @diff.to_html %> +
    diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wiki/history.rhtml --- a/app/views/wiki/history.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/wiki/history.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -3,8 +3,7 @@

    <%= l(:label_history) %>

    <% form_tag({:action => "diff"}, :method => :get) do %> - <%= hidden_field_tag('project_id', h(@project.to_param)) %> -
    #
    <%= link_to ver.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => ver.version %> <%= radio_button_tag('version', ver.version, (line_num==1), :id => "cb-#{line_num}", :onclick => "$('cbto-#{line_num+1}').checked=true;") if show_diff && (line_num < @versions.size) %> <%= radio_button_tag('version_from', ver.version, (line_num==2), :id => "cbto-#{line_num}") if show_diff && (line_num > 1) %><%= format_time(ver.updated_on) %><%= link_to_user ver.author %><%=h ver.comments %><%= link_to l(:button_annotate), :action => 'annotate', :id => @page.title, :version => ver.version %><%= format_time(ver.updated_on) %><%= link_to_user ver.author %><%=h ver.comments %><%= link_to l(:button_annotate), :action => 'annotate', :id => @page.title, :version => ver.version %>
    +
    @@ -18,14 +17,14 @@ <% show_diff = @versions.size > 1 %> <% line_num = 1 %> <% @versions.each do |ver| %> -"> +"> - - - - + + + + <% line_num += 1 %> <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wikis/.svn/all-wcprops --- a/app/views/wikis/.svn/all-wcprops Tue Feb 22 16:48:15 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 39 -/svn/!svn/ver/725/trunk/app/views/wikis -END -destroy.rhtml -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/725/trunk/app/views/wikis/destroy.rhtml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/wikis/.svn/entries --- a/app/views/wikis/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/wikis/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/wikis http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.723734Z +2011-03-03T11:05:11.000000Z 6edeee3130b12027d4d8dbfeca809abb 2007-09-14T11:34:08.234701Z 725 diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/.svn/all-wcprops --- a/app/views/workflows/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/workflows/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/3694/trunk/app/views/workflows +/svn/!svn/ver/4895/trunk/app/views/workflows END copy.rhtml K 25 @@ -19,11 +19,17 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3694/trunk/app/views/workflows/edit.rhtml +/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/3154/trunk/app/views/workflows/index.rhtml +/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 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/.svn/entries --- a/app/views/workflows/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/workflows/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/workflows http://redmine.rubyforge.org/svn -2010-04-27T17:54:27.767853Z -3694 +2011-02-20T15:38:07.840581Z +4895 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.727733Z +2011-03-03T11:05:10.000000Z d7c2b6481788394f541fe6af5dadd598 2009-12-12T10:06:07.860865Z 3154 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.727733Z +2011-03-03T11:05:10.000000Z 2457a85600aa051fcf9edf06010e6fcc 2009-12-12T10:06:07.860865Z 3154 @@ -100,10 +100,10 @@ -2010-09-23T14:37:44.727733Z -ee551cfe66cd8df0fbd5bc7bac081200 -2010-04-27T17:54:27.767853Z -3694 +2011-03-03T11:40:18.000000Z +f52bc187d855a23aea0bc36061a8d179 +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -126,7 +126,7 @@ -2474 +2211 index.rhtml file @@ -134,10 +134,10 @@ -2010-09-23T14:37:44.727733Z -6c10e101a2f8ac7a61b6355d3ec7e959 -2009-12-12T10:06:07.860865Z -3154 +2011-03-03T11:40:18.000000Z +0943677a780ac0d9c0ba1a7000148f13 +2011-02-20T13:13:10.623157Z +4890 jplang has-props @@ -160,5 +160,39 @@ -819 +851 +_form.html.erb +file + + + + +2011-03-03T11:40:18.000000Z +a2442c53d709a008d9026746d5f3cfd3 +2011-02-20T15:38:07.840581Z +4895 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1673 + diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/.svn/prop-base/_form.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/workflows/.svn/prop-base/_form.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/.svn/text-base/_form.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/workflows/.svn/text-base/_form.html.erb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,40 @@ +
    #
    <%= link_to ver.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => ver.version %> <%= radio_button_tag('version', ver.version, (line_num==1), :id => "cb-#{line_num}", :onclick => "$('cbto-#{line_num+1}').checked=true;") if show_diff && (line_num < @versions.size) %> <%= radio_button_tag('version_from', ver.version, (line_num==2), :id => "cbto-#{line_num}") if show_diff && (line_num > 1) %><%= format_time(ver.updated_on) %><%= link_to_user ver.author %><%=h ver.comments %><%= link_to l(:button_annotate), :action => 'annotate', :id => @page.title, :version => ver.version %><%= format_time(ver.updated_on) %><%= link_to_user ver.author %><%=h ver.comments %><%= link_to l(:button_annotate), :action => 'annotate', :id => @page.title, :version => ver.version %>
    + + + + + + + + <% for new_status in @statuses %> + + <% end %> + + + + <% for old_status in @statuses %> + "> + + <% for new_status in @statuses -%> + + <% end -%> + + <% end %> + +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=l(:label_current_status)%> + <%=l(:label_new_statuses_allowed)%>
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.new-status-#{new_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=h new_status.name %> +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.old-status-#{old_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + + <%=h old_status.name %> + + <%= check_box_tag "issue_status[#{ old_status.id }][#{new_status.id}][]", name, workflows.detect {|w| w.old_status_id == old_status.id && w.new_status_id == new_status.id}, + :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> +
    \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/.svn/text-base/edit.rhtml.svn-base --- a/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -20,54 +20,31 @@

    <% end %> - <% if @tracker && @role && @statuses.any? %> -<% form_tag({}, :id => 'workflow_form' ) do %> -<%= hidden_field_tag 'tracker_id', @tracker.id %> -<%= hidden_field_tag 'role_id', @role.id %> -
    - - - - - - - - - <% for new_status in @statuses %> - - <% end %> - - - - <% for old_status in @statuses %> - "> - - <% new_status_ids_allowed = old_status.find_new_statuses_allowed_to([@role], @tracker).collect(&:id) -%> - <% for new_status in @statuses -%> - - <% end -%> - - <% end %> - -
    <%=l(:label_current_status)%><%=l(:label_new_statuses_allowed)%>
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.new-status-#{new_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - <%= new_status.name %> -
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.old-status-#{old_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - - <%= old_status.name %> - - <%= check_box_tag "issue_status[#{ old_status.id }][]", new_status.id, new_status_ids_allowed.include?(new_status.id), - :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> -
    -
    -

    <%= check_all_links 'workflow_form' %>

    - -<%= submit_tag l(:button_save) %> -<% end %> + <% form_tag({}, :id => 'workflow_form' ) do %> + <%= hidden_field_tag 'tracker_id', @tracker.id %> + <%= hidden_field_tag 'role_id', @role.id %> +
    + <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %> + +
    + Autorisations supplémentaires lorsque l'utilisateur a créé la demande +
    + <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> +
    +
    + <%= javascript_tag "hideFieldset($('author_workflows'))" unless @workflows['author'].present? %> + +
    + Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur +
    + <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> +
    +
    + <%= javascript_tag "hideFieldset($('assignee_workflows'))" unless @workflows['assignee'].present? %> +
    + <%= submit_tag l(:button_save) %> + <% end %> <% end %> <% html_title(l(:label_workflow)) -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/.svn/text-base/index.rhtml.svn-base --- a/app/views/workflows/.svn/text-base/index.rhtml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/workflows/.svn/text-base/index.rhtml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -5,6 +5,7 @@ <% if @workflow_counts.empty? %>

    <%= l(:label_no_data) %>

    <% else %> +
    @@ -23,11 +24,12 @@ <% roles.each do |role, count| -%> <% end -%> <% end -%>
    <%= h tracker %> - <%= link_to((count > 1 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %> + <%= link_to((count > 0 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %>
    +
    <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/_form.html.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/workflows/_form.html.erb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,40 @@ + + + + + + + + + <% for new_status in @statuses %> + + <% end %> + + + + <% for old_status in @statuses %> + "> + + <% for new_status in @statuses -%> + + <% end -%> + + <% end %> + +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=l(:label_current_status)%> + <%=l(:label_new_statuses_allowed)%>
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.new-status-#{new_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=h new_status.name %> +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.old-status-#{old_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + + <%=h old_status.name %> + + <%= check_box_tag "issue_status[#{ old_status.id }][#{new_status.id}][]", name, workflows.detect {|w| w.old_status_id == old_status.id && w.new_status_id == new_status.id}, + :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> +
    \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/edit.rhtml --- a/app/views/workflows/edit.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/workflows/edit.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -20,54 +20,31 @@

    <% end %> - <% if @tracker && @role && @statuses.any? %> -<% form_tag({}, :id => 'workflow_form' ) do %> -<%= hidden_field_tag 'tracker_id', @tracker.id %> -<%= hidden_field_tag 'role_id', @role.id %> -
    - - - - - - - - - <% for new_status in @statuses %> - - <% end %> - - - - <% for old_status in @statuses %> - "> - - <% new_status_ids_allowed = old_status.find_new_statuses_allowed_to([@role], @tracker).collect(&:id) -%> - <% for new_status in @statuses -%> - - <% end -%> - - <% end %> - -
    <%=l(:label_current_status)%><%=l(:label_new_statuses_allowed)%>
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.new-status-#{new_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - <%= new_status.name %> -
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.old-status-#{old_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - - <%= old_status.name %> - - <%= check_box_tag "issue_status[#{ old_status.id }][]", new_status.id, new_status_ids_allowed.include?(new_status.id), - :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> -
    -
    -

    <%= check_all_links 'workflow_form' %>

    - -<%= submit_tag l(:button_save) %> -<% end %> + <% form_tag({}, :id => 'workflow_form' ) do %> + <%= hidden_field_tag 'tracker_id', @tracker.id %> + <%= hidden_field_tag 'role_id', @role.id %> +
    + <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %> + +
    + Autorisations supplémentaires lorsque l'utilisateur a créé la demande +
    + <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> +
    +
    + <%= javascript_tag "hideFieldset($('author_workflows'))" unless @workflows['author'].present? %> + +
    + Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur +
    + <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> +
    +
    + <%= javascript_tag "hideFieldset($('assignee_workflows'))" unless @workflows['assignee'].present? %> +
    + <%= submit_tag l(:button_save) %> + <% end %> <% end %> <% html_title(l(:label_workflow)) -%> diff -r 7cec015f07ce -r 73ff0e6a11b1 app/views/workflows/index.rhtml --- a/app/views/workflows/index.rhtml Tue Feb 22 16:48:15 2011 +0000 +++ b/app/views/workflows/index.rhtml Thu Mar 03 12:11:53 2011 +0000 @@ -5,6 +5,7 @@ <% if @workflow_counts.empty? %>

    <%= l(:label_no_data) %>

    <% else %> +
    @@ -23,11 +24,12 @@ <% roles.each do |role, count| -%> <% end -%> <% end -%>
    <%= h tracker %> - <%= link_to((count > 1 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %> + <%= link_to((count > 0 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %>
    +
    <% end %> diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/all-wcprops --- a/config/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,37 +1,37 @@ K 25 svn:wc:ra_dav:version-url V 31 -/svn/!svn/ver/4405/trunk/config +/svn/!svn/ver/4955/trunk/config END settings.yml K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4362/trunk/config/settings.yml +/svn/!svn/ver/4513/trunk/config/settings.yml END -email.yml.example +configuration.yml.example K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/3448/trunk/config/email.yml.example +V 57 +/svn/!svn/ver/4950/trunk/config/configuration.yml.example END routes.rb K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4372/trunk/config/routes.rb +/svn/!svn/ver/4729/trunk/config/routes.rb END boot.rb K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/2887/trunk/config/boot.rb +/svn/!svn/ver/4516/trunk/config/boot.rb END environment.rb K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/3372/trunk/config/environment.rb +/svn/!svn/ver/4904/trunk/config/environment.rb END additional_environment.rb.example K 25 @@ -43,5 +43,5 @@ K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/3564/trunk/config/database.yml.example +/svn/!svn/ver/4753/trunk/config/database.yml.example END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/dir-prop-base --- a/config/.svn/dir-prop-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/dir-prop-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,8 @@ K 10 svn:ignore -V 23 +V 41 database.yml email.yml +configuration.yml END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/entries --- a/config/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/config http://redmine.rubyforge.org/svn -2010-11-14T15:14:19.280754Z -4405 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -32,11 +32,11 @@ -2010-11-19T13:04:51.216928Z -974e583c59b4497382d2aa08f2b2ff01 -2010-11-02T19:00:36.834304Z -4362 -edavis10 +2011-03-03T11:05:14.000000Z +0f6fe2db3317d8b40af42a6d534da87e +2010-12-15T21:18:06.237327Z +4513 +jplang has-props @@ -58,19 +58,19 @@ -4106 +4246 -email.yml.example +configuration.yml.example file -2010-09-23T14:37:44.731779Z -a1c44811380e661aff4e67b6b366f2db -2010-02-18T05:20:52.515080Z -3448 -edavis10 +2011-03-03T11:40:18.000000Z +69243d1b5b9b111da631c7034d51ba71 +2011-02-26T13:09:25.657748Z +4950 +jplang has-props @@ -92,7 +92,7 @@ -2120 +4886 locales dir @@ -103,10 +103,10 @@ -2010-11-19T13:04:51.216928Z -3817ace6dd9dfb2fda37c5a67605b5e0 -2010-11-06T13:22:23.662480Z -4372 +2011-03-03T11:05:14.000000Z +b03599e0dc8d0a6b03c3173864eb57bd +2011-01-16T15:23:11.666065Z +4729 jplang has-props @@ -129,7 +129,7 @@ -14427 +14402 boot.rb file @@ -137,11 +137,11 @@ -2010-09-23T14:37:44.731779Z -cfce6ac16974777a93c14be034b2fdec -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:14.000000Z +2969e2a7b5ab1b2a014b5f0c94bac872 +2010-12-17T08:34:29.830642Z +4516 +jplang has-props @@ -163,7 +163,7 @@ -2795 +3203 initializers dir @@ -174,10 +174,10 @@ -2010-09-23T14:37:44.731779Z -197d8958c94ce40f08a4b8f1d2c49f6e -2010-02-06T10:40:21.867545Z -3372 +2011-03-03T11:40:18.000000Z +cc9c7d7f9a4bd800d2c4a8737147e4c3 +2011-02-21T11:02:18.659691Z +4904 jplang has-props @@ -200,7 +200,7 @@ -2494 +2553 environments dir @@ -211,7 +211,7 @@ -2010-09-23T14:37:44.731779Z +2011-03-03T11:05:14.000000Z 6b63489cdd262e653712af1aa96cd390 2009-11-08T02:16:42.659918Z 3018 @@ -245,10 +245,10 @@ -2010-09-23T14:37:44.731779Z -b315245d4b4a47a512931d087b03435f -2010-03-12T13:48:14.426661Z -3564 +2011-03-03T11:05:14.000000Z +f33e1e1bf73ba5d10ef3a6f170da3088 +2011-01-23T10:25:48.265995Z +4753 jplang has-props @@ -271,5 +271,5 @@ -750 +755 diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/prop-base/configuration.yml.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/.svn/prop-base/configuration.yml.example.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/prop-base/email.yml.example.svn-base --- a/config/.svn/prop-base/email.yml.example.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/text-base/boot.rb.svn-base --- a/config/.svn/text-base/boot.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/text-base/boot.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -106,5 +106,17 @@ end end +# TODO: Workaround for #7013 to be removed for 1.2.0 +# Loads i18n 0.4.2 before Rails loads any more recent gem +# 0.5.0 is not compatible with the old interpolation syntax +# Plugins will have to migrate to the new syntax for 1.2.0 +require 'rubygems' +begin + gem 'i18n', '0.4.2' +rescue Gem::LoadError => load_error + $stderr.puts %(Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`) + exit 1 +end + # All that for this: Rails.boot! diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/text-base/configuration.yml.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/.svn/text-base/configuration.yml.example.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,147 @@ +# = Redmine configuration file +# +# Each environment has it's own configuration options. If you are only +# running in production, only the production block needs to be configured. +# Environment specific configuration options override the default ones. +# +# Note that this file needs to be a valid YAML file. +# +# == Outgoing email settings (email_delivery setting) +# +# === Common configurations +# +# ==== Sendmail command +# +# production: +# email_delivery: +# delivery_method: :sendmail +# +# ==== Simple SMTP server at localhost +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "localhost" +# port: 25 +# +# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :login +# domain: 'foo.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at example.com using PLAIN authentication +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :plain +# domain: 'example.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at using TLS (GMail) +# +# This requires some additional configuration. See the article at: +# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# tls: true +# address: "smtp.gmail.com" +# port: 587 +# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps +# authentication: :plain +# user_name: "your_email@gmail.com" +# password: "your_password" +# +# +# === More configuration options +# +# See the "Configuration options" at the following website for a list of the +# full options allowed: +# +# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer + + +# default configuration options for all environments +default: + # Outgoing emails configuration (see examples above) + email_delivery: + delivery_method: :smtp + smtp_settings: + address: smtp.example.net + port: 25 + domain: example.net + authentication: :login + user_name: "redmine@example.net" + password: "redmine" + + # Absolute path to the directory where attachments are stored. + # The default is the 'files' directory in your Redmine instance. + # Your Redmine instance needs to have write permission on this + # directory. + # Examples: + # attachments_storage_path: /var/redmine/files + # attachments_storage_path: D:/redmine/files + attachments_storage_path: + + # Configuration of the autologin cookie. + # autologin_cookie_name: the name of the cookie (default: autologin) + # autologin_cookie_path: the cookie path (default: /) + # autologin_cookie_secure: true sets the cookie secure flag (default: false) + autologin_cookie_name: + autologin_cookie_path: + autologin_cookie_secure: + + # Configuration of SCM executable command. + # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) + # On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. + # Examples: + # scm_subversion_command: svn # (default: svn) + # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) + # scm_git_command: /usr/local/bin/git # (default: git) + # scm_cvs_command: cvs # (default: cvs) + # scm_bazaar_command: bzr.exe # (default: bzr) + # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) + scm_subversion_command: + scm_mercurial_command: + scm_git_command: + scm_cvs_command: + scm_bazaar_command: + scm_darcs_command: + + # Key used to encrypt sensitive data in the database (SCM and LDAP passwords). + # If you don't want to enable data encryption, just leave it blank. + # WARNING: losing/changing this key will make encrypted data unreadable. + # + # If you want to encrypt existing passwords in your database: + # * set the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + # + # If you have encrypted data and want to change this key, you have to: + # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first + # * change the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + database_cipher_key: + +# specific configuration options for production environment +# that overrides the default ones +production: + +# specific configuration options for development environment +# that overrides the default ones +development: diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/text-base/database.yml.example.svn-base --- a/config/.svn/text-base/database.yml.example.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/text-base/database.yml.example.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -36,4 +36,4 @@ test_sqlite3: adapter: sqlite3 - database: db/test.db + database: db/test.sqlite3 diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/text-base/email.yml.example.svn-base --- a/config/.svn/text-base/email.yml.example.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -# = Outgoing email settings -# -# Each environment has it's own configuration options. If you are only -# running in production, only the production block needs to be configured. -# -# == Common configurations -# -# === Sendmail command -# -# production: -# delivery_method: :sendmail -# -# === Simple SMTP server at localhost -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "localhost" -# port: 25 -# -# === SMTP server at example.com using LOGIN authentication and checking HELO for foo.com -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :login -# domain: 'foo.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at example.com using PLAIN authentication -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :plain -# domain: 'example.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at using TLS (GMail) -# -# This requires some additional configuration. See the article at: -# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ -# -# production: -# delivery_method: :smtp -# smtp_settings: -# tls: true -# address: "smtp.gmail.com" -# port: 587 -# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps -# authentication: :plain -# user_name: "your_email@gmail.com" -# password: "your_password" -# -# -# == More configuration options -# -# See the "Configuration options" at the following website for a list of the -# full options allowed: -# -# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer - -production: - delivery_method: :smtp - smtp_settings: - address: smtp.example.net - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" - -development: - delivery_method: :smtp - smtp_settings: - address: 127.0.0.1 - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/text-base/environment.rb.svn-base --- a/config/.svn/text-base/environment.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/text-base/environment.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -5,7 +5,7 @@ # ENV['RAILS_ENV'] ||= 'production' # Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION +RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') @@ -24,7 +24,7 @@ # config.frameworks -= [ :action_web_service, :action_mailer ] # Add additional load paths for sweepers - config.load_paths += %W( #{RAILS_ROOT}/app/sweepers ) + config.autoload_paths += %W( #{RAILS_ROOT}/app/sweepers ) # Force all environments to use the same logger level # (by default production uses :info, the others :debug) @@ -46,11 +46,12 @@ # config.active_record.schema_format = :ruby # Deliveries are disabled by default. Do NOT modify this section. - # Define your email configuration in email.yml instead. + # Define your email configuration in configuration.yml instead. # It will automatically turn deliveries on config.action_mailer.perform_deliveries = false config.gem 'rubytree', :lib => 'tree' + config.gem 'coderay', :version => '~>0.9.7' # Load any local configuration that is kept out of source control # (e.g. gems, patches). diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/text-base/routes.rb.svn-base --- a/config/.svn/text-base/routes.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/text-base/routes.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -122,8 +122,7 @@ map.resources :users, :member => { :edit_membership => :post, :destroy_membership => :post - }, - :except => [:destroy] + } # For nice "roadmap" in the url for the index action map.connect 'projects/:project_id/roadmap', :controller => 'versions', :action => 'index' diff -r 7cec015f07ce -r 73ff0e6a11b1 config/.svn/text-base/settings.yml.svn-base --- a/config/.svn/text-base/settings.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/.svn/text-base/settings.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -66,6 +66,9 @@ feeds_limit: format: int default: 15 +gantt_items_limit: + format: int + default: 500 # Maximum size of files that can be displayed # inline through the file viewer (in KB) file_max_size_displayed: @@ -98,6 +101,11 @@ default: 0 commit_fix_done_ratio: default: 100 +commit_logtime_enabled: + default: 0 +commit_logtime_activity_id: + format: int + default: 0 # autologin duration in days # 0 means autologin is disabled autologin: diff -r 7cec015f07ce -r 73ff0e6a11b1 config/boot.rb --- a/config/boot.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/config/boot.rb Thu Mar 03 12:11:53 2011 +0000 @@ -106,5 +106,17 @@ end end +# TODO: Workaround for #7013 to be removed for 1.2.0 +# Loads i18n 0.4.2 before Rails loads any more recent gem +# 0.5.0 is not compatible with the old interpolation syntax +# Plugins will have to migrate to the new syntax for 1.2.0 +require 'rubygems' +begin + gem 'i18n', '0.4.2' +rescue Gem::LoadError => load_error + $stderr.puts %(Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`) + exit 1 +end + # All that for this: Rails.boot! diff -r 7cec015f07ce -r 73ff0e6a11b1 config/configuration.yml.example --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/configuration.yml.example Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,147 @@ +# = Redmine configuration file +# +# Each environment has it's own configuration options. If you are only +# running in production, only the production block needs to be configured. +# Environment specific configuration options override the default ones. +# +# Note that this file needs to be a valid YAML file. +# +# == Outgoing email settings (email_delivery setting) +# +# === Common configurations +# +# ==== Sendmail command +# +# production: +# email_delivery: +# delivery_method: :sendmail +# +# ==== Simple SMTP server at localhost +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "localhost" +# port: 25 +# +# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :login +# domain: 'foo.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at example.com using PLAIN authentication +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :plain +# domain: 'example.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at using TLS (GMail) +# +# This requires some additional configuration. See the article at: +# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# tls: true +# address: "smtp.gmail.com" +# port: 587 +# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps +# authentication: :plain +# user_name: "your_email@gmail.com" +# password: "your_password" +# +# +# === More configuration options +# +# See the "Configuration options" at the following website for a list of the +# full options allowed: +# +# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer + + +# default configuration options for all environments +default: + # Outgoing emails configuration (see examples above) + email_delivery: + delivery_method: :smtp + smtp_settings: + address: smtp.example.net + port: 25 + domain: example.net + authentication: :login + user_name: "redmine@example.net" + password: "redmine" + + # Absolute path to the directory where attachments are stored. + # The default is the 'files' directory in your Redmine instance. + # Your Redmine instance needs to have write permission on this + # directory. + # Examples: + # attachments_storage_path: /var/redmine/files + # attachments_storage_path: D:/redmine/files + attachments_storage_path: + + # Configuration of the autologin cookie. + # autologin_cookie_name: the name of the cookie (default: autologin) + # autologin_cookie_path: the cookie path (default: /) + # autologin_cookie_secure: true sets the cookie secure flag (default: false) + autologin_cookie_name: + autologin_cookie_path: + autologin_cookie_secure: + + # Configuration of SCM executable command. + # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) + # On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. + # Examples: + # scm_subversion_command: svn # (default: svn) + # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) + # scm_git_command: /usr/local/bin/git # (default: git) + # scm_cvs_command: cvs # (default: cvs) + # scm_bazaar_command: bzr.exe # (default: bzr) + # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) + scm_subversion_command: + scm_mercurial_command: + scm_git_command: + scm_cvs_command: + scm_bazaar_command: + scm_darcs_command: + + # Key used to encrypt sensitive data in the database (SCM and LDAP passwords). + # If you don't want to enable data encryption, just leave it blank. + # WARNING: losing/changing this key will make encrypted data unreadable. + # + # If you want to encrypt existing passwords in your database: + # * set the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + # + # If you have encrypted data and want to change this key, you have to: + # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first + # * change the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + database_cipher_key: + +# specific configuration options for production environment +# that overrides the default ones +production: + +# specific configuration options for development environment +# that overrides the default ones +development: diff -r 7cec015f07ce -r 73ff0e6a11b1 config/database.yml.example --- a/config/database.yml.example Tue Feb 22 16:48:15 2011 +0000 +++ b/config/database.yml.example Thu Mar 03 12:11:53 2011 +0000 @@ -36,4 +36,4 @@ test_sqlite3: adapter: sqlite3 - database: db/test.db + database: db/test.sqlite3 diff -r 7cec015f07ce -r 73ff0e6a11b1 config/email.yml.example --- a/config/email.yml.example Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -# = Outgoing email settings -# -# Each environment has it's own configuration options. If you are only -# running in production, only the production block needs to be configured. -# -# == Common configurations -# -# === Sendmail command -# -# production: -# delivery_method: :sendmail -# -# === Simple SMTP server at localhost -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "localhost" -# port: 25 -# -# === SMTP server at example.com using LOGIN authentication and checking HELO for foo.com -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :login -# domain: 'foo.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at example.com using PLAIN authentication -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :plain -# domain: 'example.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at using TLS (GMail) -# -# This requires some additional configuration. See the article at: -# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ -# -# production: -# delivery_method: :smtp -# smtp_settings: -# tls: true -# address: "smtp.gmail.com" -# port: 587 -# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps -# authentication: :plain -# user_name: "your_email@gmail.com" -# password: "your_password" -# -# -# == More configuration options -# -# See the "Configuration options" at the following website for a list of the -# full options allowed: -# -# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer - -production: - delivery_method: :smtp - smtp_settings: - address: smtp.example.net - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" - -development: - delivery_method: :smtp - smtp_settings: - address: 127.0.0.1 - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/environment.rb --- a/config/environment.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/config/environment.rb Thu Mar 03 12:11:53 2011 +0000 @@ -5,7 +5,7 @@ # ENV['RAILS_ENV'] ||= 'production' # Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION +RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') @@ -24,7 +24,7 @@ # config.frameworks -= [ :action_web_service, :action_mailer ] # Add additional load paths for sweepers - config.load_paths += %W( #{RAILS_ROOT}/app/sweepers ) + config.autoload_paths += %W( #{RAILS_ROOT}/app/sweepers ) # Force all environments to use the same logger level # (by default production uses :info, the others :debug) @@ -46,11 +46,12 @@ # config.active_record.schema_format = :ruby # Deliveries are disabled by default. Do NOT modify this section. - # Define your email configuration in email.yml instead. + # Define your email configuration in configuration.yml instead. # It will automatically turn deliveries on config.action_mailer.perform_deliveries = false config.gem 'rubytree', :lib => 'tree' + config.gem 'coderay', :version => '~>0.9.7' # Load any local configuration that is kept out of source control # (e.g. gems, patches). diff -r 7cec015f07ce -r 73ff0e6a11b1 config/environments/.svn/all-wcprops --- a/config/environments/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4405/trunk/config/environments -END -test.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4405/trunk/config/environments/test.rb -END -development.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/975/trunk/config/environments/development.rb -END -test_sqlite3.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3397/trunk/config/environments/test_sqlite3.rb -END -demo.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/772/trunk/config/environments/demo.rb -END -test_pgsql.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3397/trunk/config/environments/test_pgsql.rb -END -production.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/4182/trunk/config/environments/production.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/environments/.svn/entries --- a/config/environments/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/config/environments/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/config/environments http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:51.212937Z +2011-03-03T11:05:14.000000Z 08b25fdea5e3e041116340c3c3090b18 2010-11-14T15:14:19.280754Z 4405 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.735734Z +2011-03-03T11:05:14.000000Z 02eadf22aa59353271c702e4865138b1 2007-12-10T17:58:07.273873Z 975 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.739734Z +2011-03-03T11:05:14.000000Z 213279c73e8c922d0a9d43f3c1cc6943 2010-02-08T18:53:07.634937Z 3397 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.735734Z +2011-03-03T11:05:14.000000Z d08152d4dda4608f254785b23840140a 2007-09-27T22:30:57.196220Z 772 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.739734Z +2011-03-03T11:05:14.000000Z 213279c73e8c922d0a9d43f3c1cc6943 2010-02-08T18:53:07.634937Z 3397 @@ -202,7 +202,7 @@ -2010-11-19T13:04:51.212937Z +2011-03-03T11:05:14.000000Z 17a6fbb168f3951191541f0f5a554454 2010-09-26T16:54:38.112012Z 4182 diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/.svn/all-wcprops --- a/config/initializers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/config/initializers/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4389/trunk/config/initializers +/svn/!svn/ver/4904/trunk/config/initializers END inflections.rb K 25 @@ -13,13 +13,13 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/2493/trunk/config/initializers/30-redmine.rb +/svn/!svn/ver/4679/trunk/config/initializers/30-redmine.rb END 10-patches.rb K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4389/trunk/config/initializers/10-patches.rb +/svn/!svn/ver/4904/trunk/config/initializers/10-patches.rb END backtrace_silencers.rb K 25 @@ -27,12 +27,6 @@ V 67 /svn/!svn/ver/2895/trunk/config/initializers/backtrace_silencers.rb END -40-email.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/1625/trunk/config/initializers/40-email.rb -END 20-mime_types.rb K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/.svn/entries --- a/config/initializers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/config/initializers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/config/initializers http://redmine.rubyforge.org/svn -2010-11-09T19:44:37.907646Z -4389 +2011-02-21T11:02:18.659691Z +4904 jplang has-props @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z acc71445fc1c65ebe6fdeba695fea714 2009-09-20T14:06:57.257282Z 2895 @@ -66,10 +66,10 @@ -2010-09-23T14:37:44.743734Z -ceff5e8f4ea4a2540c9303dcdf936aed -2009-02-21T11:04:50.579477Z -2493 +2011-03-03T11:05:14.000000Z +45627c8ad9bafcee93e6ce01b92b57d1 +2011-01-10T18:25:12.105765Z +4679 jplang has-props @@ -92,7 +92,7 @@ -46 +168 10-patches.rb file @@ -100,10 +100,10 @@ -2010-11-19T13:04:51.204890Z -82c05bf7e87e057a6a3dd5d74a56ee7c -2010-11-09T19:44:37.907646Z -4389 +2011-03-03T11:40:18.000000Z +17f5c9eadec957cb8fb2b6d1f07b61ae +2011-02-21T11:02:18.659691Z +4904 jplang has-props @@ -126,7 +126,7 @@ -3061 +2907 backtrace_silencers.rb file @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z ca8db2f40b067cb8615263fa5a238517 2009-09-20T14:06:57.257282Z 2895 @@ -162,47 +162,13 @@ 404 -40-email.rb -file - - - - -2010-09-23T14:37:44.743734Z -386c37f359a87852920a3c3f3e4bbc84 -2008-07-04T18:55:45.736676Z -1625 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -534 - 20-mime_types.rb file -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z 0005ed7b233f71646e0f75b9994cf219 2008-09-10T18:26:13.133776Z 1797 @@ -236,7 +202,7 @@ -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z a7948d8e86bcd799c74945fe91b4a8b1 2009-09-20T14:06:57.257282Z 2895 diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/.svn/prop-base/40-email.rb.svn-base --- a/config/initializers/.svn/prop-base/40-email.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/.svn/text-base/10-patches.rb.svn-base --- a/config/initializers/.svn/text-base/10-patches.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/initializers/.svn/text-base/10-patches.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -79,15 +79,21 @@ ActionMailer::Base.send :include, AsynchronousMailer -# TODO: Hack to support i18n 4.x on Rails 2.3.5. Remove post 2.3.6. -# See http://www.redmine.org/issues/6428 and http://www.redmine.org/issues/5608 -module I18n - module Backend - module Base - def warn_syntax_deprecation!(*args) - return if @skip_syntax_deprecation - warn "The {{key}} interpolation syntax in I18n messages is deprecated. Please use %{key} instead.\nDowngrade your i18n gem to 0.3.7 (everything above must be deinstalled) to remove this warning, see http://www.redmine.org/issues/5608 for more information." - @skip_syntax_deprecation = true +# TMail::Unquoter.convert_to_with_fallback_on_iso_8859_1 introduced in TMail 1.2.7 +# triggers a test failure in test_add_issue_with_japanese_keywords(MailHandlerTest) +module TMail + class Unquoter + class << self + alias_method :convert_to, :convert_to_without_fallback_on_iso_8859_1 + end + end +end + +module ActionController + module MimeResponds + class Responder + def api(&block) + any(:xml, :json, &block) end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/.svn/text-base/30-redmine.rb.svn-base --- a/config/initializers/.svn/text-base/30-redmine.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/initializers/.svn/text-base/30-redmine.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,5 @@ I18n.default_locale = 'en' +# Adds fallback to default locale for untranslated strings +I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) require 'redmine' diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/.svn/text-base/40-email.rb.svn-base --- a/config/initializers/.svn/text-base/40-email.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# Loads action_mailer settings from email.yml -# and turns deliveries on if configuration file is found - -filename = File.join(File.dirname(__FILE__), '..', 'email.yml') -if File.file?(filename) - mailconfig = YAML::load_file(filename) - - if mailconfig.is_a?(Hash) && mailconfig.has_key?(Rails.env) - # Enable deliveries - ActionMailer::Base.perform_deliveries = true - - mailconfig[Rails.env].each do |k, v| - v.symbolize_keys! if v.respond_to?(:symbolize_keys!) - ActionMailer::Base.send("#{k}=", v) - end - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/10-patches.rb --- a/config/initializers/10-patches.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/config/initializers/10-patches.rb Thu Mar 03 12:11:53 2011 +0000 @@ -79,15 +79,21 @@ ActionMailer::Base.send :include, AsynchronousMailer -# TODO: Hack to support i18n 4.x on Rails 2.3.5. Remove post 2.3.6. -# See http://www.redmine.org/issues/6428 and http://www.redmine.org/issues/5608 -module I18n - module Backend - module Base - def warn_syntax_deprecation!(*args) - return if @skip_syntax_deprecation - warn "The {{key}} interpolation syntax in I18n messages is deprecated. Please use %{key} instead.\nDowngrade your i18n gem to 0.3.7 (everything above must be deinstalled) to remove this warning, see http://www.redmine.org/issues/5608 for more information." - @skip_syntax_deprecation = true +# TMail::Unquoter.convert_to_with_fallback_on_iso_8859_1 introduced in TMail 1.2.7 +# triggers a test failure in test_add_issue_with_japanese_keywords(MailHandlerTest) +module TMail + class Unquoter + class << self + alias_method :convert_to, :convert_to_without_fallback_on_iso_8859_1 + end + end +end + +module ActionController + module MimeResponds + class Responder + def api(&block) + any(:xml, :json, &block) end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/30-redmine.rb --- a/config/initializers/30-redmine.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/config/initializers/30-redmine.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,5 @@ I18n.default_locale = 'en' +# Adds fallback to default locale for untranslated strings +I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) require 'redmine' diff -r 7cec015f07ce -r 73ff0e6a11b1 config/initializers/40-email.rb --- a/config/initializers/40-email.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# Loads action_mailer settings from email.yml -# and turns deliveries on if configuration file is found - -filename = File.join(File.dirname(__FILE__), '..', 'email.yml') -if File.file?(filename) - mailconfig = YAML::load_file(filename) - - if mailconfig.is_a?(Hash) && mailconfig.has_key?(Rails.env) - # Enable deliveries - ActionMailer::Base.perform_deliveries = true - - mailconfig[Rails.env].each do |k, v| - v.symbolize_keys! if v.respond_to?(:symbolize_keys!) - ActionMailer::Base.send("#{k}=", v) - end - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/all-wcprops --- a/config/locales/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,263 +1,269 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4384/trunk/config/locales +/svn/!svn/ver/4955/trunk/config/locales END lt.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/lt.yml +/svn/!svn/ver/4955/trunk/config/locales/lt.yml END sr-YU.yml K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4384/trunk/config/locales/sr-YU.yml +/svn/!svn/ver/4955/trunk/config/locales/sr-YU.yml END ro.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/ro.yml +/svn/!svn/ver/4955/trunk/config/locales/ro.yml END lv.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/lv.yml +/svn/!svn/ver/4955/trunk/config/locales/lv.yml END zh.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/zh.yml +/svn/!svn/ver/4955/trunk/config/locales/zh.yml END pt.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/pt.yml +/svn/!svn/ver/4955/trunk/config/locales/pt.yml END ca.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/ca.yml +/svn/!svn/ver/4955/trunk/config/locales/ca.yml END pt-BR.yml K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4384/trunk/config/locales/pt-BR.yml +/svn/!svn/ver/4955/trunk/config/locales/pt-BR.yml END tr.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/tr.yml +/svn/!svn/ver/4955/trunk/config/locales/tr.yml END ru.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/ru.yml +/svn/!svn/ver/4955/trunk/config/locales/ru.yml END en-GB.yml K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4384/trunk/config/locales/en-GB.yml +/svn/!svn/ver/4955/trunk/config/locales/en-GB.yml END id.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/id.yml +/svn/!svn/ver/4955/trunk/config/locales/id.yml END el.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/el.yml +/svn/!svn/ver/4955/trunk/config/locales/el.yml END en.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4382/trunk/config/locales/en.yml +/svn/!svn/ver/4954/trunk/config/locales/en.yml END gl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/gl.yml +/svn/!svn/ver/4955/trunk/config/locales/gl.yml END cs.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/cs.yml +/svn/!svn/ver/4955/trunk/config/locales/cs.yml END mk.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/mk.yml +/svn/!svn/ver/4955/trunk/config/locales/mk.yml END es.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/es.yml +/svn/!svn/ver/4955/trunk/config/locales/es.yml END ko.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/ko.yml +/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/4384/trunk/config/locales/eu.yml +/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/4384/trunk/config/locales/zh-TW.yml +/svn/!svn/ver/4955/trunk/config/locales/zh-TW.yml END mn.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/mn.yml +/svn/!svn/ver/4955/trunk/config/locales/mn.yml END it.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/it.yml +/svn/!svn/ver/4955/trunk/config/locales/it.yml END sk.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/sk.yml +/svn/!svn/ver/4955/trunk/config/locales/sk.yml END sl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/sl.yml +/svn/!svn/ver/4955/trunk/config/locales/sl.yml END uk.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/uk.yml +/svn/!svn/ver/4955/trunk/config/locales/uk.yml END da.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/da.yml +/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/4384/trunk/config/locales/sr.yml +/svn/!svn/ver/4955/trunk/config/locales/sr.yml +END +fa.yml +K 25 +svn:wc:ra_dav:version-url +V 46 +/svn/!svn/ver/4955/trunk/config/locales/fa.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/4384/trunk/config/locales/bg.yml +/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/4384/trunk/config/locales/de.yml -END -sv.yml -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4384/trunk/config/locales/sv.yml +/svn/!svn/ver/4955/trunk/config/locales/de.yml END ja.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/ja.yml +/svn/!svn/ver/4955/trunk/config/locales/ja.yml END he.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/he.yml +/svn/!svn/ver/4955/trunk/config/locales/he.yml END fi.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/fi.yml +/svn/!svn/ver/4955/trunk/config/locales/fi.yml END bs.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/bs.yml +/svn/!svn/ver/4955/trunk/config/locales/bs.yml END fr.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4382/trunk/config/locales/fr.yml +/svn/!svn/ver/4954/trunk/config/locales/fr.yml END nl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/nl.yml +/svn/!svn/ver/4955/trunk/config/locales/nl.yml END hr.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/hr.yml +/svn/!svn/ver/4955/trunk/config/locales/hr.yml END pl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/pl.yml +/svn/!svn/ver/4955/trunk/config/locales/pl.yml END th.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/th.yml +/svn/!svn/ver/4955/trunk/config/locales/th.yml END no.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/no.yml +/svn/!svn/ver/4955/trunk/config/locales/no.yml END hu.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/hu.yml +/svn/!svn/ver/4955/trunk/config/locales/hu.yml END vi.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4384/trunk/config/locales/vi.yml +/svn/!svn/ver/4955/trunk/config/locales/vi.yml END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/entries --- a/config/locales/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/config/locales http://redmine.rubyforge.org/svn -2010-11-07T14:18:13.240686Z -4384 +2011-02-27T13:43:18.863191Z +4955 jplang @@ -32,10 +32,10 @@ -2010-11-19T13:04:51.152964Z -3c3e846c8a61fc0306fcac52e8a6db63 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +3542e97eeeee34df7a3d6d64a4ce0407 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -58,7 +58,7 @@ -43469 +44029 sr-YU.yml file @@ -66,10 +66,10 @@ -2010-11-19T13:04:51.152964Z -4270faebfc0875178412531d9945e450 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +b05d928becf91c52a78271c93715bb1b +2011-02-27T13:43:18.863191Z +4955 jplang @@ -92,7 +92,7 @@ -40597 +42299 ro.yml file @@ -100,10 +100,10 @@ -2010-11-19T13:04:51.152964Z -a34852b28eb42df6bf3d98b6e4cfe8dc -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +dd9fb4aae0fa69165e4f4e1100c3fa26 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -126,7 +126,7 @@ -39642 +40417 lv.yml file @@ -134,10 +134,10 @@ -2010-11-19T13:04:51.152964Z -77f6e9e4ebc4ece3ff5a79b62ee8a48b -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +12f9b4e9c849923a86334f56fbb65f1a +2011-02-27T13:43:18.863191Z +4955 jplang @@ -160,7 +160,7 @@ -40602 +42305 zh.yml file @@ -168,10 +168,10 @@ -2010-11-19T13:04:51.156936Z -daf438594b071cc80e58e6704bbb8409 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +dde46f425abed5caa3d8d3afe9049fb7 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -194,7 +194,7 @@ -37725 +38303 pt.yml file @@ -202,10 +202,10 @@ -2010-11-19T13:04:51.156936Z -c9804b3b18de0884db4bb8d3305d0d59 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +017dbb90319bfa26bab5a45296b337b3 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -228,7 +228,7 @@ -41198 +41777 ca.yml file @@ -236,10 +236,10 @@ -2010-11-19T13:04:51.156936Z -eec5aa8638e2792dd612c8938750d81e -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +55d3137cb8850d53bce7337a8a0cf720 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -262,7 +262,7 @@ -41462 +42226 pt-BR.yml file @@ -270,10 +270,10 @@ -2010-11-19T13:04:51.160924Z -7fd270dbed421920ffba7910fec83c98 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +0714d61f3439e9e8058f26487eae91b2 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -296,7 +296,7 @@ -41080 +41661 tr.yml file @@ -304,10 +304,10 @@ -2010-11-19T13:04:51.160924Z -6d497cb5cf2b3dc069bced1f7ab3e917 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +5bc442cb54c4373e1aeea7dd56e30bd0 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -330,7 +330,7 @@ -39711 +40295 ru.yml file @@ -338,10 +338,10 @@ -2010-11-19T13:04:51.160924Z -bf6486d652d78029c05e10c1bb49a93d -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +6a3741281160ebb7f27f6d2bb03499c8 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -364,7 +364,7 @@ -61533 +62124 en-GB.yml file @@ -372,10 +372,10 @@ -2010-11-19T13:04:51.160924Z -b3c07f1bb7aa053e2314562eeff18c71 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +831604fd1ce5d6f72e64688ce6f62581 +2011-02-27T13:43:18.863191Z +4955 jplang @@ -398,7 +398,7 @@ -37977 +39685 id.yml file @@ -406,10 +406,10 @@ -2010-11-19T13:04:51.164928Z -b21510420c8cfb4c3ca3d90982f50c86 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +eb45d7f2bc3d3e7fd8ab01db1a3041a4 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -432,7 +432,7 @@ -39277 +40037 el.yml file @@ -440,10 +440,10 @@ -2010-11-19T13:04:51.164928Z -ec14094c510964ef65cab6198c26153e -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +98b4f21cce1a0242221eecb23f5fc727 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -466,7 +466,7 @@ -54374 +55145 en.yml file @@ -474,10 +474,10 @@ -2010-11-19T13:04:51.164928Z -dc0460b9c8f49b986b833f6a0e42d39a -2010-11-07T14:15:01.891476Z -4382 +2011-03-03T11:40:18.000000Z +4265d626f893cc08f2142d0a254e2ac7 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -500,7 +500,7 @@ -38014 +38787 gl.yml file @@ -508,10 +508,10 @@ -2010-11-19T13:04:51.168928Z -1fe7f6095d46fe8f8bc5b49d72e2443c -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +03aa773b8d01d5bc421b8896fc9c861b +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -534,7 +534,7 @@ -40309 +40895 cs.yml file @@ -542,10 +542,10 @@ -2010-11-19T13:04:51.168928Z -13a9181b35a59a4f65ebcfcbbf3cdfd2 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +85ac61a4067ad6dda83d43acbf874cf6 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -568,7 +568,7 @@ -40854 +41752 mk.yml file @@ -576,10 +576,10 @@ -2010-11-19T13:04:51.168928Z -bf188cf4f7e8b821c0272a8f39e9e2de -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +626a66d6d98190418f4a4fd43077734f +2011-02-27T13:43:18.863191Z +4955 jplang @@ -602,7 +602,7 @@ -47710 +49418 es.yml file @@ -610,10 +610,10 @@ -2010-11-19T13:04:51.168928Z -b2c1421e14275dd03308e69e24869a89 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +6ef7d2fb0af3cce0f6afbdea3ff9ab17 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -636,7 +636,75 @@ -43011 +43670 + +ko.yml +file + + + + +2011-03-03T11:40:18.000000Z +1ff250f0b17ecb9465add49dfcf9bb91 +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +44501 + +eu.yml +file + + + + +2011-03-03T11:40:18.000000Z +b3ba93d14600b4b992e65fbd243759ae +2011-02-27T13:43:18.863191Z +4955 +jplang + + + + + + + + + + + + + + + + + + + + + +42568 zh-TW.yml file @@ -644,10 +712,10 @@ -2010-11-19T13:04:51.168928Z -a400517e4ac5ec29285455a34430d5c7 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +f4c6a612b84e5087ed4d023414dab628 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -670,75 +738,7 @@ -42011 - -eu.yml -file - - - - -2010-11-19T13:04:51.172928Z -8b0c7dfb3b2e99ffee4e65b1015d6091 -2010-11-07T14:18:13.240686Z -4384 -jplang - - - - - - - - - - - - - - - - - - - - - -40663 - -ko.yml -file - - - - -2010-11-19T13:04:51.172928Z -436d7edeba50962c6fdb9faf6bdf3dce -2010-11-07T14:18:13.240686Z -4384 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -43751 +42608 mn.yml file @@ -746,10 +746,10 @@ -2010-11-19T13:04:51.172928Z -d4363b3560295e0a69987fedb561d447 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +b9e2987cb3cbaab826c7388d09b74f75 +2011-02-27T13:43:18.863191Z +4955 jplang @@ -772,7 +772,7 @@ -52377 +54082 it.yml file @@ -780,10 +780,10 @@ -2010-11-19T13:04:51.172928Z -2a5286abf1ef2ef909cbcb254e229ebd -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +f80f107e4d9318b8a8cea65b2e13d579 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -806,7 +806,7 @@ -40686 +41436 sk.yml file @@ -814,10 +814,10 @@ -2010-11-19T13:04:51.172928Z -36ffd38b0ec52602e1671d36e0f6e9c5 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +e7901c1e26424f863f96dd86164419c2 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -840,7 +840,7 @@ -40919 +41687 sl.yml file @@ -848,10 +848,10 @@ -2010-11-19T13:04:51.176929Z -fe0bcf8cf9643fa50fe3d21828434cf4 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +808c04baadb112b6be492be9dc78ef89 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -874,7 +874,7 @@ -39097 +39863 uk.yml file @@ -882,10 +882,10 @@ -2010-11-19T13:04:51.176929Z -db46f6a810e0dc67f1bac92a71b0948d -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +430d26c543f2d9d31ffe77c9ef3eb4f8 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -908,7 +908,41 @@ -46669 +47441 + +da.yml +file + + + + +2011-03-03T11:40:18.000000Z +a7ae693463d0d34fb5fd212ccbda0aff +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +39983 sr.yml file @@ -916,10 +950,10 @@ -2010-11-19T13:04:51.176929Z -248adf243f4bb59ac110d11530753c7b -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +adf2619297b8e142957c327c6a76c786 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -942,18 +976,18 @@ -53786 +54555 -da.yml +fa.yml file -2010-11-19T13:04:51.180928Z -79fdefd9c5c9db00ee25aa63e771e626 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +6f585dcad4e6b03d987ea0f5e7d7e91f +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -976,7 +1010,75 @@ -39199 +51085 + +bg.yml +file + + + + +2011-03-03T11:40:18.000000Z +e0df426fe104bb05be553a362f46610b +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +54718 + +de.yml +file + + + + +2011-03-03T11:40:18.000000Z +80e835963312388a9077a8f27452d429 +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +42574 sv.yml file @@ -984,10 +1086,10 @@ -2010-11-19T13:04:51.180928Z -41611818eaab75a3265b787b7b4cf575 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +59f72f202281205f1ed729183db2a402 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1010,75 +1112,7 @@ -41581 - -de.yml -file - - - - -2010-11-19T13:04:51.180928Z -953288c28f8e952ddcc2db0bea13fe9a -2010-11-07T14:18:13.240686Z -4384 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -41776 - -bg.yml -file - - - - -2010-11-19T13:04:51.180928Z -47e98f0f9ee99de7fd6cf56ba3412107 -2010-11-07T14:18:13.240686Z -4384 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -52771 +42180 ja.yml file @@ -1086,10 +1120,10 @@ -2010-11-19T13:04:51.184942Z -180b2fd40dbb9ca6136d07d3886856ed -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +03fac78c16fdf9c77069f24fec7b2796 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1112,7 +1146,7 @@ -45539 +46191 he.yml file @@ -1120,10 +1154,10 @@ -2010-11-19T13:04:51.184942Z -c973a0f6b6038c4d94f59cb67a6362ef -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +03045c9539de31b255a14c9207fb8eaa +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1146,7 +1180,7 @@ -44657 +45433 fi.yml file @@ -1154,10 +1188,10 @@ -2010-11-19T13:04:51.188959Z -d34af39e6c4e4a51dc0e5294b2fa6ebf -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +18dd7ae78913bad4b75e0d5f16068290 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1180,7 +1214,7 @@ -40365 +40941 bs.yml file @@ -1188,10 +1222,10 @@ -2010-11-19T13:04:51.188959Z -3b1917239f864b8251f47ed4179bbeb9 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +0fdc9e453941e547e3b40fee917fcf02 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1214,7 +1248,7 @@ -40112 +40878 fr.yml file @@ -1222,10 +1256,10 @@ -2010-11-19T13:04:51.188959Z -e5250df57dd3200252731533f635f3ff -2010-11-07T14:15:01.891476Z -4382 +2011-03-03T11:40:18.000000Z +95995431647aa0e13c850df4250a57d0 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -1248,7 +1282,7 @@ -42247 +43081 nl.yml file @@ -1256,10 +1290,10 @@ -2010-11-19T13:04:51.192925Z -5fc86161f1f72c9a027cb9083e79a18e -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +06358d3f035a3fcc20cde865e7295023 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1282,7 +1316,7 @@ -39665 +40433 hr.yml file @@ -1290,10 +1324,10 @@ -2010-11-19T13:04:51.192925Z -ea3dd89af05481d2c32934831258791d -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +3fbb52f4fa0ba97dfd179ad0c8e020c3 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1316,7 +1350,7 @@ -39778 +40541 pl.yml file @@ -1324,10 +1358,10 @@ -2010-11-19T13:04:51.192925Z -262779f7ff6c420704d894caed2efb10 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +afca79760eefe54e70833751f3d9b0bb +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1350,7 +1384,7 @@ -42269 +42836 th.yml file @@ -1358,10 +1392,10 @@ -2010-11-19T13:04:51.196941Z -e56c0107ce9b73575b17bacafb4a5a4e -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +e9737687144c1c4fd63eacb68f2682f1 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1384,7 +1418,7 @@ -52528 +53301 no.yml file @@ -1392,10 +1426,10 @@ -2010-11-19T13:04:51.196941Z -b2ada0f5e3c0bd1dd09da8a258928d94 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +8fff009aa1fe3602b8b4dff6210f8497 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1418,7 +1452,7 @@ -38166 +38744 hu.yml file @@ -1426,10 +1460,10 @@ -2010-11-19T13:04:51.196941Z -5c4f617d0f309ca0dbd6429553dd0ced -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +5c2041121ebd0cd3bcf252d54e21786b +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1452,7 +1486,7 @@ -42678 +43268 vi.yml file @@ -1460,10 +1494,10 @@ -2010-11-19T13:04:51.196941Z -85061e0562f86bb4aceeacab6dd6bb24 -2010-11-07T14:18:13.240686Z -4384 +2011-03-03T11:40:18.000000Z +37a28f575513649d20833ce31e5fce23 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1486,5 +1520,5 @@ -43252 +43836 diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/prop-base/fa.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/locales/.svn/prop-base/fa.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/bg.yml.svn-base --- a/config/locales/.svn/text-base/bg.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/bg.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,12 @@ bg: + # 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" + default: "%d-%m-%Y" short: "%b %d" long: "%B %d, %Y" @@ -32,45 +33,46 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "по-малко от 1 Ñекунда" - other: "по-малко от {{count}} Ñекунди" + other: "по-малко от %{count} Ñекунди" x_seconds: one: "1 Ñекунда" - other: "{{count}} Ñекунди" + other: "%{count} Ñекунди" less_than_x_minutes: one: "по-малко от 1 минута" - other: "по-малко от {{count}} минути" + other: "по-малко от %{count} минути" x_minutes: one: "1 минута" - other: "{{count}} минути" + other: "%{count} минути" about_x_hours: one: "около 1 чаÑ" - other: "около {{count}} чаÑа" + other: "около %{count} чаÑа" x_days: one: "1 ден" - other: "{{count}} дена" + other: "%{count} дена" about_x_months: one: "около 1 меÑец" - other: "около {{count}} меÑеца" + other: "около %{count} меÑеца" x_months: one: "1 меÑец" - other: "{{count}} меÑеца" + other: "%{count} меÑеца" about_x_years: one: "около 1 година" - other: "около {{count}} години" + other: "около %{count} години" over_x_years: one: "над 1 година" - other: "над {{count}} години" + other: "над %{count} години" almost_x_years: one: "почти 1 година" - other: "почти {{count}} години" + other: "почти %{count} години" number: + # Default format for numbers format: separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: precision: 1 delimiter: "" storage_units: @@ -83,7 +85,8 @@ mb: "MB" gb: "GB" tb: "TB" - + + # Used in array.to_sentence. support: array: @@ -92,6 +95,10 @@ activerecord: errors: + template: + header: + one: "1 грешка попречи този %{model} да бъде запиÑан" + other: "%{count} грешки попречиха този %{model} да бъде запиÑан" messages: inclusion: "не ÑъщеÑтвува в ÑпиÑъка" exclusion: "е запазено" @@ -106,16 +113,17 @@ taken: "вече ÑъщеÑтвува" not_a_number: "не е чиÑло" not_a_date: "е невалидна дата" - greater_than: "трÑбва да бъде по-голÑм[a/о] от {{count}}" - greater_than_or_equal_to: "трÑбва да бъде по-голÑм[a/о] от или равен[a/o] на {{count}}" - equal_to: "трÑбва да бъде равен[a/o] на {{count}}" - less_than: "трÑбва да бъде по-малък[a/o] от {{count}}" - less_than_or_equal_to: "трÑбва да бъде по-малък[a/o] от или равен[a/o] на {{count}}" + greater_than: "трÑбва да бъде по-голÑм[a/о] от %{count}" + greater_than_or_equal_to: "трÑбва да бъде по-голÑм[a/о] от или равен[a/o] на %{count}" + equal_to: "трÑбва да бъде равен[a/o] на %{count}" + less_than: "трÑбва да бъде по-малък[a/o] от %{count}" + less_than_or_equal_to: "трÑбва да бъде по-малък[a/o] от или равен[a/o] на %{count}" odd: "трÑбва да бъде нечетен[a/o]" even: "трÑбва да бъде четен[a/o]" greater_than_start_date: "трÑбва да е Ñлед началната дата" not_same_project: "не е от ÑÑŠÑ‰Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚" circular_dependency: "Тази Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ Ñ‰Ðµ доведе до безкрайна завиÑимоÑÑ‚" + cant_link_an_issue_with_a_descendant: "Една задача не може да бъде Ñвързвана към ÑÐ²Ð¾Ñ Ð¿Ð¾Ð´Ð·Ð°Ð´Ð°Ñ‡Ð°" actionview_instancetag_blank_option: Изберете @@ -123,7 +131,7 @@ general_text_Yes: 'Да' general_text_no: 'не' general_text_yes: 'да' - general_lang_name: 'Bulgarian' + general_lang_name: 'Bulgarian (БългарÑки)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 @@ -146,24 +154,61 @@ notice_file_not_found: ÐеÑъщеÑтвуваща или премеÑтена Ñтраница. notice_locking_conflict: Друг потребител Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ‚ÐµÐ·Ð¸ данни в момента. notice_not_authorized: ÐÑмате право на доÑтъп до тази Ñтраница. - notice_email_sent: "Изпратен e-mail на {{value}}" - notice_email_error: "Грешка при изпращане на e-mail ({{value}})" + notice_not_authorized_archived_project: Проектът, който Ñе опитвате да видите е архивиран. + notice_email_sent: "Изпратен e-mail на %{value}" + notice_email_error: "Грешка при изпращане на e-mail (%{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: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. + 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}}" + error_scm_command_failed: "Грешка при опит за ÐºÐ¾Ð¼ÑƒÐ½Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ: %{value}" + error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." + 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: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ + error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). + error_unable_delete_issue_status: ÐевъзможноÑÑ‚ за изтриване на ÑÑŠÑтоÑние на задача + error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ (%{value}) + warning_attachments_not_saved: "%{count} файла не бÑха запиÑани." - mail_subject_lost_password: "Вашата парола ({{value}})" + mail_subject_lost_password: "Вашата парола (%{value})" mail_body_lost_password: 'За да Ñмените паролата Ñи, използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' - mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° профил ({{value}})" + 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: "Wiki Ñтраницата '%{id}' беше добавена" + mail_body_wiki_content_added: Wiki Ñтраницата '%{id}' беше добавена от %{author}. + mail_subject_wiki_content_updated: "Wiki Ñтраницата '%{id}' не беше обновена" + mail_body_wiki_content_updated: Wiki Ñтраницата '%{id}' беше обновена от %{author}. gui_validation_error: 1 грешка - gui_validation_error_plural: "{{count}} грешки" + gui_validation_error_plural: "%{count} грешки" field_name: Име field_description: ОпиÑание - field_summary: Групиран изглед + field_summary: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ field_is_required: Задължително field_firstname: Име field_lastname: Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ @@ -196,6 +241,7 @@ field_priority: Приоритет field_fixed_version: Планувана верÑÐ¸Ñ field_user: Потребител + field_principal: Principal field_role: Ð Ð¾Ð»Ñ field_homepage: Ðачална Ñтраница field_is_public: Публичен @@ -221,6 +267,7 @@ field_attr_lastname: Ðтрибут Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ (Lastname) field_attr_mail: Ðтрибут Email field_onthefly: Динамично Ñъздаване на потребител + field_start_date: Ðачална дата field_done_ratio: % ÐŸÑ€Ð¾Ð³Ñ€ÐµÑ field_auth_source: Ðачин на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ field_hide_mail: Скрий e-mail адреÑа ми @@ -238,7 +285,25 @@ field_assignable: Възможно е възлагане на задачи за тази Ñ€Ð¾Ð»Ñ field_redirect_existing_links: ПренаÑочване на ÑъщеÑтвуващи линкове field_estimated_hours: ИзчиÑлено време + field_column_names: Колони + field_time_entries: Log time + field_time_zone: ЧаÑова зона + field_searchable: С възможноÑÑ‚ за търÑене field_default_value: СтойноÑÑ‚ по подразбиране + field_comments_sorting: Сортиране на коментарите + field_parent_title: РодителÑка Ñтраница + field_editable: Editable + field_watcher: Ðаблюдател + field_identity_url: OpenID URL + field_content: Съдържание + field_group_by: Групиране на резултатите по + field_sharing: Sharing + field_parent_issue: РодителÑка задача + field_member_of_group: Член на група + field_assigned_to_role: Assignee's role + field_text: ТекÑтово поле + field_visible: Видим + field_warn_on_leaving_unsaved: Предупреди ме, когато напуÑкам Ñтраница Ñ Ð½ÐµÐ·Ð°Ð¿Ð¸Ñано Ñъдържание setting_app_title: Заглавие setting_app_subtitle: ОпиÑание @@ -249,37 +314,147 @@ setting_attachment_max_size: МакÑимална големина на прикачен файл setting_issues_export_limit: МакÑимален брой задачи за екÑпорт setting_mail_from: E-mail Ð°Ð´Ñ€ÐµÑ Ð·Ð° емиÑии + setting_bcc_recipients: Получатели на Ñкрито копие (bcc) + setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) setting_host_name: ХоÑÑ‚ setting_text_formatting: Форматиране на текÑта setting_wiki_compression: Wiki компреÑиране на иÑториÑта 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_header: Emails header + setting_emails_footer: ПодтекÑÑ‚ за e-mail + 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: ОтрÑзване на e-mail-ите Ñлед един от тези редове + setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и + setting_mail_handler_api_key: API ключ + setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори + setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar + setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar + setting_diff_max_lines_displayed: МакÑимален брой показани diff редове + setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline + setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла + setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ + setting_password_min_length: Минимална дължина на парола + setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор + setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект + setting_issue_done_ratio: ИзчиÑление на процента на готови задачи Ñ + setting_issue_done_ratio_issue_field: Използване на поле '% ПрогреÑ' + setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑнието на задачите + setting_start_of_week: Първи ден на Ñедмицата + setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ + setting_cache_formatted_text: 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: Разглеждане на задачите + 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: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) + permission_view_gantt: Разглеждане на мрежов график + permission_view_calendar: Разглеждане на календари + permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ + permission_add_issue_watchers: ДобавÑне на наблюдатели + permission_delete_issue_watchers: Изтриване на наблюдатели + permission_log_time: Log spent time + permission_view_time_entries: Разглеждане на изразходваното време + permission_edit_time_entries: Редактиране на time logs + permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs + permission_manage_news: Управление на новини + permission_comment_news: Коментиране на новини + permission_manage_documents: Управление на документи + permission_view_documents: Разглеждане на документи + permission_manage_files: Управление на файлове + permission_view_files: Разглеждане на файлове + permission_manage_wiki: Управление на wiki + permission_rename_wiki_pages: Преименуване на wiki Ñтраници + permission_delete_wiki_pages: Изтриване на wiki Ñтраници + permission_view_wiki_pages: Разглеждане на wiki + permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ + permission_edit_wiki_pages: Редактиране на wiki Ñтраници + permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове към wiki Ñтраници + permission_protect_wiki_pages: Заключване на wiki Ñтраници + permission_manage_repository: Управление на хранилища + permission_browse_repository: Разглеждане на хранилища + permission_view_changesets: Разглеждане на changesets + permission_commit_access: ПоверÑване + permission_manage_boards: Управление на 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: ЕкÑпорт на wiki Ñтраници + permission_manage_subtasks: Управление на подзадачите + + project_module_issue_tracking: Тракинг + project_module_time_tracking: ОтделÑне на време + project_module_news: Ðовини + project_module_documents: Документи + project_module_files: Файлове + project_module_wiki: Wiki + project_module_repository: Хранилище + project_module_boards: Форуми + project_module_calendar: Календар + project_module_gantt: Мрежов график + label_user: Потребител label_user_plural: Потребители label_user_new: Ðов потребител + label_user_anonymous: Ðнонимен label_project: Проект label_project_new: Ðов проект label_project_plural: Проекти label_x_projects: - zero: 0 проекти + zero: 0 проекта one: 1 проект - other: "{{count}} проекта" + 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: Ðова Ñ€Ð¾Ð»Ñ @@ -306,11 +481,13 @@ 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: Изход @@ -320,25 +497,30 @@ label_last_login: ПоÑледно Ñвързване label_registered_on: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ label_activity: ДейноÑÑ‚ + label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ + label_user_activity: "ÐктивноÑÑ‚ на %{value}" label_new: Ðов - label_logged_as: ВлÑзъл като + 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_download: "%{count} изтеглÑне" + label_download_plural: "%{count} изтеглÑниÑ" label_no_data: ÐÑма изходни данни label_change_status: ПромÑна на ÑÑŠÑтоÑнието label_history: ИÑÑ‚Ð¾Ñ€Ð¸Ñ @@ -346,6 +528,7 @@ label_attachment_new: Ðов файл label_attachment_delete: Изтриване label_attachment_plural: Файлове + label_file_added: Добавен файл label_report: Справка label_report_plural: Справки label_news: Ðовини @@ -353,11 +536,13 @@ label_news_plural: Ðовини label_news_latest: ПоÑледни новини label_news_view_all: Виж вÑички + label_news_added: Добавена новина label_settings: ÐаÑтройки label_overview: Общ изглед label_version: ВерÑÐ¸Ñ label_version_new: Ðова верÑÐ¸Ñ label_version_plural: ВерÑии + label_close_versions: ЗатварÑне на завършените верÑии label_confirmation: Одобрение label_export_to: ЕкÑпорт към label_read: Read... @@ -367,23 +552,24 @@ label_closed_issues: затворена label_closed_issues_plural: затворени label_x_open_issues_abbr_on_total: - zero: 0 отворени / {{total}} - one: 1 отворена / {{total}} - other: "{{count}} отворени / {{total}}" + zero: 0 отворени / %{total} + one: 1 отворена / %{total} + other: "%{count} отворени / %{total}" label_x_open_issues_abbr: zero: 0 отворени one: 1 отворена - other: "{{count}} отворени" + other: "%{count} отворени" label_x_closed_issues_abbr: zero: 0 затворени one: 1 затворена - other: "{{count}} затворени" + 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: Използва Ñе от @@ -394,7 +580,7 @@ label_months_from: меÑеца от label_gantt: Мрежов график label_internal: Вътрешен - label_last_changes: "поÑледни {{count}} промени" + label_last_changes: "поÑледни %{count} промени" label_change_view_all: Виж вÑички промени label_personalize_page: ПерÑонализиране label_comment: Коментар @@ -402,22 +588,33 @@ label_x_comments: zero: 0 коментари one: 1 коментар - other: "{{count}} коментари" + 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: е 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: преди @@ -425,25 +622,33 @@ label_not_contains: не Ñъдържа label_day_plural: дни label_repository: Хранилище + label_repository_plural: Хранилища label_browse: Разглеждане - label_modification: "{{count}} промÑна" - label_modification_plural: "{{count}} промени" + 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: МакÑимална големина 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_due_in: "Излиза Ñлед %{value}" + label_roadmap_overdue: "%{value} закъÑнение" label_roadmap_no_issues: ÐÑма задачи за тази верÑÐ¸Ñ label_search: ТърÑене label_result_plural: Pезултати @@ -461,8 +666,9 @@ label_changes_details: Подробни промени label_issue_tracking: Тракинг label_spent_time: Отделено време - label_f_hour: "{{value}} чаÑ" - label_f_hour_plural: "{{value}} чаÑа" + label_overall_spent_time: Общо употребено време + label_f_hour: "%{value} чаÑ" + label_f_hour_plural: "%{value} чаÑа" label_time_tracking: ОтделÑне на време label_change_plural: Промени label_statistics: СтатиÑтики @@ -482,6 +688,7 @@ label_relation_delete: Изтриване на Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ label_relates_to: Ñвързана ÑÑŠÑ label_duplicates: дублира + label_duplicated_by: дублирана от label_blocks: блокира label_blocked_by: блокирана от label_precedes: предшеÑтва @@ -497,10 +704,13 @@ 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: Година @@ -509,14 +719,83 @@ label_date_from: От label_date_to: До label_language_based: Ð’ завиÑимоÑÑ‚ от езика - label_sort_by: "Сортиране по {{value}}" + label_sort_by: "Сортиране по %{value}" label_send_test_email: Изпращане на теÑтов e-mail - label_feeds_access_key_created_on: "{{value}} от Ñъздаването на RSS ключа" + label_feeds_access_key: RSS access ключ + label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп + label_feeds_access_key_created_on: "%{value} от Ñъздаването на RSS ключа" label_module_plural: Модули - label_added_time_by: "Публикувана от {{author}} преди {{age}}" - label_updated_time: "Обновена преди {{value}}" + 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_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: активиране на профила по 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: ВходÑщи e-mail-и + label_generate_key: Генериране на ключ + label_issue_watchers: Ðаблюдатели + label_example: Пример + label_display: Display + label_sort: Сортиране + label_ascending: ÐараÑтващ + label_descending: ÐамалÑващ + label_date_from_to: От %{start} до %{end} + label_wiki_content_added: Wiki Ñтраница беше добавена + label_wiki_content_updated: Wiki Ñтраница беше обновена + 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: ОбновÑване на процента на завършените задачи + label_copy_source: Източник + label_copy_target: Цел + label_copy_same_as_target: Също като целта + label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер + 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: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта + label_principal_search: "ТърÑене на потребител или група:" + label_user_search: "ТърÑене на потребител:" + button_login: Вход button_submit: Прикачване button_save: Ð—Ð°Ð¿Ð¸Ñ @@ -524,8 +803,10 @@ button_uncheck_all: ИзчиÑтване на вÑички button_delete: Изтриване button_create: Създаване + button_create_and_continue: Създаване и продължаване button_test: ТеÑÑ‚ button_edit: Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ + button_edit_associated_wikipage: "Редактиране на аÑоциираната Wiki Ñтраница: %{page_title}" button_add: ДобавÑне button_change: ПромÑна button_apply: Приложи @@ -536,6 +817,7 @@ button_list: СпиÑък button_view: Преглед button_move: ПремеÑтване + button_move_and_follow: ПремеÑтване и продължаване button_back: Ðазад button_cancel: Отказ button_activate: ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ @@ -549,34 +831,87 @@ 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: Изберете ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð·Ð° изпращане на e-mail. text_regexp_info: пр. ^[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_tip_task_begin_day: задача започваща този ден - text_tip_task_end_day: задача завършваща този ден - text_tip_task_begin_end_day: задача започваща и завършваща този ден + text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? + 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), цифри и тирета.
    Ðевъзможна промÑна Ñлед запиÑ.' - text_caracters_maximum: "До {{count}} Ñимвола." - text_length_between: "От {{min}} до {{max}} Ñимвола." + 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: Позволени Ñа много ÑтойноÑти (по едно на ред). text_issues_ref_in_commit_messages: ОтбелÑзване и приключване на задачи от ревизии - text_issue_added: "Публикувана е нова задача Ñ Ð½Ð¾Ð¼ÐµÑ€ {{id}} (от {{author}})." - text_issue_updated: "Задача {{id}} е обновена (от {{author}})." + text_issue_added: "Публикувана е нова задача Ñ Ð½Ð¾Ð¼ÐµÑ€ %{id} (от %{author})." + text_issue_updated: "Задача %{id} е обновена (от %{author})." text_wiki_destroy_confirmation: Сигурни ли Ñте, че иÑкате да изтриете това Wiki и цÑлото му Ñъдържание? - text_issue_category_destroy_question: "Има задачи ({{count}}) обвързани Ñ Ñ‚Ð°Ð·Ð¸ категориÑ. Какво ще изберете?" + 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_time_logged_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: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/configuration.yml и реÑтартирайте Redmine, за да ги разрешите." + text_repository_usernames_mapping: "Изберете или променете потребителите в Redmine, ÑъответÑтващи на потребителите в дневника на хранилището (repository).\nПотребителите Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð¸ имена в Redmine и хранилищата Ñе ÑъвмеÑÑ‚Ñват автоматично." + text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' + text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' + text_wiki_page_destroy_question: Тази Ñтраница има %{descendants} Ñтраници деца и descendant(s). Какво желаете да правите? + text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници + text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants + text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница + text_own_membership_delete_confirmation: "Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това да не можете да редактирате този проект.\nСигурен ли Ñте, че иÑкате да продължите?" + text_zoom_in: Увеличаване + text_zoom_out: ÐамалÑване + text_warn_on_leaving_unsaved: Страницата Ñъдържа незапиÑано Ñъдържание, което може да бъде загубено, ако Ñ Ð½Ð°Ð¿ÑƒÑнете. + default_role_manager: Мениджър default_role_developer: Разработчик default_role_reporter: Публикуващ @@ -598,328 +933,10 @@ default_priority_immediate: Веднага default_activity_design: Дизайн default_activity_development: Разработка - + enumeration_issue_priorities: Приоритети на задачи enumeration_doc_categories: Категории документи enumeration_activities: ДейноÑти (time tracking) - label_file_plural: Файлове - label_changeset_plural: Ревизии - field_column_names: Колони - label_default_columns: По подразбиране - setting_issue_list_default_columns: Показвани колони по подразбиране - setting_repositories_encodings: Кодови таблици - notice_no_issue_selected: "ÐÑма избрани задачи." - label_bulk_edit_selected_issues: Редактиране на задачи - label_no_change_option: (Без промÑна) - notice_failed_to_save_issues: "ÐеуÑпешен Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° {{count}} задачи от {{total}} избрани: {{ids}}." - label_theme: Тема - label_default: По подразбиране - label_search_titles_only: Само в заглавиÑта - label_nobody: никой - button_change_password: ПромÑна на парола - text_user_mail_option: "За неизбраните проекти, ще получавате извеÑÑ‚Ð¸Ñ Ñамо за наблюдавани дейноÑти или в които учаÑтвате (Ñ‚.е. автор или назначени на мен)." - label_user_mail_option_selected: "За вÑички ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñамо в избраните проекти..." - label_user_mail_option_all: "За вÑÑко Ñъбитие в проектите, в които учаÑтвам" - label_user_mail_option_none: "Само за наблюдавани или в които учаÑтвам (автор или назначени на мен)" - setting_emails_footer: ПодтекÑÑ‚ за e-mail - label_float: Дробно - button_copy: Копиране - mail_body_account_information_external: "Можете да използвате Ð²Ð°ÑˆÐ¸Ñ {{value}} профил за вход." - mail_body_account_information: ИнформациÑта за профила ви - setting_protocol: Протокол - label_user_mail_no_self_notified: "Ðе иÑкам извеÑÑ‚Ð¸Ñ Ð·Ð° извършени от мен промени" - setting_time_format: Формат на чаÑа - label_registration_activation_by_email: активиране на профила по email - mail_subject_account_activation_request: "ЗаÑвка за активиране на профил в {{value}}" - mail_body_account_activation_request: "Има новорегиÑтриран потребител ({{value}}), очакващ вашето одобрение:" - label_registration_automatic_activation: автоматично активиране - label_registration_manual_activation: ръчно активиране - notice_account_pending: "Профилът Ви е Ñъздаден и очаква одобрение от админиÑтратор." - field_time_zone: ЧаÑова зона - text_caracters_minimum: "Минимум {{count}} Ñимвола." - setting_bcc_recipients: Получатели на Ñкрито копие (bcc) - button_annotate: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ - label_issues_by: "Задачи по {{value}}" - field_searchable: С възможноÑÑ‚ за търÑене - label_display_per_page: "Ðа Ñтраница по: {{value}}" - setting_per_page_options: Опции за Ñтраниране - label_age: ВъзраÑÑ‚ - notice_default_data_loaded: Примерната информациÑта е уÑпешно заредена. - text_load_default_configuration: Зареждане на примерна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - text_no_configuration_data: "Ð’Ñе още не Ñа конфигурирани Роли, тракери, ÑÑŠÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи и работен процеÑ.\nСтрого Ñе препоръчва зареждането на примерната информациÑ. Веднъж заредена ще имате възможноÑÑ‚ да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." - error_can_t_load_default_data: "Грешка при зареждане на примерната информациÑ: {{value}}" - button_update: ОбновÑване - label_change_properties: ПромÑна на наÑтройки - label_general: ОÑновни - label_repository_plural: Хранилища - label_associated_revisions: ÐÑоциирани ревизии - setting_user_format: ПотребителÑки формат - text_status_changed_by_changeset: "Приложено Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ {{value}}." - label_more: Още - text_issues_destroy_confirmation: 'Сигурни ли Ñте, че иÑкате да изтриете избраните задачи?' - label_scm: SCM (СиÑтема за контрол на кода) - text_select_project_modules: 'Изберете активните модули за този проект:' - label_issue_added: Добавена задача - label_issue_updated: Обновена задача - label_document_added: Добавен документ - label_message_posted: Добавено Ñъобщение - label_file_added: Добавен файл - label_news_added: Добавена новина - project_module_boards: Форуми - project_module_issue_tracking: Тракинг - project_module_wiki: Wiki - project_module_files: Файлове - project_module_documents: Документи - project_module_repository: Хранилище - project_module_news: Ðовини - project_module_time_tracking: ОтделÑне на време - text_file_repository_writable: ВъзможноÑÑ‚ за пиÑане в хранилището Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ - text_default_administrator_account_changed: Сменен Ñ„Ð°Ð±Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑтраторÑки профил - text_rmagick_available: Ðаличен RMagick (по избор) - button_configure: Конфигуриране - label_plugins: Плъгини - label_ldap_authentication: LDAP Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ - label_downloads_abbr: D/L - label_this_month: Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼ÐµÑец - label_last_n_days: "поÑледните {{count}} дни" - label_all_time: вÑички - label_this_year: текущата година - label_date_range: Период - label_last_week: поÑледната Ñедмица - label_yesterday: вчера - label_last_month: поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец - label_add_another_file: ДобавÑне на друг файл - label_optional_description: Ðезадължително опиÑание - text_destroy_time_entries_question: "{{hours}} чаÑа Ñа отделени на задачите, които иÑкате да изтриете. Какво избирате?" - error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' - text_assign_time_entries_to_project: ПрехвърлÑне на отделеното време към проект - text_destroy_time_entries: Изтриване на отделеното време - text_reassign_time_entries: 'ПрехвърлÑне на отделеното време към задача:' - setting_activity_days_default: Брой дни показвани на таб ДейноÑÑ‚ - label_chronological_order: Хронологичен ред - field_comments_sorting: Сортиране на коментарите - label_reverse_chronological_order: Обратен хронологичен ред - label_preferences: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ - setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране - label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ - setting_default_projects_public: Ðовите проекти Ñа публични по подразбиране - error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." - label_planning: Планиране - text_subprojects_destroy_warning: "Ðеговите подпроекти: {{value}} Ñъщо ще бъдат изтрити." - label_and_its_subprojects: "{{value}} и неговите подпроекти" - mail_body_reminder: "{{count}} задачи, назначени на Ð²Ð°Ñ Ñа Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок в Ñледващите {{days}} дни:" - mail_subject_reminder: "{{count}} задачи Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок Ñ Ñледващите {{days}} дни" - text_user_wrote: "{{value}} напиÑа:" - label_duplicated_by: дублирана от - setting_enabled_scm: Разрешена SCM - text_enumeration_category_reassign_to: 'ПреÑвържете ги към тази ÑтойноÑÑ‚:' - text_enumeration_destroy_question: "{{count}} обекта Ñа Ñвързани Ñ Ñ‚Ð°Ð·Ð¸ ÑтойноÑÑ‚." - label_incoming_emails: ВходÑщи e-mail-и - label_generate_key: Генериране на ключ - setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и - setting_mail_handler_api_key: API ключ - text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/email.yml и реÑтартирайте Redmine, за да ги разрешите." - field_parent_title: РодителÑка Ñтраница - label_issue_watchers: Ðаблюдатели - setting_commit_logs_encoding: Кодова таблица на ÑъобщениÑта при поверÑване - button_quote: Цитат - setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори - notice_unable_delete_version: ÐевъзможноÑÑ‚ за изтриване на верÑÐ¸Ñ - label_renamed: преименуван - label_copied: копиран - setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) - permission_view_files: Разглеждане на файлове - permission_edit_issues: Редактиране на задачи - permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs - permission_manage_public_queries: Управление на публичните заÑвки - permission_add_issues: ДобавÑне на задачи - permission_log_time: Log spent time - permission_view_changesets: Разглеждане на changesets - permission_view_time_entries: Разглеждане на изразходваното време - permission_manage_versions: Управление на верÑиите - permission_manage_wiki: Управление на wiki - permission_manage_categories: Управление на категориите задачи - permission_protect_wiki_pages: Заключване на wiki Ñтраници - permission_comment_news: Коментиране на новини - permission_delete_messages: Изтриване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_select_project_modules: Избор на проектни модули - permission_manage_documents: Управление на документи - permission_edit_wiki_pages: Редактиране на wiki Ñтраници - permission_add_issue_watchers: ДобавÑне на наблюдатели - permission_view_gantt: Разглеждане на мрежов график - permission_move_issues: ПремеÑтване на задачи - permission_manage_issue_relations: Управление на връзките между задачите - permission_delete_wiki_pages: Изтриване на wiki Ñтраници - permission_manage_boards: Управление на boards - permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове - permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ - permission_add_messages: Публикуване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_view_messages: Разглеждане на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_manage_files: Управление на файлове - permission_edit_issue_notes: Редактиране на бележки - permission_manage_news: Управление на новини - permission_view_calendar: Разглеждане на календари - permission_manage_members: Управление на членовете (на екип) - permission_edit_messages: Редактиране на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_issues: Изтриване на задачи - permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ - permission_manage_repository: Управление на хранилища - permission_commit_access: ПоверÑване - permission_browse_repository: Разглеждане на хранилища - permission_view_documents: Разглеждане на документи - permission_edit_project: Редактиране на проект - permission_add_issue_notes: Добаване на бележки - permission_save_queries: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) - permission_view_wiki_pages: Разглеждане на wiki - permission_rename_wiki_pages: Преименуване на wiki Ñтраници - permission_edit_time_entries: Редактиране на time logs - permission_edit_own_issue_notes: Редактиране на ÑобÑтвени бележки - setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar - label_example: Пример - 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: Редактиране на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_own_messages: Изтриване на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - label_user_activity: "ÐктивноÑÑ‚ на {{value}}" - label_updated_time_by: "Обновена от {{author}} преди {{age}}" - text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' - setting_diff_max_lines_displayed: МакÑимален брой показани diff редове - text_plugin_assets_writable: Папката на приÑтавките е разрешена за Ð·Ð°Ð¿Ð¸Ñ - warning_attachments_not_saved: "{{count}} файла не бÑха запиÑани." - button_create_and_continue: Създаване и продължаване - text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' - label_display: Display - field_editable: Editable - setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла - setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline - field_watcher: Ðаблюдател - setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ - field_identity_url: OpenID URL - label_login_with_open_id_option: или вход чрез OpenID - field_content: Съдържание - label_descending: ÐамалÑващ - label_sort: Сортиране - label_ascending: ÐараÑтващ - label_date_from_to: От {{start}} до {{end}} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Тази Ñтраница има {{descendants}} Ñтраници деца и descendant(s). Какво желаете да правите? - text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница - text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници - text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants - setting_password_min_length: Минимална дължина на парола - field_group_by: Групиране на резултатите по - mail_subject_wiki_content_updated: "Wiki Ñтраницата '{{id}}' не беше обновена" - label_wiki_content_added: Wiki Ñтраница беше добавена - mail_subject_wiki_content_added: "Wiki Ñтраницата '{{id}}' беше добавена" - mail_body_wiki_content_added: Wiki Ñтраницата '{{id}}' беше добавена от {{author}}. - label_wiki_content_updated: Wiki Ñтраница беше обновена - mail_body_wiki_content_updated: Wiki Ñтраницата '{{id}}' беше обновена от {{author}}. - permission_add_project: Създаване на проект - setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор - label_view_all_revisions: Разглеждане на вÑички ревизии - label_tag: ВерÑÐ¸Ñ - label_branch: работен вариант - error_no_tracker_in_project: ÐÑма аÑоциирани тракери Ñ Ñ‚Ð¾Ð·Ð¸ проект. Проверете наÑтройките на проекта. - error_no_default_issue_status: ÐÑма уÑтановено подразбиращо Ñе ÑÑŠÑтоÑние за задачите. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ вашата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (Вижте "ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ -> СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи"). - text_journal_changed: "{{label}} променен от {{old}} на {{new}}" - text_journal_set_to: "{{label}} уÑтановен на {{value}}" - text_journal_deleted: "{{label}} изтрит ({{old}})" - label_group_plural: Групи - label_group: Група - label_group_new: Ðова група - label_time_entry_plural: Използвано време - text_journal_added: "Добавено {{label}} {{value}}" - field_active: Ðктивен enumeration_system_activity: СиÑтемна активноÑÑ‚ - permission_delete_issue_watchers: Изтриване на наблюдатели - version_status_closed: затворена - version_status_locked: заключена - version_status_open: отворена - error_can_not_reopen_issue_on_closed_version: Задача, аÑоциирана ÑÑŠÑ Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð° верÑÐ¸Ñ Ð½Ðµ може да бъде отворена отново - label_user_anonymous: Ðнонимен - button_move_and_follow: ПремеÑтване и продължаване - setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект - setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar - field_sharing: Sharing - label_version_sharing_hierarchy: С проектна Ð¹ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ - label_version_sharing_system: С вÑички проекти - label_version_sharing_descendants: С подпроекти - label_version_sharing_tree: С дърво на проектите - label_version_sharing_none: Ðе Ñподелен - error_can_not_archive_project: Този проект не може да бъде архивиран - button_duplicate: Дублиране - button_copy_and_follow: Копиране и продължаване - label_copy_source: Източник - setting_issue_done_ratio: ИзчиÑление на процента на готово задачи Ñ - setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑниетона задачите - error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен. - error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). - setting_issue_done_ratio_issue_field: Използване на поле 'задача' - label_copy_same_as_target: Също като целта - label_copy_target: Цел - notice_issue_done_ratios_updated: Обновен процент на завършените задачи. - error_workflow_copy_source: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ - label_update_issue_done_ratios: ОбновÑване на процента на завършените задачи - setting_start_of_week: Първи ден на Ñедмицата - permission_view_issues: Разглеждане на задачите - label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер - label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ {{value}} - label_api_access_key: API ключ за доÑтъп - label_api_access_key_created_on: API ключ за доÑтъп е Ñъздаден преди {{value}} - label_feeds_access_key: RSS access ключ - notice_api_access_key_reseted: ВашиÑÑ‚ API ключ за доÑтъп беше изчиÑтен. - setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ - label_missing_api_access_key: ЛипÑващ API ключ - label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп - button_show: Показване - text_line_separated: Позволени Ñа много ÑтойноÑти (по едно на ред). - setting_mail_handler_body_delimiters: ОтрÑзване на e-mail-ите Ñлед един от тези редове - permission_add_subprojects: Създаване на подпроекти - label_subproject_new: Ðов подпроект - text_own_membership_delete_confirmation: |- - Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това на да не можете да редатирате този проект. - Сигурен ли Ñте, че иÑкате да продължите? - label_close_versions: ЗатварÑне на завършените верÑии - label_board_sticky: Sticky - label_board_locked: Заключена - permission_export_wiki_pages: ЕкÑпорт на wiki Ñтраници - setting_cache_formatted_text: 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: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта - error_can_not_delete_custom_field: ÐевъзможноÑÑ‚ за изтриване на потребителÑко поле - error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ ({{value}}) - error_can_not_remove_role: Тази Ñ€Ð¾Ð»Ñ Ñе използва и не може да бъде изтрита. - error_can_not_delete_tracker: Този тракер Ñъдържа задачи и не може да бъде изтрит. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° член(ове): {{errors}}." - text_zoom_out: ÐамалÑване - text_zoom_in: Увеличаване - notice_unable_delete_time_entry: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. - label_overall_spent_time: Общо употребено време - field_time_entries: Log time - notice_not_authorized_archived_project: The project you're trying to access has been archived. - text_tip_issue_end_day: issue ending this day - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - field_member_of_group: Assignee's group - project_module_gantt: Gantt - text_are_you_sure_with_children: Delete issue and all child issues? - text_tip_issue_begin_end_day: issue beginning and ending this day - setting_default_notification_option: Default notification option - project_module_calendar: Calendar - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - text_tip_issue_begin_day: issue beginning this day - label_user_mail_option_only_assigned: Only for things I am assigned to - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" - field_assigned_to_role: Assignee's role - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + + text_journal_changed_no_detail: "%{label} updated" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/bs.yml.svn-base --- a/config/locales/.svn/text-base/bs.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/bs.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "pola minute" less_than_x_seconds: one: "manje od 1 sekunde" - other: "manje od {{count}} sekudni" + other: "manje od %{count} sekudni" x_seconds: one: "1 sekunda" - other: "{{count}} sekundi" + other: "%{count} sekundi" less_than_x_minutes: one: "manje od 1 minute" - other: "manje od {{count}} minuta" + other: "manje od %{count} minuta" x_minutes: one: "1 minuta" - other: "{{count}} minuta" + other: "%{count} minuta" about_x_hours: one: "oko 1 sahat" - other: "oko {{count}} sahata" + other: "oko %{count} sahata" x_days: one: "1 dan" - other: "{{count}} dana" + other: "%{count} dana" about_x_months: one: "oko 1 mjesec" - other: "oko {{count}} mjeseci" + other: "oko %{count} mjeseci" x_months: one: "1 mjesec" - other: "{{count}} mjeseci" + other: "%{count} mjeseci" about_x_years: one: "oko 1 godine" - other: "oko {{count}} godina" + other: "oko %{count} godina" over_x_years: one: "preko 1 godine" - other: "preko {{count}} godina" + other: "preko %{count} godina" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: @@ -106,6 +106,10 @@ 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Äeno u listu" exclusion: "je rezervisano" @@ -120,11 +124,11 @@ taken: "već je zauzeto" not_a_number: "nije broj" not_a_date: "nije ispravan datum" - greater_than: "mora bit veći od {{count}}" - greater_than_or_equal_to: "mora bit veći ili jednak {{count}}" - equal_to: "mora biti jednak {{count}}" - less_than: "mora biti manji od {{count}}" - less_than_or_equal_to: "mora bit manji ili jednak {{count}}" + greater_than: "mora bit veći od %{count}" + greater_than_or_equal_to: "mora bit veći ili jednak %{count}" + equal_to: "mora biti jednak %{count}" + less_than: "mora biti manji od %{count}" + less_than_or_equal_to: "mora bit manji ili jednak %{count}" odd: "mora biti neparan" even: "mora biti paran" greater_than_start_date: "mora biti veći nego poÄetni datum" @@ -156,9 +160,9 @@ notice_account_wrong_password: PogreÅ¡na lozinka notice_can_t_change_password: Ovaj nalog koristi eksterni izvor prijavljivanja. Ne mogu da promjenim Å¡ifru. notice_default_data_loaded: Podrazumjevana konfiguracija uspjeÄno uÄitana. - notice_email_error: DoÅ¡lo je do greÅ¡ke pri slanju emaila ({{value}}) - notice_email_sent: "Email je poslan {{value}}" - notice_failed_to_save_issues: "NeuspjeÅ¡no snimanje {{count}} aktivnosti na {{total}} izabrano: {{ids}}." + notice_email_error: DoÅ¡lo je do greÅ¡ke pri slanju emaila (%{value}) + notice_email_sent: "Email je poslan %{value}" + notice_failed_to_save_issues: "NeuspjeÅ¡no snimanje %{count} aktivnosti na %{total} izabrano: %{ids}." notice_feeds_access_key_reseted: VaÅ¡ RSS pristup je resetovan. notice_file_not_found: Stranica kojoj pokuÅ¡avate da pristupite ne postoji ili je uklonjena. notice_locking_conflict: "Konflikt: podaci su izmjenjeni od strane drugog korisnika." @@ -169,28 +173,28 @@ notice_successful_delete: Brisanje izvrÅ¡eno. notice_successful_update: Promjene uspjeÅ¡no izvrÅ¡ene. - error_can_t_load_default_data: "Podrazumjevane postavke se ne mogu uÄitati {{value}}" - error_scm_command_failed: "Desila se greÅ¡ka pri pristupu repozitoriju: {{value}}" + error_can_t_load_default_data: "Podrazumjevane postavke se ne mogu uÄitati %{value}" + error_scm_command_failed: "Desila se greÅ¡ka pri pristupu repozitoriju: %{value}" error_scm_not_found: "Unos i/ili revizija ne postoji u repozitoriju." error_scm_annotate: "Ova stavka ne postoji ili nije oznaÄena." error_issue_not_found_in_project: 'Aktivnost nije naÄ‘ena ili ne pripada ovom projektu' - warning_attachments_not_saved: "{{count}} fajl(ovi) ne mogu biti snimljen(i)." + warning_attachments_not_saved: "%{count} fajl(ovi) ne mogu biti snimljen(i)." - mail_subject_lost_password: "VaÅ¡a {{value}} lozinka" + mail_subject_lost_password: "VaÅ¡a %{value} lozinka" mail_body_lost_password: 'Za promjenu lozinke, kliknite na sljedeći link:' - mail_subject_register: "Aktivirajte {{value}} vaÅ¡ korisniÄki raÄun" + mail_subject_register: "Aktivirajte %{value} vaÅ¡ korisniÄki raÄun" mail_body_register: 'Za aktivaciju vaÅ¡eg korisniÄkog raÄuna, kliknite na sljedeći link:' - mail_body_account_information_external: "Možete koristiti vaÅ¡ {{value}} korisniÄki raÄun za prijavu na sistem." + mail_body_account_information_external: "Možete koristiti vaÅ¡ %{value} korisniÄki raÄun za prijavu na sistem." mail_body_account_information: Informacija o vaÅ¡em korisniÄkom raÄunu - mail_subject_account_activation_request: "{{value}} zahtjev za aktivaciju korisniÄkog raÄuna" - mail_body_account_activation_request: "Novi korisnik ({{value}}) se registrovao. KorisniÄki raÄun Äeka vaÅ¡e odobrenje za aktivaciju:" - mail_subject_reminder: "{{count}} aktivnost(i) u kaÅ¡njenju u narednim {{days}} danima" - mail_body_reminder: "{{count}} aktivnost(i) koje su dodjeljenje vama u narednim {{days}} danima:" + mail_subject_account_activation_request: "%{value} zahtjev za aktivaciju korisniÄkog raÄuna" + mail_body_account_activation_request: "Novi korisnik (%{value}) se registrovao. KorisniÄki raÄun Äeka vaÅ¡e odobrenje za aktivaciju:" + mail_subject_reminder: "%{count} aktivnost(i) u kaÅ¡njenju u narednim %{days} danima" + mail_body_reminder: "%{count} aktivnost(i) koje su dodjeljenje vama u narednim %{days} danima:" gui_validation_error: 1 greÅ¡ka - gui_validation_error_plural: "{{count}} greÅ¡aka" + gui_validation_error_plural: "%{count} greÅ¡aka" field_name: Ime field_description: Opis @@ -252,6 +256,7 @@ field_attr_lastname: Atribut za prezime field_attr_mail: Atribut za email field_onthefly: 'Kreiranje korisnika "On-the-fly"' + field_start_date: PoÄetak field_done_ratio: % Realizovano field_auth_source: Mod za authentifikaciju field_hide_mail: Sakrij moju email adresu @@ -391,14 +396,14 @@ label_x_projects: zero: 0 projekata one: 1 projekat - other: "{{count}} projekata" + other: "%{count} projekata" label_project_all: Svi projekti label_project_latest: Posljednji projekti label_issue: Aktivnost label_issue_new: Nova aktivnost label_issue_plural: Aktivnosti label_issue_view_all: Vidi sve aktivnosti - label_issues_by: "Aktivnosti po {{value}}" + label_issues_by: "Aktivnosti po %{value}" label_issue_added: Aktivnost je dodana label_issue_updated: Aktivnost je izmjenjena label_document: Dokument @@ -448,7 +453,7 @@ label_activity_plural: Promjene label_activity: Operacija label_overall_activity: Pregled svih promjena - label_user_activity: "Promjene izvrÅ¡ene od: {{value}}" + label_user_activity: "Promjene izvrÅ¡ene od: %{value}" label_new: Novi label_logged_as: Prijavljen kao label_environment: Sistemsko okruženje @@ -457,7 +462,7 @@ label_auth_source_new: Novi mod authentifikacije label_auth_source_plural: Modovi authentifikacije label_subproject_plural: Podprojekti - label_and_its_subprojects: "{{value}} i njegovi podprojekti" + label_and_its_subprojects: "%{value} i njegovi podprojekti" label_min_max_length: Min - Maks dužina label_list: Lista label_date: Datum @@ -468,8 +473,8 @@ label_text: Dugi tekst label_attribute: Atribut label_attribute_plural: Atributi - label_download: "{{count}} download" - label_download_plural: "{{count}} download-i" + label_download: "%{count} download" + label_download_plural: "%{count} download-i" label_no_data: Nema podataka za prikaz label_change_status: Promjeni status label_history: Istorija @@ -500,17 +505,17 @@ label_closed_issues: zatvoren label_closed_issues_plural: zatvoreni label_x_open_issues_abbr_on_total: - zero: 0 otvoreno / {{total}} - one: 1 otvorena / {{total}} - other: "{{count}} otvorene / {{total}}" + zero: 0 otvoreno / %{total} + one: 1 otvorena / %{total} + other: "%{count} otvorene / %{total}" label_x_open_issues_abbr: zero: 0 otvoreno one: 1 otvorena - other: "{{count}} otvorene" + other: "%{count} otvorene" label_x_closed_issues_abbr: zero: 0 zatvoreno one: 1 zatvorena - other: "{{count}} zatvorene" + other: "%{count} zatvorene" label_total: Ukupno label_permissions: Dozvole label_current_status: Tekući status @@ -528,7 +533,7 @@ label_months_from: mjeseci od label_gantt: Gantt label_internal: Interno - label_last_changes: "posljednjih {{count}} promjena" + label_last_changes: "posljednjih %{count} promjena" label_change_view_all: Vidi sve promjene label_personalize_page: Personaliziraj ovu stranicu label_comment: Komentar @@ -536,7 +541,7 @@ label_x_comments: zero: bez komentara one: 1 komentar - other: "{{count}} komentari" + other: "%{count} komentari" label_comment_add: Dodaj komentar label_comment_added: Komentar je dodan label_comment_delete: IzbriÅ¡i komentar @@ -555,7 +560,7 @@ label_yesterday: juÄe label_this_week: ova hefta label_last_week: zadnja hefta - label_last_n_days: "posljednjih {{count}} dana" + label_last_n_days: "posljednjih %{count} dana" label_this_month: ovaj mjesec label_last_month: posljednji mjesec label_this_year: ova godina @@ -569,8 +574,8 @@ label_repository: Repozitorij label_repository_plural: Repozitoriji label_browse: Listaj - label_modification: "{{count}} promjena" - label_modification_plural: "{{count}} promjene" + label_modification: "%{count} promjena" + label_modification_plural: "%{count} promjene" label_revision: Revizija label_revision_plural: Revizije label_associated_revisions: Doddjeljene revizije @@ -588,8 +593,8 @@ label_sort_lower: Pomjeri dole label_sort_lowest: Pomjeri na dno label_roadmap: Plan realizacije - label_roadmap_due_in: "Obavezan do {{value}}" - label_roadmap_overdue: "{{value}} kasni" + label_roadmap_due_in: "Obavezan do %{value}" + label_roadmap_overdue: "%{value} kasni" label_roadmap_no_issues: Nema aktivnosti za ovu verziju label_search: Traži label_result_plural: Rezultati @@ -607,8 +612,8 @@ label_changes_details: Detalji svih promjena label_issue_tracking: Evidencija aktivnosti label_spent_time: UtroÅ¡ak vremena - label_f_hour: "{{value}} sahat" - label_f_hour_plural: "{{value}} sahata" + label_f_hour: "%{value} sahat" + label_f_hour_plural: "%{value} sahata" label_time_tracking: Evidencija vremena label_change_plural: Promjene label_statistics: Statistika @@ -657,13 +662,13 @@ label_date_from: Od label_date_to: Do label_language_based: Bazirano na korisnikovom jeziku - label_sort_by: "Sortiraj po {{value}}" + label_sort_by: "Sortiraj po %{value}" label_send_test_email: PoÅ¡alji testni email - label_feeds_access_key_created_on: "RSS pristupni kljuÄ kreiran prije {{value}} dana" + label_feeds_access_key_created_on: "RSS pristupni kljuÄ kreiran prije %{value} dana" label_module_plural: Moduli - label_added_time_by: "Dodano od {{author}} prije {{age}}" - label_updated_time_by: "Izmjenjeno od {{author}} prije {{age}}" - label_updated_time: "Izmjenjeno prije {{value}}" + label_added_time_by: "Dodano od %{author} prije %{age}" + label_updated_time_by: "Izmjenjeno od %{author} prije %{age}" + label_updated_time: "Izmjenjeno prije %{value}" label_jump_to_a_project: SkoÄi na projekat... label_file_plural: Fajlovi label_changeset_plural: Setovi promjena @@ -679,7 +684,7 @@ label_registration_activation_by_email: aktivacija korisniÄkog raÄuna email-om label_registration_manual_activation: ruÄna aktivacija korisniÄkog raÄuna label_registration_automatic_activation: automatska kreacija korisniÄkog raÄuna - label_display_per_page: "Po stranici: {{value}}" + label_display_per_page: "Po stranici: %{value}" label_age: Starost label_change_properties: Promjena osobina label_general: Generalno @@ -745,44 +750,44 @@ text_regexp_info: npr. ^[A-Z0-9]+$ text_min_max_length_info: 0 znaÄi bez restrikcije text_project_destroy_confirmation: Sigurno želite izbrisati ovaj projekat i njegove podatke ? - text_subprojects_destroy_warning: "Podprojekt(i): {{value}} će takoÄ‘e biti izbrisani." + text_subprojects_destroy_warning: "Podprojekt(i): %{value} će takoÄ‘e biti izbrisani." text_workflow_edit: Odaberite ulogu i podruÄje aktivnosti za ispravku toka promjena na aktivnosti text_are_you_sure: Da li ste sigurni ? text_tip_issue_begin_day: zadatak poÄinje danas text_tip_issue_end_day: zadatak zavrÅ¡ava danas text_tip_issue_begin_end_day: zadatak zapoÄinje i zavrÅ¡ava danas text_project_identifier_info: 'Samo mala slova (a-z), brojevi i crtice su dozvoljeni.
    Nakon snimanja, identifikator se ne može mijenjati.' - text_caracters_maximum: "maksimum {{count}} karaktera." - text_caracters_minimum: "Dužina mora biti najmanje {{count}} znakova." - text_length_between: "Broj znakova izmeÄ‘u {{min}} i {{max}}." + text_caracters_maximum: "maksimum %{count} karaktera." + text_caracters_minimum: "Dužina mora biti najmanje %{count} znakova." + text_length_between: "Broj znakova izmeÄ‘u %{min} i %{max}." text_tracker_no_workflow: Tok statusa nije definisan za ovo podruÄje aktivnosti text_unallowed_characters: Nedozvoljeni znakovi text_comma_separated: ViÅ¡estruke vrijednosti dozvoljene (odvojiti zarezom). text_issues_ref_in_commit_messages: 'Referenciranje i zatvaranje aktivnosti putem "commit" poruka' - text_issue_added: "Aktivnost {{id}} je prijavljena od {{author}}." - text_issue_updated: "Aktivnost {{id}} je izmjenjena od {{author}}." + text_issue_added: "Aktivnost %{id} je prijavljena od %{author}." + text_issue_updated: "Aktivnost %{id} je izmjenjena od %{author}." text_wiki_destroy_confirmation: Sigurno želite izbrisati ovaj wiki i Äitav njegov sadržaj ? - text_issue_category_destroy_question: "Neke aktivnosti ({{count}}) pripadaju ovoj kategoriji. Sigurno to želite uraditi ?" + text_issue_category_destroy_question: "Neke aktivnosti (%{count}) pripadaju ovoj kategoriji. Sigurno to želite uraditi ?" text_issue_category_destroy_assignments: Ukloni kategoriju text_issue_category_reassign_to: Ponovo dodijeli ovu kategoriju text_user_mail_option: "Za projekte koje niste odabrali, primićete samo notifikacije o stavkama koje pratite ili ste u njih ukljuÄeni (npr. vi ste autor ili su vama dodjeljenje)." text_no_configuration_data: "Uloge, podruÄja aktivnosti, statusi aktivnosti i tok promjena statusa nisu konfigurisane.\nKrajnje je preporuÄeno da uÄitate tekuÄ‘e postavke. Kasnije ćete ih moći mjenjati po svojim potrebama." text_load_default_configuration: UÄitaj tekuću konfiguraciju - text_status_changed_by_changeset: "Primjenjeno u setu promjena {{value}}." + text_status_changed_by_changeset: "Primjenjeno u setu promjena %{value}." text_issues_destroy_confirmation: 'Sigurno želite izbrisati odabranu/e aktivnost/i ?' text_select_project_modules: 'Odaberi module koje želite u ovom projektu:' text_default_administrator_account_changed: Tekući administratorski raÄun je promjenjen text_file_repository_writable: U direktorij sa fajlovima koji su prilozi se može pisati text_plugin_assets_writable: U direktorij plugin-ova se može pisati text_rmagick_available: RMagick je dostupan (opciono) - text_destroy_time_entries_question: "{{hours}} sahata je prijavljeno na aktivnostima koje želite brisati. Želite li to uÄiniti ?" + text_destroy_time_entries_question: "%{hours} sahata je prijavljeno na aktivnostima koje želite brisati. Želite li to uÄiniti ?" text_destroy_time_entries: IzbriÅ¡i prijavljeno vrijeme text_assign_time_entries_to_project: Dodaj prijavljenoo vrijeme projektu text_reassign_time_entries: 'Preraspodjeli prijavljeno vrijeme na ovu aktivnost:' - text_user_wrote: "{{value}} je napisao/la:" - text_enumeration_destroy_question: "Za {{count}} objekata je dodjeljenja ova vrijednost." + text_user_wrote: "%{value} je napisao/la:" + text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost." text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:' - text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/email.yml i restartuj aplikaciju nakon toga." + text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/configuration.yml i restartuj aplikaciju nakon toga." text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisniÄko ima naÄ‘eno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju." text_diff_truncated: '... Ovaj prikaz razlike je odsjeÄen poÅ¡to premaÅ¡uje maksimalnu veliÄinu za prikaz' text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost' @@ -817,23 +822,23 @@ button_annotate: Zabilježi button_activate: Aktiviraj label_sort: Sortiranje - label_date_from_to: Od {{start}} do {{end}} + label_date_from_to: Od %{start} do %{end} label_ascending: Rastuće label_descending: Opadajuće 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_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" + 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}}. + 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}}. + 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 @@ -841,14 +846,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -883,9 +888,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -912,12 +917,12 @@ 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_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}}." + 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. @@ -925,7 +930,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -936,8 +941,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/ca.yml.svn-base --- a/config/locales/.svn/text-base/ca.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/ca.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -36,37 +36,37 @@ half_a_minute: "mig minut" less_than_x_seconds: one: "menys d'un segon" - other: "menys de {{count}} segons" + other: "menys de %{count} segons" x_seconds: one: "1 segons" - other: "{{count}} segons" + other: "%{count} segons" less_than_x_minutes: one: "menys d'un minut" - other: "menys de {{count}} minuts" + other: "menys de %{count} minuts" x_minutes: one: "1 minut" - other: "{{count}} minuts" + other: "%{count} minuts" about_x_hours: one: "aproximadament 1 hora" - other: "aproximadament {{count}} hores" + other: "aproximadament %{count} hores" x_days: one: "1 dia" - other: "{{count}} dies" + other: "%{count} dies" about_x_months: one: "aproximadament 1 mes" - other: "aproximadament {{count}} mesos" + other: "aproximadament %{count} mesos" x_months: one: "1 mes" - other: "{{count}} mesos" + other: "%{count} mesos" about_x_years: one: "aproximadament 1 any" - other: "aproximadament {{count}} anys" + other: "aproximadament %{count} anys" over_x_years: one: "més d'un any" - other: "més de {{count}} anys" + other: "més de %{count} anys" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: # Default format for numbers @@ -98,6 +98,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "no està inclòs a la llista" exclusion: "està reservat" @@ -112,11 +116,11 @@ taken: "ja s'està utilitzant" not_a_number: "no és un número" not_a_date: "no és una data vàlida" - greater_than: "ha de ser més gran que {{count}}" - greater_than_or_equal_to: "ha de ser més gran o igual a {{count}}" - equal_to: "ha de ser igual a {{count}}" - less_than: "ha de ser menys que {{count}}" - less_than_or_equal_to: "ha de ser menys o igual a {{count}}" + greater_than: "ha de ser més gran que %{count}" + greater_than_or_equal_to: "ha de ser més gran o igual a %{count}" + equal_to: "ha de ser igual a %{count}" + less_than: "ha de ser menys que %{count}" + less_than_or_equal_to: "ha de ser menys o igual a %{count}" odd: "ha de ser senar" even: "ha de ser parell" greater_than_start_date: "ha de ser superior que la data inicial" @@ -153,12 +157,12 @@ notice_file_not_found: "La pàgina a la que intenteu accedir no existeix o s'ha suprimit." notice_locking_conflict: Un altre usuari ha actualitzat les dades. notice_not_authorized: No teniu permís per a accedir a aquesta pàgina. - notice_email_sent: "S'ha enviat un correu electrònic a {{value}}" - notice_email_error: "S'ha produït un error en enviar el correu ({{value}})" + notice_email_sent: "S'ha enviat un correu electrònic a %{value}" + 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_members: "No s'han pogut desar els membres: {{errors}}." + notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de %{count} 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." notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada." @@ -166,9 +170,9 @@ notice_unable_delete_time_entry: "No s'ha pogut suprimir l'entrada del registre de temps." notice_issue_done_ratios_updated: "S'ha actualitzat el tant per cent dels assumptes." - error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: {{value}} " + error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: %{value} " error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el dipòsit." - error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: {{value}}" + error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: %{value}" error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar." error_issue_not_found_in_project: "No s'ha trobat l'assumpte o no pertany a aquest projecte" error_no_tracker_in_project: "Aquest projecte no té seguidor associat. Comproveu els paràmetres del projecte." @@ -182,26 +186,26 @@ error_workflow_copy_source: "Seleccioneu un seguidor o rol font" error_workflow_copy_target: "Seleccioneu seguidors i rols objectiu" error_unable_delete_issue_status: "No s'ha pogut suprimir l'estat de l'assumpte" - error_unable_to_connect: "No s'ha pogut connectar ({{value}})" - warning_attachments_not_saved: "No s'han pogut desar {{count}} fitxers." + error_unable_to_connect: "No s'ha pogut connectar (%{value})" + warning_attachments_not_saved: "No s'han pogut desar %{count} fitxers." - mail_subject_lost_password: "Contrasenya de {{value}}" + mail_subject_lost_password: "Contrasenya de %{value}" mail_body_lost_password: "Per a canviar la contrasenya, feu clic en l'enllaç següent:" - mail_subject_register: "Activació del compte de {{value}}" + mail_subject_register: "Activació del compte de %{value}" mail_body_register: "Per a activar el compte, feu clic en l'enllaç següent:" - mail_body_account_information_external: "Podeu utilitzar el compte «{{value}}» per a entrar." + mail_body_account_information_external: "Podeu utilitzar el compte «%{value}» per a entrar." mail_body_account_information: Informació del compte - mail_subject_account_activation_request: "Sol·licitud d'activació del compte de {{value}}" - mail_body_account_activation_request: "S'ha registrat un usuari nou ({{value}}). El seu compte està pendent d'aprovació:" - mail_subject_reminder: "{{count}} assumptes venceran els següents {{days}} dies" - mail_body_reminder: "{{count}} assumptes que teniu assignades venceran els següents {{days}} dies:" - mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «{{id}}»" - mail_body_wiki_content_added: "En {{author}} ha afegit la pàgina wiki «{{id}}»." - mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «{{id}}»" - mail_body_wiki_content_updated: "En {{author}} ha actualitzat la pàgina wiki «{{id}}»." + mail_subject_account_activation_request: "Sol·licitud d'activació del compte de %{value}" + mail_body_account_activation_request: "S'ha registrat un usuari nou (%{value}). El seu compte està pendent d'aprovació:" + mail_subject_reminder: "%{count} assumptes venceran els següents %{days} dies" + mail_body_reminder: "%{count} assumptes que teniu assignades venceran els següents %{days} dies:" + mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «%{id}»" + mail_body_wiki_content_added: "En %{author} ha afegit la pàgina wiki «%{id}»." + mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «%{id}»" + mail_body_wiki_content_updated: "En %{author} ha actualitzat la pàgina wiki «%{id}»." gui_validation_error: 1 error - gui_validation_error_plural: "{{count}} errors" + gui_validation_error_plural: "%{count} errors" field_name: Nom field_description: Descripció @@ -264,6 +268,7 @@ field_attr_lastname: Atribut del cognom 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_auth_source: "Mode d'autenticació" field_hide_mail: "Oculta l'adreça de correu electrònic" @@ -427,14 +432,14 @@ label_x_projects: zero: cap projecte one: 1 projecte - other: "{{count}} projectes" + other: "%{count} projectes" label_project_all: Tots els projectes label_project_latest: Els últims projectes label_issue: Assumpte label_issue_new: Assumpte nou label_issue_plural: Assumptes label_issue_view_all: Visualitza tots els assumptes - label_issues_by: "Assumptes per {{value}}" + label_issues_by: "Assumptes per %{value}" label_issue_added: Assumpte afegit label_issue_updated: Assumpte actualitzat label_document: Document @@ -484,7 +489,7 @@ label_registered_on: Informat el label_activity: Activitat label_overall_activity: Activitat global - label_user_activity: "Activitat de {{value}}" + label_user_activity: "Activitat de %{value}" label_new: Nou label_logged_as: Heu entrat com a label_environment: Entorn @@ -494,7 +499,7 @@ label_auth_source_plural: "Modes d'autenticació" label_subproject_plural: Subprojectes label_subproject_new: "Subprojecte nou" - label_and_its_subprojects: "{{value}} i els seus subprojectes" + label_and_its_subprojects: "%{value} i els seus subprojectes" label_min_max_length: Longitud mín - max label_list: Llist label_date: Data @@ -505,8 +510,8 @@ label_text: Text llarg label_attribute: Atribut label_attribute_plural: Atributs - label_download: "{{count}} baixada" - label_download_plural: "{{count}} baixades" + label_download: "%{count} baixada" + label_download_plural: "%{count} baixades" label_no_data: Sense dades a mostrar label_change_status: "Canvia l'estat" label_history: Historial @@ -538,17 +543,17 @@ label_closed_issues: tancat label_closed_issues_plural: tancats label_x_open_issues_abbr_on_total: - zero: 0 oberts / {{total}} - one: 1 obert / {{total}} - other: "{{count}} oberts / {{total}}" + zero: 0 oberts / %{total} + one: 1 obert / %{total} + other: "%{count} oberts / %{total}" label_x_open_issues_abbr: zero: 0 oberts one: 1 obert - other: "{{count}} oberts" + other: "%{count} oberts" label_x_closed_issues_abbr: zero: 0 tancats one: 1 tancat - other: "{{count}} tancats" + other: "%{count} tancats" label_total: Total label_permissions: Permisos label_current_status: Estat actual @@ -566,7 +571,7 @@ label_months_from: mesos des de label_gantt: Gantt label_internal: Intern - label_last_changes: "últims {{count}} canvis" + label_last_changes: "últims %{count} canvis" label_change_view_all: Visualitza tots els canvis label_personalize_page: Personalitza aquesta pàgina label_comment: Comentari @@ -574,7 +579,7 @@ label_x_comments: zero: sense comentaris one: 1 comentari - other: "{{count}} comentaris" + other: "%{count} comentaris" label_comment_add: Afegeix un comentari label_comment_added: Comentari afegit label_comment_delete: Suprimeix comentaris @@ -595,7 +600,7 @@ label_yesterday: ahir label_this_week: aquesta setmana label_last_week: "l'última setmana" - label_last_n_days: "els últims {{count}} dies" + label_last_n_days: "els últims %{count} dies" label_this_month: aquest més label_last_month: "l'últim més" label_this_year: aquest any @@ -609,13 +614,13 @@ label_repository: Dipòsit label_repository_plural: Dipòsits label_browse: Navega - label_modification: "{{count}} canvi" - label_modification_plural: "{{count}} canvis" + label_modification: "%{count} canvi" + label_modification_plural: "%{count} canvis" label_branch: Branca label_tag: Etiqueta label_revision: Revisió label_revision_plural: Revisions - label_revision_id: "Revisió {{value}}" + label_revision_id: "Revisió %{value}" label_associated_revisions: Revisions associades label_added: afegit label_modified: modificat @@ -632,8 +637,8 @@ label_sort_lower: Mou cap avall label_sort_lowest: Mou a la part inferior label_roadmap: Planificació - label_roadmap_due_in: "Venç en {{value}}" - label_roadmap_overdue: "{{value}} tard" + label_roadmap_due_in: "Venç en %{value}" + label_roadmap_overdue: "%{value} tard" label_roadmap_no_issues: No hi ha assumptes per a aquesta versió label_search: Cerca label_result_plural: Resultats @@ -652,8 +657,8 @@ label_issue_tracking: "Seguiment d'assumptes" label_spent_time: Temps invertit label_overall_spent_time: "Temps total invertit" - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} hores" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} hores" label_time_tracking: Temps de seguiment label_change_plural: Canvis label_statistics: Estadístiques @@ -704,15 +709,15 @@ label_date_from: Des de label_date_to: A label_language_based: "Basat en l'idioma de l'usuari" - label_sort_by: "Ordena per {{value}}" + label_sort_by: "Ordena per %{value}" label_send_test_email: Envia un correu electrònic de prova label_feeds_access_key: "Clau d'accés del RSS" label_missing_feeds_access_key: "Falta una clau d'accés del RSS" - label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa {{value}}" + label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa %{value}" label_module_plural: Mòduls - label_added_time_by: "Afegit per {{author}} fa {{age}}" - label_updated_time_by: "Actualitzat per {{author}} fa {{age}}" - label_updated_time: "Actualitzat fa {{value}}" + label_added_time_by: "Afegit per %{author} fa %{age}" + label_updated_time_by: "Actualitzat per %{author} fa %{age}" + label_updated_time: "Actualitzat fa %{value}" label_jump_to_a_project: Salta al projecte... label_file_plural: Fitxers label_changeset_plural: Conjunt de canvis @@ -728,7 +733,7 @@ label_registration_activation_by_email: activació del compte per correu electrònic label_registration_manual_activation: activació del compte manual label_registration_automatic_activation: activació del compte automàtica - label_display_per_page: "Per pàgina: {{value}}" + label_display_per_page: "Per pàgina: %{value}" label_age: Edat label_change_properties: Canvia les propietats label_general: General @@ -751,7 +756,7 @@ label_sort: Ordena label_ascending: Ascendent label_descending: Descendent - label_date_from_to: Des de {{start}} a {{end}} + label_date_from_to: Des de %{start} a %{end} label_wiki_content_added: "S'ha afegit la pàgina wiki" label_wiki_content_updated: "S'ha actualitzat la pàgina wiki" label_group: Grup @@ -770,7 +775,7 @@ label_display_used_statuses_only: "Mostra només els estats que utilitza aquest seguidor" label_api_access_key: "Clau d'accés a l'API" label_missing_api_access_key: "Falta una clau d'accés de l'API" - label_api_access_key_created_on: "Clau d'accés de l'API creada fa {{value}}" + label_api_access_key_created_on: "Clau d'accés de l'API creada fa %{value}" label_profile: Perfil label_subtask_plural: Subtasques label_project_copy_notifications: "Envia notificacions de correu electrònic durant la còpia del projecte" @@ -833,53 +838,53 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 significa sense restricció text_project_destroy_confirmation: Segur que voleu suprimir aquest projecte i les dades relacionades? - text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: {{value}}." + text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: %{value}." text_workflow_edit: Seleccioneu un rol i un seguidor per a editar el flux de treball text_are_you_sure: Segur? - text_journal_changed: "{{label}} ha canviat de {{old}} a {{new}}" - text_journal_set_to: "{{label}} s'ha establert a {{value}}" - text_journal_deleted: "{{label}} s'ha suprimit ({{old}})" - text_journal_added: "S'ha afegit {{label}} {{value}}" + text_journal_changed: "%{label} ha canviat de %{old} a %{new}" + text_journal_set_to: "%{label} s'ha establert a %{value}" + text_journal_deleted: "%{label} s'ha suprimit (%{old})" + text_journal_added: "S'ha afegit %{label} %{value}" text_tip_issue_begin_day: "tasca que s'inicia aquest dia" text_tip_issue_end_day: tasca que finalitza aquest dia text_tip_issue_begin_end_day: "tasca que s'inicia i finalitza aquest dia" text_project_identifier_info: "Es permeten lletres en minúscules (a-z), números i guions.
    Un cop desat, l'identificador no es pot modificar." - text_caracters_maximum: "{{count}} caràcters com a màxim." - text_caracters_minimum: "Com a mínim ha de tenir {{count}} caràcters." - text_length_between: "Longitud entre {{min}} i {{max}} caràcters." + text_caracters_maximum: "%{count} caràcters com a màxim." + text_caracters_minimum: "Com a mínim ha de tenir %{count} caràcters." + text_length_between: "Longitud entre %{min} i %{max} caràcters." text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest seguidor" text_unallowed_characters: Caràcters no permesos text_comma_separated: Es permeten valors múltiples (separats per una coma). text_line_separated: "Es permeten diversos valors (una línia per cada valor)." text_issues_ref_in_commit_messages: Referència i soluciona els assumptes en els missatges publicats - text_issue_added: "L'assumpte {{id}} ha sigut informat per {{author}}." - text_issue_updated: "L'assumpte {{id}} ha sigut actualitzat per {{author}}." + text_issue_added: "L'assumpte %{id} ha sigut informat per %{author}." + text_issue_updated: "L'assumpte %{id} ha sigut actualitzat per %{author}." text_wiki_destroy_confirmation: Segur que voleu suprimir aquest wiki i tots els seus continguts? - text_issue_category_destroy_question: "Alguns assumptes ({{count}}) estan assignats a aquesta categoria. Què voleu fer?" + text_issue_category_destroy_question: "Alguns assumptes (%{count}) estan assignats a aquesta categoria. Què voleu fer?" text_issue_category_destroy_assignments: Suprimeix les assignacions de la categoria text_issue_category_reassign_to: Torna a assignar els assumptes a aquesta categoria text_user_mail_option: "Per als projectes no seleccionats, només rebreu notificacions sobre les coses que vigileu o que hi esteu implicat (ex. assumptes que en sou l'autor o hi esteu assignat)." text_no_configuration_data: "Encara no s'han configurat els rols, seguidors, estats de l'assumpte i flux de treball.\nÉs altament recomanable que carregueu la configuració predeterminada. Podreu modificar-la un cop carregada." text_load_default_configuration: Carrega la configuració predeterminada - text_status_changed_by_changeset: "Aplicat en el conjunt de canvis {{value}}." + text_status_changed_by_changeset: "Aplicat en el conjunt de canvis %{value}." text_issues_destroy_confirmation: "Segur que voleu suprimir els assumptes seleccionats?" text_select_project_modules: "Seleccioneu els mòduls a habilitar per a aquest projecte:" text_default_administrator_account_changed: "S'ha canviat el compte d'administrador predeterminat" text_file_repository_writable: Es pot escriure en el dipòsit de fitxers text_plugin_assets_writable: Es pot escriure als connectors actius text_rmagick_available: RMagick disponible (opcional) - text_destroy_time_entries_question: "S'han informat {{hours}} hores en els assumptes que aneu a suprimir. Què voleu fer?" + text_destroy_time_entries_question: "S'han informat %{hours} hores en els assumptes que aneu a suprimir. Què voleu fer?" text_destroy_time_entries: Suprimeix les hores informades text_assign_time_entries_to_project: Assigna les hores informades al projecte text_reassign_time_entries: "Torna a assignar les hores informades a aquest assumpte:" - text_user_wrote: "{{value}} va escriure:" - text_enumeration_destroy_question: "{{count}} objectes estan assignats a aquest valor." + text_user_wrote: "%{value} va escriure:" + text_enumeration_destroy_question: "%{count} objectes estan assignats a aquest valor." text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:" - text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo." + text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/configuration.yml i reinicieu l'aplicació per habilitar-lo." text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament." text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar." text_custom_field_possible_values_info: "Una línia per a cada valor" - text_wiki_page_destroy_question: "Aquesta pàgina té {{descendants}} pàgines fill i descendents. Què voleu fer?" + text_wiki_page_destroy_question: "Aquesta pàgina té %{descendants} pàgines fill i descendents. Què voleu fer?" text_wiki_page_nullify_children: "Deixa les pàgines fill com a pàgines arrel" text_wiki_page_destroy_children: "Suprimeix les pàgines fill i tots els seus descendents" text_wiki_page_reassign_children: "Reasigna les pàgines fill a aquesta pàgina pare" @@ -914,7 +919,7 @@ enumeration_activities: Activitats (seguidor de temps) enumeration_system_activity: Activitat del sistema - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -925,8 +930,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/cs.yml.svn-base --- a/config/locales/.svn/text-base/cs.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/cs.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,9 @@ +# Update to 1.1 by Michal Gebauer +# Updated by Josef LiÅ¡ka +# CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz +# Based on original CZ translation by Jan KadleÄek cs: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: @@ -26,63 +31,65 @@ long: "%B %d, %Y %H:%M" am: "dop." pm: "odp." - + datetime: distance_in_words: half_a_minute: "půl minuty" less_than_x_seconds: one: "ménÄ› než sekunda" - other: "ménÄ› než {{count}} sekund" + other: "ménÄ› než %{count} sekund" x_seconds: one: "1 sekunda" - other: "{{count}} sekund" + other: "%{count} sekund" less_than_x_minutes: one: "ménÄ› než minuta" - other: "ménÄ› než {{count}} minut" + other: "ménÄ› než %{count} minut" x_minutes: one: "1 minuta" - other: "{{count}} minut" + other: "%{count} minut" about_x_hours: one: "asi 1 hodina" - other: "asi {{count}} hodin" + other: "asi %{count} hodin" x_days: one: "1 den" - other: "{{count}} dnů" + other: "%{count} dnů" about_x_months: one: "asi 1 mÄ›síc" - other: "asi {{count}} mÄ›síců" + other: "asi %{count} mÄ›síců" x_months: one: "1 mÄ›síc" - other: "{{count}} mÄ›síců" + other: "%{count} mÄ›síců" about_x_years: one: "asi 1 rok" - other: "asi {{count}} let" + other: "asi %{count} let" over_x_years: one: "více než 1 rok" - other: "více než {{count}} roky" + other: "více než %{count} roky" almost_x_years: one: "témeÅ™ 1 rok" - other: "téměř {{count}} roky" + other: "téměř %{count} roky" number: + # Výchozí formát pro Äísla format: - separator: "." + separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: + delimiter: "" precision: 1 - delimiter: "" - storage_units: + storage_units: format: "%n %u" - units: - kb: KB - tb: TB - gb: GB - byte: - one: Byte - other: Bytes - mb: MB + units: + byte: + one: "Bajt" + other: "Bajtů" + kb: "kB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in array.to_sentence. support: @@ -92,6 +99,10 @@ activerecord: errors: + template: + header: + one: "1 chyba zabránila uložení %{model}" + other: "%{count} chyb zabránilo uložení %{model}" messages: inclusion: "není zahrnuto v seznamu" exclusion: "je rezervováno" @@ -106,11 +117,11 @@ taken: "je již použito" not_a_number: "není Äíslo" not_a_date: "není platné datum" - greater_than: "musí být vÄ›tší než {{count}}" - greater_than_or_equal_to: "musí být vÄ›tší nebo rovno {{count}}" - equal_to: "musí být pÅ™esnÄ› {{count}}" - less_than: "musí být ménÄ› než {{count}}" - less_than_or_equal_to: "musí být ménÄ› nebo rovno {{count}}" + greater_than: "musí být vÄ›tší než %{count}" + greater_than_or_equal_to: "musí být vÄ›tší nebo rovno %{count}" + equal_to: "musí být pÅ™esnÄ› %{count}" + less_than: "musí být ménÄ› než %{count}" + less_than_or_equal_to: "musí být ménÄ› nebo rovno %{count}" odd: "musí být liché" even: "musí být sudé" greater_than_start_date: "musí být vÄ›tší než poÄáteÄní datum" @@ -118,10 +129,6 @@ circular_dependency: "Tento vztah by vytvoÅ™il cyklickou závislost" cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílÄích úkolů" - # Updated by Josef LiÅ¡ka - # CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz - # Based on original CZ translation by Jan KadleÄek - actionview_instancetag_blank_option: Prosím vyberte general_text_No: 'Ne' @@ -150,32 +157,58 @@ notice_successful_connection: Úspěšné pÅ™ipojení. notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána. notice_locking_conflict: Údaje byly zmÄ›nÄ›ny jiným uživatelem. - notice_scm_error: Záznam a/nebo revize neexistuje v repozitáři. notice_not_authorized: Nemáte dostateÄná práva pro zobrazení této stránky. - notice_email_sent: "Na adresu {{value}} byl odeslán email" - notice_email_error: "PÅ™i odesílání emailu nastala chyba ({{value}})" + notice_not_authorized_archived_project: Projekt ke kterému se snažíte pÅ™istupovat byl archivován. + notice_email_sent: "Na adresu %{value} byl odeslán email" + notice_email_error: "PÅ™i odesílání emailu nastala chyba (%{value})" notice_feeds_access_key_reseted: Váš klÃ­Ä pro přístup k RSS byl resetován. - notice_failed_to_save_issues: "Chyba pÅ™i uložení {{count}} úkolu(ů) z {{total}} vybraných: {{ids}}." + notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. + notice_failed_to_save_issues: "Chyba pÅ™i uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}." + notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): %{errors}." notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete editovat" notice_account_pending: "Váš úÄet byl vytvoÅ™en, nyní Äeká na schválení administrátorem." notice_default_data_loaded: Výchozí konfigurace úspěšnÄ› nahrána. + notice_unable_delete_version: Nemohu odstanit verzi + notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. + notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. + notice_gantt_chart_truncated: Graf byl oříznut, poÄet položek pÅ™esáhl limit pro zobrazení (%{max}) - error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: {{value}}" + error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}" error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři." - error_scm_command_failed: "PÅ™i pokusu o přístup k repozitáři doÅ¡lo k chybÄ›: {{value}}" + error_scm_command_failed: "PÅ™i pokusu o přístup k repozitáři doÅ¡lo k chybÄ›: %{value}" + error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu' + error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. + error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). + error_can_not_delete_custom_field: Nelze smazat volitelné pole + error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. + error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. + error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en + error_can_not_archive_project: Tento projekt nemůže být archivován + error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. + error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly + error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) + error_unable_delete_issue_status: Nelze smazat stavy úkolů + error_unable_to_connect: Nelze se pÅ™ipojit (%{value}) + warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit." - mail_subject_lost_password: "VaÅ¡e heslo ({{value}})" + mail_subject_lost_password: "VaÅ¡e heslo (%{value})" mail_body_lost_password: 'Pro zmÄ›nu vaÅ¡eho hesla kliknÄ›te na následující odkaz:' - mail_subject_register: "Aktivace úÄtu ({{value}})" + mail_subject_register: "Aktivace úÄtu (%{value})" mail_body_register: 'Pro aktivaci vaÅ¡eho úÄtu kliknÄ›te na následující odkaz:' - mail_body_account_information_external: "Pomocí vaÅ¡eho úÄtu {{value}} se můžete pÅ™ihlásit." + mail_body_account_information_external: "Pomocí vaÅ¡eho úÄtu %{value} se můžete pÅ™ihlásit." mail_body_account_information: Informace o vaÅ¡em úÄtu - mail_subject_account_activation_request: "Aktivace {{value}} úÄtu" - mail_body_account_activation_request: "Byl zaregistrován nový uživatel {{value}}. Aktivace jeho úÄtu závisí na vaÅ¡em potvrzení." + mail_subject_account_activation_request: "Aktivace %{value} úÄtu" + mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho úÄtu závisí na vaÅ¡em potvrzení." + mail_subject_reminder: "%{count} úkol(ů) má termín bÄ›hem nÄ›kolik dní (%{days})" + mail_body_reminder: "%{count} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní (%{days}):" + mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána" + mail_body_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána od %{author}." + mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována" + mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}." gui_validation_error: 1 chyba - gui_validation_error_plural: "{{count}} chyb(y)" + gui_validation_error_plural: "%{count} chyb(y)" field_name: Název field_description: Popis @@ -212,6 +245,7 @@ field_priority: Priorita field_fixed_version: Cílová verze field_user: Uživatel + field_principal: Hlavní field_role: Role field_homepage: Domovská stránka field_is_public: VeÅ™ejný @@ -237,6 +271,7 @@ field_attr_lastname: Příjemní (atribut) field_attr_mail: Email (atribut) field_onthefly: Automatické vytváření uživatelů + field_start_date: ZaÄátek field_done_ratio: % Hotovo field_auth_source: AutentifikaÄní mód field_hide_mail: Nezobrazovat můj email @@ -255,10 +290,23 @@ field_redirect_existing_links: PÅ™esmÄ›rovat stvávající odkazy field_estimated_hours: Odhadovaná doba field_column_names: Sloupce + field_time_entries: Zaznamenaný Äas field_time_zone: ÄŒasové pásmo field_searchable: Umožnit vyhledávání field_default_value: Výchozí hodnota field_comments_sorting: Zobrazit komentáře + field_parent_title: RodiÄovská stránka + field_editable: Editovatelný + field_watcher: Sleduje + field_identity_url: OpenID URL + field_content: Obsah + field_group_by: Seskupovat výsledky podle + field_sharing: Sdílení + field_parent_issue: RodiÄovský úkol + field_member_of_group: Skupina pÅ™iÅ™aditele + field_assigned_to_role: Role pÅ™iÅ™aditele + field_text: Textové pole + field_visible: Viditelný setting_app_title: Název aplikace setting_app_subtitle: Podtitulek aplikace @@ -270,6 +318,7 @@ setting_issues_export_limit: Limit pro export úkolů setting_mail_from: Odesílat emaily z adresy setting_bcc_recipients: Příjemci skryté kopie (bcc) + setting_plain_text_mail: pouze prostý text (ne HTML) setting_host_name: Jméno serveru setting_text_formatting: Formátování textu setting_wiki_compression: Komprese historie Wiki @@ -285,12 +334,94 @@ 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 setting_per_page_options: Povolené poÄty řádků na stránce setting_user_format: Formát zobrazení uživatele setting_activity_days_default: Dny zobrazené v Äinnosti projektu setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu + setting_enabled_scm: Povolené SCM + setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků + setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily + setting_mail_handler_api_key: API klÃ­Ä + 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_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 + setting_password_min_length: Minimální délka hesla + setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il + setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt + setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s + setting_issue_done_ratio_issue_field: Použít pole úkolu + setting_issue_done_ratio_issue_status: Použít stav úkolu + setting_start_of_week: ZaÄínat kalendáře + setting_rest_api_enabled: Zapnout službu REST + setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti + setting_default_notification_option: Výchozí nastavení oznámení + setting_commit_logtime_enabled: Povolit zapisování Äasu + setting_commit_logtime_activity_id: Aktivita pro zapsaný Äas + setting_gantt_items_limit: Maximální poÄet položek zobrazený na ganttovÄ› grafu + + permission_add_project: VytvoÅ™it projekt + permission_add_subprojects: VytvoÅ™it podprojekty + permission_edit_project: Úprava projektů + permission_select_project_modules: VýbÄ›r modulů projektu + permission_manage_members: Spravování Älenství + permission_manage_project_activities: Spravovat aktivity projektu + permission_manage_versions: Spravování verzí + permission_manage_categories: Spravování kategorií úkolů + permission_view_issues: Zobrazit úkoly + permission_add_issues: PÅ™idávání úkolů + permission_edit_issues: Upravování úkolů + permission_manage_issue_relations: Spravování vztahů mezi úkoly + permission_add_issue_notes: PÅ™idávání poznámek + permission_edit_issue_notes: Upravování poznámek + permission_edit_own_issue_notes: Upravování vlastních poznámek + permission_move_issues: PÅ™esouvání úkolů + permission_delete_issues: Mazání úkolů + permission_manage_public_queries: Správa veÅ™ejných dotazů + permission_save_queries: Ukládání dotazů + permission_view_gantt: Zobrazené Ganttova diagramu + permission_view_calendar: Prohlížení kalendáře + permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů + permission_add_issue_watchers: PÅ™idání sledujících uživatelů + permission_delete_issue_watchers: Smazat pÅ™ihlížející + permission_log_time: Zaznamenávání stráveného Äasu + permission_view_time_entries: Zobrazení stráveného Äasu + permission_edit_time_entries: Upravování záznamů o stráveném Äasu + permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase + permission_manage_news: Spravování novinek + permission_comment_news: Komentování novinek + permission_manage_documents: Správa dokumentů + permission_view_documents: Prohlížení dokumentů + permission_manage_files: Spravování souborů + permission_view_files: Prohlížení souborů + permission_manage_wiki: Spravování Wiki + permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek + permission_delete_wiki_pages: Mazání stránek na Wiki + permission_view_wiki_pages: Prohlížení Wiki + permission_view_wiki_edits: Prohlížení historie Wiki + permission_edit_wiki_pages: Upravování stránek Wiki + permission_delete_wiki_pages_attachments: Mazání příloh + permission_protect_wiki_pages: ZabezpeÄení Wiki stránek + permission_manage_repository: Spravování repozitáře + permission_browse_repository: Procházení repozitáře + permission_view_changesets: Zobrazování sady zmÄ›n + permission_commit_access: Commit přístup + permission_manage_boards: Správa diskusních fór + permission_view_messages: Prohlížení zpráv + permission_add_messages: Posílání zpráv + permission_edit_messages: Upravování zpráv + permission_edit_own_messages: Upravit vlastní zprávy + permission_delete_messages: Mazání zpráv + permission_delete_own_messages: Smazat vlastní zprávy + permission_export_wiki_pages: Exportovat Wiki stránky + permission_manage_subtasks: Spravovat podúkoly project_module_issue_tracking: Sledování úkolů project_module_time_tracking: Sledování Äasu @@ -300,24 +431,27 @@ project_module_wiki: Wiki project_module_repository: Repozitář project_module_boards: Diskuse + project_module_calendar: Kalendář + project_module_gantt: Gantt label_user: Uživatel label_user_plural: Uživatelé label_user_new: Nový uživatel + label_user_anonymous: Anonymní label_project: Projekt label_project_new: Nový projekt label_project_plural: Projekty label_x_projects: zero: žádné projekty one: 1 projekt - other: "{{count}} projekty(ů)" + other: "%{count} projekty(ů)" label_project_all: VÅ¡echny projekty label_project_latest: Poslední projekty label_issue: Úkol label_issue_new: Nový úkol label_issue_plural: Úkoly label_issue_view_all: VÅ¡echny úkoly - label_issues_by: "Úkoly podle {{value}}" + label_issues_by: "Úkoly podle %{value}" label_issue_added: Úkol pÅ™idán label_issue_updated: Úkol aktualizován label_document: Dokument @@ -350,11 +484,13 @@ label_information_plural: Informace label_please_login: Prosím pÅ™ihlaÅ¡te se label_register: Registrovat + label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID label_password_lost: Zapomenuté heslo label_home: Úvodní label_my_page: Moje stránka label_my_account: Můj úÄet label_my_projects: Moje projekty + label_my_page_block: Bloky na mé stránce label_administration: Administrace label_login: PÅ™ihlášení label_logout: Odhlášení @@ -365,6 +501,7 @@ label_registered_on: Registrován label_activity: Aktivita label_overall_activity: Celková aktivita + label_user_activity: "Aktivita uživatele: %{value}" label_new: Nový label_logged_as: PÅ™ihlášen jako label_environment: ProstÅ™edí @@ -373,6 +510,8 @@ label_auth_source_new: Nový mód autentifikace label_auth_source_plural: Módy autentifikace label_subproject_plural: Podprojekty + label_subproject_new: Nový podprojekt + label_and_its_subprojects: "%{value} a jeho podprojekty" label_min_max_length: Min - Max délka label_list: Seznam label_date: Datum @@ -383,8 +522,8 @@ label_text: Dlouhý text label_attribute: Atribut label_attribute_plural: Atributy - label_download: "{{count}} stažení" - label_download_plural: "{{count}} stažení" + label_download: "%{count} stažení" + label_download_plural: "%{count} stažení" label_no_data: Žádné položky label_change_status: ZmÄ›nit stav label_history: Historie @@ -406,6 +545,7 @@ label_version: Verze label_version_new: Nová verze label_version_plural: Verze + label_close_versions: Zavřít dokonÄené verze label_confirmation: Potvrzení label_export_to: 'Také k dispozici:' label_read: NaÄítá se... @@ -415,17 +555,17 @@ label_closed_issues: uzavÅ™ený label_closed_issues_plural: uzavÅ™ené label_x_open_issues_abbr_on_total: - zero: 0 otevÅ™ených / {{total}} - one: 1 otevÅ™ený / {{total}} - other: "{{count}} otevÅ™ených / {{total}}" + zero: 0 otevÅ™ených / %{total} + one: 1 otevÅ™ený / %{total} + other: "%{count} otevÅ™ených / %{total}" label_x_open_issues_abbr: zero: 0 otevÅ™ených one: 1 otevÅ™ený - other: "{{count}} otevÅ™ených" + other: "%{count} otevÅ™ených" label_x_closed_issues_abbr: zero: 0 uzavÅ™ených one: 1 uzavÅ™ený - other: "{{count}} uzavÅ™ených" + other: "%{count} uzavÅ™ených" label_total: Celkem label_permissions: Práva label_current_status: Aktuální stav @@ -443,7 +583,7 @@ label_months_from: mÄ›síců od label_gantt: Ganttův graf label_internal: Interní - label_last_changes: "posledních {{count}} zmÄ›n" + label_last_changes: "posledních %{count} zmÄ›n" label_change_view_all: Zobrazit vÅ¡echny zmÄ›ny label_personalize_page: PÅ™izpůsobit tuto stránku label_comment: Komentář @@ -451,7 +591,7 @@ label_x_comments: zero: žádné komentáře one: 1 komentář - other: "{{count}} komentářů" + other: "%{count} komentářů" label_comment_add: PÅ™idat komentáře label_comment_added: Komentář pÅ™idán label_comment_delete: Odstranit komentář @@ -464,13 +604,15 @@ label_not_equals: není label_in_less_than: je měší než label_in_more_than: je vÄ›tší než + label_greater_or_equal: '>=' + label_less_or_equal: '<=' label_in: v label_today: dnes label_all_time: vÅ¡e label_yesterday: vÄera label_this_week: tento týden label_last_week: minulý týden - label_last_n_days: "posledních {{count}} dnů" + label_last_n_days: "posledních %{count} dnů" label_this_month: tento mÄ›síc label_last_month: minulý mÄ›síc label_this_year: tento rok @@ -484,25 +626,31 @@ label_repository: Repozitář label_repository_plural: Repozitáře label_browse: Procházet - label_modification: "{{count}} zmÄ›na" - label_modification_plural: "{{count}} zmÄ›n" + label_modification: "%{count} zmÄ›na" + label_modification_plural: "%{count} zmÄ›n" + label_branch: VÄ›tev + label_tag: Tag label_revision: Revize label_revision_plural: Revizí + label_revision_id: "Revize %{value}" label_associated_revisions: Související verze label_added: pÅ™idáno label_modified: zmÄ›nÄ›no + label_copied: zkopírováno + label_renamed: pÅ™ejmenováno label_deleted: odstranÄ›no label_latest_revision: Poslední revize label_latest_revision_plural: Poslední revize label_view_revisions: Zobrazit revize + label_view_all_revisions: Zobrazit vÅ¡echny revize label_max_size: Maximální velikost label_sort_highest: PÅ™esunout na zaÄátek label_sort_higher: PÅ™esunout nahoru label_sort_lower: PÅ™esunout dolů label_sort_lowest: PÅ™esunout na konec label_roadmap: Plán - label_roadmap_due_in: "Zbývá {{value}}" - label_roadmap_overdue: "{{value}} pozdÄ›" + label_roadmap_due_in: "Zbývá %{value}" + label_roadmap_overdue: "%{value} pozdÄ›" label_roadmap_no_issues: Pro tuto verzi nejsou žádné úkoly label_search: Hledat label_result_plural: Výsledky @@ -520,8 +668,9 @@ label_changes_details: Detail vÅ¡ech zmÄ›n label_issue_tracking: Sledování úkolů label_spent_time: Strávený Äas - label_f_hour: "{{value}} hodina" - label_f_hour_plural: "{{value}} hodin" + label_overall_spent_time: Celkem strávený Äas + label_f_hour: "%{value} hodina" + label_f_hour_plural: "%{value} hodin" label_time_tracking: Sledování Äasu label_change_plural: ZmÄ›ny label_statistics: Statistiky @@ -540,8 +689,9 @@ label_relation_new: Nová souvislost label_relation_delete: Odstranit souvislost label_relates_to: související s - label_duplicates: duplicity - label_blocks: bloků + label_duplicates: duplikuje + label_duplicated_by: zduplikován + label_blocks: blokuje label_blocked_by: zablokován label_precedes: pÅ™edchází label_follows: následuje @@ -556,6 +706,8 @@ label_board: Fórum label_board_new: Nové fórum label_board_plural: Fóra + label_board_locked: UzamÄeno + label_board_sticky: Nálepka label_topic_plural: Témata label_message_plural: Zprávy label_message_last: Poslední zpráva @@ -569,12 +721,15 @@ label_date_from: Od label_date_to: Do label_language_based: Podle výchozího jazyku - label_sort_by: "SeÅ™adit podle {{value}}" + label_sort_by: "SeÅ™adit podle %{value}" label_send_test_email: Poslat testovací email - label_feeds_access_key_created_on: "Přístupový klÃ­Ä pro RSS byl vytvoÅ™en pÅ™ed {{value}}" + label_feeds_access_key: Přístupový klÃ­Ä pro RSS + label_missing_feeds_access_key: Postrádá přístupový klÃ­Ä pro RSS + label_feeds_access_key_created_on: "Přístupový klÃ­Ä pro RSS byl vytvoÅ™en pÅ™ed %{value}" label_module_plural: Moduly - label_added_time_by: "PÅ™idáno uživatelem {{author}} pÅ™ed {{age}}" - label_updated_time: "Aktualizováno pÅ™ed {{value}}" + label_added_time_by: "PÅ™idáno uživatelem %{author} pÅ™ed %{age}" + label_updated_time_by: "Aktualizováno uživatelem %{author} pÅ™ed %{age}" + label_updated_time: "Aktualizováno pÅ™ed %{value}" label_jump_to_a_project: Vyberte projekt... label_file_plural: Soubory label_changeset_plural: Changesety @@ -586,11 +741,15 @@ label_search_titles_only: Vyhledávat pouze v názvech label_user_mail_option_all: "Pro vÅ¡echny události vÅ¡ech mých projektů" label_user_mail_option_selected: "Pro vÅ¡echny události vybraných projektů..." + label_user_mail_option_none: "Žádné události" + label_user_mail_option_only_my_events: "Jen pro vÄ›ci co sleduji nebo jsem v nich zapojen" + label_user_mail_option_only_assigned: "Jen pro vÅ¡eci kterým sem pÅ™iÅ™azen" + label_user_mail_option_only_owner: "Jen pro vÄ›ci které vlastním" label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvoÅ™ených zmÄ›nách" label_registration_activation_by_email: aktivace úÄtu emailem label_registration_manual_activation: manuální aktivace úÄtu label_registration_automatic_activation: automatická aktivace úÄtu - label_display_per_page: "{{value}} na stránku" + label_display_per_page: "%{value} na stránku" label_age: VÄ›k label_change_properties: ZmÄ›nit vlastnosti label_general: Obecné @@ -604,6 +763,40 @@ label_preferences: Nastavení label_chronological_order: V chronologickém poÅ™adí label_reverse_chronological_order: V obrácaném chronologickém poÅ™adí + label_planning: Plánování + label_incoming_emails: Příchozí e-maily + label_generate_key: Generovat klÃ­Ä + label_issue_watchers: Sledování + label_example: Příklad + label_display: Zobrazit + label_sort: Řazení + label_ascending: VzestupnÄ› + label_descending: SestupnÄ› + label_date_from_to: Od %{start} do %{end} + label_wiki_content_added: Wiki stránka pÅ™idána + label_wiki_content_updated: Wiki stránka aktualizována + label_group: Skupina + label_group_plural: Skupiny + label_group_new: Nová skupina + label_time_entry_plural: Strávený Äas + label_version_sharing_none: Nesdíleno + label_version_sharing_descendants: S podprojekty + label_version_sharing_hierarchy: S hierarchií projektu + label_version_sharing_tree: Se stromem projektu + label_version_sharing_system: Se vÅ¡emi projekty + label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů + label_copy_source: Zdroj + label_copy_target: Cíl + label_copy_same_as_target: Stejný jako cíl + label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou + label_api_access_key: API přístupový klÃ­Ä + label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API + label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en %{value} + label_profile: Profil + label_subtask_plural: Podúkol + label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu + label_principal_search: "Hledat uživatele nebo skupinu:" + label_user_search: "Hledat uživatele:" button_login: PÅ™ihlásit button_submit: Potvrdit @@ -612,8 +805,10 @@ button_uncheck_all: OdÅ¡rtnout vÅ¡e button_delete: Odstranit button_create: VytvoÅ™it - button_test: Test + button_create_and_continue: VytvoÅ™it a pokraÄovat + button_test: Testovat button_edit: Upravit + button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: %{page_title}" button_add: PÅ™idat button_change: ZmÄ›nit button_apply: Použít @@ -624,6 +819,7 @@ button_list: Vypsat button_view: Zobrazit button_move: PÅ™esunout + button_move_and_follow: PÅ™esunout a následovat button_back: ZpÄ›t button_cancel: Storno button_activate: Aktivovat @@ -635,54 +831,87 @@ button_reply: OdpovÄ›dÄ›t button_archive: Archivovat button_unarchive: Odarchivovat - button_reset: Reset + button_reset: Resetovat button_rename: PÅ™ejmenovat button_change_password: ZmÄ›nit heslo button_copy: Kopírovat + button_copy_and_follow: Kopírovat a následovat button_annotate: Komentovat button_update: Aktualizovat button_configure: Konfigurovat + button_quote: Citovat + button_duplicate: Duplikát + button_show: Zobrazit status_active: aktivní status_registered: registrovaný status_locked: uzamÄený + version_status_open: otevÅ™ený + version_status_locked: uzamÄený + version_status_closed: zavÅ™ený + + field_active: Aktivní + text_select_mail_notifications: Vyberte akci pÅ™i které bude zasláno upozornÄ›ní emailem. text_regexp_info: napÅ™. ^[A-Z0-9]+$ text_min_max_length_info: 0 znamená bez limitu text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a vÅ¡echna související data ? + text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány." text_workflow_edit: Vyberte roli a frontu k editaci průbÄ›hu práce text_are_you_sure: Jste si jisti? + text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? + text_journal_changed: "%{label} zmÄ›nÄ›n z %{old} na %{new}" + text_journal_set_to: "%{label} nastaven na %{value}" + text_journal_deleted: "%{label} smazán (%{old})" + text_journal_added: "%{label} %{value} pÅ™idán" text_tip_issue_begin_day: úkol zaÄíná v tento den text_tip_issue_end_day: úkol konÄí v tento den text_tip_issue_begin_end_day: úkol zaÄíná a konÄí v tento den text_project_identifier_info: 'Jsou povolena malá písmena (a-z), Äísla a pomlÄky.
    Po uložení již není možné identifikátor zmÄ›nit.' - text_caracters_maximum: "{{count}} znaků maximálnÄ›." - text_caracters_minimum: "Musí být alespoň {{count}} znaků dlouhé." - text_length_between: "Délka mezi {{min}} a {{max}} znaky." + text_caracters_maximum: "%{count} znaků maximálnÄ›." + text_caracters_minimum: "Musí být alespoň %{count} znaků dlouhé." + text_length_between: "Délka mezi %{min} a %{max} znaky." text_tracker_no_workflow: Pro tuto frontu není definován žádný průbÄ›h práce text_unallowed_characters: Nepovolené znaky text_comma_separated: Povoleno více hodnot (oddÄ›lÄ›né Äárkou). + text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů - text_issue_added: "Úkol {{id}} byl vytvoÅ™en uživatelem {{author}}." - text_issue_updated: "Úkol {{id}} byl aktualizován uživatelem {{author}}." + text_issue_added: "Úkol %{id} byl vytvoÅ™en uživatelem %{author}." + text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}." text_wiki_destroy_confirmation: Opravdu si pÅ™ejete odstranit tuto Wiki a celý její obsah? - text_issue_category_destroy_question: "NÄ›které úkoly ({{count}}) jsou pÅ™iÅ™azeny k této kategorii. Co s nimi chtete udÄ›lat?" + text_issue_category_destroy_question: "NÄ›které úkoly (%{count}) jsou pÅ™iÅ™azeny k této kategorii. Co s nimi chtete udÄ›lat?" text_issue_category_destroy_assignments: ZruÅ¡it pÅ™iÅ™azení ke kategorii text_issue_category_reassign_to: PÅ™iÅ™adit úkoly do této kategorie text_user_mail_option: "U projektů, které nebyly vybrány, budete dostávat oznámení pouze o vaÅ¡ich Äi o sledovaných položkách (napÅ™. o položkách jejichž jste autor nebo ke kterým jste pÅ™iÅ™azen(a))." text_no_configuration_data: "Role, fronty, stavy úkolů ani průbÄ›h práce nebyly zatím nakonfigurovány.\nVelice doporuÄujeme nahrát výchozí konfiguraci. Po té si můžete vÅ¡e upravit" text_load_default_configuration: Nahrát výchozí konfiguraci - text_status_changed_by_changeset: "Použito v changesetu {{value}}." + text_status_changed_by_changeset: "Použito v changesetu %{value}." + text_time_logged_by_changeset: Aplikováno v changesetu %{value}. text_issues_destroy_confirmation: 'Opravdu si pÅ™ejete odstranit vÅ¡echny zvolené úkoly?' text_select_project_modules: 'Aktivní moduly v tomto projektu:' text_default_administrator_account_changed: Výchozí nastavení administrátorského úÄtu zmÄ›nÄ›no text_file_repository_writable: Povolen zápis do adresáře ukládání souborů + text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets text_rmagick_available: RMagick k dispozici (volitelné) - text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno {{hours}} práce. Co chete udÄ›lat?" + text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udÄ›lat?" text_destroy_time_entries: Odstranit evidované hodiny. text_assign_time_entries_to_project: PÅ™iÅ™adit evidované hodiny projektu text_reassign_time_entries: 'PÅ™eÅ™adit evidované hodiny k tomuto úkolu:' + 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_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' + text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udÄ›lat? + text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky + text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky + text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi + text_own_membership_delete_confirmation: "Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokraÄovat?" + text_zoom_in: PÅ™iblížit + text_zoom_out: Oddálit default_role_manager: Manažer default_role_developer: Vývojář @@ -709,221 +938,9 @@ enumeration_issue_priorities: Priority úkolů enumeration_doc_categories: Kategorie dokumentů enumeration_activities: Aktivity (sledování Äasu) - error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." - label_planning: Plánování - text_subprojects_destroy_warning: "Jeho podprojek(y): {{value}} budou také smazány." - label_and_its_subprojects: "{{value}} a jeho podprojekty" - mail_body_reminder: "{{count}} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní ({{days}}):" - mail_subject_reminder: "{{count}} úkol(ů) má termín bÄ›hem nÄ›kolik dní ({{days}})" - text_user_wrote: "{{value}} napsal:" - label_duplicated_by: duplikováno od - setting_enabled_scm: Povolené SCM - text_enumeration_category_reassign_to: 'PÅ™eÅ™adit je do této:' - text_enumeration_destroy_question: "NÄ›kolik ({{count}}) objektů je pÅ™iÅ™azeno k této hodnotÄ›." - label_incoming_emails: Příchozí e-maily - label_generate_key: Generovat klÃ­Ä - setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily - setting_mail_handler_api_key: API klÃ­Ä - 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." - field_parent_title: RodiÄovská stránka - label_issue_watchers: Sledování - setting_commit_logs_encoding: Kódování zpráv pÅ™i commitu - button_quote: Citovat - setting_sequential_project_identifiers: Generovat sekvenÄní identifikátory projektů - notice_unable_delete_version: Nemohu odstanit verzi - label_renamed: pÅ™ejmenováno - label_copied: zkopírováno - setting_plain_text_mail: pouze prostý text (ne HTML) - permission_view_files: Prohlížení souborů - permission_edit_issues: Upravování úkolů - permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase - permission_manage_public_queries: Správa veÅ™ejných dotazů - permission_add_issues: PÅ™idávání úkolů - permission_log_time: Zaznamenávání stráveného Äasu - permission_view_changesets: Zobrazování sady zmÄ›n - permission_view_time_entries: Zobrazení stráveného Äasu - permission_manage_versions: Spravování verzí - permission_manage_wiki: Spravování Wiki - permission_manage_categories: Spravování kategorií úkolů - permission_protect_wiki_pages: ZabezpeÄení Wiki stránek - permission_comment_news: Komentování novinek - permission_delete_messages: Mazání zpráv - permission_select_project_modules: VýbÄ›r modulů projektu - permission_manage_documents: Správa dokumentů - permission_edit_wiki_pages: Upravování stránek Wiki - permission_add_issue_watchers: PÅ™idání sledujících uživatelů - permission_view_gantt: Zobrazené Ganttova diagramu - permission_move_issues: PÅ™esouvání úkolů - permission_manage_issue_relations: Spravování vztahů mezi úkoly - permission_delete_wiki_pages: Mazání stránek na Wiki - permission_manage_boards: Správa diskusních fór - permission_delete_wiki_pages_attachments: Mazání příloh - permission_view_wiki_edits: Prohlížení historie Wiki - permission_add_messages: Posílání zpráv - permission_view_messages: Prohlížení zpráv - permission_manage_files: Spravování souborů - permission_edit_issue_notes: Upravování poznámek - permission_manage_news: Spravování novinek - permission_view_calendar: Prohlížení kalendáře - permission_manage_members: Spravování Älenství - permission_edit_messages: Upravování zpráv - permission_delete_issues: Mazání úkolů - permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů - permission_manage_repository: Spravování repozitáře - permission_commit_access: Commit přístup - permission_browse_repository: Procházení repozitáře - permission_view_documents: Prohlížení dokumentů - permission_edit_project: Úprava projektů - permission_add_issue_notes: PÅ™idávání poznámek - permission_save_queries: Ukládání dotazů - permission_view_wiki_pages: Prohlížení Wiki - permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek - permission_edit_time_entries: Upravování záznamů o stráveném Äasu - permission_edit_own_issue_notes: Upravování vlastních poznámek - setting_gravatar_enabled: Použít uživatelské ikony Gravatar - label_example: Příklad - 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." - permission_edit_own_messages: Upravit vlastní zprávy - permission_delete_own_messages: Smazat vlastní zprávy - label_user_activity: "Aktivita uživatele: {{value}}" - label_updated_time_by: "Akutualizováno: {{author}} pÅ™ed: {{age}}" - text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka pÅ™esahuje max. limit.' - setting_diff_max_lines_displayed: Maximální poÄet zobrazenách řádků rozdílů - text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets - warning_attachments_not_saved: "{{count}} soubor(ů) nebylo možné uložit." - button_create_and_continue: VytvoÅ™it a pokraÄovat - text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' - label_display: Zobrazit - field_editable: Editovatelný - setting_repository_log_display_limit: Maximální poÄet revizí zobrazených v logu souboru - setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce - field_watcher: Sleduje - setting_openid: Umožnit pÅ™ihlaÅ¡ování a registrace s OpenID - field_identity_url: OpenID URL - label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID - field_content: Obsah - label_descending: SestupnÄ› - label_sort: Řazení - label_ascending: VzestupnÄ› - label_date_from_to: Od {{start}} do {{end}} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Tato stránka má {{descendants}} podstránek a potomků. Co chcete udÄ›lat? - text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi - text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky - text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky - setting_password_min_length: Minimální délka hesla - field_group_by: Seskupovat výsledky podle - mail_subject_wiki_content_updated: "'{{id}}' Wiki stránka byla aktualizována" - label_wiki_content_added: Wiki stránka pÅ™idána - mail_subject_wiki_content_added: "'{{id}}' Wiki stránka byla pÅ™idána" - mail_body_wiki_content_added: "'{{id}}' Wiki stránka byla pÅ™idána od {{author}}." - label_wiki_content_updated: Wiki stránka aktualizována - mail_body_wiki_content_updated: "'{{id}}' Wiki stránka byla aktualizována od {{author}}." - permission_add_project: VytvoÅ™it projekt - setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il - label_view_all_revisions: Zobrazit vÅ¡echny revize - label_tag: Tag - label_branch: Branch - error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. - error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). - text_journal_changed: "{{label}} zmÄ›nÄ›n z {{old}} na {{new}}" - text_journal_set_to: "{{label}} nastaven na {{value}}" - text_journal_deleted: "{{label}} smazán ({{old}})" - label_group_plural: Skupiny - label_group: Skupina - label_group_new: Nová skupina - label_time_entry_plural: Strávený Äas - text_journal_added: "{{label}} {{value}} pÅ™idán" - field_active: Aktivní enumeration_system_activity: Systémová aktivita - permission_delete_issue_watchers: Smazat pÅ™ihlížející - version_status_closed: zavÅ™ený - version_status_locked: uzamÄený - version_status_open: otevÅ™ený - error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en - label_user_anonymous: Anonymní - button_move_and_follow: PÅ™esunout a následovat - setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt - setting_gravatar_default: Výchozí Gravatar - field_sharing: Sdílení - label_version_sharing_hierarchy: S hierarchií projektu - label_version_sharing_system: Se vÅ¡emi projekty - label_version_sharing_descendants: S podprojekty - label_version_sharing_tree: Se stromem projektu - label_version_sharing_none: Nesdíleno - error_can_not_archive_project: Tento projekt nemůže být archivován - button_duplicate: Duplikát - button_copy_and_follow: Kopírovat a následovat - label_copy_source: Zdroj - setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s - setting_issue_done_ratio_issue_status: Použít stav úkolu - error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. - error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) - setting_issue_done_ratio_issue_field: Použít pole úkolu - label_copy_same_as_target: Stejný jako cíl - label_copy_target: Cíl - notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. - error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly - label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů - setting_start_of_week: ZaÄínat kalendáře - permission_view_issues: Zobrazit úkoly - label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou - label_revision_id: Revize {{value}} - label_api_access_key: API přístupový klÃ­Ä - label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en {{value}} - label_feeds_access_key: RSS přístupový klÃ­Ä - notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. - setting_rest_api_enabled: Zapnout službu REST - label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API - label_missing_feeds_access_key: ChybÄ›jící přístupový klÃ­Ä RSS - button_show: Zobrazit - text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). - setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků - permission_add_subprojects: VytvoÅ™it podprojekty - label_subproject_new: Nový podprojekt - text_own_membership_delete_confirmation: |- - Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt. - Opravdu chcete pokraÄovat? - label_close_versions: Zavřít dokonÄené verze - label_board_sticky: Nálepka - label_board_locked: UzamÄeno - permission_export_wiki_pages: Exportovat Wiki stránky - setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti - permission_manage_project_activities: Spravovat aktivity projektu - error_unable_delete_issue_status: Nelze smazat stavy úkolů - label_profile: Profil - permission_manage_subtasks: Spravovat podúkoly - field_parent_issue: RodiÄovský úkol - label_subtask_plural: Podúkol - label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu - error_can_not_delete_custom_field: Nelze smazat volitelné pole - error_unable_to_connect: Nelze se pÅ™ipojit ({{value}}) - error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. - error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. - field_principal: Hlavní - label_my_page_block: Bloky na mé stránce - notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): {{errors}}." - text_zoom_out: Oddálit - text_zoom_in: PÅ™iblížit - notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. - label_overall_spent_time: CelkovÄ› strávený Äas - field_time_entries: Zaznamenaný Äas - project_module_gantt: Gantt - project_module_calendar: Kalendář - button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: {{page_title}}" - text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? - field_text: Textové pole - 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/da.yml.svn-base --- a/config/locales/.svn/text-base/da.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/da.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -35,37 +35,37 @@ half_a_minute: "et halvt minut" less_than_x_seconds: one: "mindre end et sekund" - other: "mindre end {{count}} sekunder" + other: "mindre end %{count} sekunder" x_seconds: one: "et sekund" - other: "{{count}} sekunder" + other: "%{count} sekunder" less_than_x_minutes: one: "mindre end et minut" - other: "mindre end {{count}} minutter" + other: "mindre end %{count} minutter" x_minutes: one: "et minut" - other: "{{count}} minutter" + other: "%{count} minutter" about_x_hours: one: "cirka en time" - other: "cirka {{count}} timer" + other: "cirka %{count} timer" x_days: one: "en dag" - other: "{{count}} dage" + other: "%{count} dage" about_x_months: one: "cirka en mÃ¥ned" - other: "cirka {{count}} mÃ¥neder" + other: "cirka %{count} mÃ¥neder" x_months: one: "en mÃ¥ned" - other: "{{count}} mÃ¥neder" + other: "%{count} mÃ¥neder" about_x_years: one: "cirka et Ã¥r" - other: "cirka {{count}} Ã¥r" + other: "cirka %{count} Ã¥r" over_x_years: one: "mere end et Ã¥r" - other: "mere end {{count}} Ã¥r" + other: "mere end %{count} Ã¥r" almost_x_years: one: "næsten 1 Ã¥r" - other: "næsten {{count}} Ã¥r" + other: "næsten %{count} Ã¥r" number: format: @@ -107,6 +107,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "er ikke i listen" exclusion: "er reserveret" @@ -115,16 +119,16 @@ accepted: "skal accepteres" empty: "mÃ¥ ikke udelades" blank: "skal udfyldes" - too_long: "er for lang (højst {{count}} tegn)" - too_short: "er for kort (mindst {{count}} tegn)" - wrong_length: "har forkert længde (skulle være {{count}} tegn)" + too_long: "er for lang (højst %{count} tegn)" + too_short: "er for kort (mindst %{count} tegn)" + wrong_length: "har forkert længde (skulle være %{count} tegn)" taken: "er allerede anvendt" not_a_number: "er ikke et tal" - greater_than: "skal være større end {{count}}" - greater_than_or_equal_to: "skal være større end eller lig med {{count}}" - equal_to: "skal være lig med {{count}}" - less_than: "skal være mindre end {{count}}" - less_than_or_equal_to: "skal være mindre end eller lig med {{count}}" + greater_than: "skal være større end %{count}" + greater_than_or_equal_to: "skal være større end eller lig med %{count}" + equal_to: "skal være lig med %{count}" + less_than: "skal være mindre end %{count}" + less_than_or_equal_to: "skal være mindre end eller lig med %{count}" odd: "skal være ulige" even: "skal være lige" greater_than_start_date: "skal være senere end startdatoen" @@ -134,8 +138,8 @@ template: header: - one: "En fejl forhindrede {{model}} i at blive gemt" - other: "{{count}} fejl forhindrede denne {{model}} i at blive gemt" + one: "En fejl forhindrede %{model} i at blive gemt" + other: "%{count} fejl forhindrede denne %{model} i at blive gemt" body: "Der var problemer med følgende felter:" actionview_instancetag_blank_option: Vælg venligst @@ -166,29 +170,29 @@ notice_file_not_found: Siden du forsøger at tilgÃ¥ eksisterer ikke eller er blevet fjernet. notice_locking_conflict: Data er opdateret af en anden bruger. notice_not_authorized: Du har ikke adgang til denne side. - notice_email_sent: "En email er sendt til {{value}}" - notice_email_error: "En fejl opstod under afsendelse af email ({{value}})" + notice_email_sent: "En email er sendt til %{value}" + notice_email_error: "En fejl opstod under afsendelse af email (%{value})" notice_feeds_access_key_reseted: Din adgangsnøgle til RSS er nulstillet. - notice_failed_to_save_issues: "Det mislykkedes at gemme {{count}} sage(r) pÃ¥ {{total}} valgt: {{ids}}." + notice_failed_to_save_issues: "Det mislykkedes at gemme %{count} sage(r) pÃ¥ %{total} valgt: %{ids}." notice_no_issue_selected: "Ingen sag er valgt! Vælg venligst hvilke emner du vil rette." notice_account_pending: "Din konto er oprettet, og afventer administrators godkendelse." notice_default_data_loaded: Standardopsætningen er indlæst. - error_can_t_load_default_data: "Standardopsætning kunne ikke indlæses: {{value}}" + error_can_t_load_default_data: "Standardopsætning kunne ikke indlæses: %{value}" error_scm_not_found: "Adgang nægtet og/eller revision blev ikke fundet i det valgte repository." - error_scm_command_failed: "En fejl opstod under forbindelsen til det valgte repository: {{value}}" + error_scm_command_failed: "En fejl opstod under forbindelsen til det valgte repository: %{value}" - mail_subject_lost_password: "Dit {{value}} kodeord" + mail_subject_lost_password: "Dit %{value} kodeord" mail_body_lost_password: 'For at ændre dit kodeord, klik pÃ¥ dette link:' - mail_subject_register: "{{value}} kontoaktivering" + 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." + mail_body_account_information_external: "Du kan bruge din %{value} konto til at logge ind." mail_body_account_information: Din kontoinformation - mail_subject_account_activation_request: "{{value}} kontoaktivering" - mail_body_account_activation_request: "En ny bruger ({{value}}) er registreret. Godkend venligst kontoen:" + mail_subject_account_activation_request: "%{value} kontoaktivering" + mail_body_account_activation_request: "En ny bruger (%{value}) er registreret. Godkend venligst kontoen:" gui_validation_error: 1 fejl - gui_validation_error_plural: "{{count}} fejl" + gui_validation_error_plural: "%{count} fejl" field_name: Navn field_description: Beskrivelse @@ -250,6 +254,7 @@ 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_auth_source: Sikkerhedsmetode field_hide_mail: Skjul min email @@ -318,14 +323,14 @@ label_x_projects: zero: Ingen projekter one: 1 projekt - other: "{{count}} projekter" + other: "%{count} projekter" label_project_all: Alle projekter label_project_latest: Seneste projekter label_issue: Sag label_issue_new: Opret sag label_issue_plural: Sager label_issue_view_all: Vis alle sager - label_issues_by: "Sager fra {{value}}" + label_issues_by: "Sager fra %{value}" label_issue_added: Sagen er oprettet label_issue_updated: Sagen er opdateret label_document: Dokument @@ -370,7 +375,7 @@ label_reported_issues: Rapporterede sager label_assigned_to_me_issues: Sager tildelt mig label_last_login: Sidste login tidspunkt - label_registered_on: Registeret den + label_registered_on: Registreret den label_activity: Aktivitet label_new: Ny label_logged_as: Registreret som @@ -390,8 +395,8 @@ label_text: Lang tekst label_attribute: Attribut label_attribute_plural: Attributter - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Ingen data at vise label_change_status: Ændringsstatus label_history: Historik @@ -422,17 +427,17 @@ label_closed_issues: lukket label_closed_issues_plural: lukkede label_x_open_issues_abbr_on_total: - zero: 0 Ã¥bne / {{total}} - one: 1 Ã¥ben / {{total}} - other: "{{count}} Ã¥bne / {{total}}" + zero: 0 Ã¥bne / %{total} + one: 1 Ã¥ben / %{total} + other: "%{count} Ã¥bne / %{total}" label_x_open_issues_abbr: zero: 0 Ã¥bne one: 1 Ã¥ben - other: "{{count}} Ã¥bne" + other: "%{count} Ã¥bne" label_x_closed_issues_abbr: zero: 0 lukkede one: 1 lukket - other: "{{count}} lukkede" + other: "%{count} lukkede" label_total: Total label_permissions: Rettigheder label_current_status: Nuværende status @@ -441,7 +446,7 @@ label_none: intet label_nobody: ingen label_next: Næste - label_previous: Forrig + label_previous: Forrige label_used_by: Brugt af label_details: Detaljer label_add_note: Tilføj note @@ -450,7 +455,7 @@ label_months_from: mÃ¥neder frem label_gantt: Gantt label_internal: Intern - label_last_changes: "sidste {{count}} ændringer" + label_last_changes: "sidste %{count} ændringer" label_change_view_all: Vis alle ændringer label_personalize_page: Tilret denne side label_comment: Kommentar @@ -458,7 +463,7 @@ label_x_comments: zero: ingen kommentarer one: 1 kommentar - other: "{{count}} kommentarer" + other: "%{count} kommentarer" label_comment_add: Tilføj en kommentar label_comment_added: Kommentaren er tilføjet label_comment_delete: Slet kommentar @@ -477,7 +482,7 @@ label_yesterday: i gÃ¥r label_this_week: denne uge label_last_week: sidste uge - label_last_n_days: "sidste {{count}} dage" + label_last_n_days: "sidste %{count} dage" label_this_month: denne mÃ¥ned label_last_month: sidste mÃ¥ned label_this_year: dette Ã¥r @@ -491,8 +496,8 @@ label_repository: Repository label_repository_plural: Repositories label_browse: Gennemse - label_modification: "{{count}} ændring" - label_modification_plural: "{{count}} ændringer" + label_modification: "%{count} ændring" + label_modification_plural: "%{count} ændringer" label_revision: Revision label_revision_plural: Revisioner label_associated_revisions: Tilnyttede revisioner @@ -509,7 +514,7 @@ label_sort_lowest: Flyt til bunden label_roadmap: Roadmap label_roadmap_due_in: Deadline - label_roadmap_overdue: "{{value}} forsinket" + label_roadmap_overdue: "%{value} forsinket" label_roadmap_no_issues: Ingen sager i denne version label_search: Søg label_result_plural: Resultater @@ -527,8 +532,8 @@ label_changes_details: Detaljer for alle ændringer label_issue_tracking: Sags søgning label_spent_time: Anvendt tid - label_f_hour: "{{value}} time" - label_f_hour_plural: "{{value}} timer" + label_f_hour: "%{value} time" + label_f_hour_plural: "%{value} timer" label_time_tracking: Tidsstyring label_change_plural: Ændringer label_statistics: Statistik @@ -537,7 +542,7 @@ label_view_diff: Vis forskelle label_diff_inline: inline label_diff_side_by_side: side om side - label_options: Optioner + label_options: Formatering label_copy_workflow_from: Kopier arbejdsgang fra label_permissions_report: Godkendelsesrapport label_watched_issues: OvervÃ¥gede sager @@ -547,7 +552,7 @@ label_relation_new: Ny relation label_relation_delete: Slet relation label_relates_to: relaterer til - label_duplicates: kopierer + label_duplicates: duplikater label_blocks: blokerer label_blocked_by: blokeret af label_precedes: kommer før @@ -576,12 +581,12 @@ label_date_from: Fra label_date_to: Til label_language_based: Baseret pÃ¥ brugerens sprog - label_sort_by: "Sortér efter {{value}}" + label_sort_by: "Sortér efter %{value}" label_send_test_email: Send en test email - label_feeds_access_key_created_on: "RSS adgangsnøgle dannet for {{value}} siden" + label_feeds_access_key_created_on: "RSS adgangsnøgle dannet for %{value} siden" label_module_plural: Moduler - label_added_time_by: "Tilføjet af {{author}} for {{age}} siden" - label_updated_time: "Opdateret for {{value}} siden" + label_added_time_by: "Tilføjet af %{author} for %{age} siden" + label_updated_time: "Opdateret for %{value} siden" label_jump_to_a_project: Skift til projekt... label_file_plural: Filer label_changeset_plural: Ændringer @@ -597,7 +602,7 @@ label_registration_activation_by_email: kontoaktivering pÃ¥ email label_registration_manual_activation: manuel kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering - label_display_per_page: "Per side: {{value}}" + label_display_per_page: "Per side: %{value}" label_age: Alder label_change_properties: Ændre indstillinger label_general: Generelt @@ -659,23 +664,23 @@ text_tip_issue_end_day: opaven slutter denne dag text_tip_issue_begin_end_day: opgaven begynder og slutter denne dag text_project_identifier_info: 'SmÃ¥ bogstaver (a-z), numre og bindestreg er tilladt.
    Denne er en unik identifikation for projektet, og kan defor ikke rettes senere.' - text_caracters_maximum: "max {{count}} karakterer." - text_caracters_minimum: "Skal være mindst {{count}} karakterer lang." - text_length_between: "Længde skal være mellem {{min}} og {{max}} karakterer." + text_caracters_maximum: "max %{count} karakterer." + text_caracters_minimum: "Skal være mindst %{count} karakterer lang." + text_length_between: "Længde skal være mellem %{min} og %{max} karakterer." text_tracker_no_workflow: Ingen arbejdsgang defineret for denne type text_unallowed_characters: Ikke-tilladte karakterer text_comma_separated: Adskillige værdier tilladt (adskilt med komma). text_issues_ref_in_commit_messages: Referer og løser sager i commit-beskeder - text_issue_added: "Sag {{id}} er rapporteret af {{author}}." - text_issue_updated: "Sag {{id}} er blevet opdateret af {{author}}." + text_issue_added: "Sag %{id} er rapporteret af %{author}." + text_issue_updated: "Sag %{id} er blevet opdateret af %{author}." text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wiki og dens indhold? - text_issue_category_destroy_question: "Nogle sager ({{count}}) er tildelt denne kategori. Hvad ønsker du at gøre?" + text_issue_category_destroy_question: "Nogle sager (%{count}) er tildelt denne kategori. Hvad ønsker du at gøre?" 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_load_default_configuration: Indlæs standardopsætningen - text_status_changed_by_changeset: "Anvendt i ændring {{value}}." + 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 @@ -711,7 +716,7 @@ label_add_another_file: Tilføj endnu en fil label_chronological_order: I kronologisk rækkefølge setting_activity_days_default: Antal dage der vises under projektaktivitet - text_destroy_time_entries_question: "{{hours}} timer er registreret på denne sag som du er ved at slette. Hvad vil du gøre?" + text_destroy_time_entries_question: "%{hours} timer er registreret på denne sag som du er ved at slette. Hvad vil du gøre?" 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 @@ -725,7 +730,7 @@ setting_default_projects_public: Nye projekter er offentlige som standard error_scm_annotate: "Filen findes ikke, eller kunne ikke annoteres." label_planning: Planlægning - text_subprojects_destroy_warning: "Dets underprojekter(er): {{value}} vil også blive slettet." + text_subprojects_destroy_warning: "Dets underprojekter(er): %{value} vil også blive slettet." permission_edit_issues: Redigér sager setting_diff_max_lines_displayed: Højeste antal forskelle der vises permission_edit_own_issue_notes: Redigér egne noter @@ -748,11 +753,11 @@ setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer setting_plain_text_mail: Emails som almindelig tekst (ingen HTML) field_parent_title: Siden over - text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse." + text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/configuration.yml og genstart applikationen for at aktivere email-afsendelse." permission_protect_wiki_pages: Beskyt wiki sider permission_manage_documents: Administrér dokumenter permission_add_issue_watchers: Tilføj overvågere - warning_attachments_not_saved: "der var {{count}} fil(er), som ikke kunne gemmes." + 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:' permission_select_project_modules: Vælg projektmoduler @@ -760,7 +765,7 @@ permission_delete_messages: Slet beskeder permission_move_issues: Flyt sager permission_edit_wiki_pages: Redigér wiki sider - label_user_activity: "{{value}}'s aktivitet" + label_user_activity: "%{value}'s aktivitet" permission_manage_issue_relations: Administrér sags-relationer label_issue_watchers: Overvågere permission_delete_wiki_pages: Slet wiki sider @@ -771,27 +776,27 @@ permission_manage_boards: Administrér fora permission_delete_wiki_pages_attachments: Slet filer vedhæftet wiki sider permission_view_messages: Se beskeder - text_enumeration_destroy_question: "{{count}} objekter er tildelt denne værdi." + text_enumeration_destroy_question: "%{count} objekter er tildelt denne værdi." permission_manage_files: Administrér filer permission_add_messages: Opret beskeder permission_edit_issue_notes: Redigér noter permission_manage_news: Administrér nyheder text_plugin_assets_writable: Der er skriverettigheder til plugin assets folderen label_display: Vis - label_and_its_subprojects: "{{value}} og dets underprojekter" + 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 - label_updated_time_by: "Opdateret af {{author}} for {{age}} siden" + 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_user_wrote: "{{value}} skrev:" + text_user_wrote: "%{value} skrev:" setting_mail_handler_api_enabled: Aktiver webservice for indkomne emails permission_delete_issues: Slet sager permission_view_documents: Se dokumenter permission_browse_repository: Gennemse repository permission_manage_repository: Administrér repository permission_manage_members: Administrér medlemmer - mail_subject_reminder: "{{count}} sag(er) har deadline i de kommende dage ({{days}})" + mail_subject_reminder: "%{count} sag(er) har deadline i de kommende dage (%{days})" permission_add_issue_notes: Tilføj noter permission_edit_messages: Redigér beskeder permission_view_issue_watchers: Se liste over overvågere @@ -816,26 +821,26 @@ field_identity_url: OpenID URL label_login_with_open_id_option: eller login med OpenID setting_per_page_options: Enheder per side muligheder - mail_body_reminder: "{{count}} sage(er) som er tildelt dig har deadline indenfor de næste {{days}} dage:" + mail_body_reminder: "%{count} sage(er) som er tildelt dig har deadline indenfor de næste %{days} dage:" field_content: Indhold label_descending: Aftagende label_sort: Sortér label_ascending: Tiltagende - label_date_from_to: Fra {{start}} til {{end}} + label_date_from_to: Fra %{start} til %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Denne side har {{descendants}} underside(r) og afledte. Hvad vil du gøre? + text_wiki_page_destroy_question: Denne side har %{descendants} underside(r) og afledte. Hvad vil du gøre? text_wiki_page_reassign_children: Flyt undersider til denne side text_wiki_page_nullify_children: Behold undersider som rod-sider text_wiki_page_destroy_children: Slet undersider ogalle deres afledte sider. setting_password_min_length: Mindste længde på kodeord field_group_by: Gruppér resultater efter - mail_subject_wiki_content_updated: "'{{id}}' wikisiden er blevet opdateret" + mail_subject_wiki_content_updated: "'%{id}' wikisiden er blevet opdateret" label_wiki_content_added: Wiki side tilføjet - mail_subject_wiki_content_added: "'{{id}}' wikisiden er blevet tilføjet" - mail_body_wiki_content_added: The '{{id}}' wikiside er blevet tilføjet af {{author}}. + mail_subject_wiki_content_added: "'%{id}' wikisiden er blevet tilføjet" + mail_body_wiki_content_added: The '%{id}' wikiside er blevet tilføjet af %{author}. label_wiki_content_updated: Wikiside opdateret - mail_body_wiki_content_updated: Wikisiden '{{id}}' er blevet opdateret af {{author}}. + mail_body_wiki_content_updated: Wikisiden '%{id}' er blevet opdateret af %{author}. permission_add_project: Opret projekt setting_new_project_user_role_id: Denne rolle gives til en bruger, som ikke er administrator, og som opretter et projekt label_view_all_revisions: Se alle revisioner @@ -843,14 +848,14 @@ 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"). - text_journal_changed: "{{label}} ændret fra {{old}} til {{new}}" - text_journal_set_to: "{{label}} sat til {{value}}" - text_journal_deleted: "{{label}} slettet ({{old}})" + text_journal_changed: "%{label} ændret fra %{old} til %{new}" + text_journal_set_to: "%{label} sat til %{value}" + text_journal_deleted: "%{label} slettet (%{old})" label_group_plural: Grupper label_group: Grupper label_group_new: Ny gruppe label_time_entry_plural: Anvendt tid - text_journal_added: "{{label}} {{value}} tilføjet" + text_journal_added: "%{label} %{value} tilføjet" field_active: Aktiv enumeration_system_activity: System Aktivitet permission_delete_issue_watchers: Slet overvågere @@ -869,8 +874,8 @@ label_version_sharing_tree: Med projekt træ label_version_sharing_none: Ikke delt error_can_not_archive_project: Dette projekt kan ikke arkiveres - button_duplicate: Kopier - button_copy_and_follow: Kopier og overvåg + 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 @@ -885,9 +890,9 @@ 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_revision_id: Revision {{value}} + label_revision_id: Revision %{value} label_api_access_key: API nøgle - label_api_access_key_created_on: API nøgle genereret {{value}} siden + label_api_access_key_created_on: API nøgle genereret %{value} siden label_feeds_access_key: RSS nøgle notice_api_access_key_reseted: Din API nøgle er nulstillet. setting_rest_api_enabled: Aktiver REST web service @@ -895,14 +900,14 @@ label_missing_feeds_access_key: Mangler en RSS nøgle button_show: Vis text_line_separated: Flere væredier tilladt (en linje for hver værdi). - setting_mail_handler_body_delimiters: Trunker emails efter en af disse linjer + setting_mail_handler_body_delimiters: Trunkér emails efter en af disse linjer permission_add_subprojects: Lav underprojekter label_subproject_new: Nyt underprojekt text_own_membership_delete_confirmation: |- Du er ved at fjerne en eller flere af dine rettigheder, og kan muligvis ikke redigere projektet bagefter. Er du sikker på du ønsker at fortsætte? label_close_versions: Luk færdige versioner - label_board_sticky: Sticky + label_board_sticky: Klistret label_board_locked: Låst permission_export_wiki_pages: Eksporter wiki sider setting_cache_formatted_text: Cache formatteret tekst @@ -913,33 +918,41 @@ field_parent_issue: Hoved opgave label_subtask_plural: Under opgaver label_project_copy_notifications: Send email notifikationer, mens projektet kopieres - 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. + error_can_not_delete_custom_field: Kan ikke slette brugerdefineret felt + error_unable_to_connect: Kan ikke forbinde (%{value}) + error_can_not_remove_role: Denne rolle er i brug og kan ikke slettes. + error_can_not_delete_tracker: Denne type indeholder sager og kan ikke slettes. 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 + 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 - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time + notice_unable_delete_time_entry: Kan ikke slette tidsregistrering. + label_overall_spent_time: Overordnet forbrug af tid + field_time_entries: Log tid 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 + project_module_calendar: Kalender + 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: Assignee's group - field_assigned_to_role: Assignee's role + 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/de.yml.svn-base --- a/config/locales/.svn/text-base/de.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/de.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -35,37 +35,37 @@ half_a_minute: 'eine halbe Minute' less_than_x_seconds: one: 'weniger als 1 Sekunde' - other: 'weniger als {{count}} Sekunden' + other: 'weniger als %{count} Sekunden' x_seconds: one: '1 Sekunde' - other: '{{count}} Sekunden' + other: '%{count} Sekunden' less_than_x_minutes: one: 'weniger als 1 Minute' - other: 'weniger als {{count}} Minuten' + other: 'weniger als %{count} Minuten' x_minutes: one: '1 Minute' - other: '{{count}} Minuten' + other: '%{count} Minuten' about_x_hours: one: 'etwa 1 Stunde' - other: 'etwa {{count}} Stunden' + other: 'etwa %{count} Stunden' x_days: one: '1 Tag' - other: '{{count}} Tagen' + other: '%{count} Tagen' about_x_months: one: 'etwa 1 Monat' - other: 'etwa {{count}} Monaten' + other: 'etwa %{count} Monaten' x_months: one: '1 Monat' - other: '{{count}} Monaten' + other: '%{count} Monaten' about_x_years: one: 'etwa 1 Jahr' - other: 'etwa {{count}} Jahren' + other: 'etwa %{count} Jahren' over_x_years: one: 'mehr als 1 Jahr' - other: 'mehr als {{count}} Jahren' + other: 'mehr als %{count} Jahren' almost_x_years: one: "fast 1 Jahr" - other: "fast {{count}} Jahren" + other: "fast %{count} Jahren" number: # Default format for numbers @@ -111,7 +111,9 @@ activerecord: errors: template: - header: "Dieses {{model}}-Objekt konnte nicht gespeichert werden: {{count}} Fehler." + header: + one: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." + other: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." body: "Bitte überprüfen Sie die folgenden Felder:" messages: @@ -122,17 +124,17 @@ accepted: "muss akzeptiert werden" empty: "muss ausgefüllt werden" blank: "muss ausgefüllt werden" - too_long: "ist zu lang (nicht mehr als {{count}} Zeichen)" - too_short: "ist zu kurz (nicht weniger als {{count}} Zeichen)" - wrong_length: "hat die falsche Länge (muss genau {{count}} Zeichen haben)" + too_long: "ist zu lang (nicht mehr als %{count} Zeichen)" + too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)" + wrong_length: "hat die falsche Länge (muss genau %{count} Zeichen haben)" taken: "ist bereits vergeben" not_a_number: "ist keine Zahl" not_a_date: "is kein gültiges Datum" - greater_than: "muss größer als {{count}} sein" - greater_than_or_equal_to: "muss größer oder gleich {{count}} sein" - equal_to: "muss genau {{count}} sein" - less_than: "muss kleiner als {{count}} sein" - less_than_or_equal_to: "muss kleiner oder gleich {{count}} sein" + greater_than: "muss größer als %{count} sein" + greater_than_or_equal_to: "muss größer oder gleich %{count} sein" + equal_to: "muss genau %{count} sein" + less_than: "muss kleiner als %{count} sein" + less_than_or_equal_to: "muss kleiner oder gleich %{count} sein" odd: "muss ungerade sein" even: "muss gerade sein" greater_than_start_date: "muss größer als Anfangsdatum sein" @@ -169,12 +171,12 @@ notice_file_not_found: Anhang existiert nicht oder ist gelöscht worden. notice_locking_conflict: Datum wurde von einem anderen Benutzer geändert. notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen. - notice_email_sent: "Eine E-Mail wurde an {{value}} gesendet." - notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten ({{value}})." + notice_email_sent: "Eine E-Mail wurde an %{value} gesendet." + notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten (%{value})." notice_feeds_access_key_reseted: Ihr Atom-Zugriffsschlüssel wurde zurückgesetzt. notice_api_access_key_reseted: Ihr API-Zugriffsschlüssel wurde zurückgesetzt. - notice_failed_to_save_issues: "{{count}} von {{total}} ausgewählten Tickets konnte(n) nicht gespeichert werden: {{ids}}." - notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: {{errors}}." + notice_failed_to_save_issues: "%{count} von %{total} ausgewählten Tickets konnte(n) nicht gespeichert werden: %{ids}." + notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: %{errors}." notice_no_issue_selected: "Kein Ticket ausgewählt! Bitte wählen Sie die Tickets, die Sie bearbeiten möchten." notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators." notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen. @@ -182,9 +184,9 @@ notice_unable_delete_time_entry: Der Zeiterfassungseintrag konnte nicht gelöscht werden. notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert. - error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: {{value}}" + error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %{value}" error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv. - error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: {{value}}" + error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %{value}" error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden." error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.' error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte überprüfen Sie die Projekteinstellungen. @@ -198,26 +200,26 @@ error_workflow_copy_source: Bitte wählen Sie einen Quell-Tracker und eine Quell-Rolle. error_workflow_copy_target: Bitte wählen Sie die Ziel-Tracker und -Rollen. error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelöscht werden." - error_unable_to_connect: Fehler beim Verbinden ({{value}}) - warning_attachments_not_saved: "{{count}} Datei(en) konnten nicht gespeichert werden." + error_unable_to_connect: Fehler beim Verbinden (%{value}) + warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden." - mail_subject_lost_password: "Ihr {{value}} Kennwort" + mail_subject_lost_password: "Ihr %{value} Kennwort" mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu ändern:' - mail_subject_register: "{{value}} Kontoaktivierung" + mail_subject_register: "%{value} Kontoaktivierung" mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:' - mail_body_account_information_external: "Sie können sich mit Ihrem Konto {{value}} an anmelden." + mail_body_account_information_external: "Sie können sich mit Ihrem Konto %{value} an anmelden." mail_body_account_information: Ihre Konto-Informationen - mail_subject_account_activation_request: "Antrag auf {{value}} Kontoaktivierung" - mail_body_account_activation_request: "Ein neuer Benutzer ({{value}}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:" - mail_subject_reminder: "{{count}} Tickets müssen in den nächsten {{days}} Tagen abgegeben werden" - mail_body_reminder: "{{count}} Tickets, die Ihnen zugewiesen sind, müssen in den nächsten {{days}} Tagen abgegeben werden:" - mail_subject_wiki_content_added: "Wiki-Seite '{{id}}' hinzugefügt" - mail_body_wiki_content_added: "Die Wiki-Seite '{{id}}' wurde von {{author}} hinzugefügt." - mail_subject_wiki_content_updated: "Wiki-Seite '{{id}}' erfolgreich aktualisiert" - mail_body_wiki_content_updated: "Die Wiki-Seite '{{id}}' wurde von {{author}} aktualisiert." + mail_subject_account_activation_request: "Antrag auf %{value} Kontoaktivierung" + mail_body_account_activation_request: "Ein neuer Benutzer (%{value}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:" + mail_subject_reminder: "%{count} Tickets müssen in den nächsten %{days} Tagen abgegeben werden" + mail_body_reminder: "%{count} Tickets, die Ihnen zugewiesen sind, müssen in den nächsten %{days} Tagen abgegeben werden:" + mail_subject_wiki_content_added: "Wiki-Seite '%{id}' hinzugefügt" + mail_body_wiki_content_added: "Die Wiki-Seite '%{id}' wurde von %{author} hinzugefügt." + mail_subject_wiki_content_updated: "Wiki-Seite '%{id}' erfolgreich aktualisiert" + mail_body_wiki_content_updated: "Die Wiki-Seite '%{id}' wurde von %{author} aktualisiert." gui_validation_error: 1 Fehler - gui_validation_error_plural: "{{count}} Fehler" + gui_validation_error_plural: "%{count} Fehler" field_name: Name field_description: Beschreibung @@ -280,6 +282,7 @@ field_attr_lastname: Name-Attribut field_attr_mail: E-Mail-Attribut field_onthefly: On-the-fly-Benutzererstellung + field_start_date: Beginn field_done_ratio: % erledigt field_auth_source: Authentifizierungs-Modus field_hide_mail: E-Mail-Adresse nicht anzeigen @@ -443,14 +446,14 @@ label_x_projects: zero: keine Projekte one: 1 Projekt - other: "{{count}} Projekte" + other: "%{count} Projekte" label_project_all: Alle Projekte label_project_latest: Neueste Projekte label_issue: Ticket label_issue_new: Neues Ticket label_issue_plural: Tickets label_issue_view_all: Alle Tickets anzeigen - label_issues_by: "Tickets von {{value}}" + label_issues_by: "Tickets von %{value}" label_issue_added: Ticket hinzugefügt label_issue_updated: Ticket aktualisiert label_document: Dokument @@ -500,7 +503,7 @@ label_registered_on: Angemeldet am label_activity: Aktivität label_overall_activity: Aktivität aller Projekte anzeigen - label_user_activity: "Aktivität von {{value}}" + label_user_activity: "Aktivität von %{value}" label_new: Neu label_logged_as: Angemeldet als label_environment: Umgebung @@ -510,7 +513,7 @@ label_auth_source_plural: Authentifizierungs-Arten label_subproject_plural: Unterprojekte label_subproject_new: Neues Unterprojekt - label_and_its_subprojects: "{{value}} und dessen Unterprojekte" + label_and_its_subprojects: "%{value} und dessen Unterprojekte" label_min_max_length: Länge (Min. - Max.) label_list: Liste label_date: Datum @@ -521,8 +524,8 @@ label_text: Langer Text label_attribute: Attribut label_attribute_plural: Attribute - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Nichts anzuzeigen label_change_status: Statuswechsel label_history: Historie @@ -554,17 +557,17 @@ label_closed_issues: geschlossen label_closed_issues_plural: geschlossen label_x_open_issues_abbr_on_total: - zero: 0 offen / {{total}} - one: 1 offen / {{total}} - other: "{{count}} offen / {{total}}" + zero: 0 offen / %{total} + one: 1 offen / %{total} + other: "%{count} offen / %{total}" label_x_open_issues_abbr: zero: 0 offen one: 1 offen - other: "{{count}} offen" + other: "%{count} offen" label_x_closed_issues_abbr: zero: 0 geschlossen one: 1 geschlossen - other: "{{count}} geschlossen" + other: "%{count} geschlossen" label_total: Gesamtzahl label_permissions: Berechtigungen label_current_status: Gegenwärtiger Status @@ -582,7 +585,7 @@ label_months_from: Monate ab label_gantt: Gantt-Diagramm label_internal: Intern - label_last_changes: "{{count}} letzte Änderungen" + label_last_changes: "%{count} letzte Änderungen" label_change_view_all: Alle Änderungen anzeigen label_personalize_page: Diese Seite anpassen label_comment: Kommentar @@ -590,7 +593,7 @@ label_x_comments: zero: keine Kommentare one: 1 Kommentar - other: "{{count}} Kommentare" + other: "%{count} Kommentare" label_comment_add: Kommentar hinzufügen label_comment_added: Kommentar hinzugefügt label_comment_delete: Kommentar löschen @@ -611,7 +614,7 @@ label_yesterday: gestern label_this_week: aktuelle Woche label_last_week: vorige Woche - label_last_n_days: "die letzten {{count}} Tage" + label_last_n_days: "die letzten %{count} Tage" label_this_month: aktueller Monat label_last_month: voriger Monat label_this_year: aktuelles Jahr @@ -625,13 +628,13 @@ label_repository: Projektarchiv label_repository_plural: Projektarchive label_browse: Codebrowser - label_modification: "{{count}} Änderung" - label_modification_plural: "{{count}} Änderungen" + label_modification: "%{count} Änderung" + label_modification_plural: "%{count} Änderungen" label_branch: Zweig label_tag: Markierung label_revision: Revision label_revision_plural: Revisionen - label_revision_id: Revision {{value}} + label_revision_id: Revision %{value} label_associated_revisions: Zugehörige Revisionen label_added: hinzugefügt label_modified: geändert @@ -648,8 +651,8 @@ label_sort_lower: Eins tiefer label_sort_lowest: Ans Ende label_roadmap: Roadmap - label_roadmap_due_in: "Fällig in {{value}}" - label_roadmap_overdue: "{{value}} verspätet" + label_roadmap_due_in: "Fällig in %{value}" + label_roadmap_overdue: "%{value} verspätet" label_roadmap_no_issues: Keine Tickets für diese Version label_search: Suche label_result_plural: Resultate @@ -668,8 +671,8 @@ label_issue_tracking: Tickets label_spent_time: Aufgewendete Zeit label_overall_spent_time: Aufgewendete Zeit aller Projekte anzeigen - label_f_hour: "{{value}} Stunde" - label_f_hour_plural: "{{value}} Stunden" + label_f_hour: "%{value} Stunde" + label_f_hour_plural: "%{value} Stunden" label_time_tracking: Zeiterfassung label_change_plural: Änderungen label_statistics: Statistiken @@ -720,15 +723,15 @@ label_date_from: Von label_date_to: Bis label_language_based: Sprachabhängig - label_sort_by: "Sortiert nach {{value}}" + label_sort_by: "Sortiert nach %{value}" label_send_test_email: Test-E-Mail senden label_feeds_access_key: RSS-Zugriffsschlüssel label_missing_feeds_access_key: Der RSS-Zugriffsschlüssel fehlt. - label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor {{value}} erstellt" + label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor %{value} erstellt" label_module_plural: Module - label_added_time_by: "Von {{author}} vor {{age}} hinzugefügt" - label_updated_time_by: "Von {{author}} vor {{age}} aktualisiert" - label_updated_time: "Vor {{value}} aktualisiert" + label_added_time_by: "Von %{author} vor %{age} hinzugefügt" + label_updated_time_by: "Von %{author} vor %{age} aktualisiert" + label_updated_time: "Vor %{value} aktualisiert" label_jump_to_a_project: Zu einem Projekt springen... label_file_plural: Dateien label_changeset_plural: Changesets @@ -744,7 +747,7 @@ label_registration_activation_by_email: Kontoaktivierung durch E-Mail label_registration_manual_activation: Manuelle Kontoaktivierung label_registration_automatic_activation: Automatische Kontoaktivierung - label_display_per_page: "Pro Seite: {{value}}" + label_display_per_page: "Pro Seite: %{value}" label_age: Geändert vor label_change_properties: Eigenschaften ändern label_general: Allgemein @@ -767,7 +770,7 @@ label_sort: Sortierung label_ascending: Aufsteigend label_descending: Absteigend - label_date_from_to: von {{start}} bis {{end}} + label_date_from_to: von %{start} bis %{end} label_wiki_content_added: Die Wiki-Seite wurde erfolgreich hinzugefügt. label_wiki_content_updated: Die Wiki-Seite wurde erfolgreich aktualisiert. label_group: Gruppe @@ -786,7 +789,7 @@ label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden label_api_access_key: API-Zugriffsschlüssel label_missing_api_access_key: Der API-Zugriffsschlüssel fehlt. - label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor {{value}} erstellt + label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor %{value} erstellt label_profile: Profil label_subtask_plural: Unteraufgaben label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts. @@ -803,7 +806,7 @@ button_create_and_continue: Anlegen und weiter button_test: Testen button_edit: Bearbeiten - button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: {{page_title}}" + button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: %{page_title}" button_add: Hinzufügen button_change: Wechseln button_apply: Anwenden @@ -852,53 +855,54 @@ text_regexp_info: z. B. ^[A-Z0-9]+$ text_min_max_length_info: 0 heißt keine Beschränkung text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt löschen wollen? - text_subprojects_destroy_warning: "Dessen Unterprojekte ({{value}}) werden ebenfalls gelöscht." + text_subprojects_destroy_warning: "Dessen Unterprojekte (%{value}) werden ebenfalls gelöscht." text_workflow_edit: Workflow zum Bearbeiten auswählen text_are_you_sure: Sind Sie sicher? - text_journal_changed: "{{label}} wurde von {{old}} zu {{new}} geändert" - text_journal_set_to: "{{label}} wurde auf {{value}} gesetzt" - text_journal_deleted: "{{label}} {{old}} wurde gelöscht" - text_journal_added: "{{label}} {{value}} wurde hinzugefügt" + text_are_you_sure_with_children: "Lösche Aufgabe und alle Unteraufgaben?" + text_journal_changed: "%{label} wurde von %{old} zu %{new} geändert" + text_journal_set_to: "%{label} wurde auf %{value} gesetzt" + text_journal_deleted: "%{label} %{old} wurde gelöscht" + text_journal_added: "%{label} %{value} wurde hinzugefügt" text_tip_issue_begin_day: Aufgabe, die an diesem Tag beginnt text_tip_issue_end_day: Aufgabe, die an diesem Tag endet text_tip_issue_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern und Bindestriche erlaubt.
    Einmal gespeichert, kann die Kennung nicht mehr geändert werden.' - text_caracters_maximum: "Max. {{count}} Zeichen." - text_caracters_minimum: "Muss mindestens {{count}} Zeichen lang sein." - text_length_between: "Länge zwischen {{min}} und {{max}} Zeichen." + text_caracters_maximum: "Max. %{count} Zeichen." + text_caracters_minimum: "Muss mindestens %{count} Zeichen lang sein." + text_length_between: "Länge zwischen %{min} und %{max} Zeichen." text_tracker_no_workflow: Kein Workflow für diesen Tracker definiert. text_unallowed_characters: Nicht erlaubte Zeichen text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt). text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert). text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen - text_issue_added: "Ticket {{id}} wurde erstellt von {{author}}." - text_issue_updated: "Ticket {{id}} wurde aktualisiert von {{author}}." + text_issue_added: "Ticket %{id} wurde erstellt von %{author}." + text_issue_updated: "Ticket %{id} wurde aktualisiert von %{author}." text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sämtlichem Inhalt löschen möchten? - text_issue_category_destroy_question: "Einige Tickets ({{count}}) sind dieser Kategorie zugeodnet. Was möchten Sie tun?" + text_issue_category_destroy_question: "Einige Tickets (%{count}) sind dieser Kategorie zugeodnet. Was möchten Sie tun?" text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen text_user_mail_option: "Für nicht ausgewählte Projekte werden Sie nur Benachrichtigungen für Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)." text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, können Sie sie abändern." text_load_default_configuration: Standard-Konfiguration laden - text_status_changed_by_changeset: "Status geändert durch Changeset {{value}}." + text_status_changed_by_changeset: "Status geändert durch Changeset %{value}." text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewählten Tickets löschen möchten?' text_select_project_modules: 'Bitte wählen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:' text_default_administrator_account_changed: Administrator-Kennwort geändert text_file_repository_writable: Verzeichnis für Dateien beschreibbar text_plugin_assets_writable: Verzeichnis für Plugin-Assets beschreibbar text_rmagick_available: RMagick verfügbar (optional) - text_destroy_time_entries_question: Es wurden bereits {{hours}} Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? + text_destroy_time_entries_question: Es wurden bereits %{hours} Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? text_destroy_time_entries: Gebuchte Aufwände löschen text_assign_time_entries_to_project: Gebuchte Aufwände dem Projekt zuweisen text_reassign_time_entries: 'Gebuchte Aufwände diesem Ticket zuweisen:' - text_user_wrote: "{{value}} schrieb:" - text_enumeration_destroy_question: "{{count}} Objekt(e) sind diesem Wert zugeordnet." + text_user_wrote: "%{value} schrieb:" + text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet." text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:' - text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu." + text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu." text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.' text_custom_field_possible_values_info: 'Eine Zeile pro Wert' - text_wiki_page_destroy_question: "Diese Seite hat {{descendants}} Unterseite(n). Was möchten Sie tun?" + text_wiki_page_destroy_question: "Diese Seite hat %{descendants} Unterseite(n). Was möchten Sie tun?" text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene text_wiki_page_destroy_children: Lösche alle Unterseiten text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu @@ -933,16 +937,23 @@ enumeration_activities: Aktivitäten (Zeiterfassung) enumeration_system_activity: System-Aktivität - 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_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - field_start_date: Start date - field_visible: Visible - setting_emails_header: Emails header + field_text: Textfeld + label_user_mail_option_only_owner: Nur für Aufgaben die ich angelegt habe + setting_default_notification_option: Standard Benachrichtigungsoptionen + label_user_mail_option_only_my_events: Nur für Aufgaben die ich beobachte oder an welchen ich mitarbeite + label_user_mail_option_only_assigned: Nur für Aufgaben für die ich zuständig bin. + notice_not_authorized_archived_project: Das Projekt wurde archiviert und ist daher nicht nicht verfügbar. + label_user_mail_option_none: keine Ereignisse + field_member_of_group: Zuständigkeitsgruppe + field_assigned_to_role: Zuständigkeitsrolle + field_visible: Sichtbar + setting_emails_header: Emailkopf + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/el.yml.svn-base --- a/config/locales/.svn/text-base/el.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/el.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -35,37 +35,37 @@ half_a_minute: "μισό λεπτό" less_than_x_seconds: one: "λιγότεÏο από 1 δευτεÏόλεπτο" - other: "λιγότεÏο από {{count}} δευτεÏόλεπτα" + other: "λιγότεÏο από %{count} δευτεÏόλεπτα" x_seconds: one: "1 δευτεÏόλεπτο" - other: "{{count}} δευτεÏόλεπτα" + other: "%{count} δευτεÏόλεπτα" less_than_x_minutes: one: "λιγότεÏο από ένα λεπτό" - other: "λιγότεÏο από {{count}} λεπτά" + other: "λιγότεÏο από %{count} λεπτά" x_minutes: one: "1 λεπτό" - other: "{{count}} λεπτά" + other: "%{count} λεπτά" about_x_hours: one: "πεÏίπου 1 ÏŽÏα" - other: "πεÏίπου {{count}} ÏŽÏες" + other: "πεÏίπου %{count} ÏŽÏες" x_days: one: "1 ημέÏα" - other: "{{count}} ημέÏες" + other: "%{count} ημέÏες" about_x_months: one: "πεÏίπου 1 μήνα" - other: "πεÏίπου {{count}} μήνες" + other: "πεÏίπου %{count} μήνες" x_months: one: "1 μήνα" - other: "{{count}} μήνες" + other: "%{count} μήνες" about_x_years: one: "πεÏίπου 1 χÏόνο" - other: "πεÏίπου {{count}} χÏόνια" + other: "πεÏίπου %{count} χÏόνια" over_x_years: one: "πάνω από 1 χÏόνο" - other: "πάνω από {{count}} χÏόνια" + other: "πάνω από %{count} χÏόνια" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -95,6 +95,10 @@ 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: "έχει κατοχυÏωθεί" @@ -103,17 +107,17 @@ accepted: "Ï€Ïέπει να γίνει αποδοχή" empty: "δε μποÏεί να είναι άδειο" blank: "δε μποÏεί να είναι κενό" - too_long: "έχει πολλοÏÏ‚ (μέγ.επιτÏ. {{count}} χαÏακτήÏες)" - too_short: "έχει λίγους (ελάχ.επιτÏ. {{count}} χαÏακτήÏες)" - wrong_length: "δεν είναι σωστός ο αÏιθμός χαÏακτήÏων (Ï€Ïέπει να έχει {{count}} χαÏακτήÏες)" + 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}}" + 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: "Ï€Ïέπει να είναι αÏγότεÏα από την ημεÏομηνία έναÏξης" @@ -150,42 +154,42 @@ notice_file_not_found: Η σελίδα που ζητήσατε δεν υπάÏχει ή έχει αφαιÏεθεί. notice_locking_conflict: Τα δεδομένα έχουν ενημεÏωθεί από άλλο χÏήστη. notice_not_authorized: Δεν έχετε δικαίωμα Ï€Ïόσβασης σε αυτή τη σελίδα. - notice_email_sent: "Ένα μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου εστάλη στο {{value}}" - notice_email_error: "Σφάλμα κατά την αποστολή του μηνÏματος στο ({{value}})" + notice_email_sent: "Ένα μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου εστάλη στο %{value}" + notice_email_error: "Σφάλμα κατά την αποστολή του μηνÏματος στο (%{value})" notice_feeds_access_key_reseted: Έγινε επαναφοÏά στο κλειδί Ï€Ïόσβασης RSS. - notice_failed_to_save_issues: "Αποτυχία αποθήκευσης {{count}} θεμα(των) από τα {{total}} επιλεγμένα: {{ids}}." + notice_failed_to_save_issues: "Αποτυχία αποθήκευσης %{count} θεμα(των) από τα %{total} επιλεγμένα: %{ids}." notice_no_issue_selected: "Κανένα θέμα δεν είναι επιλεγμένο! ΠαÏακαλοÏμε, ελέγξτε τα θέματα που θέλετε να επεξεÏγαστείτε." notice_account_pending: "Ο λογαÏιασμός σας έχει δημιουÏγηθεί και είναι σε στάδιο έγκÏισης από τον διαχειÏιστή." notice_default_data_loaded: Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις φοÏτώθηκαν επιτυχώς. notice_unable_delete_version: ΑδÏνατον να διαγÏαφεί η έκδοση. - error_can_t_load_default_data: "Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις δεν μπόÏεσαν να φοÏτωθοÏν:: {{value}}" + error_can_t_load_default_data: "Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις δεν μπόÏεσαν να φοÏτωθοÏν:: %{value}" error_scm_not_found: "Η εγγÏαφή ή η αναθεώÏηση δεν βÏέθηκε στο αποθετήÏιο." - error_scm_command_failed: "ΠαÏουσιάστηκε σφάλμα κατά την Ï€Ïοσπάθεια Ï€Ïόσβασης στο αποθετήÏιο: {{value}}" + error_scm_command_failed: "ΠαÏουσιάστηκε σφάλμα κατά την Ï€Ïοσπάθεια Ï€Ïόσβασης στο αποθετήÏιο: %{value}" error_scm_annotate: "Η καταχώÏιση δεν υπάÏχει ή δεν μποÏεί να σχολιαστεί." error_issue_not_found_in_project: 'Το θέμα δεν βÏέθηκε ή δεν ανήκει σε αυτό το έÏγο' error_no_tracker_in_project: 'Δεν υπάÏχει ανιχνευτής για αυτό το έÏγο. ΠαÏακαλώ ελέγξτε τις Ïυθμίσεις του έÏγου.' error_no_default_issue_status: 'Δεν έχει οÏιστεί η Ï€Ïοεπιλογή κατάστασης θεμάτων. ΠαÏακαλώ ελέγξτε τις Ïυθμίσεις σας (Μεταβείτε στην "ΔιαχείÏιση -> Κατάσταση θεμάτων").' - warning_attachments_not_saved: "{{count}} αÏχείο(α) δε μποÏοÏν να αποθηκευτοÏν." + warning_attachments_not_saved: "%{count} αÏχείο(α) δε μποÏοÏν να αποθηκευτοÏν." - mail_subject_lost_password: "Ο κωδικός σας {{value}}" + mail_subject_lost_password: "Ο κωδικός σας %{value}" mail_body_lost_password: 'Για να αλλάξετε τον κωδικό Ï€Ïόσβασης, πατήστε τον ακόλουθο σÏνδεσμο:' - mail_subject_register: "ΕνεÏγοποίηση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï‡Ïήστη {{value}} " + mail_subject_register: "ΕνεÏγοποίηση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï‡Ïήστη %{value} " mail_body_register: 'Για να ενεÏγοποιήσετε το λογαÏιασμό σας, επιλέξτε τον ακόλουθο σÏνδεσμο:' - mail_body_account_information_external: "ΜποÏείτε να χÏησιμοποιήσετε τον λογαÏιασμό {{value}} για να συνδεθείτε." + 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: "'Ï€Ïοστέθηκε η σελίδα wiki {{id}}' " - mail_body_wiki_content_added: "Η σελίδα wiki '{{id}}' Ï€Ïοστέθηκε από τον {{author}}." - mail_subject_wiki_content_updated: "'ενημεÏώθηκε η σελίδα wiki {{id}}' " - mail_body_wiki_content_updated: "Η σελίδα wiki '{{id}}' ενημεÏώθηκε από τον {{author}}." + 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: "'Ï€Ïοστέθηκε η σελίδα wiki %{id}' " + mail_body_wiki_content_added: "Η σελίδα wiki '%{id}' Ï€Ïοστέθηκε από τον %{author}." + mail_subject_wiki_content_updated: "'ενημεÏώθηκε η σελίδα wiki %{id}' " + mail_body_wiki_content_updated: "Η σελίδα wiki '%{id}' ενημεÏώθηκε από τον %{author}." gui_validation_error: 1 σφάλμα - gui_validation_error_plural: "{{count}} σφάλματα" + gui_validation_error_plural: "%{count} σφάλματα" field_name: Όνομα field_description: ΠεÏιγÏαφή @@ -247,6 +251,7 @@ field_attr_lastname: Ιδιότητα επωνÏμου field_attr_mail: Ιδιότητα email field_onthefly: Άμεση δημιουÏγία χÏήστη + field_start_date: Εκκίνηση field_done_ratio: % επιτεÏχθη field_auth_source: ΤÏόπος πιστοποίησης field_hide_mail: ΑπόκÏυψη διεÏθυνσης email @@ -389,14 +394,14 @@ label_x_projects: zero: κανένα έÏγο one: 1 έÏγο - other: "{{count}} έÏγα" + 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_issues_by: "Θέματα του %{value}" label_issue_added: Το θέμα Ï€Ïοστέθηκε label_issue_updated: Το θέμα ενημεÏώθηκε label_document: ΈγγÏαφο @@ -445,7 +450,7 @@ label_registered_on: ΕγγÏάφηκε την label_activity: ΔÏαστηÏιότητα label_overall_activity: Συνολική δÏαστηÏιότητα - label_user_activity: "δÏαστηÏιότητα του {{value}}" + label_user_activity: "δÏαστηÏιότητα του %{value}" label_new: Îέο label_logged_as: ΣÏνδεδεμένος ως label_environment: ΠεÏιβάλλον @@ -454,7 +459,7 @@ label_auth_source_new: Îέος Ï„Ïόπος πιστοποίησης label_auth_source_plural: ΤÏόποι πιστοποίησης label_subproject_plural: ΕπιμέÏους έÏγα - label_and_its_subprojects: "{{value}} και τα επιμέÏους έÏγα του" + label_and_its_subprojects: "%{value} και τα επιμέÏους έÏγα του" label_min_max_length: Ελάχ. - Μέγ. μήκος label_list: Λίστα label_date: ΗμεÏομηνία @@ -465,8 +470,8 @@ label_text: ΜακÏοσκελές κείμενο label_attribute: Ιδιότητα label_attribute_plural: Ιδιότητες - label_download: "{{count}} ΜεταφόÏτωση" - label_download_plural: "{{count}} ΜεταφοÏτώσεις" + label_download: "%{count} ΜεταφόÏτωση" + label_download_plural: "%{count} ΜεταφοÏτώσεις" label_no_data: Δεν υπάÏχουν δεδομένα label_change_status: Αλλαγή κατάστασης label_history: ΙστοÏικό @@ -497,17 +502,17 @@ label_closed_issues: Κλειστό label_closed_issues_plural: Κλειστά label_x_open_issues_abbr_on_total: - zero: 0 ανοικτά / {{total}} - one: 1 ανοικτό / {{total}} - other: "{{count}} ανοικτά / {{total}}" + zero: 0 ανοικτά / %{total} + one: 1 ανοικτό / %{total} + other: "%{count} ανοικτά / %{total}" label_x_open_issues_abbr: zero: 0 ανοικτά one: 1 ανοικτό - other: "{{count}} ανοικτά" + other: "%{count} ανοικτά" label_x_closed_issues_abbr: zero: 0 κλειστά one: 1 κλειστό - other: "{{count}} κλειστά" + other: "%{count} κλειστά" label_total: ΣÏνολο label_permissions: Άδειες label_current_status: ΤÏέχουσα κατάσταση @@ -525,7 +530,7 @@ label_months_from: μηνών από label_gantt: Gantt label_internal: ΕσωτεÏικό - label_last_changes: "Τελευταίες {{count}} αλλαγές" + label_last_changes: "Τελευταίες %{count} αλλαγές" label_change_view_all: ΠÏοβολή όλων των αλλαγών label_personalize_page: ΠÏοσαÏμογή σελίδας label_comment: Σχόλιο @@ -533,7 +538,7 @@ label_x_comments: zero: δεν υπάÏχουν σχόλια one: 1 σχόλιο - other: "{{count}} σχόλια" + other: "%{count} σχόλια" label_comment_add: ΠÏοσθήκη σχολίου label_comment_added: Τα σχόλια Ï€Ïοστέθηκαν label_comment_delete: ΔιαγÏαφή σχολίων @@ -554,7 +559,7 @@ label_yesterday: χθες 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: αυτό το χÏόνο @@ -568,8 +573,8 @@ label_repository: ΑποθετήÏιο label_repository_plural: ΑποθετήÏια label_browse: Πλοήγηση - label_modification: "{{count}} Ï„Ïοποποίηση" - label_modification_plural: "{{count}} Ï„Ïοποποιήσεις" + label_modification: "%{count} Ï„Ïοποποίηση" + label_modification_plural: "%{count} Ï„Ïοποποιήσεις" label_branch: Branch label_tag: Tag label_revision: ΑναθεώÏηση @@ -590,8 +595,8 @@ label_sort_lower: Μετακίνηση Ï€Ïος τα κάτω label_sort_lowest: Μετακίνηση στο κατώτατο μέÏος label_roadmap: ΧάÏτης ποÏείας - label_roadmap_due_in: "ΠÏοθεσμία σε {{value}}" - label_roadmap_overdue: "{{value}} καθυστεÏημένο" + label_roadmap_due_in: "ΠÏοθεσμία σε %{value}" + label_roadmap_overdue: "%{value} καθυστεÏημένο" label_roadmap_no_issues: Δεν υπάÏχουν θέματα για αυτή την έκδοση label_search: Αναζήτηση label_result_plural: Αποτελέσματα @@ -609,8 +614,8 @@ label_changes_details: ΛεπτομέÏειες όλων των αλλαγών label_issue_tracking: Ανίχνευση θεμάτων label_spent_time: Δαπανημένος χÏόνος - label_f_hour: "{{value}} ÏŽÏα" - label_f_hour_plural: "{{value}} ÏŽÏες" + label_f_hour: "%{value} ÏŽÏα" + label_f_hour_plural: "%{value} ÏŽÏες" label_time_tracking: Ανίχνευση χÏόνου label_change_plural: Αλλαγές label_statistics: Στατιστικά @@ -659,13 +664,13 @@ label_date_from: Από label_date_to: Έως label_language_based: Με βάση τη γλώσσα του χÏήστη - label_sort_by: "Ταξινόμηση ανά {{value}}" + label_sort_by: "Ταξινόμηση ανά %{value}" label_send_test_email: Αποστολή Î´Î¿ÎºÎ¹Î¼Î±ÏƒÏ„Î¹ÎºÎ¿Ï email - label_feeds_access_key_created_on: "το κλειδί Ï€Ïόσβασης RSS δημιουÏγήθηκε Ï€Ïιν από {{value}}" + 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_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 @@ -681,7 +686,7 @@ label_registration_activation_by_email: ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼Îµ email label_registration_manual_activation: χειÏοκίνητη ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï label_registration_automatic_activation: αυτόματη ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï - label_display_per_page: "Ανά σελίδα: {{value}}" + label_display_per_page: "Ανά σελίδα: %{value}" label_age: Ηλικία label_change_properties: Αλλαγή ιδιοτήτων label_general: Γενικά @@ -704,7 +709,7 @@ label_sort: Ταξινόμηση label_ascending: ΑÏξουσα label_descending: Φθίνουσα - label_date_from_to: Από {{start}} έως {{end}} + label_date_from_to: Από %{start} έως %{end} label_wiki_content_added: Η σελίδα Wiki Ï€Ïοστέθηκε label_wiki_content_updated: Η σελίδα Wiki ενημεÏώθηκε @@ -756,48 +761,48 @@ text_regexp_info: eg. ^[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_tip_issue_begin_day: καθήκοντα που ξεκινάνε σήμεÏα text_tip_issue_end_day: καθήκοντα που τελειώνουν σήμεÏα text_tip_issue_begin_end_day: καθήκοντα που ξεκινάνε και τελειώνουν σήμεÏα text_project_identifier_info: 'ΕπιτÏέπονται μόνο μικÏά πεζά γÏάμματα (a-z), αÏιθμοί και παÏλες.
    Μετά την αποθήκευση, το αναγνωÏιστικό δεν μποÏεί να αλλάξει.' - text_caracters_maximum: "μέγιστος αÏιθμός {{count}} χαÏακτήÏες." - text_caracters_minimum: "ΠÏέπει να πεÏιέχει τουλάχιστον {{count}} χαÏακτήÏες." - text_length_between: "Μήκος Î¼ÎµÏ„Î±Î¾Ï {{min}} και {{max}} χαÏακτήÏες." + text_caracters_maximum: "μέγιστος αÏιθμός %{count} χαÏακτήÏες." + text_caracters_minimum: "ΠÏέπει να πεÏιέχει τουλάχιστον %{count} χαÏακτήÏες." + text_length_between: "Μήκος Î¼ÎµÏ„Î±Î¾Ï %{min} και %{max} χαÏακτήÏες." text_tracker_no_workflow: Δεν έχει οÏιστεί Ïοή εÏγασίας για αυτό τον ανιχνευτή text_unallowed_characters: Μη επιτÏεπόμενοι χαÏακτήÏες text_comma_separated: ΕπιτÏέπονται πολλαπλές τιμές (χωÏισμένες με κόμμα). text_issues_ref_in_commit_messages: ΑναφοÏά και καθοÏισμός θεμάτων σε μηνÏματα commit - text_issue_added: "Το θέμα {{id}} παÏουσιάστηκε από τον {{author}}." - text_issue_updated: "Το θέμα {{id}} ενημεÏώθηκε από τον {{author}}." + text_issue_added: "Το θέμα %{id} παÏουσιάστηκε από τον %{author}." + text_issue_updated: "Το θέμα %{id} ενημεÏώθηκε από τον %{author}." text_wiki_destroy_confirmation: Είστε σίγουÏοι ότι θέλετε να διαγÏάψετε αυτό το wiki και όλο το πεÏιεχόμενο του ; - text_issue_category_destroy_question: "Κάποια θέματα ({{count}}) έχουν εκχωÏηθεί σε αυτή την κατηγοÏία. Τι θέλετε να κάνετε ;" + 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: "ΕφαÏμόστηκε στο changeset {{value}}." + text_status_changed_by_changeset: "ΕφαÏμόστηκε στο changeset %{value}." text_issues_destroy_confirmation: 'Είστε σίγουÏος ότι θέλετε να διαγÏάψετε το επιλεγμένο θέμα(τα);' text_select_project_modules: 'Επιλέξτε ποιες μονάδες θα ενεÏγοποιήσετε για αυτό το έÏγο:' text_default_administrator_account_changed: Ο Ï€ÏοκαθοÏισμένος λογαÏιασμός του διαχειÏιστή άλλαξε text_file_repository_writable: ΕγγÏάψιμος κατάλογος συνημμένων text_plugin_assets_writable: ΕγγÏάψιμος κατάλογος plugin assets text_rmagick_available: Διαθέσιμο RMagick (Ï€ÏοαιÏετικό) - text_destroy_time_entries_question: "{{hours}} δαπανήθηκαν σχετικά με τα θέματα που Ï€Ïόκειται να διαγÏάψετε. Τι θέλετε να κάνετε ;" + 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_user_wrote: "%{value} έγÏαψε:" + text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή." text_enumeration_category_reassign_to: 'ΕπανεκχώÏηση τους στην παÏοÏσα αξία:' - text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/email.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." + text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/configuration.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." text_repository_usernames_mapping: "Επιλέξτε ή ενημεÏώστε τον χÏήστη Redmine που αντιστοιχεί σε κάθε όνομα χÏήστη στο ιστοÏικό του αποθετηÏίου.\nΧÏήστες με το ίδιο όνομα χÏήστη ή email στο Redmine και στο αποθετηÏίο αντιστοιχίζονται αυτόματα." text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπεÏβαίνει το μέγιστο μέγεθος που μποÏεί να Ï€Ïοβληθεί.' text_custom_field_possible_values_info: 'Μία γÏαμμή για κάθε τιμή' - text_wiki_page_destroy_question: "Αυτή η σελίδα έχει {{descendants}} σελίδες τέκνων και απογόνων. Τι θέλετε να κάνετε ;" + text_wiki_page_destroy_question: "Αυτή η σελίδα έχει %{descendants} σελίδες τέκνων και απογόνων. Τι θέλετε να κάνετε ;" text_wiki_page_nullify_children: "ΔιατηÏήστε τις σελίδες τέκνων ως σελίδες root" text_wiki_page_destroy_children: "ΔιαγÏάψτε όλες τις σελίδες τέκνων και των απογόνων τους" text_wiki_page_reassign_children: "ΕπανεκχώÏιση των σελίδων τέκνων στη γονική σελίδα" @@ -827,14 +832,14 @@ enumeration_issue_priorities: ΠÏοτεÏαιότητα θέματος enumeration_doc_categories: ΚατηγοÏία εγγÏάφων enumeration_activities: ΔÏαστηÏιότητες (κατακεÏματισμός χÏόνου) - text_journal_changed: "{{label}} άλλαξε από {{old}} σε {{new}}" - text_journal_set_to: "{{label}} οÏίζεται σε {{value}}" - text_journal_deleted: "{{label}} διαγÏάφηκε ({{old}})" + text_journal_changed: "%{label} άλλαξε από %{old} σε %{new}" + text_journal_set_to: "%{label} οÏίζεται σε %{value}" + text_journal_deleted: "%{label} διαγÏάφηκε (%{old})" label_group_plural: Ομάδες label_group: Ομάδα label_group_new: Îέα ομάδα label_time_entry_plural: ΧÏόνος που δαπανήθηκε - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -869,9 +874,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -898,12 +903,12 @@ 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_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}}." + 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. @@ -911,7 +916,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -922,8 +927,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/en-GB.yml.svn-base --- a/config/locales/.svn/text-base/en-GB.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/en-GB.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,933 +1,946 @@ -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: - 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/email.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 +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:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/en.yml.svn-base --- a/config/locales/.svn/text-base/en.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/en.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -33,37 +33,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: # Default format for numbers @@ -95,6 +95,10 @@ 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" @@ -103,17 +107,17 @@ 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)" + 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}}" + 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" @@ -151,22 +155,23 @@ notice_locking_conflict: Data has been updated by another user. notice_not_authorized: You are not authorized 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_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_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_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_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.' @@ -180,26 +185,26 @@ 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." + 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_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_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_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}}." + 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" + gui_validation_error_plural: "%{count} errors" field_name: Name field_description: Description @@ -298,6 +303,7 @@ 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 @@ -354,6 +360,9 @@ 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 @@ -432,14 +441,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + 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_issues_by: "Issues by %{value}" label_issue_added: Issue added label_issue_updated: Issue updated label_document: Document @@ -489,7 +498,7 @@ label_registered_on: Registered on label_activity: Activity label_overall_activity: Overall activity - label_user_activity: "{{value}}'s activity" + label_user_activity: "%{value}'s activity" label_new: New label_logged_as: Logged in as label_environment: Environment @@ -499,7 +508,7 @@ label_auth_source_plural: Authentication modes label_subproject_plural: Subprojects label_subproject_new: New subproject - label_and_its_subprojects: "{{value}} and its subprojects" + label_and_its_subprojects: "%{value} and its subprojects" label_min_max_length: Min - Max length label_list: List label_date: Date @@ -510,8 +519,8 @@ label_text: Long text label_attribute: Attribute label_attribute_plural: Attributes - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: No data to display label_change_status: Change status label_history: History @@ -543,17 +552,17 @@ 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}}" + 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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Total label_permissions: Permissions label_current_status: Current status @@ -571,7 +580,7 @@ label_months_from: months from label_gantt: Gantt label_internal: Internal - label_last_changes: "last {{count}} changes" + label_last_changes: "last %{count} changes" label_change_view_all: View all changes label_personalize_page: Personalize this page label_comment: Comment @@ -579,13 +588,14 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + 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 @@ -600,7 +610,7 @@ label_yesterday: yesterday label_this_week: this week label_last_week: last week - label_last_n_days: "last {{count}} days" + label_last_n_days: "last %{count} days" label_this_month: this month label_last_month: last month label_this_year: this year @@ -614,13 +624,13 @@ label_repository: Repository label_repository_plural: Repositories label_browse: Browse - label_modification: "{{count}} change" - label_modification_plural: "{{count}} changes" + 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_revision_id: "Revision %{value}" label_associated_revisions: Associated revisions label_added: added label_modified: modified @@ -637,8 +647,8 @@ 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_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 @@ -657,8 +667,8 @@ 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_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" label_time_tracking: Time tracking label_change_plural: Changes label_statistics: Statistics @@ -709,15 +719,15 @@ label_date_from: From label_date_to: To label_language_based: Based on user's language - label_sort_by: "Sort by {{value}}" + 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_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_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 @@ -737,7 +747,7 @@ 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_display_per_page: "Per page: %{value}" label_age: Age label_change_properties: Change properties label_general: General @@ -760,7 +770,7 @@ label_sort: Sort label_ascending: Ascending label_descending: Descending - label_date_from_to: From {{start}} to {{end}} + 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 @@ -779,7 +789,7 @@ 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_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 @@ -796,7 +806,7 @@ button_create_and_continue: Create and continue button_test: Test button_edit: Edit - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" button_add: Add button_change: Change button_apply: Apply @@ -845,60 +855,63 @@ 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_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_set_to: "{{label}} set to {{value}}" - text_journal_deleted: "{{label}} deleted ({{old}})" - text_journal_added: "{{label}} {{value}} added" + 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: 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_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_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_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_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_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_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_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/email.yml and restart the application to enable them." + 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_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 diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/es.yml.svn-base --- a/config/locales/.svn/text-base/es.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/es.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -66,44 +66,44 @@ half_a_minute: "medio minuto" less_than_x_seconds: one: "menos de 1 segundo" - other: "menos de {{count}} segundos" + other: "menos de %{count} segundos" x_seconds: one: "1 segundo" - other: "{{count}} segundos" + other: "%{count} segundos" less_than_x_minutes: one: "menos de 1 minuto" - other: "menos de {{count}} minutos" + other: "menos de %{count} minutos" x_minutes: one: "1 minuto" - other: "{{count}} minutos" + other: "%{count} minutos" about_x_hours: one: "alrededor de 1 hora" - other: "alrededor de {{count}} horas" + other: "alrededor de %{count} horas" x_days: one: "1 día" - other: "{{count}} días" + other: "%{count} días" about_x_months: one: "alrededor de 1 mes" - other: "alrededor de {{count}} meses" + other: "alrededor de %{count} meses" x_months: one: "1 mes" - other: "{{count}} meses" + other: "%{count} meses" about_x_years: one: "alrededor de 1 año" - other: "alrededor de {{count}} años" + other: "alrededor de %{count} años" over_x_years: one: "más de 1 año" - other: "más de {{count}} años" + other: "más de %{count} años" almost_x_years: one: "casi 1 año" - other: "casi {{count}} años" + other: "casi %{count} años" activerecord: errors: template: header: - one: "no se pudo guardar este {{model}} porque se encontró 1 error" - other: "no se pudo guardar este {{model}} porque se encontraron {{count}} errores" + one: "no se pudo guardar este %{model} porque se encontró 1 error" + other: "no se pudo guardar este %{model} porque se encontraron %{count} errores" # The variable :count is also available body: "Se encontraron problemas con los siguientes campos:" @@ -117,16 +117,16 @@ accepted: "debe ser aceptado" empty: "no puede estar vacío" blank: "no puede estar en blanco" - too_long: "es demasiado largo ({{count}} caracteres máximo)" - too_short: "es demasiado corto ({{count}} caracteres mínimo)" - wrong_length: "no tiene la longitud correcta ({{count}} caracteres exactos)" + too_long: "es demasiado largo (%{count} caracteres máximo)" + too_short: "es demasiado corto (%{count} caracteres mínimo)" + wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" taken: "ya está en uso" not_a_number: "no es un número" - greater_than: "debe ser mayor que {{count}}" - greater_than_or_equal_to: "debe ser mayor que o igual a {{count}}" - equal_to: "debe ser igual a {{count}}" - less_than: "debe ser menor que {{count}}" - less_than_or_equal_to: "debe ser menor que o igual a {{count}}" + greater_than: "debe ser mayor que %{count}" + greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" + equal_to: "debe ser igual a %{count}" + less_than: "debe ser menor que %{count}" + less_than_or_equal_to: "debe ser menor que o igual a %{count}" odd: "debe ser impar" even: "debe ser par" greater_than_start_date: "debe ser posterior a la fecha de comienzo" @@ -239,10 +239,10 @@ enumeration_activities: Actividades (tiempo dedicado) enumeration_doc_categories: Categorías del documento enumeration_issue_priorities: Prioridad de las peticiones - error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: {{value}}" + error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %{value}" error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto' error_scm_annotate: "No existe la entrada o no ha podido ser anotada" - error_scm_command_failed: "Se produjo un error al acceder al repositorio: {{value}}" + error_scm_command_failed: "Se produjo un error al acceder al repositorio: %{value}" error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio." field_account: Cuenta field_activity: Actividad @@ -313,6 +313,7 @@ field_role: Perfil field_searchable: Incluir en las búsquedas field_spent_on: Fecha + field_start_date: Fecha de inicio field_start_page: Página principal field_status: Estado field_subject: Tema @@ -338,19 +339,19 @@ general_text_no: 'no' general_text_yes: 'sí' gui_validation_error: 1 error - gui_validation_error_plural: "{{count}} errores" + gui_validation_error_plural: "%{count} errores" label_activity: Actividad label_add_another_file: Añadir otro fichero label_add_note: Añadir una nota label_added: añadido - label_added_time_by: "Añadido por {{author}} hace {{age}}" + label_added_time_by: "Añadido por %{author} hace %{age}" label_administration: Administración label_age: Edad label_ago: hace label_all: todos label_all_time: todo el tiempo label_all_words: Todas las palabras - label_and_its_subprojects: "{{value}} y proyectos secundarios" + label_and_its_subprojects: "%{value} y proyectos secundarios" label_applied_status: Aplicar estado label_assigned_to_me_issues: Peticiones que me están asignadas label_associated_revisions: Revisiones asociadas @@ -383,17 +384,17 @@ label_closed_issues: cerrada label_closed_issues_plural: cerradas label_x_open_issues_abbr_on_total: - zero: 0 abiertas / {{total}} - one: 1 abierta / {{total}} - other: "{{count}} abiertas / {{total}}" + zero: 0 abiertas / %{total} + one: 1 abierta / %{total} + other: "%{count} abiertas / %{total}" label_x_open_issues_abbr: zero: 0 abiertas one: 1 abierta - other: "{{count}} abiertas" + other: "%{count} abiertas" label_x_closed_issues_abbr: zero: 0 cerradas one: 1 cerrada - other: "{{count}} cerradas" + other: "%{count} cerradas" label_comment: Comentario label_comment_add: Añadir un comentario label_comment_added: Comentario añadido @@ -402,7 +403,7 @@ label_x_comments: zero: sin comentarios one: 1 comentario - other: "{{count}} comentarios" + other: "%{count} comentarios" label_commits_per_author: Commits por autor label_commits_per_month: Commits por mes label_confirmation: Confirmación @@ -426,13 +427,13 @@ label_diff_inline: en línea label_diff_side_by_side: cara a cara label_disabled: deshabilitado - label_display_per_page: "Por página: {{value}}" + label_display_per_page: "Por página: %{value}" label_document: Documento label_document_added: Documento añadido label_document_new: Nuevo documento label_document_plural: Documentos - label_download: "{{count}} Descarga" - label_download_plural: "{{count}} Descargas" + label_download: "%{count} Descarga" + label_download_plural: "%{count} Descargas" label_downloads_abbr: D/L label_duplicated_by: duplicada por label_duplicates: duplicada de @@ -444,10 +445,10 @@ label_equals: igual label_example: Ejemplo label_export_to: 'Exportar a:' - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_feed_plural: Feeds - label_feeds_access_key_created_on: "Clave de acceso por RSS creada hace {{value}}" + label_feeds_access_key_created_on: "Clave de acceso por RSS creada hace %{value}" label_file_added: Fichero añadido label_file_plural: Archivos label_filter_add: Añadir el filtro @@ -484,13 +485,13 @@ label_issue_updated: Petición actualizada label_issue_view_all: Ver todas las peticiones label_issue_watchers: Seguidores - label_issues_by: "Peticiones por {{value}}" + label_issues_by: "Peticiones por %{value}" label_jump_to_a_project: Ir al proyecto... label_language_based: Basado en el idioma - label_last_changes: "últimos {{count}} cambios" + label_last_changes: "últimos %{count} cambios" label_last_login: Última conexión label_last_month: último mes - label_last_n_days: "últimos {{count}} días" + label_last_n_days: "últimos %{count} días" label_last_week: última semana label_latest_revision: Última revisión label_latest_revision_plural: Últimas revisiones @@ -511,8 +512,8 @@ label_message_plural: Mensajes label_message_posted: Mensaje añadido label_min_max_length: Longitud mín - máx - label_modification: "{{count}} modificación" - label_modification_plural: "{{count}} modificaciones" + label_modification: "%{count} modificación" + label_modification_plural: "%{count} modificaciones" label_modified: modificado label_module_plural: Módulos label_month: Mes @@ -563,7 +564,7 @@ label_x_projects: zero: sin proyectos one: 1 proyecto - other: "{{count}} proyectos" + other: "%{count} proyectos" label_public_projects: Proyectos públicos label_query: Consulta personalizada label_query_new: Nueva consulta @@ -590,9 +591,9 @@ label_revision: Revisión label_revision_plural: Revisiones label_roadmap: Planificación - label_roadmap_due_in: "Finaliza en {{value}}" + label_roadmap_due_in: "Finaliza en %{value}" label_roadmap_no_issues: No hay peticiones para esta versión - label_roadmap_overdue: "{{value}} tarde" + label_roadmap_overdue: "%{value} tarde" label_role: Perfil label_role_and_permissions: Perfiles y permisos label_role_new: Nuevo perfil @@ -604,7 +605,7 @@ label_send_test_email: Enviar un correo de prueba label_settings: Configuración label_show_completed_versions: Muestra las versiones terminadas - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_sort_higher: Subir label_sort_highest: Primero label_sort_lower: Bajar @@ -628,11 +629,11 @@ label_tracker: Tipo label_tracker_new: Nuevo tipo label_tracker_plural: Tipos de peticiones - label_updated_time: "Actualizado hace {{value}}" - label_updated_time_by: "Actualizado por {{author}} hace {{age}}" + label_updated_time: "Actualizado hace %{value}" + label_updated_time_by: "Actualizado por %{author} hace %{age}" label_used_by: Utilizado por label_user: Usuario - label_user_activity: "Actividad de {{value}}" + label_user_activity: "Actividad de %{value}" label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí" label_user_mail_option_all: "Para cualquier evento en todos mis proyectos" label_user_mail_option_selected: "Para cualquier evento de los proyectos seleccionados..." @@ -653,16 +654,16 @@ label_workflow: Flujo de trabajo label_year: Año label_yesterday: ayer - mail_body_account_activation_request: "Se ha inscrito un nuevo usuario ({{value}}). La cuenta está pendiende de aprobación:" + mail_body_account_activation_request: "Se ha inscrito un nuevo usuario (%{value}). La cuenta está pendiende de aprobación:" mail_body_account_information: Información sobre su cuenta - mail_body_account_information_external: "Puede usar su cuenta {{value}} para conectarse." + mail_body_account_information_external: "Puede usar su cuenta %{value} para conectarse." mail_body_lost_password: 'Para cambiar su contraseña, haga clic en el siguiente enlace:' mail_body_register: 'Para activar su cuenta, haga clic en el siguiente enlace:' - mail_body_reminder: "{{count}} peticion(es) asignadas a tí finalizan en los próximos {{days}} días:" - mail_subject_account_activation_request: "Petición de activación de cuenta {{value}}" - mail_subject_lost_password: "Tu contraseña del {{value}}" - mail_subject_register: "Activación de la cuenta del {{value}}" - mail_subject_reminder: "{{count}} peticion(es) finalizan en los próximos {{days}} días" + mail_body_reminder: "%{count} peticion(es) asignadas a tí finalizan en los próximos %{days} días:" + mail_subject_account_activation_request: "Petición de activación de cuenta %{value}" + mail_subject_lost_password: "Tu contraseña del %{value}" + mail_subject_register: "Activación de la cuenta del %{value}" + mail_subject_reminder: "%{count} peticion(es) finalizan en los próximos %{days} días" notice_account_activated: Su cuenta ha sido activada. Ya puede conectarse. notice_account_invalid_creditentials: Usuario o contraseña inválido. notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña. @@ -674,9 +675,9 @@ notice_account_wrong_password: Contraseña incorrecta. notice_can_t_change_password: Esta cuenta utiliza una fuente de autenticación externa. No es posible cambiar la contraseña. 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_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_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. @@ -787,25 +788,25 @@ status_registered: registrado text_are_you_sure: ¿Está seguro? text_assign_time_entries_to_project: Asignar las horas al proyecto - text_caracters_maximum: "{{count}} caracteres como máximo." - text_caracters_minimum: "{{count}} caracteres como mínimo." + text_caracters_maximum: "%{count} caracteres como máximo." + text_caracters_minimum: "%{count} caracteres como mínimo." text_comma_separated: Múltiples valores permitidos (separados por coma). text_default_administrator_account_changed: Cuenta de administrador por defecto modificada text_destroy_time_entries: Borrar las horas - text_destroy_time_entries_question: Existen {{hours}} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer? + text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer? text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' - text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios." + text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios." text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' - text_enumeration_destroy_question: "{{count}} objetos con este valor asignado." + text_enumeration_destroy_question: "%{count} objetos con este valor asignado." text_file_repository_writable: Se puede escribir en el repositorio - text_issue_added: "Petición {{id}} añadida por {{author}}." + text_issue_added: "Petición %{id} añadida por %{author}." text_issue_category_destroy_assignments: Dejar las peticiones sin categoría - text_issue_category_destroy_question: "Algunas peticiones ({{count}}) están asignadas a esta categoría. ¿Qué desea hacer?" + text_issue_category_destroy_question: "Algunas peticiones (%{count}) están asignadas a esta categoría. ¿Qué desea hacer?" text_issue_category_reassign_to: Reasignar las peticiones a la categoría - text_issue_updated: "La petición {{id}} ha sido actualizada por {{author}}." + text_issue_updated: "La petición %{id} ha sido actualizada por %{author}." text_issues_destroy_confirmation: '¿Seguro que quiere borrar las peticiones seleccionadas?' text_issues_ref_in_commit_messages: Referencia y petición de corrección en los mensajes - text_length_between: "Longitud entre {{min}} y {{max}} caracteres." + text_length_between: "Longitud entre %{min} y %{max} caracteres." text_load_default_configuration: Cargar la configuración por defecto text_min_max_length_info: 0 para ninguna restricción text_no_configuration_data: "Todavía no se han configurado perfiles, ni tipos, estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla." @@ -817,19 +818,19 @@ text_rmagick_available: RMagick disponible (opcional) text_select_mail_notifications: Seleccionar los eventos a notificar text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:' - text_status_changed_by_changeset: "Aplicado en los cambios {{value}}" - text_subprojects_destroy_warning: "Los proyectos secundarios: {{value}} también se eliminarán" + text_status_changed_by_changeset: "Aplicado en los cambios %{value}" + text_subprojects_destroy_warning: "Los proyectos secundarios: %{value} también se eliminarán" text_tip_issue_begin_day: tarea que comienza este día text_tip_issue_begin_end_day: tarea que comienza y termina este día text_tip_issue_end_day: tarea que termina este día text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tipo de petición text_unallowed_characters: Caracteres no permitidos text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, peticiones de las que usted sea autor o asignadas a usted)." - text_user_wrote: "{{value}} escribió:" + text_user_wrote: "%{value} escribió:" text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido? text_workflow_edit: Seleccionar un flujo de trabajo para actualizar text_plugin_assets_writable: Se puede escribir en el directorio público de las extensiones - warning_attachments_not_saved: "No se han podido grabar {{count}} ficheros." + warning_attachments_not_saved: "No se han podido grabar %{count} ficheros." button_create_and_continue: Crear y continuar text_custom_field_possible_values_info: 'Un valor en cada línea' label_display: Mostrar @@ -844,21 +845,21 @@ label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente - label_date_from_to: Desde {{start}} hasta {{end}} + label_date_from_to: Desde %{start} hasta %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Esta página tiene {{descendants}} página(s) hija(s) y descendiente(s). ¿Qué desea hacer? + text_wiki_page_destroy_question: Esta página tiene %{descendants} página(s) hija(s) y descendiente(s). ¿Qué desea hacer? text_wiki_page_reassign_children: Reasignar páginas hijas a esta página text_wiki_page_nullify_children: Dejar páginas hijas como páginas raíz text_wiki_page_destroy_children: Eliminar páginas hijas y todos sus descendientes setting_password_min_length: Longitud mínima de la contraseña field_group_by: Agrupar resultados por - mail_subject_wiki_content_updated: "La página wiki '{{id}}' ha sido actualizada" + mail_subject_wiki_content_updated: "La página wiki '%{id}' ha sido actualizada" label_wiki_content_added: Página wiki añadida - mail_subject_wiki_content_added: "Se ha añadido la página wiki '{{id}}'." - mail_body_wiki_content_added: "{{author}} ha añadido la página wiki '{{id}}'." + mail_subject_wiki_content_added: "Se ha añadido la página wiki '%{id}'." + mail_body_wiki_content_added: "%{author} ha añadido la página wiki '%{id}'." label_wiki_content_updated: Página wiki actualizada - mail_body_wiki_content_updated: La página wiki '{{id}}' ha sido actualizada por {{author}}. + mail_body_wiki_content_updated: La página wiki '%{id}' ha sido actualizada por %{author}. permission_add_project: Crear proyecto setting_new_project_user_role_id: Permiso asignado a un usuario no-administrador para crear proyectos label_view_all_revisions: Ver todas las revisiones @@ -866,14 +867,14 @@ label_branch: Rama error_no_tracker_in_project: Este proyecto no tiene asociados tipos de peticiones. Por favor, revise la configuración. error_no_default_issue_status: No se ha definido un estado de petición por defecto. Por favor, revise la configuración (en "Administración" -> "Estados de las peticiones"). - text_journal_changed: "{{label}} cambiado {{old}} por {{new}}" - text_journal_set_to: "{{label}} establecido a {{value}}" - text_journal_deleted: "{{label}} eliminado ({{old}})" + text_journal_changed: "%{label} cambiado %{old} por %{new}" + text_journal_set_to: "%{label} establecido a %{value}" + text_journal_deleted: "%{label} eliminado (%{old})" label_group_plural: Grupos label_group: Grupo label_group_new: Nuevo grupo label_time_entry_plural: Tiempo dedicado - text_journal_added: "Añadido {{label}} {{value}}" + text_journal_added: "Añadido %{label} %{value}" field_active: Activo enumeration_system_activity: Actividad del sistema permission_delete_issue_watchers: Borrar seguidores @@ -909,9 +910,9 @@ setting_start_of_week: Comenzar las semanas en permission_view_issues: Ver peticiones label_display_used_statuses_only: Sólo mostrar los estados usados por este tipo de petición - label_revision_id: Revisión {{value}} + label_revision_id: Revisión %{value} label_api_access_key: Clave de acceso de la API - label_api_access_key_created_on: Clave de acceso de la API creada hace {{value}} + label_api_access_key_created_on: Clave de acceso de la API creada hace %{value} label_feeds_access_key: Clave de acceso RSS notice_api_access_key_reseted: Clave de acceso a la API regenerada. setting_rest_api_enabled: Activar servicio web REST @@ -938,32 +939,41 @@ label_subtask_plural: Subtareas label_project_copy_notifications: Enviar notificaciones por correo electrónico durante la copia del proyecto error_can_not_delete_custom_field: Fue imposible eliminar el campo personalizado - error_unable_to_connect: Fue imposible conectar con ({{value}}) + error_unable_to_connect: Fue imposible conectar con (%{value}) error_can_not_remove_role: Este rol está en uso y no puede ser eliminado. error_can_not_delete_tracker: Este tipo contiene peticiones y no puede ser eliminado. field_principal: Principal label_my_page_block: Bloque Mi página - notice_failed_to_save_members: "Fallo al guardar miembro(s): {{errors}}." + notice_failed_to_save_members: "Fallo al guardar miembro(s): %{errors}." text_zoom_out: Alejar text_zoom_in: Acercar notice_unable_delete_time_entry: Fue imposible eliminar la entrada de tiempo dedicado. label_overall_spent_time: Tiempo total dedicado 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + project_module_calendar: Calendario + button_edit_associated_wikipage: "Editar paginas Wiki asociadas: %{page_title}" + text_are_you_sure_with_children: ¿Borrar peticiones y todas sus peticiones hijas? + field_text: Campo de texto + label_user_mail_option_only_owner: Solo para objetos que soy propietario + setting_default_notification_option: Opcion de notificacion por defecto + label_user_mail_option_only_my_events: Solo para objetos que soy seguidor o estoy involucrado + label_user_mail_option_only_assigned: Solo para objetos que estoy asignado + label_user_mail_option_none: Sin eventos + field_member_of_group: Asignado al grupo + field_assigned_to_role: Asignado al perfil + notice_not_authorized_archived_project: El proyecto al que intenta acceder ha sido archivado. + label_principal_search: "Buscar por usuario o grupo:" + label_user_search: "Buscar por usuario:" field_visible: Visible - setting_emails_header: Emails header + setting_emails_header: Encabezado de Correos + + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/eu.yml.svn-base --- a/config/locales/.svn/text-base/eu.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/eu.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,933 +1,946 @@ -# 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: - 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: "An issue can not be linked to one of its subtasks" - - 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_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 estelak 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 mezuen 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 diagrama 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: Workflow - 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: Beria - 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: months from - 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 apuntatu - 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 atazak - text_tip_issue_end_day: gaur bukatzen diren atazak - text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren atazak - 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/email.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: Itxaskorra - 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: Guraso ataza - label_subtask_plural: Azpiatazak - label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali - error_can_not_delete_custom_field: Ezin da eremu pertsonallizatua 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: 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header +# 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/fa.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/locales/.svn/text-base/fa.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,945 @@ +fa: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: rtl + 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: "%B %d, %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: [ :year, :month, :day ] + + time: + formats: + default: "%Y/%m/%d %p %I:%M" + time: "%p %I:%M" + short: "%d %b %H:%M" + long: "%B %d, %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: "بایت" + other: "بایت" + kb: "کیلوبایت" + mb: "مگابایت" + gb: "گیگابایت" + tb: "ترابایت" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "Ùˆ" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 ایراد از ذخیره سازی این %{model} جلوگیری کرد" + other: "%{count} ایراد از ذخیره سازی این %{model} جلوگیری کرد" + 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: 'Persian (پارسی)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '6' + + 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_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: "نمودار بریده شد چون از بیشترین شماری Ú©Ù‡ می‌توان نشان داد بزگتر است (%{max})." + + error_can_t_load_default_data: "پیکربندی پیش‌گزیده نمی‌تواند بار شود: %{value}" + 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: 'هیچ وضعیت پیامد پیش‌گزیده‌ای مشخص نشده است. پیکربندی را بررسی کنید (به «پیکربندی -> وضعیت‌های پیامد» بروید).' + 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: 'پیگردها یا نقش‌های مقصد را برگزینید.' + error_unable_delete_issue_status: 'وضعیت پیامد را نمی‌توان پاک کرد.' + error_unable_to_connect: "نمی‌توان متصل شد (%{value})" + warning_attachments_not_saved: "%{count} پرونده ذخیره نشد." + + 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}» Ø§ÙØ²ÙˆØ¯Ù‡ شد" + mail_body_wiki_content_added: "برگه ویکی «%{id}» به دست %{author} Ø§ÙØ²ÙˆØ¯Ù‡ شد." + mail_subject_wiki_content_updated: "برگه ویکی «%{id}» بروز شد" + mail_body_wiki_content_updated: "برگه ویکی «%{id}» به دست %{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_principal: دستور دهنده + 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: 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: نشانی + 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: مقدار پیش‌گزیده + field_comments_sorting: نمایش دیدگاه‌ها + field_parent_title: برگه پدر + field_editable: ویرایش پذیر + field_watcher: دیده‌بان + field_identity_url: نشانی OpenID + 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: نوشتار خوش‌آمد گویی + setting_default_language: زبان پیش‌گزیده + setting_login_required: الزامی بودن ورود + setting_self_registration: خود نام نویسی + setting_attachment_max_size: بیشترین اندازه پیوست + setting_issues_export_limit: کرانه صدور پییامدها + setting_mail_from: نشانی ÙØ±Ø³ØªÙ†Ø¯Ù‡ ایمیل + setting_bcc_recipients: گیرندگان ایمیل دیده نشوند (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: ÙØ¹Ø§Ù„ سازی وب سرویس برای سرپرستی انباره + 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: پیوندنامه + setting_per_page_options: گزینه‌های اندازه داده‌های هر برگ + setting_user_format: قالب نمایشی کاربران + setting_activity_days_default: روزهای نمایش داده شده در ÙØ¹Ø§Ù„یت پروژه + setting_display_subprojects_issues: پیش‌گزیده نمایش پیامدهای زیرپروژه در پروژه پدر + setting_enabled_scm: ÙØ¹Ø§Ù„سازی SCM + setting_mail_handler_body_delimiters: "بریدن ایمیل‌ها پس از یکی از این ردیÙ‌ها" + setting_mail_handler_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس برای ایمیل‌های آمده + setting_mail_handler_api_key: کلید API + setting_sequential_project_identifiers: ساخت پشت سر هم شناسه پروژه + setting_gravatar_enabled: کاربرد Gravatar برای عکس کاربر + setting_gravatar_default: عکس Gravatar پیش‌گزیده + setting_diff_max_lines_displayed: بیشترین اندازه ردیÙ‌های ØªÙØ§ÙˆØª نشان داده شده + setting_file_max_size_displayed: بیشترین اندازه پرونده‌های نمایش داده شده درون خطی + setting_repository_log_display_limit: بیشترین شمار نگارش‌های نمایش داده شده در گزارش پرونده + setting_openid: پذیرش ورود Ùˆ نام نویسی با OpenID + setting_password_min_length: کمترین اندازه گذرواژه + setting_new_project_user_role_id: نقش داده شده به کاربری Ú©Ù‡ سرپرست نیست Ùˆ پروژه می‌سازد + setting_default_projects_modules: پیمانه‌های پیش‌گزیده ÙØ¹Ø§Ù„ برای پروژه‌های تازه + setting_issue_done_ratio: برآورد اندازه انجام شده پیامد با + setting_issue_done_ratio_issue_field: کاربرد Ùیلد پیامد + setting_issue_done_ratio_issue_status: کاربرد وضعیت پیامد + setting_start_of_week: آغاز گاهشمار از + setting_rest_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس‌های REST + 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: دیدن پیامدها + 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: صدور برگه‌های ویکی + permission_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: انباره + project_module_boards: انجمن‌ها + project_module_calendar: گاهشمار + project_module_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: پیگرد + 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: یا با 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: شماره درست + 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_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: بیشترین اندازه + 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: خوراک + 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: تغییر در هر ماه + 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: چسبناک + 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_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_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: پسندها + label_chronological_order: به ترتیب تاریخ + label_reverse_chronological_order: برعکس ترتیب تاریخ + label_planning: برنامه ریزی + label_incoming_emails: ایمیل‌های آمده + label_generate_key: ساخت کلید + label_issue_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: بروز رسانی اندازه انجام شده پیامد + label_copy_source: منبع + label_copy_target: مقصد + label_copy_same_as_target: مانند مقصد + label_display_used_statuses_only: تنها وضعیت‌هایی نشان داده شوند Ú©Ù‡ در این پیگرد به کار Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯ + 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: واگذاری + button_save: نگهداری + button_check_all: گزینش همه + button_uncheck_all: گزینش هیچ + button_delete: پاک + button_create: ساخت + button_create_and_continue: ساخت Ùˆ ادامه + button_test: آزمایش + button_edit: ویرایش + button_edit_associated_wikipage: "ویرایش برگه ویکی وابسته: %{page_title}" + 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: برای نمونه ^[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_are_you_sure_with_children: "آیا پیامد Ùˆ همه زیرپیامدهای آن پاک شوند؟" + text_journal_changed: "«%{label}» از «%{old}» به «%{new}» جایگزین شد" + text_journal_set_to: "«%{label}» به «%{value}» نشانده شد" + text_journal_deleted: "«%{label}» پاک شد (%{old})" + text_journal_added: "«%{label}»، «%{value}» را Ø§ÙØ²ÙˆØ¯" + text_tip_task_begin_day: روز آغاز پیامد + text_tip_task_end_day: روز پایان پیامد + text_tip_task_begin_end_day: روز آغاز Ùˆ پایان پیامد + text_project_identifier_info: 'تنها نویسه‌های Ú©ÙˆÚ†Ú© (a-z)ØŒ شماره‌ها Ùˆ خط تیره Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است.
    پس از ذخیره سازی، شناسه نمی‌تواند جایگزین شود.' + 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: چند مقدار Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است (هر مقدار در یک خط). + 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_time_logged_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: "Ø¯Ø±ÛŒØ§ÙØª ایمیل پیکربندی نشده است Ùˆ آگاه‌سازی‌ها غیر ÙØ¹Ø§Ù„ هستند.\nکارگزار SMTP خود را در config/email.yml پیکربندی کنید Ùˆ برنامه را بازنشانی کنید تا ÙØ¹Ø§Ù„ شوند." + text_repository_usernames_mapping: "کاربر Redmine Ú©Ù‡ به هر نام کاربری پیام‌های انباره نگاشت می‌شود را برگزینید.\nکاربرانی Ú©Ù‡ نام کاربری یا ایمیل همسان دارند، خود به خود نگاشت می‌شوند." + text_diff_truncated: '... این ØªÙØ§ÙˆØª بریده شده چون بیشتر از بیشترین اندازه نمایش دادنی است.' + text_custom_field_possible_values_info: 'یک خط برای هر مقدار' + text_wiki_page_destroy_question: "این برگه %{descendants} زیربرگه دارد.می‌خواهید Ú†Ù‡ کنید؟" + text_wiki_page_nullify_children: "زیربرگه‌ها برگه ریشه شوند" + text_wiki_page_destroy_children: "زیربرگه‌ها Ùˆ زیربرگه‌های آن‌ها پاک شوند" + text_wiki_page_reassign_children: "زیربرگه‌ها به زیر این برگه پدر بروند" + text_own_membership_delete_confirmation: "شما دارید برخی یا همه پروانه‌های خود را برمی‌دارید Ùˆ شاید پس از این دیگر نتوانید این پروژه را ویرایش کنید.\nآیا می‌خواهید این کار را بکنید؟" + text_zoom_in: درشتنمایی + text_zoom_out: ریزنمایی + + 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_resolved: درست شده + default_issue_status_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: ÙØ¹Ø§Ù„یت سامانه + + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/fi.yml.svn-base --- a/config/locales/.svn/text-base/fi.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/fi.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -78,37 +78,37 @@ half_a_minute: "puoli minuuttia" less_than_x_seconds: one: "aiemmin kuin sekunti" - other: "aiemmin kuin {{count}} sekuntia" + other: "aiemmin kuin %{count} sekuntia" x_seconds: one: "sekunti" - other: "{{count}} sekuntia" + other: "%{count} sekuntia" less_than_x_minutes: one: "aiemmin kuin minuutti" - other: "aiemmin kuin {{count}} minuuttia" + other: "aiemmin kuin %{count} minuuttia" x_minutes: one: "minuutti" - other: "{{count}} minuuttia" + other: "%{count} minuuttia" about_x_hours: one: "noin tunti" - other: "noin {{count}} tuntia" + other: "noin %{count} tuntia" x_days: one: "päivä" - other: "{{count}} päivää" + other: "%{count} päivää" about_x_months: one: "noin kuukausi" - other: "noin {{count}} kuukautta" + other: "noin %{count} kuukautta" x_months: one: "kuukausi" - other: "{{count}} kuukautta" + other: "%{count} kuukautta" about_x_years: one: "vuosi" - other: "noin {{count}} vuotta" + other: "noin %{count} vuotta" over_x_years: one: "yli vuosi" - other: "yli {{count}} vuotta" + other: "yli %{count} vuotta" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" prompts: year: "Vuosi" month: "Kuukausi" @@ -121,8 +121,8 @@ errors: template: header: - one: "1 virhe esti tämän {{model}} mallinteen tallentamisen" - other: "{{count}} virhettä esti tämän {{model}} mallinteen tallentamisen" + one: "1 virhe esti tämän %{model} mallinteen tallentamisen" + other: "%{count} virhettä esti tämän %{model} mallinteen tallentamisen" body: "Seuraavat kentät aiheuttivat ongelmia:" messages: inclusion: "ei löydy listauksesta" @@ -132,16 +132,16 @@ accepted: "täytyy olla hyväksytty" empty: "ei voi olla tyhjä" blank: "ei voi olla sisällötön" - too_long: "on liian pitkä (maksimi on {{count}} merkkiä)" - too_short: "on liian lyhyt (minimi on {{count}} merkkiä)" - wrong_length: "on väärän pituinen (täytyy olla täsmälleen {{count}} merkkiä)" + too_long: "on liian pitkä (maksimi on %{count} merkkiä)" + too_short: "on liian lyhyt (minimi on %{count} merkkiä)" + wrong_length: "on väärän pituinen (täytyy olla täsmälleen %{count} merkkiä)" taken: "on jo käytössä" not_a_number: "ei ole numero" - greater_than: "täytyy olla suurempi kuin {{count}}" - greater_than_or_equal_to: "täytyy olla suurempi tai yhtä suuri kuin{{count}}" - equal_to: "täytyy olla yhtä suuri kuin {{count}}" - less_than: "täytyy olla pienempi kuin {{count}}" - less_than_or_equal_to: "täytyy olla pienempi tai yhtä suuri kuin {{count}}" + greater_than: "täytyy olla suurempi kuin %{count}" + greater_than_or_equal_to: "täytyy olla suurempi tai yhtä suuri kuin%{count}" + equal_to: "täytyy olla yhtä suuri kuin %{count}" + less_than: "täytyy olla pienempi kuin %{count}" + less_than_or_equal_to: "täytyy olla pienempi tai yhtä suuri kuin %{count}" odd: "täytyy olla pariton" even: "täytyy olla parillinen" greater_than_start_date: "tulee olla aloituspäivän jälkeinen" @@ -178,29 +178,29 @@ notice_file_not_found: Hakemaasi sivua ei löytynyt tai se on poistettu. notice_locking_conflict: Toinen käyttäjä on päivittänyt tiedot. notice_not_authorized: Sinulla ei ole oikeutta näyttää tätä sivua. - notice_email_sent: "Sähköposti on lähetty osoitteeseen {{value}}" - notice_email_error: "Sähköpostilähetyksessä tapahtui virhe ({{value}})" + notice_email_sent: "Sähköposti on lähetty osoitteeseen %{value}" + notice_email_error: "Sähköpostilähetyksessä tapahtui virhe (%{value})" notice_feeds_access_key_reseted: RSS salasana on nollaantunut. - notice_failed_to_save_issues: "{{count}} Tapahtum(an/ien) tallennus epäonnistui {{total}} valitut: {{ids}}." + notice_failed_to_save_issues: "%{count} Tapahtum(an/ien) tallennus epäonnistui %{total} valitut: %{ids}." notice_no_issue_selected: "Tapahtumia ei ole valittu! Valitse tapahtumat joita haluat muokata." notice_account_pending: "Tilisi on luotu ja odottaa ylläpitäjän hyväksyntää." notice_default_data_loaded: Vakioasetusten palautus onnistui. - error_can_t_load_default_data: "Vakioasetuksia ei voitu ladata: {{value}}" + error_can_t_load_default_data: "Vakioasetuksia ei voitu ladata: %{value}" error_scm_not_found: "Syötettä ja/tai versiota ei löydy tietovarastosta." - error_scm_command_failed: "Tietovarastoon pääsyssä tapahtui virhe: {{value}}" + error_scm_command_failed: "Tietovarastoon pääsyssä tapahtui virhe: %{value}" - mail_subject_lost_password: "Sinun {{value}} salasanasi" + mail_subject_lost_password: "Sinun %{value} salasanasi" mail_body_lost_password: 'Vaihtaaksesi salasanasi, napsauta seuraavaa linkkiä:' - mail_subject_register: "{{value}} tilin aktivointi" + mail_subject_register: "%{value} tilin aktivointi" mail_body_register: 'Aktivoidaksesi tilisi, napsauta seuraavaa linkkiä:' - mail_body_account_information_external: "Voit nyt käyttää {{value}} tiliäsi kirjautuaksesi järjestelmään." + mail_body_account_information_external: "Voit nyt käyttää %{value} tiliäsi kirjautuaksesi järjestelmään." mail_body_account_information: Sinun tilin tiedot - mail_subject_account_activation_request: "{{value}} tilin aktivointi pyyntö" - mail_body_account_activation_request: "Uusi käyttäjä ({{value}}) on rekisteröitynyt. Hänen tili odottaa hyväksyntääsi:" + mail_subject_account_activation_request: "%{value} tilin aktivointi pyyntö" + mail_body_account_activation_request: "Uusi käyttäjä (%{value}) on rekisteröitynyt. Hänen tili odottaa hyväksyntääsi:" gui_validation_error: 1 virhe - gui_validation_error_plural: "{{count}} virhettä" + gui_validation_error_plural: "%{count} virhettä" field_name: Nimi field_description: Kuvaus @@ -262,6 +262,7 @@ field_attr_lastname: Sukunimenmääre field_attr_mail: Sähköpostinmääre field_onthefly: Automaattinen käyttäjien luonti + field_start_date: Alku field_done_ratio: % Tehty field_auth_source: Varmennusmuoto field_hide_mail: Piiloita sähköpostiosoitteeni @@ -321,14 +322,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Kaikki projektit label_project_latest: Uusimmat projektit label_issue: Tapahtuma label_issue_new: Uusi tapahtuma label_issue_plural: Tapahtumat label_issue_view_all: Näytä kaikki tapahtumat - label_issues_by: "Tapahtumat {{value}}" + label_issues_by: "Tapahtumat %{value}" label_document: Dokumentti label_document_new: Uusi dokumentti label_document_plural: Dokumentit @@ -390,8 +391,8 @@ label_text: Pitkä merkkijono label_attribute: Määre label_attribute_plural: Määreet - label_download: "{{count}} Lataus" - label_download_plural: "{{count}} Lataukset" + label_download: "%{count} Lataus" + label_download_plural: "%{count} Lataukset" label_no_data: Ei tietoa näytettäväksi label_change_status: Muutos tila label_history: Historia @@ -420,17 +421,17 @@ label_closed_issues: suljettu label_closed_issues_plural: suljettua label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Yhteensä label_permissions: Oikeudet label_current_status: Nykyinen tila @@ -448,7 +449,7 @@ label_months_from: kuukauden päässä label_gantt: Gantt label_internal: Sisäinen - label_last_changes: "viimeiset {{count}} muutokset" + label_last_changes: "viimeiset %{count} muutokset" label_change_view_all: Näytä kaikki muutokset label_personalize_page: Personoi tämä sivu label_comment: Kommentti @@ -456,7 +457,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Lisää kommentti label_comment_added: Kommentti lisätty label_comment_delete: Poista kommentti @@ -480,8 +481,8 @@ label_repository: Tietovarasto label_repository_plural: Tietovarastot label_browse: Selaus - label_modification: "{{count}} muutos" - label_modification_plural: "{{count}} muutettu" + label_modification: "%{count} muutos" + label_modification_plural: "%{count} muutettu" label_revision: Versio label_revision_plural: Versiot label_added: lisätty @@ -496,8 +497,8 @@ label_sort_lower: Siirrä alas label_sort_lowest: Siirrä alimmaiseksi label_roadmap: Roadmap - label_roadmap_due_in: "Määräaika {{value}}" - label_roadmap_overdue: "{{value}} myöhässä" + label_roadmap_due_in: "Määräaika %{value}" + label_roadmap_overdue: "%{value} myöhässä" label_roadmap_no_issues: Ei tapahtumia tälle versiolle label_search: Haku label_result_plural: Tulokset @@ -515,8 +516,8 @@ label_changes_details: Kaikkien muutosten yksityiskohdat label_issue_tracking: Tapahtumien seuranta label_spent_time: Käytetty aika - label_f_hour: "{{value}} tunti" - label_f_hour_plural: "{{value}} tuntia" + label_f_hour: "%{value} tunti" + label_f_hour_plural: "%{value} tuntia" label_time_tracking: Ajan seuranta label_change_plural: Muutokset label_statistics: Tilastot @@ -561,12 +562,12 @@ label_month: Kuukausi label_week: Viikko label_language_based: Pohjautuen käyttäjän kieleen - label_sort_by: "Lajittele {{value}}" + label_sort_by: "Lajittele %{value}" label_send_test_email: Lähetä testi sähköposti - label_feeds_access_key_created_on: "RSS salasana luotiin {{value}} sitten" + label_feeds_access_key_created_on: "RSS salasana luotiin %{value} sitten" label_module_plural: Moduulit - label_added_time_by: "Lisännyt {{author}} {{age}} sitten" - label_updated_time: "Päivitetty {{value}} sitten" + label_added_time_by: "Lisännyt %{author} %{age} sitten" + label_updated_time: "Päivitetty %{value} sitten" label_jump_to_a_project: Siirry projektiin... label_file_plural: Tiedostot label_changeset_plural: Muutosryhmät @@ -582,7 +583,7 @@ label_registration_activation_by_email: tilin aktivointi sähköpostitse label_registration_manual_activation: tilin aktivointi käsin label_registration_automatic_activation: tilin aktivointi automaattisesti - label_display_per_page: "Per sivu: {{value}}" + label_display_per_page: "Per sivu: %{value}" label_age: Ikä label_change_properties: Vaihda asetuksia label_general: Yleinen @@ -638,17 +639,17 @@ text_tip_issue_end_day: tehtävä joka loppuu tänä päivänä text_tip_issue_begin_end_day: tehtävä joka alkaa ja loppuu tänä päivänä text_project_identifier_info: 'Pienet kirjaimet (a-z), numerot ja viivat ovat sallittu.
    Tallentamisen jälkeen tunnistetta ei voi muuttaa.' - text_caracters_maximum: "{{count}} merkkiä enintään." - text_caracters_minimum: "Täytyy olla vähintään {{count}} merkkiä pitkä." - text_length_between: "Pituus välillä {{min}} ja {{max}} merkkiä." + text_caracters_maximum: "%{count} merkkiä enintään." + text_caracters_minimum: "Täytyy olla vähintään %{count} merkkiä pitkä." + text_length_between: "Pituus välillä %{min} ja %{max} merkkiä." text_tracker_no_workflow: Työnkulkua ei määritelty tälle tapahtumalle text_unallowed_characters: Kiellettyjä merkkejä text_comma_separated: Useat arvot sallittu (pilkku eroteltuna). text_issues_ref_in_commit_messages: Liitän ja korjaan ongelmia syötetyssä viestissä - text_issue_added: "Issue {{id}} has been reported by {{author}}." - text_issue_updated: "Issue {{id}} has been updated by {{author}}." + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Oletko varma että haluat poistaa tämän wiki:n ja kaikki sen sisältämän tiedon? - text_issue_category_destroy_question: "Jotkut tapahtumat ({{count}}) ovat nimetty tälle luokalle. Mitä haluat tehdä?" + text_issue_category_destroy_question: "Jotkut tapahtumat (%{count}) ovat nimetty tälle luokalle. Mitä haluat tehdä?" text_issue_category_destroy_assignments: Poista luokan tehtävät text_issue_category_reassign_to: Vaihda tapahtuma tähän luokkaan text_user_mail_option: "Valitsemattomille projekteille, saat vain muistutuksen asioista joita seuraat tai olet mukana (esim. tapahtumat joissa olet tekijä tai nimettynä)." @@ -682,7 +683,7 @@ enumeration_activities: Historia (ajan seuranta) label_associated_revisions: Liittyvät versiot setting_user_format: Käyttäjien esitysmuoto - text_status_changed_by_changeset: "Päivitetty muutosversioon {{value}}." + text_status_changed_by_changeset: "Päivitetty muutosversioon %{value}." text_issues_destroy_confirmation: 'Oletko varma että haluat poistaa valitut tapahtumat ?' label_more: Lisää label_issue_added: Tapahtuma lisätty @@ -710,8 +711,8 @@ label_downloads_abbr: D/L label_add_another_file: Lisää uusi tiedosto label_this_month: tässä kuussa - text_destroy_time_entries_question: "{{hours}} tuntia on raportoitu tapahtumasta jonka aiot poistaa. Mitä haluat tehdä ?" - label_last_n_days: "viimeiset {{count}} päivää" + text_destroy_time_entries_question: "%{hours} tuntia on raportoitu tapahtumasta jonka aiot poistaa. Mitä haluat tehdä ?" + label_last_n_days: "viimeiset %{count} päivää" label_all_time: koko ajalta error_issue_not_found_in_project: 'Tapahtumaa ei löytynyt tai se ei kuulu tähän projektiin' label_this_year: tänä vuonna @@ -736,20 +737,20 @@ label_overall_activity: Kokonaishistoria error_scm_annotate: "Merkintää ei ole tai siihen ei voi lisätä selityksiä." label_planning: Suunnittelu - text_subprojects_destroy_warning: "Tämän aliprojekti(t): {{value}} tullaan myös poistamaan." - label_and_its_subprojects: "{{value}} ja aliprojektit" - mail_body_reminder: "{{count}} sinulle nimettyä tapahtuma(a) erääntyy {{days}} päivä sisään:" - mail_subject_reminder: "{{count}} tapahtuma(a) erääntyy {{days}} lähipäivinä" - text_user_wrote: "{{value}} kirjoitti:" + text_subprojects_destroy_warning: "Tämän aliprojekti(t): %{value} tullaan myös poistamaan." + label_and_its_subprojects: "%{value} ja aliprojektit" + mail_body_reminder: "%{count} sinulle nimettyä tapahtuma(a) erääntyy %{days} päivä sisään:" + mail_subject_reminder: "%{count} tapahtuma(a) erääntyy %{days} lähipäivinä" + text_user_wrote: "%{value} kirjoitti:" label_duplicated_by: kopioinut setting_enabled_scm: Versionhallinta käytettävissä text_enumeration_category_reassign_to: 'Siirrä täksi arvoksi:' - text_enumeration_destroy_question: "{{count}} kohdetta on sijoitettu tälle arvolle." + text_enumeration_destroy_question: "%{count} kohdetta on sijoitettu tälle arvolle." label_incoming_emails: Saapuvat sähköpostiviestit label_generate_key: Luo avain setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille setting_mail_handler_api_key: API avain - text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/email.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." + text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/configuration.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." field_parent_title: Aloitussivu label_issue_watchers: Tapahtuman seuraajat button_quote: Vastaa @@ -810,12 +811,12 @@ text_repository_usernames_mapping: "Valitse päivittääksesi Redmine käyttäjä jokaiseen käyttäjään joka löytyy tietovaraston lokista.\nKäyttäjät joilla on sama Redmine ja tietovaraston käyttäjänimi tai sähköpostiosoite, yhdistetään automaattisesti." permission_edit_own_messages: Muokkaa omia viestejä permission_delete_own_messages: Poista omia viestejä - label_user_activity: "Käyttäjän {{value}} historia" - label_updated_time_by: "Updated by {{author}} {{age}} ago" + label_user_activity: "Käyttäjän %{value} historia" + 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." + 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 @@ -830,21 +831,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -852,14 +853,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -894,9 +895,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -923,12 +924,12 @@ 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_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}}." + 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. @@ -936,7 +937,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -947,8 +948,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/fr.yml.svn-base --- a/config/locales/.svn/text-base/fr.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/fr.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -36,38 +36,38 @@ less_than_x_seconds: zero: "moins d'une seconde" one: "moins d'une seconde" - other: "moins de {{count}} secondes" + other: "moins de %{count} secondes" x_seconds: one: "1 seconde" - other: "{{count}} secondes" + other: "%{count} secondes" less_than_x_minutes: zero: "moins d'une minute" one: "moins d'une minute" - other: "moins de {{count}} minutes" + other: "moins de %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "environ une heure" - other: "environ {{count}} heures" + other: "environ %{count} heures" x_days: one: "un jour" - other: "{{count}} jours" + other: "%{count} jours" about_x_months: one: "environ un mois" - other: "environ {{count}} mois" + other: "environ %{count} mois" x_months: one: "un mois" - other: "{{count}} mois" + other: "%{count} mois" about_x_years: one: "environ un an" - other: "environ {{count}} ans" + other: "environ %{count} ans" over_x_years: one: "plus d'un an" - other: "plus de {{count}} ans" + other: "plus de %{count} ans" almost_x_years: one: "presqu'un an" - other: "presque {{count}} ans" + other: "presque %{count} ans" prompts: year: "Année" month: "Mois" @@ -112,8 +112,8 @@ errors: template: header: - one: "Impossible d'enregistrer {{model}} : une erreur" - other: "Impossible d'enregistrer {{model}} : {{count}} erreurs." + one: "Impossible d'enregistrer %{model} : une erreur" + other: "Impossible d'enregistrer %{model} : %{count} erreurs." body: "Veuillez vérifier les champs suivants :" messages: inclusion: "n'est pas inclus(e) dans la liste" @@ -123,16 +123,17 @@ accepted: "doit être accepté(e)" empty: "doit être renseigné(e)" blank: "doit être renseigné(e)" - too_long: "est trop long (pas plus de {{count}} caractères)" - too_short: "est trop court (au moins {{count}} caractères)" - wrong_length: "ne fait pas la bonne longueur (doit comporter {{count}} caractères)" + too_long: "est trop long (pas plus de %{count} caractères)" + too_short: "est trop court (au moins %{count} caractères)" + wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)" taken: "est déjà utilisé" not_a_number: "n'est pas un nombre" - greater_than: "doit être supérieur à {{count}}" - greater_than_or_equal_to: "doit être supérieur ou égal à {{count}}" - equal_to: "doit être égal à {{count}}" - less_than: "doit être inférieur à {{count}}" - less_than_or_equal_to: "doit être inférieur ou égal à {{count}}" + not_a_date: "n'est pas une date valide" + greater_than: "doit être supérieur à %{count}" + greater_than_or_equal_to: "doit être supérieur ou égal à %{count}" + equal_to: "doit être égal à %{count}" + less_than: "doit être inférieur à %{count}" + less_than_or_equal_to: "doit être inférieur ou égal à %{count}" odd: "doit être impair" even: "doit être pair" greater_than_start_date: "doit être postérieure à la date de début" @@ -165,25 +166,26 @@ notice_successful_create: Création effectuée avec succès. notice_successful_update: Mise à jour effectuée avec succès. notice_successful_delete: Suppression effectuée avec succès. - notice_successful_connection: Connection réussie. + notice_successful_connection: Connexion réussie. notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée." notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible. - notice_not_authorized: "Vous n'êtes pas autorisés à accéder à cette page." + notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page." notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé. - notice_email_sent: "Un email a été envoyé à {{value}}" - notice_email_error: "Erreur lors de l'envoi de l'email ({{value}})" + notice_email_sent: "Un email a été envoyé à %{value}" + notice_email_error: "Erreur lors de l'envoi de l'email (%{value})" notice_feeds_access_key_reseted: "Votre clé d'accès aux flux RSS a été réinitialisée." - notice_failed_to_save_issues: "{{count}} demande(s) sur les {{total}} sélectionnées n'ont pas pu être mise(s) à jour : {{ids}}." + notice_failed_to_save_issues: "%{count} demande(s) sur les %{total} sélectionnées n'ont pas pu être mise(s) à jour : %{ids}." notice_no_issue_selected: "Aucune demande sélectionnée ! Cochez les demandes que vous voulez mettre à jour." notice_account_pending: "Votre compte a été créé et attend l'approbation de l'administrateur." notice_default_data_loaded: Paramétrage par défaut chargé avec succès. notice_unable_delete_version: Impossible de supprimer cette version. notice_issue_done_ratios_updated: L'avancement des demandes a été mis à jour. notice_api_access_key_reseted: Votre clé d'accès API a été réinitialisée. + notice_gantt_chart_truncated: "Le diagramme a été tronqué car il excède le nombre maximal d'éléments pouvant être affichés (%{max})" - error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramétrage : {{value}}" + error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramétrage : %{value}" error_scm_not_found: "L'entrée et/ou la révision demandée n'existe pas dans le dépôt." - error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt : {{value}}" + error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt : %{value}" error_scm_annotate: "L'entrée n'existe pas ou ne peut pas être annotée." error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas à ce projet" error_can_not_reopen_issue_on_closed_version: 'Une demande assignée à une version fermée ne peut pas être réouverte' @@ -192,25 +194,25 @@ error_workflow_copy_target: 'Veuillez sélectionner les trackers et rôles cibles' error_issue_done_ratios_not_updated: L'avancement des demandes n'a pas pu être mis à jour. - warning_attachments_not_saved: "{{count}} fichier(s) n'ont pas pu être sauvegardés." + warning_attachments_not_saved: "%{count} fichier(s) n'ont pas pu être sauvegardés." - mail_subject_lost_password: "Votre mot de passe {{value}}" + mail_subject_lost_password: "Votre mot de passe %{value}" mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant :' - mail_subject_register: "Activation de votre compte {{value}}" + mail_subject_register: "Activation de votre compte %{value}" mail_body_register: 'Pour activer votre compte, cliquez sur le lien suivant :' - mail_body_account_information_external: "Vous pouvez utiliser votre compte {{value}} pour vous connecter." + mail_body_account_information_external: "Vous pouvez utiliser votre compte %{value} pour vous connecter." mail_body_account_information: Paramètres de connexion de votre compte - mail_subject_account_activation_request: "Demande d'activation d'un compte {{value}}" - mail_body_account_activation_request: "Un nouvel utilisateur ({{value}}) s'est inscrit. Son compte nécessite votre approbation :" - mail_subject_reminder: "{{count}} demande(s) arrivent à échéance ({{days}})" - mail_body_reminder: "{{count}} demande(s) qui vous sont assignées arrivent à échéance dans les {{days}} prochains jours :" - mail_subject_wiki_content_added: "Page wiki '{{id}}' ajoutée" - mail_body_wiki_content_added: "La page wiki '{{id}}' a été ajoutée par {{author}}." - mail_subject_wiki_content_updated: "Page wiki '{{id}}' mise à jour" - mail_body_wiki_content_updated: "La page wiki '{{id}}' a été mise à jour par {{author}}." + mail_subject_account_activation_request: "Demande d'activation d'un compte %{value}" + mail_body_account_activation_request: "Un nouvel utilisateur (%{value}) s'est inscrit. Son compte nécessite votre approbation :" + mail_subject_reminder: "%{count} demande(s) arrivent à échéance (%{days})" + mail_body_reminder: "%{count} demande(s) qui vous sont assignées arrivent à échéance dans les %{days} prochains jours :" + mail_subject_wiki_content_added: "Page wiki '%{id}' ajoutée" + mail_body_wiki_content_added: "La page wiki '%{id}' a été ajoutée par %{author}." + mail_subject_wiki_content_updated: "Page wiki '%{id}' mise à jour" + mail_body_wiki_content_updated: "La page wiki '%{id}' a été mise à jour par %{author}." gui_validation_error: 1 erreur - gui_validation_error_plural: "{{count}} erreurs" + gui_validation_error_plural: "%{count} erreurs" field_name: Nom field_description: Description @@ -272,6 +274,7 @@ field_attr_lastname: Attribut Nom 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_auth_source: Mode d'authentification field_hide_mail: Cacher mon adresse mail @@ -304,6 +307,7 @@ field_active: Actif 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é" setting_app_title: Titre de l'application setting_app_subtitle: Sous-titre de l'application @@ -320,11 +324,11 @@ setting_text_formatting: Formatage du texte setting_wiki_compression: Compression historique wiki setting_feeds_limit: Limite du contenu des flux RSS - setting_default_projects_public: Définir les nouveaux projects comme publics par défaut + setting_default_projects_public: Définir les nouveaux projets comme publics par défaut setting_autofetch_changesets: Récupération auto. des commits setting_sys_api_enabled: Activer les WS pour la gestion des dépôts - setting_commit_ref_keywords: Mot-clés de référencement - setting_commit_fix_keywords: Mot-clés de résolution + setting_commit_ref_keywords: Mots-clés de référencement + setting_commit_fix_keywords: Mots-clés de résolution setting_autologin: Autologin setting_date_format: Format de date setting_time_format: Format d'heure @@ -346,7 +350,7 @@ setting_gravatar_enabled: Afficher les Gravatar des utilisateurs setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne - setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier" + setting_repository_log_display_limit: "Nombre maximum de révisions affichées sur l'historique d'un fichier" setting_openid: "Autoriser l'authentification et l'enregistrement OpenID" setting_password_min_length: Longueur minimum des mots de passe setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet @@ -358,12 +362,15 @@ setting_gravatar_default: Image Gravatar par défaut setting_start_of_week: Jour de début des calendriers setting_cache_formatted_text: Mettre en cache le texte formaté + setting_commit_logtime_enabled: Permettre la saisie de temps + setting_commit_logtime_activity_id: Activité pour le temps saisi + setting_gantt_items_limit: Nombre maximum d'éléments affichés sur le gantt permission_add_project: Créer un projet permission_add_subprojects: Créer des sous-projets permission_edit_project: Modifier le projet permission_select_project_modules: Choisir les modules - permission_manage_members: Gérer les members + permission_manage_members: Gérer les membres permission_manage_versions: Gérer les versions permission_manage_categories: Gérer les catégories de demandes permission_view_issues: Voir les demandes @@ -434,7 +441,7 @@ label_x_projects: zero: aucun projet one: un projet - other: "{{count}} projets" + other: "%{count} projets" label_project_all: Tous les projets label_project_latest: Derniers projets label_issue: Demande @@ -443,7 +450,10 @@ label_issue_view_all: Voir toutes les demandes label_issue_added: Demande ajoutée label_issue_updated: Demande mise à jour - label_issues_by: "Demandes par {{value}}" + label_issue_note_added: Note ajoutée + label_issue_status_updated: Statut changé + label_issue_priority_updated: Priorité changée + label_issues_by: "Demandes par %{value}" label_document: Document label_document_new: Nouveau document label_document_plural: Documents @@ -480,7 +490,7 @@ label_my_page: Ma page label_my_account: Mon compte label_my_projects: Mes projets - label_my_page_block: Ma page bloque + label_my_page_block: Blocs disponibles label_administration: Administration label_login: Connexion label_logout: Déconnexion @@ -491,7 +501,7 @@ label_registered_on: "Inscrit le " label_activity: Activité label_overall_activity: Activité globale - label_user_activity: "Activité de {{value}}" + label_user_activity: "Activité de %{value}" label_new: Nouveau label_logged_as: Connecté en tant que label_environment: Environnement @@ -501,7 +511,7 @@ label_auth_source_plural: Modes d'authentification label_subproject_plural: Sous-projets label_subproject_new: Nouveau sous-projet - label_and_its_subprojects: "{{value}} et ses sous-projets" + label_and_its_subprojects: "%{value} et ses sous-projets" label_min_max_length: Longueurs mini - maxi label_list: Liste label_date: Date @@ -512,8 +522,8 @@ label_text: Texte long label_attribute: Attribut label_attribute_plural: Attributs - label_download: "{{count}} téléchargement" - label_download_plural: "{{count}} téléchargements" + label_download: "%{count} téléchargement" + label_download_plural: "%{count} téléchargements" label_no_data: Aucune donnée à afficher label_change_status: Changer le statut label_history: Historique @@ -544,17 +554,17 @@ label_closed_issues: fermé label_closed_issues_plural: fermés label_x_open_issues_abbr_on_total: - zero: 0 ouvert sur {{total}} - one: 1 ouvert sur {{total}} - other: "{{count}} ouverts sur {{total}}" + zero: 0 ouvert sur %{total} + one: 1 ouvert sur %{total} + other: "%{count} ouverts sur %{total}" label_x_open_issues_abbr: zero: 0 ouvert one: 1 ouvert - other: "{{count}} ouverts" + other: "%{count} ouverts" label_x_closed_issues_abbr: zero: 0 fermé one: 1 fermé - other: "{{count}} fermés" + other: "%{count} fermés" label_total: Total label_permissions: Permissions label_current_status: Statut actuel @@ -572,7 +582,7 @@ label_months_from: mois depuis label_gantt: Gantt label_internal: Interne - label_last_changes: "{{count}} derniers changements" + label_last_changes: "%{count} derniers changements" label_change_view_all: Voir tous les changements label_personalize_page: Personnaliser cette page label_comment: Commentaire @@ -580,13 +590,14 @@ label_x_comments: zero: aucun commentaire one: un commentaire - other: "{{count}} commentaires" + other: "%{count} commentaires" label_comment_add: Ajouter un commentaire label_comment_added: Commentaire ajouté label_comment_delete: Supprimer les commentaires label_query: Rapport personnalisé label_query_plural: Rapports personnalisés label_query_new: Nouveau rapport + label_my_queries: Mes rapports personnalisés label_filter_add: "Ajouter le filtre " label_filter_plural: Filtres label_equals: égal @@ -599,7 +610,7 @@ label_yesterday: hier label_this_week: cette semaine label_last_week: la semaine dernière - label_last_n_days: "les {{count}} derniers jours" + label_last_n_days: "les %{count} derniers jours" label_this_month: ce mois-ci label_last_month: le mois dernier label_this_year: cette année @@ -613,8 +624,8 @@ label_repository: Dépôt label_repository_plural: Dépôts label_browse: Parcourir - label_modification: "{{count}} modification" - label_modification_plural: "{{count}} modifications" + label_modification: "%{count} modification" + label_modification_plural: "%{count} modifications" label_revision: "Révision " label_revision_plural: Révisions label_associated_revisions: Révisions associées @@ -632,8 +643,8 @@ label_sort_lower: Descendre label_sort_lowest: Descendre en dernier label_roadmap: Roadmap - label_roadmap_due_in: "Échéance dans {{value}}" - label_roadmap_overdue: "En retard de {{value}}" + label_roadmap_due_in: "Échéance dans %{value}" + label_roadmap_overdue: "En retard de %{value}" label_roadmap_no_issues: Aucune demande pour cette version label_search: "Recherche " label_result_plural: Résultats @@ -651,8 +662,8 @@ label_changes_details: Détails de tous les changements label_issue_tracking: Suivi des demandes label_spent_time: Temps passé - label_f_hour: "{{value}} heure" - label_f_hour_plural: "{{value}} heures" + label_f_hour: "%{value} heure" + label_f_hour_plural: "%{value} heures" label_time_tracking: Suivi du temps label_change_plural: Changements label_statistics: Statistiques @@ -701,13 +712,13 @@ label_date_from: Du label_date_to: Au label_language_based: Basé sur la langue de l'utilisateur - label_sort_by: "Trier par {{value}}" + label_sort_by: "Trier par %{value}" label_send_test_email: Envoyer un email de test - label_feeds_access_key_created_on: "Clé d'accès RSS créée il y a {{value}}" + label_feeds_access_key_created_on: "Clé d'accès RSS créée il y a %{value}" label_module_plural: Modules - label_added_time_by: "Ajouté par {{author}} il y a {{age}}" - label_updated_time_by: "Mis à jour par {{author}} il y a {{age}}" - label_updated_time: "Mis à jour il y a {{value}}" + label_added_time_by: "Ajouté par %{author} il y a %{age}" + label_updated_time_by: "Mis à jour par %{author} il y a %{age}" + label_updated_time: "Mis à jour il y a %{value}" label_jump_to_a_project: Aller à un projet... label_file_plural: Fichiers label_changeset_plural: Révisions @@ -723,7 +734,7 @@ label_registration_activation_by_email: activation du compte par email label_registration_manual_activation: activation manuelle du compte label_registration_automatic_activation: activation automatique du compte - label_display_per_page: "Par page : {{value}}" + label_display_per_page: "Par page : %{value}" label_age: Âge label_change_properties: Changer les propriétés label_general: Général @@ -746,7 +757,7 @@ label_sort: Tri label_ascending: Croissant label_descending: Décroissant - label_date_from_to: Du {{start}} au {{end}} + label_date_from_to: Du %{start} au %{end} label_wiki_content_added: Page wiki ajoutée label_wiki_content_updated: Page wiki mise à jour label_group_plural: Groupes @@ -764,12 +775,12 @@ label_update_issue_done_ratios: Mettre à jour l'avancement des demandes label_display_used_statuses_only: N'afficher que les statuts utilisés dans ce tracker label_api_access_key: Clé d'accès API - label_api_access_key_created_on: Clé d'accès API créée il y a {{value}} + label_api_access_key_created_on: Clé d'accès API créée il y a %{value} label_feeds_access_key: Clé d'accès RSS label_missing_api_access_key: Clé d'accès API manquante label_missing_feeds_access_key: Clé d'accès RSS manquante label_close_versions: Fermer les versions terminées - label_revision_id: Revision {{value}} + label_revision_id: Revision %{value} label_profile: Profil label_subtask_plural: Sous-tâches label_project_copy_notifications: Envoyer les notifications durant la copie du projet @@ -832,53 +843,55 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 pour aucune restriction text_project_destroy_confirmation: Êtes-vous sûr de vouloir supprimer ce projet et toutes ses données ? - text_subprojects_destroy_warning: "Ses sous-projets : {{value}} seront également supprimés." + text_subprojects_destroy_warning: "Ses sous-projets : %{value} seront également supprimés." text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow text_are_you_sure: Êtes-vous sûr ? text_tip_issue_begin_day: tâche commençant ce jour text_tip_issue_end_day: tâche finissant ce jour text_tip_issue_begin_end_day: tâche commençant et finissant ce jour text_project_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres et tirets sont autorisés.
    Un fois sauvegardé, l''identifiant ne pourra plus être modifié.' - text_caracters_maximum: "{{count}} caractères maximum." - text_caracters_minimum: "{{count}} caractères minimum." - text_length_between: "Longueur comprise entre {{min}} et {{max}} caractères." + text_caracters_maximum: "%{count} caractères maximum." + text_caracters_minimum: "%{count} caractères minimum." + text_length_between: "Longueur comprise entre %{min} et %{max} caractères." text_tracker_no_workflow: Aucun worflow n'est défini pour ce tracker text_unallowed_characters: Caractères non autorisés text_comma_separated: Plusieurs valeurs possibles (séparées par des virgules). text_line_separated: Plusieurs valeurs possibles (une valeur par ligne). text_issues_ref_in_commit_messages: Référencement et résolution des demandes dans les commentaires de commits - text_issue_added: "La demande {{id}} a été soumise par {{author}}." - text_issue_updated: "La demande {{id}} a été mise à jour par {{author}}." + text_issue_added: "La demande %{id} a été soumise par %{author}." + text_issue_updated: "La demande %{id} a été mise à jour par %{author}." text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ? - text_issue_category_destroy_question: "{{count}} demandes sont affectées à cette catégories. Que voulez-vous faire ?" + text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégorie. Que voulez-vous faire ?" text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)." text_no_configuration_data: "Les rôles, trackers, statuts et le workflow ne sont pas encore paramétrés.\nIl est vivement recommandé de charger le paramétrage par defaut. Vous pourrez le modifier une fois chargé." text_load_default_configuration: Charger le paramétrage par défaut - text_status_changed_by_changeset: "Appliqué par commit {{value}}." + 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_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 text_plugin_assets_writable: Répertoire public des plugins accessible en écriture text_rmagick_available: Bibliothèque RMagick présente (optionnelle) - text_destroy_time_entries_question: "{{hours}} heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?" + text_destroy_time_entries_question: "%{hours} heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?" text_destroy_time_entries: Supprimer les heures text_assign_time_entries_to_project: Reporter les heures sur le projet text_reassign_time_entries: 'Reporter les heures sur cette demande:' - text_user_wrote: "{{value}} a écrit :" - text_enumeration_destroy_question: "Cette valeur est affectée à {{count}} objets." + text_user_wrote: "%{value} a écrit :" + text_enumeration_destroy_question: "Cette valeur est affectée à %{count} objets." text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:' - text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer." + text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/configuration.yml et redémarrez l'application pour les activer." text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés." text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.' text_custom_field_possible_values_info: 'Une ligne par valeur' - text_wiki_page_destroy_question: "Cette page possède {{descendants}} sous-page(s) et descendante(s). Que voulez-vous faire ?" + text_wiki_page_destroy_question: "Cette page possède %{descendants} sous-page(s) et descendante(s). Que voulez-vous faire ?" text_wiki_page_nullify_children: "Conserver les sous-pages en tant que pages racines" text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes" text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page" text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?" + text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardé qui sera perdu si vous quittez la page." default_role_manager: "Manager " default_role_developer: "Développeur " @@ -912,20 +925,21 @@ label_branch: Branche error_no_tracker_in_project: "Aucun tracker n'est associé à ce projet. Vérifier la configuration du projet." error_no_default_issue_status: "Aucun statut de demande n'est défini par défaut. Vérifier votre configuration (Administration -> Statuts de demandes)." - text_journal_changed: "{{label}} changé de {{old}} à {{new}}" - text_journal_set_to: "{{label}} mis à {{value}}" - text_journal_deleted: "{{label}} {{old}} supprimé" - text_journal_added: "{{label}} {{value}} ajouté" + text_journal_changed: "%{label} changé de %{old} à %{new}" + text_journal_changed_no_detail: "%{label} mis à jour" + text_journal_set_to: "%{label} mis à %{value}" + text_journal_deleted: "%{label} %{old} supprimé" + text_journal_added: "%{label} %{value} ajouté" enumeration_system_activity: Activité système label_board_sticky: Sticky label_board_locked: Verrouillé error_unable_delete_issue_status: Impossible de supprimer le statut de demande error_can_not_delete_custom_field: Impossible de supprimer le champ personnalisé - error_unable_to_connect: Connexion impossible ({{value}}) + error_unable_to_connect: Connexion impossible (%{value}) error_can_not_remove_role: Ce rôle est utilisé et ne peut pas être supprimé. error_can_not_delete_tracker: Ce tracker contient des demandes et ne peut pas être supprimé. field_principal: Principal - notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: {{errors}}." + notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: %{errors}." text_zoom_out: Zoom arrière text_zoom_in: Zoom avant notice_unable_delete_time_entry: Impossible de supprimer le temps passé. @@ -933,7 +947,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendrier - button_edit_associated_wikipage: "Modifier la page wiki associée: {{page_title}}" + button_edit_associated_wikipage: "Modifier la page wiki associée: %{page_title}" text_are_you_sure_with_children: Supprimer la demande et toutes ses sous-demandes ? field_text: Champ texte label_user_mail_option_only_owner: Seulement pour ce que j'ai créé @@ -943,5 +957,4 @@ label_user_mail_option_none: Aucune notification field_member_of_group: Groupe de l'assigné field_assigned_to_role: Rôle de l'assigné - field_start_date: Start date setting_emails_header: Emails header diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/gl.yml.svn-base --- a/config/locales/.svn/text-base/gl.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/gl.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -74,41 +74,41 @@ zero: 'menos dun segundo' one: '1 segundo' few: 'poucos segundos' - other: '{{count}} segundos' + other: '%{count} segundos' x_seconds: one: '1 segundo' - other: '{{count}} segundos' + other: '%{count} segundos' less_than_x_minutes: zero: 'menos dun minuto' one: '1 minuto' - other: '{{count}} minutos' + other: '%{count} minutos' x_minutes: one: '1 minuto' - other: '{{count}} minuto' + other: '%{count} minuto' about_x_hours: one: 'aproximadamente unha hora' - other: '{{count}} horas' + other: '%{count} horas' x_days: one: '1 día' - other: '{{count}} días' + other: '%{count} días' x_weeks: one: '1 semana' - other: '{{count}} semanas' + other: '%{count} semanas' about_x_months: one: 'aproximadamente 1 mes' - other: '{{count}} meses' + other: '%{count} meses' x_months: one: '1 mes' - other: '{{count}} meses' + other: '%{count} meses' about_x_years: one: 'aproximadamente 1 ano' - other: '{{count}} anos' + other: '%{count} anos' over_x_years: one: 'máis dun ano' - other: '{{count}} anos' + other: '%{count} anos' almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" now: 'agora' today: 'hoxe' tomorrow: 'mañá' @@ -124,8 +124,8 @@ errors: template: header: - one: "1 erro evitou que se poidese gardar o {{model}}" - other: "{{count}} erros evitaron que se poidese gardar o {{model}}" + one: "1 erro evitou que se poidese gardar o %{model}" + other: "%{count} erros evitaron que se poidese gardar o %{model}" body: "Atopáronse os seguintes problemas:" messages: inclusion: "non está incluido na lista" @@ -135,16 +135,16 @@ accepted: "debe ser aceptado" empty: "non pode estar valeiro" blank: "non pode estar en blanco" - too_long: "é demasiado longo (non máis de {{count}} carácteres)" - too_short: "é demasiado curto (non menos de {{count}} carácteres)" - wrong_length: "non ten a lonxitude correcta (debe ser de {{count}} carácteres)" + too_long: "é demasiado longo (non máis de %{count} carácteres)" + too_short: "é demasiado curto (non menos de %{count} carácteres)" + wrong_length: "non ten a lonxitude correcta (debe ser de %{count} carácteres)" taken: "non está dispoñible" not_a_number: "non é un número" - greater_than: "debe ser maior que {{count}}" - greater_than_or_equal_to: "debe ser maior ou igual que {{count}}" - equal_to: "debe ser igual a {{count}}" - less_than: "debe ser menor que {{count}}" - less_than_or_equal_to: "debe ser menor ou igual que {{count}}" + greater_than: "debe ser maior que %{count}" + greater_than_or_equal_to: "debe ser maior ou igual que %{count}" + equal_to: "debe ser igual a %{count}" + less_than: "debe ser menor que %{count}" + less_than_or_equal_to: "debe ser menor ou igual que %{count}" odd: "debe ser par" even: "debe ser impar" greater_than_start_date: "debe ser posterior á data de comezo" @@ -216,10 +216,10 @@ enumeration_activities: Actividades (tempo dedicado) enumeration_doc_categories: Categorías do documento enumeration_issue_priorities: Prioridade das peticións - error_can_t_load_default_data: "Non se puido cargar a configuración por defecto: {{value}}" + error_can_t_load_default_data: "Non se puido cargar a configuración por defecto: %{value}" error_issue_not_found_in_project: 'A petición non se atopa ou non está asociada a este proxecto' error_scm_annotate: "Non existe a entrada ou non se puido anotar" - error_scm_command_failed: "Aconteceu un erro ao acceder ó repositorio: {{value}}" + error_scm_command_failed: "Aconteceu un erro ao acceder ó repositorio: %{value}" error_scm_not_found: "A entrada e/ou revisión non existe no repositorio." field_account: Conta field_activity: Actividade @@ -290,6 +290,7 @@ field_role: Perfil field_searchable: Incluír nas búsquedas field_spent_on: Data + field_start_date: Data de inicio field_start_page: Páxina principal field_status: Estado field_subject: Tema @@ -315,19 +316,19 @@ general_text_no: 'non' general_text_yes: 'si' gui_validation_error: 1 erro - gui_validation_error_plural: "{{count}} erros" + gui_validation_error_plural: "%{count} erros" label_activity: Actividade label_add_another_file: Engadir outro arquivo label_add_note: Engadir unha nota label_added: engadido - label_added_time_by: "Engadido por {{author}} fai {{age}}" + label_added_time_by: "Engadido por %{author} fai %{age}" label_administration: Administración label_age: Idade label_ago: fai label_all: todos label_all_time: todo o tempo label_all_words: Tódalas palabras - label_and_its_subprojects: "{{value}} e proxectos secundarios" + label_and_its_subprojects: "%{value} e proxectos secundarios" label_applied_status: Aplicar estado label_assigned_to_me_issues: Peticións asignadas a min label_associated_revisions: Revisións asociadas @@ -360,17 +361,17 @@ label_closed_issues: pechada label_closed_issues_plural: pechadas label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_comment: Comentario label_comment_add: Engadir un comentario label_comment_added: Comentario engadido @@ -379,7 +380,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_commits_per_author: Commits por autor label_commits_per_month: Commits por mes label_confirmation: Confirmación @@ -403,13 +404,13 @@ label_diff_inline: en liña label_diff_side_by_side: cara a cara label_disabled: deshabilitado - label_display_per_page: "Por páxina: {{value}}" + label_display_per_page: "Por páxina: %{value}" label_document: Documento label_document_added: Documento engadido label_document_new: Novo documento label_document_plural: Documentos - label_download: "{{count}} Descarga" - label_download_plural: "{{count}} Descargas" + label_download: "%{count} Descarga" + label_download_plural: "%{count} Descargas" label_downloads_abbr: D/L label_duplicated_by: duplicada por label_duplicates: duplicada de @@ -421,10 +422,10 @@ label_equals: igual label_example: Exemplo label_export_to: 'Exportar a:' - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_feed_plural: Feeds - label_feeds_access_key_created_on: "Clave de acceso por RSS creada fai {{value}}" + label_feeds_access_key_created_on: "Clave de acceso por RSS creada fai %{value}" label_file_added: Arquivo engadido label_file_plural: Arquivos label_filter_add: Engadir o filtro @@ -461,13 +462,13 @@ label_issue_updated: Petición actualizada label_issue_view_all: Ver tódalas peticións label_issue_watchers: Seguidores - label_issues_by: "Peticións por {{value}}" + label_issues_by: "Peticións por %{value}" label_jump_to_a_project: Ir ao proxecto... label_language_based: Baseado no idioma - label_last_changes: "últimos {{count}} cambios" + label_last_changes: "últimos %{count} cambios" label_last_login: Última conexión label_last_month: último mes - label_last_n_days: "últimos {{count}} días" + label_last_n_days: "últimos %{count} días" label_last_week: última semana label_latest_revision: Última revisión label_latest_revision_plural: Últimas revisións @@ -488,8 +489,8 @@ label_message_plural: Mensaxes label_message_posted: Mensaxe engadida label_min_max_length: Lonxitude mín - máx - label_modification: "{{count}} modificación" - label_modification_plural: "{{count}} modificacións" + label_modification: "%{count} modificación" + label_modification_plural: "%{count} modificacións" label_modified: modificado label_module_plural: Módulos label_month: Mes @@ -540,7 +541,7 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_public_projects: Proxectos públicos label_query: Consulta personalizada label_query_new: Nova consulta @@ -567,9 +568,9 @@ label_revision: Revisión label_revision_plural: Revisións label_roadmap: Planificación - label_roadmap_due_in: "Remata en {{value}}" + label_roadmap_due_in: "Remata en %{value}" label_roadmap_no_issues: Non hai peticións para esta versión - label_roadmap_overdue: "{{value}} tarde" + label_roadmap_overdue: "%{value} tarde" label_role: Perfil label_role_and_permissions: Perfiles e permisos label_role_new: Novo perfil @@ -581,7 +582,7 @@ label_send_test_email: Enviar un correo de proba label_settings: Configuración label_show_completed_versions: Mostra as versións rematadas - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_sort_higher: Subir label_sort_highest: Primeiro label_sort_lower: Baixar @@ -605,11 +606,11 @@ label_tracker: Tipo label_tracker_new: Novo tipo label_tracker_plural: Tipos de peticións - label_updated_time: "Actualizado fai {{value}}" - label_updated_time_by: "Actualizado por {{author}} fai {{age}}" + label_updated_time: "Actualizado fai %{value}" + label_updated_time_by: "Actualizado por %{author} fai %{age}" label_used_by: Utilizado por label_user: Usuario - label_user_activity: "Actividade de {{value}}" + label_user_activity: "Actividade de %{value}" label_user_mail_no_self_notified: "Non quero ser avisado de cambios feitos por min" label_user_mail_option_all: "Para calquera evento en tódolos proxectos" label_user_mail_option_selected: "Para calquera evento dos proxectos seleccionados..." @@ -630,16 +631,16 @@ label_workflow: Fluxo de traballo label_year: Ano label_yesterday: onte - mail_body_account_activation_request: "Inscribiuse un novo usuario ({{value}}). A conta está pendente de aprobación:" + mail_body_account_activation_request: "Inscribiuse un novo usuario (%{value}). A conta está pendente de aprobación:" mail_body_account_information: Información sobre a súa conta - mail_body_account_information_external: "Pode usar a súa conta {{value}} para conectarse." + mail_body_account_information_external: "Pode usar a súa conta %{value} para conectarse." mail_body_lost_password: 'Para cambiar o seu contrasinal, faga clic no seguinte enlace:' mail_body_register: 'Para activar a súa conta, faga clic no seguinte enlace:' - mail_body_reminder: "{{count}} petición(s) asignadas a ti rematan nos próximos {{days}} días:" - mail_subject_account_activation_request: "Petición de activación de conta {{value}}" - mail_subject_lost_password: "O teu contrasinal de {{value}}" - mail_subject_register: "Activación da conta de {{value}}" - mail_subject_reminder: "{{count}} petición(s) rematarán nos próximos {{days}} días" + mail_body_reminder: "%{count} petición(s) asignadas a ti rematan nos próximos %{days} días:" + mail_subject_account_activation_request: "Petición de activación de conta %{value}" + mail_subject_lost_password: "O teu contrasinal de %{value}" + mail_subject_register: "Activación da conta de %{value}" + mail_subject_reminder: "%{count} petición(s) rematarán nos próximos %{days} días" notice_account_activated: A súa conta foi activada. Xa pode conectarse. notice_account_invalid_creditentials: Usuario ou contrasinal inválido. notice_account_lost_email_sent: Enviouse un correo con instrucións para elixir un novo contrasinal. @@ -651,9 +652,9 @@ notice_account_wrong_password: Contrasinal incorrecto. notice_can_t_change_password: Esta conta utiliza unha fonte de autenticación externa. Non é posible cambiar o contrasinal. 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_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_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. @@ -764,25 +765,25 @@ status_registered: rexistrado text_are_you_sure: ¿Está seguro? text_assign_time_entries_to_project: Asignar as horas ó proxecto - text_caracters_maximum: "{{count}} caracteres como máximo." - text_caracters_minimum: "{{count}} caracteres como mínimo" + text_caracters_maximum: "%{count} caracteres como máximo." + text_caracters_minimum: "%{count} caracteres como mínimo" text_comma_separated: Múltiples valores permitidos (separados por coma). text_default_administrator_account_changed: Conta de administrador por defecto modificada text_destroy_time_entries: Borrar as horas - text_destroy_time_entries_question: Existen {{hours}} horas asignadas á petición que quere borrar. ¿Que quere facer ? + text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. ¿Que quere facer ? text_diff_truncated: '... Diferencia truncada por exceder o máximo tamaño visualizable.' - text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/email.yml e reinicie a aplicación para activar os cambios." + text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/configuration.yml e reinicie a aplicación para activar os cambios." text_enumeration_category_reassign_to: 'Reasignar ó seguinte valor:' - text_enumeration_destroy_question: "{{count}} obxectos con este valor asignado." + text_enumeration_destroy_question: "%{count} obxectos con este valor asignado." text_file_repository_writable: Pódese escribir no repositorio - text_issue_added: "Petición {{id}} engadida por {{author}}." + text_issue_added: "Petición %{id} engadida por %{author}." text_issue_category_destroy_assignments: Deixar as peticións sen categoría - text_issue_category_destroy_question: "Algunhas peticións ({{count}}) están asignadas a esta categoría. ¿Que desexa facer?" + text_issue_category_destroy_question: "Algunhas peticións (%{count}) están asignadas a esta categoría. ¿Que desexa facer?" text_issue_category_reassign_to: Reasignar as peticións á categoría - text_issue_updated: "A petición {{id}} actualizouse por {{author}}." + text_issue_updated: "A petición %{id} actualizouse por %{author}." text_issues_destroy_confirmation: '¿Seguro que quere borrar as peticións seleccionadas?' text_issues_ref_in_commit_messages: Referencia e petición de corrección nas mensaxes - text_length_between: "Lonxitude entre {{min}} e {{max}} caracteres." + text_length_between: "Lonxitude entre %{min} e %{max} caracteres." text_load_default_configuration: Cargar a configuración por defecto text_min_max_length_info: 0 para ningunha restrición text_no_configuration_data: "Inda non se configuraron perfiles, nin tipos, estados e fluxo de traballo asociado a peticións. Recoméndase encarecidamente cargar a configuración por defecto. Unha vez cargada, poderá modificala." @@ -794,18 +795,18 @@ text_rmagick_available: RMagick dispoñible (opcional) text_select_mail_notifications: Seleccionar os eventos a notificar text_select_project_modules: 'Seleccione os módulos a activar para este proxecto:' - text_status_changed_by_changeset: "Aplicado nos cambios {{value}}" - text_subprojects_destroy_warning: "Os proxectos secundarios: {{value}} tamén se eliminarán" + text_status_changed_by_changeset: "Aplicado nos cambios %{value}" + text_subprojects_destroy_warning: "Os proxectos secundarios: %{value} tamén se eliminarán" text_tip_issue_begin_day: tarefa que comeza este día text_tip_issue_begin_end_day: tarefa que comeza e remata este día text_tip_issue_end_day: tarefa que remata este día text_tracker_no_workflow: Non hai ningún fluxo de traballo definido para este tipo de petición text_unallowed_characters: Caracteres non permitidos text_user_mail_option: "Dos proxectos non seleccionados, só recibirá notificacións sobre elementos monitorizados ou elementos nos que estea involucrado (por exemplo, peticións das que vostede sexa autor ou asignadas a vostede)." - text_user_wrote: "{{value}} escribiu:" + text_user_wrote: "%{value} escribiu:" text_wiki_destroy_confirmation: ¿Seguro que quere borrar o wiki e todo o seu contido? text_workflow_edit: Seleccionar un fluxo de traballo para actualizar - warning_attachments_not_saved: "{{count}} file(s) could not be saved." + warning_attachments_not_saved: "%{count} file(s) could not be saved." field_editable: Editable text_plugin_assets_writable: Plugin assets directory writable label_display: Display @@ -821,21 +822,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -843,14 +844,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -885,9 +886,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -914,12 +915,12 @@ 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_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}}." + 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. @@ -927,7 +928,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -938,8 +939,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/he.yml.svn-base --- a/config/locales/.svn/text-base/he.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/he.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -38,38 +38,38 @@ less_than_x_seconds: zero: 'פחות משניה' one: 'פחות משניה' - other: 'פחות מ־{{count}} שניות' + other: 'פחות מ־%{count} שניות' x_seconds: one: 'שניה ×חת' - other: '{{count}} שניות' + other: '%{count} שניות' less_than_x_minutes: zero: 'פחות מדקה ×חת' one: 'פחות מדקה ×חת' - other: 'פחות מ־{{count}} דקות' + other: 'פחות מ־%{count} דקות' x_minutes: one: 'דקה ×חת' - other: '{{count}} דקות' + other: '%{count} דקות' about_x_hours: one: 'בערך שעה ×חת' - other: 'בערך {{count}} שעות' + other: 'בערך %{count} שעות' x_days: one: '×™×•× ×חד' - other: '{{count}} ימי×' + other: '%{count} ימי×' about_x_months: one: 'בערך חודש ×חד' - other: 'בערך {{count}} חודשי×' + other: 'בערך %{count} חודשי×' x_months: one: 'חודש ×חד' - other: '{{count}} חודשי×' + other: '%{count} חודשי×' about_x_years: one: 'בערך שנה ×חת' - other: 'בערך {{count}} שני×' + other: 'בערך %{count} שני×' over_x_years: one: 'מעל שנה ×חת' - other: 'מעל {{count}} שני×' + other: 'מעל %{count} שני×' almost_x_years: one: "כמעט שנה" - other: "כמעט {{count}} שני×" + other: "כמעט %{count} שני×" number: format: @@ -100,6 +100,10 @@ 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: "×œ× ×–×ž×™×Ÿ" @@ -108,16 +112,16 @@ accepted: "חייב ב×ישור" empty: "חייב להכלל" blank: "חייב להכלל" - too_long: "×רוך מדי (×œ× ×™×•×ª×¨ מ־{{count}} תוי×)" - too_short: "קצר מדי (×œ× ×™×•×ª×¨ מ־{{count}} תוי×)" - wrong_length: "×œ× ×‘×ורך הנכון (חייב להיות {{count}} תוי×)" + too_long: "×רוך מדי (×œ× ×™×•×ª×¨ מ־%{count} תוי×)" + too_short: "קצר מדי (×œ× ×™×•×ª×¨ מ־%{count} תוי×)" + wrong_length: "×œ× ×‘×ורך הנכון (חייב להיות %{count} תוי×)" taken: "×œ× ×–×ž×™×Ÿ" not_a_number: "×”×•× ×œ× ×ž×¡×¤×¨" - greater_than: "חייב להיות גדול מ־{{count}}" - greater_than_or_equal_to: "חייב להיות גדול ×ו שווה ל־{{count}}" - equal_to: "חייב להיות שווה ל־{{count}}" - less_than: "חייב להיות קטן מ־{{count}}" - less_than_or_equal_to: "חייב להיות קטן ×ו שווה ל־{{count}}" + 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: "חייב להיות מ×וחר יותר מת×ריך ההתחלה" @@ -155,12 +159,12 @@ notice_locking_conflict: המידע עודכן על ידי משתמש ×חר. notice_not_authorized: ×ינך מורשה לר×ות דף ×–×”. notice_not_authorized_archived_project: הפרויקט ש×תה מנסה לגשת ×ליו × ×ž×¦× ×‘×רכיון. - notice_email_sent: "דו×ל נשלח לכתובת {{value}}" - notice_email_error: "×רעה שגי××” בעת שליחת הדו×ל ({{value}})" + 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_failed_to_save_issues: "נכשרת בשמירת %{count} נוש×\×™× ×‘ %{total} נבחרו: %{ids}." + notice_failed_to_save_members: "כשלון בשמירת חבר(×™×): %{errors}." notice_no_issue_selected: "×œ× × ×‘×—×¨ ××£ נוש×! בחר בבקשה ×ת הנוש××™× ×©×‘×¨×¦×•× ×š לערוך." notice_account_pending: "החשבון שלך נוצר ועתה מחכה ל×ישור מנהל המערכת." notice_default_data_loaded: ×פשרויות ברירת מחדל מופעלות. @@ -168,9 +172,9 @@ notice_unable_delete_time_entry: ×œ× × ×™×ª×Ÿ למחוק רשומת זמן. notice_issue_done_ratios_updated: ×חוזי התקדמות ×œ× ×•×©× ×¢×•×“×›× ×•. - error_can_t_load_default_data: "×פשרויות ברירת המחדל ×œ× ×”×¦×œ×™×—×• להיטען: {{value}}" + error_can_t_load_default_data: "×פשרויות ברירת המחדל ×œ× ×”×¦×œ×™×—×• להיטען: %{value}" error_scm_not_found: כניסה ו\×ו מהדורה ××™× × ×§×™×™×ž×™× ×‘×ž×גר. - error_scm_command_failed: "×רעה שגי××” בעת ניסון גישה למ×גר: {{value}}" + error_scm_command_failed: "×רעה שגי××” בעת ניסון גישה למ×גר: %{value}" error_scm_annotate: "הכניסה ×œ× ×§×™×™×ž×ª ×ו ×©×œ× × ×™×ª×Ÿ לת×ר ×ותה." error_issue_not_found_in_project: 'הנוש××™× ×œ× × ×ž×¦×ו ×ו ××™× × ×©×™×›×™× ×œ×¤×¨×•×™×§×˜' error_no_tracker_in_project: ×œ× ×”×•×’×“×¨ סיווג לפרויקט ×–×”. × × ×‘×“×•×§ ×ת הגדרות הפרויקט. @@ -184,26 +188,26 @@ error_workflow_copy_source: × × ×‘×—×¨ סיווג ×ו תפקיד מקור error_workflow_copy_target: × × ×‘×—×¨ תפקיד(×™×) וסיווג(×™×) error_unable_delete_issue_status: ×œ× × ×™×ª×Ÿ למחוק מצב × ×•×©× - error_unable_to_connect: ×œ× × ×™×ª×Ÿ להתחבר ({{value}}) - warning_attachments_not_saved: "כשלון בשמירת {{count}} קבצי×." + error_unable_to_connect: ×œ× × ×™×ª×Ÿ להתחבר (%{value}) + warning_attachments_not_saved: "כשלון בשמירת %{count} קבצי×." - mail_subject_lost_password: "סיסמת ×”Ö¾{{value}} שלך" + mail_subject_lost_password: "סיסמת ×”Ö¾%{value} שלך" mail_body_lost_password: 'לשינו סיסמת ×”Ö¾Redmine שלך, לחץ על הקישור הב×:' - mail_subject_register: "הפעלת חשבון {{value}}" + mail_subject_register: "הפעלת חשבון %{value}" mail_body_register: 'להפעלת חשבון ×”Ö¾Redmine שלך, לחץ על הקישור הב×:' - mail_body_account_information_external: "×תה יכול להשתמש בחשבון {{value}} כדי להתחבר" + 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: "דף ×”Ö¾wiki â€'{{id}}' נוסף" - mail_body_wiki_content_added: דף ×”Ö¾wiki â€'{{id}}' נוסף ×¢"×™ {{author}}. - mail_subject_wiki_content_updated: "דף ×”Ö¾wiki â€'{{id}}' עודכן" - mail_body_wiki_content_updated: דף ×”Ö¾wiki â€'{{id}}' עודכן ×¢"×™ {{author}}. + 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: "דף ×”Ö¾wiki â€'%{id}' נוסף" + mail_body_wiki_content_added: דף ×”Ö¾wiki â€'%{id}' נוסף ×¢"×™ %{author}. + mail_subject_wiki_content_updated: "דף ×”Ö¾wiki â€'%{id}' עודכן" + mail_body_wiki_content_updated: דף ×”Ö¾wiki â€'%{id}' עודכן ×¢"×™ %{author}. gui_validation_error: שגי××” 1 - gui_validation_error_plural: "{{count}} שגי×ות" + gui_validation_error_plural: "%{count} שגי×ות" field_name: ×©× field_description: תי×ור @@ -266,6 +270,7 @@ field_attr_lastname: תכונת ×©× ×ž×©×¤×—×” field_attr_mail: תכונת דו×"ל field_onthefly: יצירת ×ž×©×ª×ž×©×™× ×–×¨×™×–×” + field_start_date: ת×ריך התחלה field_done_ratio: % גמור field_auth_source: מקור הזדהות field_hide_mail: ×”×—×‘× ×ת כתובת הדו×"ל שלי @@ -431,14 +436,14 @@ label_x_projects: zero: ×œ×œ× ×¤×¨×•×™×§×˜×™× one: פרויקט ×חד - other: "{{count}} פרויקטי×" + 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_issues_by: "נוש××™× ×œ×¤×™ %{value}" label_issue_added: × ×•×©× × ×•×¡×£ label_issue_updated: × ×•×©× ×¢×•×“×›×Ÿ label_document: מסמך @@ -488,7 +493,7 @@ label_registered_on: × ×¨×©× ×‘×ª×ריך label_activity: פעילות label_overall_activity: פעילות כוללת - label_user_activity: "הפעילות של {{value}}" + label_user_activity: "הפעילות של %{value}" label_new: חדש label_logged_as: מחובר ×› label_environment: סביבה @@ -498,7 +503,7 @@ label_auth_source_plural: מקורות הזדהות label_subproject_plural: ×ª×ªÖ¾×¤×¨×•×™×§×˜×™× label_subproject_new: תת־פרויקט חדש - label_and_its_subprojects: "{{value}} וכל ×ª×ª×™Ö¾×”×¤×¨×•×™×§×˜×™× ×©×œ×•" + label_and_its_subprojects: "%{value} וכל ×ª×ª×™Ö¾×”×¤×¨×•×™×§×˜×™× ×©×œ×•" label_min_max_length: ×ורך מינימ×לי - מקסימ×לי label_list: רשימה label_date: ת×ריך @@ -509,8 +514,8 @@ label_text: טקסט ×רוך label_attribute: תכונה label_attribute_plural: תכונות - label_download: "הורדה {{count}}" - label_download_plural: "{{count}} הורדות" + label_download: "הורדה %{count}" + label_download_plural: "%{count} הורדות" label_no_data: ×ין מידע להציג label_change_status: שנה מצב label_history: היסטוריה @@ -542,17 +547,17 @@ label_closed_issues: סגור label_closed_issues_plural: ×¡×’×•×¨×™× label_x_open_issues_abbr_on_total: - zero: 0 ×¤×ª×•×—×™× / {{total}} - one: 1 פתוח / {{total}} - other: "{{count}} ×¤×ª×•×—×™× / {{total}}" + zero: 0 ×¤×ª×•×—×™× / %{total} + one: 1 פתוח / %{total} + other: "%{count} ×¤×ª×•×—×™× / %{total}" label_x_open_issues_abbr: zero: 0 ×¤×ª×•×—×™× one: 1 פתוח - other: "{{count}} פתוחי×" + other: "%{count} פתוחי×" label_x_closed_issues_abbr: zero: 0 ×¡×’×•×¨×™× one: 1 סגור - other: "{{count}} סגורי×" + other: "%{count} סגורי×" label_total: סה"×› label_permissions: הרש×ות label_current_status: מצב נוכחי @@ -570,7 +575,7 @@ label_months_from: ×—×•×“×©×™× ×ž label_gantt: ×’×נט label_internal: פנימי - label_last_changes: "{{count}} ×©×™× ×•×™× ×חרוני×" + label_last_changes: "%{count} ×©×™× ×•×™× ×חרוני×" label_change_view_all: צפה בכל ×”×©×™× ×•×™× label_personalize_page: הת×× ×ישית דף ×–×” label_comment: תגובה @@ -578,7 +583,7 @@ label_x_comments: zero: ×ין הערות one: הערה ×חת - other: "{{count}} הערות" + other: "%{count} הערות" label_comment_add: הוסף תגובה label_comment_added: תגובה נוספה label_comment_delete: מחק תגובות @@ -599,7 +604,7 @@ label_yesterday: ×תמול 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: השנה @@ -613,13 +618,13 @@ label_repository: מ×גר label_repository_plural: מ××’×¨×™× label_browse: סייר - label_modification: "שינוי {{count}}" - label_modification_plural: "{{count}} שינויי×" + label_modification: "שינוי %{count}" + label_modification_plural: "%{count} שינויי×" label_branch: ×¢× ×£ label_tag: סימון label_revision: מהדורה label_revision_plural: מהדורות - label_revision_id: מהדורה {{value}} + label_revision_id: מהדורה %{value} label_associated_revisions: מהדורות קשורות label_added: נוסף label_modified: שונה @@ -636,8 +641,8 @@ label_sort_lower: ×”×–×– למטה label_sort_lowest: ×”×–×– לתחתית label_roadmap: מפת ×”×“×¨×›×™× - label_roadmap_due_in: "נגמר בעוד {{value}}" - label_roadmap_overdue: "{{value}} מ×חר" + label_roadmap_due_in: "נגמר בעוד %{value}" + label_roadmap_overdue: "%{value} מ×חר" label_roadmap_no_issues: ×ין נוש××™× ×œ×’×™×¨×¡×” זו label_search: חפש label_result_plural: תוצ×ות @@ -656,8 +661,8 @@ label_issue_tracking: מעקב ×חר נוש××™× label_spent_time: זמן שהושקע label_overall_spent_time: זמן שהושקע סה"×› - label_f_hour: "{{value}} שעה" - label_f_hour_plural: "{{value}} שעות" + label_f_hour: "%{value} שעה" + label_f_hour_plural: "%{value} שעות" label_time_tracking: מעקב ×–×ž× ×™× label_change_plural: ×©×™× ×•×™×™× label_statistics: סטטיסטיקות @@ -708,15 +713,15 @@ label_date_from: מת×ריך label_date_to: עד label_language_based: מבוסס שפה - label_sort_by: "מיין לפי {{value}}" + 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_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_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: סדרות ×©×™× ×•×™×™× @@ -735,7 +740,7 @@ label_registration_activation_by_email: הפעל חשבון ב×מצעות דו×"ל label_registration_manual_activation: הפעלת חשבון ידנית label_registration_automatic_activation: הפעלת חשבון ×וטומטית - label_display_per_page: "בכל דף: {{value}} תוצ×ות" + label_display_per_page: "בכל דף: %{value} תוצ×ות" label_age: גיל label_change_properties: שנה מ××¤×™×™× ×™× label_general: כללי @@ -758,7 +763,7 @@ label_sort: מיון label_ascending: בסדר עולה label_descending: בסדר יורד - label_date_from_to: 'מת×ריך {{start}} ועד ת×ריך {{end}}' + label_date_from_to: 'מת×ריך %{start} ועד ת×ריך %{end}' label_wiki_content_added: נוסף דף ל־wiki label_wiki_content_updated: דף wiki עודכן label_group: קבוצה @@ -777,7 +782,7 @@ label_display_used_statuses_only: הצג רק ×ת ×”×ž×¦×‘×™× ×‘×©×™×ž×•×© לסיווג ×–×” label_api_access_key: מפתח גישה ל־API label_missing_api_access_key: חסר מפתח גישה ל־API - label_api_access_key_created_on: 'מפתח גישה ל־API נוצר לפני {{value}}' + label_api_access_key_created_on: 'מפתח גישה ל־API נוצר לפני %{value}' label_profile: פרופיל label_subtask_plural: תתי־משימות label_project_copy_notifications: שלח התר×ות דו×ר במהלך העתקת הפרויקט @@ -792,7 +797,7 @@ button_create_and_continue: צור ופתח חדש button_test: בדוק button_edit: ערוך - button_edit_associated_wikipage: "ערוך דף wiki מקושר: {{page_title}}" + button_edit_associated_wikipage: "ערוך דף wiki מקושר: %{page_title}" button_add: הוסף button_change: שנה button_apply: החל @@ -841,54 +846,54 @@ 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: ×”×× ×œ×ž×—×•×§ ×ת ×”× ×•×©× ×•×ת כל בניו? - text_journal_changed: "{{label}} השתנה מ{{old}} ל{{new}}" - text_journal_set_to: "{{label}} נקבע ל{{value}}" - text_journal_deleted: "{{label}} נמחק ({{old}})" - text_journal_added: "{{label}} {{value}} נוסף" + 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), ×ž×¡×¤×¨×™× ×•×ž×§×¤×™×.
    ברגע שנשמר, ×œ× × ×™×ª×Ÿ לשנות ×ת המזהה.' - text_caracters_maximum: "×ž×§×¡×™×ž×•× {{count}} תווי×." - text_caracters_minimum: "חייב להיות לפחות ב×ורך של {{count}} תווי×." - text_length_between: "×ורך בין {{min}} ל {{max}} תווי×." + 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: ניתן להזין מספר ×¢×¨×›×™× (שורה ×חת לכל ערך). text_issues_ref_in_commit_messages: קישור ×•×ª×™×§×•× × ×•×©××™× ×‘×”×•×“×¢×•×ª הפקדה - text_issue_added: "×”× ×•×©× {{id}} דווח (בידי {{author}})." - text_issue_updated: "×”× ×•×©× {{id}} עודכן (בידי {{author}})." + text_issue_added: "×”× ×•×©× %{id} דווח (בידי %{author})." + text_issue_updated: "×”× ×•×©× %{id} עודכן (בידי %{author})." text_wiki_destroy_confirmation: ×”×× ×תה בטוח שברצונך למחוק ×ת ×”WIKI ×”×–×” ו×ת כל תוכנו? - text_issue_category_destroy_question: "כמה נוש××™× ({{count}}) ×ž×•×¦×‘×™× ×œ×§×˜×’×•×¨×™×” הזו. מה ברצונך לעשות?" + 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_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_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_user_wrote: "%{value} כתב:" + text_enumeration_destroy_question: "%{count} ××•×‘×™×§×˜×™× ×ž×•×¦×‘×™× ×œ×¢×¨×š ×–×”." text_enumeration_category_reassign_to: 'הצב מחדש לערך ×”×–×”:' - text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/email.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' + text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/configuration.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' 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_destroy_question: לדף ×–×” יש %{descendants} ×“×¤×™× ×‘× ×™× ×•×ª×œ×•×™×™×. מה ברצונך לעשות? text_wiki_page_nullify_children: הש×ר ×“×¤×™× ×‘× ×™× ×›×“×¤×™× ×¨××©×™×™× text_wiki_page_destroy_children: מחק ×ת ×”×“×¤×™× ×”×‘× ×™× ×•×ת כל ×”×ª×œ×•×™×™× ×‘×”× text_wiki_page_reassign_children: הצב מחדש ×“×¤×™× ×‘× ×™× ×œ×“×£ ×”×ב הנוכחי @@ -927,8 +932,16 @@ label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/hr.yml.svn-base --- a/config/locales/.svn/text-base/hr.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/hr.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -35,34 +35,34 @@ half_a_minute: "pola minute" less_than_x_seconds: one: "manje od sekunde" - other: "manje od {{count}} sekundi" + other: "manje od %{count} sekundi" x_seconds: one: "1 sekunda" - other: "{{count}} sekundi" + other: "%{count} sekundi" less_than_x_minutes: one: "manje od minute" - other: "manje od {{count}} minuta" + other: "manje od %{count} minuta" x_minutes: one: "1 minuta" - other: "{{count}} minuta" + other: "%{count} minuta" about_x_hours: one: "oko sat vremena" - other: "oko {{count}} sati" + other: "oko %{count} sati" x_days: one: "1 dan" - other: "{{count}} dana" + other: "%{count} dana" about_x_months: one: "oko 1 mjesec" - other: "oko {{count}} mjeseci" + other: "oko %{count} mjeseci" x_months: one: "mjesec" - other: "{{count}} mjeseci" + other: "%{count} mjeseci" about_x_years: one: "1 godina" - other: "{{count}} godina" + other: "%{count} godina" over_x_years: one: "preko 1 godine" - other: "preko {{count}} godina" + other: "preko %{count} godina" number: format: @@ -93,6 +93,10 @@ 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 ukljuceno u listu" exclusion: "je rezervirano" @@ -101,17 +105,17 @@ accepted: "mora biti prihvaćen" empty: "ne može biti prazno" blank: "ne može biti razmaka" - too_long: "je predug (maximum is {{count}} characters)" - too_short: "je prekratak (minimum is {{count}} characters)" - wrong_length: "je pogreÅ¡ne dužine (should be {{count}} characters)" + too_long: "je predug (maximum is %{count} characters)" + too_short: "je prekratak (minimum is %{count} characters)" + wrong_length: "je pogreÅ¡ne dužine (should be %{count} characters)" taken: "već je zauzeto" 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 bit manji ili jednak{{count}}" + 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 bit manji ili jednak%{count}" odd: "mora biti neparan" even: "mora biti paran" greater_than_start_date: "mora biti veci nego pocetni datum" @@ -148,20 +152,20 @@ notice_file_not_found: Stranica kojoj ste pokuÅ¡ali pristupiti ne postoji ili je uklonjena. notice_locking_conflict: Podataci su ažurirani od strane drugog korisnika. notice_not_authorized: Niste ovlaÅ¡teni za pristup ovoj stranici. - notice_email_sent: E-mail je poslan {{value}}" - notice_email_error: Dogodila se pogreÅ¡ka tijekom slanja E-maila ({{value}})" + notice_email_sent: E-mail je poslan %{value}" + notice_email_error: Dogodila se pogreÅ¡ka tijekom slanja E-maila (%{value})" notice_feeds_access_key_reseted: VaÅ¡ RSS pristup je resetovan. notice_api_access_key_reseted: VaÅ¡ API pristup je resetovan. - notice_failed_to_save_issues: "Neuspjelo spremanje {{count}} predmeta na {{total}} odabrane: {{ids}}." + notice_failed_to_save_issues: "Neuspjelo spremanje %{count} predmeta na %{total} odabrane: %{ids}." notice_no_issue_selected: "Niti jedan predmet nije odabran! Molim, odaberite predmete koje želite urediti." notice_account_pending: "VaÅ¡ korisnicki raÄun je otvoren, Äeka odobrenje administratora." notice_default_data_loaded: Konfiguracija je uspjeÅ¡no uÄitana. notice_unable_delete_version: Nije moguće izbrisati verziju. notice_issue_done_ratios_updated: Issue done ratios updated. - error_can_t_load_default_data: "Zadanu konfiguracija nije uÄitana: {{value}}" + error_can_t_load_default_data: "Zadanu konfiguracija nije uÄitana: %{value}" error_scm_not_found: "Unos i/ili revizija nije pronaÄ‘en." - error_scm_command_failed: "Dogodila se pogreÅ¡ka prilikom pokuÅ¡aja pristupa: {{value}}" + error_scm_command_failed: "Dogodila se pogreÅ¡ka prilikom pokuÅ¡aja pristupa: %{value}" error_scm_annotate: "Ne postoji ili ne može biti obilježen." error_issue_not_found_in_project: 'Nije pronaÄ‘en ili ne pripada u ovaj projekt' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' @@ -172,25 +176,25 @@ 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}} Datoteka/e nije mogla biti spremljena." + warning_attachments_not_saved: "%{count} Datoteka/e nije mogla biti spremljena." - mail_subject_lost_password: "VaÅ¡a {{value}} zaporka" + mail_subject_lost_password: "VaÅ¡a %{value} zaporka" mail_body_lost_password: 'Kako biste promijenili VaÅ¡u zaporku slijedite poveznicu:' - mail_subject_register: "Aktivacija korisniÄog raÄuna {{value}}" + mail_subject_register: "Aktivacija korisniÄog raÄuna %{value}" mail_body_register: 'Da biste aktivirali svoj raÄun, kliknite na sljedeci link:' - mail_body_account_information_external: "Možete koristiti vaÅ¡ raÄun {{value}} za prijavu." + mail_body_account_information_external: "Možete koristiti vaÅ¡ raÄun %{value} za prijavu." mail_body_account_information: VaÅ¡i korisniÄki podaci - mail_subject_account_activation_request: "{{value}} predmet za aktivaciju korisniÄkog raÄuna" - mail_body_account_activation_request: "Novi korisnik ({{value}}) je registriran. Njegov korisniÄki raÄun Äeka vaÅ¡e odobrenje:" - mail_subject_reminder: "{{count}} predmet(a) dospijeva sljedećih {{days}} dana" - mail_body_reminder: "{{count}} vama dodijeljen(ih) predmet(a) dospijeva u sljedećih {{days}} dana:" - 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}}." + mail_subject_account_activation_request: "%{value} predmet za aktivaciju korisniÄkog raÄuna" + mail_body_account_activation_request: "Novi korisnik (%{value}) je registriran. Njegov korisniÄki raÄun Äeka vaÅ¡e odobrenje:" + mail_subject_reminder: "%{count} predmet(a) dospijeva sljedećih %{days} dana" + mail_body_reminder: "%{count} vama dodijeljen(ih) predmet(a) dospijeva u sljedećih %{days} dana:" + 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 pogreÅ¡ka - gui_validation_error_plural: "{{count}} pogreÅ¡aka" + gui_validation_error_plural: "%{count} pogreÅ¡aka" field_name: Ime field_description: Opis @@ -253,6 +257,7 @@ field_attr_lastname: Atribut prezimena field_attr_mail: Atribut e-poÅ¡te field_onthefly: "Izrada korisnika \"u hodu\"" + field_start_date: Pocetak field_done_ratio: % UÄinjeno field_auth_source: Vrsta prijavljivanja field_hide_mail: Sakrij moju adresu e-poÅ¡te @@ -407,14 +412,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Svi Projekti label_project_latest: Najnoviji projekt label_issue: Predmet label_issue_new: Novi predmet label_issue_plural: Predmeti label_issue_view_all: Pregled svih predmeta - label_issues_by: "Predmeti od {{value}}" + label_issues_by: "Predmeti od %{value}" label_issue_added: Predmet dodan label_issue_updated: Predmet promijenjen label_document: Dokument @@ -463,7 +468,7 @@ label_registered_on: Registrirano label_activity: Aktivnosti label_overall_activity: Aktivnosti - label_user_activity: "{{value}} ova/ina aktivnost" + label_user_activity: "%{value} ova/ina aktivnost" label_new: Novi label_logged_as: Prijavljeni ste kao label_environment: Okolina @@ -473,7 +478,7 @@ label_auth_source_plural: NaÄini prijavljivanja label_subproject_plural: Potprojekti label_subproject_new: Novi potprojekt - label_and_its_subprojects: "{{value}} i njegovi potprojekti" + label_and_its_subprojects: "%{value} i njegovi potprojekti" label_min_max_length: Min - Maks veliÄina label_list: Liste label_date: Datum @@ -484,8 +489,8 @@ label_text: Long text label_attribute: Atribut label_attribute_plural: Atributi - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Nema podataka za prikaz label_change_status: Promjena statusa label_history: Povijest @@ -517,17 +522,17 @@ label_closed_issues: Zatvoren label_closed_issues_plural: Zatvoreno label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Ukupno label_permissions: Dozvole label_current_status: Trenutni status @@ -545,7 +550,7 @@ label_months_from: Mjeseci od label_gantt: Gantt label_internal: Interno - label_last_changes: "Posljednjih {{count}} promjena" + label_last_changes: "Posljednjih %{count} promjena" label_change_view_all: Prikaz svih promjena label_personalize_page: Prilagodite ovu stranicu label_comment: Komentar @@ -553,7 +558,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Dodaj komentar label_comment_added: Komentar dodan label_comment_delete: Brisanje komentara @@ -574,7 +579,7 @@ label_yesterday: juÄer label_this_week: ovog tjedna label_last_week: proÅ¡log tjedna - label_last_n_days: "zadnjih {{count}} dana" + label_last_n_days: "zadnjih %{count} dana" label_this_month: ovog mjeseca label_last_month: proÅ¡log mjeseca label_this_year: ove godine @@ -588,13 +593,13 @@ label_repository: SkladiÅ¡te label_repository_plural: SkladiÅ¡ta label_browse: Pregled - label_modification: "{{count}} promjena" - label_modification_plural: "{{count}} promjena" + label_modification: "%{count} promjena" + label_modification_plural: "%{count} promjena" label_branch: Branch label_tag: Tag label_revision: Revizija label_revision_plural: Revizije - label_revision_id: "Revision {{value}}" + label_revision_id: "Revision %{value}" label_associated_revisions: Dodijeljene revizije label_added: dodano label_modified: promijenjen @@ -611,8 +616,8 @@ label_sort_lower: Premjesti prema dolje label_sort_lowest: Premjesti na dno label_roadmap: Putokaz - label_roadmap_due_in: "ZavrÅ¡ava se za {{value}}" - label_roadmap_overdue: "{{value}} kasni" + label_roadmap_due_in: "ZavrÅ¡ava se za %{value}" + label_roadmap_overdue: "%{value} kasni" label_roadmap_no_issues: Nema predmeta za ovu verziju label_search: Traži label_result_plural: Rezultati @@ -630,8 +635,8 @@ label_changes_details: Detalji svih promjena label_issue_tracking: Praćenje predmeta label_spent_time: UtroÅ¡eno vrijeme - label_f_hour: "{{value}} sata" - label_f_hour_plural: "{{value}} sati" + label_f_hour: "%{value} sata" + label_f_hour_plural: "%{value} sati" label_time_tracking: Praćenje vremena label_change_plural: Promjene label_statistics: Statistika @@ -680,15 +685,15 @@ label_date_from: Od label_date_to: Do label_language_based: Zasnovano na jeziku - label_sort_by: "Uredi po {{value}}" + label_sort_by: "Uredi po %{value}" label_send_test_email: PoÅ¡alji testno E-pismo label_feeds_access_key: RSS access key label_missing_feeds_access_key: Missing a RSS access key - label_feeds_access_key_created_on: "RSS kljuc za pristup je napravljen prije {{value}}" + label_feeds_access_key_created_on: "RSS kljuc za pristup je napravljen prije %{value}" label_module_plural: Moduli - label_added_time_by: "Promijenio {{author}} prije {{age}}" - label_updated_time_by: "Dodao/la {{author}} prije {{age}}" - label_updated_time: "Promijenjeno prije {{value}}" + label_added_time_by: "Promijenio %{author} prije %{age}" + label_updated_time_by: "Dodao/la %{author} prije %{age}" + label_updated_time: "Promijenjeno prije %{value}" label_jump_to_a_project: Prebaci se na projekt... label_file_plural: Datoteke label_changeset_plural: Promjene @@ -704,7 +709,7 @@ label_registration_activation_by_email: aktivacija putem e-poÅ¡te label_registration_manual_activation: ruÄna aktivacija label_registration_automatic_activation: automatska aktivacija - label_display_per_page: "Po stranici: {{value}}" + label_display_per_page: "Po stranici: %{value}" label_age: Starost label_change_properties: Promijeni svojstva label_general: Općenito @@ -727,7 +732,7 @@ label_sort: Sort label_ascending: Ascending label_descending: Descending - label_date_from_to: From {{start}} to {{end}} + 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 @@ -746,7 +751,7 @@ 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_api_access_key_created_on: "API access key created %{value} ago" button_login: Prijavi button_submit: PoÅ¡alji @@ -806,54 +811,54 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 znaÄi bez ograniÄenja text_project_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj projekt i sve njegove podatke? - text_subprojects_destroy_warning: "Njegov(i) potprojekt(i): {{value}} će takoÄ‘er biti obrisan." + text_subprojects_destroy_warning: "Njegov(i) potprojekt(i): %{value} će takoÄ‘er biti obrisan." text_workflow_edit: Select a role and a tracker to edit the workflow text_are_you_sure: Da li ste sigurni? - text_journal_changed: "{{label}} promijenjen iz {{old}} u {{new}}" - text_journal_set_to: "{{label}} postavi na {{value}}" - text_journal_deleted: "{{label}} izbrisano ({{old}})" - text_journal_added: "{{label}} {{value}} added" + text_journal_changed: "%{label} promijenjen iz %{old} u %{new}" + text_journal_set_to: "%{label} postavi na %{value}" + text_journal_deleted: "%{label} izbrisano (%{old})" + text_journal_added: "%{label} %{value} added" text_tip_issue_begin_day: Zadaci koji poÄinju ovog dana text_tip_issue_end_day: zadaci koji se zavrÅ¡avaju ovog dana text_tip_issue_begin_end_day: Zadaci koji poÄinju i zavrÅ¡avaju se ovog dana text_project_identifier_info: 'mala slova (a-z), brojevi i crtice su dozvoljeni.
    Jednom snimljen identifikator se ne može mijenjati!' - text_caracters_maximum: "NajviÅ¡e {{count}} znakova." - text_caracters_minimum: "Mora biti dugaÄko najmanje {{count}} znakova." - text_length_between: "Dužina izmedu {{min}} i {{max}} znakova." + text_caracters_maximum: "NajviÅ¡e %{count} znakova." + text_caracters_minimum: "Mora biti dugaÄko najmanje %{count} znakova." + text_length_between: "Dužina izmedu %{min} i %{max} znakova." text_tracker_no_workflow: Tijek rada nije definiran za ovaj tracker text_unallowed_characters: Nedozvoljeni znakovi text_comma_separated: ViÅ¡estruke vrijednosti su dozvoljene (razdvojene zarezom). text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_tracker_no_workflow: No workflow defined for this tracker text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Predmet {{id}} je prijavljen (prijavio {{author}})." - text_issue_updated: "Predmet {{id}} je promijenjen {{author}})." + text_issue_added: "Predmet %{id} je prijavljen (prijavio %{author})." + text_issue_updated: "Predmet %{id} je promijenjen %{author})." text_wiki_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj wiki i njegov sadržaj? - text_issue_category_destroy_question: "Neke predmeti ({{count}}) su dodijeljeni ovoj kategoriji. Å to želite uraditi?" + text_issue_category_destroy_question: "Neke predmeti (%{count}) su dodijeljeni ovoj kategoriji. Å to želite uraditi?" text_issue_category_destroy_assignments: Ukloni dodjeljivanje kategorija text_issue_category_reassign_to: Ponovo dodijeli predmete ovoj kategoriji text_user_mail_option: "Za neizabrane projekte, primit ćete obavjesti samo o stvarima koje pratite ili u kojima sudjelujete (npr. predmete koje ste vi napravili ili koje su vama dodjeljeni)." 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: UÄitaj poÄetnu konfiguraciju - text_status_changed_by_changeset: "Applied in changeset {{value}}." + text_status_changed_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Jeste li sigurni da želite obrisati izabrani/e predmet(e)?' text_select_project_modules: 'Odaberite module koji će biti omogućeni za ovaj projekt:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Dozvoljeno pisanje u direktorij za privitke text_plugin_assets_writable: Plugin assets directory writable text_rmagick_available: RMagick dostupan (nije obavezno) - text_destroy_time_entries_question: "{{hours}} sati je prijavljeno za predmete koje želite obrisati. Å to ćete uÄiniti?" + text_destroy_time_entries_question: "%{hours} sati je prijavljeno za predmete koje želite obrisati. Å to ćete uÄiniti?" text_destroy_time_entries: ObriÅ¡i prijavljene sate text_assign_time_entries_to_project: Pridruži prijavljene sate projektu text_reassign_time_entries: 'Premjesti prijavljene sate ovom predmetu:' - text_user_wrote: "{{value}} je napisao/la:" - text_enumeration_destroy_question: "{{count}} objekata je pridruženo toj vrijednosti." + text_user_wrote: "%{value} je napisao/la:" + text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti." text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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: '... Ovaj diff je odrezan zato Å¡to prelazi maksimalnu veliÄinu koja može biti prikazana.' 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_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" @@ -905,12 +910,12 @@ 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_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}}." + 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. @@ -918,7 +923,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -929,8 +934,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/hu.yml.svn-base --- a/config/locales/.svn/text-base/hu.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/hu.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -33,38 +33,38 @@ less_than_x_seconds: # zero: 'kevesebb, mint 1 másodperc' one: 'kevesebb, mint 1 másodperc' - other: 'kevesebb, mint {{count}} másodperc' + other: 'kevesebb, mint %{count} másodperc' x_seconds: one: '1 másodperc' - other: '{{count}} másodperc' + other: '%{count} másodperc' less_than_x_minutes: # zero: 'kevesebb, mint 1 perc' one: 'kevesebb, mint 1 perc' - other: 'kevesebb, mint {{count}} perc' + other: 'kevesebb, mint %{count} perc' x_minutes: one: '1 perc' - other: '{{count}} perc' + other: '%{count} perc' about_x_hours: one: 'majdnem 1 óra' - other: 'majdnem {{count}} óra' + other: 'majdnem %{count} óra' x_days: one: '1 nap' - other: '{{count}} nap' + other: '%{count} nap' about_x_months: one: 'majdnem 1 hónap' - other: 'majdnem {{count}} hónap' + other: 'majdnem %{count} hónap' x_months: one: '1 hónap' - other: '{{count}} hónap' + other: '%{count} hónap' about_x_years: one: 'majdnem 1 év' - other: 'majdnem {{count}} év' + other: 'majdnem %{count} év' over_x_years: one: 'több, mint 1 év' - other: 'több, mint {{count}} év' + other: 'több, mint %{count} év' almost_x_years: one: "közel 1 év" - other: "közel {{count}} év" + other: "közel %{count} év" prompts: year: "Év" month: "Hónap" @@ -117,8 +117,8 @@ errors: template: header: - one: "1 hiba miatt nem menthetÅ‘ a következÅ‘: {{model}}" - other: "{{count}} hiba miatt nem menthetÅ‘ a következÅ‘: {{model}}" + one: "1 hiba miatt nem menthetÅ‘ a következÅ‘: %{model}" + other: "%{count} hiba miatt nem menthetÅ‘ a következÅ‘: %{model}" body: "Problémás mezÅ‘k:" messages: inclusion: "nincs a listában" @@ -128,16 +128,16 @@ accepted: "nincs elfogadva" empty: "nincs megadva" blank: "nincs megadva" - too_long: "túl hosszú (nem lehet több {{count}} karakternél)" - too_short: "túl rövid (legalább {{count}} karakter kell legyen)" - wrong_length: "nem megfelelÅ‘ hosszúságú ({{count}} karakter szükséges)" + too_long: "túl hosszú (nem lehet több %{count} karakternél)" + too_short: "túl rövid (legalább %{count} karakter kell legyen)" + wrong_length: "nem megfelelÅ‘ hosszúságú (%{count} karakter szükséges)" taken: "már foglalt" not_a_number: "nem szám" - greater_than: "nagyobb kell legyen, mint {{count}}" - greater_than_or_equal_to: "legalább {{count}} kell legyen" - equal_to: "pontosan {{count}} kell legyen" - less_than: "kevesebb, mint {{count}} kell legyen" - less_than_or_equal_to: "legfeljebb {{count}} lehet" + greater_than: "nagyobb kell legyen, mint %{count}" + greater_than_or_equal_to: "legalább %{count} kell legyen" + equal_to: "pontosan %{count} kell legyen" + less_than: "kevesebb, mint %{count} kell legyen" + less_than_or_equal_to: "legfeljebb %{count} lehet" odd: "páratlan kell legyen" even: "páros kell legyen" greater_than_start_date: "nagyobbnak kell lennie, mint az indítás dátuma" @@ -174,17 +174,17 @@ notice_file_not_found: Az oldal, amit meg szeretne nézni nem található, vagy átkerült egy másik helyre. notice_locking_conflict: Az adatot egy másik felhasználó idÅ‘ közben módosította. notice_not_authorized: Nincs hozzáférési engedélye ehhez az oldalhoz. - notice_email_sent: "Egy e-mail üzenetet küldtünk a következÅ‘ címre {{value}}" - notice_email_error: "Hiba történt a levél küldése közben ({{value}})" + notice_email_sent: "Egy e-mail üzenetet küldtünk a következÅ‘ címre %{value}" + notice_email_error: "Hiba történt a levél küldése közben (%{value})" notice_feeds_access_key_reseted: Az RSS hozzáférési kulcsát újra generáltuk. - notice_failed_to_save_issues: "Nem sikerült a {{count}} feladat(ok) mentése a {{total}} -ban kiválasztva: {{ids}}." + notice_failed_to_save_issues: "Nem sikerült a %{count} feladat(ok) mentése a %{total} -ban kiválasztva: %{ids}." notice_no_issue_selected: "Nincs feladat kiválasztva! Kérem jelölje meg melyik feladatot szeretné szerkeszteni!" notice_account_pending: "A fiókja létrejött, és adminisztrátori jóváhagyásra vár." notice_default_data_loaded: Az alapértelmezett konfiguráció betöltése sikeresen megtörtént. - error_can_t_load_default_data: "Az alapértelmezett konfiguráció betöltése nem lehetséges: {{value}}" + error_can_t_load_default_data: "Az alapértelmezett konfiguráció betöltése nem lehetséges: %{value}" error_scm_not_found: "A bejegyzés, vagy revízió nem található a tárolóban." - error_scm_command_failed: "A tároló elérése közben hiba lépett fel: {{value}}" + error_scm_command_failed: "A tároló elérése közben hiba lépett fel: %{value}" error_scm_annotate: "A bejegyzés nem létezik, vagy nics jegyzetekkel ellátva." error_issue_not_found_in_project: 'A feladat nem található, vagy nem ehhez a projekthez tartozik' @@ -192,13 +192,13 @@ mail_body_lost_password: 'A Redmine jelszó megváltoztatásához, kattintson a következÅ‘ linkre:' mail_subject_register: Redmine azonosító aktiválása mail_body_register: 'A Redmine azonosítója aktiválásához, kattintson a következÅ‘ linkre:' - mail_body_account_information_external: "A {{value}} azonosító használatával bejelentkezhet a Redmine-ba." + mail_body_account_information_external: "A %{value} azonosító használatával bejelentkezhet a Redmine-ba." mail_body_account_information: Az Ön Redmine azonosítójának információi mail_subject_account_activation_request: Redmine azonosító aktiválási kérelem - mail_body_account_activation_request: "Egy új felhasználó ({{value}}) regisztrált, azonosítója jóváhasgyásra várakozik:" + mail_body_account_activation_request: "Egy új felhasználó (%{value}) regisztrált, azonosítója jóváhasgyásra várakozik:" gui_validation_error: 1 hiba - gui_validation_error_plural: "{{count}} hiba" + gui_validation_error_plural: "%{count} hiba" field_name: Név field_description: Leírás @@ -260,6 +260,7 @@ field_attr_lastname: Vezetéknév field_attr_mail: E-mail field_onthefly: On-the-fly felhasználó létrehozás + field_start_date: Kezdés dátuma field_done_ratio: Elkészült (%) field_auth_source: Azonosítási mód field_hide_mail: Rejtse el az e-mail címem @@ -334,14 +335,14 @@ label_x_projects: zero: nincsenek projektek one: 1 projekt - other: "{{count}} projekt" + other: "%{count} projekt" label_project_all: Az összes projekt label_project_latest: Legutóbbi projektek label_issue: Feladat label_issue_new: Új feladat label_issue_plural: Feladatok label_issue_view_all: Minden feladat - label_issues_by: "{{value}} feladatai" + label_issues_by: "%{value} feladatai" label_issue_added: Feladat hozzáadva label_issue_updated: Feladat frissítve label_document: Dokumentum @@ -397,7 +398,7 @@ label_auth_source_new: Új azonosítási mód label_auth_source_plural: Azonosítási módok label_subproject_plural: Alprojektek - label_and_its_subprojects: "{{value}} és alprojektjei" + label_and_its_subprojects: "%{value} és alprojektjei" label_min_max_length: Min - Max hossz label_list: Lista label_date: Dátum @@ -408,8 +409,8 @@ label_text: Hosszú szöveg label_attribute: Tulajdonság label_attribute_plural: Tulajdonságok - label_download: "{{count}} Letöltés" - label_download_plural: "{{count}} Letöltés" + label_download: "%{count} Letöltés" + label_download_plural: "%{count} Letöltés" label_no_data: Nincs megjeleníthetÅ‘ adat label_change_status: Státusz módosítása label_history: Történet @@ -440,17 +441,17 @@ label_closed_issues: lezárt label_closed_issues_plural: lezárt label_x_open_issues_abbr_on_total: - zero: nyitott 0 / {{total}} - one: nyitott 1 / {{total}} - other: "nyitott {{count}} / {{total}}" + zero: nyitott 0 / %{total} + one: nyitott 1 / %{total} + other: "nyitott %{count} / %{total}" label_x_open_issues_abbr: zero: 0 nyitott one: 1 nyitott - other: "{{count}} nyitott" + other: "%{count} nyitott" label_x_closed_issues_abbr: zero: 0 lezárt one: 1 lezárt - other: "{{count}} lezárt" + other: "%{count} lezárt" label_total: Összesen label_permissions: Jogosultságok label_current_status: Jelenlegi státusz @@ -468,7 +469,7 @@ label_months_from: hónap, kezdve label_gantt: Gantt label_internal: BelsÅ‘ - label_last_changes: "utolsó {{count}} változás" + label_last_changes: "utolsó %{count} változás" label_change_view_all: Minden változás megtekintése label_personalize_page: Az oldal testreszabása label_comment: Megjegyzés @@ -476,7 +477,7 @@ label_x_comments: zero: nincs megjegyzés one: 1 megjegyzés - other: "{{count}} megjegyzés" + other: "%{count} megjegyzés" label_comment_add: Megjegyzés hozzáadása label_comment_added: Megjegyzés hozzáadva label_comment_delete: Megjegyzések törlése @@ -495,7 +496,7 @@ label_yesterday: tegnap label_this_week: aktuális hét label_last_week: múlt hét - label_last_n_days: "az elmúlt {{count}} nap" + label_last_n_days: "az elmúlt %{count} nap" label_this_month: aktuális hónap label_last_month: múlt hónap label_this_year: aktuális év @@ -509,8 +510,8 @@ label_repository: Tároló label_repository_plural: Tárolók label_browse: Tallóz - label_modification: "{{count}} változás" - label_modification_plural: "{{count}} változás" + label_modification: "%{count} változás" + label_modification_plural: "%{count} változás" label_revision: Revízió label_revision_plural: Revíziók label_associated_revisions: Kapcsolt revíziók @@ -526,8 +527,8 @@ label_sort_lower: Eggyel lejjebb label_sort_lowest: Az aljára label_roadmap: Életút - label_roadmap_due_in: "Elkészültéig várhatóan még {{value}}" - label_roadmap_overdue: "{{value}} késésben" + label_roadmap_due_in: "Elkészültéig várhatóan még %{value}" + label_roadmap_overdue: "%{value} késésben" label_roadmap_no_issues: Nincsenek feladatok ehhez a verzióhoz label_search: Keresés label_result_plural: Találatok @@ -545,8 +546,8 @@ label_changes_details: Változások részletei label_issue_tracking: Feladat követés label_spent_time: Ráfordított idÅ‘ - label_f_hour: "{{value}} óra" - label_f_hour_plural: "{{value}} óra" + label_f_hour: "%{value} óra" + label_f_hour_plural: "%{value} óra" label_time_tracking: IdÅ‘ rögzítés label_change_plural: Változások label_statistics: Statisztikák @@ -594,12 +595,12 @@ label_date_from: 'Kezdet:' label_date_to: 'Vége:' label_language_based: A felhasználó nyelve alapján - label_sort_by: "{{value}} szerint rendezve" + label_sort_by: "%{value} szerint rendezve" label_send_test_email: Teszt e-mail küldése - label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva ennyivel ezelÅ‘tt: {{value}}" + label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva ennyivel ezelÅ‘tt: %{value}" label_module_plural: Modulok - label_added_time_by: "{{author}} adta hozzá ennyivel ezelÅ‘tt: {{age}}" - label_updated_time: "Utolsó módosítás ennyivel ezelÅ‘tt: {{value}}" + label_added_time_by: "%{author} adta hozzá ennyivel ezelÅ‘tt: %{age}" + label_updated_time: "Utolsó módosítás ennyivel ezelÅ‘tt: %{value}" label_jump_to_a_project: Ugrás projekthez... label_file_plural: Fájlok label_changeset_plural: Changesets @@ -615,7 +616,7 @@ label_registration_activation_by_email: Fiók aktiválása e-mailben label_registration_manual_activation: Manuális fiók aktiválás label_registration_automatic_activation: Automatikus fiók aktiválás - label_display_per_page: "Oldalanként: {{value}}" + label_display_per_page: "Oldalanként: %{value}" label_age: Kor label_change_properties: Tulajdonságok változtatása label_general: Ãltalános @@ -677,36 +678,36 @@ text_regexp_info: pl. ^[A-Z0-9]+$ text_min_max_length_info: 0 = nincs korlátozás text_project_destroy_confirmation: Biztosan törölni szeretné a projektet és vele együtt minden kapcsolódó adatot ? - text_subprojects_destroy_warning: "Az alprojekt(ek): {{value}} szintén törlésre kerülnek." + text_subprojects_destroy_warning: "Az alprojekt(ek): %{value} szintén törlésre kerülnek." text_workflow_edit: Válasszon egy szerepkört, és egy feladat típust a workflow szerkesztéséhez text_are_you_sure: Biztos benne ? text_tip_issue_begin_day: a feladat ezen a napon kezdÅ‘dik text_tip_issue_end_day: a feladat ezen a napon ér véget text_tip_issue_begin_end_day: a feladat ezen a napon kezdÅ‘dik és ér véget text_project_identifier_info: 'Kis betűk (a-z), számok és kötÅ‘jel megengedett.
    Mentés után az azonosítót megváltoztatni nem lehet.' - text_caracters_maximum: "maximum {{count}} karakter." - text_caracters_minimum: "Legkevesebb {{count}} karakter hosszúnek kell lennie." - text_length_between: "Legalább {{min}} és legfeljebb {{max}} hosszú karakter." + text_caracters_maximum: "maximum %{count} karakter." + text_caracters_minimum: "Legkevesebb %{count} karakter hosszúnek kell lennie." + text_length_between: "Legalább %{min} és legfeljebb %{max} hosszú karakter." text_tracker_no_workflow: Nincs workflow definiálva ehhez a feladat típushoz text_unallowed_characters: Tiltott karakterek text_comma_separated: Több érték megengedett (vesszÅ‘vel elválasztva) text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben - text_issue_added: "A feladatot {{id}} bejelentette: {{author}}." - text_issue_updated: "A feladatot {{id}} módosította: {{author}}." + text_issue_added: "A feladatot %{id} bejelentette: %{author}." + text_issue_updated: "A feladatot %{id} módosította: %{author}." text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ? - text_issue_category_destroy_question: "Néhány feladat ({{count}}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ?" + text_issue_category_destroy_question: "Néhány feladat (%{count}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ?" text_issue_category_destroy_assignments: Kategória hozzárendelés megszűntetése text_issue_category_reassign_to: Feladatok újra hozzárendelése másik kategóriához text_user_mail_option: "A nem kiválasztott projektekrÅ‘l csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelÅ‘)" text_no_configuration_data: "Szerepkörök, feladat típusok, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErÅ‘sen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt." text_load_default_configuration: Alapértelmezett konfiguráció betöltése - text_status_changed_by_changeset: "Applied in changeset {{value}}." + text_status_changed_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Biztos benne, hogy törölni szeretné a kijelölt feladato(ka)t ?' text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:' text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva text_file_repository_writable: Fájl tároló írható text_rmagick_available: RMagick elérhetÅ‘ (opcionális) - text_destroy_time_entries_question: "{{hours}} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ?" + text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ?" text_destroy_time_entries: A rögzített órák törlése text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez text_reassign_time_entries: 'A rögzített órák újra hozzárendelése másik feladathoz:' @@ -736,18 +737,18 @@ enumeration_issue_priorities: Feladat prioritások enumeration_doc_categories: Dokumentum kategóriák enumeration_activities: Tevékenységek (idÅ‘ rögzítés) - mail_body_reminder: "{{count}} neked kiosztott feladat határidÅ‘s az elkövetkezÅ‘ {{days}} napban:" - mail_subject_reminder: "{{count}} feladat határidÅ‘s az elkövetkezÅ‘ {{days}} napokban" - text_user_wrote: "{{value}} írta:" + mail_body_reminder: "%{count} neked kiosztott feladat határidÅ‘s az elkövetkezÅ‘ %{days} napban:" + mail_subject_reminder: "%{count} feladat határidÅ‘s az elkövetkezÅ‘ %{days} napokban" + text_user_wrote: "%{value} írta:" label_duplicated_by: duplikálta setting_enabled_scm: ForráskódkezelÅ‘ (SCM) engedélyezése text_enumeration_category_reassign_to: 'Újra hozzárendelés ehhez:' - text_enumeration_destroy_question: "{{count}} objektum van hozzárendelve ehhez az értékhez." + text_enumeration_destroy_question: "%{count} objektum van hozzárendelve ehhez az értékhez." label_incoming_emails: Beérkezett levelek label_generate_key: Kulcs generálása setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez setting_mail_handler_api_key: API kulcs - 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/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." + 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 @@ -808,12 +809,12 @@ text_repository_usernames_mapping: "Ãllítsd be a felhasználó összerendeléseket a Redmine, és a tároló logban található felhasználók között.\nAz azonos felhasználó nevek összerendelése automatikusan megtörténik." permission_edit_own_messages: Saját üzenetek szerkesztése permission_delete_own_messages: Saját üzenetek törlése - label_user_activity: "{{value}} tevékenységei" - label_updated_time_by: "Módosította {{author}} ennyivel ezelÅ‘tt: {{age}}" + label_user_activity: "%{value} tevékenységei" + label_updated_time_by: "Módosította %{author} ennyivel ezelÅ‘tt: %{age}" text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthetÅ‘ sorok száma.' setting_diff_max_lines_displayed: A megjelenítendÅ‘ sorok száma (maximum) a diff fájloknál text_plugin_assets_writable: Plugin eszközök könyvtár írható - warning_attachments_not_saved: "{{count}} fájl mentése nem sikerült." + warning_attachments_not_saved: "%{count} fájl mentése nem sikerült." button_create_and_continue: Létrehozás és folytatás text_custom_field_possible_values_info: 'Értékenként egy sor' label_display: Megjelenés @@ -828,21 +829,21 @@ label_descending: CsökkenÅ‘ label_sort: Rendezés label_ascending: NövekvÅ‘ - label_date_from_to: "{{start}} -tól {{end}} -ig" + label_date_from_to: "%{start} -tól %{end} -ig" label_greater_or_equal: ">=" label_less_or_equal: "<=" - text_wiki_page_destroy_question: Ennek az oldalnak {{descendants}} gyermek-, és leszármazott oldala van. Mit szeretne tenni? + text_wiki_page_destroy_question: Ennek az oldalnak %{descendants} gyermek-, és leszármazott oldala van. Mit szeretne tenni? text_wiki_page_reassign_children: Az aloldalak hozzárendelése ehhez a szülÅ‘ oldalhoz text_wiki_page_nullify_children: Az aloldalak megtartása, mint fÅ‘oldalak text_wiki_page_destroy_children: Minden aloldal és leszármazottjának törlése setting_password_min_length: Minimum jelszó hosszúság field_group_by: Szerint csoportosítva - mail_subject_wiki_content_updated: "'{{id}}' wiki oldal frissítve" + mail_subject_wiki_content_updated: "'%{id}' wiki oldal frissítve" label_wiki_content_added: Wiki oldal hozzáadva - mail_subject_wiki_content_added: "Új wiki oldal: '{{id}}'" - mail_body_wiki_content_added: A '{{id}}' wiki oldalt {{author}} hozta létre. + mail_subject_wiki_content_added: "Új wiki oldal: '%{id}'" + mail_body_wiki_content_added: A '%{id}' wiki oldalt %{author} hozta létre. label_wiki_content_updated: Wiki oldal frissítve - mail_body_wiki_content_updated: A '{{id}}' wiki oldalt {{author}} frissítette. + mail_body_wiki_content_updated: A '%{id}' wiki oldalt %{author} frissítette. permission_add_project: Projekt létrehozása setting_new_project_user_role_id: Projekt létrehozási jog nem adminisztrátor felhasználóknak label_view_all_revisions: Minden revízió megtekintése @@ -850,14 +851,14 @@ label_branch: Branch error_no_tracker_in_project: Nincs feladat típus hozzárendelve ehhez a projekthez. Kérem ellenÅ‘rizze a projekt beállításait. error_no_default_issue_status: Nincs alapértelmezett feladat státusz beállítva. Kérem ellenÅ‘rizze a beállításokat (Itt találja "Adminisztráció -> Feladat státuszok"). - text_journal_changed: "{{label}} változott errÅ‘l: {{old}} erre: {{new}}" - text_journal_set_to: "{{label}} új értéke: {{value}}" - text_journal_deleted: "{{label}} törölve ({{old}})" + text_journal_changed: "%{label} változott errÅ‘l: %{old} erre: %{new}" + text_journal_set_to: "%{label} új értéke: %{value}" + text_journal_deleted: "%{label} törölve (%{old})" label_group_plural: Csoportok label_group: Csoport label_group_new: Új csoport label_time_entry_plural: Rögzített idÅ‘ - text_journal_added: "{{label}} {{value}} hozzáadva" + text_journal_added: "%{label} %{value} hozzáadva" field_active: Aktív enumeration_system_activity: Rendszer Tevékenység permission_delete_issue_watchers: MegfigyelÅ‘k törlése @@ -892,9 +893,9 @@ setting_start_of_week: A hét elsÅ‘ napja permission_view_issues: Feladatok megtekintése label_display_used_statuses_only: Csak olyan feladat státuszok megjelenítése, amit ez a feladat típus használ - label_revision_id: Revízió {{value}} + label_revision_id: Revízió %{value} label_api_access_key: API hozzáférési kulcs - label_api_access_key_created_on: API hozzáférési kulcs létrehozva {{value}} ezelÅ‘tt + label_api_access_key_created_on: API hozzáférési kulcs létrehozva %{value} ezelÅ‘tt label_feeds_access_key: RSS hozzáférési kulcs notice_api_access_key_reseted: Az API hozzáférési kulcsa újragenerálva. setting_rest_api_enabled: REST web service engedélyezése @@ -917,7 +918,7 @@ error_can_not_delete_custom_field: Nem lehet törölni az egyéni mezÅ‘t permission_manage_subtasks: Alfeladatok kezelése label_profile: Profil - error_unable_to_connect: Nem lehet csatlakozni ({{value}}) + error_unable_to_connect: Nem lehet csatlakozni (%{value}) error_can_not_remove_role: Ez a szerepkör használatban van és ezért nem törölhetÅ‘- field_parent_issue: SzülÅ‘ feladat error_unable_delete_issue_status: Nem lehet törölni a feladat állapotát @@ -926,7 +927,7 @@ label_project_copy_notifications: Küldjön e-mail értesítéseket projektmásolás közben. field_principal: FelelÅ‘s label_my_page_block: Saját kezdÅ‘lap-blokk - notice_failed_to_save_members: "Nem sikerült menteni a tago(ka)t: {{errors}}." + notice_failed_to_save_members: "Nem sikerült menteni a tago(ka)t: %{errors}." 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Å‘ @@ -934,7 +935,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -945,8 +946,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/id.yml.svn-base --- a/config/locales/.svn/text-base/id.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/id.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -30,37 +30,37 @@ half_a_minute: "setengah menit" less_than_x_seconds: one: "kurang dari sedetik" - other: "kurang dari {{count}} detik" + other: "kurang dari %{count} detik" x_seconds: one: "sedetik" - other: "{{count}} detik" + other: "%{count} detik" less_than_x_minutes: one: "kurang dari semenit" - other: "kurang dari {{count}} menit" + other: "kurang dari %{count} menit" x_minutes: one: "semenit" - other: "{{count}} menit" + other: "%{count} menit" about_x_hours: one: "sekitar sejam" - other: "sekitar {{count}} jam" + other: "sekitar %{count} jam" x_days: one: "sehari" - other: "{{count}} hari" + other: "%{count} hari" about_x_months: one: "sekitar sebulan" - other: "sekitar {{count}} bulan" + other: "sekitar %{count} bulan" x_months: one: "sebulan" - other: "{{count}} bulan" + other: "%{count} bulan" about_x_years: one: "sekitar setahun" - other: "sekitar {{count}} tahun" + other: "sekitar %{count} tahun" over_x_years: one: "lebih dari setahun" - other: "lebih dari {{count}} tahun" + other: "lebih dari %{count} tahun" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -95,6 +95,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "tidak termasuk dalam daftar" exclusion: "sudah dicadangkan" @@ -103,17 +107,17 @@ accepted: "harus disetujui" empty: "tidak boleh kosong" blank: "tidak boleh kosong" - too_long: "terlalu panjang (maksimum {{count}} karakter)" - too_short: "terlalu pendek (minimum {{count}} karakter)" - wrong_length: "panjangnya salah (seharusnya {{count}} karakter)" + too_long: "terlalu panjang (maksimum %{count} karakter)" + too_short: "terlalu pendek (minimum %{count} karakter)" + wrong_length: "panjangnya salah (seharusnya %{count} karakter)" taken: "sudah diambil" not_a_number: "bukan angka" not_a_date: "bukan tanggal" - greater_than: "harus lebih besar dari {{count}}" - greater_than_or_equal_to: "harus lebih besar atau sama dengan {{count}}" - equal_to: "harus sama dengan {{count}}" - less_than: "harus kurang dari {{count}}" - less_than_or_equal_to: "harus kurang atau sama dengan {{count}}" + greater_than: "harus lebih besar dari %{count}" + greater_than_or_equal_to: "harus lebih besar atau sama dengan %{count}" + equal_to: "harus sama dengan %{count}" + less_than: "harus kurang dari %{count}" + less_than_or_equal_to: "harus kurang atau sama dengan %{count}" odd: "harus ganjil" even: "harus genap" greater_than_start_date: "harus lebih besar dari tanggal mulai" @@ -150,18 +154,18 @@ notice_file_not_found: Berkas yang anda buka tidak ada atau sudah dihapus. notice_locking_conflict: Data sudah diubah oleh pengguna lain. notice_not_authorized: Anda tidak memiliki akses ke halaman ini. - notice_email_sent: "Email sudah dikirim ke {{value}}" - notice_email_error: "Terjadi kesalahan pada saat pengiriman email ({{value}})" + notice_email_sent: "Email sudah dikirim ke %{value}" + notice_email_error: "Terjadi kesalahan pada saat pengiriman email (%{value})" notice_feeds_access_key_reseted: RSS access key anda sudah direset. - notice_failed_to_save_issues: "Gagal menyimpan {{count}} masalah dari {{total}} yang dipilih: {{ids}}." + notice_failed_to_save_issues: "Gagal menyimpan %{count} masalah dari %{total} yang dipilih: %{ids}." notice_no_issue_selected: "Tidak ada masalah yang dipilih! Silakan pilih masalah yang akan anda sunting." notice_account_pending: "Akun anda sudah dibuat dan sekarang sedang menunggu persetujuan administrator." notice_default_data_loaded: Konfigurasi default sudah berhasil dimuat. notice_unable_delete_version: Tidak bisa menghapus versi. - error_can_t_load_default_data: "Konfigurasi default tidak bisa dimuat: {{value}}" + error_can_t_load_default_data: "Konfigurasi default tidak bisa dimuat: %{value}" error_scm_not_found: "Entri atau revisi tidak terdapat pada repositori." - error_scm_command_failed: "Terjadi kesalahan pada saat mengakses repositori: {{value}}" + error_scm_command_failed: "Terjadi kesalahan pada saat mengakses repositori: %{value}" error_scm_annotate: "Entri tidak ada, atau tidak dapat di anotasi." error_issue_not_found_in_project: 'Masalah tidak ada atau tidak tergabung dalam proyek ini.' error_no_tracker_in_project: 'Tidak ada pelacak yang diasosiasikan pada proyek ini. Silakan pilih Pengaturan Proyek.' @@ -169,25 +173,25 @@ error_can_not_reopen_issue_on_closed_version: 'Masalah yang ditujukan pada versi tertutup tidak bisa dibuka kembali' error_can_not_archive_project: Proyek ini tidak bisa diarsipkan - warning_attachments_not_saved: "{{count}} berkas tidak bisa disimpan." + warning_attachments_not_saved: "%{count} berkas tidak bisa disimpan." - mail_subject_lost_password: "Kata sandi {{value}} anda" + mail_subject_lost_password: "Kata sandi %{value} anda" mail_body_lost_password: 'Untuk mengubah kata sandi anda, klik tautan berikut::' - mail_subject_register: "Aktivasi akun {{value}} anda" + mail_subject_register: "Aktivasi akun %{value} anda" mail_body_register: 'Untuk mengaktifkan akun anda, klik tautan berikut:' - mail_body_account_information_external: "Anda dapat menggunakan akun {{value}} anda untuk login." + mail_body_account_information_external: "Anda dapat menggunakan akun %{value} anda untuk login." mail_body_account_information: Informasi akun anda - mail_subject_account_activation_request: "Permintaan aktivasi akun {{value}} " - mail_body_account_activation_request: "Pengguna baru ({{value}}) sudan didaftarkan. Akun tersebut menunggu persetujuan anda:" - mail_subject_reminder: "{{count}} masalah harus selesai pada hari berikutnya ({{days}})" - mail_body_reminder: "{{count}} masalah yang ditugaskan pada anda harus selesai dalam {{days}} hari kedepan:" - mail_subject_wiki_content_added: "'{{id}}' halaman wiki sudah ditambahkan" - mail_body_wiki_content_added: "The '{{id}}' halaman wiki sudah ditambahkan oleh {{author}}." - mail_subject_wiki_content_updated: "'{{id}}' halaman wiki sudah diperbarui" - mail_body_wiki_content_updated: "The '{{id}}' halaman wiki sudah diperbarui oleh {{author}}." + mail_subject_account_activation_request: "Permintaan aktivasi akun %{value} " + mail_body_account_activation_request: "Pengguna baru (%{value}) sudan didaftarkan. Akun tersebut menunggu persetujuan anda:" + mail_subject_reminder: "%{count} masalah harus selesai pada hari berikutnya (%{days})" + mail_body_reminder: "%{count} masalah yang ditugaskan pada anda harus selesai dalam %{days} hari kedepan:" + mail_subject_wiki_content_added: "'%{id}' halaman wiki sudah ditambahkan" + mail_body_wiki_content_added: "The '%{id}' halaman wiki sudah ditambahkan oleh %{author}." + mail_subject_wiki_content_updated: "'%{id}' halaman wiki sudah diperbarui" + mail_body_wiki_content_updated: "The '%{id}' halaman wiki sudah diperbarui oleh %{author}." gui_validation_error: 1 kesalahan - gui_validation_error_plural: "{{count}} kesalahan" + gui_validation_error_plural: "%{count} kesalahan" field_name: Nama @@ -251,6 +255,7 @@ field_attr_lastname: Atribut nama belakang field_attr_mail: Atribut email field_onthefly: Pembuatan pengguna seketika + field_start_date: Mulai field_done_ratio: % Selesai field_auth_source: Mode otentikasi field_hide_mail: Sembunyikan email saya @@ -398,14 +403,14 @@ label_x_projects: zero: tidak ada proyek one: 1 proyek - other: "{{count}} proyek" + other: "%{count} proyek" label_project_all: Semua Proyek label_project_latest: Proyek terakhir label_issue: Masalah label_issue_new: Masalah baru label_issue_plural: Masalah label_issue_view_all: tampilkan semua masalah - label_issues_by: "Masalah ditambahkan oleh {{value}}" + label_issues_by: "Masalah ditambahkan oleh %{value}" label_issue_added: Masalah ditambahan label_issue_updated: Masalah diperbarui label_document: Dokumen @@ -454,7 +459,7 @@ label_registered_on: Terdaftar pada label_activity: Kegiatan label_overall_activity: Kegiatan umum - label_user_activity: "kegiatan {{value}}" + label_user_activity: "kegiatan %{value}" label_new: Baru label_logged_as: Login sebagai label_environment: Lingkungan @@ -463,7 +468,7 @@ label_auth_source_new: Mode otentikasi baru label_auth_source_plural: Mode Otentikasi label_subproject_plural: Subproyek - label_and_its_subprojects: "{{value}} dan subproyeknya" + label_and_its_subprojects: "%{value} dan subproyeknya" label_min_max_length: Panjang Min - Maks label_list: Daftar label_date: Tanggal @@ -474,8 +479,8 @@ label_text: Long text label_attribute: Atribut label_attribute_plural: Atribut - label_download: "{{count}} Unduhan" - label_download_plural: "{{count}} Unduhan" + label_download: "%{count} Unduhan" + label_download_plural: "%{count} Unduhan" label_no_data: Tidak ada data untuk ditampilkan label_change_status: Status perubahan label_history: Riwayat @@ -507,17 +512,17 @@ label_closed_issues: selesai label_closed_issues_plural: selesai label_x_open_issues_abbr_on_total: - zero: 0 belum selesai / {{total}} - one: 1 belum selesai / {{total}} - other: "{{count}} terbuka / {{total}}" + zero: 0 belum selesai / %{total} + one: 1 belum selesai / %{total} + other: "%{count} terbuka / %{total}" label_x_open_issues_abbr: zero: 0 belum selesai one: 1 belum selesai - other: "{{count}} belum selesai" + other: "%{count} belum selesai" label_x_closed_issues_abbr: zero: 0 selesai one: 1 selesai - other: "{{count}} selesai" + other: "%{count} selesai" label_total: Total label_permissions: Perijinan label_current_status: Status sekarang @@ -535,7 +540,7 @@ label_months_from: dari bulan label_gantt: Gantt label_internal: Internal - label_last_changes: "{{count}} perubahan terakhir" + label_last_changes: "%{count} perubahan terakhir" label_change_view_all: Tampilkan semua perubahan label_personalize_page: Personalkan halaman ini label_comment: Komentar @@ -543,7 +548,7 @@ label_x_comments: zero: tak ada komentar one: 1 komentar - other: "{{count}} komentar" + other: "%{count} komentar" label_comment_add: Tambahkan komentar label_comment_added: Komentar ditambahkan label_comment_delete: Hapus komentar @@ -564,7 +569,7 @@ label_yesterday: kemarin label_this_week: minggu ini label_last_week: minggu lalu - label_last_n_days: "{{count}} hari terakhir" + label_last_n_days: "%{count} hari terakhir" label_this_month: bulan ini label_last_month: bulan lalu label_this_year: this year @@ -578,8 +583,8 @@ label_repository: Repositori label_repository_plural: Repositori label_browse: Jelajah - label_modification: "{{count}} perubahan" - label_modification_plural: "{{count}} perubahan" + label_modification: "%{count} perubahan" + label_modification_plural: "%{count} perubahan" label_branch: Cabang label_tag: Tag label_revision: Revisi @@ -600,8 +605,8 @@ label_sort_lower: Ke bawah label_sort_lowest: Ke paling bawah label_roadmap: Rencana kerja - label_roadmap_due_in: "Harus selesai dalam {{value}}" - label_roadmap_overdue: "{{value}} terlambat" + label_roadmap_due_in: "Harus selesai dalam %{value}" + label_roadmap_overdue: "%{value} terlambat" label_roadmap_no_issues: Tak ada masalah pada versi ini label_search: Cari label_result_plural: Hasil @@ -619,8 +624,8 @@ label_changes_details: Rincian semua perubahan label_issue_tracking: Pelacak masalah label_spent_time: Waktu terpakai - label_f_hour: "{{value}} jam" - label_f_hour_plural: "{{value}} jam" + label_f_hour: "%{value} jam" + label_f_hour_plural: "%{value} jam" label_time_tracking: Pelacak waktu label_change_plural: Perubahan label_statistics: Statistik @@ -669,13 +674,13 @@ label_date_from: Dari label_date_to: Sampai label_language_based: Berdasarkan bahasa pengguna - label_sort_by: "Urut berdasarkan {{value}}" + label_sort_by: "Urut berdasarkan %{value}" label_send_test_email: Kirim email percobaan - label_feeds_access_key_created_on: "RSS access key dibuat {{value}} yang lalu" + label_feeds_access_key_created_on: "RSS access key dibuat %{value} yang lalu" label_module_plural: Modul - label_added_time_by: "Ditambahkan oleh {{author}} {{age}} yang lalu" - label_updated_time_by: "Diperbarui oleh {{author}} {{age}} yang lalu" - label_updated_time: "Diperbarui oleh {{value}} yang lalu" + label_added_time_by: "Ditambahkan oleh %{author} %{age} yang lalu" + label_updated_time_by: "Diperbarui oleh %{author} %{age} yang lalu" + label_updated_time: "Diperbarui oleh %{value} yang lalu" label_jump_to_a_project: Pilih proyek... label_file_plural: Berkas label_changeset_plural: Set perubahan @@ -693,7 +698,7 @@ label_registration_activation_by_email: aktivasi akun melalui email label_registration_manual_activation: aktivasi akun secara manual label_registration_automatic_activation: aktivasi akun secara otomatis - label_display_per_page: "Per halaman: {{value}}" + label_display_per_page: "Per halaman: %{value}" label_age: Umur label_change_properties: Rincian perubahan label_general: Umum @@ -716,7 +721,7 @@ label_sort: Urut label_ascending: Menaik label_descending: Menurun - label_date_from_to: Dari {{start}} sampai {{end}} + label_date_from_to: Dari %{start} sampai %{end} label_wiki_content_added: Halaman wiki ditambahkan label_wiki_content_updated: Halaman wiki diperbarui label_group: Kelompok @@ -787,52 +792,52 @@ text_regexp_info: mis. ^[A-Z0-9]+$ text_min_max_length_info: 0 berarti tidak ada pembatasan text_project_destroy_confirmation: Apakah anda benar-benar akan menghapus proyek ini beserta data terkait ? - text_subprojects_destroy_warning: "Subproyek: {{value}} juga akan dihapus." + text_subprojects_destroy_warning: "Subproyek: %{value} juga akan dihapus." text_workflow_edit: Pilih peran dan pelacak untuk menyunting alur kerja text_are_you_sure: Anda yakin ? - text_journal_changed: "{{label}} berubah dari {{old}} menjadi {{new}}" - text_journal_set_to: "{{label}} di set ke {{value}}" - text_journal_deleted: "{{label}} dihapus ({{old}})" - text_journal_added: "{{label}} {{value}} ditambahkan" + text_journal_changed: "%{label} berubah dari %{old} menjadi %{new}" + text_journal_set_to: "%{label} di set ke %{value}" + text_journal_deleted: "%{label} dihapus (%{old})" + text_journal_added: "%{label} %{value} ditambahkan" text_tip_issue_begin_day: tugas dimulai hari itu text_tip_issue_end_day: tugas berakhir hari itu text_tip_issue_begin_end_day: tugas dimulai dan berakhir hari itu text_project_identifier_info: 'Yang diijinkan hanya huruf kecil (a-z), angka dan tanda minus.
    Sekali disimpan, pengenal tidak bisa diubah.' - text_caracters_maximum: "maximum {{count}} karakter." - text_caracters_minimum: "Setidaknya harus sepanjang {{count}} karakter." - text_length_between: "Panjang diantara {{min}} dan {{max}} karakter." + text_caracters_maximum: "maximum %{count} karakter." + text_caracters_minimum: "Setidaknya harus sepanjang %{count} karakter." + text_length_between: "Panjang diantara %{min} dan %{max} karakter." text_tracker_no_workflow: Tidak ada alur kerja untuk pelacak ini text_unallowed_characters: Karakter tidak diperbolehkan text_comma_separated: Beberapa nilai diperbolehkan (dipisahkan koma). text_issues_ref_in_commit_messages: Mereferensikan dan membetulkan masalah pada pesan komit - text_issue_added: "Masalah {{id}} sudah dilaporkan oleh {{author}}." - text_issue_updated: "Masalah {{id}} sudah diperbarui oleh {{author}}." + text_issue_added: "Masalah %{id} sudah dilaporkan oleh %{author}." + text_issue_updated: "Masalah %{id} sudah diperbarui oleh %{author}." text_wiki_destroy_confirmation: Apakah anda benar-benar akan menghapus wiki ini beserta semua isinya ? - text_issue_category_destroy_question: "Beberapa masalah ({{count}}) ditugaskan pada kategori ini. Apa yang anda lakukan ?" + text_issue_category_destroy_question: "Beberapa masalah (%{count}) ditugaskan pada kategori ini. Apa yang anda lakukan ?" text_issue_category_destroy_assignments: Hapus kategori penugasan text_issue_category_reassign_to: Tugaskan kembali masalah untuk kategori ini text_user_mail_option: "Untuk proyek yang tidak dipilih, anda hanya akan menerima notifikasi hal-hal yang anda pantau atau anda terlibat di dalamnya (misalnya masalah yang anda tulis atau ditugaskan pada anda)." text_no_configuration_data: "Peran, pelacak, status masalah dan alur kerja belum dikonfigur.\nSangat disarankan untuk memuat konfigurasi default. Anda akan bisa mengubahnya setelah konfigurasi dimuat." text_load_default_configuration: Muat konfigurasi default - text_status_changed_by_changeset: "Diterapkan di set perubahan {{value}}." + text_status_changed_by_changeset: "Diterapkan di set perubahan %{value}." text_issues_destroy_confirmation: 'Apakah anda yakin untuk menghapus masalah terpilih ?' text_select_project_modules: 'Pilih modul untuk diaktifkan pada proyek ini:' text_default_administrator_account_changed: Akun administrator default sudah berubah text_file_repository_writable: Direktori yang bisa ditulisi untuk lampiran text_plugin_assets_writable: Direktori yang bisa ditulisi untuk plugin asset text_rmagick_available: RMagick tersedia (optional) - text_destroy_time_entries_question: "{{hours}} jam sudah dilaporkan pada masalah yang akan anda hapus. Apa yang akan anda lakukan ?" + text_destroy_time_entries_question: "%{hours} jam sudah dilaporkan pada masalah yang akan anda hapus. Apa yang akan anda lakukan ?" text_destroy_time_entries: Hapus jam yang terlapor text_assign_time_entries_to_project: Tugaskan jam terlapor pada proyek text_reassign_time_entries: 'Tugaskan kembali jam terlapor pada masalah ini:' - text_user_wrote: "{{value}} menulis:" - text_enumeration_destroy_question: "{{count}} obyek ditugaskan untuk nilai ini." + text_user_wrote: "%{value} menulis:" + text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini." text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:' - text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/email.yml dan restart kembali aplikasi untuk mengaktifkan." + text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/configuration.yml dan restart kembali aplikasi untuk mengaktifkan." text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan." text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.' text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai' - text_wiki_page_destroy_question: "Halaman ini mempunyai {{descendants}} halaman anak dan turunannya. Apa yang akan anda lakukan ?" + text_wiki_page_destroy_question: "Halaman ini mempunyai %{descendants} halaman anak dan turunannya. Apa yang akan anda lakukan ?" text_wiki_page_nullify_children: "Biarkan halaman anak sebagai halaman teratas (root)" text_wiki_page_destroy_children: "Hapus halaman anak dan semua turunannya" text_wiki_page_reassign_children: "Tujukan halaman anak ke halaman induk yang ini" @@ -868,13 +873,13 @@ setting_issue_done_ratio: Calculate the issue done ratio with label_api_access_key: API access key text_line_separated: Multiple values allowed (one line for each value). - label_revision_id: Revision {{value}} + label_revision_id: Revision %{value} permission_view_issues: View Issues setting_issue_done_ratio_issue_status: Use the issue status error_issue_done_ratios_not_updated: Issue done ratios not updated. label_display_used_statuses_only: Only display statuses that are used by this tracker error_workflow_copy_target: Please select target tracker(s) and role(s) - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -906,12 +911,12 @@ 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_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}}." + 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. @@ -919,7 +924,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -930,8 +935,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/it.yml.svn-base --- a/config/locales/.svn/text-base/it.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/it.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,6 +1,7 @@ # Italian translations for Ruby on Rails # by Claudio Poli (masterkain@gmail.com) # by Diego Pierotto (ita.translations@tiscali.it) +# by Emidio Stani (emidiostani@gmail.com) it: direction: ltr @@ -37,37 +38,37 @@ half_a_minute: "mezzo minuto" less_than_x_seconds: one: "meno di un secondo" - other: "meno di {{count}} secondi" + other: "meno di %{count} secondi" x_seconds: one: "1 secondo" - other: "{{count}} secondi" + other: "%{count} secondi" less_than_x_minutes: one: "meno di un minuto" - other: "meno di {{count}} minuti" + other: "meno di %{count} minuti" x_minutes: one: "1 minuto" - other: "{{count}} minuti" + other: "%{count} minuti" about_x_hours: one: "circa un'ora" - other: "circa {{count}} ore" + other: "circa %{count} ore" x_days: one: "1 giorno" - other: "{{count}} giorni" + other: "%{count} giorni" about_x_months: one: "circa un mese" - other: "circa {{count}} mesi" + other: "circa %{count} mesi" x_months: one: "1 mese" - other: "{{count}} mesi" + other: "%{count} mesi" about_x_years: one: "circa un anno" - other: "circa {{count}} anni" + other: "circa %{count} anni" over_x_years: one: "oltre un anno" - other: "oltre {{count}} anni" + other: "oltre %{count} anni" almost_x_years: one: "quasi 1 anno" - other: "quasi {{count}} anni" + other: "quasi %{count} anni" number: format: @@ -100,8 +101,8 @@ errors: template: header: - one: "Non posso salvare questo {{model}}: 1 errore" - other: "Non posso salvare questo {{model}}: {{count}} errori." + one: "Non posso salvare questo %{model}: 1 errore" + other: "Non posso salvare questo %{model}: %{count} errori." body: "Per favore ricontrolla i seguenti campi:" messages: inclusion: "non è incluso nella lista" @@ -111,22 +112,22 @@ accepted: "deve essere accettata" empty: "non può essere vuoto" blank: "non può essere lasciato in bianco" - too_long: "è troppo lungo (il massimo è {{count}} lettere)" - too_short: "è troppo corto (il minimo è {{count}} lettere)" - wrong_length: "è della lunghezza sbagliata (deve essere di {{count}} lettere)" + too_long: "è troppo lungo (il massimo è %{count} lettere)" + too_short: "è troppo corto (il minimo è %{count} lettere)" + wrong_length: "è della lunghezza sbagliata (deve essere di %{count} lettere)" taken: "è già in uso" not_a_number: "non è un numero" - greater_than: "deve essere superiore a {{count}}" - greater_than_or_equal_to: "deve essere superiore o uguale a {{count}}" - equal_to: "deve essere uguale a {{count}}" - less_than: "deve essere meno di {{count}}" - less_than_or_equal_to: "deve essere meno o uguale a {{count}}" + greater_than: "deve essere superiore a %{count}" + greater_than_or_equal_to: "deve essere superiore o uguale a %{count}" + equal_to: "deve essere uguale a %{count}" + less_than: "deve essere meno di %{count}" + less_than_or_equal_to: "deve essere meno o uguale a %{count}" odd: "deve essere dispari" even: "deve essere pari" greater_than_start_date: "deve essere maggiore della data di partenza" not_same_project: "non appartiene allo stesso progetto" circular_dependency: "Questa relazione creerebbe una dipendenza circolare" - 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: "Una segnalazione non può essere collegata a una delle sue discendenti" actionview_instancetag_blank_option: Scegli @@ -141,11 +142,11 @@ general_pdf_encoding: ISO-8859-1 general_first_day_of_week: '1' - notice_account_updated: L'utente è stata aggiornato. + notice_account_updated: L'utente è stato aggiornato. notice_account_invalid_creditentials: Nome utente o password non validi. notice_account_password_updated: La password è stata aggiornata. notice_account_wrong_password: Password errata - notice_account_register_done: L'utente è stata creato. + notice_account_register_done: L'utente è stato creato. notice_account_unknown_email: Utente sconosciuto. notice_can_t_change_password: Questo utente utilizza un metodo di autenticazione esterno. Impossibile cambiare la password. notice_account_lost_email_sent: Ti è stata spedita una email con le istruzioni per cambiare la password. @@ -157,20 +158,20 @@ notice_file_not_found: La pagina desiderata non esiste o è stata rimossa. notice_locking_conflict: Le informazioni sono state modificate da un altro utente. notice_not_authorized: Non sei autorizzato ad accedere a questa pagina. - notice_email_sent: "Una email è stata spedita a {{value}}" - notice_email_error: "Si è verificato un errore durante l'invio di una email ({{value}})" + notice_email_sent: "Una email è stata spedita a %{value}" + notice_email_error: "Si è verificato un errore durante l'invio di una email (%{value})" notice_feeds_access_key_reseted: La tua chiave di accesso RSS è stata reimpostata. error_scm_not_found: "La risorsa e/o la versione non esistono nel repository." - error_scm_command_failed: "Si è verificato un errore durante l'accesso al repository: {{value}}" + error_scm_command_failed: "Si è verificato un errore durante l'accesso al repository: %{value}" - mail_subject_lost_password: "Password {{value}}" + mail_subject_lost_password: "Password %{value}" mail_body_lost_password: 'Per cambiare la password, usa il seguente collegamento:' - mail_subject_register: "Attivazione utente {{value}}" + mail_subject_register: "Attivazione utente %{value}" mail_body_register: "Per attivare l'utente, usa il seguente collegamento:" gui_validation_error: 1 errore - gui_validation_error_plural: "{{count}} errori" + gui_validation_error_plural: "%{count} errori" field_name: Nome field_description: Descrizione @@ -232,6 +233,7 @@ field_attr_lastname: Attributo cognome field_attr_mail: Attributo email field_onthefly: Creazione utente "al volo" + field_start_date: Inizio field_done_ratio: % completato field_auth_source: Modalità di autenticazione field_hide_mail: Nascondi il mio indirizzo email @@ -281,7 +283,7 @@ label_x_projects: zero: nessun progetto one: 1 progetto - other: "{{count}} progetti" + other: "%{count} progetti" label_project_all: Tutti i progetti label_project_latest: Ultimi progetti registrati label_issue: Segnalazione @@ -348,8 +350,8 @@ label_text: Testo esteso label_attribute: Attributo label_attribute_plural: Attributi - label_download: "{{count}} Download" - label_download_plural: "{{count}} Download" + label_download: "%{count} Download" + label_download_plural: "%{count} Download" label_no_data: Nessun dato disponibile label_change_status: Cambia stato label_history: Cronologia @@ -378,17 +380,17 @@ label_closed_issues: chiusa label_closed_issues_plural: chiuse label_x_open_issues_abbr_on_total: - zero: 0 aperte / {{total}} - one: 1 aperta / {{total}} - other: "{{count}} aperte / {{total}}" + zero: 0 aperte / %{total} + one: 1 aperta / %{total} + other: "%{count} aperte / %{total}" label_x_open_issues_abbr: zero: 0 aperte one: 1 aperta - other: "{{count}} aperte" + other: "%{count} aperte" label_x_closed_issues_abbr: zero: 0 chiuse one: 1 chiusa - other: "{{count}} chiuse" + other: "%{count} chiuse" label_total: Totale label_permissions: Permessi label_current_status: Stato attuale @@ -405,7 +407,7 @@ label_months_from: mesi da label_gantt: Gantt label_internal: Interno - label_last_changes: "ultime {{count}} modifiche" + label_last_changes: "ultime %{count} modifiche" label_change_view_all: Tutte le modifiche label_personalize_page: Personalizza la pagina label_comment: Commento @@ -413,7 +415,7 @@ label_x_comments: zero: nessun commento one: 1 commento - other: "{{count}} commenti" + other: "%{count} commenti" label_comment_add: Aggiungi un commento label_comment_added: Commento aggiunto label_comment_delete: Elimina commenti @@ -437,8 +439,8 @@ label_day_plural: giorni label_repository: Repository label_browse: Sfoglia - label_modification: "{{count}} modifica" - label_modification_plural: "{{count}} modifiche" + label_modification: "%{count} modifica" + label_modification_plural: "%{count} modifiche" label_revision: Versione label_revision_plural: Versioni label_added: aggiunto @@ -453,15 +455,15 @@ label_sort_lower: Giù label_sort_lowest: Sposta in fondo label_roadmap: Roadmap - label_roadmap_due_in: "Da ultimare in {{value}}" - label_roadmap_overdue: "{{value}} di ritardo" + label_roadmap_due_in: "Da ultimare in %{value}" + label_roadmap_overdue: "%{value} di ritardo" label_roadmap_no_issues: Nessuna segnalazione per questa versione label_search: Ricerca label_result_plural: Risultati label_all_words: Tutte le parole label_wiki: Wiki label_wiki_edit: Modifica wiki - label_wiki_edit_plural: Modfiche wiki + label_wiki_edit_plural: Modifiche wiki label_wiki_page: Pagina Wiki label_wiki_page_plural: Pagine wiki label_index_by_title: Ordina per titolo @@ -472,8 +474,8 @@ label_changes_details: Particolari di tutti i cambiamenti label_issue_tracking: Tracking delle segnalazioni label_spent_time: Tempo impiegato - label_f_hour: "{{value}} ora" - label_f_hour_plural: "{{value}} ore" + label_f_hour: "%{value} ora" + label_f_hour_plural: "%{value} ore" label_time_tracking: Tracking del tempo label_change_plural: Modifiche label_statistics: Statistiche @@ -520,12 +522,12 @@ label_date_from: Da label_date_to: A label_language_based: Basato sul linguaggio - label_sort_by: "Ordina per {{value}}" + label_sort_by: "Ordina per %{value}" label_send_test_email: Invia una email di prova - label_feeds_access_key_created_on: "chiave di accesso RSS creata {{value}} fa" + label_feeds_access_key_created_on: "chiave di accesso RSS creata %{value} fa" label_module_plural: Moduli - label_added_time_by: "Aggiunto da {{author}} {{age}} fa" - label_updated_time: "Aggiornato {{value}} fa" + label_added_time_by: "Aggiunto da %{author} %{age} fa" + label_updated_time: "Aggiornato %{value} fa" label_jump_to_a_project: Vai al progetto... button_login: Entra @@ -575,16 +577,16 @@ text_tip_issue_end_day: attività che terminano in questa giornata text_tip_issue_begin_end_day: attività che iniziano e terminano in questa giornata text_project_identifier_info: "Lettere minuscole (a-z), numeri e trattini permessi.
    Una volta salvato, l'identificativo non può essere modificato." - text_caracters_maximum: "massimo {{count}} caratteri." - text_length_between: "Lunghezza compresa tra {{min}} e {{max}} caratteri." + text_caracters_maximum: "massimo %{count} caratteri." + text_length_between: "Lunghezza compresa tra %{min} e %{max} caratteri." text_tracker_no_workflow: Nessun workflow definito per questo tracker text_unallowed_characters: Caratteri non permessi text_comma_separated: Valori multipli permessi (separati da virgole). text_issues_ref_in_commit_messages: Segnalazioni di riferimento e chiusura nei messaggi di commit - text_issue_added: "E' stata segnalata l'anomalia {{id}} da {{author}}." - text_issue_updated: "L'anomalia {{id}} è stata aggiornata da {{author}}." + text_issue_added: "E' stata segnalata l'anomalia %{id} da %{author}." + text_issue_updated: "L'anomalia %{id} è stata aggiornata da %{author}." text_wiki_destroy_confirmation: Sicuro di voler eliminare questo wiki e tutti i suoi contenuti? - text_issue_category_destroy_question: "Alcune segnalazioni ({{count}}) risultano assegnate a questa categoria. Cosa vuoi fare ?" + text_issue_category_destroy_question: "Alcune segnalazioni (%{count}) risultano assegnate a questa categoria. Cosa vuoi fare ?" text_issue_category_destroy_assignments: Rimuovi le assegnazioni a questa categoria text_issue_category_reassign_to: Riassegna segnalazioni a questa categoria @@ -622,7 +624,7 @@ notice_no_issue_selected: "Nessuna segnalazione selezionata! Seleziona le segnalazioni che intendi modificare." label_bulk_edit_selected_issues: Modifica massiva delle segnalazioni selezionate label_no_change_option: (Nessuna modifica) - notice_failed_to_save_issues: "Impossibile salvare {{count}} segnalazioni su {{total}} selezionate: {{ids}}." + notice_failed_to_save_issues: "Impossibile salvare %{count} segnalazioni su %{total} selezionate: %{ids}." label_theme: Tema label_default: Predefinito label_search_titles_only: Cerca solo nei titoli @@ -634,37 +636,37 @@ setting_emails_footer: Piè di pagina email label_float: Decimale button_copy: Copia - mail_body_account_information_external: "Puoi utilizzare il tuo account {{value}} per accedere al sistema." + mail_body_account_information_external: "Puoi utilizzare il tuo account %{value} per accedere al sistema." mail_body_account_information: Le informazioni riguardanti il tuo account setting_protocol: Protocollo label_user_mail_no_self_notified: "Non voglio notifiche riguardanti modifiche da me apportate" setting_time_format: Formato ora label_registration_activation_by_email: attivazione account via email - mail_subject_account_activation_request: "{{value}} richiesta attivazione account" - mail_body_account_activation_request: "Un nuovo utente ({{value}}) ha effettuato la registrazione. Il suo account è in attesa di abilitazione da parte tua:" + mail_subject_account_activation_request: "%{value} richiesta attivazione account" + mail_body_account_activation_request: "Un nuovo utente (%{value}) ha effettuato la registrazione. Il suo account è in attesa di abilitazione da parte tua:" label_registration_automatic_activation: attivazione account automatica label_registration_manual_activation: attivazione account manuale notice_account_pending: "Il tuo account è stato creato ed è in attesa di attivazione da parte dell'amministratore." field_time_zone: Fuso orario - text_caracters_minimum: "Deve essere lungo almeno {{count}} caratteri." + text_caracters_minimum: "Deve essere lungo almeno %{count} caratteri." setting_bcc_recipients: Destinatari in copia nascosta (bcc) button_annotate: Annota - label_issues_by: "Segnalazioni di {{value}}" + label_issues_by: "Segnalazioni di %{value}" field_searchable: Ricercabile - label_display_per_page: "Per pagina: {{value}}" + label_display_per_page: "Per pagina: %{value}" setting_per_page_options: Opzioni oggetti per pagina label_age: Età notice_default_data_loaded: Configurazione predefinita caricata con successo. text_load_default_configuration: Carica la configurazione predefinita text_no_configuration_data: "Ruoli, tracker, stati delle segnalazioni e workflow non sono stati ancora configurati.\nE' vivamente consigliato caricare la configurazione predefinita. Potrai modificarla una volta caricata." - error_can_t_load_default_data: "Non è stato possibile caricare la configurazione predefinita : {{value}}" + error_can_t_load_default_data: "Non è stato possibile caricare la configurazione predefinita : %{value}" button_update: Aggiorna label_change_properties: Modifica le proprietà label_general: Generale label_repository_plural: Repository label_associated_revisions: Revisioni associate setting_user_format: Formato visualizzazione utenti - text_status_changed_by_changeset: "Applicata nel changeset {{value}}." + text_status_changed_by_changeset: "Applicata nel changeset %{value}." label_more: Altro text_issues_destroy_confirmation: 'Sei sicuro di voler eliminare le segnalazioni selezionate?' label_scm: SCM @@ -691,7 +693,7 @@ label_ldap_authentication: Autenticazione LDAP label_downloads_abbr: D/L label_this_month: questo mese - label_last_n_days: "ultimi {{count}} giorni" + label_last_n_days: "ultimi %{count} giorni" label_all_time: sempre label_this_year: quest'anno label_date_range: Intervallo di date @@ -700,7 +702,7 @@ label_last_month: ultimo mese label_add_another_file: Aggiungi un altro file label_optional_description: Descrizione opzionale - text_destroy_time_entries_question: "{{hours}} ore risultano spese sulle segnalazioni che stai per eliminare. Cosa vuoi fare ?" + text_destroy_time_entries_question: "%{hours} ore risultano spese sulle segnalazioni che stai per eliminare. Cosa vuoi fare ?" error_issue_not_found_in_project: 'La segnalazione non è stata trovata o non appartiene al progetto' text_assign_time_entries_to_project: Assegna le ore segnalate al progetto text_destroy_time_entries: Elimina le ore segnalate @@ -715,20 +717,20 @@ setting_default_projects_public: I nuovi progetti sono pubblici in modo predefinito error_scm_annotate: "L'oggetto non esiste o non può essere annotato." label_planning: Pianificazione - text_subprojects_destroy_warning: "Anche i suoi sottoprogetti: {{value}} verranno eliminati." - label_and_its_subprojects: "{{value}} ed i suoi sottoprogetti" - mail_body_reminder: "{{count}} segnalazioni che ti sono state assegnate scadranno nei prossimi {{days}} giorni:" - mail_subject_reminder: "{{count}} segnalazioni in scadenza nei prossimi {{days}} giorni" - text_user_wrote: "{{value}} ha scritto:" + text_subprojects_destroy_warning: "Anche i suoi sottoprogetti: %{value} verranno eliminati." + label_and_its_subprojects: "%{value} ed i suoi sottoprogetti" + mail_body_reminder: "%{count} segnalazioni che ti sono state assegnate scadranno nei prossimi %{days} giorni:" + mail_subject_reminder: "%{count} segnalazioni in scadenza nei prossimi %{days} giorni" + text_user_wrote: "%{value} ha scritto:" label_duplicated_by: duplicato da setting_enabled_scm: SCM abilitato text_enumeration_category_reassign_to: 'Riassegnale a questo valore:' - text_enumeration_destroy_question: "{{count}} oggetti hanno un assegnamento su questo valore." + text_enumeration_destroy_question: "%{count} oggetti hanno un assegnamento su questo valore." label_incoming_emails: Email in arrivo label_generate_key: Genera una chiave setting_mail_handler_api_enabled: Abilita WS per le email in arrivo setting_mail_handler_api_key: Chiave API - text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle." + 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 @@ -789,12 +791,12 @@ text_repository_usernames_mapping: "Seleziona per aggiornare la corrispondenza tra gli utenti Redmine e quelli presenti nel log del repository.\nGli utenti Redmine e repository con lo stesso note utente o email sono mappati automaticamente." permission_edit_own_messages: Modifica propri messaggi permission_delete_own_messages: Elimina propri messaggi - label_user_activity: "attività di {{value}}" - label_updated_time_by: "Aggiornato da {{author}} {{age}} fa" + label_user_activity: "attività di %{value}" + label_updated_time_by: "Aggiornato da %{author} %{age} fa" text_diff_truncated: '... Le differenze sono state troncate perchè superano il limite massimo visualizzabile.' setting_diff_max_lines_displayed: Limite massimo di differenze (linee) mostrate text_plugin_assets_writable: Directory attività dei plugins scrivibile - warning_attachments_not_saved: "{{count}} file non possono essere salvati." + warning_attachments_not_saved: "%{count} file non possono essere salvati." button_create_and_continue: Crea e continua text_custom_field_possible_values_info: 'Un valore per ogni riga' label_display: Mostra @@ -809,21 +811,21 @@ label_descending: Discendente label_sort: Ordina label_ascending: Ascendente - label_date_from_to: Da {{start}} a {{end}} + label_date_from_to: Da %{start} a %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Questa pagina ha {{descendants}} pagine figlie. Cosa ne vuoi fare? + text_wiki_page_destroy_question: Questa pagina ha %{descendants} pagine figlie. Cosa ne vuoi fare? text_wiki_page_reassign_children: Riassegna le pagine figlie al padre di questa pagina text_wiki_page_nullify_children: Mantieni le pagine figlie come pagine radice text_wiki_page_destroy_children: Elimina le pagine figlie e tutta la discendenza setting_password_min_length: Lunghezza minima password field_group_by: Raggruppa risultati per - mail_subject_wiki_content_updated: "La pagina wiki '{{id}}' è stata aggiornata" + mail_subject_wiki_content_updated: "La pagina wiki '%{id}' è stata aggiornata" label_wiki_content_added: Aggiunta pagina al wiki - mail_subject_wiki_content_added: "La pagina '{{id}}' è stata aggiunta al wiki" - mail_body_wiki_content_added: La pagina '{{id}}' è stata aggiunta al wiki da {{author}}. + mail_subject_wiki_content_added: "La pagina '%{id}' è stata aggiunta al wiki" + mail_body_wiki_content_added: La pagina '%{id}' è stata aggiunta al wiki da %{author}. label_wiki_content_updated: Aggiornata pagina wiki - mail_body_wiki_content_updated: La pagina '{{id}}' wiki è stata aggiornata da{{author}}. + mail_body_wiki_content_updated: La pagina '%{id}' wiki è stata aggiornata da%{author}. permission_add_project: Crea progetto setting_new_project_user_role_id: Ruolo assegnato agli utenti non amministratori che creano un progetto label_view_all_revisions: Mostra tutte le revisioni @@ -831,14 +833,14 @@ label_branch: Branch error_no_tracker_in_project: Nessun tracker è associato a questo progetto. Per favore verifica le impostazioni del Progetto. error_no_default_issue_status: Nessuno stato predefinito delle segnalazioni è configurato. Per favore verifica le impostazioni (Vai in "Amministrazione -> Stati segnalazioni"). - text_journal_changed: "{{label}} modificata da {{old}} a {{new}}" - text_journal_set_to: "{{label}} impostata a {{value}}" - text_journal_deleted: "{{label}} eliminata ({{old}})" + text_journal_changed: "%{label} modificata da %{old} a %{new}" + text_journal_set_to: "%{label} impostata a %{value}" + text_journal_deleted: "%{label} eliminata (%{old})" label_group_plural: Gruppi label_group: Gruppo label_group_new: Nuovo gruppo label_time_entry_plural: Tempo impiegato - text_journal_added: "{{value}} {{label}} aggiunto" + text_journal_added: "%{value} %{label} aggiunto" field_active: Attivo enumeration_system_activity: Attività di sistema permission_delete_issue_watchers: Elimina osservatori @@ -873,9 +875,9 @@ setting_start_of_week: Avvia calendari il permission_view_issues: Mostra segnalazioni label_display_used_statuses_only: Mostra solo stati che vengono usati per questo tracker - label_revision_id: Revisione {{value}} + label_revision_id: Revisione %{value} label_api_access_key: Chiave di accesso API - label_api_access_key_created_on: Chiave di accesso API creata {{value}} fa + label_api_access_key_created_on: Chiave di accesso API creata %{value} fa label_feeds_access_key: Chiave di accesso RSS notice_api_access_key_reseted: La chiave di accesso API è stata reimpostata. setting_rest_api_enabled: Abilita il servizio web REST @@ -902,32 +904,40 @@ label_subtask_plural: Sottoattività label_project_copy_notifications: Invia notifiche email durante la copia del progetto error_can_not_delete_custom_field: Impossibile eliminare il campo personalizzato - error_unable_to_connect: Impossibile connettersi ({{value}}) + error_unable_to_connect: Impossibile connettersi (%{value}) error_can_not_remove_role: Questo ruolo è in uso e non può essere eliminato. error_can_not_delete_tracker: Questo tracker contiene segnalazioni e non può essere eliminato. field_principal: Principale label_my_page_block: La mia pagina di blocco - notice_failed_to_save_members: "Impossibile salvare il membro(i): {{errors}}." + notice_failed_to_save_members: "Impossibile salvare il membro(i): %{errors}." text_zoom_out: Riduci ingrandimento text_zoom_in: Aumenta ingrandimento notice_unable_delete_time_entry: Impossibile eliminare il valore time log. label_overall_spent_time: Totale tempo impiegato - field_time_entries: Log time + field_time_entries: Tempo di collegamento 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + project_module_calendar: Calendario + button_edit_associated_wikipage: "Modifica la pagina wiki associata: %{page_title}" + text_are_you_sure_with_children: Eliminare la segnalazione e tutte le discendenti? + field_text: Campo di testo + label_user_mail_option_only_owner: Solo se io sono il proprietario + setting_default_notification_option: Opzione di notifica predefinita + label_user_mail_option_only_my_events: Solo se sono un osservatore o sono coinvolto + label_user_mail_option_only_assigned: Solo quando mi assegnano attività + label_user_mail_option_none: Nessun evento + field_member_of_group: Gruppo dell'assegnatario + field_assigned_to_role: Ruolo dell'assegnatario + notice_not_authorized_archived_project: Il progetto a cui stai accedendo è stato archiviato. + label_principal_search: "Cerca utente o gruppo:" + label_user_search: "Cerca utente:" + field_visible: Visibile + setting_emails_header: Intestazione email + setting_commit_logtime_activity_id: Attività per il tempo di collegamento + text_time_logged_by_changeset: Usato nel changeset %{value}. + setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento + notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare + setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/ja.yml.svn-base --- a/config/locales/.svn/text-base/ja.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/ja.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -36,37 +36,37 @@ half_a_minute: "30ç§’å‰å¾Œ" less_than_x_seconds: one: "1秒以内" - other: "{{count}}秒以内" + other: "%{count}秒以内" x_seconds: one: "1ç§’" - other: "{{count}}ç§’" + other: "%{count}ç§’" less_than_x_minutes: one: "1分以内" - other: "{{count}}分以内" + other: "%{count}分以内" x_minutes: one: "1分" - other: "{{count}}分" + other: "%{count}分" about_x_hours: one: "ç´„1時間" - other: "ç´„{{count}}時間" + other: "ç´„%{count}時間" x_days: one: "1æ—¥" - other: "{{count}}æ—¥" + other: "%{count}æ—¥" about_x_months: one: "ç´„1ヶ月" - other: "ç´„{{count}}ヶ月" + other: "ç´„%{count}ヶ月" x_months: one: "1ヶ月" - other: "{{count}}ヶ月" + other: "%{count}ヶ月" about_x_years: one: "ç´„1å¹´" - other: "ç´„{{count}}å¹´" + other: "ç´„%{count}å¹´" over_x_years: one: "1年以上" - other: "{{count}}年以上" + other: "%{count}年以上" almost_x_years: one: "ã»ã¼1å¹´" - other: "ã»ã¼{{count}}å¹´" + other: "ã»ã¼%{count}å¹´" number: format: @@ -116,8 +116,8 @@ errors: template: header: - one: "{{model}} ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - other: "{{model}} ã« {{count}} ã¤ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" + one: "%{model} ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" + other: "%{model} ã« %{count} ã¤ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" body: "次ã®é …目を確èªã—ã¦ãã ã•ã„。" messages: @@ -128,17 +128,17 @@ accepted: "ã‚’å—諾ã—ã¦ãã ã•ã„。" empty: "を入力ã—ã¦ãã ã•ã„。" blank: "を入力ã—ã¦ãã ã•ã„。" - too_long: "ã¯{{count}}文字以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" - too_short: "ã¯{{count}}文字以上ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" - wrong_length: "ã¯{{count}}文字ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" + 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}}以下ã®å€¤ã«ã—ã¦ãã ã•ã„。" + 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: "を開始日より後ã«ã—ã¦ãã ã•ã„" @@ -176,29 +176,30 @@ notice_locking_conflict: 別ã®ãƒ¦ãƒ¼ã‚¶ãŒãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã—ã¦ã„ã¾ã™ã€‚ notice_not_authorized: ã“ã®ãƒšãƒ¼ã‚¸ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯èªè¨¼ãŒå¿…è¦ã§ã™ã€‚ notice_not_authorized_archived_project: ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã¯æ›¸åº«ã«ä¿å­˜ã•れã¦ã„ã¾ã™ã€‚ - notice_email_sent: "{{value}} å®›ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚" - notice_email_error: "メールé€ä¿¡ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠({{value}})" + 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: "{{total}}ä»¶ã®ã†ã¡{{count}}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: {{ids}}." - notice_failed_to_save_members: "メンãƒãƒ¼ã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ: {{errors}}." + notice_failed_to_save_issues: "%{total}ä»¶ã®ã†ã¡%{count}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{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: ガントãƒãƒ£ãƒ¼ãƒˆã¯ã€æœ€å¤§è¡¨ç¤ºé …目数(%{max})ã‚’è¶…ãˆãŸãŸãŸã‚切りæ¨ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ - error_can_t_load_default_data: "デフォルト設定ãŒãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ: {{value}}" + error_can_t_load_default_data: "デフォルト設定ãŒãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{value}" error_scm_not_found: リãƒã‚¸ãƒˆãƒªã«ã€ã‚¨ãƒ³ãƒˆãƒª/リビジョンãŒå­˜åœ¨ã—ã¾ã›ã‚“。 - error_scm_command_failed: "リãƒã‚¸ãƒˆãƒªã¸ã‚¢ã‚¯ã‚»ã‚¹ã—よã†ã¨ã—ã¦ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã—ãŸ: {{value}}" + error_scm_command_failed: "リãƒã‚¸ãƒˆãƒªã¸ã‚¢ã‚¯ã‚»ã‚¹ã—よã†ã¨ã—ã¦ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã—ãŸ: %{value}" error_scm_annotate: "エントリãŒå­˜åœ¨ã—ãªã„ã€ã‚‚ã—ãã¯ã‚¢ãƒŽãƒ†ãƒ¼ãƒˆã§ãã¾ã›ã‚“。" error_issue_not_found_in_project: 'ãƒã‚±ãƒƒãƒˆãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€ã‚‚ã—ãã¯ã“ã®ãƒ—ロジェクトã«å±žã—ã¦ã„ã¾ã›ã‚“' error_unable_delete_issue_status: "ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" error_no_tracker_in_project: 'ã“ã®ãƒ—ロジェクトã«ã¯ãƒˆãƒ©ãƒƒã‚«ãƒ¼ãŒç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“。プロジェクト設定を確èªã—ã¦ãã ã•ã„。' error_no_default_issue_status: 'デフォルトã®ãƒã‚±ãƒƒãƒˆã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。設定を確èªã—ã¦ãã ã•ã„(管ç†â†’ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ï¼‰ã€‚' error_can_not_delete_custom_field: 'カスタムフィールドを削除ã§ãã¾ã›ã‚“。' - error_unable_to_connect: "接続ã§ãã¾ã›ã‚“。 ({{value}})" + error_unable_to_connect: "接続ã§ãã¾ã›ã‚“。 (%{value})" error_can_not_remove_role: 'ã“ã®ãƒ­ãƒ¼ãƒ«ã¯ä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚削除ã§ãã¾ã›ã‚“。' error_can_not_reopen_issue_on_closed_version: '終了ã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã²ã‚‚付ã‘ã•れãŸãƒã‚±ãƒƒãƒˆã®å†ã‚ªãƒ¼ãƒ—ンã¯ã§ãã¾ã›ã‚“。' error_can_not_archive_project: ã“ã®ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã¯æ›¸åº«ã«ä¿å­˜ã§ãã¾ã›ã‚“ @@ -207,25 +208,25 @@ error_workflow_copy_target: 'コピー先ã¨ãªã‚‹ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã¨ãƒ­ãƒ¼ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„' error_can_not_delete_tracker: 'ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã¯ä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚削除ã§ãã¾ã›ã‚“。' - warning_attachments_not_saved: "{{count}}å€‹ã®æ·»ä»˜ãƒ•ァイルãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + warning_attachments_not_saved: "%{count}å€‹ã®æ·»ä»˜ãƒ•ァイルãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - mail_subject_lost_password: "{{value}} パスワードå†ç™ºè¡Œ" + mail_subject_lost_password: "%{value} パスワードå†ç™ºè¡Œ" mail_body_lost_password: 'パスワードを変更ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®ãƒªãƒ³ã‚¯ã‚’クリックã—ã¦ãã ã•ã„:' - mail_subject_register: "{{value}} アカウント登録ã®ç¢ºèª" + mail_subject_register: "%{value} アカウント登録ã®ç¢ºèª" mail_body_register: 'アカウント登録を完了ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’クリックã—ã¦ãã ã•ã„:' - mail_body_account_information_external: "{{value}} アカウントを使ã£ã¦ã«ãƒ­ã‚°ã‚¤ãƒ³ã§ãã¾ã™ã€‚" + 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: "Wikiページ {{id}} ãŒè¿½åŠ ã•れã¾ã—ãŸ" - mail_body_wiki_content_added: "{{author}} ã«ã‚ˆã£ã¦Wikiページ {{id}} ãŒè¿½åŠ ã•れã¾ã—ãŸã€‚" - mail_subject_wiki_content_updated: "Wikiページ {{id}} ãŒæ›´æ–°ã•れã¾ã—ãŸ" - mail_body_wiki_content_updated: "{{author}} ã«ã‚ˆã£ã¦Wikiページ {{id}} ãŒæ›´æ–°ã•れã¾ã—ãŸã€‚" + 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: "Wikiページ %{id} ãŒè¿½åŠ ã•れã¾ã—ãŸ" + 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}}ä»¶ã®ã‚¨ãƒ©ãƒ¼" + gui_validation_error_plural: "%{count}ä»¶ã®ã‚¨ãƒ©ãƒ¼" field_name: åç§° field_description: 説明 @@ -288,6 +289,7 @@ field_attr_lastname: 苗字属性 field_attr_mail: メール属性 field_onthefly: ã‚ã‚ã›ã¦ãƒ¦ãƒ¼ã‚¶ã‚’ä½œæˆ + field_start_date: é–‹å§‹æ—¥ field_done_ratio: é€²æ— % field_auth_source: èªè¨¼æ–¹å¼ field_hide_mail: メールアドレスを隠㙠@@ -322,6 +324,7 @@ field_member_of_group: 担当者ã®ã‚°ãƒ«ãƒ¼ãƒ— field_assigned_to_role: 担当者ã®ãƒ­ãƒ¼ãƒ« field_text: テキスト + field_visible: 表示 setting_app_title: アプリケーションã®ã‚¿ã‚¤ãƒˆãƒ« setting_app_subtitle: アプリケーションã®ã‚µãƒ–タイトル @@ -351,6 +354,7 @@ setting_issue_list_default_columns: ãƒã‚±ãƒƒãƒˆã®ä¸€è¦§ã§è¡¨ç¤ºã™ã‚‹é …ç›® setting_repositories_encodings: リãƒã‚¸ãƒˆãƒªã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° setting_commit_logs_encoding: コミットメッセージã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° + setting_emails_header: メールã®ãƒ˜ãƒƒãƒ€ setting_emails_footer: メールã®ãƒ•ッタ setting_protocol: プロトコル setting_per_page_options: ページ毎ã®è¡¨ç¤ºä»¶æ•° @@ -377,6 +381,9 @@ setting_start_of_week: 週ã®é–‹å§‹æ›œæ—¥ setting_rest_api_enabled: RESTã«ã‚ˆã‚‹Webサービスを有効ã«ã™ã‚‹ setting_default_notification_option: デフォルトã®ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚ªãƒ—ション + setting_commit_logtime_enabled: コミット時ã«ä½œæ¥­æ™‚間を記録ã™ã‚‹ + setting_commit_logtime_activity_id: 作業時間ã®ä½œæ¥­åˆ†é¡ž + setting_gantt_items_limit: ガントãƒãƒ£ãƒ¼ãƒˆæœ€å¤§è¡¨ç¤ºé …目数 permission_add_project: プロジェクトã®è¿½åŠ  permission_add_subprojects: サブプロジェクトã®è¿½åŠ  @@ -456,14 +463,14 @@ label_x_projects: zero: プロジェクトã¯ã‚りã¾ã›ã‚“ one: 1プロジェクト - other: "{{count}}プロジェクト" + 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_issues_by: "%{value} 別ã®ãƒã‚±ãƒƒãƒˆ" label_issue_added: ãƒã‚±ãƒƒãƒˆãŒè¿½åŠ ã•れã¾ã—㟠label_issue_updated: ãƒã‚±ãƒƒãƒˆãŒæ›´æ–°ã•れã¾ã—㟠label_document: 文書 @@ -513,7 +520,7 @@ label_registered_on: 登録日 label_activity: 活動 label_overall_activity: å…¨ã¦ã®æ´»å‹• - label_user_activity: "{{value}} ã®æ´»å‹•" + label_user_activity: "%{value} ã®æ´»å‹•" label_new: æ–°ã—ãä½œæˆ label_logged_as: ログイン中: label_environment: 環境 @@ -523,7 +530,7 @@ label_auth_source_plural: èªè¨¼æ–¹å¼ label_subproject_plural: サブプロジェクト label_subproject_new: æ–°ã—ã„サブプロジェクト - label_and_its_subprojects: "{{value}} ã¨ã‚µãƒ–プロジェクト" + label_and_its_subprojects: "%{value} ã¨ã‚µãƒ–プロジェクト" label_min_max_length: 最å°å€¤ - 最大値ã®é•·ã• label_list: リストã‹ã‚‰é¸æŠž label_date: 日付 @@ -534,8 +541,8 @@ label_text: é•·ã„テキスト label_attribute: 属性 label_attribute_plural: 属性 - label_download: "{{count}}ダウンロード" - label_download_plural: "{{count}}ダウンロード" + label_download: "%{count}ダウンロード" + label_download_plural: "%{count}ダウンロード" label_no_data: 表示ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãŒã‚りã¾ã›ã‚“ label_change_status: ステータスã®å¤‰æ›´ label_history: 履歴 @@ -567,17 +574,17 @@ label_closed_issues: 完了 label_closed_issues_plural: 完了 label_x_open_issues_abbr_on_total: - zero: 0件未完了 / å…¨{{total}}ä»¶ - one: 1件未完了 / å…¨{{total}}ä»¶ - other: "{{count}}件未完了 / å…¨{{total}}ä»¶" + zero: 0件未完了 / å…¨%{total}ä»¶ + one: 1件未完了 / å…¨%{total}ä»¶ + other: "%{count}件未完了 / å…¨%{total}ä»¶" label_x_open_issues_abbr: zero: 0件未完了 one: 1件未完了 - other: "{{count}}件未完了" + other: "%{count}件未完了" label_x_closed_issues_abbr: zero: 0件完了 one: 1件完了 - other: "{{count}}件完了" + other: "%{count}件完了" label_total: åˆè¨ˆ label_permissions: æ¨©é™ label_current_status: ç¾åœ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ @@ -595,7 +602,7 @@ label_months_from: ヶ月分 label_gantt: ガントãƒãƒ£ãƒ¼ãƒˆ label_internal: 内部 - label_last_changes: "最新ã®å¤‰æ›´ {{count}}ä»¶" + label_last_changes: "最新ã®å¤‰æ›´ %{count}ä»¶" label_change_view_all: å…¨ã¦ã®å¤‰æ›´ã‚’見る label_personalize_page: ã“ã®ãƒšãƒ¼ã‚¸ã‚’パーソナライズã™ã‚‹ label_comment: コメント @@ -603,7 +610,7 @@ label_x_comments: zero: コメントãŒã‚りã¾ã›ã‚“ one: 1コメント - other: "{{count}}コメント" + other: "%{count}コメント" label_comment_add: コメント追加 label_comment_added: 追加ã•れãŸã‚³ãƒ¡ãƒ³ãƒˆ label_comment_delete: コメント削除 @@ -624,7 +631,7 @@ label_yesterday: 昨日 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: 今年 @@ -638,13 +645,13 @@ label_repository: リãƒã‚¸ãƒˆãƒª label_repository_plural: リãƒã‚¸ãƒˆãƒª label_browse: ブラウズ - label_modification: "{{count}}点ã®å¤‰æ›´" - label_modification_plural: "{{count}}点ã®å¤‰æ›´" + label_modification: "%{count}点ã®å¤‰æ›´" + label_modification_plural: "%{count}点ã®å¤‰æ›´" label_branch: ブランムlabel_tag: ã‚¿ã‚° label_revision: リビジョン label_revision_plural: リビジョン - label_revision_id: リビジョン {{value}} + label_revision_id: リビジョン %{value} label_associated_revisions: 関係ã—ã¦ã„るリビジョン label_added: 追加 label_modified: 変更 @@ -661,8 +668,8 @@ label_sort_lower: 下㸠label_sort_lowest: 一番下㸠label_roadmap: ロードマップ - label_roadmap_due_in: "期日ã¾ã§ {{value}}" - label_roadmap_overdue: "{{value}} é…れ" + label_roadmap_due_in: "期日ã¾ã§ %{value}" + label_roadmap_overdue: "%{value} é…れ" label_roadmap_no_issues: ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«é–¢ã™ã‚‹ãƒã‚±ãƒƒãƒˆã¯ã‚りã¾ã›ã‚“ label_search: 検索 label_result_plural: çµæžœ @@ -681,8 +688,8 @@ label_issue_tracking: ãƒã‚±ãƒƒãƒˆãƒˆãƒ©ãƒƒã‚­ãƒ³ã‚° label_spent_time: 作業時間ã®è¨˜éŒ² label_overall_spent_time: å…¨ã¦ã®ä½œæ¥­æ™‚é–“ã®è¨˜éŒ² - label_f_hour: "{{value}}時間" - label_f_hour_plural: "{{value}}時間" + label_f_hour: "%{value}時間" + label_f_hour_plural: "%{value}時間" label_time_tracking: 時間トラッキング label_change_plural: 変更 label_statistics: 統計 @@ -733,15 +740,15 @@ label_date_from: "日付指定: " label_date_to: ã‹ã‚‰ label_language_based: 既定ã®è¨€èªžã®è¨­å®šã«å¾“ㆠ- label_sort_by: "ä¸¦ã³æ›¿ãˆ {{value}}" + 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_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_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: 更新履歴 @@ -761,7 +768,7 @@ label_registration_activation_by_email: メールã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 label_registration_manual_activation: 手動ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 label_registration_automatic_activation: 自動ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 - label_display_per_page: "1ページã«: {{value}}" + label_display_per_page: "1ページã«: %{value}" label_age: å¹´é½¢ label_change_properties: プロパティã®å¤‰æ›´ label_general: 全般 @@ -784,7 +791,7 @@ label_sort: ソートæ¡ä»¶ label_ascending: 昇順 label_descending: é™é † - label_date_from_to: "{{start}}ã‹ã‚‰{{end}}ã¾ã§" + label_date_from_to: "%{start}ã‹ã‚‰%{end}ã¾ã§" label_wiki_content_added: WikiページãŒè¿½åŠ ã•れã¾ã—㟠label_wiki_content_updated: Wikiãƒšãƒ¼ã‚¸ãŒæ›´æ–°ã•れã¾ã—㟠label_group: グループ @@ -803,9 +810,11 @@ label_display_used_statuses_only: ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã§ä½¿ã‚れã¦ã„るステータスã®ã¿è¡¨ç¤ºã™ã‚‹ label_api_access_key: APIアクセスキー label_missing_api_access_key: APIアクセスキーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ - label_api_access_key_created_on: "APIアクセスキーã¯{{value}}å‰ã«ä½œæˆã•れã¾ã—ãŸ" + label_api_access_key_created_on: "APIアクセスキーã¯%{value}å‰ã«ä½œæˆã•れã¾ã—ãŸ" label_subtask_plural: å­ãƒã‚±ãƒƒãƒˆ label_project_copy_notifications: コピーã—ãŸãƒã‚±ãƒƒãƒˆã®ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚’é€ä¿¡ã™ã‚‹ + label_principal_search: "ユーザã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®æ¤œç´¢:" + label_user_search: "ãƒ¦ãƒ¼ã‚¶ã®æ¤œç´¢:" button_login: ログイン button_submit: 変更 @@ -817,7 +826,7 @@ button_create_and_continue: é€£ç¶šä½œæˆ button_test: テスト button_edit: 編集 - button_edit_associated_wikipage: "関連ã™ã‚‹Wikiページを編集: {{page_title}}" + button_edit_associated_wikipage: "関連ã™ã‚‹Wikiページを編集: %{page_title}" button_add: 追加 button_change: 変更 button_apply: é©ç”¨ @@ -866,54 +875,55 @@ 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: ãƒã‚±ãƒƒãƒˆã¨ãã®å­ãƒã‚±ãƒƒãƒˆå…¨ã¦ã‚’削除ã—ã¾ã™ã‹? - text_journal_changed: "{{label}} ã‚’ {{old}} ã‹ã‚‰ {{new}} ã«å¤‰æ›´" - text_journal_set_to: "{{label}} ã‚’ {{value}} ã«ã‚»ãƒƒãƒˆ" - text_journal_deleted: "{{label}} を削除 ({{old}})" - text_journal_added: "{{label}} {{value}} を追加" + 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)ã¨æ•°å­—ã¨ãƒ€ãƒƒã‚·ãƒ¥(-)ãŒä½¿ãˆã¾ã™ã€‚
    一度ä¿å­˜ã™ã‚‹ã¨ã€è­˜åˆ¥å­ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。' - text_caracters_maximum: "最大{{count}}文字ã§ã™ã€‚" - text_caracters_minimum: "最低{{count}}文字ã®é•·ã•ãŒå¿…è¦ã§ã™" - text_length_between: "é•·ã•ã¯{{min}}ã‹ã‚‰{{max}}文字ã¾ã§ã§ã™ã€‚" + 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: (1行ã”ã¨ã«æ›¸ãã“ã¨ã§)複数ã®å€¤ã‚’設定ã§ãã¾ã™ã€‚ text_issues_ref_in_commit_messages: コミットメッセージ内ã§ãƒã‚±ãƒƒãƒˆã®å‚ç…§/修正 - text_issue_added: "ãƒã‚±ãƒƒãƒˆ {{id}} ㌠{{author}} ã«ã‚ˆã£ã¦å ±å‘Šã•れã¾ã—ãŸã€‚" - text_issue_updated: "ãƒã‚±ãƒƒãƒˆ {{id}} ㌠{{author}} ã«ã‚ˆã£ã¦æ›´æ–°ã•れã¾ã—ãŸã€‚" + text_issue_added: "ãƒã‚±ãƒƒãƒˆ %{id} ㌠%{author} ã«ã‚ˆã£ã¦å ±å‘Šã•れã¾ã—ãŸã€‚" + text_issue_updated: "ãƒã‚±ãƒƒãƒˆ %{id} ㌠%{author} ã«ã‚ˆã£ã¦æ›´æ–°ã•れã¾ã—ãŸã€‚" text_wiki_destroy_confirmation: 本当ã«ã“ã®wikiã¨ãã®å†…容ã®å…¨ã¦ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ - text_issue_category_destroy_question: "{{count}}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒã“ã®ã‚«ãƒ†ã‚´ãƒªã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" + 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_status_changed_by_changeset: "更新履歴 %{value} ã§é©ç”¨ã•れã¾ã—ãŸã€‚" + text_time_logged_by_changeset: "更新履歴 %{value} ã§é©ç”¨ã•れã¾ã—ãŸã€‚" text_issues_destroy_confirmation: '本当ã«é¸æŠžã—ãŸãƒã‚±ãƒƒãƒˆã‚’削除ã—ã¾ã™ã‹ï¼Ÿ' text_select_project_modules: 'ã“ã®ãƒ—ロジェクトã§ä½¿ç”¨ã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„:' text_default_administrator_account_changed: デフォルト管ç†ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¤‰æ›´æ¸ˆ text_file_repository_writable: ファイルリãƒã‚¸ãƒˆãƒªã«æ›¸ãè¾¼ã¿å¯èƒ½ text_plugin_assets_writable: Plugin assetsãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¿å¯èƒ½ text_rmagick_available: RMagickãŒä½¿ç”¨å¯èƒ½ (オプション) - text_destroy_time_entries_question: ã“ã®ãƒã‚±ãƒƒãƒˆã®{{hours}}時間分ã®ä½œæ¥­è¨˜éŒ²ã®æ‰±ã„ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + 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_user_wrote: "%{value} ã¯æ›¸ãã¾ã—ãŸ:" + text_enumeration_destroy_question: "%{count}個ã®ã‚ªãƒ–ジェクトãŒã“ã®å€¤ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" text_enumeration_category_reassign_to: '次ã®å€¤ã«å‰²ã‚Šå½“ã¦ç›´ã™:' - text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/email.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" + text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/configuration.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" text_repository_usernames_mapping: "リãƒã‚¸ãƒˆãƒªã®ãƒ­ã‚°ã‹ã‚‰æ¤œå‡ºã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’ã©ã®Redmineユーザーã«é–¢é€£ã¥ã‘ã‚‹ã®ã‹é¸æŠžã—ã¦ãã ã•ã„。\nログ上ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒRedmineã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ä¸€è‡´ã™ã‚‹å ´åˆã¯è‡ªå‹•çš„ã«é–¢é€£ã¥ã‘られã¾ã™ã€‚" text_diff_truncated: '... 差分ã®è¡Œæ•°ãŒè¡¨ç¤ºå¯èƒ½ãªä¸Šé™ã‚’è¶…ãˆã¾ã—ãŸã€‚è¶…éŽåˆ†ã¯è¡¨ç¤ºã—ã¾ã›ã‚“。' text_custom_field_possible_values_info: 'é¸æŠžè‚¢ã®å€¤ã¯1行ã«1個ãšã¤è¨˜è¿°ã—ã¦ãã ã•ã„。' - text_wiki_page_destroy_question: "ã“ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«{{descendants}}ページã®å­å­«ãƒšãƒ¼ã‚¸ãŒã‚りã¾ã™ã€‚" + text_wiki_page_destroy_question: "ã“ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«%{descendants}ページã®å­å­«ãƒšãƒ¼ã‚¸ãŒã‚りã¾ã™ã€‚" text_wiki_page_nullify_children: "å­ãƒšãƒ¼ã‚¸ã‚’メインページé…下ã«ç§»å‹•ã™ã‚‹" text_wiki_page_destroy_children: "é…下ã®å­å­«ãƒšãƒ¼ã‚¸ã‚‚削除ã™ã‚‹" text_wiki_page_reassign_children: "å­ãƒšãƒ¼ã‚¸ã‚’次ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«ç§»å‹•ã™ã‚‹" @@ -947,8 +957,7 @@ enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作業分類 (時間トラッキング) enumeration_system_activity: システム作業分類 - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/ko.yml.svn-base --- a/config/locales/.svn/text-base/ko.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/ko.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -37,37 +37,37 @@ half_a_minute: "30ì´ˆ" less_than_x_seconds: one: "ì¼ì´ˆ ì´í•˜" - other: "{{count}}ì´ˆ ì´í•˜" + other: "%{count}ì´ˆ ì´í•˜" x_seconds: one: "ì¼ì´ˆ" - other: "{{count}}ì´ˆ" + other: "%{count}ì´ˆ" less_than_x_minutes: one: "ì¼ë¶„ ì´í•˜" - other: "{{count}}ë¶„ ì´í•˜" + other: "%{count}ë¶„ ì´í•˜" x_minutes: one: "ì¼ë¶„" - other: "{{count}}ë¶„" + other: "%{count}ë¶„" about_x_hours: one: "약 한시간" - other: "약 {{count}}시간" + other: "약 %{count}시간" x_days: one: "하루" - other: "{{count}}ì¼" + other: "%{count}ì¼" about_x_months: one: "약 한달" - other: "약 {{count}}달" + other: "약 %{count}달" x_months: one: "한달" - other: "{{count}}달" + other: "%{count}달" about_x_years: one: "약 ì¼ë…„" - other: "약 {{count}}ë…„" + other: "약 %{count}ë…„" over_x_years: one: "ì¼ë…„ ì´ìƒ" - other: "{{count}}ë…„ ì´ìƒ" + other: "%{count}ë…„ ì´ìƒ" almost_x_years: one: "약 1ë…„" - other: "약 {{count}}ë…„" + other: "약 %{count}ë…„" prompts: year: "ë…„" month: "ì›”" @@ -145,8 +145,8 @@ errors: template: header: - one: "í•œê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ {{model}}ì„(를) 저장하지 않았습니다." - other: "{{count}}ê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ {{model}}ì„(를) 저장하지 않았습니다." + one: "í•œê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ %{model}ì„(를) 저장하지 않았습니다." + other: "%{count}ê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ %{model}ì„(를) 저장하지 않았습니다." # The variable :count is also available body: "ë‹¤ìŒ í•­ëª©ì— ë¬¸ì œê°€ 발견했습니다:" @@ -158,16 +158,16 @@ accepted: "ì€ ì¸ì •ë˜ì–´ì•¼ 합니다" empty: "ì€ ê¸¸ì´ê°€ 0ì´ì–´ì„œëŠ” 안ë©ë‹ˆë‹¤." blank: "ì€ ë¹ˆ ê°’ì´ì–´ì„œëŠ” 안 ë©ë‹ˆë‹¤" - too_long: "ì€ ë„ˆë¬´ ê¹ë‹ˆë‹¤ (최대 {{count}}ìž ê¹Œì§€)" - too_short: "ì€ ë„ˆë¬´ 짧습니다 (최소 {{count}}ìž ê¹Œì§€)" - wrong_length: "ì€ ê¸¸ì´ê°€ 틀렸습니다 ({{count}}ìžì´ì–´ì•¼ 합니다.)" + too_long: "ì€ ë„ˆë¬´ ê¹ë‹ˆë‹¤ (최대 %{count}ìž ê¹Œì§€)" + too_short: "ì€ ë„ˆë¬´ 짧습니다 (최소 %{count}ìž ê¹Œì§€)" + wrong_length: "ì€ ê¸¸ì´ê°€ 틀렸습니다 (%{count}ìžì´ì–´ì•¼ 합니다.)" taken: "ì€ ì´ë¯¸ ì„ íƒëœ ê²ë‹ˆë‹¤" not_a_number: "ì€ ìˆ«ìžê°€ 아닙니다" - greater_than: "ì€ {{count}}보다 커야 합니다." - greater_than_or_equal_to: "ì€ {{count}}보다 í¬ê±°ë‚˜ 같아야 합니다" - equal_to: "ì€ {{count}}(와)ê³¼ 같아야 합니다" - less_than: "ì€ {{count}}보다 작어야 합니다" - less_than_or_equal_to: "ì€ {{count}}ê³¼ 같거나 ì´í•˜ì„ 요구합니다" + 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: "는 시작날짜보다 커야 합니다" @@ -204,40 +204,40 @@ notice_file_not_found: 요청하신 페ì´ì§€ëŠ” ì‚­ì œë˜ì—ˆê±°ë‚˜ 옮겨졌습니다. notice_locking_conflict: 다른 사용ìžì— ì˜í•´ì„œ ë°ì´í„°ê°€ 변경ë˜ì—ˆìŠµë‹ˆë‹¤. notice_not_authorized: ì´ íŽ˜ì´ì§€ì— 접근할 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. - notice_email_sent: "{{value}}님ì—게 ë©”ì¼ì´ 발송ë˜ì—ˆìŠµë‹ˆë‹¤." - notice_email_error: "ë©”ì¼ì„ 전송하는 ê³¼ì •ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. ({{value}})" + notice_email_sent: "%{value}님ì—게 ë©”ì¼ì´ 발송ë˜ì—ˆìŠµë‹ˆë‹¤." + notice_email_error: "ë©”ì¼ì„ 전송하는 ê³¼ì •ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. (%{value})" notice_feeds_access_key_reseted: RSSì— ì ‘ê·¼ê°€ëŠ¥í•œ 열쇠(key)ê°€ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. - notice_failed_to_save_issues: "ì €ìž¥ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤: 실패 {{count}}(ì„ íƒ {{total}}): {{ids}}." + notice_failed_to_save_issues: "ì €ìž¥ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤: 실패 %{count}(ì„ íƒ %{total}): %{ids}." notice_no_issue_selected: "ì¼ê°ì´ ì„ íƒë˜ì§€ 않았습니다. 수정하기 ì›í•˜ëŠ” ì¼ê°ì„ ì„ íƒí•˜ì„¸ìš”" notice_account_pending: "ê³„ì •ì´ ë§Œë“¤ì–´ì¡Œìœ¼ë©° ê´€ë¦¬ìž ìŠ¹ì¸ ëŒ€ê¸°ì¤‘ìž…ë‹ˆë‹¤." notice_default_data_loaded: ê¸°ë³¸ê°’ì„ ì„±ê³µì ìœ¼ë¡œ ì½ì–´ë“¤ì˜€ìŠµë‹ˆë‹¤. notice_unable_delete_version: 삭제할 수 없는 버전입니다. - error_can_t_load_default_data: "ê¸°ë³¸ê°’ì„ ì½ì–´ë“¤ì¼ 수 없습니다.: {{value}}" + error_can_t_load_default_data: "ê¸°ë³¸ê°’ì„ ì½ì–´ë“¤ì¼ 수 없습니다.: %{value}" error_scm_not_found: 항목ì´ë‚˜ ë¦¬ë¹„ì ¼ì´ ì €ìž¥ì†Œì— ì¡´ìž¬í•˜ì§€ 않습니다. - error_scm_command_failed: "ì €ìž¥ì†Œì— ì ‘ê·¼í•˜ëŠ” ë„ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.: {{value}}" + error_scm_command_failed: "ì €ìž¥ì†Œì— ì ‘ê·¼í•˜ëŠ” ë„ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.: %{value}" error_scm_annotate: "í•­ëª©ì´ ì—†ê±°ë‚˜ 행별 ì´ë ¥ì„ ë³¼ 수 없습니다." error_issue_not_found_in_project: 'ì¼ê°ì´ 없거나 ì´ í”„ë¡œì íŠ¸ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤.' - warning_attachments_not_saved: "{{count}}ê°œ 파ì¼ì„ 저장할 수 없습니다." + warning_attachments_not_saved: "%{count}ê°œ 파ì¼ì„ 저장할 수 없습니다." - mail_subject_lost_password: "{{value}} 비밀번호" + mail_subject_lost_password: "%{value} 비밀번호" mail_body_lost_password: '비밀번호를 변경하려면 ë‹¤ìŒ ë§í¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.' - mail_subject_register: "{{value}} 계정 활성화" + mail_subject_register: "%{value} 계정 활성화" mail_body_register: 'ê³„ì •ì„ í™œì„±í™”í•˜ë ¤ë©´ ë§í¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.:' - mail_body_account_information_external: "로그ì¸í•  때 {{value}} ê³„ì •ì„ ì‚¬ìš©í•˜ì‹¤ 수 있습니다." + mail_body_account_information_external: "로그ì¸í•  때 %{value} ê³„ì •ì„ ì‚¬ìš©í•˜ì‹¤ 수 있습니다." mail_body_account_information: 계정 ì •ë³´ - mail_subject_account_activation_request: "{{value}} 계정 활성화 요청" - mail_body_account_activation_request: "새 사용ìž({{value}})ê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤. 관리ìžë‹˜ì˜ 승ì¸ì„ 기다리고 있습니다.:" - mail_body_reminder: "ë‹¹ì‹ ì´ ë§¡ê³  있는 ì¼ê° {{count}}ê°œì˜ ì™„ë£Œ ê¸°í•œì´ {{days}}ì¼ í›„ 입니다." - mail_subject_reminder: "ë‚´ì¼ì´ ë§Œê¸°ì¸ ì¼ê° {{count}}ê°œ ({{days}})" - mail_subject_wiki_content_added: "위키페ì´ì§€ '{{id}}'ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." - mail_subject_wiki_content_updated: "'위키페ì´ì§€ {{id}}'ì´(ê°€) 수정ë˜ì—ˆìŠµë‹ˆë‹¤." - mail_body_wiki_content_added: "{{author}}ì´(ê°€) 위키페ì´ì§€ '{{id}}'ì„(를) 추가하였습니다." - mail_body_wiki_content_updated: "{{author}}ì´(ê°€) 위키페ì´ì§€ '{{id}}'ì„(를) 수정하였습니다." + mail_subject_account_activation_request: "%{value} 계정 활성화 요청" + mail_body_account_activation_request: "새 사용ìž(%{value})ê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤. 관리ìžë‹˜ì˜ 승ì¸ì„ 기다리고 있습니다.:" + mail_body_reminder: "ë‹¹ì‹ ì´ ë§¡ê³  있는 ì¼ê° %{count}ê°œì˜ ì™„ë£Œ ê¸°í•œì´ %{days}ì¼ í›„ 입니다." + mail_subject_reminder: "ë‚´ì¼ì´ ë§Œê¸°ì¸ ì¼ê° %{count}ê°œ (%{days})" + mail_subject_wiki_content_added: "위키페ì´ì§€ '%{id}'ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." + mail_subject_wiki_content_updated: "'위키페ì´ì§€ %{id}'ì´(ê°€) 수정ë˜ì—ˆìŠµë‹ˆë‹¤." + mail_body_wiki_content_added: "%{author}ì´(ê°€) 위키페ì´ì§€ '%{id}'ì„(를) 추가하였습니다." + mail_body_wiki_content_updated: "%{author}ì´(ê°€) 위키페ì´ì§€ '%{id}'ì„(를) 수정하였습니다." gui_validation_error: ì—러 - gui_validation_error_plural: "{{count}}ê°œ ì—러" + gui_validation_error_plural: "%{count}ê°œ ì—러" field_name: ì´ë¦„ field_description: 설명 @@ -299,6 +299,7 @@ field_attr_lastname: 성 ì†ì„± field_attr_mail: ë©”ì¼ ì†ì„± field_onthefly: ë™ì  ì‚¬ìš©ìž ìƒì„± + field_start_date: 시작시간 field_done_ratio: ì§„ì²™ë„ field_auth_source: ì¸ì¦ ê³µê¸‰ìž field_hide_mail: ë©”ì¼ ì£¼ì†Œ 숨기기 @@ -441,14 +442,14 @@ label_x_projects: zero: ì—†ìŒ one: "한 프로ì íЏ" - other: "{{count}}ê°œ 프로ì íЏ" + 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_issues_by: "%{value}별 ì¼ê°" label_issue_added: ì¼ê° 추가 label_issue_updated: ì¼ê° 수정 label_document: 문서 @@ -497,7 +498,7 @@ label_registered_on: 등ë¡ì‹œê° label_activity: 작업내역 label_overall_activity: ì „ì²´ 작업내역 - label_user_activity: "{{value}}ì˜ ìž‘ì—…ë‚´ì—­" + label_user_activity: "%{value}ì˜ ìž‘ì—…ë‚´ì—­" label_new: 새로 만들기 label_logged_as: '로그ì¸ê³„ì •:' label_environment: 환경 @@ -506,7 +507,7 @@ label_auth_source_new: 새 ì¸ì¦ ê³µê¸‰ìž label_auth_source_plural: ì¸ì¦ ê³µê¸‰ìž label_subproject_plural: 하위 프로ì íЏ - label_and_its_subprojects: "{{value}}와 하위 프로ì íŠ¸ë“¤" + label_and_its_subprojects: "%{value}와 하위 프로ì íŠ¸ë“¤" label_min_max_length: 최소 - 최대 ê¸¸ì´ label_list: ëª©ë¡ label_date: ë‚ ì§œ @@ -517,8 +518,8 @@ label_text: í…스트 label_attribute: ì†ì„± label_attribute_plural: ì†ì„± - label_download: "{{count}}회 다운로드" - label_download_plural: "{{count}}회 다운로드" + label_download: "%{count}회 다운로드" + label_download_plural: "%{count}회 다운로드" label_no_data: 표시할 ë°ì´í„°ê°€ 없습니다. label_change_status: ìƒíƒœ 변경 label_history: ì´ë ¥ @@ -549,17 +550,17 @@ label_closed_issues: ì™„ë£Œë¨ label_closed_issues_plural: ì™„ë£Œë¨ label_x_open_issues_abbr_on_total: - zero: "ì´ {{total}} ê±´ ëª¨ë‘ ì™„ë£Œ" - one: "한 ê±´ ì§„í–‰ 중 / ì´ {{total}} ê±´ 중 " - other: "{{count}} ê±´ ì§„í–‰ 중 / ì´ {{total}} ê±´" + zero: "ì´ %{total} ê±´ ëª¨ë‘ ì™„ë£Œ" + one: "한 ê±´ ì§„í–‰ 중 / ì´ %{total} ê±´ 중 " + other: "%{count} ê±´ ì§„í–‰ 중 / ì´ %{total} ê±´" label_x_open_issues_abbr: zero: ëª¨ë‘ ì™„ë£Œ one: 한 ê±´ ì§„í–‰ 중 - other: "{{count}} ê±´ ì§„í–‰ 중" + other: "%{count} ê±´ ì§„í–‰ 중" label_x_closed_issues_abbr: zero: ëª¨ë‘ ë¯¸ì™„ë£Œ one: 한 ê±´ 완료 - other: "{{count}} ê±´ 완료" + other: "%{count} ê±´ 완료" label_total: 합계 label_permissions: 권한 label_current_status: ì¼ê° ìƒíƒœ @@ -577,7 +578,7 @@ label_months_from: 개월 ë™ì•ˆ | 다ìŒë¶€í„° label_gantt: Gantt 챠트 label_internal: ë‚´ë¶€ - label_last_changes: "최근 {{count}}ê°œì˜ ë³€ê²½ì‚¬í•­" + label_last_changes: "최근 %{count}ê°œì˜ ë³€ê²½ì‚¬í•­" label_change_view_all: 모든 변경 ë‚´ì—­ 보기 label_personalize_page: 입맛대로 구성하기 label_comment: 댓글 @@ -585,7 +586,7 @@ label_x_comments: zero: 댓글 ì—†ìŒ one: 한 ê°œì˜ ëŒ“ê¸€ - other: "{{count}} ê°œì˜ ëŒ“ê¸€" + other: "%{count} ê°œì˜ ëŒ“ê¸€" label_comment_add: 댓글 추가 label_comment_added: ëŒ“ê¸€ì´ ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤. label_comment_delete: 댓글 ì‚­ì œ @@ -606,7 +607,7 @@ label_yesterday: ì–´ì œ 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: 올해 @@ -620,8 +621,8 @@ label_repository: 저장소 label_repository_plural: 저장소 label_browse: 저장소 둘러보기 - label_modification: "{{count}} 변경" - label_modification_plural: "{{count}} 변경" + label_modification: "%{count} 변경" + label_modification_plural: "%{count} 변경" label_revision: ê°œì •íŒ label_revision_plural: ê°œì •íŒ label_associated_revisions: ê´€ë ¨ëœ ê°œì •íŒë“¤ @@ -639,8 +640,8 @@ label_sort_lower: 아래로 label_sort_lowest: 맨 아래로 label_roadmap: 로드맵 - label_roadmap_due_in: "기한 {{value}}" - label_roadmap_overdue: "{{value}} 지연" + label_roadmap_due_in: "기한 %{value}" + label_roadmap_overdue: "%{value} 지연" label_roadmap_no_issues: ì´ ë²„ì „ì— í•´ë‹¹í•˜ëŠ” ì¼ê° ì—†ìŒ label_search: 검색 label_result_plural: ê²°ê³¼ @@ -658,8 +659,8 @@ label_changes_details: 모든 ìƒì„¸ 변경 ë‚´ì—­ label_issue_tracking: ì¼ê° ì¶”ì  label_spent_time: 소요 시간 - label_f_hour: "{{value}} 시간" - label_f_hour_plural: "{{value}} 시간" + label_f_hour: "%{value} 시간" + label_f_hour_plural: "%{value} 시간" label_time_tracking: ì‹œê°„ì¶”ì  label_change_plural: 변경사항들 label_statistics: 통계 @@ -708,13 +709,13 @@ label_date_from: '기간:' label_date_to: ' ~ ' label_language_based: ì–¸ì–´ì„¤ì •ì— ë”°ë¦„ - label_sort_by: "{{value}}(으)로 ì •ë ¬" + label_sort_by: "%{value}(으)로 ì •ë ¬" label_send_test_email: 테스트 ë©”ì¼ ë³´ë‚´ê¸° - label_feeds_access_key_created_on: "피드 ì ‘ê·¼ 키가 {{value}} ì´ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." + label_feeds_access_key_created_on: "피드 ì ‘ê·¼ 키가 %{value} ì´ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." label_module_plural: 모듈 - label_added_time_by: "{{author}}ì´(ê°€) {{age}} ì „ì— ì¶”ê°€í•¨" - label_updated_time_by: "{{author}}ì´(ê°€) {{age}} ì „ì— ë³€ê²½" - label_updated_time: "{{value}} ì „ì— ìˆ˜ì •ë¨" + 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: ë³€ê²½ë¬¶ìŒ @@ -730,7 +731,7 @@ label_registration_activation_by_email: ë©”ì¼ë¡œ ê³„ì •ì„ í™œì„±í™”í•˜ê¸° label_registration_automatic_activation: ìžë™ 계정 활성화 label_registration_manual_activation: ìˆ˜ë™ ê³„ì • 활성화 - label_display_per_page: "페ì´ì§€ë‹¹ 줄수: {{value}}" + label_display_per_page: "페ì´ì§€ë‹¹ 줄수: %{value}" label_age: 마지막 ìˆ˜ì •ì¼ label_change_properties: ì†ì„± 변경 label_general: ì¼ë°˜ @@ -753,7 +754,7 @@ label_sort: ì •ë ¬ label_ascending: 오름차순 label_descending: 내림차순 - label_date_from_to: "{{start}}부터 {{end}}까지" + label_date_from_to: "%{start}부터 %{end}까지" label_wiki_content_added: 위키페ì´ì§€ 추가 label_wiki_content_updated: 위키페ì´ì§€ 수정 @@ -805,48 +806,48 @@ 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_tip_issue_begin_day: 오늘 시작하는 업무(task) text_tip_issue_end_day: 오늘 종료하는 업무(task) text_tip_issue_begin_end_day: 오늘 시작하고 종료하는 업무(task) text_project_identifier_info: 'ì˜ë¬¸ 소문ìž(a-z) ë° ìˆ«ìž, 대쉬(-) 가능.
    저장ëœí›„ì—는 ì‹ë³„ìž ë³€ê²½ 불가능.' - text_caracters_maximum: "최대 {{count}} ê¸€ìž ê°€ëŠ¥" - text_caracters_minimum: "최소한 {{count}} ê¸€ìž ì´ìƒì´ì–´ì•¼ 합니다." - text_length_between: "{{min}} ì—서 {{max}} 글ìž" + text_caracters_maximum: "최대 %{count} ê¸€ìž ê°€ëŠ¥" + text_caracters_minimum: "최소한 %{count} ê¸€ìž ì´ìƒì´ì–´ì•¼ 합니다." + text_length_between: "%{min} ì—서 %{max} 글ìž" text_tracker_no_workflow: ì´ ì¼ê° 유형ì—는 업무íë¦„ì´ ì •ì˜ë˜ì§€ 않았습니다. text_unallowed_characters: 허용ë˜ì§€ 않는 문ìžì—´ text_comma_separated: "구분ìž','를 ì´ìš©í•´ì„œ 여러 ê°œì˜ ê°’ì„ ìž…ë ¥í•  수 있습니다." text_issues_ref_in_commit_messages: 제출 메시지ì—서 ì¼ê°ì„ 참조하거나 해결하기 - text_issue_added: "{{author}}ì´(ê°€) ì¼ê° {{id}}ì„(를) 보고하였습니다." - text_issue_updated: "{{author}}ì´(ê°€) ì¼ê° {{id}}ì„(를) 수정하였습니다." + text_issue_added: "%{author}ì´(ê°€) ì¼ê° %{id}ì„(를) 보고하였습니다." + text_issue_updated: "%{author}ì´(ê°€) ì¼ê° %{id}ì„(를) 수정하였습니다." text_wiki_destroy_confirmation: ì´ ìœ„í‚¤ì™€ 모든 ë‚´ìš©ì„ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ? - text_issue_category_destroy_question: "ì¼ë¶€ ì¼ê°ë“¤({{count}}ê°œ)ì´ ì´ ë²”ì£¼ì— ì§€ì •ë˜ì–´ 있습니다. 어떻게 하시겠습니까?" + 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_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_question: 삭제하려는 ì¼ê°ì— %{hours} ì‹œê°„ì´ ë³´ê³ ë˜ì–´ 있습니다. 어떻게 하시겠습니까? text_destroy_time_entries: ë³´ê³ ëœ ì‹œê°„ì„ ì‚­ì œí•˜ê¸° text_assign_time_entries_to_project: ë³´ê³ ëœ ì‹œê°„ì„ í”„ë¡œì íŠ¸ì— í• ë‹¹í•˜ê¸° text_reassign_time_entries: 'ì´ ì•Œë¦¼ì— ë³´ê³ ëœ ì‹œê°„ì„ ìž¬í• ë‹¹í•˜ê¸°:' - text_user_wrote: "{{value}}ì˜ ë§ê¸€:" + text_user_wrote: "%{value}ì˜ ë§ê¸€:" text_enumeration_category_reassign_to: '새로운 ê°’ì„ ì„¤ì •:' - text_enumeration_destroy_question: "{{count}} ê°œì˜ ì¼ê°ì´ ì´ ê°’ì„ ì‚¬ìš©í•˜ê³  있습니다." - text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/email.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." + text_enumeration_destroy_question: "%{count} ê°œì˜ ì¼ê°ì´ ì´ ê°’ì„ ì‚¬ìš©í•˜ê³  있습니다." + text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/configuration.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." text_repository_usernames_mapping: "저장소 로그ì—서 ë°œê²¬ëœ ê° ì‚¬ìš©ìžì— ë ˆë“œë§ˆì¸ ì‚¬ìš©ìžë¥¼ ì—…ë°ì´íŠ¸í• ë•Œ ì„ íƒí•©ë‹ˆë‹¤.\n레드마ì¸ê³¼ ì €ìž¥ì†Œì˜ ì´ë¦„ì´ë‚˜ ì´ë©”ì¼ì´ ê°™ì€ ì‚¬ìš©ìžê°€ ìžë™ìœ¼ë¡œ ì—°ê²°ë©ë‹ˆë‹¤." text_diff_truncated: '... ì´ ì°¨ì´ì ì€ 표시할 수 있는 최대 줄수를 초과해서 ì´ ì°¨ì´ì ì€ 잘렸습니다.' text_custom_field_possible_values_info: 'ê° ê°’ 당 한 줄' - text_wiki_page_destroy_question: ì´ íŽ˜ì´ì§€ëŠ” {{descendants}} ê°œì˜ í•˜ìœ„ 페ì´ì§€ì™€ 관련 ë‚´ìš©ì´ ìžˆìŠµë‹ˆë‹¤. ì´ ë‚´ìš©ì„ ì–´ë–»ê²Œ 하시겠습니까? + text_wiki_page_destroy_question: ì´ íŽ˜ì´ì§€ëŠ” %{descendants} ê°œì˜ í•˜ìœ„ 페ì´ì§€ì™€ 관련 ë‚´ìš©ì´ ìžˆìŠµë‹ˆë‹¤. ì´ ë‚´ìš©ì„ ì–´ë–»ê²Œ 하시겠습니까? text_wiki_page_nullify_children: 하위 페ì´ì§€ë¥¼ 최ìƒìœ„ 페ì´ì§€ 아래로 지정 text_wiki_page_destroy_children: 모든 하위 페ì´ì§€ì™€ 관련 ë‚´ìš©ì„ ì‚­ì œ text_wiki_page_reassign_children: 하위 페ì´ì§€ë¥¼ ì´ íŽ˜ì´ì§€ 아래로 지정 @@ -883,14 +884,14 @@ label_branch: 분기(分å²)저장소 error_no_tracker_in_project: 사용할 수 있ë„ë¡ ì„¤ì •ëœ ì¼ê° ìœ í˜•ì´ ì—†ìŠµë‹ˆë‹¤. 프로ì íЏ ì„¤ì •ì„ í™•ì¸í•˜ì‹­ì‹œì˜¤. error_no_default_issue_status: '기본 ìƒíƒœê°€ ì •í•´ì ¸ 있지 않습니다. ì„¤ì •ì„ í™•ì¸í•˜ì‹­ì‹œì˜¤. (주 ë©”ë‰´ì˜ "관리" -> "ì¼ê° ìƒíƒœ")' - text_journal_changed: "{{label}}ì„(를) {{old}}ì—서 {{new}}(으)로 변경ë˜ì—ˆìŠµë‹ˆë‹¤." - text_journal_set_to: "{{label}}ì„(를) {{value}}(으)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." - text_journal_deleted: "{{label}} ê°’ì´ ì§€ì›Œì¡ŒìŠµë‹ˆë‹¤. ({{old}})" + text_journal_changed: "%{label}ì„(를) %{old}ì—서 %{new}(으)로 변경ë˜ì—ˆìŠµë‹ˆë‹¤." + text_journal_set_to: "%{label}ì„(를) %{value}(으)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." + text_journal_deleted: "%{label} ê°’ì´ ì§€ì›Œì¡ŒìŠµë‹ˆë‹¤. (%{old})" label_group_plural: 그룹 label_group: 그룹 label_group_new: 새 그룹 label_time_entry_plural: 작업시간 - text_journal_added: "{{label}}ì— {{value}}ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." + text_journal_added: "%{label}ì— %{value}ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." field_active: 사용중 enumeration_system_activity: 시스템 작업 permission_delete_issue_watchers: ì¼ê°ì§€í‚´ì´ 지우기 @@ -925,9 +926,9 @@ setting_start_of_week: 달력 시작 ìš”ì¼ permission_view_issues: ì¼ê° 보기 label_display_used_statuses_only: ì´ ì¼ê°ìœ í˜•ì—서 사용ë˜ëŠ” ìƒíƒœë§Œ 보여주기 - label_revision_id: ê°œì •íŒ {{value}} + label_revision_id: ê°œì •íŒ %{value} label_api_access_key: API 접근키 - label_api_access_key_created_on: API 접근키가 {{value}} ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + label_api_access_key_created_on: API 접근키가 %{value} ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. label_feeds_access_key: RSS 접근키 notice_api_access_key_reseted: API 접근키가 초기화ë˜ì—ˆìŠµë‹ˆë‹¤. setting_rest_api_enabled: REST 웹서비스 활성화 @@ -954,12 +955,12 @@ label_subtask_plural: 하위 ì¼ê° label_project_copy_notifications: 프로ì íЏ 복사 ì¤‘ì— ì´ë©”ì¼ ì•Œë¦¼ 보내기 error_can_not_delete_custom_field: ì‚¬ìš©ìž ì •ì˜ í•„ë“œë¥¼ 삭제할 수 없습니다. - error_unable_to_connect: ì—°ê²°í•  수 없습니다(({{value}}) + error_unable_to_connect: ì—°ê²°í•  수 없습니다((%{value}) error_can_not_remove_role: ì´ ì—­í• ì€ í˜„ìž¬ 사용 중ì´ì´ì„œ 삭제할 수 없습니다. - error_can_not_delete_tracker: ì´ ìœ í˜•ì˜ ì¼ê°ë“¤ì´ 있ì—서 삭제할 수 없습니다. + error_can_not_delete_tracker: ì´ ìœ í˜•ì˜ ì¼ê°ë“¤ì´ 있어서 삭제할 수 없습니다. field_principal: ì‹ ì› label_my_page_block: ë‚´ 페ì´ì§€ 출력화면 - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." + notice_failed_to_save_members: "%{errors}:구성ì›ì„ 저장 중 실패하였습니다" text_zoom_out: ë” ìž‘ê²Œ text_zoom_in: ë” í¬ê²Œ notice_unable_delete_time_entry: 시간 ê¸°ë¡ í•­ëª©ì„ ì‚­ì œí•  수 없습니다. @@ -967,19 +968,27 @@ field_time_entries: 기ë¡ëœ 시간 project_module_gantt: Gantt 챠트 project_module_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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + button_edit_associated_wikipage: "ì—°ê´€ëœ ìœ„í‚¤ 페ì´ì§€ %{page_title} 수정" + text_are_you_sure_with_children: ì¼ê°ê³¼ 모든 하위 ì¼ê°ë“¤ì„ 삭제하시겠습니까? + field_text: í…스트 ì˜ì—­ + label_user_mail_option_only_owner: ë‚´ê°€ ì €ìžì¸ 사항만 + setting_default_notification_option: 기본 알림 옵션 + label_user_mail_option_only_my_events: ë‚´ê°€ 지켜보거나 ì†í•´ìžˆëŠ” 사항만 + label_user_mail_option_only_assigned: ë‚´ì—게 í• ë‹¹ëœ ì‚¬í•­ë§Œ + label_user_mail_option_none: 알림 ì—†ìŒ + field_member_of_group: í• ë‹¹ëœ ì‚¬ëžŒì˜ ê·¸ë£¹ + field_assigned_to_role: í• ë‹¹ëœ ì‚¬ëžŒì˜ ì—­í•  + notice_not_authorized_archived_project: 접근하려는 프로ì íŠ¸ëŠ” ì´ë¯¸ 잠금보관ë˜ì–´ 있습니다. + label_principal_search: "ì‚¬ìš©ìž ë° ê·¸ë£¹ 찾기:" + label_user_search: "ì‚¬ìš©ìž ì°¾ê¸°::" + field_visible: ë³´ì´ê¸° + setting_emails_header: ì´ë©”ì¼ í—¤ë” + setting_commit_logtime_activity_id: 기ë¡ëœ ì‹œê°„ì— ì ìš©í•  작업분류 + text_time_logged_by_changeset: "ë³€ê²½ë¬¶ìŒ %{value}ì—서 ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤." + setting_commit_logtime_enabled: 커밋 시ì ì— 작업 시간 ê¸°ë¡ í™œì„±í™” + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/lt.yml.svn-base --- a/config/locales/.svn/text-base/lt.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/lt.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -37,42 +37,42 @@ distance_in_words: half_a_minute: "pusÄ— minutÄ—s" less_than_x_seconds: - one: "mažiau nei {{count}} sekundÄ—" - few: "mažiau nei {{count}} sekundžių" - many: "mažiau nei {{count}} sekundžių" - other: "mažiau nei {{count}} sekundÄ—s" + one: "mažiau nei %{count} sekundÄ—" + few: "mažiau nei %{count} sekundžių" + many: "mažiau nei %{count} sekundžių" + other: "mažiau nei %{count} sekundÄ—s" x_seconds: - one: "{{count}} sekundÄ—" - few: "{{count}} sekundžių" - many: "{{count}} sekundžių" - other: "{{count}} sekundÄ—s" + one: "%{count} sekundÄ—" + few: "%{count} sekundžių" + many: "%{count} sekundžių" + other: "%{count} sekundÄ—s" less_than_x_minutes: one: "mažiau nei minutÄ—" - other: "mažiau nei {{count}} minutÄ—s" + other: "mažiau nei %{count} minutÄ—s" x_minutes: one: "1 minutÄ—" - other: "{{count}} minutÄ—s" + other: "%{count} minutÄ—s" about_x_hours: one: "apie 1 valanda" - other: "apie {{count}} valandų" + other: "apie %{count} valandų" x_days: one: "1 diena" - other: "{{count}} dienų" + other: "%{count} dienų" about_x_months: one: "apie 1 mÄ—nuo" - other: "apie {{count}} mÄ—nesiai" + other: "apie %{count} mÄ—nesiai" x_months: one: "1 mÄ—nuo" - other: "{{count}} mÄ—nesiai" + other: "%{count} mÄ—nesiai" about_x_years: one: "apie 1 metai" - other: "apie {{count}} metų" + other: "apie %{count} metų" over_x_years: one: "virÅ¡ 1 metų" - other: "virÅ¡ {{count}} metų" + other: "virÅ¡ %{count} metų" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" prompts: year: "Metai" month: "MÄ—nuo" @@ -137,10 +137,10 @@ errors: template: header: - one: "IÅ¡saugant objektÄ… {{model}} rasta {{count}} klaida" - few: "IÅ¡saugant objektÄ… {{model}} rasta {{count}} klaidų" - many: "IÅ¡saugant objektÄ… {{model}} rasta {{count}} klaidų" - other: "IÅ¡saugant objektÄ… {{model}} rastos {{count}} klaidos" + one: "IÅ¡saugant objektÄ… %{model} rasta %{count} klaida" + few: "IÅ¡saugant objektÄ… %{model} rasta %{count} klaidų" + many: "IÅ¡saugant objektÄ… %{model} rasta %{count} klaidų" + other: "IÅ¡saugant objektÄ… %{model} rastos %{count} klaidos" body: "Å iuose laukuose yra klaidų:" messages: @@ -152,28 +152,28 @@ empty: "negali bÅ«ti tuÅ¡Äias" blank: "negali bÅ«ti tuÅ¡Äias" too_long: - one: "per ilgas (daugiausiai {{count}} simbolius)" - few: "per ilgas (daugiausiai {{count}} simboliu)" - many: "per ilgas (daugiausiai {{count}} simboliu)" - other: "per ilgas (daugiausiai {{count}} simboliai)" + one: "per ilgas (daugiausiai %{count} simbolius)" + few: "per ilgas (daugiausiai %{count} simboliu)" + many: "per ilgas (daugiausiai %{count} simboliu)" + other: "per ilgas (daugiausiai %{count} simboliai)" too_short: - one: "per trumpas (mažiausiai {{count}} simbolius)" - few: "per trumpas (mažiausiai {{count}} simboliu)" - many: "per trumpas (mažiausiai {{count}} simboliu)" - other: "per trumpas (mažiausiai {{count}} simboliai)" + one: "per trumpas (mažiausiai %{count} simbolius)" + few: "per trumpas (mažiausiai %{count} simboliu)" + many: "per trumpas (mažiausiai %{count} simboliu)" + other: "per trumpas (mažiausiai %{count} simboliai)" wrong_length: - one: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simbolius)" - few: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simboliu)" - many: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simboliu)" - other: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simboliai)" + one: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simbolius)" + few: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simboliu)" + many: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simboliu)" + other: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simboliai)" taken: "jau užimtas" not_a_number: "ne skaiÄius" not_a_date: "is not a valid date" - greater_than: "turi bÅ«ti didesnis už {{count}}" - greater_than_or_equal_to: "turi bÅ«ti didesnis arba lygus {{count}}" - equal_to: "turi bÅ«ti lygus {{count}}" - less_than: "turi bÅ«ti mažesnis už {{count}}" - less_than_or_equal_to: "turi bÅ«ti mažesnis arba lygus {{count}}" + greater_than: "turi bÅ«ti didesnis už %{count}" + greater_than_or_equal_to: "turi bÅ«ti didesnis arba lygus %{count}" + equal_to: "turi bÅ«ti lygus %{count}" + less_than: "turi bÅ«ti mažesnis už %{count}" + less_than_or_equal_to: "turi bÅ«ti mažesnis arba lygus %{count}" odd: "turi bÅ«ti nelyginis" even: "turi bÅ«ti lyginis" greater_than_start_date: "turi bÅ«ti didesnÄ— negu pradžios data" @@ -210,18 +210,18 @@ notice_file_not_found: Puslapis, į kurį ketinate įeiti, neegzistuoja arba yra paÅ¡alintas. notice_locking_conflict: Duomenys atnaujinti kito vartotojo. notice_not_authorized: JÅ«s neturite teisių gauti prieigÄ… prie Å¡io puslapio. - notice_email_sent: "LaiÅ¡kas iÅ¡siųstas {{value}}" - notice_email_error: "LaiÅ¡ko siuntimo metu įvyko klaida ({{value}})" + notice_email_sent: "LaiÅ¡kas iÅ¡siųstas %{value}" + notice_email_error: "LaiÅ¡ko siuntimo metu įvyko klaida (%{value})" notice_feeds_access_key_reseted: JÅ«sų RSS raktas buvo atnaujintas. - notice_failed_to_save_issues: "Nepavyko iÅ¡saugoti {{count}} problemos(ų) iÅ¡ {{total}} pasirinkto: {{ids}}." + notice_failed_to_save_issues: "Nepavyko iÅ¡saugoti %{count} problemos(ų) iÅ¡ %{total} pasirinkto: %{ids}." notice_no_issue_selected: "Nepasirinkta nÄ— viena problema! PraÅ¡om pažymÄ—ti problemÄ…, kuriÄ… norite redaguoti." notice_account_pending: "JÅ«sų paskyra buvo sukurta ir dabar laukiama administratoriaus patvirtinimo." notice_default_data_loaded: Numatytoji konfiguracija sÄ—kmingai užkrauta. notice_unable_delete_version: Neįmanoma panaikinti versijÄ… - error_can_t_load_default_data: "Numatytoji konfiguracija negali bÅ«ti užkrauta: {{value}}" + error_can_t_load_default_data: "Numatytoji konfiguracija negali bÅ«ti užkrauta: %{value}" error_scm_not_found: "Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja." - error_scm_command_failed: "Ä®vyko klaida jungiantis prie saugyklos: {{value}}" + error_scm_command_failed: "Ä®vyko klaida jungiantis prie saugyklos: %{value}" error_scm_annotate: "Ä®raÅ¡as neegzistuoja arba negalima jo atvaizduoti." error_issue_not_found_in_project: 'Darbas nerastas arba nesuriÅ¡tas su Å¡iuo projektu' error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. @@ -229,25 +229,25 @@ error_can_not_reopen_issue_on_closed_version: Uždarytai versijai priskirtas darbas negali bÅ«ti atnaujintas. error_can_not_archive_project: Å io projekto negalima suarchyvuoti - warning_attachments_not_saved: "{{count}} byla(ų) negali bÅ«ti iÅ¡saugota." + warning_attachments_not_saved: "%{count} byla(ų) negali bÅ«ti iÅ¡saugota." - mail_subject_lost_password: "JÅ«sų {{value}} slaptažodis" + mail_subject_lost_password: "JÅ«sų %{value} slaptažodis" mail_body_lost_password: 'NorÄ—dami pakeisti slaptažodį, spauskite nuorodÄ…:' - mail_subject_register: "JÅ«sų {{value}} paskyros aktyvavimas" + mail_subject_register: "JÅ«sų %{value} paskyros aktyvavimas" mail_body_register: 'NorÄ—dami aktyvuoti paskyrÄ…, spauskite nuorodÄ…:' - mail_body_account_information_external: "JÅ«s galite naudoti JÅ«sų {{value}} paskyrÄ…, norÄ—dami prisijungti." + mail_body_account_information_external: "JÅ«s galite naudoti JÅ«sų %{value} paskyrÄ…, norÄ—dami prisijungti." mail_body_account_information: Informacija apie JÅ«sų paskyrÄ… - mail_subject_account_activation_request: "{{value}} paskyros aktyvavimo praÅ¡ymas" - mail_body_account_activation_request: "Užsiregistravo naujas vartotojas ({{value}}). Jo paskyra laukia jÅ«sų patvirtinimo:" - mail_subject_reminder: "{{count}} darbas(ai) po kelių {{days}} dienų" - mail_body_reminder: "{{count}} darbas(ai), kurie yra jums priskirti, baigiasi po {{days}} dienų(os):" - mail_subject_wiki_content_added: "'{{id}}' pridÄ—tas wiki puslapis" - mail_body_wiki_content_added: "The '{{id}}' wiki puslapi pridÄ—jo {{author}}." - mail_subject_wiki_content_updated: "'{{id}}' atnaujintas wiki puslapis" - mail_body_wiki_content_updated: "The '{{id}}' wiki puslapį atnaujino {{author}}." + mail_subject_account_activation_request: "%{value} paskyros aktyvavimo praÅ¡ymas" + mail_body_account_activation_request: "Užsiregistravo naujas vartotojas (%{value}). Jo paskyra laukia jÅ«sų patvirtinimo:" + mail_subject_reminder: "%{count} darbas(ai) po kelių %{days} dienų" + mail_body_reminder: "%{count} darbas(ai), kurie yra jums priskirti, baigiasi po %{days} dienų(os):" + mail_subject_wiki_content_added: "'%{id}' pridÄ—tas wiki puslapis" + mail_body_wiki_content_added: "The '%{id}' wiki puslapi pridÄ—jo %{author}." + mail_subject_wiki_content_updated: "'%{id}' atnaujintas wiki puslapis" + mail_body_wiki_content_updated: "The '%{id}' wiki puslapį atnaujino %{author}." gui_validation_error: 1 klaida - gui_validation_error_plural: "{{count}} klaidų(os)" + gui_validation_error_plural: "%{count} klaidų(os)" field_name: Pavadinimas field_description: ApraÅ¡as @@ -310,6 +310,7 @@ field_attr_lastname: PavardÄ—s priskiria field_attr_mail: Elektroninio paÅ¡to požymis field_onthefly: Automatinis vartotojų registravimas + field_start_date: PradÄ—ti field_done_ratio: % atlikta field_auth_source: AutentiÅ¡kumo nustatymo bÅ«das field_hide_mail: PaslÄ—pkite mano elektroninio paÅ¡to adresÄ… @@ -458,14 +459,14 @@ label_x_projects: zero: nÄ—ra projektų one: 1 projektas - other: "{{count}} projektų" + other: "%{count} projektų" label_project_all: Visi Projektai label_project_latest: Paskutiniai projektai label_issue: Darbas label_issue_new: Naujas darbas label_issue_plural: Darbai label_issue_view_all: PeržiÅ«rÄ—ti visus darbus - label_issues_by: "Darbai pagal {{value}}" + label_issues_by: "Darbai pagal %{value}" label_issue_added: Darbas pridÄ—tas label_issue_updated: Darbas atnaujintas label_document: Dokumentas @@ -513,7 +514,7 @@ label_registered_on: Užregistruota label_activity: Veikla label_overall_activity: Visa veikla - label_user_activity: "{{value}}o veiksmai" + label_user_activity: "%{value}o veiksmai" label_new: Naujas label_logged_as: PrisijungÄ™s kaip label_environment: Aplinka @@ -522,7 +523,7 @@ label_auth_source_new: Naujas autentiÅ¡kumo nustatymo bÅ«das label_auth_source_plural: AutentiÅ¡kumo nustatymo bÅ«dai label_subproject_plural: Subprojektai - label_and_its_subprojects: "{{value}} projektas ir jo subprojektai" + label_and_its_subprojects: "%{value} projektas ir jo subprojektai" label_min_max_length: Min - Maks ilgis label_list: SÄ…raÅ¡as label_date: Data @@ -533,8 +534,8 @@ label_text: Ilgas tekstas label_attribute: Požymis label_attribute_plural: Požymiai - label_download: "{{count}} persiuntimas" - label_download_plural: "{{count}} persiuntimai" + label_download: "%{count} persiuntimas" + label_download_plural: "%{count} persiuntimai" label_no_data: NÄ—ra kÄ… atvaizduoti label_change_status: Pakeitimo bÅ«sena label_history: Istorija @@ -566,17 +567,17 @@ label_closed_issues: uždaryta label_closed_issues_plural: uždaryti label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 uždarytu one: 1 uždarytas - other: "{{count}} uždarytu" + other: "%{count} uždarytu" label_total: Bendra suma label_permissions: Leidimai label_current_status: Einamoji bÅ«sena @@ -594,7 +595,7 @@ label_months_from: mÄ—nesiai nuo label_gantt: Gantt label_internal: Vidinis - label_last_changes: "paskutiniai {{count}}, pokyÄiai" + label_last_changes: "paskutiniai %{count}, pokyÄiai" label_change_view_all: PeržiÅ«rÄ—ti visus pakeitimus label_personalize_page: Suasmeninti šį puslapį label_comment: Komentaras @@ -602,7 +603,7 @@ label_x_comments: zero: nÄ—ra komentarų one: 1 komentaras - other: "{{count}} komentarų" + other: "%{count} komentarų" label_comment_add: PridÄ—kite komentarÄ… label_comment_added: Komentaras pridÄ—tas label_comment_delete: PaÅ¡alinkite komentarus @@ -621,7 +622,7 @@ label_yesterday: vakar label_this_week: Å¡iÄ… savaitÄ™ label_last_week: paskutinÄ— savaitÄ— - label_last_n_days: "paskutinių {{count}} dienų" + label_last_n_days: "paskutinių %{count} dienų" label_this_month: Å¡is menuo label_last_month: paskutinis menuo label_this_year: Å¡iemet @@ -635,8 +636,8 @@ label_repository: Saugykla label_repository_plural: Saugyklos label_browse: NarÅ¡yti - label_modification: "{{count}} pakeitimas" - label_modification_plural: "{{count}} pakeitimai" + label_modification: "%{count} pakeitimas" + label_modification_plural: "%{count} pakeitimai" label_revision: Revizija label_revision_plural: Revizijos label_associated_revisions: susijusios revizijos @@ -654,8 +655,8 @@ label_sort_lower: Perkelti žemyn label_sort_lowest: Perkelti į apaÄiÄ… label_roadmap: Veiklos grafikas - label_roadmap_due_in: "Baigiasi po {{value}}" - label_roadmap_overdue: "{{value}} vÄ—luojama" + label_roadmap_due_in: "Baigiasi po %{value}" + label_roadmap_overdue: "%{value} vÄ—luojama" label_roadmap_no_issues: Jokio darbo Å¡iai versijai nÄ—ra label_search: IeÅ¡koti label_result_plural: Rezultatai @@ -673,8 +674,8 @@ label_changes_details: Visų pakeitimų detalÄ—s label_issue_tracking: Darbų sekimas label_spent_time: Dirbtas laikas - label_f_hour: "{{value}} valanda" - label_f_hour_plural: "{{value}} valandų" + label_f_hour: "%{value} valanda" + label_f_hour_plural: "%{value} valandų" label_time_tracking: Laiko sekimas label_change_plural: Pakeitimai label_statistics: Statistika @@ -723,13 +724,13 @@ label_date_from: Nuo label_date_to: Iki label_language_based: Pagrįsta vartotojo kalba - label_sort_by: "Rūšiuoti pagal {{value}}" + label_sort_by: "Rūšiuoti pagal %{value}" label_send_test_email: Nusiųsti bandomÄ…jį elektroninį laiÅ¡kÄ… - label_feeds_access_key_created_on: "RSS prieigos raktas sukurtas prieÅ¡ {{value}}" + label_feeds_access_key_created_on: "RSS prieigos raktas sukurtas prieÅ¡ %{value}" label_module_plural: Moduliai - label_added_time_by: "PridÄ—jo {{author}} prieÅ¡ {{age}}" - label_updated_time_by: "Atnaujino {{author}} {{age}} atgal" - label_updated_time: "Atnaujinta prieÅ¡ {{value}}" + label_added_time_by: "PridÄ—jo %{author} prieÅ¡ %{age}" + label_updated_time_by: "Atnaujino %{author} %{age} atgal" + label_updated_time: "Atnaujinta prieÅ¡ %{value}" label_jump_to_a_project: Å uolis į projektÄ…... label_file_plural: Bylos label_changeset_plural: Changesets @@ -745,7 +746,7 @@ label_registration_activation_by_email: "paskyros aktyvacija per e-paÅ¡tÄ…" label_registration_manual_activation: "rankinÄ— paskyros aktyvacija" label_registration_automatic_activation: "automatinÄ— paskyros aktyvacija" - label_display_per_page: "{{value}} įrašų puslapyje" + label_display_per_page: "%{value} įrašų puslapyje" label_age: Amžius label_change_properties: Pakeisti nustatymus label_general: Bendri @@ -769,7 +770,7 @@ label_descending: Descending label_sort: Rūšiuoti label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} label_greater_or_equal: ">=" label_less_or_equal: <= label_wiki_content_added: Wiki puslapis pridÄ—tas @@ -843,52 +844,52 @@ text_regexp_info: pvz. ^[A-Z0-9]+$ text_min_max_length_info: 0 reiÅ¡kia jokių apribojimų text_project_destroy_confirmation: Ar esate įsitikinÄ™s, kad jÅ«s norite paÅ¡alinti šį projektÄ… ir visus susijusius duomenis? - text_subprojects_destroy_warning: "Å is(ie) subprojektas(ai): {{value}} taip pat bus iÅ¡trintas(i)." + text_subprojects_destroy_warning: "Å is(ie) subprojektas(ai): %{value} taip pat bus iÅ¡trintas(i)." text_workflow_edit: IÅ¡rinkite vaidmenį ir pÄ—dsekį, kad redaguotumÄ—te darbų eigÄ… text_are_you_sure: Ar esate įsitikinÄ™s? - text_journal_changed: "{{label}} pakeista iÅ¡ {{old}} į {{new}}" - text_journal_set_to: "{{label}} pakeista į {{value}}" - text_journal_deleted: "{{label}} iÅ¡trintas ({{old}})" - text_journal_added: "{{label}} {{value}} pridÄ—tas" + text_journal_changed: "%{label} pakeista iÅ¡ %{old} į %{new}" + text_journal_set_to: "%{label} pakeista į %{value}" + text_journal_deleted: "%{label} iÅ¡trintas (%{old})" + text_journal_added: "%{label} %{value} pridÄ—tas" text_tip_issue_begin_day: užduotis, prasidedanti Å¡iÄ… dienÄ… text_tip_issue_end_day: užduotis, pasibaigianti Å¡iÄ… dienÄ… text_tip_issue_begin_end_day: užduotis, prasidedanti ir pasibaigianti Å¡iÄ… dienÄ… text_project_identifier_info: 'Mažosios raidÄ—s (a-z), skaiÄiai ir brÅ«kÅ¡niai galimi.
    IÅ¡saugojus, identifikuotojas negali bÅ«ti keiÄiamas.' - text_caracters_maximum: "{{count}} simbolių maksimumas." - text_caracters_minimum: "Turi bÅ«ti mažiausiai {{count}} simbolių ilgio." - text_length_between: "Ilgis tarp {{min}} ir {{max}} simbolių." + text_caracters_maximum: "%{count} simbolių maksimumas." + text_caracters_minimum: "Turi bÅ«ti mažiausiai %{count} simbolių ilgio." + text_length_between: "Ilgis tarp %{min} ir %{max} simbolių." text_tracker_no_workflow: Jokia darbų eiga neapibrėžta Å¡iam pÄ—dsekiui text_unallowed_characters: Neleistini simboliai text_comma_separated: Leistinos kelios reikÅ¡mÄ—s (atskirtos kableliu). text_issues_ref_in_commit_messages: Darbų pavedimų(commit) nurodymas ir fiksavimas praneÅ¡imuose - text_issue_added: "Darbas {{id}} buvo praneÅ¡tas (by {{author}})." - text_issue_updated: "Darbas {{id}} buvo atnaujintas (by {{author}})." + text_issue_added: "Darbas %{id} buvo praneÅ¡tas (by %{author})." + text_issue_updated: "Darbas %{id} buvo atnaujintas (by %{author})." text_wiki_destroy_confirmation: Ar esate įsitikinÄ™s, kad jÅ«s norite paÅ¡alinti wiki ir visÄ… jos turinį? - text_issue_category_destroy_question: "Kai kurie darbai ({{count}}) yra paskirti Å¡iai kategorijai. KÄ… jÅ«s norite daryti?" + text_issue_category_destroy_question: "Kai kurie darbai (%{count}) yra paskirti Å¡iai kategorijai. KÄ… jÅ«s norite daryti?" text_issue_category_destroy_assignments: PaÅ¡alinti kategorijos užduotis text_issue_category_reassign_to: IÅ¡ naujo priskirti darbus Å¡iai kategorijai text_user_mail_option: "neiÅ¡rinktiems projektams, jÅ«s tiktai gausite praneÅ¡imus apie įvykius, kuriuos jÅ«s stebite, arba į kuriuos esate įtrauktas (pvz. darbai, jÅ«s esate autorius ar įgaliotinis)." text_no_configuration_data: "Vaidmenys, pÄ—dsekiai, darbų bÅ«senos ir darbų eiga dar nebuvo konfigÅ«ruoti.\nGriežtai rekomenduojam užkrauti numatytÄ…jÄ…(default)konfiguracijÄ…. Užkrovus, galÄ—site jÄ… modifikuoti." text_load_default_configuration: Užkrauti numatytÄ…j konfiguracijÄ… - text_status_changed_by_changeset: "Pakeista {{value}} revizijoje." + text_status_changed_by_changeset: "Pakeista %{value} revizijoje." text_issues_destroy_confirmation: 'Ar jÅ«s tikrai norite sunaikinti pažymÄ—tÄ…(us) darbÄ…(us)?' text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti Å¡iame projekte:' text_default_administrator_account_changed: Administratoriaus numatyta paskyra pakeista text_file_repository_writable: Ä® rinkmenu saugyklÄ… galima saugoti (RW) text_plugin_assets_writable: Ä®skiepių 'assets' katalogas įraÅ¡omas text_rmagick_available: RMagick pasiekiamas (pasirinktinai) - text_destroy_time_entries_question: Naikinamam darbui priskirta {{hours}} valandų. KÄ… jÅ«s noryte su jomis daryti? + text_destroy_time_entries_question: Naikinamam darbui priskirta %{hours} valandų. KÄ… jÅ«s noryte su jomis daryti? text_destroy_time_entries: IÅ¡trinti paskelbtas valandas text_assign_time_entries_to_project: Priskirti valandas prie projekto text_reassign_time_entries: 'Priskirti paskelbtas valandas Å¡iam darbui:' - text_user_wrote: "{{value}} parašė:" - text_enumeration_destroy_question: "{{count}} objektai priskirti Å¡iai reikÅ¡mei." + text_user_wrote: "%{value} parašė:" + text_enumeration_destroy_question: "%{count} objektai priskirti Å¡iai reikÅ¡mei." text_enumeration_category_reassign_to: 'Priskirti juos Å¡iai reikÅ¡mei:' - text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/email.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." + text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/configuration.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojo vardÄ… kiekvienam saugyklos vardui, kuris paminÄ—tas saugyklos log'e.\nVartotojai, turintys tÄ… patį Redmine ir saugyklos vardÄ… ar el.paÅ¡tÄ… automatiÅ¡kai suriÅ¡ti." text_diff_truncated: "... Å is diff'as nukarpytas, nes jis virÅ¡ijo maksimalų rodomÄ… eiluÄių skaiÄių." text_custom_field_possible_values_info: 'Po vienÄ… eilutÄ™ kiekvienai reikÅ¡mei' - text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do? + 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: Priskirkite iÅ¡ naujo 'child' puslapius Å¡iam puslapiui text_wiki_page_nullify_children: Laikyti child puslapius as root puslapius text_wiki_page_destroy_children: PaÅ¡alinti child puslapius ir jų sekinius @@ -933,9 +934,9 @@ label_update_issue_done_ratios: Update issue done ratios 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -962,12 +963,12 @@ 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_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}}." + 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. @@ -975,7 +976,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -986,8 +987,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/lv.yml.svn-base --- a/config/locales/.svn/text-base/lv.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/lv.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,924 +1,937 @@ -# 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: - 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_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/email.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 +# 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/mk.yml.svn-base --- a/config/locales/.svn/text-base/mk.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/mk.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,929 +1,942 @@ -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: - 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_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/email.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 +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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/mn.yml.svn-base --- a/config/locales/.svn/text-base/mn.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/mn.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,930 +1,943 @@ -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: - 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_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/email.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 +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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/nl.yml.svn-base --- a/config/locales/.svn/text-base/nl.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/nl.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "halve minuut" less_than_x_seconds: one: "minder dan een seconde" - other: "mindera dan {{count}} seconden" + other: "mindera dan %{count} seconden" x_seconds: one: "1 seconde" - other: "{{count}} seconden" + other: "%{count} seconden" less_than_x_minutes: one: "minder dan een minuut" - other: "minder dan {{count}} minuten" + other: "minder dan %{count} minuten" x_minutes: one: "1 minuut" - other: "{{count}} minuten" + other: "%{count} minuten" about_x_hours: one: "ongeveer 1 uur" - other: "ongeveer {{count}} uren" + other: "ongeveer %{count} uren" x_days: one: "1 dag" - other: "{{count}} dagen" + other: "%{count} dagen" about_x_months: one: "ongeveer 1 maand" - other: "ongeveer {{count}} maanden" + other: "ongeveer %{count} maanden" x_months: one: "1 maand" - other: "{{count}} maanden" + other: "%{count} maanden" about_x_years: one: "ongeveer 1 jaar" - other: "ongeveer {{count}} jaren" + other: "ongeveer %{count} jaren" over_x_years: one: "over 1 jaar" - other: "over {{count}} jaren" + other: "over %{count} jaren" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "staat niet in de lijst" exclusion: "is gereserveerd" @@ -106,11 +110,11 @@ taken: "is al in gebruik" not_a_number: "is geen getal" not_a_date: "is geen valide datum" - greater_than: "moet groter zijn dan {{count}}" - greater_than_or_equal_to: "moet groter zijn of gelijk zijn aan {{count}}" - equal_to: "moet gelijk zijn aan {{count}}" - less_than: "moet minder zijn dan {{count}}" - less_than_or_equal_to: "moet minder dan of gelijk zijn aan {{count}}" + greater_than: "moet groter zijn dan %{count}" + greater_than_or_equal_to: "moet groter zijn of gelijk zijn aan %{count}" + equal_to: "moet gelijk zijn aan %{count}" + less_than: "moet minder zijn dan %{count}" + less_than_or_equal_to: "moet minder dan of gelijk zijn aan %{count}" odd: "moet oneven zijn" even: "moet even zijn" greater_than_start_date: "moet na de startdatum liggen" @@ -182,10 +186,10 @@ enumeration_activities: Activiteiten (tijdtracking) enumeration_doc_categories: Documentcategorieën enumeration_issue_priorities: Issueprioriteiten - error_can_t_load_default_data: "De standaard configuratie kon niet worden geladen: {{value}}" + error_can_t_load_default_data: "De standaard configuratie kon niet worden geladen: %{value}" error_issue_not_found_in_project: 'Deze issue is niet gevonden of behoort niet toe tot dit project.' error_scm_annotate: "Er kan geen commentaar toegevoegd worden." - error_scm_command_failed: "Er trad een fout op tijdens de poging om verbinding te maken met de repository: {{value}}" + error_scm_command_failed: "Er trad een fout op tijdens de poging om verbinding te maken met de repository: %{value}" error_scm_not_found: "Deze ingang of revisie bestaat niet in de repository." field_account: Account field_activity: Activiteit @@ -256,6 +260,7 @@ field_role: Rol field_searchable: Doorzoekbaar field_spent_on: Datum + field_start_date: Startdatum field_start_page: Startpagina field_status: Status field_subject: Onderwerp @@ -270,9 +275,9 @@ field_user: Gebruiker field_value: Waarde field_version: Versie - general_csv_decimal_separator: '.' + general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_csv_separator: ',' + general_csv_separator: ';' general_first_day_of_week: '7' general_lang_name: 'Nederlands' general_pdf_encoding: ISO-8859-1 @@ -281,19 +286,19 @@ general_text_no: 'nee' general_text_yes: 'ja' gui_validation_error: 1 fout - gui_validation_error_plural: "{{count}} fouten" + gui_validation_error_plural: "%{count} fouten" label_activity: Activiteit label_add_another_file: Ander bestand toevoegen label_add_note: Voeg een notitie toe label_added: toegevoegd - label_added_time_by: "Toegevoegd door {{author}} {{age}} geleden" + label_added_time_by: "Toegevoegd door %{author} %{age} geleden" label_administration: Administratie label_age: Leeftijd label_ago: dagen geleden label_all: alle label_all_time: alles label_all_words: Alle woorden - label_and_its_subprojects: "{{value}} en zijn subprojecten." + label_and_its_subprojects: "%{value} en zijn subprojecten." label_applied_status: Toegekende status label_assigned_to_me_issues: Aan mij toegewezen issues label_associated_revisions: Geassociëerde revisies @@ -326,17 +331,17 @@ label_closed_issues: gesloten label_closed_issues_plural: gesloten label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_comment: Commentaar label_comment_add: Voeg commentaar toe label_comment_added: Commentaar toegevoegd @@ -345,7 +350,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_commits_per_author: Commits per auteur label_commits_per_month: Commits per maand label_confirmation: Bevestiging @@ -369,13 +374,13 @@ label_diff_inline: inline label_diff_side_by_side: naast elkaar label_disabled: uitgeschakeld - label_display_per_page: "Per pagina: {{value}}" + label_display_per_page: "Per pagina: %{value}" label_document: Document label_document_added: Document toegevoegd label_document_new: Nieuw document label_document_plural: Documenten - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_downloads_abbr: D/L label_duplicated_by: gedupliceerd door label_duplicates: dupliceert @@ -387,10 +392,10 @@ label_equals: is gelijk label_example: Voorbeeld label_export_to: Exporteer naar - label_f_hour: "{{value}} uur" - label_f_hour_plural: "{{value}} uren" + label_f_hour: "%{value} uur" + label_f_hour_plural: "%{value} uren" label_feed_plural: Feeds - label_feeds_access_key_created_on: "RSS toegangssleutel {{value}} geleden gemaakt." + label_feeds_access_key_created_on: "RSS toegangssleutel %{value} geleden gemaakt." label_file_added: Bericht toegevoegd label_file_plural: Bestanden label_filter_add: Voeg filter toe @@ -427,13 +432,13 @@ label_issue_updated: Issue bijgewerkt label_issue_view_all: Bekijk alle issues label_issue_watchers: Monitoren - label_issues_by: "Issues door {{value}}" + label_issues_by: "Issues door %{value}" label_jump_to_a_project: Ga naar een project... label_language_based: Taal gebaseerd - label_last_changes: "laatste {{count}} wijzigingen" + label_last_changes: "laatste %{count} wijzigingen" label_last_login: Laatste bezoek label_last_month: laatste maand - label_last_n_days: "{{count}} dagen geleden" + label_last_n_days: "%{count} dagen geleden" label_last_week: vorige week label_latest_revision: Meest recente revisie label_latest_revision_plural: Meest recente revisies @@ -454,8 +459,8 @@ label_message_plural: Berichten label_message_posted: Bericht toegevoegd label_min_max_length: Min-max lengte - label_modification: "{{count}} wijziging" - label_modification_plural: "{{count}} wijzigingen" + label_modification: "%{count} wijziging" + label_modification_plural: "%{count} wijzigingen" label_modified: gewijzigd label_module_plural: Modules label_month: Maand @@ -506,7 +511,7 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_public_projects: Publieke projecten label_query: Eigen zoekvraag label_query_new: Nieuwe zoekvraag @@ -533,9 +538,9 @@ label_revision: Revisie label_revision_plural: Revisies label_roadmap: Roadmap - label_roadmap_due_in: "Voldaan in {{value}}" + label_roadmap_due_in: "Voldaan in %{value}" label_roadmap_no_issues: Geen issues voor deze versie - label_roadmap_overdue: "{{value}} over tijd" + label_roadmap_overdue: "%{value} over tijd" label_role: Rol label_role_and_permissions: Rollen en permissies label_role_new: Nieuwe rol @@ -547,7 +552,7 @@ label_send_test_email: Stuur een test e-mail label_settings: Instellingen label_show_completed_versions: Toon afgeronde versies - label_sort_by: "Sorteer op {{value}}" + label_sort_by: "Sorteer op %{value}" label_sort_higher: Verplaats naar boven label_sort_highest: Verplaats naar begin label_sort_lower: Verplaats naar beneden @@ -571,11 +576,11 @@ label_tracker: Tracker label_tracker_new: Nieuwe tracker label_tracker_plural: Trackers - label_updated_time: "{{value}} geleden bijgewerkt" - label_updated_time_by: "{{age}} geleden bijgewerkt door {{author}}" + label_updated_time: "%{value} geleden bijgewerkt" + label_updated_time_by: "%{age} geleden bijgewerkt door %{author}" label_used_by: Gebruikt door label_user: Gebruiker - label_user_activity: "{{value}}'s activiteit" + 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_option_all: "Bij elk gebeurtenis in al mijn projecten..." label_user_mail_option_selected: "Enkel bij elke gebeurtenis op het geselecteerde project..." @@ -596,16 +601,16 @@ label_workflow: Workflow label_year: Jaar label_yesterday: gisteren - mail_body_account_activation_request: "Een nieuwe gebruiker ({{value}}) is geregistreerd. Zijn account wacht op uw akkoord:" + mail_body_account_activation_request: "Een nieuwe gebruiker (%{value}) is geregistreerd. Zijn account wacht op uw akkoord:" mail_body_account_information: Uw account gegevens - mail_body_account_information_external: "U kunt uw account ({{value}}) gebruiken om in te loggen." + mail_body_account_information_external: "U kunt uw account (%{value}) gebruiken om in te loggen." mail_body_lost_password: 'Gebruik de volgende link om uw wachtwoord te wijzigen:' mail_body_register: 'Gebruik de volgende link om uw account te activeren:' - mail_body_reminder: "{{count}} issue(s) die aan u toegewezen zijn en voldaan moeten zijn in de komende {{days}} dagen:" - mail_subject_account_activation_request: "{{value}} accountactivatieverzoek" - mail_subject_lost_password: "uw {{value}} wachtwoord" - mail_subject_register: "uw {{value}} accountactivatie" - mail_subject_reminder: "{{count}} issue(s) die voldaan moeten zijn in de komende {{days}} dagen." + mail_body_reminder: "%{count} issue(s) die aan u toegewezen zijn en voldaan moeten zijn in de komende %{days} dagen:" + mail_subject_account_activation_request: "%{value} accountactivatieverzoek" + mail_subject_lost_password: "uw %{value} wachtwoord" + mail_subject_register: "uw %{value} accountactivatie" + mail_subject_reminder: "%{count} issue(s) die voldaan moeten zijn in de komende %{days} dagen." notice_account_activated: uw account is geactiveerd. u kunt nu inloggen. notice_account_invalid_creditentials: Incorrecte gebruikersnaam of wachtwoord notice_account_lost_email_sent: Er is een e-mail naar u verstuurd met instructies over het kiezen van een nieuw wachtwoord. @@ -617,9 +622,9 @@ notice_account_wrong_password: Incorrect wachtwoord notice_can_t_change_password: Dit account gebruikt een externe bron voor authenticatie. Het is niet mogelijk om het wachtwoord te veranderen. notice_default_data_loaded: Standaard configuratie succesvol geladen. - notice_email_error: "Er is een fout opgetreden tijdens het versturen van ({{value}})" - notice_email_sent: "Een e-mail werd verstuurd naar {{value}}" - notice_failed_to_save_issues: "Fout bij bewaren van {{count}} issue(s) ({{total}} geselecteerd): {{ids}}." + notice_email_error: "Er is een fout opgetreden tijdens het versturen van (%{value})" + notice_email_sent: "Een e-mail werd verstuurd naar %{value}" + notice_failed_to_save_issues: "Fout bij bewaren van %{count} issue(s) (%{total} geselecteerd): %{ids}." notice_feeds_access_key_reseted: Je RSS toegangssleutel werd gereset. notice_file_not_found: De pagina die u probeerde te benaderen bestaat niet of is verwijderd. notice_locking_conflict: De gegevens zijn gewijzigd door een andere gebruiker. @@ -730,25 +735,25 @@ status_registered: geregistreerd text_are_you_sure: Weet u het zeker? text_assign_time_entries_to_project: Gerapporteerde uren toevoegen aan dit project - text_caracters_maximum: "{{count}} van maximum aantal tekens." - text_caracters_minimum: "Moet minstens {{count}} karakters lang zijn." + text_caracters_maximum: "%{count} van maximum aantal tekens." + text_caracters_minimum: "Moet minstens %{count} karakters lang zijn." text_comma_separated: Meerdere waarden toegestaan (kommagescheiden). text_default_administrator_account_changed: Standaard beheerderaccount gewijzigd 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_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/email.yml en herstart de applicatie om dit te activeren." + 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_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:' - text_enumeration_destroy_question: "{{count}} objecten zijn toegewezen aan deze waarde." + text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: Bestandsrepository beschrijfbaar - text_issue_added: "Issue {{id}} is gerapporteerd (door {{author}})." + text_issue_added: "Issue %{id} is gerapporteerd (door %{author})." text_issue_category_destroy_assignments: Verwijder toewijzingen aan deze categorie - text_issue_category_destroy_question: "Er zijn issues ({{count}}) aan deze categorie toegewezen. Wat wilt u hiermee doen ?" + text_issue_category_destroy_question: "Er zijn issues (%{count}) aan deze categorie toegewezen. Wat wilt u hiermee doen ?" text_issue_category_reassign_to: Issues opnieuw toewijzen aan deze categorie - text_issue_updated: "Issue {{id}} is gewijzigd (door {{author}})." + text_issue_updated: "Issue %{id} is gewijzigd (door %{author})." text_issues_destroy_confirmation: 'Weet u zeker dat u deze issue(s) wil verwijderen?' text_issues_ref_in_commit_messages: Opzoeken en aanpassen van issues in commitberichten - text_length_between: "Lengte tussen {{min}} en {{max}} tekens." + text_length_between: "Lengte tussen %{min} en %{max} tekens." text_load_default_configuration: Laad de standaardconfiguratie text_min_max_length_info: 0 betekent geen restrictie text_no_configuration_data: "Rollen, trackers, issue statussen en workflows zijn nog niet geconfigureerd.\nHet is ten zeerste aangeraden om de standaard configuratie in te laden. U kunt deze aanpassen nadat deze is ingeladen." @@ -761,18 +766,18 @@ text_rmagick_available: RMagick beschikbaar (optioneel) text_select_mail_notifications: Selecteer acties waarvoor mededelingen via mail moeten worden verstuurd. text_select_project_modules: 'Selecteer de modules die u wilt gebruiken voor dit project:' - text_status_changed_by_changeset: "Toegepast in changeset {{value}}." - text_subprojects_destroy_warning: "De subprojecten: {{value}} zullen ook verwijderd worden." + text_status_changed_by_changeset: "Toegepast in changeset %{value}." + text_subprojects_destroy_warning: "De subprojecten: %{value} zullen ook verwijderd worden." text_tip_issue_begin_day: issue die op deze dag begint text_tip_issue_begin_end_day: issue die op deze dag begint en eindigt 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_wrote: "{{value}} schreef:" + 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 - warning_attachments_not_saved: "{{count}} bestand(en) konden niet opgeslagen worden." + warning_attachments_not_saved: "%{count} bestand(en) konden niet opgeslagen worden." button_create_and_continue: Maak en ga verder text_custom_field_possible_values_info: 'Per lijn een waarde' label_display: Toon @@ -787,21 +792,21 @@ label_descending: Aflopend label_sort: Sorteer label_ascending: Oplopend - label_date_from_to: Van {{start}} tot {{end}} + 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?. Wil wil je ermee 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 setting_password_min_length: Minimum wachtwoord lengte field_group_by: Groepeer resultaten per - mail_subject_wiki_content_updated: "'{{id}}' wiki pagina is bijgewerkt" + 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_subject_wiki_content_added: "'%{id}' wiki pagina is toegevoegd" + mail_body_wiki_content_added: The '%{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: The '%{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 @@ -809,14 +814,14 @@ label_branch: Branch error_no_tracker_in_project: Geen tracker is geassocieerd met dit project. Check de project instellingen. error_no_default_issue_status: Geen standaard issue status ingesteld. Check de configuratie (Ga naar "Administratie -> Issue statussen"). - text_journal_changed: "{{label}} gewijzigd van {{old}} naar {{new}}" - text_journal_set_to: "{{label}} gewijzigd naar {{value}}" - text_journal_deleted: "{{label}} verwijderd ({{old}})" + text_journal_changed: "%{label} gewijzigd van %{old} naar %{new}" + text_journal_set_to: "%{label} gewijzigd naar %{value}" + text_journal_deleted: "%{label} verwijderd (%{old})" label_group_plural: Groepen label_group: Groep label_group_new: Nieuwe groep label_time_entry_plural: Bestede tijd - text_journal_added: "{{label}} {{value}} toegevoegd" + text_journal_added: "%{label} %{value} toegevoegd" field_active: Actief enumeration_system_activity: Systeem Activiteit permission_delete_issue_watchers: Verwijder volgers @@ -851,9 +856,9 @@ setting_start_of_week: Week begint op permission_view_issues: Bekijk Issues label_display_used_statuses_only: Laat alleen statussen zien die gebruikt worden door deze tracker - label_revision_id: Revisie {{value}} + label_revision_id: Revisie %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key gemaakt {{value}} geleden + label_api_access_key_created_on: API access key gemaakt %{value} geleden label_feeds_access_key: RSS access key notice_api_access_key_reseted: Uw API access key was gereset. setting_rest_api_enabled: Activeer REST web service @@ -880,12 +885,12 @@ label_subtask_plural: Subtasks label_project_copy_notifications: Stuur email notificaties voor de project kopie error_can_not_delete_custom_field: Verwijderen niet mogelijk van custom field - error_unable_to_connect: Geen connectie ({{value}}) + error_unable_to_connect: Geen connectie (%{value}) error_can_not_remove_role: Deze rol is in gebruik en kan niet worden verwijderd. error_can_not_delete_tracker: Deze tracker bevat nog issues en kan niet worden verwijderd. field_principal: Principal label_my_page_block: Mijn pagina block - notice_failed_to_save_members: "Niet gelukt om lid/leden op te slaan: {{errors}}." + notice_failed_to_save_members: "Niet gelukt om lid/leden op te slaan: %{errors}." text_zoom_out: Zoom uit text_zoom_in: Zoom in notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer. @@ -893,7 +898,7 @@ field_time_entries: Log tijd project_module_gantt: Gantt project_module_calendar: Kalender - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -904,8 +909,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/no.yml.svn-base --- a/config/locales/.svn/text-base/no.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/no.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -27,37 +27,37 @@ half_a_minute: "et halvt minutt" less_than_x_seconds: one: "mindre enn 1 sekund" - other: "mindre enn {{count}} sekunder" + other: "mindre enn %{count} sekunder" x_seconds: one: "1 sekund" - other: "{{count}} sekunder" + other: "%{count} sekunder" less_than_x_minutes: one: "mindre enn 1 minutt" - other: "mindre enn {{count}} minutter" + other: "mindre enn %{count} minutter" x_minutes: one: "1 minutt" - other: "{{count}} minutter" + other: "%{count} minutter" about_x_hours: one: "rundt 1 time" - other: "rundt {{count}} timer" + other: "rundt %{count} timer" x_days: one: "1 dag" - other: "{{count}} dager" + other: "%{count} dager" about_x_months: one: "rundt 1 mÃ¥ned" - other: "rundt {{count}} mÃ¥neder" + other: "rundt %{count} mÃ¥neder" x_months: one: "1 mÃ¥ned" - other: "{{count}} mÃ¥neder" + other: "%{count} mÃ¥neder" about_x_years: one: "rundt 1 Ã¥r" - other: "rundt {{count}} Ã¥r" + other: "rundt %{count} Ã¥r" over_x_years: one: "over 1 Ã¥r" - other: "over {{count}} Ã¥r" + other: "over %{count} Ã¥r" almost_x_years: one: "nesten 1 Ã¥r" - other: "nesten {{count}} Ã¥r" + other: "nesten %{count} Ã¥r" number: format: precision: 2 @@ -86,7 +86,7 @@ activerecord: errors: template: - header: "kunne ikke lagre {{model}} pÃ¥ grunn av {{count}} feil." + header: "kunne ikke lagre %{model} pÃ¥ grunn av %{count} feil." body: "det oppstod problemer i følgende felt:" messages: inclusion: "er ikke inkludert i listen" @@ -96,16 +96,16 @@ accepted: "mÃ¥ være akseptert" empty: "kan ikke være tom" blank: "kan ikke være blank" - too_long: "er for lang (maksimum {{count}} tegn)" - too_short: "er for kort (minimum {{count}} tegn)" - wrong_length: "er av feil lengde (maksimum {{count}} tegn)" + too_long: "er for lang (maksimum %{count} tegn)" + too_short: "er for kort (minimum %{count} tegn)" + wrong_length: "er av feil lengde (maksimum %{count} tegn)" taken: "er allerede i bruk" not_a_number: "er ikke et tall" - greater_than: "mÃ¥ være større enn {{count}}" - greater_than_or_equal_to: "mÃ¥ være større enn eller lik {{count}}" - equal_to: "mÃ¥ være lik {{count}}" - less_than: "mÃ¥ være mindre enn {{count}}" - less_than_or_equal_to: "mÃ¥ være mindre enn eller lik {{count}}" + greater_than: "mÃ¥ være større enn %{count}" + greater_than_or_equal_to: "mÃ¥ være større enn eller lik %{count}" + equal_to: "mÃ¥ være lik %{count}" + less_than: "mÃ¥ være mindre enn %{count}" + less_than_or_equal_to: "mÃ¥ være mindre enn eller lik %{count}" odd: "mÃ¥ være oddetall" even: "mÃ¥ være partall" greater_than_start_date: "mÃ¥ være større enn startdato" @@ -143,33 +143,33 @@ notice_file_not_found: Siden du forsøkte Ã¥ vise eksisterer ikke, eller er slettet. notice_locking_conflict: Data har blitt oppdatert av en annen bruker. notice_not_authorized: Du har ikke adgang til denne siden. - notice_email_sent: "En e-post er sendt til {{value}}" - notice_email_error: "En feil oppstod under sending av e-post ({{value}})" + notice_email_sent: "En e-post er sendt til %{value}" + notice_email_error: "En feil oppstod under sending av e-post (%{value})" notice_feeds_access_key_reseted: Din RSS-tilgangsnøkkel er nullstilt. - notice_failed_to_save_issues: "Lykkes ikke Ã¥ lagre {{count}} sak(er) pÃ¥ {{total}} valgt: {{ids}}." + notice_failed_to_save_issues: "Lykkes ikke Ã¥ lagre %{count} sak(er) pÃ¥ %{total} valgt: %{ids}." notice_no_issue_selected: "Ingen sak valgt! Vennligst merk sakene du vil endre." notice_account_pending: "Din konto ble opprettet og avventer nÃ¥ administrativ godkjenning." notice_default_data_loaded: Standardkonfigurasjonen lastet inn. - error_can_t_load_default_data: "Standardkonfigurasjonen kunne ikke lastes inn: {{value}}" + error_can_t_load_default_data: "Standardkonfigurasjonen kunne ikke lastes inn: %{value}" error_scm_not_found: "Elementet og/eller revisjonen eksisterer ikke i depoet." - error_scm_command_failed: "En feil oppstod under tilkobling til depoet: {{value}}" + error_scm_command_failed: "En feil oppstod under tilkobling til depoet: %{value}" error_scm_annotate: "Elementet eksisterer ikke, eller kan ikke noteres." error_issue_not_found_in_project: 'Saken eksisterer ikke, eller hører ikke til dette prosjektet' - mail_subject_lost_password: "Ditt {{value}} passord" + mail_subject_lost_password: "Ditt %{value} passord" mail_body_lost_password: 'Klikk følgende lenke for Ã¥ endre ditt passord:' - mail_subject_register: "{{value}} kontoaktivering" + mail_subject_register: "%{value} kontoaktivering" mail_body_register: 'Klikk følgende lenke for Ã¥ aktivere din konto:' - mail_body_account_information_external: "Du kan bruke din {{value}}-konto for Ã¥ logge inn." + mail_body_account_information_external: "Du kan bruke din %{value}-konto for Ã¥ logge inn." mail_body_account_information: Informasjon om din konto - mail_subject_account_activation_request: "{{value}} kontoaktivering" - mail_body_account_activation_request: "En ny bruker ({{value}}) er registrert, og avventer din godkjenning:" - mail_subject_reminder: "{{count}} sak(er) har frist de kommende {{days}} dagene" - mail_body_reminder: "{{count}} sak(er) som er tildelt deg har frist de kommende {{days}} dager:" + mail_subject_account_activation_request: "%{value} kontoaktivering" + mail_body_account_activation_request: "En ny bruker (%{value}) er registrert, og avventer din godkjenning:" + mail_subject_reminder: "%{count} sak(er) har frist de kommende %{days} dagene" + mail_body_reminder: "%{count} sak(er) som er tildelt deg har frist de kommende %{days} dager:" gui_validation_error: 1 feil - gui_validation_error_plural: "{{count}} feil" + gui_validation_error_plural: "%{count} feil" field_name: Navn field_description: Beskrivelse @@ -231,6 +231,7 @@ field_attr_lastname: Etternavnsattributt field_attr_mail: E-post-attributt field_onthefly: On-the-fly brukeropprettelse + field_start_date: Start field_done_ratio: % Ferdig field_auth_source: Autentifikasjonsmodus field_hide_mail: Skjul min e-post-adresse @@ -305,14 +306,14 @@ label_x_projects: zero: ingen prosjekter one: 1 prosjekt - other: "{{count}} prosjekter" + other: "%{count} prosjekter" label_project_all: Alle prosjekter label_project_latest: Siste prosjekter label_issue: Sak label_issue_new: Ny sak label_issue_plural: Saker label_issue_view_all: Vis alle saker - label_issues_by: "Saker etter {{value}}" + label_issues_by: "Saker etter %{value}" label_issue_added: Sak lagt til label_issue_updated: Sak oppdatert label_document: Dokument @@ -368,7 +369,7 @@ label_auth_source_new: Ny autentifikasjonmodus label_auth_source_plural: Autentifikasjonsmoduser label_subproject_plural: Underprosjekter - label_and_its_subprojects: "{{value}} og dets underprosjekter" + label_and_its_subprojects: "%{value} og dets underprosjekter" label_min_max_length: Min.-maks. lengde label_list: Liste label_date: Dato @@ -379,8 +380,8 @@ label_text: Lang tekst label_attribute: Attributt label_attribute_plural: Attributter - label_download: "{{count}} Nedlasting" - label_download_plural: "{{count}} Nedlastinger" + label_download: "%{count} Nedlasting" + label_download_plural: "%{count} Nedlastinger" label_no_data: Ingen data Ã¥ vise label_change_status: Endre status label_history: Historikk @@ -411,17 +412,17 @@ label_closed_issues: lukket label_closed_issues_plural: lukkede label_x_open_issues_abbr_on_total: - zero: 0 Ã¥pne / {{total}} - one: 1 Ã¥pen / {{total}} - other: "{{count}} Ã¥pne / {{total}}" + zero: 0 Ã¥pne / %{total} + one: 1 Ã¥pen / %{total} + other: "%{count} Ã¥pne / %{total}" label_x_open_issues_abbr: zero: 0 Ã¥pne one: 1 Ã¥pen - other: "{{count}} Ã¥pne" + other: "%{count} Ã¥pne" label_x_closed_issues_abbr: zero: 0 lukka one: 1 lukka - other: "{{count}} lukka" + other: "%{count} lukka" label_total: Totalt label_permissions: Godkjenninger label_current_status: NÃ¥værende status @@ -439,7 +440,7 @@ label_months_from: mÃ¥neder fra label_gantt: Gantt label_internal: Intern - label_last_changes: "siste {{count}} endringer" + label_last_changes: "siste %{count} endringer" label_change_view_all: Vis alle endringer label_personalize_page: Tilpass denne siden label_comment: Kommentar @@ -447,7 +448,7 @@ label_x_comments: zero: no kommentarer one: 1 kommentar - other: "{{count}} kommentarer" + other: "%{count} kommentarer" label_comment_add: Legg til kommentar label_comment_added: Kommentar lagt til label_comment_delete: Slett kommentar @@ -466,7 +467,7 @@ label_yesterday: i gÃ¥r label_this_week: denne uken label_last_week: sist uke - label_last_n_days: "siste {{count}} dager" + label_last_n_days: "siste %{count} dager" label_this_month: denne mÃ¥neden label_last_month: siste mÃ¥ned label_this_year: dette Ã¥ret @@ -480,8 +481,8 @@ label_repository: Depot label_repository_plural: Depoter label_browse: Utforsk - label_modification: "{{count}} endring" - label_modification_plural: "{{count}} endringer" + label_modification: "%{count} endring" + label_modification_plural: "%{count} endringer" label_revision: Revisjon label_revision_plural: Revisjoner label_associated_revisions: Assosierte revisjoner @@ -497,8 +498,8 @@ label_sort_lower: Flytt ned label_sort_lowest: Flytt til bunnen label_roadmap: Veikart - label_roadmap_due_in: "Frist om {{value}}" - label_roadmap_overdue: "{{value}} over fristen" + label_roadmap_due_in: "Frist om %{value}" + label_roadmap_overdue: "%{value} over fristen" label_roadmap_no_issues: Ingen saker for denne versjonen label_search: Søk label_result_plural: Resultater @@ -516,8 +517,8 @@ label_changes_details: Detaljer om alle endringer label_issue_tracking: Sakssporing label_spent_time: Brukt tid - label_f_hour: "{{value}} time" - label_f_hour_plural: "{{value}} timer" + label_f_hour: "%{value} time" + label_f_hour_plural: "%{value} timer" label_time_tracking: Tidssporing label_change_plural: Endringer label_statistics: Statistikk @@ -566,12 +567,12 @@ label_date_from: Fra label_date_to: Til label_language_based: Basert pÃ¥ brukerens sprÃ¥k - label_sort_by: "Sorter etter {{value}}" + label_sort_by: "Sorter etter %{value}" label_send_test_email: Send en e-post-test - label_feeds_access_key_created_on: "RSS tilgangsnøkkel opprettet for {{value}} siden" + label_feeds_access_key_created_on: "RSS tilgangsnøkkel opprettet for %{value} siden" label_module_plural: Moduler - label_added_time_by: "Lagt til av {{author}} for {{age}} siden" - label_updated_time: "Oppdatert for {{value}} siden" + label_added_time_by: "Lagt til av %{author} for %{age} siden" + label_updated_time: "Oppdatert for %{value} siden" label_jump_to_a_project: GÃ¥ til et prosjekt... label_file_plural: Filer label_changeset_plural: Endringssett @@ -587,7 +588,7 @@ label_registration_activation_by_email: kontoaktivering pr. e-post label_registration_manual_activation: manuell kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering - label_display_per_page: "Pr. side: {{value}}" + label_display_per_page: "Pr. side: %{value}" label_age: Alder label_change_properties: Endre egenskaper label_general: Generell @@ -649,40 +650,40 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 betyr ingen begrensning text_project_destroy_confirmation: Er du sikker pÃ¥ at du vil slette dette prosjekter og alle relatert data ? - text_subprojects_destroy_warning: "Underprojekt(ene): {{value}} vil ogsÃ¥ bli slettet." + text_subprojects_destroy_warning: "Underprojekt(ene): %{value} vil ogsÃ¥ bli slettet." text_workflow_edit: Velg en rolle og en sakstype for Ã¥ endre arbeidsflyten text_are_you_sure: Er du sikker ? text_tip_issue_begin_day: oppgaven starter denne dagen text_tip_issue_end_day: oppgaven avsluttes denne dagen text_tip_issue_begin_end_day: oppgaven starter og avsluttes denne dagen text_project_identifier_info: 'SmÃ¥ bokstaver (a-z), nummer og bindestrek tillatt.
    Identifikatoren kan ikke endres etter den er lagret.' - text_caracters_maximum: "{{count}} tegn maksimum." - text_caracters_minimum: "Må være minst {{count}} tegn langt." - text_length_between: "Lengde mellom {{min}} og {{max}} tegn." + text_caracters_maximum: "%{count} tegn maksimum." + text_caracters_minimum: "Må være minst %{count} tegn langt." + text_length_between: "Lengde mellom %{min} og %{max} tegn." text_tracker_no_workflow: Ingen arbeidsflyt definert for denne sakstypen text_unallowed_characters: Ugyldige tegn text_comma_separated: Flere verdier tillat (kommaseparert). text_issues_ref_in_commit_messages: Referering og retting av saker i innsendingsmelding - text_issue_added: "Issue {{id}} has been reported by {{author}}." - text_issue_updated: "Issue {{id}} has been updated by {{author}}." + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wikien og alt innholdet ? - text_issue_category_destroy_question: "Noen saker ({{count}}) er lagt til i denne kategorien. Hva vil du gjøre ?" + text_issue_category_destroy_question: "Noen saker (%{count}) er lagt til i denne kategorien. Hva vil du gjøre ?" text_issue_category_destroy_assignments: Fjern bruk av kategorier text_issue_category_reassign_to: Overfør sakene til denne kategorien text_user_mail_option: "For ikke-valgte prosjekter vil du bare motta varsling om ting du overvåker eller er involveret i (eks. saker du er forfatter av eller er tildelt)." text_no_configuration_data: "Roller, arbeidsflyt, sakstyper og -statuser er ikke konfigurert enda.\nDet anbefales sterkt å laste inn standardkonfigurasjonen. Du vil kunne endre denne etter den er innlastet." text_load_default_configuration: Last inn standardkonfigurasjonen - text_status_changed_by_changeset: "Brukt i endringssett {{value}}." + text_status_changed_by_changeset: "Brukt i endringssett %{value}." text_issues_destroy_confirmation: 'Er du sikker på at du vil slette valgte sak(er) ?' text_select_project_modules: 'Velg moduler du vil aktivere for dette prosjektet:' text_default_administrator_account_changed: Standard administrator-konto er endret text_file_repository_writable: Fil-arkivet er skrivbart text_rmagick_available: RMagick er tilgjengelig (valgfritt) - text_destroy_time_entries_question: "{{hours}} timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ?" + text_destroy_time_entries_question: "%{hours} timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ?" text_destroy_time_entries: Slett førte timer text_assign_time_entries_to_project: Overfør førte timer til prosjektet text_reassign_time_entries: 'Overfør førte timer til denne saken:' - text_user_wrote: "{{value}} skrev:" + text_user_wrote: "%{value} skrev:" default_role_manager: Leder default_role_developer: Utvikler @@ -710,12 +711,12 @@ enumeration_doc_categories: Dokument-kategorier enumeration_activities: Aktiviteter (tidssporing) text_enumeration_category_reassign_to: 'Endre dem til denne verdien:' - text_enumeration_destroy_question: "{{count}} objekter er endret til denne verdien." + text_enumeration_destroy_question: "%{count} objekter er endret til denne verdien." label_incoming_emails: Innkommende e-post label_generate_key: Generer en nøkkel setting_mail_handler_api_enabled: Skru på WS for innkommende e-post setting_mail_handler_api_key: API-nøkkel - 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/email.yml og start programmet på nytt for å skru det på." + 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 @@ -776,12 +777,12 @@ 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" + 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." + 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 @@ -796,21 +797,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -818,14 +819,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -860,9 +861,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -889,12 +890,12 @@ 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_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}}." + 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. @@ -902,7 +903,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -913,8 +914,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/pl.yml.svn-base --- a/config/locales/.svn/text-base/pl.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/pl.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -61,50 +61,50 @@ half_a_minute: "pół minuty" less_than_x_seconds: one: "mniej niż sekundę" - few: "mniej niż {{count}} sekundy" - other: "mniej niż {{count}} sekund" + few: "mniej niż %{count} sekundy" + other: "mniej niż %{count} sekund" x_seconds: one: "sekundę" - few: "{{count}} sekundy" - other: "{{count}} sekund" + few: "%{count} sekundy" + other: "%{count} sekund" less_than_x_minutes: one: "mniej niż minutę" - few: "mniej niż {{count}} minuty" - other: "mniej niż {{count}} minut" + few: "mniej niż %{count} minuty" + other: "mniej niż %{count} minut" x_minutes: one: "minutę" - few: "{{count}} minuty" - other: "{{count}} minut" + few: "%{count} minuty" + other: "%{count} minut" about_x_hours: one: "około godziny" - other: "około {{count}} godzin" + other: "około %{count} godzin" x_days: one: "1 dzień" - other: "{{count}} dni" + other: "%{count} dni" about_x_months: one: "około miesiąca" - other: "około {{count}} miesięcy" + other: "około %{count} miesięcy" x_months: one: "1 miesiąc" - few: "{{count}} miesiące" - other: "{{count}} miesięcy" + few: "%{count} miesiące" + other: "%{count} miesięcy" about_x_years: one: "około roku" - other: "około {{count}} lat" + other: "około %{count} lat" over_x_years: one: "ponad rok" - few: "ponad {{count}} lata" - other: "ponad {{count}} lat" + few: "ponad %{count} lata" + other: "ponad %{count} lat" almost_x_years: one: "prawie rok" - other: "prawie {{count}} lata" + other: "prawie %{count} lata" activerecord: errors: template: header: - one: "{{model}} nie został zachowany z powodu jednego błędu" - other: "{{model}} nie został zachowany z powodu {{count}} błędów" + one: "%{model} nie został zachowany z powodu jednego błędu" + other: "%{model} nie został zachowany z powodu %{count} błędów" body: "Błędy dotyczą następujących pól:" messages: inclusion: "nie znajduje się na liście dopuszczalnych wartości" @@ -114,16 +114,16 @@ accepted: "musi być zaakceptowane" empty: "nie może być puste" blank: "nie może być puste" - too_long: "jest za długie (maksymalnie {{count}} znaków)" - too_short: "jest za krótkie (minimalnie {{count}} znaków)" - wrong_length: "jest nieprawidłowej długości (powinna wynosić {{count}} znaków)" + too_long: "jest za długie (maksymalnie %{count} znaków)" + too_short: "jest za krótkie (minimalnie %{count} znaków)" + wrong_length: "jest nieprawidłowej długości (powinna wynosić %{count} znaków)" taken: "jest już zajęte" not_a_number: "nie jest liczbą" - greater_than: "musi być większe niż {{count}}" - greater_than_or_equal_to: "musi być większe lub równe {{count}}" - equal_to: "musi być równe {{count}}" - less_than: "musi być mniejsze niż {{count}}" - less_than_or_equal_to: "musi być mniejsze lub równe {{count}}" + greater_than: "musi być większe niż %{count}" + greater_than_or_equal_to: "musi być większe lub równe %{count}" + equal_to: "musi być równe %{count}" + less_than: "musi być mniejsze niż %{count}" + less_than_or_equal_to: "musi być mniejsze lub równe %{count}" odd: "musi być nieparzyste" even: "musi być parzyste" greater_than_start_date: "musi być większe niż początkowa data" @@ -203,10 +203,10 @@ enumeration_activities: Działania (śledzenie czasu) enumeration_doc_categories: Kategorie dokumentów enumeration_issue_priorities: Priorytety zagadnień - error_can_t_load_default_data: "Domyślna konfiguracja nie może być załadowana: {{value}}" + error_can_t_load_default_data: "Domyślna konfiguracja nie może być załadowana: %{value}" error_issue_not_found_in_project: 'Zaganienie nie zostało znalezione lub nie należy do tego projektu' error_scm_annotate: "Wpis nie istnieje lub nie można do niego dodawać adnotacji." - error_scm_command_failed: "Wystąpił błąd przy próbie dostępu do repozytorium: {{value}}" + error_scm_command_failed: "Wystąpił błąd przy próbie dostępu do repozytorium: %{value}" error_scm_not_found: "Obiekt lub wersja nie zostały znalezione w repozytorium." field_account: Konto field_activity: Aktywność @@ -277,6 +277,7 @@ field_role: Rola field_searchable: Przeszukiwalne field_spent_on: Data + field_start_date: Start field_start_page: Strona startowa field_status: Status field_subject: Temat @@ -304,21 +305,21 @@ general_text_no: 'nie' general_text_yes: 'tak' gui_validation_error: 1 błąd - gui_validation_error_plural234: "{{count}} błędy" - gui_validation_error_plural5: "{{count}} błędów" - gui_validation_error_plural: "{{count}} błędów" + gui_validation_error_plural234: "%{count} błędy" + gui_validation_error_plural5: "%{count} błędów" + gui_validation_error_plural: "%{count} błędów" label_activity: Aktywność label_add_another_file: Dodaj kolejny plik label_add_note: Dodaj notatkę label_added: dodane - label_added_time_by: "Dodane przez {{author}} {{age}} temu" + label_added_time_by: "Dodane przez %{author} %{age} temu" label_administration: Administracja label_age: Wiek label_ago: dni temu label_all: wszystko label_all_time: cały czas label_all_words: Wszystkie słowa - label_and_its_subprojects: "{{value}} i podprojekty" + label_and_its_subprojects: "%{value} i podprojekty" label_applied_status: Stosowany status label_assigned_to_me_issues: Zagadnienia przypisane do mnie label_associated_revisions: Skojarzone rewizje @@ -333,7 +334,7 @@ label_auth_source_plural: Tryby identyfikacji label_authentication: Identyfikacja label_blocked_by: zablokowane przez - label_blocks: blokady + label_blocks: blokuje label_board: Forum label_board_new: Nowe forum label_board_plural: Fora @@ -353,17 +354,17 @@ label_closed_issues_plural5: zamknięte label_closed_issues_plural: zamknięte label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_comment: Komentarz label_comment_add: Dodaj komentarz label_comment_added: Komentarz dodany @@ -374,7 +375,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_commits_per_author: Zatwierdzenia według autorów label_commits_per_month: Zatwierdzenia według miesięcy label_confirmation: Potwierdzenie @@ -398,18 +399,18 @@ label_diff_inline: w linii label_diff_side_by_side: obok siebie label_disabled: zablokowany - label_display_per_page: "Na stronę: {{value}}" + label_display_per_page: "Na stronę: %{value}" label_document: Dokument label_document_added: Dodano dokument label_document_new: Nowy dokument label_document_plural: Dokumenty - label_download: "{{count}} Pobranie" - label_download_plural234: "{{count}} Pobrania" - label_download_plural5: "{{count}} Pobrań" - label_download_plural: "{{count}} Pobrania" + label_download: "%{count} Pobranie" + label_download_plural234: "%{count} Pobrania" + label_download_plural5: "%{count} Pobrań" + label_download_plural: "%{count} Pobrania" label_downloads_abbr: Pobieranie label_duplicated_by: zduplikowane przez - label_duplicates: duplikaty + label_duplicates: duplikuje label_end_to_end: koniec do końca label_end_to_start: koniec do początku label_enumeration_new: Nowa wartość @@ -418,10 +419,10 @@ label_equals: równa się label_example: Przykład label_export_to: Eksportuj do - label_f_hour: "{{value}} godzina" - label_f_hour_plural: "{{value}} godzin" + label_f_hour: "%{value} godzina" + label_f_hour_plural: "%{value} godzin" label_feed_plural: Ilość RSS - label_feeds_access_key_created_on: "Klucz dostępu RSS stworzony {{value}} dni temu" + label_feeds_access_key_created_on: "Klucz dostępu RSS stworzony %{value} dni temu" label_file_added: Dodano plik label_file_plural: Pliki label_filter_add: Dodaj filtr @@ -458,13 +459,13 @@ label_issue_updated: Uaktualniono zagadnienie label_issue_view_all: Zobacz wszystkie zagadnienia label_issue_watchers: Obserwatorzy - label_issues_by: "Zagadnienia wprowadzone przez {{value}}" + label_issues_by: "Zagadnienia wprowadzone przez %{value}" label_jump_to_a_project: Skocz do projektu... label_language_based: Na podstawie języka - label_last_changes: "ostatnie {{count}} zmian" + label_last_changes: "ostatnie %{count} zmian" label_last_login: Ostatnie połączenie label_last_month: ostatni miesiąc - label_last_n_days: "ostatnie {{count}} dni" + label_last_n_days: "ostatnie %{count} dni" label_last_week: ostatni tydzień label_latest_revision: Najnowsza rewizja label_latest_revision_plural: Najnowsze rewizje @@ -485,10 +486,10 @@ label_message_plural: Wiadomości label_message_posted: Dodano wiadomość label_min_max_length: Min - Maks długość - label_modification: "{{count}} modyfikacja" - label_modification_plural234: "{{count}} modyfikacje" - label_modification_plural5: "{{count}} modyfikacji" - label_modification_plural: "{{count}} modyfikacje" + label_modification: "%{count} modyfikacja" + label_modification_plural234: "%{count} modyfikacje" + label_modification_plural5: "%{count} modyfikacji" + label_modification_plural: "%{count} modyfikacje" label_modified: zmodyfikowane label_module_plural: Moduły label_month: Miesiąc @@ -543,7 +544,7 @@ label_x_projects: zero: brak projektów one: jeden projekt - other: "{{count}} projektów" + other: "%{count} projektów" label_public_projects: Projekty publiczne label_query: Kwerenda label_query_new: Nowa kwerenda @@ -572,7 +573,7 @@ label_roadmap: Mapa label_roadmap_due_in: W czasie label_roadmap_no_issues: Brak zagadnień do tej wersji - label_roadmap_overdue: "{{value}} spóźnienia" + label_roadmap_overdue: "%{value} spóźnienia" label_role: Rola label_role_and_permissions: Role i Uprawnienia label_role_new: Nowa rola @@ -584,7 +585,7 @@ label_send_test_email: Wyślij próbny email label_settings: Ustawienia label_show_completed_versions: Pokaż kompletne wersje - label_sort_by: "Sortuj po {{value}}" + label_sort_by: "Sortuj po %{value}" label_sort_higher: Do góry label_sort_highest: Przesuń na górę label_sort_lower: Do dołu @@ -608,7 +609,7 @@ label_tracker: Typ zagadnienia label_tracker_new: Nowy typ zagadnienia label_tracker_plural: Typy zagadnień - label_updated_time: "Zaktualizowane {{value}} temu" + label_updated_time: "Zaktualizowane %{value} temu" label_used_by: Używane przez label_user: Użytkownik label_user_mail_no_self_notified: "Nie chcę powiadomień o zmianach, które sam wprowadzam." @@ -631,16 +632,16 @@ label_workflow: Przepływ label_year: Rok label_yesterday: wczoraj - mail_body_account_activation_request: "Zarejestrowano nowego użytkownika: ({{value}}). Konto oczekuje na twoje zatwierdzenie:" + mail_body_account_activation_request: "Zarejestrowano nowego użytkownika: (%{value}). Konto oczekuje na twoje zatwierdzenie:" mail_body_account_information: Twoje konto - mail_body_account_information_external: "Możesz użyć twojego {{value}} konta do zalogowania." + mail_body_account_information_external: "Możesz użyć twojego %{value} konta do zalogowania." mail_body_lost_password: 'W celu zmiany swojego hasła użyj poniższego odnośnika:' mail_body_register: 'W celu aktywacji Twojego konta, użyj poniższego odnośnika:' - mail_body_reminder: "Wykaz przypisanych do Ciebie zagadnień, których termin wypada w ciągu następnych {{count}} dni" - mail_subject_account_activation_request: "Zapytanie aktywacyjne konta {{value}}" - mail_subject_lost_password: "Twoje hasło do {{value}}" - mail_subject_register: "Aktywacja konta w {{value}}" - mail_subject_reminder: "Uwaga na terminy, masz zagadnienia do obsłużenia w ciągu następnych {{count}} dni! ({{days}})" + mail_body_reminder: "Wykaz przypisanych do Ciebie zagadnień, których termin wypada w ciągu następnych %{count} dni" + mail_subject_account_activation_request: "Zapytanie aktywacyjne konta %{value}" + mail_subject_lost_password: "Twoje hasło do %{value}" + mail_subject_register: "Aktywacja konta w %{value}" + mail_subject_reminder: "Uwaga na terminy, masz zagadnienia do obsłużenia w ciągu następnych %{count} dni! (%{days})" notice_account_activated: Twoje konto zostało aktywowane. Możesz się zalogować. notice_account_invalid_creditentials: Zły użytkownik lub hasło notice_account_lost_email_sent: Email z instrukcjami zmiany hasła został wysłany do Ciebie. @@ -652,9 +653,9 @@ notice_account_wrong_password: Złe hasło notice_can_t_change_password: To konto ma zewnętrzne źródło identyfikacji. Nie możesz zmienić hasła. notice_default_data_loaded: Domyślna konfiguracja została pomyślnie załadowana. - notice_email_error: "Wystąpił błąd w trakcie wysyłania maila ({{value}})" - notice_email_sent: "Email został wysłany do {{value}}" - notice_failed_to_save_issues: "Błąd podczas zapisu zagadnień {{count}} z {{total}} zaznaczonych: {{ids}}." + notice_email_error: "Wystąpił błąd w trakcie wysyłania maila (%{value})" + notice_email_sent: "Email został wysłany do %{value}" + notice_failed_to_save_issues: "Błąd podczas zapisu zagadnień %{count} z %{total} zaznaczonych: %{ids}." notice_feeds_access_key_reseted: Twój klucz dostępu RSS został zrestetowany. notice_file_not_found: Strona do której próbujesz się dostać nie istnieje lub została usunięta. notice_locking_conflict: Dane poprawione przez innego użytkownika. @@ -764,24 +765,24 @@ status_registered: zarejestrowany text_are_you_sure: Jesteś pewien ? text_assign_time_entries_to_project: Przypisz wpisy dziennika do projektu - text_caracters_maximum: "{{count}} znaków maksymalnie." - text_caracters_minimum: "Musi być nie krótsze niż {{count}} znaków." + text_caracters_maximum: "%{count} znaków maksymalnie." + text_caracters_minimum: "Musi być nie krótsze niż %{count} znaków." text_comma_separated: Wielokrotne wartości dozwolone (rozdzielone przecinkami). text_default_administrator_account_changed: Zmieniono domyślne hasło administratora text_destroy_time_entries: Usuń wpisy dziennika - text_destroy_time_entries_question: Przepracowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić? - text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml a następnie zrestartuj aplikację i uaktywnij to." + text_destroy_time_entries_question: Przepracowano %{hours} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić? + text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/configuration.yml a następnie zrestartuj aplikację i uaktywnij to." text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:' - text_enumeration_destroy_question: "{{count}} obiektów jest przypisana do tej wartości." + text_enumeration_destroy_question: "%{count} obiektów jest przypisana do tej wartości." text_file_repository_writable: Zapisywalne repozytorium plików - text_issue_added: "Zagadnienie {{id}} zostało wprowadzone (by {{author}})." + text_issue_added: "Zagadnienie %{id} zostało wprowadzone (by %{author})." text_issue_category_destroy_assignments: Usuń przydziały kategorii - text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz zrobić?" + text_issue_category_destroy_question: "Zagadnienia (%{count}) są przypisane do tej kategorii. Co chcesz zrobić?" text_issue_category_reassign_to: Przydziel zagadnienie do tej kategorii - text_issue_updated: "Zagadnienie {{id}} zostało zaktualizowane (by {{author}})." + text_issue_updated: "Zagadnienie %{id} zostało zaktualizowane (by %{author})." text_issues_destroy_confirmation: 'Czy jestes pewien, że chcesz usunąć wskazane zagadnienia?' text_issues_ref_in_commit_messages: Odwołania do zagadnień w komentarzach zatwierdzeń - text_length_between: "Długość pomiędzy {{min}} i {{max}} znaków." + text_length_between: "Długość pomiędzy %{min} i %{max} znaków." text_load_default_configuration: Załaduj domyślną konfigurację text_min_max_length_info: 0 oznacza brak restrykcji text_no_configuration_data: "Role użytkowników, typy zagadnień, statusy zagadnień oraz przepływ pracy nie zostały jeszcze skonfigurowane.\nJest wysoce rekomendowane by załadować domyślną konfigurację. Po załadowaniu będzie możliwość edycji tych danych." @@ -793,24 +794,24 @@ text_rmagick_available: RMagick dostępne (opcjonalnie) text_select_mail_notifications: Zaznacz czynności przy których użytkownik powinien być powiadomiony mailem. text_select_project_modules: 'Wybierz moduły do aktywacji w tym projekcie:' - text_status_changed_by_changeset: "Zastosowane w zmianach {{value}}." - text_subprojects_destroy_warning: "Podprojekt(y): {{value}} zostaną także usunięte." + text_status_changed_by_changeset: "Zastosowane w zmianach %{value}." + text_subprojects_destroy_warning: "Podprojekt(y): %{value} zostaną także usunięte." text_tip_issue_begin_day: zadanie zaczynające się dzisiaj text_tip_issue_begin_end_day: zadanie zaczynające i kończące się dzisiaj text_tip_issue_end_day: zadanie kończące się dzisiaj text_tracker_no_workflow: Brak przepływu zdefiniowanego dla tego typu zagadnienia text_unallowed_characters: Niedozwolone znaki text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnień, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)." - text_user_wrote: "{{value}} napisał:" + text_user_wrote: "%{value} napisał:" text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i całą jego zawartość ? text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu - label_user_activity: "Aktywność: {{value}}" - label_updated_time_by: "Uaktualnione przez {{author}} {{age}} temu" + label_user_activity: "Aktywność: %{value}" + label_updated_time_by: "Uaktualnione przez %{author} %{age} temu" text_diff_truncated: '... Ten plik różnic został przycięty ponieważ jest zbyt długi.' setting_diff_max_lines_displayed: Maksymalna liczba linii różnicy do pokazania text_plugin_assets_writable: Zapisywalny katalog zasobów wtyczek - warning_attachments_not_saved: "{{count}} załącznik(ów) nie zostało zapisanych." + warning_attachments_not_saved: "%{count} załącznik(ów) nie zostało zapisanych." field_editable: Edytowalne label_display: Wygląd button_create_and_continue: Stwórz i dodaj kolejne @@ -825,21 +826,21 @@ label_descending: Malejąco label_sort: Sortuj label_ascending: Rosnąco - label_date_from_to: Od {{start}} do {{end}} + label_date_from_to: Od %{start} do %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Ta strona posiada podstrony ({{descendants}}). Co chcesz zrobić? + text_wiki_page_destroy_question: Ta strona posiada podstrony (%{descendants}). Co chcesz zrobić? text_wiki_page_reassign_children: Podepnij je do strony nadrzędnej względem usuwanej text_wiki_page_nullify_children: Przesuń je na szczyt hierarchii text_wiki_page_destroy_children: Usuń wszystkie podstrony setting_password_min_length: Minimalna długość hasła field_group_by: Grupuj wyniki wg - mail_subject_wiki_content_updated: "Strona wiki '{{id}}' została uaktualniona" + mail_subject_wiki_content_updated: "Strona wiki '%{id}' została uaktualniona" label_wiki_content_added: Dodano stronę wiki - mail_subject_wiki_content_added: "Strona wiki '{{id}}' została dodana" - mail_body_wiki_content_added: Strona wiki '{{id}}' została dodana przez {{author}}. + mail_subject_wiki_content_added: "Strona wiki '%{id}' została dodana" + mail_body_wiki_content_added: Strona wiki '%{id}' została dodana przez %{author}. label_wiki_content_updated: Uaktualniono stronę wiki - mail_body_wiki_content_updated: Strona wiki '{{id}}' została uaktualniona przez {{author}}. + mail_body_wiki_content_updated: Strona wiki '%{id}' została uaktualniona przez %{author}. permission_add_project: Tworzenie projektu setting_new_project_user_role_id: Rola nadawana twórcom projektów, którzy nie posiadają uprawnień administatora label_view_all_revisions: Pokaż wszystkie rewizje @@ -847,14 +848,14 @@ label_branch: Gałąź error_no_tracker_in_project: Projekt nie posiada powiązanych typów zagadnień. Sprawdź ustawienia projektu. error_no_default_issue_status: Nie zdefiniowano domyślnego statusu zagadnień. Sprawdź konfigurację (Przejdź do "Administracja -> Statusy zagadnień). - text_journal_changed: "Zmieniono {{label}} z {{old}} na {{new}}" - text_journal_set_to: "Ustawiono {{label}} na {{value}}" - text_journal_deleted: "Usunięto {{label}} ({{old}})" + text_journal_changed: "Zmieniono %{label} z %{old} na %{new}" + text_journal_set_to: "Ustawiono %{label} na %{value}" + text_journal_deleted: "Usunięto %{label} (%{old})" label_group_plural: Grupy label_group: Grupa label_group_new: Nowa grupa label_time_entry_plural: Przepracowany czas - text_journal_added: "Dodano {{label}} {{value}}" + text_journal_added: "Dodano %{label} %{value}" field_active: Aktywne enumeration_system_activity: Aktywność Systemowa button_copy_and_follow: Kopiuj i przejdź do kopii zagadnienia @@ -868,7 +869,7 @@ error_workflow_copy_target: Proszę wybrać docelowe typ(y) zagadnień i rolę(e) field_sharing: Współdzielenie label_api_access_key: Klucz dostępu do API - label_api_access_key_created_on: Klucz dostępu do API został utworzony {{value}} temu + label_api_access_key_created_on: Klucz dostępu do API został utworzony %{value} temu label_close_versions: Zamknij ukończone wersje label_copy_same_as_target: Jak cel label_copy_source: Źródło @@ -877,7 +878,7 @@ label_feeds_access_key: Klucz dostępu do RSS label_missing_api_access_key: Brakuje klucza dostępu do API label_missing_feeds_access_key: Brakuje klucza dostępu do RSS - label_revision_id: Rewizja {{value}} + label_revision_id: Rewizja %{value} label_subproject_new: Nowy podprojekt label_update_issue_done_ratios: Uaktualnij % wykonania label_user_anonymous: Anonimowy @@ -919,12 +920,12 @@ label_subtask_plural: Podzagadnienia label_project_copy_notifications: Wyślij powiadomienia mailowe przy kopiowaniu projektu error_can_not_delete_custom_field: Nie można usunąć tego pola - error_unable_to_connect: Nie można połączyć ({{value}}) + error_unable_to_connect: Nie można połączyć (%{value}) error_can_not_remove_role: Ta rola przypisana jest niektórym użytkownikom i nie może zostać usunięta. error_can_not_delete_tracker: Ten typ przypisany jest do części zagadnień i nie może zostać usunięty. field_principal: Przełożony label_my_page_block: Elementy - notice_failed_to_save_members: "Nie można zapisać uczestników: {{errors}}." + notice_failed_to_save_members: "Nie można zapisać uczestników: %{errors}." text_zoom_out: Zmniejsz czcionkę text_zoom_in: Powiększ czcionkę notice_unable_delete_time_entry: Nie można usunąć wpisu z dziennika. @@ -932,7 +933,7 @@ field_time_entries: Dziennik project_module_gantt: Diagram Gantta project_module_calendar: Kalendarz - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -943,8 +944,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/pt-BR.yml.svn-base --- a/config/locales/.svn/text-base/pt-BR.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/pt-BR.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -33,46 +33,46 @@ half_a_minute: 'meio minuto' less_than_x_seconds: one: 'menos de 1 segundo' - other: 'menos de {{count}} segundos' + other: 'menos de %{count} segundos' x_seconds: one: '1 segundo' - other: '{{count}} segundos' + other: '%{count} segundos' less_than_x_minutes: one: 'menos de um minuto' - other: 'menos de {{count}} minutos' + other: 'menos de %{count} minutos' x_minutes: one: '1 minuto' - other: '{{count}} minutos' + other: '%{count} minutos' about_x_hours: one: 'aproximadamente 1 hora' - other: 'aproximadamente {{count}} horas' + other: 'aproximadamente %{count} horas' x_days: one: '1 dia' - other: '{{count}} dias' + other: '%{count} dias' about_x_months: one: 'aproximadamente 1 mês' - other: 'aproximadamente {{count}} meses' + other: 'aproximadamente %{count} meses' x_months: one: '1 mês' - other: '{{count}} meses' + other: '%{count} meses' about_x_years: one: 'aproximadamente 1 ano' - other: 'aproximadamente {{count}} anos' + other: 'aproximadamente %{count} anos' over_x_years: one: 'mais de 1 ano' - other: 'mais de {{count}} anos' + other: 'mais de %{count} anos' almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" # numeros number: @@ -118,7 +118,7 @@ template: header: one: "model não pode ser salvo: 1 erro" - other: "model não pode ser salvo: {{count}} erros." + other: "model não pode ser salvo: %{count} erros." body: "Por favor, verifique os seguintes campos:" messages: inclusion: "não está incluso na lista" @@ -128,16 +128,16 @@ accepted: "precisa ser aceito" empty: "não pode ficar vazio" blank: "não pode ficar vazio" - too_long: "é muito longo (máximo: {{count}} caracteres)" - too_short: "é muito curto (mínimon: {{count}} caracteres)" - wrong_length: "deve ter {{count}} caracteres" + too_long: "é muito longo (máximo: %{count} caracteres)" + too_short: "é muito curto (mínimon: %{count} caracteres)" + wrong_length: "deve ter %{count} caracteres" taken: "não está disponível" not_a_number: "não é um número" - greater_than: "precisa ser maior do que {{count}}" - greater_than_or_equal_to: "precisa ser maior ou igual a {{count}}" - equal_to: "precisa ser igual a {{count}}" - less_than: "precisa ser menor do que {{count}}" - less_than_or_equal_to: "precisa ser menor ou igual a {{count}}" + greater_than: "precisa ser maior do que %{count}" + greater_than_or_equal_to: "precisa ser maior ou igual a %{count}" + equal_to: "precisa ser igual a %{count}" + less_than: "precisa ser menor do que %{count}" + less_than_or_equal_to: "precisa ser menor ou igual a %{count}" odd: "precisa ser ímpar" even: "precisa ser par" greater_than_start_date: "deve ser maior que a data inicial" @@ -174,35 +174,35 @@ notice_file_not_found: A página que você está tentando acessar não existe ou foi excluída. notice_locking_conflict: Os dados foram atualizados por outro usuário. notice_not_authorized: Você não está autorizado a acessar esta página. - notice_email_sent: "Um e-mail foi enviado para {{value}}" - notice_email_error: "Ocorreu um erro ao enviar o e-mail ({{value}})" + notice_email_sent: "Um e-mail foi enviado para %{value}" + notice_email_error: "Ocorreu um erro ao enviar o e-mail (%{value})" notice_feeds_access_key_reseted: Sua chave RSS foi reconfigurada. - notice_failed_to_save_issues: "Problema ao salvar {{count}} tarefa(s) de {{total}} selecionadas: {{ids}}." + notice_failed_to_save_issues: "Problema ao salvar %{count} tarefa(s) de %{total} selecionadas: %{ids}." notice_no_issue_selected: "Nenhuma tarefa selecionada! Por favor, marque as tarefas que você deseja editar." notice_account_pending: "Sua conta foi criada e está aguardando aprovação do administrador." notice_default_data_loaded: Configuração padrão carregada com sucesso. - error_can_t_load_default_data: "A configuração padrão não pode ser carregada: {{value}}" + error_can_t_load_default_data: "A configuração padrão não pode ser carregada: %{value}" error_scm_not_found: "A entrada e/ou a revisão não existe no repositório." - error_scm_command_failed: "Ocorreu um erro ao tentar acessar o repositório: {{value}}" + error_scm_command_failed: "Ocorreu um erro ao tentar acessar o repositório: %{value}" error_scm_annotate: "Esta entrada não existe ou não pode ser anotada." error_issue_not_found_in_project: 'A tarefa não foi encontrada ou não pertence a este projeto' error_no_tracker_in_project: 'Não há um tipo de tarefa associado a este projeto. Favor verificar as configurações do projeto.' error_no_default_issue_status: 'A situação padrão para tarefa não está definida. Favor verificar sua configuração (Vá em "Administração -> Situação da tarefa").' - mail_subject_lost_password: "Sua senha do {{value}}." + mail_subject_lost_password: "Sua senha do %{value}." mail_body_lost_password: 'Para mudar sua senha, clique no link abaixo:' - mail_subject_register: "Ativação de conta do {{value}}." + mail_subject_register: "Ativação de conta do %{value}." mail_body_register: 'Para ativar sua conta, clique no link abaixo:' - mail_body_account_information_external: "Você pode usar sua conta do {{value}} para entrar." + mail_body_account_information_external: "Você pode usar sua conta do %{value} para entrar." mail_body_account_information: Informações sobre sua conta - mail_subject_account_activation_request: "{{value}} - Requisição de ativação de conta" - mail_body_account_activation_request: "Um novo usuário ({{value}}) se registrou. A conta está aguardando sua aprovação:" - mail_subject_reminder: "{{count}} tarefa(s) com data prevista para os próximos {{days}} dias" - mail_body_reminder: "{{count}} tarefa(s) para você com data prevista para os próximos {{days}} dias:" + mail_subject_account_activation_request: "%{value} - Requisição de ativação de conta" + mail_body_account_activation_request: "Um novo usuário (%{value}) se registrou. A conta está aguardando sua aprovação:" + mail_subject_reminder: "%{count} tarefa(s) com data prevista para os próximos %{days} dias" + mail_body_reminder: "%{count} tarefa(s) para você com data prevista para os próximos %{days} dias:" gui_validation_error: 1 erro - gui_validation_error_plural: "{{count}} erros" + gui_validation_error_plural: "%{count} erros" field_name: Nome field_description: Descrição @@ -264,6 +264,7 @@ field_attr_lastname: Atributo para sobrenome 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_auth_source: Modo de autenticação field_hide_mail: Ocultar meu e-mail @@ -343,14 +344,14 @@ label_x_projects: zero: nenhum projeto one: 1 projeto - other: "{{count}} projetos" + other: "%{count} projetos" label_project_all: Todos os projetos label_project_latest: Últimos projetos label_issue: Tarefa label_issue_new: Nova tarefa label_issue_plural: Tarefas label_issue_view_all: Ver todas as tarefas - label_issues_by: "Tarefas por {{value}}" + label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa atualizada label_document: Documento @@ -406,7 +407,7 @@ label_auth_source_new: Novo modo de autenticação label_auth_source_plural: Modos de autenticação label_subproject_plural: Sub-projetos - label_and_its_subprojects: "{{value}} e seus sub-projetos" + label_and_its_subprojects: "%{value} e seus sub-projetos" label_min_max_length: Tamanho mín-máx label_list: Lista label_date: Data @@ -417,8 +418,8 @@ label_text: Texto longo label_attribute: Atributo label_attribute_plural: Atributos - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Nenhuma informação disponível label_change_status: Alterar situação label_history: Histórico @@ -449,17 +450,17 @@ label_closed_issues: Fechada label_closed_issues_plural: Fechadas label_x_open_issues_abbr_on_total: - zero: 0 aberta / {{total}} - one: 1 aberta / {{total}} - other: "{{count}} abertas / {{total}}" + zero: 0 aberta / %{total} + one: 1 aberta / %{total} + other: "%{count} abertas / %{total}" label_x_open_issues_abbr: zero: 0 aberta one: 1 aberta - other: "{{count}} abertas" + other: "%{count} abertas" label_x_closed_issues_abbr: zero: 0 fechada one: 1 fechada - other: "{{count}} fechadas" + other: "%{count} fechadas" label_total: Total label_permissions: Permissões label_current_status: Situação atual @@ -477,7 +478,7 @@ label_months_from: meses a partir de label_gantt: Gantt label_internal: Interno - label_last_changes: "últimas {{count}} alterações" + label_last_changes: "últimas %{count} alterações" label_change_view_all: Mostrar todas as alterações label_personalize_page: Personalizar esta página label_comment: Comentário @@ -485,7 +486,7 @@ label_x_comments: zero: nenhum comentário one: 1 comentário - other: "{{count}} comentários" + other: "%{count} comentários" label_comment_add: Adicionar comentário label_comment_added: Comentário adicionado label_comment_delete: Excluir comentário @@ -504,7 +505,7 @@ label_yesterday: ontem label_this_week: esta semana label_last_week: última semana - label_last_n_days: "últimos {{count}} dias" + label_last_n_days: "últimos %{count} dias" label_this_month: este mês label_last_month: último mês label_this_year: este ano @@ -518,8 +519,8 @@ label_repository: Repositório label_repository_plural: Repositórios label_browse: Procurar - label_modification: "{{count}} alteração" - label_modification_plural: "{{count}} alterações" + label_modification: "%{count} alteração" + label_modification_plural: "%{count} alterações" label_revision: Revisão label_revision_plural: Revisões label_associated_revisions: Revisões associadas @@ -535,8 +536,8 @@ label_sort_lower: Mover para baixo label_sort_lowest: Mover para o fim label_roadmap: Planejamento - label_roadmap_due_in: "Previsto para {{value}}" - label_roadmap_overdue: "{{value}} atrasado" + label_roadmap_due_in: "Previsto para %{value}" + label_roadmap_overdue: "%{value} atrasado" label_roadmap_no_issues: Sem tarefas para esta versão label_search: Busca label_result_plural: Resultados @@ -554,8 +555,8 @@ label_changes_details: Detalhes de todas as alterações label_issue_tracking: Tarefas label_spent_time: Tempo gasto - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_time_tracking: Controle de horas label_change_plural: Alterações label_statistics: Estatísticas @@ -604,12 +605,12 @@ label_date_from: De label_date_to: Para label_language_based: Com base no idioma do usuário - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_send_test_email: Enviar um e-mail de teste - label_feeds_access_key_created_on: "chave de acesso RSS criada {{value}} atrás" + label_feeds_access_key_created_on: "chave de acesso RSS criada %{value} atrás" label_module_plural: Módulos - label_added_time_by: "Adicionado por {{author}} {{age}} atrás" - label_updated_time: "Atualizado {{value}} atrás" + label_added_time_by: "Adicionado por %{author} %{age} atrás" + label_updated_time: "Atualizado %{value} atrás" label_jump_to_a_project: Ir para o projeto... label_file_plural: Arquivos label_changeset_plural: Changesets @@ -625,7 +626,7 @@ label_registration_activation_by_email: ativação de conta por e-mail label_registration_manual_activation: ativação manual de conta label_registration_automatic_activation: ativação automática de conta - label_display_per_page: "Por página: {{value}}" + label_display_per_page: "Por página: %{value}" label_age: Idade label_change_properties: Alterar propriedades label_general: Geral @@ -691,43 +692,43 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 = sem restrição text_project_destroy_confirmation: Você tem certeza que deseja excluir este projeto e todos os dados relacionados? - text_subprojects_destroy_warning: "Seu(s) subprojeto(s): {{value}} também serão excluídos." + text_subprojects_destroy_warning: "Seu(s) subprojeto(s): %{value} também serão excluídos." text_workflow_edit: Selecione um papel e um tipo de tarefa para editar o fluxo de trabalho text_are_you_sure: Você tem certeza? text_tip_issue_begin_day: tarefa inicia neste dia text_tip_issue_end_day: tarefa termina neste dia text_tip_issue_begin_end_day: tarefa inicia e termina neste dia text_project_identifier_info: 'Letras minúsculas (a-z), números e hífens permitidos.
    Uma vez salvo, o identificador não poderá ser alterado.' - text_caracters_maximum: "máximo {{count}} caracteres" - text_caracters_minimum: "deve ter ao menos {{count}} caracteres." - text_length_between: "deve ter entre {{min}} e {{max}} caracteres." + text_caracters_maximum: "máximo %{count} caracteres" + text_caracters_minimum: "deve ter ao menos %{count} caracteres." + text_length_between: "deve ter entre %{min} e %{max} caracteres." text_tracker_no_workflow: Sem fluxo de trabalho definido para este tipo. text_unallowed_characters: Caracteres não permitidos text_comma_separated: Múltiplos valores são permitidos (separados por vírgula). text_issues_ref_in_commit_messages: Referenciando tarefas nas mensagens de commit - text_issue_added: "Tarefa {{id}} incluída (por {{author}})." - text_issue_updated: "Tarefa {{id}} alterada (por {{author}})." + text_issue_added: "Tarefa %{id} incluída (por %{author})." + text_issue_updated: "Tarefa %{id} alterada (por %{author})." text_wiki_destroy_confirmation: Você tem certeza que deseja excluir este wiki e TODO o seu conteúdo? - text_issue_category_destroy_question: "Algumas tarefas ({{count}}) estão atribuídas a esta categoria. O que você deseja fazer?" + text_issue_category_destroy_question: "Algumas tarefas (%{count}) estão atribuídas a esta categoria. O que você deseja fazer?" text_issue_category_destroy_assignments: Remover atribuições da categoria text_issue_category_reassign_to: Redefinir tarefas para esta categoria text_user_mail_option: "Para projetos (não selecionados), você somente receberá notificações sobre o que você está observando ou está envolvido (ex. tarefas das quais você é o autor ou que estão atribuídas a você)" text_no_configuration_data: "Os Papéis, tipos de tarefas, situação de tarefas e fluxos de trabalho não foram configurados ainda.\nÉ altamente recomendado carregar as configurações padrão. Você poderá modificar estas configurações assim que carregadas." text_load_default_configuration: Carregar a configuração padrão - text_status_changed_by_changeset: "Aplicado no changeset {{value}}." + text_status_changed_by_changeset: "Aplicado no changeset %{value}." text_issues_destroy_confirmation: 'Você tem certeza que deseja excluir a(s) tarefa(s) selecionada(s)?' text_select_project_modules: 'Selecione módulos para habilitar para este projeto:' text_default_administrator_account_changed: Conta padrão do administrador alterada text_file_repository_writable: Repositório com permissão de escrita text_rmagick_available: RMagick disponível (opcional) - text_destroy_time_entries_question: "{{hours}} horas de trabalho foram registradas nas tarefas que você está excluindo. O que você deseja fazer?" + text_destroy_time_entries_question: "%{hours} horas de trabalho foram registradas nas tarefas que você está excluindo. O que você deseja fazer?" text_destroy_time_entries: Excluir horas de trabalho text_assign_time_entries_to_project: Atribuir estas horas de trabalho para outro projeto text_reassign_time_entries: 'Atribuir horas reportadas para esta tarefa:' - text_user_wrote: "{{value}} escreveu:" - text_enumeration_destroy_question: "{{count}} objetos estão atribuídos a este valor." + text_user_wrote: "%{value} escreveu:" + text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:' - text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/email.yml e reinicie a aplicação para ativá-las." + text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/configuration.yml e reinicie a aplicação para ativá-las." default_role_manager: Gerente default_role_developer: Desenvolvedor @@ -809,12 +810,12 @@ text_repository_usernames_mapping: "Seleciona ou atualiza os usuários do Redmine mapeando para cada usuário encontrado no log do repositório.\nUsuários com o mesmo login ou e-mail no Redmine e no repositório serão mapeados automaticamente." permission_edit_own_messages: Editar próprias mensagens permission_delete_own_messages: Excluir próprias mensagens - label_user_activity: "Atividade de {{value}}" - label_updated_time_by: "Atualizado por {{author}} há {{age}}" + label_user_activity: "Atividade de %{value}" + label_updated_time_by: "Atualizado por %{author} há %{age}" text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser exibido.' setting_diff_max_lines_displayed: Número máximo de linhas exibidas no diff text_plugin_assets_writable: Diretório de plugins gravável - warning_attachments_not_saved: "{{count}} arquivo(s) não puderam ser salvo(s)." + warning_attachments_not_saved: "%{count} arquivo(s) não puderam ser salvo(s)." button_create_and_continue: Criar e continuar text_custom_field_possible_values_info: 'Uma linha para cada valor' label_display: Exibição @@ -829,34 +830,34 @@ label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente - label_date_from_to: De {{start}} até {{end}} + label_date_from_to: De %{start} até %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Esta página tem {{descendants}} página(s) filha(s) e descendente(s). O que você quer fazer? + text_wiki_page_destroy_question: Esta página tem %{descendants} página(s) filha(s) e descendente(s). O que você quer fazer? text_wiki_page_reassign_children: Reatribuir páginas filhas para esta página pai text_wiki_page_nullify_children: Manter as páginas filhas como páginas raízes text_wiki_page_destroy_children: Excluir páginas filhas e todas suas descendentes setting_password_min_length: Comprimento mínimo para senhas field_group_by: Agrupar por - mail_subject_wiki_content_updated: "A página wiki '{{id}}' foi atualizada" + mail_subject_wiki_content_updated: "A página wiki '%{id}' foi atualizada" label_wiki_content_added: Página wiki adicionada - mail_subject_wiki_content_added: "A página wiki '{{id}}' foi adicionada" - mail_body_wiki_content_added: A página wiki '{{id}}' foi adicionada por {{author}}. + mail_subject_wiki_content_added: "A página wiki '%{id}' foi adicionada" + mail_body_wiki_content_added: A página wiki '%{id}' foi adicionada por %{author}. label_wiki_content_updated: Página wiki atualizada - mail_body_wiki_content_updated: A página wiki '{{id}}' foi atualizada por {{author}}. + mail_body_wiki_content_updated: A página wiki '%{id}' foi atualizada por %{author}. permission_add_project: Criar projeto setting_new_project_user_role_id: Papel atribuído a um usuário não-administrador que cria um projeto label_view_all_revisions: Ver todas as revisões label_tag: Etiqueta label_branch: Ramo - text_journal_changed: "{{label}} alterado de {{old}} para {{new}}" - text_journal_set_to: "{{label}} ajustado para {{value}}" - text_journal_deleted: "{{label}} excluído ({{old}})" + text_journal_changed: "%{label} alterado de %{old} para %{new}" + text_journal_set_to: "%{label} ajustado para %{value}" + text_journal_deleted: "%{label} excluído (%{old})" label_group_plural: Grupos label_group: Grupo label_group_new: Novo grupo label_time_entry_plural: Tempos gastos - text_journal_added: "{{label}} {{value}} adicionado" + text_journal_added: "%{label} %{value} adicionado" field_active: Ativo enumeration_system_activity: Atividade do sistema permission_delete_issue_watchers: Excluir observadores @@ -892,10 +893,10 @@ field_watcher: Observador permission_view_issues: Ver tarefas label_display_used_statuses_only: Somente exibir situações que são usadas por este tipo de tarefa - label_revision_id: Revisão {{value}} + label_revision_id: Revisão %{value} label_api_access_key: Chave de acesso a API button_show: Exibir - label_api_access_key_created_on: Chave de acesso a API criado a {{value}} atrás + label_api_access_key_created_on: Chave de acesso a API criado a %{value} atrás label_feeds_access_key: Chave de acesso ao RSS notice_api_access_key_reseted: Sua chave de acesso a API foi redefinida. setting_rest_api_enabled: Habilitar REST web service @@ -922,12 +923,12 @@ label_subtask_plural: Subtarefas label_project_copy_notifications: Enviar notificações por e-mail ao copiar projeto error_can_not_delete_custom_field: Não foi possível excluir o campo personalizado - error_unable_to_connect: Não foi possível conectar ({{value}}) + error_unable_to_connect: Não foi possível conectar (%{value}) error_can_not_remove_role: Este papel está em uso e não pode ser excluído. error_can_not_delete_tracker: Este tipo de tarefa está atribuído a alguma(s) tarefa(s) e não pode ser excluído. field_principal: Principal label_my_page_block: Meu bloco de página - notice_failed_to_save_members: "Falha ao gravar membro(s): {{errors}}." + notice_failed_to_save_members: "Falha ao gravar membro(s): %{errors}." text_zoom_out: Afastar zoom text_zoom_in: Aproximar zoom notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas. @@ -935,7 +936,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendário - button_edit_associated_wikipage: "Editar página wiki relacionada: {{page_title}}" + button_edit_associated_wikipage: "Editar página wiki relacionada: %{page_title}" text_are_you_sure_with_children: Excluir a tarefa e suas subtarefas? field_text: Campo de texto label_user_mail_option_only_owner: Somente para as coisas que eu criei @@ -946,8 +947,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/pt.yml.svn-base --- a/config/locales/.svn/text-base/pt.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/pt.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -33,37 +33,37 @@ half_a_minute: "meio minuto" less_than_x_seconds: one: "menos de 1 segundo" - other: "menos de {{count}} segundos" + other: "menos de %{count} segundos" x_seconds: one: "1 segundo" - other: "{{count}} segundos" + other: "%{count} segundos" less_than_x_minutes: one: "menos de um minuto" - other: "menos de {{count}} minutos" + other: "menos de %{count} minutos" x_minutes: one: "1 minuto" - other: "{{count}} minutos" + other: "%{count} minutos" about_x_hours: one: "aproximadamente 1 hora" - other: "aproximadamente {{count}} horas" + other: "aproximadamente %{count} horas" x_days: one: "1 dia" - other: "{{count}} dias" + other: "%{count} dias" about_x_months: one: "aproximadamente 1 mês" - other: "aproximadamente {{count}} meses" + other: "aproximadamente %{count} meses" x_months: one: "1 mês" - other: "{{count}} meses" + other: "%{count} meses" about_x_years: one: "aproximadamente 1 ano" - other: "aproximadamente {{count}} anos" + other: "aproximadamente %{count} anos" over_x_years: one: "mais de 1 ano" - other: "mais de {{count}} anos" + other: "mais de %{count} anos" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -102,8 +102,8 @@ errors: template: header: - one: "Não foi possível guardar {{model}}: 1 erro" - other: "Não foi possível guardar {{model}}: {{count}} erros" + one: "Não foi possível guardar %{model}: 1 erro" + other: "Não foi possível guardar %{model}: %{count} erros" body: "Por favor, verifique os seguintes campos:" messages: inclusion: "não está incluído na lista" @@ -113,16 +113,16 @@ accepted: "precisa de ser aceite" empty: "não pode estar em branco" blank: "não pode estar em branco" - too_long: "tem demasiados caracteres (máximo: {{count}} caracteres)" - too_short: "tem poucos caracteres (mínimo: {{count}} caracteres)" - wrong_length: "não é do tamanho correcto (necessita de ter {{count}} caracteres)" + too_long: "tem demasiados caracteres (máximo: %{count} caracteres)" + too_short: "tem poucos caracteres (mínimo: %{count} caracteres)" + wrong_length: "não é do tamanho correcto (necessita de ter %{count} caracteres)" taken: "não está disponível" not_a_number: "não é um número" - greater_than: "tem de ser maior do que {{count}}" - greater_than_or_equal_to: "tem de ser maior ou igual a {{count}}" - equal_to: "tem de ser igual a {{count}}" - less_than: "tem de ser menor do que {{count}}" - less_than_or_equal_to: "tem de ser menor ou igual a {{count}}" + greater_than: "tem de ser maior do que %{count}" + greater_than_or_equal_to: "tem de ser maior ou igual a %{count}" + equal_to: "tem de ser igual a %{count}" + less_than: "tem de ser menor do que %{count}" + less_than_or_equal_to: "tem de ser menor ou igual a %{count}" odd: "tem de ser ímpar" even: "tem de ser par" greater_than_start_date: "deve ser maior que a data inicial" @@ -160,34 +160,34 @@ notice_file_not_found: A página que está a tentar aceder não existe ou foi removida. notice_locking_conflict: Os dados foram actualizados por outro utilizador. notice_not_authorized: Não está autorizado a visualizar esta página. - notice_email_sent: "Foi enviado um e-mail para {{value}}" - notice_email_error: "Ocorreu um erro ao enviar o e-mail ({{value}})" + notice_email_sent: "Foi enviado um e-mail para %{value}" + notice_email_error: "Ocorreu um erro ao enviar o e-mail (%{value})" notice_feeds_access_key_reseted: A sua chave de RSS foi inicializada. - notice_failed_to_save_issues: "Não foi possível guardar {{count}} tarefa(s) das {{total}} seleccionadas: {{ids}}." + notice_failed_to_save_issues: "Não foi possível guardar %{count} tarefa(s) das %{total} seleccionadas: %{ids}." notice_no_issue_selected: "Nenhuma tarefa seleccionada! Por favor, seleccione as tarefas que quer editar." notice_account_pending: "A sua conta foi criada e está agora à espera de aprovação do administrador." notice_default_data_loaded: Configuração padrão carregada com sucesso. notice_unable_delete_version: Não foi possível apagar a versão. - error_can_t_load_default_data: "Não foi possível carregar a configuração padrão: {{value}}" + error_can_t_load_default_data: "Não foi possível carregar a configuração padrão: %{value}" error_scm_not_found: "A entrada ou revisão não foi encontrada no repositório." - error_scm_command_failed: "Ocorreu um erro ao tentar aceder ao repositório: {{value}}" + error_scm_command_failed: "Ocorreu um erro ao tentar aceder ao repositório: %{value}" error_scm_annotate: "A entrada não existe ou não pode ser anotada." error_issue_not_found_in_project: 'A tarefa não foi encontrada ou não pertence a este projecto.' - mail_subject_lost_password: "Palavra-chave de {{value}}" + mail_subject_lost_password: "Palavra-chave de %{value}" mail_body_lost_password: 'Para mudar a sua palavra-chave, clique na ligação abaixo:' - mail_subject_register: "Activação de conta de {{value}}" + mail_subject_register: "Activação de conta de %{value}" mail_body_register: 'Para activar a sua conta, clique na ligação abaixo:' - mail_body_account_information_external: "Pode utilizar a conta {{value}} para autenticar-se." + mail_body_account_information_external: "Pode utilizar a conta %{value} para autenticar-se." mail_body_account_information: Informação da sua conta - mail_subject_account_activation_request: "Pedido de activação da conta {{value}}" - mail_body_account_activation_request: "Um novo utilizador ({{value}}) registou-se. A sua conta está à espera de aprovação:" - mail_subject_reminder: "{{count}} tarefa(s) para entregar nos próximos {{days}} dias" - mail_body_reminder: "{{count}} tarefa(s) que estão atribuídas a si estão agendadas para estarem completas nos próximos {{days}} dias:" + mail_subject_account_activation_request: "Pedido de activação da conta %{value}" + mail_body_account_activation_request: "Um novo utilizador (%{value}) registou-se. A sua conta está à espera de aprovação:" + mail_subject_reminder: "%{count} tarefa(s) para entregar nos próximos %{days} dias" + mail_body_reminder: "%{count} tarefa(s) que estão atribuídas a si estão agendadas para estarem completas nos próximos %{days} dias:" gui_validation_error: 1 erro - gui_validation_error_plural: "{{count}} erros" + gui_validation_error_plural: "%{count} erros" field_name: Nome field_description: Descrição @@ -249,6 +249,7 @@ field_attr_lastname: Atributo último nome field_attr_mail: Atributo e-mail field_onthefly: Criação de utilizadores na hora + field_start_date: Início field_done_ratio: % Completo field_auth_source: Modo de autenticação field_hide_mail: Esconder endereço de e-mail @@ -328,14 +329,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Todos os projectos label_project_latest: Últimos projectos label_issue: Tarefa label_issue_new: Nova tarefa label_issue_plural: Tarefas label_issue_view_all: Ver todas as tarefas - label_issues_by: "Tarefas por {{value}}" + label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa actualizada label_document: Documento @@ -391,7 +392,7 @@ label_auth_source_new: Novo modo de autenticação label_auth_source_plural: Modos de autenticação label_subproject_plural: Sub-projectos - label_and_its_subprojects: "{{value}} e sub-projectos" + label_and_its_subprojects: "%{value} e sub-projectos" label_min_max_length: Tamanho mínimo-máximo label_list: Lista label_date: Data @@ -402,8 +403,8 @@ label_text: Texto longo label_attribute: Atributo label_attribute_plural: Atributos - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Sem dados para mostrar label_change_status: Mudar estado label_history: Histórico @@ -434,17 +435,17 @@ label_closed_issues: fechado label_closed_issues_plural: fechados label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Total label_permissions: Permissões label_current_status: Estado actual @@ -462,7 +463,7 @@ label_months_from: meses de label_gantt: Gantt label_internal: Interno - label_last_changes: "últimas {{count}} alterações" + label_last_changes: "últimas %{count} alterações" label_change_view_all: Ver todas as alterações label_personalize_page: Personalizar esta página label_comment: Comentário @@ -470,7 +471,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Adicionar comentário label_comment_added: Comentário adicionado label_comment_delete: Apagar comentários @@ -489,7 +490,7 @@ label_yesterday: ontem label_this_week: esta semana label_last_week: semana passada - label_last_n_days: "últimos {{count}} dias" + label_last_n_days: "últimos %{count} dias" label_this_month: este mês label_last_month: mês passado label_this_year: este ano @@ -503,8 +504,8 @@ label_repository: Repositório label_repository_plural: Repositórios label_browse: Navegar - label_modification: "{{count}} alteração" - label_modification_plural: "{{count}} alterações" + label_modification: "%{count} alteração" + label_modification_plural: "%{count} alterações" label_revision: Revisão label_revision_plural: Revisões label_associated_revisions: Revisões associadas @@ -522,8 +523,8 @@ label_sort_lower: Mover para baixo label_sort_lowest: Mover para o fim label_roadmap: Roadmap - label_roadmap_due_in: "Termina em {{value}}" - label_roadmap_overdue: "Atrasado {{value}}" + label_roadmap_due_in: "Termina em %{value}" + label_roadmap_overdue: "Atrasado %{value}" label_roadmap_no_issues: Sem tarefas para esta versão label_search: Procurar label_result_plural: Resultados @@ -541,8 +542,8 @@ label_changes_details: Detalhes de todas as mudanças label_issue_tracking: Tarefas label_spent_time: Tempo gasto - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_time_tracking: Registo de tempo label_change_plural: Mudanças label_statistics: Estatísticas @@ -591,12 +592,12 @@ label_date_from: De label_date_to: Para label_language_based: Baseado na língua do utilizador - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_send_test_email: enviar um e-mail de teste - label_feeds_access_key_created_on: "Chave RSS criada há {{value}} atrás" + label_feeds_access_key_created_on: "Chave RSS criada há %{value} atrás" label_module_plural: Módulos - label_added_time_by: "Adicionado por {{author}} há {{age}} atrás" - label_updated_time: "Alterado há {{value}} atrás" + label_added_time_by: "Adicionado por %{author} há %{age} atrás" + label_updated_time: "Alterado há %{value} atrás" label_jump_to_a_project: Ir para o projecto... label_file_plural: Ficheiros label_changeset_plural: Changesets @@ -612,7 +613,7 @@ label_registration_activation_by_email: Activação da conta por e-mail label_registration_manual_activation: Activação manual da conta label_registration_automatic_activation: Activação automática da conta - label_display_per_page: "Por página: {{value}}" + label_display_per_page: "Por página: %{value}" label_age: Idade label_change_properties: Mudar propriedades label_general: Geral @@ -678,43 +679,43 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 siginifica sem restrição text_project_destroy_confirmation: Tem a certeza que deseja apagar o projecto e todos os dados relacionados? - text_subprojects_destroy_warning: "O(s) seu(s) sub-projecto(s): {{value}} também será/serão apagado(s)." + text_subprojects_destroy_warning: "O(s) seu(s) sub-projecto(s): %{value} também será/serão apagado(s)." text_workflow_edit: Seleccione uma função e um tipo de tarefa para editar o fluxo de trabalho text_are_you_sure: Tem a certeza? text_tip_issue_begin_day: tarefa a começar neste dia text_tip_issue_end_day: tarefa a acabar neste dia text_tip_issue_begin_end_day: tarefa a começar e acabar neste dia text_project_identifier_info: 'Apenas são permitidos letras minúsculas (a-z), números e hífens.
    Uma vez guardado, o identificador não poderá ser alterado.' - text_caracters_maximum: "máximo {{count}} caracteres." - text_caracters_minimum: "Deve ter pelo menos {{count}} caracteres." - text_length_between: "Deve ter entre {{min}} e {{max}} caracteres." + text_caracters_maximum: "máximo %{count} caracteres." + text_caracters_minimum: "Deve ter pelo menos %{count} caracteres." + text_length_between: "Deve ter entre %{min} e %{max} caracteres." text_tracker_no_workflow: Sem fluxo de trabalho definido para este tipo de tarefa. text_unallowed_characters: Caracteres não permitidos text_comma_separated: Permitidos múltiplos valores (separados por vírgula). text_issues_ref_in_commit_messages: Referenciando e fechando tarefas em mensagens de commit - text_issue_added: "Tarefa {{id}} foi criada por {{author}}." - text_issue_updated: "Tarefa {{id}} foi actualizada por {{author}}." + text_issue_added: "Tarefa %{id} foi criada por %{author}." + text_issue_updated: "Tarefa %{id} foi actualizada por %{author}." text_wiki_destroy_confirmation: Tem a certeza que deseja apagar este wiki e todo o seu conteúdo? - text_issue_category_destroy_question: "Algumas tarefas ({{count}}) estão atribuídas a esta categoria. O que quer fazer?" + text_issue_category_destroy_question: "Algumas tarefas (%{count}) estão atribuídas a esta categoria. O que quer fazer?" text_issue_category_destroy_assignments: Remover as atribuições à categoria text_issue_category_reassign_to: Re-atribuir as tarefas para esta categoria text_user_mail_option: "Para projectos não seleccionados, apenas receberá notificações acerca de coisas que está a observar ou está envolvido (ex. tarefas das quais foi o criador ou lhes foram atribuídas)." text_no_configuration_data: "Perfis, tipos de tarefas, estados das tarefas e workflows ainda não foram configurados.\nÉ extremamente recomendado carregar as configurações padrão. Será capaz de as modificar depois de estarem carregadas." text_load_default_configuration: Carregar as configurações padrão - text_status_changed_by_changeset: "Aplicado no changeset {{value}}." + text_status_changed_by_changeset: "Aplicado no changeset %{value}." text_issues_destroy_confirmation: 'Tem a certeza que deseja apagar a(s) tarefa(s) seleccionada(s)?' text_select_project_modules: 'Seleccione os módulos a activar para este projecto:' text_default_administrator_account_changed: Conta default de administrador alterada. text_file_repository_writable: Repositório de ficheiros com permissões de escrita text_rmagick_available: RMagick disponível (opcional) - text_destroy_time_entries_question: "{{hours}} horas de trabalho foram atribuídas a estas tarefas que vai apagar. O que deseja fazer?" + text_destroy_time_entries_question: "%{hours} horas de trabalho foram atribuídas a estas tarefas que vai apagar. O que deseja fazer?" text_destroy_time_entries: Apagar as horas text_assign_time_entries_to_project: Atribuir as horas ao projecto text_reassign_time_entries: 'Re-atribuir as horas para esta tarefa:' - text_user_wrote: "{{value}} escreveu:" - text_enumeration_destroy_question: "{{count}} objectos estão atribuídos a este valor." + text_user_wrote: "%{value} escreveu:" + text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:' - text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/email.yml e reinicie a aplicação para activar estas funcionalidades." + text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para activar estas funcionalidades." default_role_manager: Gestor default_role_developer: Programador @@ -793,12 +794,12 @@ text_repository_usernames_mapping: "Seleccionar ou actualizar o utilizador de Redmine mapeado a cada nome de utilizador encontrado no repositório.\nUtilizadores com o mesmo nome de utilizador ou email no Redmine e no repositório são mapeados automaticamente." permission_edit_own_messages: Editar as próprias mensagens permission_delete_own_messages: Apagar as próprias mensagens - label_user_activity: "Actividade de {{value}}" - label_updated_time_by: "Actualizado por {{author}} há {{age}}" + label_user_activity: "Actividade de %{value}" + label_updated_time_by: "Actualizado por %{author} há %{age}" text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser mostrado.' setting_diff_max_lines_displayed: Número máximo de linhas de diff mostradas text_plugin_assets_writable: Escrita na pasta de activos dos módulos de extensão possível - warning_attachments_not_saved: "Não foi possível gravar {{count}} ficheiro(s) ." + warning_attachments_not_saved: "Não foi possível gravar %{count} ficheiro(s) ." button_create_and_continue: Criar e continuar text_custom_field_possible_values_info: 'Uma linha para cada valor' label_display: Mostrar @@ -813,21 +814,21 @@ label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente - label_date_from_to: De {{start}} a {{end}} + label_date_from_to: De %{start} a %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Esta página tem {{descendants}} página(s) subordinada(s) e descendente(s). O que deseja fazer? + text_wiki_page_destroy_question: Esta página tem %{descendants} página(s) subordinada(s) e descendente(s). O que deseja fazer? text_wiki_page_reassign_children: Reatribuir páginas subordinadas a esta página principal text_wiki_page_nullify_children: Manter páginas subordinadas como páginas raíz text_wiki_page_destroy_children: Apagar as páginas subordinadas e todos os seus descendentes setting_password_min_length: Tamanho mínimo de palavra-chave field_group_by: Agrupar resultados por - mail_subject_wiki_content_updated: "A página Wiki '{{id}}' foi actualizada" + mail_subject_wiki_content_updated: "A página Wiki '%{id}' foi actualizada" label_wiki_content_added: Página Wiki adicionada - mail_subject_wiki_content_added: "A página Wiki '{{id}}' foi adicionada" - mail_body_wiki_content_added: A página Wiki '{{id}}' foi adicionada por {{author}}. + mail_subject_wiki_content_added: "A página Wiki '%{id}' foi adicionada" + mail_body_wiki_content_added: A página Wiki '%{id}' foi adicionada por %{author}. label_wiki_content_updated: Página Wiki actualizada - mail_body_wiki_content_updated: A página Wiki '{{id}}' foi actualizada por {{author}}. + mail_body_wiki_content_updated: A página Wiki '%{id}' foi actualizada por %{author}. permission_add_project: Criar projecto setting_new_project_user_role_id: Função atribuída a um utilizador não-administrador que cria um projecto label_view_all_revisions: Ver todas as revisões @@ -839,10 +840,10 @@ label_group: Grupo label_group_new: Novo grupo label_time_entry_plural: Tempo registado - text_journal_changed: "{{label}} alterado de {{old}} para {{new}}" - text_journal_set_to: "{{label}} configurado como {{value}}" - text_journal_deleted: "{{label}} apagou ({{old}})" - text_journal_added: "{{label}} {{value}} adicionado" + text_journal_changed: "%{label} alterado de %{old} para %{new}" + text_journal_set_to: "%{label} configurado como %{value}" + text_journal_deleted: "%{label} apagou (%{old})" + text_journal_added: "%{label} %{value} adicionado" field_active: Activo enumeration_system_activity: Actividade de sistema permission_delete_issue_watchers: Apagar observadores @@ -877,9 +878,9 @@ setting_start_of_week: Iniciar calendários a permission_view_issues: Ver tarefas label_display_used_statuses_only: Só exibir estados empregues por este tipo de tarefa - label_revision_id: Revisão {{value}} + label_revision_id: Revisão %{value} label_api_access_key: Chave de acesso API - label_api_access_key_created_on: Chave de acesso API criada há {{value}} + label_api_access_key_created_on: Chave de acesso API criada há %{value} label_feeds_access_key: Chave de acesso RSS notice_api_access_key_reseted: A sua chave de acesso API foi reinicializada. setting_rest_api_enabled: Activar serviço Web REST @@ -906,12 +907,12 @@ label_subtask_plural: Sub-tarefa label_project_copy_notifications: Enviar notificações por e-mail durante a cópia do projecto error_can_not_delete_custom_field: Não foi possível apagar o campo personalizado - error_unable_to_connect: Não foi possível ligar ({{value}}) + error_unable_to_connect: Não foi possível ligar (%{value}) error_can_not_remove_role: Esta função está actualmente em uso e não pode ser apagada. error_can_not_delete_tracker: Existem ainda tarefas nesta categoria. Não é possível apagar este tipo de tarefa. field_principal: Principal label_my_page_block: Bloco da minha página - notice_failed_to_save_members: "Erro ao guardar o(s) membro(s): {{errors}}." + notice_failed_to_save_members: "Erro ao guardar o(s) membro(s): %{errors}." text_zoom_out: Ampliar text_zoom_in: Reduzir notice_unable_delete_time_entry: Não foi possível apagar a entrada de tempo registado. @@ -919,7 +920,7 @@ field_time_entries: Tempo registado project_module_gantt: Gantt project_module_calendar: Calendário - button_edit_associated_wikipage: "Editar página Wiki associada: {{page_title}}" + 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 @@ -930,8 +931,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/ro.yml.svn-base --- a/config/locales/.svn/text-base/ro.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/ro.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -30,37 +30,37 @@ half_a_minute: "jumătate de minut" less_than_x_seconds: one: "mai puțin de o secundă" - other: "mai puțin de {{count}} secunde" + other: "mai puțin de %{count} secunde" x_seconds: one: "o secundă" - other: "{{count}} secunde" + other: "%{count} secunde" less_than_x_minutes: one: "mai puțin de un minut" - other: "mai puțin de {{count}} minute" + other: "mai puțin de %{count} minute" x_minutes: one: "un minut" - other: "{{count}} minute" + other: "%{count} minute" about_x_hours: one: "aproximativ o oră" - other: "aproximativ {{count}} ore" + other: "aproximativ %{count} ore" x_days: one: "o zi" - other: "{{count}} zile" + other: "%{count} zile" about_x_months: one: "aproximativ o lună" - other: "aproximativ {{count}} luni" + other: "aproximativ %{count} luni" x_months: one: "o luna" - other: "{{count}} luni" + other: "%{count} luni" about_x_years: one: "aproximativ un an" - other: "aproximativ {{count}} ani" + other: "aproximativ %{count} ani" over_x_years: one: "peste un an" - other: "peste {{count}} ani" + other: "peste %{count} ani" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: human: @@ -86,6 +86,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nu este inclus în listă" exclusion: "este rezervat" @@ -100,11 +104,11 @@ taken: "a fost luat deja" not_a_number: "nu este un număr" not_a_date: "nu este o dată validă" - greater_than: "trebuie să fie mai mare de {{count}}" - greater_than_or_equal_to: "trebuie să fie mai mare sau egal cu {{count}}" + greater_than: "trebuie să fie mai mare de %{count}" + greater_than_or_equal_to: "trebuie să fie mai mare sau egal cu %{count}" equal_to: "trebuie să fie egal cu {count}}" - less_than: "trebuie să fie mai mic decat {{count}}" - less_than_or_equal_to: "trebuie să fie mai mic sau egal cu {{count}}" + less_than: "trebuie să fie mai mic decat %{count}" + less_than_or_equal_to: "trebuie să fie mai mic sau egal cu %{count}" odd: "trebuie să fie impar" even: "trebuie să fie par" greater_than_start_date: "trebuie să fie după data de început" @@ -141,36 +145,36 @@ notice_file_not_found: Pagina pe care doriți să o accesați nu există sau a fost ștearsă. notice_locking_conflict: Datele au fost actualizate de alt utilizator. notice_not_authorized: Nu sunteți autorizat sa accesați această pagină. - notice_email_sent: "S-a trimis un email către {{value}}" - notice_email_error: "A intervenit o eroare la trimiterea de email ({{value}})" + notice_email_sent: "S-a trimis un email către %{value}" + notice_email_error: "A intervenit o eroare la trimiterea de email (%{value})" notice_feeds_access_key_reseted: Cheia de acces RSS a fost resetată. - notice_failed_to_save_issues: "Nu s-au putut salva {{count}} tichete din cele {{total}} selectate: {{ids}}." + notice_failed_to_save_issues: "Nu s-au putut salva %{count} tichete din cele %{total} selectate: %{ids}." notice_no_issue_selected: "Niciun tichet selectat! Vă rugăm să selectați tichetele pe care doriți să le editați." notice_account_pending: "Contul dumneavoastră a fost creat și așteaptă aprobarea administratorului." notice_default_data_loaded: S-a încărcat configurația implicită. notice_unable_delete_version: Nu se poate șterge versiunea. - error_can_t_load_default_data: "Nu s-a putut încărca configurația implicită: {{value}}" + error_can_t_load_default_data: "Nu s-a putut încărca configurația implicită: %{value}" error_scm_not_found: "Nu s-a găsit articolul sau revizia în depozit." - error_scm_command_failed: "A intervenit o eroare la accesarea depozitului: {{value}}" + error_scm_command_failed: "A intervenit o eroare la accesarea depozitului: %{value}" error_scm_annotate: "Nu există sau nu poate fi adnotată." error_issue_not_found_in_project: 'Tichetul nu a fost găsit sau nu aparține acestui proiect' - warning_attachments_not_saved: "Nu s-au putut salva {{count}} fișiere." + warning_attachments_not_saved: "Nu s-au putut salva %{count} fișiere." - mail_subject_lost_password: "Parola dumneavoastră: {{value}}" + mail_subject_lost_password: "Parola dumneavoastră: %{value}" mail_body_lost_password: 'Pentru a schimba parola, accesați:' - mail_subject_register: "Activarea contului {{value}}" + mail_subject_register: "Activarea contului %{value}" mail_body_register: 'Pentru activarea contului, accesați:' mail_body_account_information_external: "Puteți folosi contul „{value}}†pentru a vă autentifica." mail_body_account_information: Informații despre contul dumneavoastră - mail_subject_account_activation_request: "Cerere de activare a contului {{value}}" - mail_body_account_activation_request: "S-a înregistrat un utilizator nou ({{value}}). Contul așteaptă aprobarea dumneavoastră:" - mail_subject_reminder: "{{count}} tichete trebuie rezolvate în următoarele {{days}} zile" - mail_body_reminder: "{{count}} tichete atribuite dumneavoastră trebuie rezolvate în următoarele {{days}} zile:" + mail_subject_account_activation_request: "Cerere de activare a contului %{value}" + mail_body_account_activation_request: "S-a înregistrat un utilizator nou (%{value}). Contul așteaptă aprobarea dumneavoastră:" + mail_subject_reminder: "%{count} tichete trebuie rezolvate în următoarele %{days} zile" + mail_body_reminder: "%{count} tichete atribuite dumneavoastră trebuie rezolvate în următoarele %{days} zile:" gui_validation_error: o eroare - gui_validation_error_plural: "{{count}} erori" + gui_validation_error_plural: "%{count} erori" field_name: Nume field_description: Descriere @@ -232,6 +236,7 @@ field_attr_lastname: Atribut nume field_attr_mail: Atribut email field_onthefly: Creare utilizator pe loc + field_start_date: Data începerii field_done_ratio: Realizat (%) field_auth_source: Mod autentificare field_hide_mail: Nu se afișează adresa de email @@ -370,14 +375,14 @@ label_x_projects: zero: niciun proiect one: un proiect - other: "{{count}} proiecte" + other: "%{count} proiecte" label_project_all: Toate proiectele label_project_latest: Proiecte noi label_issue: Tichet label_issue_new: Tichet nou label_issue_plural: Tichete label_issue_view_all: Afișează toate tichetele - label_issues_by: "Sortează după {{value}}" + label_issues_by: "Sortează după %{value}" label_issue_added: Adaugat label_issue_updated: Actualizat label_document: Document @@ -426,7 +431,7 @@ label_registered_on: Înregistrat la label_activity: Activitate label_overall_activity: Activitate - vedere de ansamblu - label_user_activity: "Activitate {{value}}" + label_user_activity: "Activitate %{value}" label_new: Nou label_logged_as: Autentificat ca label_environment: Mediu @@ -435,7 +440,7 @@ label_auth_source_new: Nou label_auth_source_plural: Moduri de autentificare label_subproject_plural: Sub-proiecte - label_and_its_subprojects: "{{value}} și sub-proiecte" + label_and_its_subprojects: "%{value} și sub-proiecte" label_min_max_length: lungime min - max label_list: Listă label_date: Dată @@ -446,8 +451,8 @@ label_text: Text lung label_attribute: Atribut label_attribute_plural: Atribute - label_download: "{{count}} descărcare" - label_download_plural: "{{count}} descărcări" + label_download: "%{count} descărcare" + label_download_plural: "%{count} descărcări" label_no_data: Nu există date de afișat label_change_status: Schimbă starea label_history: Istoric @@ -478,17 +483,17 @@ label_closed_issues: închis label_closed_issues_plural: închise label_x_open_issues_abbr_on_total: - zero: 0 deschise / {{total}} - one: 1 deschis / {{total}} - other: "{{count}} deschise / {{total}}" + zero: 0 deschise / %{total} + one: 1 deschis / %{total} + other: "%{count} deschise / %{total}" label_x_open_issues_abbr: zero: 0 deschise one: 1 deschis - other: "{{count}} deschise" + other: "%{count} deschise" label_x_closed_issues_abbr: zero: 0 închise one: 1 închis - other: "{{count}} închise" + other: "%{count} închise" label_total: Total label_permissions: Permisiuni label_current_status: Stare curentă @@ -506,7 +511,7 @@ label_months_from: luni de la label_gantt: Gantt label_internal: Intern - label_last_changes: "ultimele {{count}} schimbări" + label_last_changes: "ultimele %{count} schimbări" label_change_view_all: Afișează toate schimbările label_personalize_page: Personalizează aceasta pagina label_comment: Comentariu @@ -514,7 +519,7 @@ label_x_comments: zero: fara comentarii one: 1 comentariu - other: "{{count}} comentarii" + other: "%{count} comentarii" label_comment_add: Adaugă un comentariu label_comment_added: Adăugat label_comment_delete: Șterge comentariul @@ -533,7 +538,7 @@ label_yesterday: ieri label_this_week: săptămâna aceasta label_last_week: săptămâna trecută - label_last_n_days: "ultimele {{count}} zile" + label_last_n_days: "ultimele %{count} zile" label_this_month: luna aceasta label_last_month: luna trecută label_this_year: anul acesta @@ -547,8 +552,8 @@ label_repository: Depozit label_repository_plural: Depozite label_browse: Afișează - label_modification: "{{count}} schimbare" - label_modification_plural: "{{count}} schimbări" + label_modification: "%{count} schimbare" + label_modification_plural: "%{count} schimbări" label_revision: Revizie label_revision_plural: Revizii label_associated_revisions: Revizii asociate @@ -566,8 +571,8 @@ label_sort_lower: În jos label_sort_lowest: Ultima label_roadmap: Planificare - label_roadmap_due_in: "De terminat în {{value}}" - label_roadmap_overdue: "Întârziat cu {{value}}" + label_roadmap_due_in: "De terminat în %{value}" + label_roadmap_overdue: "Întârziat cu %{value}" label_roadmap_no_issues: Nu există tichete pentru această versiune label_search: Caută label_result_plural: Rezultate @@ -585,8 +590,8 @@ label_changes_details: Detaliile tuturor schimbărilor label_issue_tracking: Urmărire tichete label_spent_time: Timp alocat - label_f_hour: "{{value}} oră" - label_f_hour_plural: "{{value}} ore" + label_f_hour: "%{value} oră" + label_f_hour_plural: "%{value} ore" label_time_tracking: Urmărire timp de lucru label_change_plural: Schimbări label_statistics: Statistici @@ -635,13 +640,13 @@ label_date_from: De la label_date_to: La label_language_based: Un funcție de limba de afișare a utilizatorului - label_sort_by: "Sortează după {{value}}" + label_sort_by: "Sortează după %{value}" label_send_test_email: Trimite email de test - label_feeds_access_key_created_on: "Cheie de acces creată acum {{value}}" + label_feeds_access_key_created_on: "Cheie de acces creată acum %{value}" label_module_plural: Module - label_added_time_by: "Adăugat de {{author}} acum {{age}}" - label_updated_time_by: "Actualizat de {{author}} acum {{age}}" - label_updated_time: "Actualizat acum {{value}}" + label_added_time_by: "Adăugat de %{author} acum %{age}" + label_updated_time_by: "Actualizat de %{author} acum %{age}" + label_updated_time: "Actualizat acum %{value}" label_jump_to_a_project: Alege proiectul... label_file_plural: Fișiere label_changeset_plural: Schimbări @@ -657,7 +662,7 @@ label_registration_activation_by_email: activare cont prin email label_registration_manual_activation: activare manuală a contului label_registration_automatic_activation: activare automată a contului - label_display_per_page: "pe pagină: {{value}}" + label_display_per_page: "pe pagină: %{value}" label_age: vechime label_change_properties: Schimbă proprietățile label_general: General @@ -681,7 +686,7 @@ label_sort: Sortează label_ascending: Crescător label_descending: Descrescător - label_date_from_to: De la {{start}} la {{end}} + label_date_from_to: De la %{start} la %{end} button_login: Autentificare @@ -732,44 +737,44 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 înseamnă fără restricții text_project_destroy_confirmation: Sigur doriți să ștergeți proiectul și toate datele asociate? - text_subprojects_destroy_warning: "Se vor șterge și sub-proiectele: {{value}}." + text_subprojects_destroy_warning: "Se vor șterge și sub-proiectele: %{value}." text_workflow_edit: Selectați un rol și un tip de tichet pentru a edita modul de lucru text_are_you_sure: Sunteți sigur(ă)? text_tip_issue_begin_day: sarcină care începe în această zi text_tip_issue_end_day: sarcină care se termină în această zi text_tip_issue_begin_end_day: sarcină care începe și se termină în această zi text_project_identifier_info: 'Sunt permise doar litere mici (a-z), numere și cratime.
    Odată salvat, identificatorul nu mai poate fi modificat.' - text_caracters_maximum: "maxim {{count}} caractere." - text_caracters_minimum: "Trebuie să fie minim {{count}} caractere." - text_length_between: "Lungime între {{min}} È™i {{max}} caractere." + text_caracters_maximum: "maxim %{count} caractere." + text_caracters_minimum: "Trebuie să fie minim %{count} caractere." + text_length_between: "Lungime între %{min} È™i %{max} caractere." text_tracker_no_workflow: Nu sunt moduri de lucru pentru acest tip de tichet text_unallowed_characters: Caractere nepermise text_comma_separated: Sunt permise mai multe valori (separate cu virgulă). text_issues_ref_in_commit_messages: Referire la tichete È™i rezolvare în textul mesajului - text_issue_added: "Tichetul {{id}} a fost adăugat de {{author}}." - text_issue_updated: "Tichetul {{id}} a fost actualizat de {{author}}." + text_issue_added: "Tichetul %{id} a fost adăugat de %{author}." + text_issue_updated: "Tichetul %{id} a fost actualizat de %{author}." text_wiki_destroy_confirmation: Sigur doriÈ›i È™tergerea Wiki È™i a conÈ›inutului asociat? - text_issue_category_destroy_question: "Această categorie conÈ›ine ({{count}}) tichete. Ce doriÈ›i să faceÈ›i?" + text_issue_category_destroy_question: "Această categorie conÈ›ine (%{count}) tichete. Ce doriÈ›i să faceÈ›i?" text_issue_category_destroy_assignments: Șterge apartenenÈ›a la categorie. text_issue_category_reassign_to: Atribuie tichetele la această categorie text_user_mail_option: "Pentru proiectele care nu sunt selectate, veÈ›i primi notificări doar pentru ceea ce urmăriÈ›i sau în ce sunteÈ›i implicat (ex: tichete create de dumneavoastră sau care vă sunt atribuite)." text_no_configuration_data: "Nu s-au configurat încă rolurile, stările tichetelor È™i modurile de lucru.\nEste recomandat să încărcaÈ›i configuraÈ›ia implicită. O veÈ›i putea modifica ulterior." text_load_default_configuration: ÃŽncarcă configuraÈ›ia implicită - text_status_changed_by_changeset: "Aplicat în setul {{value}}." + text_status_changed_by_changeset: "Aplicat în setul %{value}." text_issues_destroy_confirmation: 'Sigur doriÈ›i să È™tergeÈ›i tichetele selectate?' text_select_project_modules: 'SelectaÈ›i modulele active pentru acest proiect:' text_default_administrator_account_changed: S-a schimbat contul administratorului implicit text_file_repository_writable: Se poate scrie în directorul de ataÈ™amente text_plugin_assets_writable: Se poate scrie în directorul de plugin-uri text_rmagick_available: Este disponibil RMagick (opÈ›ional) - text_destroy_time_entries_question: "{{hours}} ore sunt înregistrate la tichetele pe care doriÈ›i să le È™tergeÈ›i. Ce doriÈ›i sa faceÈ›i?" + text_destroy_time_entries_question: "%{hours} ore sunt înregistrate la tichetele pe care doriÈ›i să le È™tergeÈ›i. Ce doriÈ›i sa faceÈ›i?" text_destroy_time_entries: Șterge orele înregistrate text_assign_time_entries_to_project: Atribuie orele la proiect text_reassign_time_entries: 'Atribuie orele înregistrate la tichetul:' - text_user_wrote: "{{value}} a scris:" - text_enumeration_destroy_question: "Această valoare are {{count}} obiecte." + text_user_wrote: "%{value} a scris:" + text_enumeration_destroy_question: "Această valoare are %{count} obiecte." text_enumeration_category_reassign_to: 'Atribuie la această valoare:' - text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/email.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." + text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/configuration.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." text_repository_usernames_mapping: "SelectaÈ›i sau modificaÈ›i contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine È™i depozit sunt echivalate automat." text_diff_truncated: '... ComparaÈ›ia a fost trunchiată pentru ca depășeÈ™te lungimea maximă de text care poate fi afiÈ™at.' text_custom_field_possible_values_info: 'O linie pentru fiecare valoare' @@ -801,18 +806,18 @@ enumeration_activities: Activități (timp de lucru) label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Această pagină are {{descendants}} pagini anterioare È™i descendenÈ›i. Ce doriÈ›i să faceÈ›i? + text_wiki_page_destroy_question: Această pagină are %{descendants} pagini anterioare È™i descendenÈ›i. Ce doriÈ›i să faceÈ›i? text_wiki_page_reassign_children: Atribuie paginile la această pagină text_wiki_page_nullify_children: MenÈ›ine paginile ca È™i pagini iniÈ›iale (root) text_wiki_page_destroy_children: Șterge paginile È™i descendenÈ›ii setting_password_min_length: Lungime minimă parolă field_group_by: Grupează după - mail_subject_wiki_content_updated: "Pagina wiki '{{id}}' a fost actualizată" + mail_subject_wiki_content_updated: "Pagina wiki '%{id}' a fost actualizată" label_wiki_content_added: Adăugat - mail_subject_wiki_content_added: "Pagina wiki '{{id}}' a fost adăugată" - mail_body_wiki_content_added: Pagina wiki '{{id}}' a fost adăugată de {{author}}. + mail_subject_wiki_content_added: "Pagina wiki '%{id}' a fost adăugată" + mail_body_wiki_content_added: Pagina wiki '%{id}' a fost adăugată de %{author}. label_wiki_content_updated: Actualizat - mail_body_wiki_content_updated: Pagina wiki '{{id}}' a fost actualizată de {{author}}. + mail_body_wiki_content_updated: Pagina wiki '%{id}' a fost actualizată de %{author}. permission_add_project: Crează proiect setting_new_project_user_role_id: Rol atribuit utilizatorului non-admin care crează un proiect. label_view_all_revisions: Arată toate reviziile @@ -820,14 +825,14 @@ label_branch: Branch error_no_tracker_in_project: Nu există un tracker asociat cu proiectul. VerificaÈ›i vă rog setările proiectului. error_no_default_issue_status: Nu există un status implicit al tichetelor. VerificaÈ›i vă rog configuraÈ›ia (MergeÈ›i la "Administrare -> Stări tichete"). - text_journal_changed: "{{label}} schimbat din {{old}} în {{new}}" - text_journal_set_to: "{{label}} setat ca {{value}}" - text_journal_deleted: "{{label}} È™ters ({{old}})" + text_journal_changed: "%{label} schimbat din %{old} în %{new}" + text_journal_set_to: "%{label} setat ca %{value}" + text_journal_deleted: "%{label} È™ters (%{old})" label_group_plural: Grupuri label_group: Grup label_group_new: Grup nou label_time_entry_plural: Timp alocat - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -862,9 +867,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -891,12 +896,12 @@ 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_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}}." + 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. @@ -904,7 +909,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -915,8 +920,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/ru.yml.svn-base --- a/config/locales/.svn/text-base/ru.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/ru.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -89,60 +89,60 @@ distance_in_words: half_a_minute: "меньше минуты" less_than_x_seconds: - one: "меньше {{count}} Ñекунды" - few: "меньше {{count}} Ñекунд" - many: "меньше {{count}} Ñекунд" - other: "меньше {{count}} Ñекунды" + one: "меньше %{count} Ñекунды" + few: "меньше %{count} Ñекунд" + many: "меньше %{count} Ñекунд" + other: "меньше %{count} Ñекунды" x_seconds: - one: "{{count}} Ñекунда" - few: "{{count}} Ñекунды" - many: "{{count}} Ñекунд" - other: "{{count}} Ñекунды" + one: "%{count} Ñекунда" + few: "%{count} Ñекунды" + many: "%{count} Ñекунд" + other: "%{count} Ñекунды" less_than_x_minutes: - one: "меньше {{count}} минуты" - few: "меньше {{count}} минут" - many: "меньше {{count}} минут" - other: "меньше {{count}} минуты" + one: "меньше %{count} минуты" + few: "меньше %{count} минут" + many: "меньше %{count} минут" + other: "меньше %{count} минуты" x_minutes: - one: "{{count}} минуту" - few: "{{count}} минуты" - many: "{{count}} минут" - other: "{{count}} минуты" + one: "%{count} минуту" + few: "%{count} минуты" + many: "%{count} минут" + other: "%{count} минуты" about_x_hours: - one: "около {{count}} чаÑа" - few: "около {{count}} чаÑов" - many: "около {{count}} чаÑов" - other: "около {{count}} чаÑа" + one: "около %{count} чаÑа" + few: "около %{count} чаÑов" + many: "около %{count} чаÑов" + other: "около %{count} чаÑа" x_days: - one: "{{count}} день" - few: "{{count}} днÑ" - many: "{{count}} дней" - other: "{{count}} днÑ" + one: "%{count} день" + few: "%{count} днÑ" + many: "%{count} дней" + other: "%{count} днÑ" about_x_months: - one: "около {{count}} меÑÑца" - few: "около {{count}} меÑÑцев" - many: "около {{count}} меÑÑцев" - other: "около {{count}} меÑÑца" + one: "около %{count} меÑÑца" + few: "около %{count} меÑÑцев" + many: "около %{count} меÑÑцев" + other: "около %{count} меÑÑца" x_months: - one: "{{count}} меÑÑц" - few: "{{count}} меÑÑца" - many: "{{count}} меÑÑцев" - other: "{{count}} меÑÑца" + one: "%{count} меÑÑц" + few: "%{count} меÑÑца" + many: "%{count} меÑÑцев" + other: "%{count} меÑÑца" about_x_years: - one: "около {{count}} года" - few: "около {{count}} лет" - many: "около {{count}} лет" - other: "около {{count}} лет" + one: "около %{count} года" + few: "около %{count} лет" + many: "около %{count} лет" + other: "около %{count} лет" over_x_years: - one: "больше {{count}} года" - few: "больше {{count}} лет" - many: "больше {{count}} лет" - other: "больше {{count}} лет" + one: "больше %{count} года" + few: "больше %{count} лет" + many: "больше %{count} лет" + other: "больше %{count} лет" almost_x_years: one: "почти 1 год" - few: "почти {{count}} года" - many: "почти {{count}} лет" - other: "почти {{count}} года" + few: "почти %{count} года" + many: "почти %{count} лет" + other: "почти %{count} года" prompts: year: "Год" month: "МеÑÑц" @@ -155,10 +155,10 @@ errors: template: header: - one: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибки" - few: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибок" - many: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибок" - other: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибки" + one: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибки" + few: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибок" + many: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибок" + other: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибки" body: "Проблемы возникли Ñо Ñледующими полÑми:" @@ -171,27 +171,27 @@ empty: "не может быть пуÑтым" blank: "не может быть пуÑтым" too_long: - one: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимвол)" - few: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимвола)" - many: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимволов)" - other: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимвола)" + one: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвол)" + few: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвола)" + many: "Ñлишком большой длины (не может быть больше чем %{count} Ñимволов)" + other: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвола)" too_short: - one: "недоÑтаточной длины (не может быть меньше {{count}} Ñимвола)" - few: "недоÑтаточной длины (не может быть меньше {{count}} Ñимволов)" - many: "недоÑтаточной длины (не может быть меньше {{count}} Ñимволов)" - other: "недоÑтаточной длины (не может быть меньше {{count}} Ñимвола)" + one: "недоÑтаточной длины (не может быть меньше %{count} Ñимвола)" + few: "недоÑтаточной длины (не может быть меньше %{count} Ñимволов)" + many: "недоÑтаточной длины (не может быть меньше %{count} Ñимволов)" + other: "недоÑтаточной длины (не может быть меньше %{count} Ñимвола)" wrong_length: - one: "неверной длины (может быть длиной ровно {{count}} Ñимвол)" - few: "неверной длины (может быть длиной ровно {{count}} Ñимвола)" - many: "неверной длины (может быть длиной ровно {{count}} Ñимволов)" - other: "неверной длины (может быть длиной ровно {{count}} Ñимвола)" + one: "неверной длины (может быть длиной ровно %{count} Ñимвол)" + few: "неверной длины (может быть длиной ровно %{count} Ñимвола)" + many: "неверной длины (может быть длиной ровно %{count} Ñимволов)" + other: "неверной длины (может быть длиной ровно %{count} Ñимвола)" taken: "уже ÑущеÑтвует" not_a_number: "не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом" - greater_than: "может иметь значение большее {{count}}" - greater_than_or_equal_to: "может иметь значение большее или равное {{count}}" - equal_to: "может иметь лишь значение, равное {{count}}" - less_than: "может иметь значение меньшее чем {{count}}" - less_than_or_equal_to: "может иметь значение меньшее или равное {{count}}" + 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: "должна быть позднее даты начала" @@ -230,7 +230,7 @@ button_delete: Удалить button_download: Загрузить button_edit: Редактировать - button_edit_associated_wikipage: "Редактировать ÑвÑзанную wiki-Ñтраницу: {{page_title}}" + button_edit_associated_wikipage: "Редактировать ÑвÑзанную wiki-Ñтраницу: %{page_title}" button_list: СпиÑок button_lock: Заблокировать button_login: Вход @@ -282,12 +282,12 @@ error_can_not_remove_role: Эта роль иÑпользуетÑÑ Ð¸ не может быть удалена. error_can_not_delete_custom_field: Ðевозможно удалить наÑтраиваемое поле error_can_not_delete_tracker: Этот трекер Ñодержит задачи и не может быть удален. - error_can_t_load_default_data: "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию не была загружена: {{value}}" + error_can_t_load_default_data: "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию не была загружена: %{value}" error_issue_not_found_in_project: Задача не была найдена или не прикреплена к Ñтому проекту error_scm_annotate: "Данные отÑутÑтвуют или не могут быть подпиÑаны." - error_scm_command_failed: "Ошибка доÑтупа к хранилищу: {{value}}" + error_scm_command_failed: "Ошибка доÑтупа к хранилищу: %{value}" error_scm_not_found: Хранилище не Ñодержит запиÑи и/или иÑправлениÑ. - error_unable_to_connect: Ðевозможно подключитьÑÑ ({{value}}) + error_unable_to_connect: Ðевозможно подключитьÑÑ (%{value}) error_unable_delete_issue_status: Ðевозможно удалить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ field_account: Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ @@ -313,7 +313,6 @@ field_description: ОпиÑание field_done_ratio: ГотовноÑть в % field_downloads: Загрузки - field_start_date: Дата начала field_due_date: Дата Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ field_editable: Редактируемый field_effective_date: Дата @@ -364,6 +363,7 @@ field_role: Роль field_searchable: ДоÑтупно Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка field_spent_on: Дата + field_start_date: Ðачата field_start_page: Ð¡Ñ‚Ð°Ñ€Ñ‚Ð¾Ð²Ð°Ñ Ñтраница field_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ field_subject: Тема @@ -382,9 +382,9 @@ field_version: ВерÑÐ¸Ñ field_watcher: Ðаблюдатель - 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: 'Russian (РуÑÑкий)' general_pdf_encoding: UTF-8 @@ -394,13 +394,13 @@ general_text_Yes: 'Да' gui_validation_error: 1 ошибка - gui_validation_error_plural: "{{count}} ошибок" - gui_validation_error_plural2: "{{count}} ошибки" - gui_validation_error_plural5: "{{count}} ошибок" + gui_validation_error_plural: "%{count} ошибок" + gui_validation_error_plural2: "%{count} ошибки" + gui_validation_error_plural5: "%{count} ошибок" label_activity: ÐктивноÑть label_add_another_file: Добавить ещё один файл - label_added_time_by: "Добавил(а) {{author}} {{age}} назад" + label_added_time_by: "Добавил(а) %{author} %{age} назад" label_added: добавлено label_add_note: Добавить замечание label_administration: ÐдминиÑтрирование @@ -409,7 +409,7 @@ label_all_time: вÑÑ‘ Ð²Ñ€ÐµÐ¼Ñ label_all_words: Ð’Ñе Ñлова label_all: вÑе - label_and_its_subprojects: "{{value}} и вÑе подпроекты" + label_and_its_subprojects: "%{value} и вÑе подпроекты" label_applied_status: Применимый ÑÑ‚Ð°Ñ‚ÑƒÑ label_ascending: По возраÑтанию label_assigned_to_me_issues: Мои задачи @@ -465,7 +465,7 @@ label_custom_field_new: Ðовое наÑтраиваемое поле label_custom_field_plural: ÐаÑтраиваемые Ð¿Ð¾Ð»Ñ label_date_from: С - label_date_from_to: С {{start}} по {{end}} + label_date_from_to: С %{start} по %{end} label_date_range: временной интервал label_date_to: по label_date: Дата @@ -479,15 +479,15 @@ label_diff_side_by_side: Ñ€Ñдом label_disabled: отключено label_display: Отображение - label_display_per_page: "Ðа Ñтраницу: {{value}}" + label_display_per_page: "Ðа Ñтраницу: %{value}" label_document: Документ label_document_added: Добавлен документ label_document_new: Ðовый документ label_document_plural: Документы - label_download: "{{count}} загрузка" - label_download_plural: "{{count}} Ñкачиваний" - label_download_plural2: "{{count}} загрузки" - label_download_plural5: "{{count}} загрузок" + label_download: "%{count} загрузка" + label_download_plural: "%{count} Ñкачиваний" + label_download_plural2: "%{count} загрузки" + label_download_plural5: "%{count} загрузок" label_downloads_abbr: Скачиваний label_duplicated_by: дублируетÑÑ label_duplicates: дублирует @@ -500,9 +500,9 @@ label_example: Пример label_export_to: ЭкÑпортировать в label_feed_plural: RSS - label_feeds_access_key_created_on: "Ключ доÑтупа RSS Ñоздан {{value}} назад" - label_f_hour: "{{value}} чаÑ" - label_f_hour_plural: "{{value}} чаÑов" + label_feeds_access_key_created_on: "Ключ доÑтупа RSS Ñоздан %{value} назад" + label_f_hour: "%{value} чаÑ" + label_f_hour_plural: "%{value} чаÑов" label_file_added: Добавлен файл label_file_plural: Файлы label_filter_add: Добавить фильтр @@ -533,7 +533,7 @@ label_issue_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸ label_issue_new: ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° label_issue_plural: Задачи - label_issues_by: "Сортировать по {{value}}" + label_issues_by: "Сортировать по %{value}" label_issue_status_new: Ðовый ÑÑ‚Ð°Ñ‚ÑƒÑ label_issue_status_plural: СтатуÑÑ‹ задачи label_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ @@ -543,10 +543,10 @@ label_issue_watchers: Ðаблюдатели label_jump_to_a_project: Перейти к проекту... label_language_based: Ðа оÑнове Ñзыка - label_last_changes: "менее {{count}} изменений" + label_last_changes: "менее %{count} изменений" label_last_login: ПоÑледнее подключение label_last_month: поÑледний меÑÑц - label_last_n_days: "поÑледние {{count}} дней" + label_last_n_days: "поÑледние %{count} дней" label_last_week: поÑледнÑÑ Ð½ÐµÐ´ÐµÐ»ÑŽ label_latest_revision: ПоÑледнÑÑ Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ label_latest_revision_plural: ПоÑледние редакции @@ -569,10 +569,10 @@ label_message_posted: Добавлено Ñообщение label_me: мне label_min_max_length: ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ - макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° - label_modification: "{{count}} изменение" - label_modification_plural: "{{count}} изменений" - label_modification_plural2: "{{count}} изменениÑ" - label_modification_plural5: "{{count}} изменений" + label_modification: "%{count} изменение" + label_modification_plural: "%{count} изменений" + label_modification_plural2: "%{count} изменениÑ" + label_modification_plural5: "%{count} изменений" label_modified: изменено label_module_plural: Модули label_months_from: меÑÑцев(ца) Ñ @@ -653,9 +653,9 @@ label_revision: Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ label_revision_plural: Редакции label_roadmap: Оперативный план - label_roadmap_due_in: "Ð’ Ñрок {{value}}" + label_roadmap_due_in: "Ð’ Ñрок %{value}" label_roadmap_no_issues: Ðет задач Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ верÑии - label_roadmap_overdue: "опоздание {{value}}" + label_roadmap_overdue: "опоздание %{value}" label_role: Роль label_role_and_permissions: Роли и права доÑтупа label_role_new: ÐÐ¾Ð²Ð°Ñ Ñ€Ð¾Ð»ÑŒ @@ -668,7 +668,7 @@ label_settings: ÐаÑтройки label_show_completed_versions: Показывать завершенные верÑии label_sort: Сортировать - label_sort_by: "Сортировать по {{value}}" + label_sort_by: "Сортировать по %{value}" label_sort_higher: Вверх label_sort_highest: Ð’ начало label_sort_lower: Вниз @@ -694,11 +694,11 @@ label_tracker: Трекер label_tracker_new: Ðовый трекер label_tracker_plural: Трекеры - label_updated_time: "Обновлено {{value}} назад" - label_updated_time_by: "Обновлено {{author}} {{age}} назад" + label_updated_time: "Обновлено %{value} назад" + label_updated_time_by: "Обновлено %{author} %{age} назад" label_used_by: ИÑпользуетÑÑ label_user: Пользователь - label_user_activity: "ÐктивноÑть Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ {{value}}" + label_user_activity: "ÐктивноÑть Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %{value}" label_user_mail_no_self_notified: "Ðе извещать об изменениÑÑ…, которые Ñ Ñделал Ñам" label_user_mail_option_all: "О вÑех ÑобытиÑÑ… во вÑех моих проектах" label_user_mail_option_selected: "О вÑех ÑобытиÑÑ… только в выбранном проекте..." @@ -723,46 +723,46 @@ label_x_closed_issues_abbr: zero: "0 закрыто" one: "1 закрыт" - few: "{{count}} закрыто" - many: "{{count}} закрыто" - other: "{{count}} закрыто" + few: "%{count} закрыто" + many: "%{count} закрыто" + other: "%{count} закрыто" label_x_comments: zero: "нет комментариев" one: "1 комментарий" - few: "{{count}} комментариÑ" - many: "{{count}} комментариев" - other: "{{count}} комментариев" + few: "%{count} комментариÑ" + many: "%{count} комментариев" + other: "%{count} комментариев" label_x_open_issues_abbr: zero: "0 открыто" one: "1 открыт" - few: "{{count}} открыто" - many: "{{count}} открыто" - other: "{{count}} открыто" + few: "%{count} открыто" + many: "%{count} открыто" + other: "%{count} открыто" label_x_open_issues_abbr_on_total: - zero: "0 открыто / {{total}}" - one: "1 открыт / {{total}}" - few: "{{count}} открыто / {{total}}" - many: "{{count}} открыто / {{total}}" - other: "{{count}} открыто / {{total}}" + zero: "0 открыто / %{total}" + one: "1 открыт / %{total}" + few: "%{count} открыто / %{total}" + many: "%{count} открыто / %{total}" + other: "%{count} открыто / %{total}" label_x_projects: zero: "нет проектов" one: "1 проект" - few: "{{count}} проекта" - many: "{{count}} проектов" - other: "{{count}} проектов" + few: "%{count} проекта" + many: "%{count} проектов" + other: "%{count} проектов" label_year: Год label_yesterday: вчера - mail_body_account_activation_request: "ЗарегиÑтрирован новый пользователь ({{value}}). Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ожидает Вашего утверждениÑ:" + mail_body_account_activation_request: "ЗарегиÑтрирован новый пользователь (%{value}). Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ожидает Вашего утверждениÑ:" mail_body_account_information: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Вашей учетной запиÑи - mail_body_account_information_external: "Ð’Ñ‹ можете иÑпользовать Вашу {{value}} учетную запиÑÑŒ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°." + mail_body_account_information_external: "Ð’Ñ‹ можете иÑпользовать Вашу %{value} учетную запиÑÑŒ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°." mail_body_lost_password: 'Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð·Ð°Ð¹Ð´Ð¸Ñ‚Ðµ по Ñледующей ÑÑылке:' mail_body_register: 'Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ учетной запиÑи зайдите по Ñледующей ÑÑылке:' - mail_body_reminder: "{{count}} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ на Ñледующие {{days}} дней:" - mail_subject_account_activation_request: "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° активацию Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑиÑтеме {{value}}" - mail_subject_lost_password: "Ваш {{value}} пароль" - mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи {{value}}" - mail_subject_reminder: "{{count}} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ в ближайшие {{days}} дней" + mail_body_reminder: "%{count} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ на Ñледующие %{days} дней:" + mail_subject_account_activation_request: "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° активацию Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑиÑтеме %{value}" + mail_subject_lost_password: "Ваш %{value} пароль" + mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %{value}" + mail_subject_reminder: "%{count} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ в ближайшие %{days} дней" notice_account_activated: Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ активирована. Ð’Ñ‹ можете войти. notice_account_invalid_creditentials: Ðеправильное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль @@ -775,10 +775,10 @@ notice_account_wrong_password: Ðеверный пароль notice_can_t_change_password: Ð”Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ учетной запиÑи иÑпользуетÑÑ Ð¸Ñточник внешней аутентификации. Ðевозможно изменить пароль. notice_default_data_loaded: Была загружена ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию. - notice_email_error: "Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ пиÑьма произошла ошибка ({{value}})" - notice_email_sent: "Отправлено пиÑьмо {{value}}" - notice_failed_to_save_issues: "Ðе удалоÑÑŒ Ñохранить {{count}} пункт(ов) из {{total}} выбранных: {{ids}}." - notice_failed_to_save_members: "Ðе удалоÑÑŒ Ñохранить учаÑтника(ов): {{errors}}." + notice_email_error: "Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ пиÑьма произошла ошибка (%{value})" + notice_email_sent: "Отправлено пиÑьмо %{value}" + notice_failed_to_save_issues: "Ðе удалоÑÑŒ Ñохранить %{count} пункт(ов) из %{total} выбранных: %{ids}." + notice_failed_to_save_members: "Ðе удалоÑÑŒ Ñохранить учаÑтника(ов): %{errors}." notice_feeds_access_key_reseted: Ваш ключ доÑтупа RSS был перезапущен. notice_file_not_found: Страница, на которую Ð’Ñ‹ пытаетеÑÑŒ зайти, не ÑущеÑтвует или удалена. notice_locking_conflict: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð° другим пользователем. @@ -859,7 +859,7 @@ setting_attachment_max_size: МакÑимальный размер Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ setting_autofetch_changesets: ÐвтоматичеÑки Ñледить за изменениÑми хранилища setting_autologin: ÐвтоматичеÑкий вход - setting_bcc_recipients: ИÑпользовать Ñкрытые ÑпиÑки (bcc) + setting_bcc_recipients: ИÑпользовать Ñкрытые ÑпиÑки (BCC) setting_cache_formatted_text: Кешировать форматированный текÑÑ‚ setting_commit_fix_keywords: Ðазначение ключевых Ñлов setting_commit_logs_encoding: Кодировка комментариев в хранилище @@ -871,7 +871,7 @@ setting_default_projects_public: Ðовые проекты ÑвлÑÑŽÑ‚ÑÑ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупными setting_diff_max_lines_displayed: МакÑимальное чиÑло Ñтрок Ð´Ð»Ñ diff setting_display_subprojects_issues: Отображение подпроектов по умолчанию - setting_emails_footer: ПодÑтрочные Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Email + setting_emails_footer: ПодÑтрочные Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¿Ð¸Ñьма setting_enabled_scm: Разрешенные SCM setting_feeds_limit: Ограничение количеÑтва заголовков Ð´Ð»Ñ RSS потока setting_file_max_size_displayed: МакÑимальный размер текÑтового файла Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ @@ -905,29 +905,29 @@ text_are_you_sure_with_children: Удалить задачу и вÑе ее подзадачи? text_are_you_sure: Подтвердите text_assign_time_entries_to_project: Прикрепить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ Ðº проекту - text_caracters_maximum: "МакÑимум {{count}} Ñимволов(а)." - text_caracters_minimum: "Должно быть не менее {{count}} Ñимволов." + text_caracters_maximum: "МакÑимум %{count} Ñимволов(а)." + text_caracters_minimum: "Должно быть не менее %{count} Ñимволов." text_comma_separated: ДопуÑтимы неÑколько значений (через запÑтую). text_custom_field_possible_values_info: 'По одному значению в каждой Ñтроке' text_default_administrator_account_changed: Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ админиÑтратора по умолчанию изменена - text_destroy_time_entries_question: Ð’Ñ‹ ÑобираетеÑÑŒ удалить {{hours}} чаÑа(ов), прикрепленных за Ñтой задачей. + text_destroy_time_entries_question: Ð’Ñ‹ ÑобираетеÑÑŒ удалить %{hours} чаÑа(ов), прикрепленных за Ñтой задачей. text_destroy_time_entries: Удалить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ text_diff_truncated: '... Этот diff ограничен, так как превышает макÑимальный отображаемый размер.' - text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/email.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." + text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/configuration.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." text_enumeration_category_reassign_to: 'Ðазначить им Ñледующее значение:' - text_enumeration_destroy_question: "{{count}} объект(а,ов) ÑвÑзаны Ñ Ñтим значением." + text_enumeration_destroy_question: "%{count} объект(а,ов) ÑвÑзаны Ñ Ñтим значением." text_file_repository_writable: Хранилище Ñ Ð´Ð¾Ñтупом на запиÑÑŒ - text_issue_added: "По задаче {{id}} был Ñоздан отчет ({{author}})." + text_issue_added: "По задаче %{id} был Ñоздан отчет (%{author})." text_issue_category_destroy_assignments: Удалить Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ - text_issue_category_destroy_question: "ÐеÑколько задач ({{count}}) назначено в данную категорию. Что Ð’Ñ‹ хотите предпринÑть?" + text_issue_category_destroy_question: "ÐеÑколько задач (%{count}) назначено в данную категорию. Что Ð’Ñ‹ хотите предпринÑть?" text_issue_category_reassign_to: Переназначить задачи Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ категории text_issues_destroy_confirmation: 'Ð’Ñ‹ уверены, что хотите удалить выбранные задачи?' text_issues_ref_in_commit_messages: СопоÑтавление и изменение ÑтатуÑа задач иÑÑ…Ð¾Ð´Ñ Ð¸Ð· текÑта Ñообщений - text_issue_updated: "Задача {{id}} была обновлена ({{author}})." - text_journal_changed: "Параметр {{label}} изменилÑÑ Ñ {{old}} на {{new}}" - text_journal_deleted: "Значение {{old}} параметра {{label}} удалено" - text_journal_set_to: "Параметр {{label}} изменилÑÑ Ð½Ð° {{value}}" - text_length_between: "Длина между {{min}} и {{max}} Ñимволов." + text_issue_updated: "Задача %{id} была обновлена (%{author})." + text_journal_changed: "Параметр %{label} изменилÑÑ Ñ %{old} на %{new}" + text_journal_deleted: "Значение %{old} параметра %{label} удалено" + text_journal_set_to: "Параметр %{label} изменилÑÑ Ð½Ð° %{value}" + text_length_between: "Длина между %{min} и %{max} Ñимволов." text_load_default_configuration: Загрузить конфигурацию по умолчанию text_min_max_length_info: 0 означает отÑутÑтвие запретов text_no_configuration_data: "Роли, трекеры, ÑтатуÑÑ‹ задач и оперативный план не были Ñконфигурированы.\nÐаÑтоÑтельно рекомендуетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ конфигурацию по-умолчанию. Ð’Ñ‹ Ñможете её изменить потом." @@ -940,31 +940,31 @@ text_rmagick_available: ДоÑтупно иÑпользование RMagick (опционально) text_select_mail_notifications: Выберите дейÑтвиÑ, на которые будет отÑылатьÑÑ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ðµ на Ñлектронную почту. text_select_project_modules: 'Выберите модули, которые будут иÑпользованы в проекте:' - text_status_changed_by_changeset: "Реализовано в {{value}} редакции." - text_subprojects_destroy_warning: "Подпроекты: {{value}} также будут удалены." + text_status_changed_by_changeset: "Реализовано в %{value} редакции." + text_subprojects_destroy_warning: "Подпроекты: %{value} также будут удалены." text_tip_issue_begin_day: дата начала задачи text_tip_issue_begin_end_day: начало задачи и окончание ее в Ñтот день text_tip_issue_end_day: дата Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸ text_tracker_no_workflow: Ð”Ð»Ñ Ñтого трекера поÑледовательноÑть дейÑтвий не определена text_unallowed_characters: Запрещенные Ñимволы text_user_mail_option: "Ð”Ð»Ñ Ð½ÐµÐ²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… проектов, Ð’Ñ‹ будете получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ о том что проÑматриваете или в чем учаÑтвуете (например, вопроÑÑ‹, автором которых Ð’Ñ‹ ÑвлÑетеÑÑŒ или которые Вам назначены)." - text_user_wrote: "{{value}} пиÑал(а):" + text_user_wrote: "%{value} пиÑал(а):" text_wiki_destroy_confirmation: Ð’Ñ‹ уверены, что хотите удалить данную Wiki и вÑе ее Ñодержимое? text_workflow_edit: Выберите роль и трекер Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑледовательноÑти ÑоÑтоÑний - warning_attachments_not_saved: "{{count}} файл(ов) невозможно Ñохранить." - text_wiki_page_destroy_question: Эта Ñтраница имеет {{descendants}} дочерних Ñтраниц и их потомков. Что вы хотите Ñделать? + warning_attachments_not_saved: "%{count} файл(ов) невозможно Ñохранить." + text_wiki_page_destroy_question: Эта Ñтраница имеет %{descendants} дочерних Ñтраниц и их потомков. Что вы хотите Ñделать? text_wiki_page_reassign_children: Переопределить дочерние Ñтраницы на текущую Ñтраницу text_wiki_page_nullify_children: Сделать дочерние Ñтраницы главными Ñтраницами text_wiki_page_destroy_children: Удалить дочерние Ñтраницы и вÑех их потомков setting_password_min_length: ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð¿Ð°Ñ€Ð¾Ð»Ñ field_group_by: Группировать результаты по - mail_subject_wiki_content_updated: "Wiki-Ñтраница '{{id}}' была обновлена" + mail_subject_wiki_content_updated: "Wiki-Ñтраница '%{id}' была обновлена" label_wiki_content_added: Добавлена wiki-Ñтраница - mail_subject_wiki_content_added: "Wiki-Ñтраница '{{id}}' была добавлена" - mail_body_wiki_content_added: "{{author}} добавил(а) wiki-Ñтраницу '{{id}}'." + mail_subject_wiki_content_added: "Wiki-Ñтраница '%{id}' была добавлена" + mail_body_wiki_content_added: "%{author} добавил(а) wiki-Ñтраницу '%{id}'." label_wiki_content_updated: Обновлена wiki-Ñтраница - mail_body_wiki_content_updated: "{{author}} обновил(а) wiki-Ñтраницу '{{id}}'." + mail_body_wiki_content_updated: "%{author} обновил(а) wiki-Ñтраницу '%{id}'." permission_add_project: Создание проекта setting_new_project_user_role_id: Роль, Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼Ð°Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ, Ñоздавшему проект label_view_all_revisions: Показать вÑе ревизии @@ -976,7 +976,7 @@ label_group: Группа label_group_new: ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° label_time_entry_plural: Затраченное Ð²Ñ€ÐµÐ¼Ñ - text_journal_added: "{{label}} {{value}} добавлен" + text_journal_added: "%{label} %{value} добавлен" field_active: Ðктивно enumeration_system_activity: СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ñть permission_delete_issue_watchers: Удаление наблюдателей @@ -1011,10 +1011,10 @@ setting_start_of_week: День начала недели label_api_access_key: Ключ доÑтупа к API text_line_separated: Разрешено неÑколько значений (по одному значению в Ñтроку). - label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ {{value}} + label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value} permission_view_issues: ПроÑмотр задач label_display_used_statuses_only: Отображать только те ÑтатуÑÑ‹, которые иÑпользуютÑÑ Ð² Ñтом трекере - label_api_access_key_created_on: Ключ доÑтуп к API был Ñоздан {{value}} назад + label_api_access_key_created_on: Ключ доÑтуп к API был Ñоздан %{value} назад label_feeds_access_key: Ключ доÑтупа к RSS notice_api_access_key_reseted: Ваш ключ доÑтупа к API был Ñброшен. setting_rest_api_enabled: Включить веб-ÑÐµÑ€Ð²Ð¸Ñ REST @@ -1035,13 +1035,21 @@ text_zoom_in: Приблизить notice_unable_delete_time_entry: Ðевозможно удалить запиÑÑŒ журнала. label_overall_spent_time: Ð’Ñего затрачено времени - label_user_mail_option_none: Ðет Ñобытий field_member_of_group: Группа назначенного field_assigned_to_role: Роль назначенного notice_not_authorized_archived_project: Запрашиваемый проект был архивирован. + label_principal_search: "Ðайти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ группу:" + label_user_search: "Ðайти пользователÑ:" + field_visible: Видимый + setting_emails_header: Заголовок пиÑьма - 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/sk.yml.svn-base --- a/config/locales/.svn/text-base/sk.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/sk.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "pol minúty" less_than_x_seconds: one: "menej ako 1 sekunda" - other: "menej ako {{count}} sekúnd" + other: "menej ako %{count} sekúnd" x_seconds: one: "1 sekunda" - other: "{{count}} sekúnd" + other: "%{count} sekúnd" less_than_x_minutes: one: "menej ako minúta" - other: "menej ako {{count}} minút" + other: "menej ako %{count} minút" x_minutes: one: "1 minuta" - other: "{{count}} minút" + other: "%{count} minút" about_x_hours: one: "okolo 1 hodiny" - other: "okolo {{count}} hodín" + other: "okolo %{count} hodín" x_days: one: "1 deň" - other: "{{count}} dní" + other: "%{count} dní" about_x_months: one: "okolo 1 mesiaca" - other: "okolo {{count}} mesiace/ov" + other: "okolo %{count} mesiace/ov" x_months: one: "1 mesiac" - other: "{{count}} mesiace/ov" + other: "%{count} mesiace/ov" about_x_years: one: "okolo 1 roka" - other: "okolo {{count}} roky/ov" + other: "okolo %{count} roky/ov" over_x_years: one: "cez 1 rok" - other: "cez {{count}} roky/ov" + other: "cez %{count} roky/ov" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: human: @@ -88,6 +88,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nieje zahrnuté v zozname" exclusion: "je rezervované" @@ -102,11 +106,11 @@ taken: "je už použité" not_a_number: "nieje Äíslo" not_a_date: "nieje platný dátum" - greater_than: "musí byÅ¥ väÄšíe ako {{count}}" - greater_than_or_equal_to: "musí byÅ¥ väÄÅ¡ie alebo rovné {{count}}" - equal_to: "musí byÅ¥ rovné {{count}}" - less_than: "musí byÅ¥ menej ako {{count}}" - less_than_or_equal_to: "musí byÅ¥ menej alebo rovné {{count}}" + greater_than: "musí byÅ¥ väÄšíe ako %{count}" + greater_than_or_equal_to: "musí byÅ¥ väÄÅ¡ie alebo rovné %{count}" + equal_to: "musí byÅ¥ rovné %{count}" + less_than: "musí byÅ¥ menej ako %{count}" + less_than_or_equal_to: "musí byÅ¥ menej alebo rovné %{count}" odd: "musí byÅ¥ nepárne" even: "musí byÅ¥ párne" greater_than_start_date: "musí byÅ¥ neskôr ako poÄiatoÄný dátum" @@ -146,30 +150,30 @@ notice_locking_conflict: Údaje boli zmenené iným užívateľom. notice_scm_error: Položka a/alebo revízia neexistuje v repozitári. notice_not_authorized: Nemáte dostatoÄné práva pre zobrazenie tejto stránky. - notice_email_sent: "Na adresu {{value}} bol odeslaný email" - notice_email_error: "Pri odosielaní emailu nastala chyba ({{value}})" + notice_email_sent: "Na adresu %{value} bol odeslaný email" + notice_email_error: "Pri odosielaní emailu nastala chyba (%{value})" notice_feeds_access_key_reseted: Váš klÃºÄ pre prístup k Atomu bol resetovaný. - notice_failed_to_save_issues: "Nastala chyba pri ukládaní {{count}} úloh na {{total}} zvolený: {{ids}}." + notice_failed_to_save_issues: "Nastala chyba pri ukládaní %{count} úloh na %{total} zvolený: %{ids}." notice_no_issue_selected: "Nebola zvolená žiadná úloha. Prosím, zvoľte úlohy, ktoré chcete upraviÅ¥" notice_account_pending: "Váš úÄet bol vytvorený, teraz Äaká na schválenie administrátorom." notice_default_data_loaded: Výchozia konfigurácia úspeÅ¡ne nahraná. - error_can_t_load_default_data: "Výchozia konfigurácia nebola nahraná: {{value}}" + error_can_t_load_default_data: "Výchozia konfigurácia nebola nahraná: %{value}" error_scm_not_found: "Položka a/alebo revízia neexistuje v repozitári." - error_scm_command_failed: "Pri pokuse o prístup k repozitári doÅ¡lo k chybe: {{value}}" + error_scm_command_failed: "Pri pokuse o prístup k repozitári doÅ¡lo k chybe: %{value}" error_issue_not_found_in_project: 'Úloha nebola nájdená alebo nepatrí k tomuto projektu' - mail_subject_lost_password: "VaÅ¡e heslo ({{value}})" + mail_subject_lost_password: "VaÅ¡e heslo (%{value})" mail_body_lost_password: 'Pre zmenu vaÅ¡eho hesla kliknite na následujúci odkaz:' - mail_subject_register: "Aktivácia úÄtu ({{value}})" + mail_subject_register: "Aktivácia úÄtu (%{value})" mail_body_register: 'Pre aktiváciu vaÅ¡eho úÄtu kliknite na následujúci odkaz:' - mail_body_account_information_external: "Pomocou vaÅ¡eho úÄtu {{value}} se môžete prihlásiÅ¥." + mail_body_account_information_external: "Pomocou vaÅ¡eho úÄtu %{value} se môžete prihlásiÅ¥." mail_body_account_information: Informácie o vaÅ¡om úÄte - mail_subject_account_activation_request: "Aktivácia {{value}} úÄtu" - mail_body_account_activation_request: "Bol zaregistrovaný nový uživateľ {{value}}. Aktivácia jeho úÄtu závisí na vaÅ¡om potvrdení." + mail_subject_account_activation_request: "Aktivácia %{value} úÄtu" + mail_body_account_activation_request: "Bol zaregistrovaný nový uživateľ %{value}. Aktivácia jeho úÄtu závisí na vaÅ¡om potvrdení." gui_validation_error: 1 chyba - gui_validation_error_plural: "{{count}} chyb(y)" + gui_validation_error_plural: "%{count} chyb(y)" field_name: Názov field_description: Popis @@ -231,6 +235,7 @@ field_attr_lastname: Priezvisko (atribut) field_attr_mail: Email (atribut) field_onthefly: Automatické vytváranie užívateľov + field_start_date: ZaÄiatok field_done_ratio: % hotovo field_auth_source: AutentifikaÄný mód field_hide_mail: NezobrazovaÅ¥ môj email @@ -304,14 +309,14 @@ label_x_projects: zero: žiadne projekty one: 1 projekt - other: "{{count}} projekty/ov" + other: "%{count} projekty/ov" label_project_all: VÅ¡etky projekty label_project_latest: Posledné projekty label_issue: Úloha label_issue_new: Nová úloha label_issue_plural: Úlohy label_issue_view_all: VÅ¡etky úlohy - label_issues_by: "Úlohy od užívateľa {{value}}" + label_issues_by: "Úlohy od užívateľa %{value}" label_issue_added: Úloha pridaná label_issue_updated: Úloha aktualizovaná label_document: Dokument @@ -377,8 +382,8 @@ label_text: Dlhý text label_attribute: Atribut label_attribute_plural: Atributy - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloady" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloady" label_no_data: Žiadné položky label_change_status: ZmeniÅ¥ stav label_history: História @@ -409,17 +414,17 @@ label_closed_issues: Uzavrený label_closed_issues_plural: Uzavrené label_x_open_issues_abbr_on_total: - zero: 0 otvorených z celkovo {{total}} - one: 1 otvorený z celkovo {{total}} - other: "{{count}} otvorené/ých z celkovo {{total}}" + zero: 0 otvorených z celkovo %{total} + one: 1 otvorený z celkovo %{total} + other: "%{count} otvorené/ých z celkovo %{total}" label_x_open_issues_abbr: zero: 0 otvorených one: 1 otvorený - other: "{{count}} otvorené/ých" + other: "%{count} otvorené/ých" label_x_closed_issues_abbr: zero: 0 zavretých one: 1 zavretý - other: "{{count}} zavreté/ých" + other: "%{count} zavreté/ých" label_total: Celkovo label_permissions: Práva label_current_status: Aktuálny stav @@ -437,7 +442,7 @@ label_months_from: mesiacov od label_gantt: Ganttov graf label_internal: Interný - label_last_changes: "posledných {{count}} zmien" + label_last_changes: "posledných %{count} zmien" label_change_view_all: ZobraziÅ¥ vÅ¡etky zmeny label_personalize_page: PrispôsobiÅ¥ túto stránku label_comment: Komentár @@ -445,7 +450,7 @@ label_x_comments: zero: žiaden komentár one: 1 komentár - other: "{{count}} komentáre/ov" + other: "%{count} komentáre/ov" label_comment_add: PridaÅ¥ komentár label_comment_added: Komentár pridaný label_comment_delete: OdstrániÅ¥ komentár @@ -464,7 +469,7 @@ label_yesterday: vÄera label_this_week: tento týždeň label_last_week: minulý týždeň - label_last_n_days: "posledných {{count}} dní" + label_last_n_days: "posledných %{count} dní" label_this_month: tento mesiac label_last_month: minulý mesiac label_this_year: tento rok @@ -478,8 +483,8 @@ label_repository: Repozitár label_repository_plural: Repozitáre label_browse: PrechádzaÅ¥ - label_modification: "{{count}} zmena" - label_modification_plural: "{{count}} zmien" + label_modification: "%{count} zmena" + label_modification_plural: "%{count} zmien" label_revision: Revízia label_revision_plural: Revízií label_associated_revisions: Súvisiace verzie @@ -495,8 +500,8 @@ label_sort_lower: Presunúť dole label_sort_lowest: Presunúť na koniec label_roadmap: Plán - label_roadmap_due_in: "Zostáva {{value}}" - label_roadmap_overdue: "{{value}} neskoro" + label_roadmap_due_in: "Zostáva %{value}" + label_roadmap_overdue: "%{value} neskoro" label_roadmap_no_issues: Pre túto verziu niesú žiadne úlohy label_search: HľadaÅ¥ label_result_plural: Výsledky @@ -514,8 +519,8 @@ label_changes_details: Detail vÅ¡etkých zmien label_issue_tracking: Sledovanie úloh label_spent_time: Strávený Äas - label_f_hour: "{{value}} hodina" - label_f_hour_plural: "{{value}} hodín" + label_f_hour: "%{value} hodina" + label_f_hour_plural: "%{value} hodín" label_time_tracking: Sledovánie Äasu label_change_plural: Zmeny label_statistics: Å tatistiky @@ -563,12 +568,12 @@ label_date_from: Od label_date_to: Do label_language_based: Podľa výchozieho jazyka - label_sort_by: "Zoradenie podľa {{value}}" + label_sort_by: "Zoradenie podľa %{value}" label_send_test_email: PoslaÅ¥ testovací email - label_feeds_access_key_created_on: "Prístupový klÃºÄ pre RSS bol vytvorený pred {{value}}" + label_feeds_access_key_created_on: "Prístupový klÃºÄ pre RSS bol vytvorený pred %{value}" label_module_plural: Moduly - label_added_time_by: "Pridané užívateľom {{author}} pred {{age}}" - label_updated_time: "Aktualizované pred {{value}}" + label_added_time_by: "Pridané užívateľom %{author} pred %{age}" + label_updated_time: "Aktualizované pred %{value}" label_jump_to_a_project: ZvoliÅ¥ projekt... label_file_plural: Súbory label_changeset_plural: Sady zmien @@ -584,7 +589,7 @@ label_registration_activation_by_email: aktivácia úÄtu emailom label_registration_manual_activation: manuálna aktivácia úÄtu label_registration_automatic_activation: automatická aktivácia úÄtu - label_display_per_page: "{{value}} na stránku" + label_display_per_page: "%{value} na stránku" label_age: Vek label_change_properties: ZmeniÅ¥ vlastnosti label_general: VÅ¡eobecné @@ -651,23 +656,23 @@ text_tip_issue_end_day: úloha konÄí v tento deň text_tip_issue_begin_end_day: úloha zaÄína a konÄí v tento deň text_project_identifier_info: 'Povolené znaky sú malé písmena (a-z), Äísla a pomlÄka.
    Po uložení už nieje možné identifikátor zmeniÅ¥.' - text_caracters_maximum: "{{count}} znakov maximálne." - text_caracters_minimum: "Musí byÅ¥ aspoň {{count}} znaky/ov dlhé." - text_length_between: "Dĺžka medzi {{min}} až {{max}} znakmi." + text_caracters_maximum: "%{count} znakov maximálne." + text_caracters_minimum: "Musí byÅ¥ aspoň %{count} znaky/ov dlhé." + text_length_between: "Dĺžka medzi %{min} až %{max} znakmi." text_tracker_no_workflow: Pre tuto frontu nieje definovaný žiadný workflow text_unallowed_characters: Nepovolené znaky text_comma_separated: Je povolené viacero hodnôt (oddelené navzájom Äiarkou). text_issues_ref_in_commit_messages: OdkazovaÅ¥ a upravovaÅ¥ úlohy v správach s následovnym obsahom - text_issue_added: "úloha {{id}} bola vytvorená užívateľom {{author}}." - text_issue_updated: "Úloha {{id}} byla aktualizovaná užívateľom {{author}}." + text_issue_added: "úloha %{id} bola vytvorená užívateľom %{author}." + text_issue_updated: "Úloha %{id} byla aktualizovaná užívateľom %{author}." text_wiki_destroy_confirmation: Naozaj si prajete odstrániÅ¥ túto Wiki a celý jej obsah? - text_issue_category_destroy_question: "Niektoré úlohy ({{count}}) sú priradené k tejto kategórii. ÄŒo chtete s nimi spraviÅ¥?" + text_issue_category_destroy_question: "Niektoré úlohy (%{count}) sú priradené k tejto kategórii. ÄŒo chtete s nimi spraviÅ¥?" text_issue_category_destroy_assignments: ZruÅ¡iÅ¥ priradenie ku kategórii text_issue_category_reassign_to: PriradiÅ¥ úlohy do tejto kategórie text_user_mail_option: "U projektov, které neboli vybrané, budete dostávaÅ¥ oznamenie iba o vaÅ¡ich Äi o sledovaných položkách (napr. o položkách, ktorých ste autor, alebo ku ktorým ste priradený/á)." text_no_configuration_data: "Role, fronty, stavy úloh ani workflow neboli zatiaľ nakonfigurované.\nVelmi doporuÄujeme nahraÅ¥ východziu konfiguráciu. Potom si môžete vÅ¡etko upraviÅ¥" text_load_default_configuration: NahraÅ¥ východziu konfiguráciu - text_status_changed_by_changeset: "Aktualizované v sade zmien {{value}}." + text_status_changed_by_changeset: "Aktualizované v sade zmien %{value}." text_issues_destroy_confirmation: 'Naozaj si prajete odstrániÅ¥ vÅ¡etky zvolené úlohy?' text_select_project_modules: 'Aktivne moduly v tomto projekte:' text_default_administrator_account_changed: Zmenené výchozie nastavenie administrátorského úÄtu @@ -705,20 +710,20 @@ enumeration_activities: Aktivity (sledovanie Äasu) error_scm_annotate: "Položka neexistuje alebo nemôže byÅ¥ komentovaná." label_planning: Plánovanie - text_subprojects_destroy_warning: "Jeho podprojekt(y): {{value}} budú takisto vymazané." - label_and_its_subprojects: "{{value}} a jeho podprojekty" - mail_body_reminder: "{{count}} úloha(y), ktorá(é) je(sú) vám priradený(é), ma(jú) byÅ¥ hotova(é) za {{days}} dní:" - mail_subject_reminder: "{{count}} úloha(y) ma(jú) byÅ¥ hotova(é) za pár {{days}} dní" - text_user_wrote: "{{value}} napísal:" + text_subprojects_destroy_warning: "Jeho podprojekt(y): %{value} budú takisto vymazané." + label_and_its_subprojects: "%{value} a jeho podprojekty" + mail_body_reminder: "%{count} úloha(y), ktorá(é) je(sú) vám priradený(é), ma(jú) byÅ¥ hotova(é) za %{days} dní:" + mail_subject_reminder: "%{count} úloha(y) ma(jú) byÅ¥ hotova(é) za pár %{days} dní" + text_user_wrote: "%{value} napísal:" label_duplicated_by: duplikovaný setting_enabled_scm: Zapnúť SCM text_enumeration_category_reassign_to: 'PrenastaviÅ¥ na túto hodnotu:' - text_enumeration_destroy_question: "{{count}} objekty sú nastavené na túto hodnotu." + text_enumeration_destroy_question: "%{count} objekty sú nastavené na túto hodnotu." label_incoming_emails: Príchádzajúce emaily label_generate_key: VygenerovaÅ¥ kÄ¾ÃºÄ setting_mail_handler_api_enabled: Zapnúť Webovú Službu (WS) pre príchodzie emaily setting_mail_handler_api_key: API kÄ¾ÃºÄ - text_email_delivery_not_configured: "DoruÄenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/email.yml a reÅ¡tartnite aplikáciu pre aktiváciu funkcie." + 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 @@ -779,12 +784,12 @@ permission_delete_own_messages: Mazanie vlastných správ text_repository_usernames_mapping: "Vyberte alebo upravte mapovanie medzi užívateľmi systému Redmine a užívateľskými menami nájdenými v logu repozitára.\nUžívatelia s rovnakým prihlasovacím menom alebo emailom v systéme Redmine a repozitára sú mapovaní automaticky." label_example: Príklad - label_user_activity: "Aktivita užívateľa {{value}}" - label_updated_time_by: "Aktualizované užívateľom {{author}} pred {{age}}" + label_user_activity: "Aktivita užívateľa %{value}" + label_updated_time_by: "Aktualizované užívateľom %{author} pred %{age}" text_diff_truncated: '... Tento rozdielový výpis bol skratený, pretože prekraÄuje maximálnu veľkosÅ¥, ktorá môže byÅ¥ zobrazená.' setting_diff_max_lines_displayed: Maximálne množstvo zobrazených riadkov rozdielového výpisu text_plugin_assets_writable: Adresár pre pluginy s možnosÅ¥ou zápisu - warning_attachments_not_saved: "{{count}} súbor(y) nemohol(li) byÅ¥ uložené." + warning_attachments_not_saved: "%{count} súbor(y) nemohol(li) byÅ¥ uložené." field_editable: Editovateľné label_display: Zobrazenie button_create_and_continue: VytvoriÅ¥ a pokraÄovaÅ¥ @@ -799,22 +804,22 @@ label_descending: Zostupné label_sort: Zoradenie label_ascending: Rastúce - label_date_from_to: Od {{start}} do {{end}} + label_date_from_to: Od %{start} do %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Táto stránka má {{descendants}} podstránku/y a potomka/ov. ÄŒo chcete vykonaÅ¥? + text_wiki_page_destroy_question: Táto stránka má %{descendants} podstránku/y a potomka/ov. ÄŒo chcete vykonaÅ¥? text_wiki_page_reassign_children: PreradiÅ¥ podstránky k tejto hlavnej stránke text_wiki_page_nullify_children: ZachovaÅ¥ podstránky ako hlavné stránky text_wiki_page_destroy_children: VymazaÅ¥ podstránky a vÅ¡etkých ich potomkov setting_password_min_length: Minimálna dĺžka hesla field_group_by: Skupinové výsledky podľa - mail_subject_wiki_content_updated: "'{{id}}' Wiki stránka bola aktualizovaná" + mail_subject_wiki_content_updated: "'%{id}' Wiki stránka bola aktualizovaná" label_wiki_content_added: Wiki stránka pridaná - mail_subject_wiki_content_added: "'{{id}}' Wiki stránka bola pridaná" - mail_body_wiki_content_added: The '{{id}}' Wiki stránka bola pridaná užívateľom {{author}}. + mail_subject_wiki_content_added: "'%{id}' Wiki stránka bola pridaná" + mail_body_wiki_content_added: The '%{id}' Wiki stránka bola pridaná užívateľom %{author}. permission_add_project: Vytvorenie projektu label_wiki_content_updated: Wiki stránka aktualizovaná - mail_body_wiki_content_updated: Wiki stránka '{{id}}' bola aktualizovaná užívateľom {{author}}. + mail_body_wiki_content_updated: Wiki stránka '%{id}' bola aktualizovaná užívateľom %{author}. setting_repositories_encodings: Kódovanie repozitára setting_new_project_user_role_id: Rola dána non-admin užívateľovi, ktorý vytvorí projekt label_view_all_revisions: ZobraziÅ¥ vÅ¡etkz revízie @@ -822,14 +827,14 @@ label_branch: Vetva error_no_tracker_in_project: K tomuto projektu nieje priradená žiadna fronta. Prosím skontrolujte nastavenie projektu. error_no_default_issue_status: Nieje definovaný východzí stav úlohy. Prosím skontrolujte vase nastavenie (ChoÄte na "Administrácia -> Stavz úloh"). - text_journal_changed: "{{label}} zmenené z {{old}} na {{new}}" - text_journal_set_to: "{{label}} nastavené na {{value}}" - text_journal_deleted: "{{label}} zmazané ({{old}})" + text_journal_changed: "%{label} zmenené z %{old} na %{new}" + text_journal_set_to: "%{label} nastavené na %{value}" + text_journal_deleted: "%{label} zmazané (%{old})" label_group_plural: Skupiny label_group: Skupina label_group_new: Nová skupina label_time_entry_plural: Strávený Äas - text_journal_added: "{{label}} {{value}} pridané" + text_journal_added: "%{label} %{value} pridané" field_active: Aktívne enumeration_system_activity: Aktivita systému permission_delete_issue_watchers: OdstrániÅ¥ pozorovateľov @@ -864,9 +869,9 @@ setting_start_of_week: Å tart pracovného týždňa v permission_view_issues: ZobraziÅ¥ úlohy label_display_used_statuses_only: ZobraziÅ¥ len stavy, ktoré sú priradené k tejto fronte - label_revision_id: Revízia {{value}} + label_revision_id: Revízia %{value} label_api_access_key: API prístupový kÄ¾ÃºÄ - label_api_access_key_created_on: API prístupový kÄ¾ÃºÄ vytvorený pred {{value}} + label_api_access_key_created_on: API prístupový kÄ¾ÃºÄ vytvorený pred %{value} label_feeds_access_key: RSS prístupový kÄ¾ÃºÄ notice_api_access_key_reseted: Váš API prístupový kÄ¾ÃºÄ bol resetovaný. setting_rest_api_enabled: Zapnúť REST web službu @@ -893,12 +898,12 @@ label_subtask_plural: Podúlohy label_project_copy_notifications: ZaslaÅ¥ emailové upozornenie behom kopírovania projektu error_can_not_delete_custom_field: Nieje možné vymazaÅ¥ užívateľské pole - error_unable_to_connect: Nieje možné vymazaÅ¥ ({{value}}) + error_unable_to_connect: Nieje možné vymazaÅ¥ (%{value}) error_can_not_remove_role: Táto roľa sa používa a nemôže byÅ¥ vymazaná. error_can_not_delete_tracker: Táto fronta obsahuje úlohy a nemôže byÅ¥ vymazaná. field_principal: Principal label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." + 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. @@ -906,7 +911,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -917,8 +922,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/sl.yml.svn-base --- a/config/locales/.svn/text-base/sl.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/sl.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "ni vkljuÄen na seznamu" exclusion: "je rezerviran" @@ -106,11 +110,11 @@ taken: "je že zaseden" not_a_number: "ni Å¡tevilo" not_a_date: "ni veljaven datum" - 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}}" + 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: "mora biti kasnejÅ¡i kot zaÄeten datum" @@ -147,34 +151,34 @@ notice_file_not_found: Stran na katero se želite povezati ne obstaja ali pa je bila umaknjena. notice_locking_conflict: Drug uporabnik je posodobil podatke. notice_not_authorized: Nimate privilegijev za dostop do te strani. - notice_email_sent: "E-poÅ¡tno sporoÄilo je bilo poslano {{value}}" - notice_email_error: "Ob poÅ¡iljanju e-sporoÄila je priÅ¡lo do napake ({{value}})" + notice_email_sent: "E-poÅ¡tno sporoÄilo je bilo poslano %{value}" + notice_email_error: "Ob poÅ¡iljanju e-sporoÄila je priÅ¡lo do napake (%{value})" notice_feeds_access_key_reseted: VaÅ¡ RSS dostopni kljuÄ je bil ponastavljen. - notice_failed_to_save_issues: "Neuspelo shranjevanje {{count}} zahtevka na {{total}} izbranem: {{ids}}." + notice_failed_to_save_issues: "Neuspelo shranjevanje %{count} zahtevka na %{total} izbranem: %{ids}." notice_no_issue_selected: "Izbran ni noben zahtevek! Prosimo preverite zahtevke, ki jih želite urediti." notice_account_pending: "VaÅ¡ raÄun je bil ustvarjen in Äaka na potrditev s strani administratorja." notice_default_data_loaded: Privzete nastavitve so bile uspeÅ¡no naložene. notice_unable_delete_version: Verzije ni bilo mogoÄe izbrisati. - error_can_t_load_default_data: "Privzetih nastavitev ni bilo mogoÄe naložiti: {{value}}" + error_can_t_load_default_data: "Privzetih nastavitev ni bilo mogoÄe naložiti: %{value}" error_scm_not_found: "Vnos ali revizija v shrambi ni bila najdena ." - error_scm_command_failed: "Med vzpostavljem povezave s shrambo je priÅ¡lo do napake: {{value}}" + error_scm_command_failed: "Med vzpostavljem povezave s shrambo je priÅ¡lo do napake: %{value}" error_scm_annotate: "Vnos ne obstaja ali pa ga ni mogoÄe komentirati." error_issue_not_found_in_project: 'Zahtevek ni bil najden ali pa ne pripada temu projektu' - mail_subject_lost_password: "VaÅ¡e {{value}} geslo" + mail_subject_lost_password: "VaÅ¡e %{value} geslo" mail_body_lost_password: 'Za spremembo glesla kliknite na naslednjo povezavo:' - mail_subject_register: "Aktivacija {{value}} vaÅ¡ega raÄuna" + mail_subject_register: "Aktivacija %{value} vaÅ¡ega raÄuna" mail_body_register: 'Za aktivacijo vaÅ¡ega raÄuna kliknite na naslednjo povezavo:' - mail_body_account_information_external: "Za prijavo lahko uporabite vaÅ¡ {{value}} raÄun." + mail_body_account_information_external: "Za prijavo lahko uporabite vaÅ¡ %{value} raÄun." mail_body_account_information: Informacije o vaÅ¡em raÄunu - mail_subject_account_activation_request: "{{value}} zahtevek za aktivacijo raÄuna" - mail_body_account_activation_request: "Registriral se je nov uporabnik ({{value}}). RaÄun Äaka na vaÅ¡o odobritev:" - mail_subject_reminder: "{{count}} zahtevek(zahtevki) zapadejo v naslednjih {{days}} dneh" - mail_body_reminder: "{{count}} zahtevek(zahtevki), ki so vam dodeljeni bodo zapadli v naslednjih {{days}} dneh:" + mail_subject_account_activation_request: "%{value} zahtevek za aktivacijo raÄuna" + mail_body_account_activation_request: "Registriral se je nov uporabnik (%{value}). RaÄun Äaka na vaÅ¡o odobritev:" + mail_subject_reminder: "%{count} zahtevek(zahtevki) zapadejo v naslednjih %{days} dneh" + mail_body_reminder: "%{count} zahtevek(zahtevki), ki so vam dodeljeni bodo zapadli v naslednjih %{days} dneh:" gui_validation_error: 1 napaka - gui_validation_error_plural: "{{count}} napak" + gui_validation_error_plural: "%{count} napak" field_name: Ime field_description: Opis @@ -236,6 +240,7 @@ field_attr_lastname: Oznaka za priimek field_attr_mail: Oznaka za e-naslov field_onthefly: Sprotna izdelava uporabnikov + field_start_date: ZaÄetek field_done_ratio: % Narejeno field_auth_source: NaÄin overovljanja field_hide_mail: Skrij moj e-naslov @@ -367,14 +372,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Vsi projekti label_project_latest: Zadnji projekti label_issue: Zahtevek label_issue_new: Nov zahtevek label_issue_plural: Zahtevki label_issue_view_all: Poglej vse zahtevke - label_issues_by: "Zahtevki od {{value}}" + label_issues_by: "Zahtevki od %{value}" label_issue_added: Zahtevek dodan label_issue_updated: Zahtevek posodobljen label_document: Dokument @@ -422,7 +427,7 @@ label_registered_on: Registriran label_activity: Aktivnost label_overall_activity: Celotna aktivnost - label_user_activity: "Aktivnost {{value}}" + label_user_activity: "Aktivnost %{value}" label_new: Nov label_logged_as: Prijavljen(a) kot label_environment: Okolje @@ -431,7 +436,7 @@ label_auth_source_new: Nov naÄin overovitve label_auth_source_plural: NaÄini overovitve label_subproject_plural: Podprojekti - label_and_its_subprojects: "{{value}} in njegovi podprojekti" + label_and_its_subprojects: "%{value} in njegovi podprojekti" label_min_max_length: Min - Max dolžina label_list: Seznam label_date: Datum @@ -442,8 +447,8 @@ label_text: Dolgo besedilo label_attribute: Lastnost label_attribute_plural: Lastnosti - label_download: "{{count}} Prenos" - label_download_plural: "{{count}} Prenosi" + label_download: "%{count} Prenos" + label_download_plural: "%{count} Prenosi" label_no_data: Ni podatkov za prikaz label_change_status: Spremeni stanje label_history: Zgodovina @@ -474,17 +479,17 @@ label_closed_issues: zapri zahtevek label_closed_issues_plural: zapri zahtevke label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Skupaj label_permissions: Dovoljenja label_current_status: Trenutno stanje @@ -502,7 +507,7 @@ label_months_from: mesecev od label_gantt: Gantt label_internal: Notranji - label_last_changes: "zadnjih {{count}} sprememb" + label_last_changes: "zadnjih %{count} sprememb" label_change_view_all: Poglej vse spremembe label_personalize_page: Individualiziraj to stran label_comment: Komentar @@ -510,7 +515,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Dodaj komentar label_comment_added: Komentar dodan label_comment_delete: IzbriÅ¡i komentarje @@ -529,7 +534,7 @@ label_yesterday: vÄeraj label_this_week: ta teden label_last_week: pretekli teden - label_last_n_days: "zadnjih {{count}} dni" + label_last_n_days: "zadnjih %{count} dni" label_this_month: ta mesec label_last_month: zadnji mesec label_this_year: to leto @@ -543,8 +548,8 @@ label_repository: Shramba label_repository_plural: Shrambe label_browse: Prebrskaj - label_modification: "{{count}} sprememba" - label_modification_plural: "{{count}} spremembe" + label_modification: "%{count} sprememba" + label_modification_plural: "%{count} spremembe" label_revision: Revizija label_revision_plural: Revizije label_associated_revisions: Povezane revizije @@ -562,8 +567,8 @@ label_sort_lower: Premakni dol label_sort_lowest: Premakni na dno label_roadmap: NaÄrt - label_roadmap_due_in: "Do {{value}}" - label_roadmap_overdue: "{{value}} zakasnel" + label_roadmap_due_in: "Do %{value}" + label_roadmap_overdue: "%{value} zakasnel" label_roadmap_no_issues: Ni zahtevkov za to verzijo label_search: IÅ¡Äi label_result_plural: Rezultati @@ -581,8 +586,8 @@ label_changes_details: Podrobnosti o vseh spremembah label_issue_tracking: Sledenje zahtevkom label_spent_time: Porabljen Äas - label_f_hour: "{{value}} ura" - label_f_hour_plural: "{{value}} ur" + label_f_hour: "%{value} ura" + label_f_hour_plural: "%{value} ur" label_time_tracking: Sledenje Äasu label_change_plural: Spremembe label_statistics: Statistika @@ -631,13 +636,13 @@ label_date_from: Do label_date_to: Do label_language_based: Glede na uporabnikov jezik - label_sort_by: "Razporedi po {{value}}" + label_sort_by: "Razporedi po %{value}" label_send_test_email: PoÅ¡lji testno e-pismo - label_feeds_access_key_created_on: "RSS dostopni kljuÄ narejen {{value}} nazaj" + label_feeds_access_key_created_on: "RSS dostopni kljuÄ narejen %{value} nazaj" label_module_plural: Moduli - label_added_time_by: "Dodan {{author}} {{age}} nazaj" - label_updated_time_by: "Posodobljen od {{author}} {{age}} nazaj" - label_updated_time: "Posodobljen {{value}} nazaj" + label_added_time_by: "Dodan %{author} %{age} nazaj" + label_updated_time_by: "Posodobljen od %{author} %{age} nazaj" + label_updated_time: "Posodobljen %{value} nazaj" label_jump_to_a_project: SkoÄi na projekt... label_file_plural: Datoteke label_changeset_plural: Zapisi sprememb @@ -653,7 +658,7 @@ label_registration_activation_by_email: aktivacija raÄuna po e-poÅ¡ti label_registration_manual_activation: roÄna aktivacija raÄuna label_registration_automatic_activation: samodejna aktivacija raÄuna - label_display_per_page: "Na stran: {{value}}" + label_display_per_page: "Na stran: %{value}" label_age: Starost label_change_properties: Sprememba lastnosti label_general: SploÅ¡no @@ -720,43 +725,43 @@ text_regexp_info: npr. ^[A-Z0-9]+$ text_min_max_length_info: 0 pomeni brez omejitev text_project_destroy_confirmation: Ali ste prepriÄani da želite izbrisati izbrani projekt in vse z njim povezane podatke? - text_subprojects_destroy_warning: "Njegov(i) podprojekt(i): {{value}} bodo prav tako izbrisani." + text_subprojects_destroy_warning: "Njegov(i) podprojekt(i): %{value} bodo prav tako izbrisani." text_workflow_edit: Izberite vlogo in zahtevek za urejanje poteka dela text_are_you_sure: Ali ste prepriÄani? text_tip_issue_begin_day: naloga z zaÄetkom na ta dan text_tip_issue_end_day: naloga z zakljuÄkom na ta dan text_tip_issue_begin_end_day: naloga ki se zaÄne in konÄa ta dan text_project_identifier_info: 'Dovoljene so samo male Ärke (a-z), Å¡tevilke in vezaji.
    Enkrat shranjen identifikator ne more biti spremenjen.' - text_caracters_maximum: "najveÄ {{count}} znakov." - text_caracters_minimum: "Mora biti vsaj dolg vsaj {{count}} znakov." - text_length_between: "Dolžina med {{min}} in {{max}} znakov." + text_caracters_maximum: "najveÄ %{count} znakov." + text_caracters_minimum: "Mora biti vsaj dolg vsaj %{count} znakov." + text_length_between: "Dolžina med %{min} in %{max} znakov." text_tracker_no_workflow: Potek dela za to vrsto zahtevka ni doloÄen text_unallowed_characters: Nedovoljeni znaki text_comma_separated: Dovoljenih je veÄ vrednosti (loÄenih z vejico). text_issues_ref_in_commit_messages: Zahtevki sklicev in popravkov v sporoÄilu predaje - text_issue_added: "Zahtevek {{id}} je sporoÄil(a) {{author}}." - text_issue_updated: "Zahtevek {{id}} je posodobil(a) {{author}}." + text_issue_added: "Zahtevek %{id} je sporoÄil(a) %{author}." + text_issue_updated: "Zahtevek %{id} je posodobil(a) %{author}." text_wiki_destroy_confirmation: Ali ste prepriÄani da želite izbrisati ta wiki in vso njegovo vsebino? - text_issue_category_destroy_question: "Nekateri zahtevki ({{count}}) so dodeljeni tej kategoriji. Kaj želite storiti?" + text_issue_category_destroy_question: "Nekateri zahtevki (%{count}) so dodeljeni tej kategoriji. Kaj želite storiti?" text_issue_category_destroy_assignments: Odstrani naloge v kategoriji text_issue_category_reassign_to: Ponovno dodeli zahtevke tej kategoriji text_user_mail_option: "Na neizbrane projekte boste prejemali le obvestila o zadevah ki jih spremljate ali v katere ste vkljuÄeni (npr. zahtevki katerih avtor(ica) ste)" text_no_configuration_data: "Vloge, vrste zahtevkov, statusi zahtevkov in potek dela Å¡e niso bili doloÄeni. \nZelo priporoÄljivo je, da naložite privzeto konfiguracijo, ki jo lahko kasneje tudi prilagodite." text_load_default_configuration: Naloži privzeto konfiguracijo - text_status_changed_by_changeset: "Dodano v zapis sprememb {{value}}." + text_status_changed_by_changeset: "Dodano v zapis sprememb %{value}." text_issues_destroy_confirmation: 'Ali ste prepriÄani, da želite izbrisati izbrani(e) zahtevek(ke)?' text_select_project_modules: 'Izberite module, ki jih želite omogoÄiti za ta projekt:' text_default_administrator_account_changed: Spremenjen privzeti administratorski raÄun text_file_repository_writable: OmogoÄeno pisanje v shrambo datotek text_rmagick_available: RMagick je na voljo(neobvezno) - text_destroy_time_entries_question: "{{hours}} ur je bilo opravljenih na zahtevku, ki ga želite izbrisati. Kaj želite storiti?" + text_destroy_time_entries_question: "%{hours} ur je bilo opravljenih na zahtevku, ki ga želite izbrisati. Kaj želite storiti?" text_destroy_time_entries: IzbriÅ¡i opravljene ure text_assign_time_entries_to_project: Predaj opravljene ure projektu text_reassign_time_entries: 'Prenesi opravljene ure na ta zahtevek:' - text_user_wrote: "{{value}} je napisal(a):" - text_enumeration_destroy_question: "{{count}} objektov je doloÄenih tej vrednosti." + text_user_wrote: "%{value} je napisal(a):" + text_enumeration_destroy_question: "%{count} objektov je doloÄenih tej vrednosti." text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:' - text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/email.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" + text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/configuration.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniÅ¡kemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniÅ¡kem imenu ali e-poÅ¡tnem naslovu so samodejno dodeljeni." text_diff_truncated: '... Ta sprememba je bila odsekana ker presega najveÄjo velikost ki je lahko prikazana.' @@ -785,7 +790,7 @@ enumeration_issue_priorities: Prioritete zahtevkov enumeration_doc_categories: Kategorije dokumentov enumeration_activities: Aktivnosti (sledenje Äasa) - warning_attachments_not_saved: "{{count}} file(s) could not be saved." + warning_attachments_not_saved: "%{count} file(s) could not be saved." field_editable: Editable text_plugin_assets_writable: Plugin assets directory writable label_display: Display @@ -801,21 +806,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -823,14 +828,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -865,9 +870,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -894,12 +899,12 @@ 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_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}}." + 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. @@ -907,7 +912,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -918,8 +923,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/sr-YU.yml.svn-base --- a/config/locales/.svn/text-base/sr-YU.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/sr-YU.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,929 +1,942 @@ -# 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: - 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_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/email.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 +# 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/sr.yml.svn-base --- a/config/locales/.svn/text-base/sr.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/sr.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -34,37 +34,37 @@ half_a_minute: "пола минута" less_than_x_seconds: one: "мање од једне Ñекунде" - other: "мање од {{count}} Ñек." + other: "мање од %{count} Ñек." x_seconds: one: "једна Ñекунда" - other: "{{count}} Ñек." + other: "%{count} Ñек." less_than_x_minutes: one: "мање од минута" - other: "мање од {{count}} мин." + other: "мање од %{count} мин." x_minutes: one: "један минут" - other: "{{count}} мин." + other: "%{count} мин." about_x_hours: one: "приближно један Ñат" - other: "приближно {{count}} Ñати" + other: "приближно %{count} Ñати" x_days: one: "један дан" - other: "{{count}} дана" + other: "%{count} дана" about_x_months: one: "приближно један меÑец" - other: "приближно {{count}} меÑеци" + other: "приближно %{count} меÑеци" x_months: one: "један меÑец" - other: "{{count}} меÑеци" + other: "%{count} меÑеци" about_x_years: one: "приближно годину дана" - other: "приближно {{count}} год." + other: "приближно %{count} год." over_x_years: one: "преко годину дана" - other: "преко {{count}} год." + other: "преко %{count} год." almost_x_years: one: "Ñкоро годину дана" - other: "Ñкоро {{count}} год." + other: "Ñкоро %{count} год." number: format: @@ -95,6 +95,10 @@ 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: "је резервиÑан" @@ -103,17 +107,17 @@ accepted: "мора бити прихваћен" empty: "не може бити празно" blank: "не може бити празно" - too_long: "је предугачка (макÑимум знакова је {{count}})" - too_short: "је прекратка (минимум знакова је {{count}})" - wrong_length: "је погрешне дужине (број знакова мора бити {{count}})" + 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}}" + 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: "мора бити већи од почетног датума" @@ -150,12 +154,12 @@ notice_file_not_found: Страна којој желите приÑтупити не поÑтоји или је уклоњена. notice_locking_conflict: Податак је ажуриран од Ñтране другог кориÑника. notice_not_authorized: ÐиÑте овлашћени за приÑтуп овој Ñтрани. - notice_email_sent: "E-порука је поÑлата на {{value}}" - notice_email_error: "Догодила Ñе грешка приликом Ñлања е-поруке ({{value}})" + notice_email_sent: "E-порука је поÑлата на %{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_failed_to_save_issues: "ÐеуÑпешно Ñнимање %{count} проблема од %{total} одабраних: %{ids}." + notice_failed_to_save_members: "ÐеуÑпешно Ñнимање члана(ова): %{errors}." notice_no_issue_selected: "Ðи један проблем није одабран! Молимо, одаберите проблем који желите да мењате." notice_account_pending: "Ваш налог је креиран и чека на одобрење админиÑтратора." notice_default_data_loaded: Подразумевано конфигуриÑање је уÑпешно учитано. @@ -163,9 +167,9 @@ notice_unable_delete_time_entry: Ставку евиденције времена је немогуће избриÑати. notice_issue_done_ratios_updated: ÐžÐ´Ð½Ð¾Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ… проблема је ажуриран. - error_can_t_load_default_data: "Подразумевано конфигуриÑање је немогуће учитати: {{value}}" + error_can_t_load_default_data: "Подразумевано конфигуриÑање је немогуће учитати: %{value}" error_scm_not_found: "Ставка или иÑправка ниÑу пронађене у Ñпремишту." - error_scm_command_failed: "Грешка Ñе јавила приликом покушаја приÑтупа Ñпремишту: {{value}}" + error_scm_command_failed: "Грешка Ñе јавила приликом покушаја приÑтупа Ñпремишту: %{value}" error_scm_annotate: "Ставка не поÑтоји или не може бити означена." error_issue_not_found_in_project: 'Проблем није пронађен или не припада овом пројекту.' error_no_tracker_in_project: 'Ðи једно праћење није повезано Ñа овим пројектом. Молимо проверите подешавања пројекта.' @@ -179,26 +183,26 @@ error_workflow_copy_source: 'Молимо одаберите изворно праћење или улогу' error_workflow_copy_target: 'Молимо одаберите одредишно праћење и улогу' error_unable_delete_issue_status: 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° је немогуће обриÑати' - error_unable_to_connect: "Повезивање Ñа ({{value}}) је немогуће" - warning_attachments_not_saved: "{{count}} датотека не може бити Ñнимљена." + error_unable_to_connect: "Повезивање Ñа (%{value}) је немогуће" + warning_attachments_not_saved: "%{count} датотека не може бити Ñнимљена." - mail_subject_lost_password: "Ваша {{value}} лозинка" + mail_subject_lost_password: "Ваша %{value} лозинка" mail_body_lost_password: 'За промену ваше лозинке, кликните на Ñледећи линк:' - mail_subject_register: "Ðктивација вашег {{value}} налога" + mail_subject_register: "Ðктивација вашег %{value} налога" mail_body_register: 'За активацију вашег налога, кликните на Ñледећи линк:' - mail_body_account_information_external: "Ваш налог {{value}} можете кориÑтити за пријаву." + 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: "Wiki Ñтраница '{{id}}' је додата" - mail_body_wiki_content_added: "{{author}} је додао wiki Ñтраницу '{{id}}'." - mail_subject_wiki_content_updated: "Wiki Ñтраница '{{id}}' је ажурирана" - mail_body_wiki_content_updated: "{{author}} је ажурирао wiki Ñтраницу '{{id}}'." + 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: "Wiki Ñтраница '%{id}' је додата" + 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: једна грешка - gui_validation_error_plural: "{{count}} грешака" + gui_validation_error_plural: "%{count} грешака" field_name: Ðазив field_description: ÐžÐ¿Ð¸Ñ @@ -261,6 +265,7 @@ field_attr_lastname: Ðтрибут презимена field_attr_mail: Ðтрибут е-адреÑе field_onthefly: Креирање кориÑника у току рада + field_start_date: Почетак field_done_ratio: % урађено field_auth_source: Режим потврде идентитета field_hide_mail: Сакриј моју е-адреÑу @@ -421,14 +426,14 @@ label_x_projects: zero: нема пројеката one: један пројекат - other: "{{count}} пројеката" + 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_issues_by: "Проблеми (%{value})" label_issue_added: Проблем је додат label_issue_updated: Проблем је ажуриран label_document: Документ @@ -478,7 +483,7 @@ label_registered_on: РегиÑтрован label_activity: ÐктивноÑÑ‚ label_overall_activity: Целокупна активноÑÑ‚ - label_user_activity: "ÐктивноÑÑ‚ кориÑника {{value}}" + label_user_activity: "ÐктивноÑÑ‚ кориÑника %{value}" label_new: Ðово label_logged_as: Пријављени Ñте као label_environment: Окружење @@ -488,7 +493,7 @@ label_auth_source_plural: Режими потврде идентитета label_subproject_plural: Потпројекти label_subproject_new: Ðови потпројекат - label_and_its_subprojects: "{{value}} и његови потпројекти" + label_and_its_subprojects: "%{value} и његови потпројекти" label_min_max_length: Мин. - МакÑ. дужина label_list: СпиÑак label_date: Датум @@ -499,8 +504,8 @@ label_text: Дуги текÑÑ‚ label_attribute: ОÑобина label_attribute_plural: ОÑобине - label_download: "{{count}} преузимање" - label_download_plural: "{{count}} преузимања" + label_download: "%{count} преузимање" + label_download_plural: "%{count} преузимања" label_no_data: Ðема података за приказивање label_change_status: Промена ÑтатуÑа label_history: ИÑторија @@ -532,17 +537,17 @@ label_closed_issues: затворен label_closed_issues_plural: затворених label_x_open_issues_abbr_on_total: - zero: 0 отворених / {{total}} - one: 1 отворен / {{total}} - other: "{{count}} отворених / {{total}}" + zero: 0 отворених / %{total} + one: 1 отворен / %{total} + other: "%{count} отворених / %{total}" label_x_open_issues_abbr: zero: 0 отворених one: 1 отворен - other: "{{count}} отворених" + other: "%{count} отворених" label_x_closed_issues_abbr: zero: 0 затворених one: 1 затворен - other: "{{count}} затворених" + other: "%{count} затворених" label_total: Укупно label_permissions: Дозволе label_current_status: Тренутни ÑÑ‚Ð°Ñ‚ÑƒÑ @@ -560,7 +565,7 @@ label_months_from: меÑеци од label_gantt: Гантов дијаграм label_internal: Унутрашњи - label_last_changes: "поÑледњих {{count}} промена" + label_last_changes: "поÑледњих %{count} промена" label_change_view_all: Прикажи Ñве промене label_personalize_page: ПерÑонализуј ову Ñтрану label_comment: Коментар @@ -568,7 +573,7 @@ label_x_comments: zero: без коментара one: један коментар - other: "{{count}} коментара" + other: "%{count} коментара" label_comment_add: Додај коментар label_comment_added: Коментар додат label_comment_delete: Обриши коментаре @@ -589,7 +594,7 @@ label_yesterday: јуче 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: ове године @@ -603,13 +608,13 @@ label_repository: Спремиште label_repository_plural: Спремишта label_browse: Прегледање - label_modification: "{{count}} промена" - label_modification_plural: "{{count}} промена" + label_modification: "%{count} промена" + label_modification_plural: "%{count} промена" label_branch: Грана label_tag: Ознака label_revision: Ревизија label_revision_plural: Ревизије - label_revision_id: "Ревизија {{value}}" + label_revision_id: "Ревизија %{value}" label_associated_revisions: Придружене ревизије label_added: додато label_modified: промењено @@ -626,8 +631,8 @@ label_sort_lower: Премештање на доле label_sort_lowest: Премештање на дно label_roadmap: План рада - label_roadmap_due_in: "ДоÑпева {{value}}" - label_roadmap_overdue: "{{value}} најкаÑније" + label_roadmap_due_in: "ДоÑпева %{value}" + label_roadmap_overdue: "%{value} најкаÑније" label_roadmap_no_issues: Ðема проблема за ову верзију label_search: Претрага label_result_plural: Резултати @@ -646,8 +651,8 @@ label_issue_tracking: Праћење проблема label_spent_time: Утрошено време label_overall_spent_time: Целокупно утрошено време - label_f_hour: "{{value}} Ñат" - label_f_hour_plural: "{{value}} Ñати" + label_f_hour: "%{value} Ñат" + label_f_hour_plural: "%{value} Ñати" label_time_tracking: Праћење времена label_change_plural: Промене label_statistics: СтатиÑтика @@ -698,15 +703,15 @@ label_date_from: Шаље label_date_to: Прима label_language_based: Базирано на језику кориÑника - label_sort_by: "Сортирано по {{value}}" + 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_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_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: Скупови промена @@ -722,7 +727,7 @@ label_registration_activation_by_email: активација налога путем е-поруке label_registration_manual_activation: ручна активација налога label_registration_automatic_activation: аутоматÑка активација налога - label_display_per_page: "Број Ñтавки по Ñтраници: {{value}}" + label_display_per_page: "Број Ñтавки по Ñтраници: %{value}" label_age: СтароÑÑ‚ label_change_properties: Промени ÑвојÑтва label_general: Општи @@ -745,7 +750,7 @@ label_sort: Сортирање label_ascending: РаÑтући низ label_descending: Опадајући низ - label_date_from_to: Од {{start}} до {{end}} + label_date_from_to: Од %{start} до %{end} label_wiki_content_added: Wiki Ñтраница је додата label_wiki_content_updated: Wiki Ñтраница је ажурирана label_group: Група @@ -764,7 +769,7 @@ label_display_used_statuses_only: Приказуј ÑтатуÑе коришћене Ñамо од Ñтране овог праћења label_api_access_key: API приÑтупни кључ label_missing_api_access_key: ÐедоÑтаје API приÑтупни кључ - label_api_access_key_created_on: "API приÑтупни кључ је креиран пре {{value}}" + label_api_access_key_created_on: "API приÑтупни кључ је креиран пре %{value}" label_profile: Профил label_subtask_plural: Подзадатак label_project_copy_notifications: Пошаљи е-поруку Ñа обавештењем приликом копирања пројекта @@ -827,53 +832,53 @@ 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_journal_changed: "{{label}} промењен од {{old}} у {{new}}" - text_journal_set_to: "{{label}} поÑтављен у {{value}}" - text_journal_deleted: "{{label}} избриÑано ({{old}})" - text_journal_added: "{{label}} {{value}} додато" + 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-ш), бројеви и цртице.
    Једном Ñнимљен идентификатор више Ñе не може променити.' - text_caracters_maximum: "Ðајвише {{count}} знак(ова)." - text_caracters_minimum: "Број знакова мора бити најмање {{count}}." - text_length_between: "Број знакова мора бити између {{min}} и {{max}}." + 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: Дозвољене Ñу вишеÑтруке вредноÑти (један ред за Ñваку вредноÑÑ‚). text_issues_ref_in_commit_messages: Референцирање и поправљање проблема у извршним порукама - text_issue_added: "{{author}} је пријавио проблем {{id}}." - text_issue_updated: "{{author}} је ажурирао проблем {{id}}." + text_issue_added: "%{author} је пријавио проблем %{id}." + text_issue_updated: "%{author} је ажурирао проблем %{id}." text_wiki_destroy_confirmation: ЈеÑте ли Ñигурни да желите да обришете wiki и Ñав Ñадржај? - text_issue_category_destroy_question: "Ðеколико проблема ({{count}}) је додељено овој категорији. Шта желите да урадите?" + 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_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_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_user_wrote: "%{value} је напиÑао:" + text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредноÑти." text_enumeration_category_reassign_to: 'Додели их поново овој вредноÑти:' - text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/email.yml и покрените поново апликацију за њихово омогућавање." + text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/configuration.yml и покрените поново апликацију за њихово омогућавање." 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_destroy_question: "Ова Ñтраница има %{descendants} подређених Ñтраница и подÑтраница. Шта желите да урадите?" text_wiki_page_nullify_children: "Задржи подређене Ñтранице као корене Ñтранице" text_wiki_page_destroy_children: "Избриши подређене Ñтранице и Ñве њихове подÑтранице" text_wiki_page_reassign_children: "Додели поново подређене Ñтранице овој матичној Ñтраници" @@ -912,7 +917,7 @@ project_module_gantt: Гантов дијаграм project_module_calendar: Календар - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -923,8 +928,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/sv.yml.svn-base --- a/config/locales/.svn/text-base/sv.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/sv.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -54,7 +54,7 @@ byte: one: "Byte" other: "Bytes" - kb: "KB" + kb: "kB" mb: "MB" gb: "GB" tb: "TB" @@ -65,44 +65,44 @@ half_a_minute: "en halv minut" less_than_x_seconds: one: "mindre än en sekund" - other: "mindre än {{count}} sekunder" + other: "mindre än %{count} sekunder" x_seconds: one: "en sekund" - other: "{{count}} sekunder" + other: "%{count} sekunder" less_than_x_minutes: one: "mindre än en minut" - other: "mindre än {{count}} minuter" + other: "mindre än %{count} minuter" x_minutes: one: "en minut" - other: "{{count}} minuter" + other: "%{count} minuter" about_x_hours: one: "ungefär en timme" - other: "ungefär {{count}} timmar" + other: "ungefär %{count} timmar" x_days: one: "en dag" - other: "{{count}} dagar" + other: "%{count} dagar" about_x_months: one: "ungefär en mÃ¥nad" - other: "ungefär {{count}} mÃ¥nader" + other: "ungefär %{count} mÃ¥nader" x_months: one: "en mÃ¥nad" - other: "{{count}} mÃ¥nader" + other: "%{count} mÃ¥nader" about_x_years: one: "ungefär ett Ã¥r" - other: "ungefär {{count}} Ã¥r" + other: "ungefär %{count} Ã¥r" over_x_years: one: "mer än ett Ã¥r" - other: "mer än {{count}} Ã¥r" + other: "mer än %{count} Ã¥r" almost_x_years: one: "nästan 1 Ã¥r" - other: "nästan {{count}} Ã¥r" + other: "nästan %{count} Ã¥r" activerecord: errors: template: header: - one: "Ett fel förhindrade denna {{model}} frÃ¥n att sparas" - other: "{{count}} fel förhindrade denna {{model}} frÃ¥n att sparas" + one: "Ett fel förhindrade denna %{model} frÃ¥n att sparas" + other: "%{count} fel förhindrade denna %{model} frÃ¥n att sparas" # The variable :count is also available body: "Det var problem med följande fält:" # The values :model, :attribute and :value are always available for interpolation @@ -115,16 +115,16 @@ accepted : "mÃ¥ste vara accepterad" empty: "fÃ¥r ej vara tom" blank: "mÃ¥ste anges" - too_long: "är för lÃ¥ng (maximum är {{count}} tecken)" - too_short: "är för kort (minimum är {{count}} tecken)" - wrong_length: "har fel längd (ska vara {{count}} tecken)" + too_long: "är för lÃ¥ng (maximum är %{count} tecken)" + too_short: "är för kort (minimum är %{count} tecken)" + wrong_length: "har fel längd (ska vara %{count} tecken)" taken: "har redan tagits" not_a_number: "är inte ett nummer" - greater_than: "mÃ¥ste vara större än {{count}}" - greater_than_or_equal_to: "mÃ¥ste vara större än eller lika med {{count}}" + greater_than: "mÃ¥ste vara större än %{count}" + greater_than_or_equal_to: "mÃ¥ste vara större än eller lika med %{count}" equal_to: "mÃ¥ste vara samma som" - less_than: "mÃ¥ste vara mindre än {{count}}" - less_than_or_equal_to: "mÃ¥ste vara mindre än eller lika med {{count}}" + less_than: "mÃ¥ste vara mindre än %{count}" + less_than_or_equal_to: "mÃ¥ste vara mindre än eller lika med %{count}" odd: "mÃ¥ste vara udda" even: "mÃ¥ste vara jämnt" greater_than_start_date: "mÃ¥ste vara senare än startdatumet" @@ -196,28 +196,29 @@ notice_locking_conflict: Data har uppdaterats av en annan användare. notice_not_authorized: Du saknar behörighet att komma Ã¥t den här sidan. notice_not_authorized_archived_project: Projektet du försöker komma Ã¥t har arkiverats. - notice_email_sent: "Ett mail skickades till {{value}}" - notice_email_error: "Ett fel inträffade när mail skickades ({{value}})" + notice_email_sent: "Ett mail skickades till %{value}" + notice_email_error: "Ett fel inträffade när mail skickades (%{value})" notice_feeds_access_key_reseted: Din RSS-nyckel Ã¥terställdes. notice_api_access_key_reseted: Din API-nyckel Ã¥terställdes. - notice_failed_to_save_issues: "Misslyckades med att spara {{count}} ärende(n) pÃ¥ {{total}} valt: {{ids}}." - notice_failed_to_save_members: "Misslyckades med att spara medlem(mar): {{errors}}." + notice_failed_to_save_issues: "Misslyckades med att spara %{count} ärende(n) pÃ¥ %{total} valt: %{ids}." + notice_failed_to_save_members: "Misslyckades med att spara medlem(mar): %{errors}." notice_no_issue_selected: "Inget ärende är markerat! Var vänlig, markera de ärenden du vill ändra." notice_account_pending: "Ditt konto skapades och avvaktar nu administratörens godkännande." 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_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}}" + error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}" error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv." - error_scm_command_failed: "Ett fel inträffade vid försök att nÃ¥ versionsarkivet: {{value}}" + error_scm_command_failed: "Ett fel inträffade vid försök att nÃ¥ versionsarkivet: %{value}" error_scm_annotate: "Inlägget existerar inte eller kan inte kommenteras." error_issue_not_found_in_project: 'Ärendet hittades inte eller sÃ¥ tillhör det inte detta projekt' error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.' error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (GÃ¥ till "Administration -> Ärendestatus").' error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält - error_can_not_delete_tracker: Det finns ärenden av denna typ och den är därför inte möjlig att ta bort. + error_can_not_delete_tracker: "Det finns ärenden av denna typ och den är därför inte möjlig att ta bort." error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort." error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas pÃ¥ nytt' error_can_not_archive_project: Detta projekt kan inte arkiveras @@ -225,27 +226,27 @@ error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll' error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mÃ¥l' error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort' - error_unable_to_connect: Kan inte ansluta ({{value}}) + error_unable_to_connect: "Kan inte ansluta (%{value})" - warning_attachments_not_saved: "{{count}} fil(er) kunde inte sparas." + warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas." - mail_subject_lost_password: "Ditt {{value}} lösenord" + mail_subject_lost_password: "Ditt %{value} lösenord" mail_body_lost_password: 'För att ändra ditt lösenord, klicka pÃ¥ följande länk:' - mail_subject_register: "Din {{value}} kontoaktivering" + mail_subject_register: "Din %{value} kontoaktivering" mail_body_register: 'För att aktivera ditt konto, klicka pÃ¥ följande länk:' - mail_body_account_information_external: "Du kan använda ditt {{value}}-konto för att logga in." + mail_body_account_information_external: "Du kan använda ditt %{value}-konto för att logga in." mail_body_account_information: Din kontoinformation - mail_subject_account_activation_request: "{{value}} begäran om kontoaktivering" - mail_body_account_activation_request: "En ny användare ({{value}}) har registrerat sig och avvaktar ditt godkännande:" - mail_subject_reminder: "{{count}} ärende(n) har deadline under de kommande {{days}} dagarna" - mail_body_reminder: "{{count}} ärende(n) som är tilldelat dig har deadline under de {{days}} dagarna:" - mail_subject_wiki_content_added: "'{{id}}' wikisida has lagts till" - mail_body_wiki_content_added: The '{{id}}' wikisida has lagts till av {{author}}. - mail_subject_wiki_content_updated: "'{{id}}' wikisida har uppdaterats" - mail_body_wiki_content_updated: The '{{id}}' wikisida har uppdaterats av {{author}}. + mail_subject_account_activation_request: "%{value} begäran om kontoaktivering" + mail_body_account_activation_request: "En ny användare (%{value}) har registrerat sig och avvaktar ditt godkännande:" + mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna" + mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:" + mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till" + mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}." + mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats" + mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}." gui_validation_error: 1 fel - gui_validation_error_plural: "{{count}} fel" + gui_validation_error_plural: "%{count} fel" field_name: Namn field_description: Beskrivning @@ -308,6 +309,7 @@ field_attr_lastname: Efternamnsattribut field_attr_mail: Mailattribut field_onthefly: Skapa användare on-the-fly + field_start_date: Startdatum field_done_ratio: % Klart field_auth_source: Autentiseringsläge field_hide_mail: Dölj min mailadress @@ -339,9 +341,10 @@ field_group_by: Gruppera resultat efter field_sharing: Delning field_parent_issue: Förälderaktivitet - field_member_of_group: Tilldelad användares grupp - field_assigned_to_role: Tilldelad användares roll + field_member_of_group: "Tilldelad användares grupp" + field_assigned_to_role: "Tilldelad användares roll" field_text: Textfält + field_visible: Synlig setting_app_title: Applikationsrubrik setting_app_subtitle: Applikationsunderrubrik @@ -351,14 +354,14 @@ setting_self_registration: Självregistrering setting_attachment_max_size: Maxstorlek pÃ¥ bilaga setting_issues_export_limit: Exportgräns för ärenden - setting_mail_from: Avsändare + setting_mail_from: Avsändaradress setting_bcc_recipients: Hemlig kopia (bcc) till mottagare setting_plain_text_mail: Oformaterad text i mail (ingen HTML) setting_host_name: Värddatornamn setting_text_formatting: Textformatering setting_wiki_compression: Komprimering av wikihistorik setting_feeds_limit: InnehÃ¥llsgräns för Feed - setting_default_projects_public: Nya projekt är publika som standard + setting_default_projects_public: Nya projekt är publika setting_autofetch_changesets: Automatisk hämtning av commits setting_sys_api_enabled: Aktivera WS för versionsarkivhantering setting_commit_ref_keywords: Referens-nyckelord @@ -370,14 +373,15 @@ 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 setting_per_page_options: Alternativ, objekt per sida setting_user_format: Visningsformat för användare setting_activity_days_default: Dagar som visas pÃ¥ projektaktivitet - setting_display_subprojects_issues: Visa ärenden frÃ¥n underprojekt i huvudprojekt som standard + setting_display_subprojects_issues: Visa ärenden frÃ¥n underprojekt i huvudprojekt setting_enabled_scm: Aktivera SCM - setting_mail_handler_body_delimiters: Trunkera mail efter en av följande rader + setting_mail_handler_body_delimiters: "Trunkera mail efter en av följande rader" setting_mail_handler_api_enabled: Aktivera WS för inkommande mail setting_mail_handler_api_key: API-nyckel setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt @@ -389,7 +393,7 @@ setting_openid: TillÃ¥t inloggning och registrering med OpenID setting_password_min_length: Minsta tillÃ¥tna lösenordslängd setting_new_project_user_role_id: Tilldelad roll för en icke-administratör som skapar ett projekt - setting_default_projects_modules: Standardaktiverade moduler för nya projekt + setting_default_projects_modules: Aktiverade moduler för nya projekt setting_issue_done_ratio: Beräkna % klart med setting_issue_done_ratio_issue_field: Använd ärendefältet setting_issue_done_ratio_issue_status: Använd ärendestatus @@ -397,6 +401,9 @@ setting_rest_api_enabled: Aktivera REST webbtjänst setting_cache_formatted_text: Cacha formaterad text setting_default_notification_option: Standard notifieringsalternativ + setting_commit_logtime_enabled: Aktivera tidloggning + setting_commit_logtime_activity_id: Aktivitet för loggad tid + setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat permission_add_project: Skapa projekt permission_add_subprojects: Skapa underprojekt @@ -475,14 +482,14 @@ label_x_projects: zero: inga projekt one: 1 projekt - other: "{{count}} projekt" + other: "%{count} projekt" label_project_all: Alla projekt label_project_latest: Senaste projekt label_issue: Ärende label_issue_new: Nytt ärende label_issue_plural: Ärenden label_issue_view_all: Visa alla ärenden - label_issues_by: "Ärenden {{value}}" + label_issues_by: "Ärenden %{value}" label_issue_added: Ärende tillagt label_issue_updated: Ärende uppdaterat label_document: Dokument @@ -532,7 +539,7 @@ label_registered_on: Registrerad label_activity: Aktivitet label_overall_activity: All aktivitet - label_user_activity: "Aktiviteter för {{value}}" + label_user_activity: "Aktiviteter för %{value}" label_new: Ny label_logged_as: Inloggad som label_environment: Miljö @@ -542,7 +549,7 @@ label_auth_source_plural: Autentiseringslägen label_subproject_plural: Underprojekt label_subproject_new: Nytt underprojekt - label_and_its_subprojects: "{{value}} och dess underprojekt" + label_and_its_subprojects: "%{value} och dess underprojekt" label_min_max_length: Min./Max.-längd label_list: Lista label_date: Datum @@ -553,8 +560,8 @@ label_text: LÃ¥ng text label_attribute: Attribut label_attribute_plural: Attribut - label_download: "{{count}} Nerladdning" - label_download_plural: "{{count}} Nerladdningar" + label_download: "%{count} Nerladdning" + label_download_plural: "%{count} Nerladdningar" label_no_data: Ingen data att visa label_change_status: Ändra status label_history: Historia @@ -578,7 +585,7 @@ label_version_plural: Versioner label_close_versions: Stäng klara versioner label_confirmation: Bekräftelse - label_export_to: Exportera till + label_export_to: 'Finns även som:' label_read: Läs... label_public_projects: Publika projekt label_open_issues: öppen @@ -586,17 +593,17 @@ label_closed_issues: stängd label_closed_issues_plural: stängda label_x_open_issues_abbr_on_total: - zero: 0 öppna av {{total}} - one: 1 öppen av {{total}} - other: "{{count}} öppna av {{total}}" + zero: 0 öppna av %{total} + one: 1 öppen av %{total} + other: "%{count} öppna av %{total}" label_x_open_issues_abbr: zero: 0 öppna one: 1 öppen - other: "{{count}} öppna" + other: "%{count} öppna" label_x_closed_issues_abbr: zero: 0 stängda one: 1 stängd - other: "{{count}} stängda" + other: "%{count} stängda" label_total: Total label_permissions: Behörigheter label_current_status: Nuvarande status @@ -614,7 +621,7 @@ label_months_from: mÃ¥nader frÃ¥n label_gantt: Gantt label_internal: Intern - label_last_changes: "senaste {{count}} ändringar" + label_last_changes: "senaste %{count} ändringar" label_change_view_all: Visa alla ändringar label_personalize_page: Anpassa denna sida label_comment: Kommentar @@ -622,7 +629,7 @@ label_x_comments: zero: inga kommentarer one: 1 kommentar - other: "{{count}} kommentarer" + other: "%{count} kommentarer" label_comment_add: Lägg till kommentar label_comment_added: Kommentar tillagd label_comment_delete: Ta bort kommentar @@ -643,7 +650,7 @@ label_yesterday: igÃ¥r label_this_week: denna vecka label_last_week: senaste veckan - label_last_n_days: "senaste {{count}} dagarna" + label_last_n_days: "senaste %{count} dagarna" label_this_month: denna mÃ¥nad label_last_month: senaste mÃ¥naden label_this_year: detta Ã¥ret @@ -657,13 +664,13 @@ label_repository: Versionsarkiv label_repository_plural: Versionsarkiv label_browse: Bläddra - label_modification: "{{count}} ändring" - label_modification_plural: "{{count}} ändringar" + label_modification: "%{count} ändring" + label_modification_plural: "%{count} ändringar" label_branch: Branch label_tag: Tag label_revision: Revision label_revision_plural: Revisioner - label_revision_id: Revision {{value}} + label_revision_id: "Revision %{value}" label_associated_revisions: Associerade revisioner label_added: tillagd label_modified: modifierad @@ -680,8 +687,8 @@ label_sort_lower: Flytta ner label_sort_lowest: Flytta till botten label_roadmap: Roadmap - label_roadmap_due_in: "Färdig om {{value}}" - label_roadmap_overdue: "{{value}} sen" + label_roadmap_due_in: "Färdig om %{value}" + label_roadmap_overdue: "%{value} sen" label_roadmap_no_issues: Inga ärenden för denna version label_search: Sök label_result_plural: Resultat @@ -700,8 +707,8 @@ label_issue_tracking: Ärendeuppföljning label_spent_time: Spenderad tid label_overall_spent_time: Total tid spenderad - label_f_hour: "{{value}} timme" - label_f_hour_plural: "{{value}} timmar" + label_f_hour: "%{value} timme" + label_f_hour_plural: "%{value} timmar" label_time_tracking: Tidsuppföljning label_change_plural: Ändringar label_statistics: Statistik @@ -752,15 +759,15 @@ label_date_from: FrÃ¥n label_date_to: Till label_language_based: SprÃ¥kbaserad - label_sort_by: "Sortera pÃ¥ {{value}}" + label_sort_by: "Sortera pÃ¥ %{value}" label_send_test_email: Skicka testmail label_feeds_access_key: RSS-nyckel label_missing_feeds_access_key: Saknar en RSS-nyckel - label_feeds_access_key_created_on: "RSS-nyckel skapad för {{value}} sedan" + label_feeds_access_key_created_on: "RSS-nyckel skapad för %{value} sedan" label_module_plural: Moduler - label_added_time_by: "Tillagd av {{author}} för {{age}} sedan" - label_updated_time_by: "Uppdaterad av {{author}} för {{age}} sedan" - label_updated_time: "Uppdaterad för {{value}} sedan" + label_added_time_by: "Tillagd av %{author} för %{age} sedan" + label_updated_time_by: "Uppdaterad av %{author} för %{age} sedan" + label_updated_time: "Uppdaterad för %{value} sedan" label_jump_to_a_project: GÃ¥ till projekt... label_file_plural: Filer label_changeset_plural: Changesets @@ -772,15 +779,15 @@ label_search_titles_only: Sök endast i titlar label_user_mail_option_all: "För alla händelser i mina projekt" label_user_mail_option_selected: "För alla händelser i markerade projekt..." - label_user_mail_option_none: Inga händelser - label_user_mail_option_only_my_events: Endast för saker jag bevakar eller är inblandad i - label_user_mail_option_only_assigned: Endast för saker jag är tilldelad - label_user_mail_option_only_owner: Endast för saker jag äger + label_user_mail_option_none: "Inga händelser" + label_user_mail_option_only_my_events: "Endast för saker jag bevakar eller är inblandad i" + label_user_mail_option_only_assigned: "Endast för saker jag är tilldelad" + label_user_mail_option_only_owner: "Endast för saker jag äger" label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort" label_registration_activation_by_email: kontoaktivering med mail label_registration_manual_activation: manuell kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering - label_display_per_page: "Per sida: {{value}}" + label_display_per_page: "Per sida: %{value}" label_age: Ã…lder label_change_properties: Ändra inställningar label_general: Allmänt @@ -803,7 +810,7 @@ label_sort: Sortera label_descending: Fallande label_ascending: Stigande - label_date_from_to: FrÃ¥n {{start}} till {{end}} + label_date_from_to: FrÃ¥n %{start} till %{end} label_wiki_content_added: Wikisida tillagd label_wiki_content_updated: Wikisida uppdaterad label_group: Grupp @@ -822,10 +829,12 @@ label_display_used_statuses_only: Visa endast status som används av denna ärendetyp label_api_access_key: API-nyckel label_missing_api_access_key: Saknar en API-nyckel - label_api_access_key_created_on: API-nyckel skapad för {{value}} sedan + label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan" label_profile: Profil label_subtask_plural: Underaktiviteter 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:" button_login: Logga in button_submit: Skicka @@ -837,7 +846,7 @@ button_create_and_continue: Skapa och fortsätt button_test: Testa button_edit: Ändra - button_edit_associated_wikipage: "Ändra associerad Wikisida: {{page_title}}" + button_edit_associated_wikipage: "Ändra associerad Wikisida: %{page_title}" button_add: Lägg till button_change: Ändra button_apply: Verkställ @@ -886,57 +895,58 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 betyder ingen gräns text_project_destroy_confirmation: Är du säker pÃ¥ att du vill ta bort detta projekt och all relaterad data? - text_subprojects_destroy_warning: "Alla underprojekt: {{value}} kommer ocksÃ¥ tas bort." + text_subprojects_destroy_warning: "Alla underprojekt: %{value} kommer ocksÃ¥ tas bort." text_workflow_edit: Välj en roll och en ärendetyp för att ändra arbetsflöde 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_set_to: "{{label}} satt till {{value}}" - text_journal_deleted: "{{label}} borttagen ({{old}})" - text_journal_added: "{{label}} {{value}} tillagd" - text_tip_issue_begin_day: arbetsuppgift som börjar denna dag - text_tip_issue_end_day: arbetsuppgift som slutar denna dag - text_tip_issue_begin_end_day: arbetsuppgift börjar och slutar denna dag + text_journal_changed: "%{label} ändrad frÃ¥n %{old} till %{new}" + text_journal_set_to: "%{label} satt till %{value}" + text_journal_deleted: "%{label} borttagen (%{old})" + text_journal_added: "%{label} %{value} tillagd" + text_tip_issue_begin_day: ärende som börjar denna dag + text_tip_issue_end_day: ärende som slutar denna dag + text_tip_issue_begin_end_day: ärende som börjar och slutar denna dag text_project_identifier_info: 'SmÃ¥ bokstäver (a-z), siffror och streck tillÃ¥tna.
    När den är sparad kan identifieraren inte ändras.' - text_caracters_maximum: "max {{count}} tecken." - text_caracters_minimum: "MÃ¥ste vara minst {{count}} tecken lÃ¥ng." - text_length_between: "Längd mellan {{min}} och {{max}} tecken." + text_caracters_maximum: "max %{count} tecken." + text_caracters_minimum: "MÃ¥ste vara minst %{count} tecken lÃ¥ng." + text_length_between: "Längd mellan %{min} och %{max} tecken." text_tracker_no_workflow: Inget arbetsflöde definerat för denna ärendetyp text_unallowed_characters: OtillÃ¥tna tecken text_comma_separated: Flera värden tillÃ¥tna (kommaseparerade). text_line_separated: Flera värden tillÃ¥tna (ett värde per rad). text_issues_ref_in_commit_messages: Referera och fixa ärenden i commit-meddelanden - text_issue_added: "Ärende {{id}} har rapporterats (av {{author}})." - text_issue_updated: "Ärende {{id}} har uppdaterats (av {{author}})." + text_issue_added: "Ärende %{id} har rapporterats (av %{author})." + text_issue_updated: "Ärende %{id} har uppdaterats (av %{author})." text_wiki_destroy_confirmation: Är du säker pÃ¥ att du vill ta bort denna wiki och allt dess innehÃ¥ll ? - text_issue_category_destroy_question: "NÃ¥gra ärenden ({{count}}) är tilldelade till denna kategori. Vad vill du göra ?" + text_issue_category_destroy_question: "NÃ¥gra ärenden (%{count}) är tilldelade till denna kategori. Vad vill du göra ?" text_issue_category_destroy_assignments: Ta bort kategoritilldelningar text_issue_category_reassign_to: Ã…tertilldela ärenden till denna kategori text_user_mail_option: "För omarkerade projekt kommer du bara bli underrättad om saker du bevakar eller är inblandad i (T.ex. ärenden du skapat eller tilldelats)." text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst." text_load_default_configuration: Läs in standardkonfiguration - text_status_changed_by_changeset: "Tilldelad i changeset {{value}}." + 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_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 text_plugin_assets_writable: Arkivet för plug-ins är skrivbart text_rmagick_available: RMagick tillgängligt (ej obligatoriskt) - text_destroy_time_entries_question: "{{hours}} timmar har rapporterats pÃ¥ ärendena du är pÃ¥ väg att ta bort. Vad vill du göra ?" + text_destroy_time_entries_question: "%{hours} timmar har rapporterats pÃ¥ ärendena du är pÃ¥ väg att ta bort. Vad vill du göra ?" text_destroy_time_entries: Ta bort rapporterade timmar text_assign_time_entries_to_project: Tilldela rapporterade timmar till projektet text_reassign_time_entries: 'Ã…tertilldela rapporterade timmar till detta ärende:' - text_user_wrote: "{{value}} skrev:" - text_enumeration_destroy_question: "{{count}} objekt är tilldelade till detta värde." + text_user_wrote: "%{value} skrev:" + text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde." text_enumeration_category_reassign_to: 'Ã…tertilldela till detta värde:' - text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/email.yml och starta om applikationen för att aktivera dem." - text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller emailadress i bÃ¥de Redmine och versionsarkivet mappas automatiskt." + text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/configuration.yml och starta om applikationen för att aktivera dem." + text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i bÃ¥de Redmine och versionsarkivet mappas automatiskt." text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.' text_custom_field_possible_values_info: 'Ett värde per rad' - text_wiki_page_destroy_question: Denna sida har {{descendants}} underliggande sidor. Vad vill du göra? - text_wiki_page_nullify_children: BehÃ¥ll undersidor som rotsidor - text_wiki_page_destroy_children: Ta bort alla underliggande sidor - text_wiki_page_reassign_children: Flytta undersidor till denna föräldersida + text_wiki_page_destroy_question: "Denna sida har %{descendants} underliggande sidor. Vad vill du göra?" + text_wiki_page_nullify_children: "BehÃ¥ll undersidor som rotsidor" + text_wiki_page_destroy_children: "Ta bort alla underliggande sidor" + text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida" 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 @@ -967,8 +977,7 @@ enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/th.yml.svn-base --- a/config/locales/.svn/text-base/th.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/th.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ 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: "ถูà¸à¸ªà¸‡à¸§à¸™à¹„ว้" @@ -106,11 +110,11 @@ taken: "ถูà¸à¹ƒà¸Šà¹‰à¹„ปà¹à¸¥à¹‰à¸§" not_a_number: "ไม่ใช่ตัวเลข" not_a_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}}" + 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: "ต้องมาà¸à¸à¸§à¹ˆà¸²à¸§à¸±à¸™à¹€à¸£à¸´à¹ˆà¸¡" @@ -147,31 +151,31 @@ notice_file_not_found: หน้าที่คุณต้องà¸à¸²à¸£à¸”ูไม่มีอยู่จริง หรือถูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§. notice_locking_conflict: ข้อมูลถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹‚ดยผู้ใช้คนอื่น. notice_not_authorized: คุณไม่มีสิทธิเข้าถึงหน้านี้. - notice_email_sent: "อีเมล์ได้ถูà¸à¸ªà¹ˆà¸‡à¸–ึง {{value}}" - notice_email_error: "เà¸à¸´à¸”ความผิดพลาดขณะà¸à¸³à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥à¹Œ ({{value}})" + notice_email_sent: "อีเมล์ได้ถูà¸à¸ªà¹ˆà¸‡à¸–ึง %{value}" + notice_email_error: "เà¸à¸´à¸”ความผิดพลาดขณะà¸à¸³à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥à¹Œ (%{value})" notice_feeds_access_key_reseted: RSS access key ของคุณถูภreset à¹à¸¥à¹‰à¸§. - notice_failed_to_save_issues: "{{count}} ปัà¸à¸«à¸²à¸ˆà¸²à¸ {{total}} ปัà¸à¸«à¸²à¸—ี่ถูà¸à¹€à¸¥à¸·à¸­à¸à¹„ม่สามารถจัดเà¸à¹‡à¸š: {{ids}}." + notice_failed_to_save_issues: "%{count} ปัà¸à¸«à¸²à¸ˆà¸²à¸ %{total} ปัà¸à¸«à¸²à¸—ี่ถูà¸à¹€à¸¥à¸·à¸­à¸à¹„ม่สามารถจัดเà¸à¹‡à¸š: %{ids}." notice_no_issue_selected: "ไม่มีปัà¸à¸«à¸²à¸—ี่ถูà¸à¹€à¸¥à¸·à¸­à¸! à¸à¸£à¸¸à¸“าเลือà¸à¸›à¸±à¸à¸«à¸²à¸—ี่คุณต้องà¸à¸²à¸£à¹à¸à¹‰à¹„ข." notice_account_pending: "บัà¸à¸Šà¸µà¸‚องคุณสร้างเสร็จà¹à¸¥à¹‰à¸§ ขณะนี้รอà¸à¸²à¸£à¸­à¸™à¸¸à¸¡à¸±à¸•ิจาà¸à¸œà¸¹à¹‰à¸šà¸£à¸´à¸«à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£." notice_default_data_loaded: ค่าเริ่มต้นโหลดเสร็จà¹à¸¥à¹‰à¸§. - error_can_t_load_default_data: "ค่าเริ่มต้นโหลดไม่สำเร็จ: {{value}}" + error_can_t_load_default_data: "ค่าเริ่มต้นโหลดไม่สำเร็จ: %{value}" error_scm_not_found: "ไม่พบรุ่นที่ต้องà¸à¸²à¸£à¹ƒà¸™à¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ." - error_scm_command_failed: "เà¸à¸´à¸”ความผิดพลาดในà¸à¸²à¸£à¹€à¸‚้าถึงà¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ: {{value}}" + error_scm_command_failed: "เà¸à¸´à¸”ความผิดพลาดในà¸à¸²à¸£à¹€à¸‚้าถึงà¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ: %{value}" error_scm_annotate: "entry ไม่มีอยู่จริง หรือไม่สามารถเขียนหมายเหตุประà¸à¸­à¸š." error_issue_not_found_in_project: 'ไม่พบปัà¸à¸«à¸²à¸™à¸µà¹‰ หรือปัà¸à¸«à¸²à¹„ม่ได้อยู่ในโครงà¸à¸²à¸£à¸™à¸µà¹‰' - mail_subject_lost_password: "รหัสผ่าน {{value}} ของคุณ" + mail_subject_lost_password: "รหัสผ่าน %{value} ของคุณ" mail_body_lost_password: 'คลิ๊à¸à¸—ี่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:' - mail_subject_register: "เปิดบัà¸à¸Šà¸µ {{value}} ของคุณ" + mail_subject_register: "เปิดบัà¸à¸Šà¸µ %{value} ของคุณ" mail_body_register: 'คลิ๊à¸à¸—ี่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:' - mail_body_account_information_external: "คุณสามารถใช้บัà¸à¸Šà¸µ {{value}} เพื่อเข้าสู่ระบบ." + mail_body_account_information_external: "คุณสามารถใช้บัà¸à¸Šà¸µ %{value} เพื่อเข้าสู่ระบบ." mail_body_account_information: ข้อมูลบัà¸à¸Šà¸µà¸‚องคุณ - mail_subject_account_activation_request: "à¸à¸£à¸¸à¸“าเปิดบัà¸à¸Šà¸µ {{value}}" - mail_body_account_activation_request: "ผู้ใช้ใหม่ ({{value}}) ได้ลงทะเบียน. บัà¸à¸Šà¸µà¸‚องเขาà¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¸­à¸™à¸¸à¸¡à¸±à¸•ิ:" + mail_subject_account_activation_request: "à¸à¸£à¸¸à¸“าเปิดบัà¸à¸Šà¸µ %{value}" + mail_body_account_activation_request: "ผู้ใช้ใหม่ (%{value}) ได้ลงทะเบียน. บัà¸à¸Šà¸µà¸‚องเขาà¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¸­à¸™à¸¸à¸¡à¸±à¸•ิ:" gui_validation_error: 1 ข้อผิดพลาด - gui_validation_error_plural: "{{count}} ข้อผิดพลาด" + gui_validation_error_plural: "%{count} ข้อผิดพลาด" field_name: ชื่อ field_description: รายละเอียด @@ -233,6 +237,7 @@ field_attr_lastname: นามสà¸à¸¸à¸¥ attribute field_attr_mail: อีเมล์ attribute field_onthefly: สร้างผู้ใช้ทันที + field_start_date: เริ่ม field_done_ratio: % สำเร็จ field_auth_source: วิธีà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตน field_hide_mail: ซ่อนอีเมล์ของฉัน @@ -306,14 +311,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: โครงà¸à¸²à¸£à¸—ั้งหมด label_project_latest: โครงà¸à¸²à¸£à¸¥à¹ˆà¸²à¸ªà¸¸à¸” label_issue: ปัà¸à¸«à¸² 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: เอà¸à¸ªà¸²à¸£ @@ -381,8 +386,8 @@ label_text: ข้อความขนาดยาว label_attribute: คุณลัà¸à¸©à¸“ะ label_attribute_plural: คุณลัà¸à¸©à¸“ะ - label_download: "{{count}} ดาวน์โหลด" - label_download_plural: "{{count}} ดาวน์โหลด" + label_download: "%{count} ดาวน์โหลด" + label_download_plural: "%{count} ดาวน์โหลด" label_no_data: จำนวนข้อมูลที่à¹à¸ªà¸”ง label_change_status: เปลี่ยนสถานะ label_history: ประวัติ @@ -413,17 +418,17 @@ label_closed_issues: ปิด label_closed_issues_plural: ปิด label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: จำนวนรวม label_permissions: สิทธิ label_current_status: สถานะปัจจุบัน @@ -441,7 +446,7 @@ label_months_from: เดือนจาภlabel_gantt: Gantt label_internal: ภายใน - label_last_changes: "last {{count}} เปลี่ยนà¹à¸›à¸¥à¸‡" + label_last_changes: "last %{count} เปลี่ยนà¹à¸›à¸¥à¸‡" label_change_view_all: ดูà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ั้งหมด label_personalize_page: ปรับà¹à¸•่งหน้านี้ label_comment: ความเห็น @@ -449,7 +454,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: เพิ่มความเห็น label_comment_added: ความเห็นถูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_comment_delete: ลบความเห็น @@ -468,7 +473,7 @@ label_yesterday: เมื่อวาน 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: ปีนี้ @@ -482,8 +487,8 @@ label_repository: ที่เà¸à¹‡à¸šà¸•้นฉบับ label_repository_plural: ที่เà¸à¹‡à¸šà¸•้นฉบับ label_browse: เปิดหา - label_modification: "{{count}} เปลี่ยนà¹à¸›à¸¥à¸‡" - label_modification_plural: "{{count}} เปลี่ยนà¹à¸›à¸¥à¸‡" + label_modification: "%{count} เปลี่ยนà¹à¸›à¸¥à¸‡" + label_modification_plural: "%{count} เปลี่ยนà¹à¸›à¸¥à¸‡" label_revision: à¸à¸²à¸£à¹à¸à¹‰à¹„ข label_revision_plural: à¸à¸²à¸£à¹à¸à¹‰à¹„ข label_associated_revisions: à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง @@ -499,8 +504,8 @@ label_sort_lower: ย้ายลง label_sort_lowest: ย้ายไปล่างสุด label_roadmap: à¹à¸œà¸™à¸‡à¸²à¸™ - label_roadmap_due_in: "ถึงà¸à¸³à¸«à¸™à¸”ใน {{value}}" - label_roadmap_overdue: "{{value}} ช้าà¸à¸§à¹ˆà¸²à¸à¸³à¸«à¸™à¸”" + label_roadmap_due_in: "ถึงà¸à¸³à¸«à¸™à¸”ใน %{value}" + label_roadmap_overdue: "%{value} ช้าà¸à¸§à¹ˆà¸²à¸à¸³à¸«à¸™à¸”" label_roadmap_no_issues: ไม่มีปัà¸à¸«à¸²à¸ªà¸³à¸«à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¸™à¸µà¹‰ label_search: ค้นหา label_result_plural: ผลà¸à¸²à¸£à¸„้นหา @@ -518,8 +523,8 @@ label_changes_details: รายละเอียดà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ั้งหมด label_issue_tracking: ติดตามปัà¸à¸«à¸² label_spent_time: เวลาที่ใช้ - label_f_hour: "{{value}} ชั่วโมง" - label_f_hour_plural: "{{value}} ชั่วโมง" + label_f_hour: "%{value} ชั่วโมง" + label_f_hour_plural: "%{value} ชั่วโมง" label_time_tracking: ติดตามà¸à¸²à¸£à¹ƒà¸Šà¹‰à¹€à¸§à¸¥à¸² label_change_plural: เปลี่ยนà¹à¸›à¸¥à¸‡ label_statistics: สถิติ @@ -567,12 +572,12 @@ label_date_from: จาภlabel_date_to: ถึง label_language_based: ขึ้นอยู่à¸à¸±à¸šà¸ à¸²à¸©à¸²à¸‚องผู้ใช้ - label_sort_by: "เรียงโดย {{value}}" + label_sort_by: "เรียงโดย %{value}" label_send_test_email: ส่งจดหมายทดสอบ - label_feeds_access_key_created_on: "RSS access key สร้างเมื่อ {{value}} ที่ผ่านมา" + label_feeds_access_key_created_on: "RSS access key สร้างเมื่อ %{value} ที่ผ่านมา" label_module_plural: ส่วนประà¸à¸­à¸š - label_added_time_by: "เพิ่มโดย {{author}} {{age}} ที่ผ่านมา" - label_updated_time: "ปรับปรุง {{value}} ที่ผ่านมา" + label_added_time_by: "เพิ่มโดย %{author} %{age} ที่ผ่านมา" + label_updated_time: "ปรับปรุง %{value} ที่ผ่านมา" label_jump_to_a_project: ไปที่โครงà¸à¸²à¸£... label_file_plural: à¹à¸Ÿà¹‰à¸¡ label_changeset_plural: à¸à¸¥à¸¸à¹ˆà¸¡à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ @@ -588,7 +593,7 @@ label_registration_activation_by_email: เปิดบัà¸à¸Šà¸µà¸œà¹ˆà¸²à¸™à¸­à¸µà¹€à¸¡à¸¥à¹Œ label_registration_manual_activation: อนุมัติโดยผู้บริหารจัดà¸à¸²à¸£ label_registration_automatic_activation: เปิดบัà¸à¸Šà¸µà¸­à¸±à¸•โนมัติ - label_display_per_page: "ต่อหน้า: {{value}}" + label_display_per_page: "ต่อหน้า: %{value}" label_age: อายุ label_change_properties: เปลี่ยนคุณสมบัติ label_general: ทั่วๆ ไป @@ -650,36 +655,36 @@ 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_tip_issue_begin_day: งานที่เริ่มวันนี้ text_tip_issue_end_day: งานที่จบวันนี้ text_tip_issue_begin_end_day: งานที่เริ่มà¹à¸¥à¸°à¸ˆà¸šà¸§à¸±à¸™à¸™à¸µà¹‰ text_project_identifier_info: 'ภาษาอังà¸à¸¤à¸©à¸•ัวเล็à¸(a-z), ตัวเลข(0-9) à¹à¸¥à¸°à¸‚ีด (-) เท่านั้น.
    เมื่อจัดเà¸à¹‡à¸šà¹à¸¥à¹‰à¸§, ชื่อเฉพาะไม่สามารถเปลี่ยนà¹à¸›à¸¥à¸‡à¹„ด้' - text_caracters_maximum: "สูงสุด {{count}} ตัวอัà¸à¸©à¸£." - text_caracters_minimum: "ต้องยาวอย่างน้อย {{count}} ตัวอัà¸à¸©à¸£." - text_length_between: "ความยาวระหว่าง {{min}} ถึง {{max}} ตัวอัà¸à¸©à¸£." + text_caracters_maximum: "สูงสุด %{count} ตัวอัà¸à¸©à¸£." + text_caracters_minimum: "ต้องยาวอย่างน้อย %{count} ตัวอัà¸à¸©à¸£." + text_length_between: "ความยาวระหว่าง %{min} ถึง %{max} ตัวอัà¸à¸©à¸£." text_tracker_no_workflow: ไม่ได้บัà¸à¸à¸±à¸•ิลำดับงานสำหรับà¸à¸²à¸£à¸•ิดตามนี้ text_unallowed_characters: ตัวอัà¸à¸©à¸£à¸•้องห้าม text_comma_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_issue_added: "ปัà¸à¸«à¸² %{id} ถูà¸à¹à¸ˆà¹‰à¸‡à¹‚ดย %{author}." + text_issue_updated: "ปัà¸à¸«à¸² %{id} ถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹‚ดย %{author}." text_wiki_destroy_confirmation: คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸·à¸­à¸§à¹ˆà¸²à¸•้องà¸à¸²à¸£à¸¥à¸š wiki นี้พร้อมทั้งเนี้อหา? - text_issue_category_destroy_question: "บางปัà¸à¸«à¸² ({{count}}) อยู่ในประเภทนี้. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร ?" + 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_status_changed_by_changeset: "ประยุà¸à¸•์ใช้ในà¸à¸¥à¸¸à¹ˆà¸¡à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ %{value}." text_issues_destroy_confirmation: 'คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¹„หมว่าต้องà¸à¸²à¸£à¸¥à¸šà¸›à¸±à¸à¸«à¸²(ทั้งหลาย)ที่เลือà¸à¹„ว้?' text_select_project_modules: 'เลือà¸à¸ªà¹ˆà¸§à¸™à¸›à¸£à¸°à¸à¸­à¸šà¸—ี่ต้องà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸ªà¸³à¸«à¸£à¸±à¸šà¹‚ครงà¸à¸²à¸£à¸™à¸µà¹‰:' text_default_administrator_account_changed: ค่าเริ่มต้นของบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¸šà¸£à¸´à¸«à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¸–ูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ text_file_repository_writable: ที่เà¸à¹‡à¸šà¸•้นฉบับสามารถเขียนได้ text_rmagick_available: RMagick มีให้ใช้ (เป็นตัวเลือà¸) - text_destroy_time_entries_question: "{{hours}} ชั่วโมงที่ถูà¸à¹à¸ˆà¹‰à¸‡à¹ƒà¸™à¸›à¸±à¸à¸«à¸²à¸™à¸µà¹‰à¸ˆà¸°à¹‚ดนลบ. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร?" + text_destroy_time_entries_question: "%{hours} ชั่วโมงที่ถูà¸à¹à¸ˆà¹‰à¸‡à¹ƒà¸™à¸›à¸±à¸à¸«à¸²à¸™à¸µà¹‰à¸ˆà¸°à¹‚ดนลบ. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร?" text_destroy_time_entries: ลบเวลาที่รายงานไว้ text_assign_time_entries_to_project: ระบุเวลาที่ใช้ในโครงà¸à¸²à¸£à¸™à¸µà¹‰ text_reassign_time_entries: 'ระบุเวลาที่ใช้ในโครงà¸à¸²à¸£à¸™à¸µà¹ˆà¸­à¸µà¸à¸„รั้ง:' @@ -709,19 +714,19 @@ enumeration_issue_priorities: ความสำคัà¸à¸‚องปัà¸à¸«à¸² enumeration_doc_categories: ประเภทเอà¸à¸ªà¸²à¸£ enumeration_activities: à¸à¸´à¸ˆà¸à¸£à¸£à¸¡ (ใช้ในà¸à¸²à¸£à¸•ิดตามเวลา) - label_and_its_subprojects: "{{value}} and its subprojects" - mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:" - mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days" - text_user_wrote: "{{value}} wrote:" + label_and_its_subprojects: "%{value} and its subprojects" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + text_user_wrote: "%{value} wrote:" label_duplicated_by: duplicated by setting_enabled_scm: Enabled SCM text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_enumeration_destroy_question: "{{count}} objects are assigned to this value." + text_enumeration_destroy_question: "%{count} objects are assigned to this value." label_incoming_emails: Incoming emails label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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 @@ -782,12 +787,12 @@ 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" + 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." + 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 @@ -802,21 +807,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -824,14 +829,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -866,9 +871,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -895,12 +900,12 @@ 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_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}}." + 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. @@ -908,7 +913,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -919,8 +924,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/tr.yml.svn-base --- a/config/locales/.svn/text-base/tr.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/tr.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -37,38 +37,38 @@ less_than_x_seconds: zero: '1 saniyeden az' one: '1 saniyeden az' - other: '{{count}} saniyeden az' + other: '%{count} saniyeden az' x_seconds: one: '1 saniye' - other: '{{count}} saniye' + other: '%{count} saniye' less_than_x_minutes: zero: '1 dakikadan az' one: '1 dakikadan az' - other: '{{count}} dakikadan az' + other: '%{count} dakikadan az' x_minutes: one: '1 dakika' - other: '{{count}} dakika' + other: '%{count} dakika' about_x_hours: one: '1 saat civarında' - other: '{{count}} saat civarında' + other: '%{count} saat civarında' x_days: one: '1 gün' - other: '{{count}} gün' + other: '%{count} gün' about_x_months: one: '1 ay civarında' - other: '{{count}} ay civarında' + other: '%{count} ay civarında' x_months: one: '1 ay' - other: '{{count}} ay' + other: '%{count} ay' about_x_years: one: '1 yıl civarında' - other: '{{count}} yıl civarında' + other: '%{count} yıl civarında' over_x_years: one: '1 yıldan fazla' - other: '{{count}} yıldan fazla' + other: '%{count} yıldan fazla' almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -116,8 +116,8 @@ errors: template: header: - one: "{{model}} giriÅŸi kaydedilemedi: 1 hata." - other: "{{model}} giriÅŸi kadedilemedi: {{count}} hata." + one: "%{model} giriÅŸi kaydedilemedi: 1 hata." + other: "%{model} giriÅŸi kadedilemedi: %{count} hata." body: "Lütfen aÅŸağıdaki hataları düzeltiniz:" messages: @@ -128,16 +128,16 @@ accepted: "kabul edilmeli" empty: "doldurulmalı" blank: "doldurulmalı" - too_long: "çok uzun (en fazla {{count}} karakter)" - too_short: "çok kısa (en az {{count}} karakter)" - wrong_length: "yanlış uzunlukta (tam olarak {{count}} karakter olmalı)" + too_long: "çok uzun (en fazla %{count} karakter)" + too_short: "çok kısa (en az %{count} karakter)" + wrong_length: "yanlış uzunlukta (tam olarak %{count} karakter olmalı)" taken: "hali hazırda kullanılmakta" not_a_number: "geçerli bir sayı deÄŸil" - greater_than: "{{count}} sayısından büyük olmalı" - greater_than_or_equal_to: "{{count}} sayısına eÅŸit veya büyük olmalı" - equal_to: "tam olarak {{count}} olmalı" - less_than: "{{count}} sayısından küçük olmalı" - less_than_or_equal_to: "{{count}} sayısına eÅŸit veya küçük olmalı" + greater_than: "%{count} sayısından büyük olmalı" + greater_than_or_equal_to: "%{count} sayısına eÅŸit veya büyük olmalı" + equal_to: "tam olarak %{count} olmalı" + less_than: "%{count} sayısından küçük olmalı" + less_than_or_equal_to: "%{count} sayısına eÅŸit veya küçük olmalı" odd: "tek olmalı" even: "çift olmalı" greater_than_start_date: "baÅŸlangıç tarihinden büyük olmalı" @@ -174,31 +174,31 @@ notice_file_not_found: EriÅŸmek istediÄŸiniz sayfa mevcut deÄŸil ya da kaldırılmış. notice_locking_conflict: Veri baÅŸka bir kullanıcı tarafından güncellendi. notice_not_authorized: Bu sayfaya eriÅŸme yetkiniz yok. - notice_email_sent: "E-posta gönderildi {{value}}" - notice_email_error: "E-posta gönderilirken bir hata oluÅŸtu ({{value}})" + notice_email_sent: "E-posta gönderildi %{value}" + 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_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_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_can_t_load_default_data: "Varsayılan konfigürasyon yüklenemedi: %{value}" error_scm_not_found: "Depoda, giriÅŸ ya da revizyon yok." - error_scm_command_failed: "Depoya eriÅŸmeye çalışırken bir hata meydana geldi: {{value}}" + 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' - mail_subject_lost_password: "Parolanız {{value}}" + 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: "Your %{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_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:" + 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" + gui_validation_error_plural: "%{count} hata" field_name: İsim field_description: Açıklama @@ -260,6 +260,7 @@ 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_auth_source: Kimlik Denetim Modu field_hide_mail: E-posta adresimi gizle @@ -333,14 +334,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" 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_issues_by: "%{value} tarafından gönderilmiÅŸ iletiler" label_issue_added: İleti eklendi label_issue_updated: İleti güncellendi label_document: Belge @@ -406,8 +407,8 @@ label_text: Uzun Metin label_attribute: Nitelik label_attribute_plural: Nitelikler - label_download: "{{count}} indirilen" - label_download_plural: "{{count}} indirilen" + label_download: "%{count} indirilen" + label_download_plural: "%{count} indirilen" label_no_data: Gösterilecek veri yok label_change_status: DeÄŸiÅŸim Durumu label_history: GeçmiÅŸ @@ -438,17 +439,17 @@ 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: 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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Toplam label_permissions: İzinler label_current_status: Mevcut Durum @@ -466,7 +467,7 @@ label_months_from: aylardan itibaren label_gantt: Gantt label_internal: Dahili - label_last_changes: "Son {{count}} deÄŸiÅŸiklik" + 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 @@ -474,7 +475,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Açıklama Ekle label_comment_added: Açıklama Eklendi label_comment_delete: Açıklamaları sil @@ -493,7 +494,7 @@ label_yesterday: Dün label_this_week: Bu hafta label_last_week: Geçen hafta - label_last_n_days: "Son {{count}} gün" + label_last_n_days: "Son %{count} gün" label_this_month: Bu ay label_last_month: Geçen ay label_this_year: Bu yıl @@ -507,8 +508,8 @@ label_repository: Depo label_repository_plural: Depolar label_browse: Tara - label_modification: "{{count}} deÄŸiÅŸim" - label_modification_plural: "{{count}} deÄŸiÅŸim" + 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 @@ -524,8 +525,8 @@ label_sort_lower: AÅŸağı taşı label_sort_lowest: Dibe taşı label_roadmap: Yol Haritası - label_roadmap_due_in: "Due in {{value}}" - label_roadmap_overdue: "{{value}} geç" + label_roadmap_due_in: "Due in %{value}" + label_roadmap_overdue: "%{value} geç" label_roadmap_no_issues: Bu versiyon için ileti yok label_search: Ara label_result_plural: Sonuçlar @@ -543,8 +544,8 @@ label_changes_details: Bütün deÄŸiÅŸikliklerin detayları label_issue_tracking: İleti Takibi label_spent_time: Harcanan zaman - label_f_hour: "{{value}} saat" - label_f_hour_plural: "{{value}} saat" + label_f_hour: "%{value} saat" + label_f_hour_plural: "%{value} saat" label_time_tracking: Zaman Takibi label_change_plural: DeÄŸiÅŸiklikler label_statistics: İstatistikler @@ -592,12 +593,12 @@ label_date_from: BaÅŸlangıç label_date_to: BitiÅŸ label_language_based: Kullanıcı diline istinaden - label_sort_by: "{{value}} göre sırala" + 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" + label_feeds_access_key_created_on: "RSS eriÅŸim anahtarı %{value} önce oluÅŸturuldu" label_module_plural: Modüller - label_added_time_by: "{{author}} tarafından {{age}} önce eklendi" - label_updated_time: "{{value}} önce güncellendi" + label_added_time_by: "%{author} tarafından %{age} önce eklendi" + label_updated_time: "%{value} önce güncellendi" label_jump_to_a_project: Projeye git... label_file_plural: Dosyalar label_changeset_plural: DeÄŸiÅŸiklik Listeleri @@ -613,7 +614,7 @@ label_registration_activation_by_email: e-posta ile hesap etkinleÅŸtirme label_registration_manual_activation: Elle hesap etkinleÅŸtirme label_registration_automatic_activation: Otomatik hesap etkinleÅŸtirme - label_display_per_page: "Sayfa başına: {{value}}" + label_display_per_page: "Sayfa başına: %{value}" label_age: YaÅŸ label_change_properties: Özellikleri deÄŸiÅŸtir label_general: Genel @@ -675,36 +676,36 @@ text_regexp_info: eg. ^[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_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_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 text_tip_issue_begin_end_day: Bugün baÅŸlayan ve sona eren görevler text_project_identifier_info: 'Küçük harfler (a-z), sayılar ve noktalar kabul edilir.
    Bir kere kaydedildiÄŸinde,tanımlayıcı deÄŸiÅŸtirilemez.' - 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_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_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_issue_added: "İleti %{id}, %{author} tarafından rapor edildi." + text_issue_updated: "İleti %{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ı iletiler (%{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_load_default_configuration: Varsayılan yapılandırmayı yükle - text_status_changed_by_changeset: "DeÄŸiÅŸiklik listesi {{value}} içinde uygulandı." + 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_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_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:' @@ -740,16 +741,16 @@ label_generate_key: Generate a key setting_sequential_project_identifiers: Generate sequential project identifiers field_parent_title: Parent page - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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:" + 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:" + 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" + 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 general_csv_decimal_separator: '.' @@ -808,12 +809,12 @@ 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" + 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." + 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 @@ -828,21 +829,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -854,10 +855,10 @@ 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" + 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 @@ -892,9 +893,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -921,12 +922,12 @@ 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_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}}." + 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. @@ -934,7 +935,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -945,8 +946,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/uk.yml.svn-base --- a/config/locales/.svn/text-base/uk.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/uk.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ 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: "зарезервовано" @@ -106,11 +110,11 @@ taken: "вже викориÑтовуєтьÑÑ" not_a_number: "не Ñ” чиÑлом" not_a_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}}" + 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: "повинна бути пізніша за дату початку" @@ -148,24 +152,24 @@ notice_locking_conflict: Дані оновлено іншим кориÑтувачем. notice_scm_error: ЗапиÑу та/або Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” в репозиторії. notice_not_authorized: У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” прав Ð´Ð»Ñ Ð²Ñ–Ð´Ð²Ñ–Ð´Ð¸Ð½Ð¸ даної Ñторінки. - notice_email_sent: "Відправлено лиÑта {{value}}" - notice_email_error: "Під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ лиÑта відбулаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° ({{value}})" + notice_email_sent: "Відправлено лиÑта %{value}" + notice_email_error: "Під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ лиÑта відбулаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° (%{value})" notice_feeds_access_key_reseted: Ваш ключ доÑтупу RSS було Ñкинуто. - notice_failed_to_save_issues: "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ {{count}} пункт(ів) з {{total}} вибраних: {{ids}}." + notice_failed_to_save_issues: "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ %{count} пункт(ів) з %{total} вибраних: %{ids}." notice_no_issue_selected: "Ðе вибрано жодної задачі! Будь лаÑка, відзначте задачу, Ñку ви хочете відредагувати." notice_account_pending: "Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ñтворено Ñ– він чекає на Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратором." - mail_subject_lost_password: "Ваш {{value}} пароль" + mail_subject_lost_password: "Ваш %{value} пароль" mail_body_lost_password: 'Ð”Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ паролÑ, зайдіть за наÑтупним поÑиланнÑм:' - mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу {{value}}" + mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу %{value}" mail_body_register: 'Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— облікового запиÑу, зайдіть за наÑтупним поÑиланнÑм:' - mail_body_account_information_external: "Ви можете викориÑтовувати ваш {{value}} обліковий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ." + mail_body_account_information_external: "Ви можете викориÑтовувати ваш %{value} обліковий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ." mail_body_account_information: Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ð¾ Вашому обліковому запиÑу - mail_subject_account_activation_request: "Запит на активацію облікового запиÑу {{value}}" - mail_body_account_activation_request: "Ðовий кориÑтувач ({{value}}) зареєÑтрувавÑÑ. Його обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ‡ÐµÐºÐ°Ñ” на ваше підтвердженнÑ:" + mail_subject_account_activation_request: "Запит на активацію облікового запиÑу %{value}" + mail_body_account_activation_request: "Ðовий кориÑтувач (%{value}) зареєÑтрувавÑÑ. Його обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ‡ÐµÐºÐ°Ñ” на ваше підтвердженнÑ:" gui_validation_error: 1 помилка - gui_validation_error_plural: "{{count}} помилки(ок)" + gui_validation_error_plural: "%{count} помилки(ок)" field_name: Ім'Ñ field_description: ÐžÐ¿Ð¸Ñ @@ -227,6 +231,7 @@ field_attr_lastname: Ðтрибут Прізвище field_attr_mail: Ðтрибут Email field_onthefly: Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача на льоту + field_start_date: Початок field_done_ratio: % зроблено field_auth_source: Режим аутентифікації field_hide_mail: Приховувати мій email @@ -284,14 +289,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: УÑÑ– проекти label_project_latest: ОÑтанні проекти label_issue: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ label_issue_new: Ðові Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_issue_plural: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ label_issue_view_all: ПроглÑнути вÑÑ– Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ - label_issues_by: "ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° {{value}}" + label_issues_by: "ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° %{value}" label_document: Документ label_document_new: Ðовий документ label_document_plural: Документи @@ -353,8 +358,8 @@ label_text: Довгий текÑÑ‚ label_attribute: Ðтрибут label_attribute_plural: атрибути - label_download: "{{count}} Завантажено" - label_download_plural: "{{count}} Завантажень" + label_download: "%{count} Завантажено" + label_download_plural: "%{count} Завантажень" label_no_data: Ðемає даних Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ label_change_status: Змінити ÑÑ‚Ð°Ñ‚ÑƒÑ label_history: ІÑÑ‚Ð¾Ñ€Ñ–Ñ @@ -383,17 +388,17 @@ label_closed_issues: закрите label_closed_issues_plural: закриті label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Ð’Ñього label_permissions: Права доÑтупу label_current_status: Поточний ÑÑ‚Ð°Ñ‚ÑƒÑ @@ -411,7 +416,7 @@ label_months_from: міÑÑців(цÑ) з label_gantt: Діаграма Ганта label_internal: Внутрішній - label_last_changes: "оÑтанні {{count}} змін" + label_last_changes: "оÑтанні %{count} змін" label_change_view_all: ПроглÑнути вÑÑ– зміни label_personalize_page: ПерÑоналізувати цю Ñторінку label_comment: Коментувати @@ -419,7 +424,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Залишити коментар label_comment_added: Коментар додано label_comment_delete: Видалити коментарі @@ -443,8 +448,8 @@ label_day_plural: днів(Ñ) label_repository: Репозиторій label_browse: ПроглÑнути - label_modification: "{{count}} зміна" - label_modification_plural: "{{count}} змін" + label_modification: "%{count} зміна" + label_modification_plural: "%{count} змін" label_revision: ВерÑÑ–Ñ label_revision_plural: ВерÑій label_added: додано @@ -459,8 +464,8 @@ label_sort_lower: Вниз label_sort_lowest: У кінець label_roadmap: Оперативний план - label_roadmap_due_in: "Строк {{value}}" - label_roadmap_overdue: "{{value}} запізненнÑ" + label_roadmap_due_in: "Строк %{value}" + label_roadmap_overdue: "%{value} запізненнÑ" label_roadmap_no_issues: Ðемає питань Ð´Ð»Ñ Ð´Ð°Ð½Ð¾Ñ— верÑÑ–Ñ— label_search: Пошук label_result_plural: Результати @@ -478,8 +483,8 @@ label_changes_details: Подробиці по вÑÑ–Ñ… змінах label_issue_tracking: ÐšÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ†Ñ–Ñ Ð¿Ð¸Ñ‚Ð°Ð½ÑŒ label_spent_time: Витрачений Ñ‡Ð°Ñ - label_f_hour: "{{value}} година" - label_f_hour_plural: "{{value}} годин(и)" + label_f_hour: "%{value} година" + label_f_hour_plural: "%{value} годин(и)" label_time_tracking: Облік чаÑу label_change_plural: Зміни label_statistics: СтатиÑтика @@ -526,12 +531,12 @@ label_date_from: З label_date_to: Кому label_language_based: Ðа оÑнові мови кориÑтувача - label_sort_by: "Сортувати за {{value}}" + label_sort_by: "Сортувати за %{value}" label_send_test_email: ПоÑлати email Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ - label_feeds_access_key_created_on: "Ключ доÑтупу RSS Ñтворений {{value}} назад " + label_feeds_access_key_created_on: "Ключ доÑтупу RSS Ñтворений %{value} назад " label_module_plural: Модулі - label_added_time_by: "Доданий {{author}} {{age}} назад" - label_updated_time: "Оновлений {{value}} назад" + label_added_time_by: "Доданий %{author} %{age} назад" + label_updated_time: "Оновлений %{value} назад" label_jump_to_a_project: Перейти до проекту... label_file_plural: Файли label_changeset_plural: Ðабори змін @@ -599,17 +604,17 @@ text_tip_issue_end_day: день Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡Ñ– text_tip_issue_begin_end_day: початок задачі Ñ– Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ð´Ð½Ñ text_project_identifier_info: 'РÑдкові букви (a-z), допуÑтимі цифри Ñ– дефіÑ.
    Збережений ідентифікатор не може бути змінений.' - text_caracters_maximum: "{{count}} Ñимволів(а) макÑимум." - text_caracters_minimum: "Повинно мати Ñкнайменше {{count}} Ñимволів(а) у довжину." - text_length_between: "Довжина між {{min}} Ñ– {{max}} Ñимволів." + text_caracters_maximum: "%{count} Ñимволів(а) макÑимум." + text_caracters_minimum: "Повинно мати Ñкнайменше %{count} Ñимволів(а) у довжину." + text_length_between: "Довжина між %{min} Ñ– %{max} Ñимволів." text_tracker_no_workflow: Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ координатора поÑлідовніÑть дій не визначена text_unallowed_characters: Заборонені Ñимволи text_comma_separated: ДопуÑтимі декілька значень (розділені комою). text_issues_ref_in_commit_messages: ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ‚Ð° зміна питань у повідомленнÑÑ… до подавань - text_issue_added: "Issue {{id}} has been reported by {{author}}." - text_issue_updated: "Issue {{id}} has been updated by {{author}}." + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Ви впевнені, що хочете видалити цю wiki Ñ– веÑÑŒ зміÑÑ‚? - text_issue_category_destroy_question: "Декілька питань ({{count}}) призначено в цю категорію. Що ви хочете зробити?" + text_issue_category_destroy_question: "Декілька питань (%{count}) призначено в цю категорію. Що ви хочете зробити?" text_issue_category_destroy_assignments: Видалити Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ— text_issue_category_reassign_to: Перепризначити задачі до даної категорії text_user_mail_option: "Ð”Ð»Ñ Ð½ÐµÐ²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ñ… проектів ви отримуватимете Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ про те, що проглÑдаєте або в чому берете учаÑть (наприклад, Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¾Ð¼ Ñких ви Ñ” або Ñкі вам призначені)." @@ -639,8 +644,8 @@ enumeration_issue_priorities: Пріоритети питань enumeration_doc_categories: Категорії документів enumeration_activities: Дії (облік чаÑу) - text_status_changed_by_changeset: "Applied in changeset {{value}}." - label_display_per_page: "Per page: {{value}}" + text_status_changed_by_changeset: "Applied in changeset %{value}." + label_display_per_page: "Per page: %{value}" label_issue_added: Issue added label_issue_updated: Issue updated setting_per_page_options: Objects per page options @@ -650,7 +655,7 @@ label_document_added: Document added label_message_posted: Message added text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?' - error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}" + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" setting_user_format: Users display format label_age: Age label_file_added: File added @@ -666,7 +671,7 @@ 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." label_news_added: News added label_repository_plural: Repositories - error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}" + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" project_module_boards: Boards project_module_issue_tracking: Issue tracking project_module_wiki: Wiki @@ -683,7 +688,7 @@ label_ldap_authentication: LDAP authentication label_downloads_abbr: D/L label_this_month: this month - label_last_n_days: "last {{count}} days" + label_last_n_days: "last %{count} days" label_all_time: all time label_this_year: this year label_date_range: Date range @@ -692,7 +697,7 @@ label_last_month: last month label_add_another_file: Add another file label_optional_description: Optional description - 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 ?" error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' text_assign_time_entries_to_project: Assign reported hours to the project text_destroy_time_entries: Delete reported hours @@ -707,20 +712,20 @@ setting_default_projects_public: New projects are public by default error_scm_annotate: "The entry does not exist or can not be annotated." label_planning: Planning - text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted." - label_and_its_subprojects: "{{value}} and its subprojects" - mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:" - mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days" - text_user_wrote: "{{value}} wrote:" + text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." + label_and_its_subprojects: "%{value} and its subprojects" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + text_user_wrote: "%{value} wrote:" label_duplicated_by: duplicated by setting_enabled_scm: Enabled SCM text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_enumeration_destroy_question: "{{count}} objects are assigned to this value." + text_enumeration_destroy_question: "%{count} objects are assigned to this value." label_incoming_emails: Incoming emails label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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 @@ -781,12 +786,12 @@ 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" + 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." + 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 @@ -801,21 +806,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -823,14 +828,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -865,9 +870,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -894,12 +899,12 @@ 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_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}}." + 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. @@ -907,7 +912,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -918,8 +923,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/vi.yml.svn-base --- a/config/locales/.svn/text-base/vi.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/vi.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -66,37 +66,37 @@ half_a_minute: "30 giây" less_than_x_seconds: one: "chưa tá»›i 1 giây" - other: "chưa tá»›i {{count}} giây" + other: "chưa tá»›i %{count} giây" x_seconds: one: "1 giây" - other: "{{count}} giây" + other: "%{count} giây" less_than_x_minutes: one: "chưa tá»›i 1 phút" - other: "chưa tá»›i {{count}} phút" + other: "chưa tá»›i %{count} phút" x_minutes: one: "1 phút" - other: "{{count}} phút" + other: "%{count} phút" about_x_hours: one: "khoảng 1 giá»" - other: "khoảng {{count}} giá»" + other: "khoảng %{count} giá»" x_days: one: "1 ngày" - other: "{{count}} ngày" + other: "%{count} ngày" about_x_months: one: "khoảng 1 tháng" - other: "khoảng {{count}} tháng" + other: "khoảng %{count} tháng" x_months: one: "1 tháng" - other: "{{count}} tháng" + other: "%{count} tháng" about_x_years: one: "khoảng 1 năm" - other: "khoảng {{count}} năm" + other: "khoảng %{count} năm" over_x_years: one: "hÆ¡n 1 năm" - other: "hÆ¡n {{count}} năm" + other: "hÆ¡n %{count} năm" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" prompts: year: "Năm" month: "Tháng" @@ -109,8 +109,8 @@ errors: template: header: - one: "1 lá»—i ngăn không cho lưu {{model}} này" - other: "{{count}} lá»—i ngăn không cho lưu {{model}} này" + one: "1 lá»—i ngăn không cho lưu %{model} này" + other: "%{count} lá»—i ngăn không cho lưu %{model} này" # The variable :count is also available body: "Có lá»—i vá»›i các mục sau:" @@ -124,16 +124,16 @@ accepted: "phải được đồng ý" empty: "không thể rá»—ng" blank: "không thể để trắng" - too_long: "quá dài (tối Ä‘a {{count}} ký tá»±)" - too_short: "quá ngắn (tối thiểu {{count}} ký tá»±)" - wrong_length: "độ dài không đúng (phải là {{count}} ký tá»±)" + too_long: "quá dài (tối Ä‘a %{count} ký tá»±)" + too_short: "quá ngắn (tối thiểu %{count} ký tá»±)" + wrong_length: "độ dài không đúng (phải là %{count} ký tá»±)" taken: "đã có" not_a_number: "không phải là số" - greater_than: "phải lá»›n hÆ¡n {{count}}" - greater_than_or_equal_to: "phải lá»›n hÆ¡n hoặc bằng {{count}}" - equal_to: "phải bằng {{count}}" - less_than: "phải nhá» hÆ¡n {{count}}" - less_than_or_equal_to: "phải nhá» hÆ¡n hoặc bằng {{count}}" + greater_than: "phải lá»›n hÆ¡n %{count}" + greater_than_or_equal_to: "phải lá»›n hÆ¡n hoặc bằng %{count}" + equal_to: "phải bằng %{count}" + less_than: "phải nhá» hÆ¡n %{count}" + less_than_or_equal_to: "phải nhá» hÆ¡n hoặc bằng %{count}" odd: "phải là số chẵn" even: "phải là số lẻ" greater_than_start_date: "phải Ä‘i sau ngày bắt đầu" @@ -205,34 +205,34 @@ notice_file_not_found: Trang bạn cố xem không tồn tại hoặc đã chuyển. notice_locking_conflict: Thông tin Ä‘ang được cập nhật bởi ngưá»i khác. Hãy chép ná»™i dung cập nhật cá»§a bạn vào clipboard. notice_not_authorized: Bạn không có quyá»n xem trang này. - notice_email_sent: "Email đã được gá»­i tá»›i {{value}}" - notice_email_error: "Lá»—i xảy ra khi gá»­i email ({{value}})" + notice_email_sent: "Email đã được gá»­i tá»›i %{value}" + notice_email_error: "Lá»—i xảy ra khi gá»­i email (%{value})" notice_feeds_access_key_reseted: Mã số chứng thá»±c RSS đã được tạo lại. - notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}." + 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: "Thông tin tài khoản đã được tạo ra và Ä‘ang chá» chứng thá»±c từ ban quản trị." notice_default_data_loaded: Äã nạp cấu hình mặc định. notice_unable_delete_version: Không thể xóa phiên bản. - error_can_t_load_default_data: "Không thể nạp cấu hình mặc định: {{value}}" + error_can_t_load_default_data: "Không thể nạp cấu hình mặc định: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "Lá»—i xảy ra khi truy cập vào kho lưu trữ: {{value}}" + error_scm_command_failed: "Lá»—i xảy ra khi truy cập vào kho lưu trữ: %{value}" error_scm_annotate: "The entry does not exist or can not be annotated." error_issue_not_found_in_project: 'Vấn đỠkhông tồn tại hoặc không thuá»™c dá»± án' - mail_subject_lost_password: "{{value}}: mật mã cá»§a bạn" + mail_subject_lost_password: "%{value}: mật mã cá»§a bạn" mail_body_lost_password: "Äể đổi mật mã, hãy click chuá»™t vào liên kết sau:" - mail_subject_register: "{{value}}: kích hoạt tài khoản" + mail_subject_register: "%{value}: kích hoạt tài khoản" mail_body_register: "Äể kích hoạt tài khoản, hãy click chuá»™t vào liên kết sau:" - mail_body_account_information_external: " Bạn có thể dùng tài khoản {{value}} để đăng nhập." + mail_body_account_information_external: " Bạn có thể dùng tài khoản %{value} để đăng nhập." mail_body_account_information: Thông tin vá» tài khoản - mail_subject_account_activation_request: "{{value}}: Yêu cầu chứng thá»±c tài khoản" - mail_body_account_activation_request: "Ngưá»i dùng ({{value}}) má»›i đăng ký và cần bạn xác nhận:" - mail_subject_reminder: "{{count}} vấn đỠhết hạn trong các {{days}} ngày tá»›i" - mail_body_reminder: "{{count}} vấn đỠgán cho bạn sẽ hết hạn trong {{days}} ngày tá»›i:" + mail_subject_account_activation_request: "%{value}: Yêu cầu chứng thá»±c tài khoản" + mail_body_account_activation_request: "Ngưá»i dùng (%{value}) má»›i đăng ký và cần bạn xác nhận:" + mail_subject_reminder: "%{count} vấn đỠhết hạn trong các %{days} ngày tá»›i" + mail_body_reminder: "%{count} vấn đỠgán cho bạn sẽ hết hạn trong %{days} ngày tá»›i:" gui_validation_error: 1 lá»—i - gui_validation_error_plural: "{{count}} lá»—i" + gui_validation_error_plural: "%{count} lá»—i" field_name: Tên field_description: Mô tả @@ -294,6 +294,7 @@ field_attr_lastname: Lastname attribute field_attr_mail: Email attribute field_onthefly: On-the-fly user creation + field_start_date: Bắt đầu field_done_ratio: Tiến độ field_auth_source: Authentication mode field_hide_mail: Không làm lá»™ email cá»§a bạn @@ -373,14 +374,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Má»i dá»± án label_project_latest: Dá»± án má»›i nhất label_issue: Vấn đỠlabel_issue_new: Tạo vấn đỠmá»›i label_issue_plural: Vấn đỠlabel_issue_view_all: Tất cả vấn đỠ- label_issues_by: "Vấn đỠcá»§a {{value}}" + label_issues_by: "Vấn đỠcá»§a %{value}" label_issue_added: Äã thêm vấn đỠlabel_issue_updated: Vấn đỠđược cập nhật label_document: Tài liệu @@ -436,7 +437,7 @@ label_auth_source_new: New authentication mode label_auth_source_plural: Authentication modes label_subproject_plural: Dá»± án con - label_and_its_subprojects: "{{value}} và dá»± án con" + label_and_its_subprojects: "%{value} và dá»± án con" label_min_max_length: Min - Max length label_list: List label_date: Ngày @@ -447,8 +448,8 @@ label_text: Long text label_attribute: Attribute label_attribute_plural: Attributes - label_download: "{{count}} lần tải" - label_download_plural: "{{count}} lần tải" + label_download: "%{count} lần tải" + label_download_plural: "%{count} lần tải" label_no_data: Chưa có thông tin gì label_change_status: Äổi trạng thái label_history: Lược sá»­ @@ -479,17 +480,17 @@ label_closed_issues: đóng label_closed_issues_plural: đóng label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Tổng cá»™ng label_permissions: Quyá»n label_current_status: Trạng thái hiện tại @@ -507,7 +508,7 @@ label_months_from: tháng từ label_gantt: Biểu đồ sá»± kiện label_internal: Ná»™i bá»™ - label_last_changes: "{{count}} thay đổi cuối" + label_last_changes: "%{count} thay đổi cuối" label_change_view_all: Xem má»i thay đổi label_personalize_page: Äiá»u chỉnh trang này label_comment: Bình luận @@ -515,7 +516,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Thêm bình luận label_comment_added: Äã thêm bình luận label_comment_delete: Xóa bình luận @@ -534,7 +535,7 @@ label_yesterday: hôm qua label_this_week: tuần này label_last_week: tuần trước - label_last_n_days: "{{count}} ngày cuối" + label_last_n_days: "%{count} ngày cuối" label_this_month: tháng này label_last_month: tháng cuối label_this_year: năm này @@ -548,8 +549,8 @@ label_repository: Kho lưu trữ label_repository_plural: Kho lưu trữ label_browse: Duyệt - label_modification: "{{count}} thay đổi" - label_modification_plural: "{{count}} thay đổi" + label_modification: "%{count} thay đổi" + label_modification_plural: "%{count} thay đổi" label_revision: Bản Ä‘iá»u chỉnh label_revision_plural: Bản Ä‘iá»u chỉnh label_associated_revisions: Associated revisions @@ -567,8 +568,8 @@ label_sort_lower: Dịch xuống label_sort_lowest: Xuống dưới cùng label_roadmap: Kế hoạch - label_roadmap_due_in: "Hết hạn trong {{value}}" - label_roadmap_overdue: "Trá»… {{value}}" + label_roadmap_due_in: "Hết hạn trong %{value}" + label_roadmap_overdue: "Trá»… %{value}" label_roadmap_no_issues: Không có vấn đỠcho phiên bản này label_search: Tìm label_result_plural: Kết quả @@ -586,8 +587,8 @@ label_changes_details: Chi tiết cá»§a má»i thay đổi label_issue_tracking: Vấn đỠlabel_spent_time: Thá»i gian - label_f_hour: "{{value}} giá»" - label_f_hour_plural: "{{value}} giá»" + label_f_hour: "%{value} giá»" + label_f_hour_plural: "%{value} giá»" label_time_tracking: Theo dõi thá»i gian label_change_plural: Thay đổi label_statistics: Thống kê @@ -636,12 +637,12 @@ label_date_from: Từ label_date_to: Äến label_language_based: Theo ngôn ngữ ngưá»i dùng - label_sort_by: "Sắp xếp theo {{value}}" + label_sort_by: "Sắp xếp theo %{value}" label_send_test_email: Send a test email - label_feeds_access_key_created_on: "Mã chứng thá»±c RSS được tạo ra cách đây {{value}}" + label_feeds_access_key_created_on: "Mã chứng thá»±c RSS được tạo ra cách đây %{value}" label_module_plural: Mô-Ä‘un - label_added_time_by: "thêm bởi {{author}} cách đây {{age}}" - label_updated_time: "Cập nhật cách đây {{value}}" + label_added_time_by: "thêm bởi %{author} cách đây %{age}" + label_updated_time: "Cập nhật cách đây %{value}" label_jump_to_a_project: Nhảy đến dá»± án... label_file_plural: Tập tin label_changeset_plural: Thay đổi @@ -657,7 +658,7 @@ 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: "má»—i trang: {{value}}" + label_display_per_page: "má»—i trang: %{value}" label_age: Age label_change_properties: Thay đổi thuá»™c tính label_general: Tổng quan @@ -723,43 +724,43 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 để chỉ không hạn chế 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_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: Bạn chắc chứ? text_tip_issue_begin_day: ngày bắt đầu text_tip_issue_end_day: ngày kết thúc text_tip_issue_begin_end_day: bắt đầu và kết thúc cùng ngày text_project_identifier_info: 'Chỉ cho phép chữ cái thưá»ng (a-z), con số và dấu gạch ngang.
    Sau khi lưu, chỉ số ID không thể thay đổi.' - text_caracters_maximum: "Tối Ä‘a {{count}} ký tá»±." - text_caracters_minimum: "Phải gồm ít nhất {{count}} ký tá»±." - text_length_between: "Length between {{min}} and {{max}} characters." + text_caracters_maximum: "Tối Ä‘a %{count} ký tá»±." + text_caracters_minimum: "Phải gồm ít nhất %{count} ký tá»±." + text_length_between: "Length between %{min} and %{max} characters." text_tracker_no_workflow: No workflow defined for this tracker text_unallowed_characters: Ký tá»± không hợp lệ text_comma_separated: Multiple values allowed (comma separated). 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_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_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: "Vá»›i các dá»± án không được chá»n, bạn chỉ có thể nhận được thông báo vá» các vấn đỠbạn đăng ký theo dõi hoặc có liên quan đến bạn (chẳng hạn, vấn đỠđược gán cho bạn)." 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_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: 'Chá»n các mô-Ä‘un cho dá»± án:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: File repository 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:' - text_user_wrote: "{{value}} wrote:" - text_enumeration_destroy_question: "{{count}} objects are assigned to this value." + 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/email.yml and restart the application to enable them." + 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." default_role_manager: Äiá»u hành default_role_developer: Phát triển @@ -840,12 +841,12 @@ label_example: Ví dụ text_repository_usernames_mapping: "Chá»n hoặc cập nhật ánh xạ ngưá»i dùng hệ thống vá»›i ngưá»i dùng trong kho lưu trữ.\nNhững trưá»ng hợp trùng hợp vá» tên và email sẽ được tá»± động ánh xạ." permission_delete_own_messages: Delete own messages - label_user_activity: "{{value}}'s activity" - label_updated_time_by: "Updated by {{author}} {{age}} ago" + 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." + 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 @@ -860,21 +861,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -882,14 +883,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -924,9 +925,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -953,12 +954,12 @@ 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_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}}." + 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. @@ -966,7 +967,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -977,8 +978,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/zh-TW.yml.svn-base --- a/config/locales/.svn/text-base/zh-TW.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/zh-TW.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -104,37 +104,37 @@ half_a_minute: "åŠåˆ†é˜" less_than_x_seconds: one: "å°æ–¼ 1 ç§’" - other: "å°æ–¼ {{count}} ç§’" + other: "å°æ–¼ %{count} ç§’" x_seconds: one: "1 ç§’" - other: "{{count}} ç§’" + other: "%{count} ç§’" less_than_x_minutes: one: "å°æ–¼ 1 分é˜" - other: "å°æ–¼ {{count}} 分é˜" + other: "å°æ–¼ %{count} 分é˜" x_minutes: one: "1 分é˜" - other: "{{count}} 分é˜" + other: "%{count} 分é˜" about_x_hours: one: "ç´„ 1 å°æ™‚" - other: "ç´„ {{count}} å°æ™‚" + other: "ç´„ %{count} å°æ™‚" x_days: one: "1 天" - other: "{{count}} 天" + other: "%{count} 天" about_x_months: one: "ç´„ 1 個月" - other: "ç´„ {{count}} 個月" + other: "ç´„ %{count} 個月" x_months: one: "1 個月" - other: "{{count}} 個月" + other: "%{count} 個月" about_x_years: one: "ç´„ 1 å¹´" - other: "ç´„ {{count}} å¹´" + other: "ç´„ %{count} å¹´" over_x_years: one: "è¶…éŽ 1 å¹´" - other: "è¶…éŽ {{count}} å¹´" + other: "è¶…éŽ %{count} å¹´" almost_x_years: one: "將近 1 å¹´" - other: "將近 {{count}} å¹´" + other: "將近 %{count} å¹´" prompts: year: "å¹´" month: "月" @@ -147,8 +147,8 @@ errors: template: header: - one: "有 1 個錯誤發生使得「{{model}}ã€ç„¡æ³•被儲存。" - other: "有 {{count}} 個錯誤發生使得「{{model}}ã€ç„¡æ³•被儲存。" + one: "有 1 個錯誤發生使得「%{model}ã€ç„¡æ³•被儲存。" + other: "有 %{count} 個錯誤發生使得「%{model}ã€ç„¡æ³•被儲存。" # The variable :count is also available body: "䏋颿‰€åˆ—æ¬„ä½æœ‰å•題:" # The values :model, :attribute and :value are always available for interpolation @@ -161,16 +161,16 @@ accepted: "必须是å¯è¢«æŽ¥å—çš„" empty: "ä¸èƒ½ç•™ç©º" blank: "ä¸èƒ½æ˜¯ç©ºç™½å­—å…ƒ" - too_long: "éŽé•·ï¼ˆæœ€é•·æ˜¯ {{count}} 個字)" - too_short: "éŽçŸ­ï¼ˆæœ€çŸ­æ˜¯ {{count}} 個字)" - wrong_length: "字數錯誤(必須是 {{count}} 個字)" + too_long: "éŽé•·ï¼ˆæœ€é•·æ˜¯ %{count} 個字)" + too_short: "éŽçŸ­ï¼ˆæœ€çŸ­æ˜¯ %{count} 個字)" + wrong_length: "字數錯誤(必須是 %{count} 個字)" taken: "已經被使用" not_a_number: "䏿˜¯æ•¸å­—" - greater_than: "必須大於 {{count}}" - greater_than_or_equal_to: "必須大於或等於 {{count}}" - equal_to: "必須等於 {{count}}" - less_than: "å¿…é ˆå°æ–¼ {{count}}" - less_than_or_equal_to: "å¿…é ˆå°æ–¼æˆ–等於 {{count}}" + greater_than: "必須大於 %{count}" + greater_than_or_equal_to: "必須大於或等於 %{count}" + equal_to: "必須等於 %{count}" + less_than: "å¿…é ˆå°æ–¼ %{count}" + less_than_or_equal_to: "å¿…é ˆå°æ–¼æˆ–等於 %{count}" odd: "必須是奇數" even: "å¿…é ˆæ˜¯å¶æ•¸" # Append your own errors here or at the model/attributes scope. @@ -185,7 +185,7 @@ # For example, # models: # user: - # blank: "This is a custom blank message for {{model}}: {{attribute}}" + # blank: "This is a custom blank message for %{model}: %{attribute}" # attributes: # login: # blank: "This is a custom blank message for User login" @@ -236,22 +236,23 @@ notice_locking_conflict: 資料已被其他使用者更新。 notice_not_authorized: ä½ æœªè¢«æŽˆæ¬Šå­˜å–æ­¤é é¢ã€‚ notice_not_authorized_archived_project: 您欲存å–的專案已經被歸檔å°å­˜ã€‚ - notice_email_sent: "郵件已經æˆåŠŸå¯„é€è‡³ä»¥ä¸‹æ”¶ä»¶è€…: {{value}}" - notice_email_error: "寄é€éƒµä»¶çš„éŽç¨‹ä¸­ç™¼ç”ŸéŒ¯èª¤ ({{value}})" + 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_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: "由於項目數é‡è¶…éŽå¯é¡¯ç¤ºæ•¸é‡çš„æœ€å¤§å€¼ (%{max}),故此甘特圖尾部已被截斷" - error_can_t_load_default_data: "無法載入é è¨­çµ„態: {{value}}" + error_can_t_load_default_data: "無法載入é è¨­çµ„態: %{value}" error_scm_not_found: "在 SCM 儲存庫中找ä¸åˆ°é€™å€‹é …目或版次。" - error_scm_command_failed: "å˜—è©¦å­˜å– SCM 儲存庫時發生錯誤: {{value}}" + error_scm_command_failed: "å˜—è©¦å­˜å– SCM 儲存庫時發生錯誤: %{value}" error_scm_annotate: "SCM 儲存庫中無此項目或此項目無法被加註。" error_issue_not_found_in_project: '該項目ä¸å­˜åœ¨æˆ–ä¸å±¬æ–¼æ­¤å°ˆæ¡ˆ' error_no_tracker_in_project: '此專案尚未指定追蹤標籤。請檢查專案的設定資訊。' @@ -265,26 +266,26 @@ error_workflow_copy_source: 'è«‹é¸æ“‡ä¸€å€‹ä¾†æºé …目追蹤標籤或角色' error_workflow_copy_target: 'è«‹é¸æ“‡ä¸€å€‹ï¼ˆæˆ–多個)目的項目追蹤標籤或角色' error_unable_delete_issue_status: '無法刪除項目狀態' - error_unable_to_connect: "無法連線至({{value}})" - warning_attachments_not_saved: "{{count}} 個附加檔案無法被儲存。" + error_unable_to_connect: "無法連線至(%{value})" + warning_attachments_not_saved: "%{count} 個附加檔案無法被儲存。" mail_subject_lost_password: 您的 Redmine 網站密碼 mail_body_lost_password: '欲變更您的 Redmine 網站密碼, 請點é¸ä»¥ä¸‹éˆçµ:' mail_subject_register: 啟用您的 Redmine 帳號 mail_body_register: '欲啟用您的 Redmine 帳號, 請點é¸ä»¥ä¸‹éˆçµ:' - mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨ {{value}} 帳號登入 Redmine 網站。" + mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨ %{value} 帳號登入 Redmine 網站。" mail_body_account_information: 您的 Redmine 帳號資訊 mail_subject_account_activation_request: Redmine 帳號啟用需求通知 - mail_body_account_activation_request: "æœ‰ä½æ–°ç”¨æˆ¶ ({{value}}) 已經完æˆè¨»å†Šï¼Œæ­£ç­‰å€™æ‚¨çš„審核:" - mail_subject_reminder: "您有 {{count}} 個項目å³å°‡åˆ°æœŸ ({{days}})" - mail_body_reminder: "{{count}} 個指派給您的項目,將於 {{days}} 天之內到期:" - mail_subject_wiki_content_added: "'{{id}}' wiki é é¢å·²è¢«æ–°å¢ž" - mail_body_wiki_content_added: "The '{{id}}' wiki é é¢å·²è¢« {{author}} 新增。" - mail_subject_wiki_content_updated: "'{{id}}' wiki é é¢å·²è¢«æ›´æ–°" - mail_body_wiki_content_updated: "The '{{id}}' wiki é é¢å·²è¢« {{author}} 更新。" + mail_body_account_activation_request: "æœ‰ä½æ–°ç”¨æˆ¶ (%{value}) 已經完æˆè¨»å†Šï¼Œæ­£ç­‰å€™æ‚¨çš„審核:" + mail_subject_reminder: "您有 %{count} 個項目å³å°‡åˆ°æœŸ (%{days})" + 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_body_wiki_content_updated: "æ­¤ '%{id}' wiki é é¢å·²è¢« %{author} 更新。" gui_validation_error: 1 個錯誤 - gui_validation_error_plural: "{{count}} 個錯誤" + gui_validation_error_plural: "%{count} 個錯誤" field_name: å稱 field_description: 概述 @@ -383,6 +384,7 @@ field_member_of_group: "被指派者的群組" field_assigned_to_role: "被指派者的角色" field_text: 內容文字 + field_visible: å¯è¢«çœ‹è¦‹ setting_app_title: 標題 setting_app_subtitle: 副標題 @@ -411,6 +413,7 @@ setting_issue_list_default_columns: é è¨­é¡¯ç¤ºæ–¼é …ç›®æ¸…å–®çš„æ¬„ä½ setting_repositories_encodings: 版本庫編碼 setting_commit_logs_encoding: é€äº¤è¨Šæ¯ç·¨ç¢¼ + setting_emails_header: é›»å­éƒµä»¶å‰é ­èªªæ˜Ž setting_emails_footer: é›»å­éƒµä»¶é™„帶說明 setting_protocol: å”定 setting_per_page_options: æ¯é é¡¯ç¤ºå€‹æ•¸é¸é … @@ -438,6 +441,9 @@ 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: 建立å­å°ˆæ¡ˆ @@ -516,14 +522,14 @@ label_x_projects: zero: 無專案 one: 1 個專案 - other: "{{count}} 個專案" + 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_issues_by: "項目按 %{value} 分組顯示" label_issue_added: 項目已新增 label_issue_updated: 項目已更新 label_document: 文件 @@ -573,7 +579,7 @@ label_registered_on: 註冊於 label_activity: 活動 label_overall_activity: 整體活動 - label_user_activity: "{{value}} 的活動" + label_user_activity: "%{value} 的活動" label_new: 建立新的... label_logged_as: ç›®å‰ç™»å…¥ label_environment: 環境 @@ -583,7 +589,7 @@ label_auth_source_plural: èªè­‰æ¨¡å¼æ¸…å–® label_subproject_plural: å­å°ˆæ¡ˆ label_subproject_new: 建立å­å°ˆæ¡ˆ - label_and_its_subprojects: "{{value}} 與其å­å°ˆæ¡ˆ" + label_and_its_subprojects: "%{value} 與其å­å°ˆæ¡ˆ" label_min_max_length: æœ€å° - 最大 長度 label_list: 清單 label_date: 日期 @@ -594,8 +600,8 @@ label_text: 長文字 label_attribute: 屬性 label_attribute_plural: 屬性 - label_download: "{{count}} 個下載" - label_download_plural: "{{count}} 個下載" + label_download: "%{count} 個下載" + label_download_plural: "%{count} 個下載" label_no_data: 沒有任何資料å¯ä¾›é¡¯ç¤º label_change_status: 變更狀態 label_history: æ­·å² @@ -627,17 +633,17 @@ label_closed_issues: å·²çµæŸ label_closed_issues_plural: å·²çµæŸ label_x_open_issues_abbr_on_total: - zero: 0 進行中 / å…± {{total}} - one: 1 進行中 / å…± {{total}} - other: "{{count}} 進行中 / å…± {{total}}" + zero: 0 進行中 / å…± %{total} + one: 1 進行中 / å…± %{total} + other: "%{count} 進行中 / å…± %{total}" label_x_open_issues_abbr: zero: 0 進行中 one: 1 進行中 - other: "{{count}} 進行中" + other: "%{count} 進行中" label_x_closed_issues_abbr: zero: 0 å·²çµæŸ one: 1 å·²çµæŸ - other: "{{count}} å·²çµæŸ" + other: "%{count} å·²çµæŸ" label_total: 總計 label_permissions: æ¬Šé™ label_current_status: ç›®å‰ç‹€æ…‹ @@ -655,7 +661,7 @@ label_months_from: 個月, 開始月份 label_gantt: 甘特圖 label_internal: 內部 - label_last_changes: "最近 {{count}} 個變更" + label_last_changes: "最近 %{count} 個變更" label_change_view_all: 檢視全部的變更 label_personalize_page: è‡ªè¨‚ç‰ˆé¢ label_comment: 註解 @@ -663,7 +669,7 @@ label_x_comments: zero: 無註解 one: 1 個註解 - other: "{{count}} 個註解" + other: "%{count} 個註解" label_comment_add: 加入新註解 label_comment_added: 新註解已加入 label_comment_delete: 刪除註解 @@ -684,7 +690,7 @@ label_yesterday: 昨天 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: 今年 @@ -698,13 +704,13 @@ label_repository: 版本控管 label_repository_plural: 版本控管 label_browse: ç€è¦½ - label_modification: "{{count}} 變更" - label_modification_plural: "{{count}} 變更" + label_modification: "%{count} 變更" + label_modification_plural: "%{count} 變更" label_branch: 分支 label_tag: 標籤 label_revision: 版次 label_revision_plural: 版次清單 - label_revision_id: "版次 {{value}}" + label_revision_id: "版次 %{value}" label_associated_revisions: 相關版次 label_added: 已新增 label_modified: 已修改 @@ -721,8 +727,8 @@ label_sort_lower: 往下移動 label_sort_lowest: 移動至çµå°¾ label_roadmap: 版本è—圖 - label_roadmap_due_in: "剩餘 {{value}}" - label_roadmap_overdue: "逾期 {{value}}" + label_roadmap_due_in: "剩餘 %{value}" + label_roadmap_overdue: "逾期 %{value}" label_roadmap_no_issues: 此版本尚未包å«ä»»ä½•é …ç›® label_search: æœå°‹ label_result_plural: çµæžœ @@ -741,8 +747,8 @@ label_issue_tracking: 項目追蹤 label_spent_time: 耗用工時 label_overall_spent_time: 整體耗用工時 - label_f_hour: "{{value}} å°æ™‚" - label_f_hour_plural: "{{value}} å°æ™‚" + label_f_hour: "%{value} å°æ™‚" + label_f_hour_plural: "%{value} å°æ™‚" label_time_tracking: 工時追蹤 label_change_plural: 變更 label_statistics: 統計資訊 @@ -793,15 +799,15 @@ label_date_from: é–‹å§‹ label_date_to: çµæŸ label_language_based: ä¾ç”¨æˆ¶ä¹‹èªžç³»æ±ºå®š - label_sort_by: "按 {{value}} 排åº" + 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_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_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: 變更集清單 @@ -821,7 +827,7 @@ label_registration_activation_by_email: é€éŽé›»å­éƒµä»¶å•Ÿç”¨å¸³æˆ¶ label_registration_manual_activation: 手動啟用帳戶 label_registration_automatic_activation: 自動啟用帳戶 - label_display_per_page: "æ¯é é¡¯ç¤º: {{value}} 個" + label_display_per_page: "æ¯é é¡¯ç¤º: %{value} 個" label_age: 年齡 label_change_properties: 變更屬性 label_general: 一般 @@ -844,7 +850,7 @@ label_sort: æŽ’åº label_ascending: éžå¢žæŽ’åº label_descending: éžæ¸›æŽ’åº - label_date_from_to: èµ· {{start}} è¿„ {{end}} + label_date_from_to: èµ· %{start} è¿„ %{end} label_wiki_content_added: Wiki é é¢å·²æ–°å¢ž label_wiki_content_updated: Wiki é é¢å·²æ›´æ–° label_group: 群組 @@ -863,10 +869,12 @@ label_display_used_statuses_only: 僅顯示此追蹤標籤所使用之狀態 label_api_access_key: API å­˜å–金鑰 label_missing_api_access_key: 找ä¸åˆ° API å­˜å–金鑰 - label_api_access_key_created_on: "API å­˜å–金鑰建立於 {{value}} 之å‰" + 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: é€å‡º @@ -878,7 +886,7 @@ button_create_and_continue: 繼續建立 button_test: 測試 button_edit: 編輯 - button_edit_associated_wikipage: "編輯相關 Wiki é é¢: {{page_title}}" + button_edit_associated_wikipage: "編輯相關 Wiki é é¢: %{page_title}" button_add: 新增 button_change: 修改 button_apply: 套用 @@ -927,54 +935,55 @@ text_regexp_info: eg. ^[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: "確定刪除此工作項目åŠå…¶å­é …目?" - text_journal_changed: "{{label}} 從 {{old}} 變更為 {{new}}" - text_journal_set_to: "{{label}} 設定為 {{value}}" - text_journal_deleted: "{{label}} 已刪除 ({{old}})" - text_journal_added: "{{label}} {{value}} 已新增" + 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)ã€é˜¿æ‹‰ä¼¯æ•¸å­—與連字符號(-)。
    儲存後,代碼ä¸å¯å†è¢«æ›´æ”¹ã€‚' - text_caracters_maximum: "最多 {{count}} 個字元." - text_caracters_minimum: "長度必須大於 {{count}} 個字元." - text_length_between: "長度必須介於 {{min}} 至 {{max}} 個字元之間." + 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: å¯è¼¸å…¥å¤šå€‹å€¼ï¼ˆé ˆä»¥æ›è¡Œç¬¦è™Ÿåˆ†éš”ï¼Œå³æ¯åˆ—åªèƒ½è¼¸å…¥ä¸€å€‹å€¼ï¼‰ã€‚ text_issues_ref_in_commit_messages: é€äº¤è¨Šæ¯ä¸­åƒç…§(或修正)項目之關éµå­— - text_issue_added: "é …ç›® {{id}} 已被 {{author}} 通報。" - text_issue_updated: "é …ç›® {{id}} 已被 {{author}} 更新。" + text_issue_added: "é …ç›® %{id} 已被 %{author} 通報。" + text_issue_updated: "é …ç›® %{id} 已被 %{author} 更新。" text_wiki_destroy_confirmation: 您確定è¦åˆªé™¤é€™å€‹ wiki 和其中的所有內容? - text_issue_category_destroy_question: "有 ({{count}}) 個項目被指派到此分類. è«‹é¸æ“‡æ‚¨æƒ³è¦çš„動作?" + 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_status_changed_by_changeset: "已套用至變更集 %{value}." + text_time_logged_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_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_user_wrote: "%{value} å…ˆå‰æåˆ°:" + text_enumeration_destroy_question: "ç›®å‰æœ‰ %{count} 個物件使用此列舉值。" text_enumeration_category_reassign_to: '釿–°è¨­å®šå…¶åˆ—舉值為:' - text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/email.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" + text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/configuration.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" 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_destroy_question: "æ­¤é é¢åŒ…å« %{descendants} 個å­é é¢åŠå»¶ä¼¸é é¢ã€‚ è«‹é¸æ“‡æ‚¨æƒ³è¦çš„動作?" text_wiki_page_nullify_children: "ä¿ç•™æ‰€æœ‰å­é é¢ç•¶ä½œæ ¹é é¢" text_wiki_page_destroy_children: "刪除所有å­é é¢åŠå…¶å»¶ä¼¸é é¢" text_wiki_page_reassign_children: "釿–°æŒ‡å®šæ‰€æœ‰çš„å­é é¢ä¹‹çˆ¶é é¢è‡³æ­¤é é¢" @@ -1008,8 +1017,7 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 - - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/.svn/text-base/zh.yml.svn-base --- a/config/locales/.svn/text-base/zh.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/.svn/text-base/zh.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -29,37 +29,37 @@ half_a_minute: "åŠåˆ†é’Ÿ" less_than_x_seconds: one: "一秒内" - other: "少于 {{count}} ç§’" + other: "少于 %{count} ç§’" x_seconds: one: "一秒" - other: "{{count}} ç§’" + other: "%{count} ç§’" less_than_x_minutes: one: "一分钟内" - other: "少于 {{count}} 分钟" + other: "少于 %{count} 分钟" x_minutes: one: "一分钟" - other: "{{count}} 分钟" + other: "%{count} 分钟" about_x_hours: one: "å¤§çº¦ä¸€å°æ—¶" - other: "大约 {{count}} å°æ—¶" + other: "大约 %{count} å°æ—¶" x_days: one: "一天" - other: "{{count}} 天" + other: "%{count} 天" about_x_months: one: "大约一个月" - other: "大约 {{count}} 个月" + other: "大约 %{count} 个月" x_months: one: "一个月" - other: "{{count}} 个月" + other: "%{count} 个月" about_x_years: one: "大约一年" - other: "大约 {{count}} å¹´" + other: "大约 %{count} å¹´" over_x_years: one: "一年以上" - other: "{{count}} 年以上" + other: "%{count} 年以上" almost_x_years: one: "将近 1 å¹´" - other: "将近 {{count}} å¹´" + other: "将近 %{count} å¹´" prompts: year: "å¹´" month: "月" @@ -111,8 +111,8 @@ errors: template: header: - one: "有 1 个错误å‘生导致「{{model}}ã€æ— æ³•被ä¿å­˜ã€‚" - other: "有 {{count}} 个错误å‘生导致「{{model}}ã€æ— æ³•被ä¿å­˜ã€‚" + one: "有 1 个错误å‘生导致「%{model}ã€æ— æ³•被ä¿å­˜ã€‚" + other: "有 %{count} 个错误å‘生导致「%{model}ã€æ— æ³•被ä¿å­˜ã€‚" body: "如下字段出现错误:" messages: inclusion: "ä¸åŒ…å«äºŽåˆ—表中" @@ -122,16 +122,16 @@ accepted: "必须是å¯è¢«æŽ¥å—çš„" empty: "ä¸èƒ½ç•™ç©º" blank: "ä¸èƒ½ä¸ºç©ºå­—符" - too_long: "过长(最长为 {{count}} 个字符)" - too_short: "过短(最短为 {{count}} 个字符)" - wrong_length: "é•¿åº¦éžæ³•(必须为 {{count}} 个字符)" + too_long: "过长(最长为 %{count} 个字符)" + too_short: "过短(最短为 %{count} 个字符)" + wrong_length: "é•¿åº¦éžæ³•(必须为 %{count} 个字符)" taken: "å·²ç»è¢«ä½¿ç”¨" not_a_number: "䏿˜¯æ•°å­—" - greater_than: "必须大于 {{count}}" - greater_than_or_equal_to: "必须大于或等于 {{count}}" - equal_to: "必须等于 {{count}}" - less_than: "å¿…é¡»å°äºŽ {{count}}" - less_than_or_equal_to: "å¿…é¡»å°äºŽæˆ–等于 {{count}}" + 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: "必须在起始日期之åŽ" @@ -168,20 +168,20 @@ notice_file_not_found: 您访问的页é¢ä¸å­˜åœ¨æˆ–已被删除。 notice_locking_conflict: æ•°æ®å·²è¢«å¦ä¸€ä½ç”¨æˆ·æ›´æ–° notice_not_authorized: 对ä¸èµ·ï¼Œæ‚¨æ— æƒè®¿é—®æ­¤é¡µé¢ã€‚ - notice_email_sent: "邮件已æˆåŠŸå‘é€åˆ° {{value}}" - notice_email_error: "å‘é€é‚®ä»¶æ—¶å‘生错误 ({{value}})" + 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_issues: "%{count} 个问题ä¿å­˜å¤±è´¥ï¼ˆå…±é€‰æ‹© %{total} 个问题):%{ids}." notice_no_issue_selected: "未选择任何问题ï¼è¯·é€‰æ‹©æ‚¨è¦ç¼–辑的问题。" notice_account_pending: "您的å¸å·å·²è¢«æˆåŠŸåˆ›å»ºï¼Œæ­£åœ¨ç­‰å¾…ç®¡ç†å‘˜çš„审核。" notice_default_data_loaded: æˆåŠŸè½½å…¥é»˜è®¤è®¾ç½®ã€‚ notice_unable_delete_version: 无法删除版本 notice_issue_done_ratios_updated: 问题完æˆåº¦å·²æ›´æ–°ã€‚ - error_can_t_load_default_data: "无法载入默认设置:{{value}}" + error_can_t_load_default_data: "无法载入默认设置:%{value}" error_scm_not_found: "版本库中ä¸å­˜åœ¨è¯¥æ¡ç›®å’Œï¼ˆæˆ–)其修订版本。" - error_scm_command_failed: "访问版本库时å‘生错误:{{value}}" + error_scm_command_failed: "访问版本库时å‘生错误:%{value}" error_scm_annotate: "该æ¡ç›®ä¸å­˜åœ¨æˆ–无法追溯。" error_issue_not_found_in_project: '问题ä¸å­˜åœ¨æˆ–ä¸å±žäºŽæ­¤é¡¹ç›®' error_no_tracker_in_project: 该项目未设定跟踪标签,请检查项目é…置。 @@ -192,25 +192,25 @@ error_workflow_copy_source: 请选择一个æºè·Ÿè¸ªæ ‡ç­¾æˆ–者角色 error_workflow_copy_target: 请选择目标跟踪标签和角色 - warning_attachments_not_saved: "{{count}} 个文件ä¿å­˜å¤±è´¥ã€‚" + warning_attachments_not_saved: "%{count} 个文件ä¿å­˜å¤±è´¥ã€‚" - mail_subject_lost_password: "您的 {{value}} 密ç " + mail_subject_lost_password: "您的 %{value} 密ç " mail_body_lost_password: '请点击以下链接æ¥ä¿®æ”¹æ‚¨çš„密ç ï¼š' - mail_subject_register: "{{value}}å¸å·æ¿€æ´»" + mail_subject_register: "%{value}å¸å·æ¿€æ´»" mail_body_register: 'è¯·ç‚¹å‡»ä»¥ä¸‹é“¾æŽ¥æ¥æ¿€æ´»æ‚¨çš„å¸å·ï¼š' - mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨æ‚¨çš„ {{value}} å¸å·æ¥ç™»å½•。" + 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页é¢å·²æ·»åŠ " - mail_body_wiki_content_added: "'{{id}}' wiki页é¢å·²ç”± {{author}} 添加。" - mail_subject_wiki_content_updated: "'{{id}}' wiki页é¢å·²æ›´æ–°" - mail_body_wiki_content_updated: "'{{id}}' wiki页é¢å·²ç”± {{author}} 更新。" + 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页é¢å·²æ·»åŠ " + mail_body_wiki_content_added: "'%{id}' wiki页é¢å·²ç”± %{author} 添加。" + mail_subject_wiki_content_updated: "'%{id}' wiki页é¢å·²æ›´æ–°" + mail_body_wiki_content_updated: "'%{id}' wiki页é¢å·²ç”± %{author} 更新。" gui_validation_error: 1 个错误 - gui_validation_error_plural: "{{count}} 个错误" + gui_validation_error_plural: "%{count} 个错误" field_name: åç§° field_description: æè¿° @@ -272,6 +272,7 @@ field_attr_lastname: å§“æ°å±žæ€§ field_attr_mail: 邮件属性 field_onthefly: 峿—¶ç”¨æˆ·ç”Ÿæˆ + field_start_date: 开始 field_done_ratio: 完æˆåº¦ field_auth_source: è®¤è¯æ¨¡å¼ field_hide_mail: éšè—æˆ‘çš„é‚®ä»¶åœ°å€ @@ -427,14 +428,14 @@ label_x_projects: zero: 无项目 one: 1 个项目 - other: "{{count}} 个项目" + 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_issues_by: "按 %{value} 分组显示问题" label_issue_added: 问题已添加 label_issue_updated: 问题已更新 label_document: 文档 @@ -483,7 +484,7 @@ label_registered_on: 注册于 label_activity: 活动 label_overall_activity: 全部活动 - label_user_activity: "{{value}} 的活动" + label_user_activity: "%{value} 的活动" label_new: 新建 label_logged_as: 登录为 label_environment: 环境 @@ -493,7 +494,7 @@ label_auth_source_plural: è®¤è¯æ¨¡å¼ label_subproject_plural: å­é¡¹ç›® label_subproject_new: 新建å­é¡¹ç›® - label_and_its_subprojects: "{{value}} åŠå…¶å­é¡¹ç›®" + label_and_its_subprojects: "%{value} åŠå…¶å­é¡¹ç›®" label_min_max_length: æœ€å° - 最大 长度 label_list: 列表 label_date: 日期 @@ -504,8 +505,8 @@ label_text: 文本 label_attribute: 属性 label_attribute_plural: 属性 - label_download: "{{count}} 次下载" - label_download_plural: "{{count}} 次下载" + label_download: "%{count} 次下载" + label_download_plural: "%{count} 次下载" label_no_data: 没有任何数æ®å¯ä¾›æ˜¾ç¤º label_change_status: å˜æ›´çŠ¶æ€ label_history: 历å²è®°å½• @@ -537,17 +538,17 @@ label_closed_issues: 已关闭 label_closed_issues_plural: 已关闭 label_x_open_issues_abbr_on_total: - zero: 0 打开 / {{total}} - one: 1 打开 / {{total}} - other: "{{count}} 打开 / {{total}}" + zero: 0 打开 / %{total} + one: 1 打开 / %{total} + other: "%{count} 打开 / %{total}" label_x_open_issues_abbr: zero: 0 打开 one: 1 打开 - other: "{{count}} 打开" + other: "%{count} 打开" label_x_closed_issues_abbr: zero: 0 关闭 one: 1 关闭 - other: "{{count}} 关闭" + other: "%{count} 关闭" label_total: åˆè®¡ label_permissions: æƒé™ label_current_status: 当å‰çŠ¶æ€ @@ -565,7 +566,7 @@ label_months_from: ä¸ªæœˆä»¥æ¥ label_gantt: 甘特图 label_internal: 内部 - label_last_changes: "最近的 {{count}} æ¬¡å˜æ›´" + label_last_changes: "最近的 %{count} æ¬¡å˜æ›´" label_change_view_all: æŸ¥çœ‹æ‰€æœ‰å˜æ›´ label_personalize_page: 个性化定制本页 label_comment: 评论 @@ -573,7 +574,7 @@ label_x_comments: zero: 无评论 one: 1 æ¡è¯„论 - other: "{{count}} æ¡è¯„论" + other: "%{count} æ¡è¯„论" label_comment_add: 添加评论 label_comment_added: 评论已添加 label_comment_delete: 删除评论 @@ -594,7 +595,7 @@ label_yesterday: 昨天 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: 今年 @@ -608,13 +609,13 @@ label_repository: 版本库 label_repository_plural: 版本库 label_browse: æµè§ˆ - label_modification: "{{count}} 个更新" - label_modification_plural: "{{count}} 个更新" + label_modification: "%{count} 个更新" + label_modification_plural: "%{count} 个更新" label_branch: 分支 label_tag: 标签 label_revision: 修订 label_revision_plural: 修订 - label_revision_id: 修订 {{value}} + label_revision_id: 修订 %{value} label_associated_revisions: 相关修订版本 label_added: 已添加 label_modified: 已修改 @@ -631,8 +632,8 @@ label_sort_lower: 下移 label_sort_lowest: 置底 label_roadmap: 路线图 - label_roadmap_due_in: "截止日期到 {{value}}" - label_roadmap_overdue: "{{value}} 延期" + label_roadmap_due_in: "截止日期到 %{value}" + label_roadmap_overdue: "%{value} 延期" label_roadmap_no_issues: 该版本没有问题 label_search: æœç´¢ label_result_plural: 结果 @@ -650,8 +651,8 @@ label_changes_details: æ‰€æœ‰å˜æ›´çš„详情 label_issue_tracking: 问题跟踪 label_spent_time: 耗时 - label_f_hour: "{{value}} å°æ—¶" - label_f_hour_plural: "{{value}} å°æ—¶" + label_f_hour: "%{value} å°æ—¶" + label_f_hour_plural: "%{value} å°æ—¶" label_time_tracking: 时间跟踪 label_change_plural: å˜æ›´ label_statistics: 统计 @@ -700,15 +701,15 @@ label_date_from: 从 label_date_to: 到 label_language_based: æ ¹æ®ç”¨æˆ·çš„语言 - label_sort_by: "æ ¹æ® {{value}} 排åº" + 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_feeds_access_key_created_on: "RSSå­˜å–键是在 %{value} 之å‰å»ºç«‹çš„" label_module_plural: æ¨¡å— - label_added_time_by: "ç”± {{author}} 在 {{age}} 之剿·»åŠ " - label_updated_time: " 更新于 {{value}} 之å‰" - label_updated_time_by: "ç”± {{author}} 更新于 {{age}} 之å‰" + label_added_time_by: "ç”± %{author} 在 %{age} 之剿·»åŠ " + label_updated_time: " 更新于 %{value} 之å‰" + label_updated_time_by: "ç”± %{author} 更新于 %{age} 之å‰" label_jump_to_a_project: 选择一个项目... label_file_plural: 文件 label_changeset_plural: å˜æ›´ @@ -724,7 +725,7 @@ label_registration_activation_by_email: é€šè¿‡é‚®ä»¶è®¤è¯æ¿€æ´»å¸å· label_registration_manual_activation: 手动激活å¸å· label_registration_automatic_activation: 自动激活å¸å· - label_display_per_page: "æ¯é¡µæ˜¾ç¤ºï¼š{{value}}" + label_display_per_page: "æ¯é¡µæ˜¾ç¤ºï¼š%{value}" label_age: 年龄 label_change_properties: 修改属性 label_general: 一般 @@ -747,7 +748,7 @@ label_sort: æŽ’åº label_ascending: å‡åº label_descending: é™åº - label_date_from_to: 从 {{start}} 到 {{end}} + label_date_from_to: 从 %{start} 到 %{end} label_wiki_content_added: Wiki 页é¢å·²æ·»åŠ  label_wiki_content_updated: Wiki 页é¢å·²æ›´æ–° label_group: 组 @@ -766,7 +767,7 @@ label_display_used_statuses_only: åªæ˜¾ç¤ºè¢«æ­¤è·Ÿè¸ªæ ‡ç­¾ä½¿ç”¨çš„çŠ¶æ€ label_api_access_key: API访问键 label_missing_api_access_key: 缺少API访问键 - label_api_access_key_created_on: API访问键是在 {{value}} 之å‰å»ºç«‹çš„ + label_api_access_key_created_on: API访问键是在 %{value} 之å‰å»ºç«‹çš„ button_login: 登录 button_submit: æäº¤ @@ -826,53 +827,53 @@ 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_journal_changed: "{{label}} 从 {{old}} å˜æ›´ä¸º {{new}}" - text_journal_set_to: "{{label}} 被设置为 {{value}}" - text_journal_deleted: "{{label}} 已删除 ({{old}})" - text_journal_added: "{{label}} {{value}} 已添加" + 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),数字和连字符(-)。
    请注æ„,标识符ä¿å­˜åŽå°†ä¸å¯ä¿®æ”¹ã€‚' - text_caracters_maximum: "最多 {{count}} 个字符。" - text_caracters_minimum: "è‡³å°‘éœ€è¦ {{count}} 个字符。" - text_length_between: "长度必须在 {{min}} 到 {{max}} 个字符之间。" + 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: å¯ä»¥ä½¿ç”¨å¤šä¸ªå€¼ï¼ˆæ¯è¡Œä¸€ä¸ªå€¼ï¼‰ã€‚ text_issues_ref_in_commit_messages: 在æäº¤ä¿¡æ¯ä¸­å¼•用和解决问题 - text_issue_added: "问题 {{id}} 已由 {{author}} æäº¤ã€‚" - text_issue_updated: "问题 {{id}} 已由 {{author}} 更新。" + text_issue_added: "问题 %{id} 已由 %{author} æäº¤ã€‚" + text_issue_updated: "问题 %{id} 已由 %{author} 更新。" text_wiki_destroy_confirmation: 您确定è¦åˆ é™¤è¿™ä¸ª wiki åŠå…¶æ‰€æœ‰å†…容å—? - text_issue_category_destroy_question: "有一些问题({{count}} ä¸ªï¼‰å±žäºŽæ­¤ç±»åˆ«ã€‚æ‚¨æƒ³è¿›è¡Œå“ªç§æ“作?" + 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_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_question: 您è¦åˆ é™¤çš„问题已ç»ä¸ŠæŠ¥äº† %{hours} å°æ—¶çš„工作é‡ã€‚æ‚¨æƒ³è¿›è¡Œé‚£ç§æ“作? text_destroy_time_entries: åˆ é™¤ä¸ŠæŠ¥çš„å·¥ä½œé‡ text_assign_time_entries_to_project: å°†å·²ä¸ŠæŠ¥çš„å·¥ä½œé‡æäº¤åˆ°é¡¹ç›®ä¸­ text_reassign_time_entries: 'å°†å·²ä¸ŠæŠ¥çš„å·¥ä½œé‡æŒ‡å®šåˆ°æ­¤é—®é¢˜ï¼š' - text_user_wrote: "{{value}} 写到:" + text_user_wrote: "%{value} 写到:" text_enumeration_category_reassign_to: '将它们关è”到新的枚举值:' - text_enumeration_destroy_question: "{{count}} 个对象被关è”到了这个枚举值。" - text_email_delivery_not_configured: "邮件傿•°å°šæœªé…置,因此邮件通知功能已被ç¦ç”¨ã€‚\n请在config/email.yml中é…置您的SMTPæœåŠ¡å™¨ä¿¡æ¯å¹¶é‡æ–°å¯åŠ¨ä»¥ä½¿å…¶ç”Ÿæ•ˆã€‚" + 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_destroy_question: æ­¤é¡µé¢æœ‰ %{descendants} 个å­é¡µé¢å’Œä¸‹çº§é¡µé¢ã€‚æ‚¨æƒ³è¿›è¡Œé‚£ç§æ“作? text_wiki_page_reassign_children: å°†å­é¡µé¢çš„上级页é¢è®¾ç½®ä¸º text_wiki_page_nullify_children: å°†å­é¡µé¢ä¿ç•™ä¸ºæ ¹é¡µé¢ text_wiki_page_destroy_children: 删除å­é¡µé¢åŠå…¶æ‰€æœ‰ä¸‹çº§é¡µé¢ @@ -916,12 +917,12 @@ label_subtask_plural: å­ä»»åŠ¡ label_project_copy_notifications: å¤åˆ¶é¡¹ç›®æ—¶å‘é€é‚®ä»¶é€šçŸ¥ error_can_not_delete_custom_field: ä¸èƒ½åˆ é™¤è‡ªå®šä¹‰å±žæ€§ - error_unable_to_connect: ä¸èƒ½è¿žæŽ¥åˆ° ({{value}}) + 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}}。" + notice_failed_to_save_members: "æˆå‘˜ä¿å­˜å¤±è´¥ï¼š%{errors}。" text_zoom_out: ç¼©å° text_zoom_in: 放大 notice_unable_delete_time_entry: 无法删除工时记录。 @@ -929,7 +930,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -940,8 +941,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/bg.yml --- a/config/locales/bg.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/bg.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,12 @@ bg: + # 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" + default: "%d-%m-%Y" short: "%b %d" long: "%B %d, %Y" @@ -32,45 +33,46 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "по-малко от 1 Ñекунда" - other: "по-малко от {{count}} Ñекунди" + other: "по-малко от %{count} Ñекунди" x_seconds: one: "1 Ñекунда" - other: "{{count}} Ñекунди" + other: "%{count} Ñекунди" less_than_x_minutes: one: "по-малко от 1 минута" - other: "по-малко от {{count}} минути" + other: "по-малко от %{count} минути" x_minutes: one: "1 минута" - other: "{{count}} минути" + other: "%{count} минути" about_x_hours: one: "около 1 чаÑ" - other: "около {{count}} чаÑа" + other: "около %{count} чаÑа" x_days: one: "1 ден" - other: "{{count}} дена" + other: "%{count} дена" about_x_months: one: "около 1 меÑец" - other: "около {{count}} меÑеца" + other: "около %{count} меÑеца" x_months: one: "1 меÑец" - other: "{{count}} меÑеца" + other: "%{count} меÑеца" about_x_years: one: "около 1 година" - other: "около {{count}} години" + other: "около %{count} години" over_x_years: one: "над 1 година" - other: "над {{count}} години" + other: "над %{count} години" almost_x_years: one: "почти 1 година" - other: "почти {{count}} години" + other: "почти %{count} години" number: + # Default format for numbers format: separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: precision: 1 delimiter: "" storage_units: @@ -83,7 +85,8 @@ mb: "MB" gb: "GB" tb: "TB" - + + # Used in array.to_sentence. support: array: @@ -92,6 +95,10 @@ activerecord: errors: + template: + header: + one: "1 грешка попречи този %{model} да бъде запиÑан" + other: "%{count} грешки попречиха този %{model} да бъде запиÑан" messages: inclusion: "не ÑъщеÑтвува в ÑпиÑъка" exclusion: "е запазено" @@ -106,16 +113,17 @@ taken: "вече ÑъщеÑтвува" not_a_number: "не е чиÑло" not_a_date: "е невалидна дата" - greater_than: "трÑбва да бъде по-голÑм[a/о] от {{count}}" - greater_than_or_equal_to: "трÑбва да бъде по-голÑм[a/о] от или равен[a/o] на {{count}}" - equal_to: "трÑбва да бъде равен[a/o] на {{count}}" - less_than: "трÑбва да бъде по-малък[a/o] от {{count}}" - less_than_or_equal_to: "трÑбва да бъде по-малък[a/o] от или равен[a/o] на {{count}}" + greater_than: "трÑбва да бъде по-голÑм[a/о] от %{count}" + greater_than_or_equal_to: "трÑбва да бъде по-голÑм[a/о] от или равен[a/o] на %{count}" + equal_to: "трÑбва да бъде равен[a/o] на %{count}" + less_than: "трÑбва да бъде по-малък[a/o] от %{count}" + less_than_or_equal_to: "трÑбва да бъде по-малък[a/o] от или равен[a/o] на %{count}" odd: "трÑбва да бъде нечетен[a/o]" even: "трÑбва да бъде четен[a/o]" greater_than_start_date: "трÑбва да е Ñлед началната дата" not_same_project: "не е от ÑÑŠÑ‰Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚" circular_dependency: "Тази Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ Ñ‰Ðµ доведе до безкрайна завиÑимоÑÑ‚" + cant_link_an_issue_with_a_descendant: "Една задача не може да бъде Ñвързвана към ÑÐ²Ð¾Ñ Ð¿Ð¾Ð´Ð·Ð°Ð´Ð°Ñ‡Ð°" actionview_instancetag_blank_option: Изберете @@ -123,7 +131,7 @@ general_text_Yes: 'Да' general_text_no: 'не' general_text_yes: 'да' - general_lang_name: 'Bulgarian' + general_lang_name: 'Bulgarian (БългарÑки)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 @@ -146,24 +154,61 @@ notice_file_not_found: ÐеÑъщеÑтвуваща или премеÑтена Ñтраница. notice_locking_conflict: Друг потребител Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ‚ÐµÐ·Ð¸ данни в момента. notice_not_authorized: ÐÑмате право на доÑтъп до тази Ñтраница. - notice_email_sent: "Изпратен e-mail на {{value}}" - notice_email_error: "Грешка при изпращане на e-mail ({{value}})" + notice_not_authorized_archived_project: Проектът, който Ñе опитвате да видите е архивиран. + notice_email_sent: "Изпратен e-mail на %{value}" + notice_email_error: "Грешка при изпращане на e-mail (%{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: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. + 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}}" + error_scm_command_failed: "Грешка при опит за ÐºÐ¾Ð¼ÑƒÐ½Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ: %{value}" + error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." + 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: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ + error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). + error_unable_delete_issue_status: ÐевъзможноÑÑ‚ за изтриване на ÑÑŠÑтоÑние на задача + error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ (%{value}) + warning_attachments_not_saved: "%{count} файла не бÑха запиÑани." - mail_subject_lost_password: "Вашата парола ({{value}})" + mail_subject_lost_password: "Вашата парола (%{value})" mail_body_lost_password: 'За да Ñмените паролата Ñи, използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' - mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° профил ({{value}})" + 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: "Wiki Ñтраницата '%{id}' беше добавена" + mail_body_wiki_content_added: Wiki Ñтраницата '%{id}' беше добавена от %{author}. + mail_subject_wiki_content_updated: "Wiki Ñтраницата '%{id}' не беше обновена" + mail_body_wiki_content_updated: Wiki Ñтраницата '%{id}' беше обновена от %{author}. gui_validation_error: 1 грешка - gui_validation_error_plural: "{{count}} грешки" + gui_validation_error_plural: "%{count} грешки" field_name: Име field_description: ОпиÑание - field_summary: Групиран изглед + field_summary: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ field_is_required: Задължително field_firstname: Име field_lastname: Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ @@ -196,6 +241,7 @@ field_priority: Приоритет field_fixed_version: Планувана верÑÐ¸Ñ field_user: Потребител + field_principal: Principal field_role: Ð Ð¾Ð»Ñ field_homepage: Ðачална Ñтраница field_is_public: Публичен @@ -221,6 +267,7 @@ field_attr_lastname: Ðтрибут Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ (Lastname) field_attr_mail: Ðтрибут Email field_onthefly: Динамично Ñъздаване на потребител + field_start_date: Ðачална дата field_done_ratio: % ÐŸÑ€Ð¾Ð³Ñ€ÐµÑ field_auth_source: Ðачин на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ field_hide_mail: Скрий e-mail адреÑа ми @@ -238,7 +285,25 @@ field_assignable: Възможно е възлагане на задачи за тази Ñ€Ð¾Ð»Ñ field_redirect_existing_links: ПренаÑочване на ÑъщеÑтвуващи линкове field_estimated_hours: ИзчиÑлено време + field_column_names: Колони + field_time_entries: Log time + field_time_zone: ЧаÑова зона + field_searchable: С възможноÑÑ‚ за търÑене field_default_value: СтойноÑÑ‚ по подразбиране + field_comments_sorting: Сортиране на коментарите + field_parent_title: РодителÑка Ñтраница + field_editable: Editable + field_watcher: Ðаблюдател + field_identity_url: OpenID URL + field_content: Съдържание + field_group_by: Групиране на резултатите по + field_sharing: Sharing + field_parent_issue: РодителÑка задача + field_member_of_group: Член на група + field_assigned_to_role: Assignee's role + field_text: ТекÑтово поле + field_visible: Видим + field_warn_on_leaving_unsaved: Предупреди ме, когато напуÑкам Ñтраница Ñ Ð½ÐµÐ·Ð°Ð¿Ð¸Ñано Ñъдържание setting_app_title: Заглавие setting_app_subtitle: ОпиÑание @@ -249,37 +314,147 @@ setting_attachment_max_size: МакÑимална големина на прикачен файл setting_issues_export_limit: МакÑимален брой задачи за екÑпорт setting_mail_from: E-mail Ð°Ð´Ñ€ÐµÑ Ð·Ð° емиÑии + setting_bcc_recipients: Получатели на Ñкрито копие (bcc) + setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) setting_host_name: ХоÑÑ‚ setting_text_formatting: Форматиране на текÑта setting_wiki_compression: Wiki компреÑиране на иÑториÑта 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_header: Emails header + setting_emails_footer: ПодтекÑÑ‚ за e-mail + 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: ОтрÑзване на e-mail-ите Ñлед един от тези редове + setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и + setting_mail_handler_api_key: API ключ + setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори + setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar + setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar + setting_diff_max_lines_displayed: МакÑимален брой показани diff редове + setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline + setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла + setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ + setting_password_min_length: Минимална дължина на парола + setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор + setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект + setting_issue_done_ratio: ИзчиÑление на процента на готови задачи Ñ + setting_issue_done_ratio_issue_field: Използване на поле '% ПрогреÑ' + setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑнието на задачите + setting_start_of_week: Първи ден на Ñедмицата + setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ + setting_cache_formatted_text: 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: Разглеждане на задачите + 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: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) + permission_view_gantt: Разглеждане на мрежов график + permission_view_calendar: Разглеждане на календари + permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ + permission_add_issue_watchers: ДобавÑне на наблюдатели + permission_delete_issue_watchers: Изтриване на наблюдатели + permission_log_time: Log spent time + permission_view_time_entries: Разглеждане на изразходваното време + permission_edit_time_entries: Редактиране на time logs + permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs + permission_manage_news: Управление на новини + permission_comment_news: Коментиране на новини + permission_manage_documents: Управление на документи + permission_view_documents: Разглеждане на документи + permission_manage_files: Управление на файлове + permission_view_files: Разглеждане на файлове + permission_manage_wiki: Управление на wiki + permission_rename_wiki_pages: Преименуване на wiki Ñтраници + permission_delete_wiki_pages: Изтриване на wiki Ñтраници + permission_view_wiki_pages: Разглеждане на wiki + permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ + permission_edit_wiki_pages: Редактиране на wiki Ñтраници + permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове към wiki Ñтраници + permission_protect_wiki_pages: Заключване на wiki Ñтраници + permission_manage_repository: Управление на хранилища + permission_browse_repository: Разглеждане на хранилища + permission_view_changesets: Разглеждане на changesets + permission_commit_access: ПоверÑване + permission_manage_boards: Управление на 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: ЕкÑпорт на wiki Ñтраници + permission_manage_subtasks: Управление на подзадачите + + project_module_issue_tracking: Тракинг + project_module_time_tracking: ОтделÑне на време + project_module_news: Ðовини + project_module_documents: Документи + project_module_files: Файлове + project_module_wiki: Wiki + project_module_repository: Хранилище + project_module_boards: Форуми + project_module_calendar: Календар + project_module_gantt: Мрежов график + label_user: Потребител label_user_plural: Потребители label_user_new: Ðов потребител + label_user_anonymous: Ðнонимен label_project: Проект label_project_new: Ðов проект label_project_plural: Проекти label_x_projects: - zero: 0 проекти + zero: 0 проекта one: 1 проект - other: "{{count}} проекта" + 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: Ðова Ñ€Ð¾Ð»Ñ @@ -306,12 +481,14 @@ 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: Изход @@ -321,25 +498,30 @@ label_last_login: ПоÑледно Ñвързване label_registered_on: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ label_activity: ДейноÑÑ‚ + label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ + label_user_activity: "ÐктивноÑÑ‚ на %{value}" label_new: Ðов - label_logged_as: ВлÑзъл като + 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_download: "%{count} изтеглÑне" + label_download_plural: "%{count} изтеглÑниÑ" label_no_data: ÐÑма изходни данни label_change_status: ПромÑна на ÑÑŠÑтоÑнието label_history: ИÑÑ‚Ð¾Ñ€Ð¸Ñ @@ -347,6 +529,7 @@ label_attachment_new: Ðов файл label_attachment_delete: Изтриване label_attachment_plural: Файлове + label_file_added: Добавен файл label_report: Справка label_report_plural: Справки label_news: Ðовини @@ -354,11 +537,13 @@ label_news_plural: Ðовини label_news_latest: ПоÑледни новини label_news_view_all: Виж вÑички + label_news_added: Добавена новина label_settings: ÐаÑтройки label_overview: Общ изглед label_version: ВерÑÐ¸Ñ label_version_new: Ðова верÑÐ¸Ñ label_version_plural: ВерÑии + label_close_versions: ЗатварÑне на завършените верÑии label_confirmation: Одобрение label_export_to: ЕкÑпорт към label_read: Read... @@ -368,23 +553,24 @@ label_closed_issues: затворена label_closed_issues_plural: затворени label_x_open_issues_abbr_on_total: - zero: 0 отворени / {{total}} - one: 1 отворена / {{total}} - other: "{{count}} отворени / {{total}}" + zero: 0 отворени / %{total} + one: 1 отворена / %{total} + other: "%{count} отворени / %{total}" label_x_open_issues_abbr: zero: 0 отворени one: 1 отворена - other: "{{count}} отворени" + other: "%{count} отворени" label_x_closed_issues_abbr: zero: 0 затворени one: 1 затворена - other: "{{count}} затворени" + 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: Използва Ñе от @@ -395,7 +581,7 @@ label_months_from: меÑеца от label_gantt: Мрежов график label_internal: Вътрешен - label_last_changes: "поÑледни {{count}} промени" + label_last_changes: "поÑледни %{count} промени" label_change_view_all: Виж вÑички промени label_personalize_page: ПерÑонализиране label_comment: Коментар @@ -403,22 +589,33 @@ label_x_comments: zero: 0 коментари one: 1 коментар - other: "{{count}} коментари" + 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: е 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: преди @@ -426,25 +623,33 @@ label_not_contains: не Ñъдържа label_day_plural: дни label_repository: Хранилище + label_repository_plural: Хранилища label_browse: Разглеждане - label_modification: "{{count}} промÑна" - label_modification_plural: "{{count}} промени" + 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: МакÑимална големина 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_due_in: "Излиза Ñлед %{value}" + label_roadmap_overdue: "%{value} закъÑнение" label_roadmap_no_issues: ÐÑма задачи за тази верÑÐ¸Ñ label_search: ТърÑене label_result_plural: Pезултати @@ -462,8 +667,9 @@ label_changes_details: Подробни промени label_issue_tracking: Тракинг label_spent_time: Отделено време - label_f_hour: "{{value}} чаÑ" - label_f_hour_plural: "{{value}} чаÑа" + label_overall_spent_time: Общо употребено време + label_f_hour: "%{value} чаÑ" + label_f_hour_plural: "%{value} чаÑа" label_time_tracking: ОтделÑне на време label_change_plural: Промени label_statistics: СтатиÑтики @@ -483,6 +689,7 @@ label_relation_delete: Изтриване на Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ label_relates_to: Ñвързана ÑÑŠÑ label_duplicates: дублира + label_duplicated_by: дублирана от label_blocks: блокира label_blocked_by: блокирана от label_precedes: предшеÑтва @@ -498,10 +705,13 @@ 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: Година @@ -510,14 +720,83 @@ label_date_from: От label_date_to: До label_language_based: Ð’ завиÑимоÑÑ‚ от езика - label_sort_by: "Сортиране по {{value}}" + label_sort_by: "Сортиране по %{value}" label_send_test_email: Изпращане на теÑтов e-mail - label_feeds_access_key_created_on: "{{value}} от Ñъздаването на RSS ключа" + label_feeds_access_key: RSS access ключ + label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп + label_feeds_access_key_created_on: "%{value} от Ñъздаването на RSS ключа" label_module_plural: Модули - label_added_time_by: "Публикувана от {{author}} преди {{age}}" - label_updated_time: "Обновена преди {{value}}" + 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_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: активиране на профила по 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: ВходÑщи e-mail-и + label_generate_key: Генериране на ключ + label_issue_watchers: Ðаблюдатели + label_example: Пример + label_display: Display + label_sort: Сортиране + label_ascending: ÐараÑтващ + label_descending: ÐамалÑващ + label_date_from_to: От %{start} до %{end} + label_wiki_content_added: Wiki Ñтраница беше добавена + label_wiki_content_updated: Wiki Ñтраница беше обновена + 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: ОбновÑване на процента на завършените задачи + label_copy_source: Източник + label_copy_target: Цел + label_copy_same_as_target: Също като целта + label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер + 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: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта + label_principal_search: "ТърÑене на потребител или група:" + label_user_search: "ТърÑене на потребител:" + button_login: Вход button_submit: Прикачване button_save: Ð—Ð°Ð¿Ð¸Ñ @@ -525,8 +804,10 @@ button_uncheck_all: ИзчиÑтване на вÑички button_delete: Изтриване button_create: Създаване + button_create_and_continue: Създаване и продължаване button_test: ТеÑÑ‚ button_edit: Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ + button_edit_associated_wikipage: "Редактиране на аÑоциираната Wiki Ñтраница: %{page_title}" button_add: ДобавÑне button_change: ПромÑна button_apply: Приложи @@ -537,6 +818,7 @@ button_list: СпиÑък button_view: Преглед button_move: ПремеÑтване + button_move_and_follow: ПремеÑтване и продължаване button_back: Ðазад button_cancel: Отказ button_activate: ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ @@ -550,34 +832,87 @@ 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: Изберете ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð·Ð° изпращане на e-mail. text_regexp_info: пр. ^[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_tip_task_begin_day: задача започваща този ден - text_tip_task_end_day: задача завършваща този ден - text_tip_task_begin_end_day: задача започваща и завършваща този ден + text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? + 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), цифри и тирета.
    Ðевъзможна промÑна Ñлед запиÑ.' - text_caracters_maximum: "До {{count}} Ñимвола." - text_length_between: "От {{min}} до {{max}} Ñимвола." + 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: Позволени Ñа много ÑтойноÑти (по едно на ред). text_issues_ref_in_commit_messages: ОтбелÑзване и приключване на задачи от ревизии - text_issue_added: "Публикувана е нова задача Ñ Ð½Ð¾Ð¼ÐµÑ€ {{id}} (от {{author}})." - text_issue_updated: "Задача {{id}} е обновена (от {{author}})." + text_issue_added: "Публикувана е нова задача Ñ Ð½Ð¾Ð¼ÐµÑ€ %{id} (от %{author})." + text_issue_updated: "Задача %{id} е обновена (от %{author})." text_wiki_destroy_confirmation: Сигурни ли Ñте, че иÑкате да изтриете това Wiki и цÑлото му Ñъдържание? - text_issue_category_destroy_question: "Има задачи ({{count}}) обвързани Ñ Ñ‚Ð°Ð·Ð¸ категориÑ. Какво ще изберете?" + 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_time_logged_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: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/configuration.yml и реÑтартирайте Redmine, за да ги разрешите." + text_repository_usernames_mapping: "Изберете или променете потребителите в Redmine, ÑъответÑтващи на потребителите в дневника на хранилището (repository).\nПотребителите Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð¸ имена в Redmine и хранилищата Ñе ÑъвмеÑÑ‚Ñват автоматично." + text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' + text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' + text_wiki_page_destroy_question: Тази Ñтраница има %{descendants} Ñтраници деца и descendant(s). Какво желаете да правите? + text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници + text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants + text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница + text_own_membership_delete_confirmation: "Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това да не можете да редактирате този проект.\nСигурен ли Ñте, че иÑкате да продължите?" + text_zoom_in: Увеличаване + text_zoom_out: ÐамалÑване + text_warn_on_leaving_unsaved: Страницата Ñъдържа незапиÑано Ñъдържание, което може да бъде загубено, ако Ñ Ð½Ð°Ð¿ÑƒÑнете. + default_role_manager: Мениджър default_role_developer: Разработчик default_role_reporter: Публикуващ @@ -599,328 +934,10 @@ default_priority_immediate: Веднага default_activity_design: Дизайн default_activity_development: Разработка - + enumeration_issue_priorities: Приоритети на задачи enumeration_doc_categories: Категории документи enumeration_activities: ДейноÑти (time tracking) - label_file_plural: Файлове - label_changeset_plural: Ревизии - field_column_names: Колони - label_default_columns: По подразбиране - setting_issue_list_default_columns: Показвани колони по подразбиране - setting_repositories_encodings: Кодови таблици - notice_no_issue_selected: "ÐÑма избрани задачи." - label_bulk_edit_selected_issues: Редактиране на задачи - label_no_change_option: (Без промÑна) - notice_failed_to_save_issues: "ÐеуÑпешен Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° {{count}} задачи от {{total}} избрани: {{ids}}." - label_theme: Тема - label_default: По подразбиране - label_search_titles_only: Само в заглавиÑта - label_nobody: никой - button_change_password: ПромÑна на парола - text_user_mail_option: "За неизбраните проекти, ще получавате извеÑÑ‚Ð¸Ñ Ñамо за наблюдавани дейноÑти или в които учаÑтвате (Ñ‚.е. автор или назначени на мен)." - label_user_mail_option_selected: "За вÑички ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñамо в избраните проекти..." - label_user_mail_option_all: "За вÑÑко Ñъбитие в проектите, в които учаÑтвам" - label_user_mail_option_none: "Само за наблюдавани или в които учаÑтвам (автор или назначени на мен)" - setting_emails_footer: ПодтекÑÑ‚ за e-mail - label_float: Дробно - button_copy: Копиране - mail_body_account_information_external: "Можете да използвате Ð²Ð°ÑˆÐ¸Ñ {{value}} профил за вход." - mail_body_account_information: ИнформациÑта за профила ви - setting_protocol: Протокол - label_user_mail_no_self_notified: "Ðе иÑкам извеÑÑ‚Ð¸Ñ Ð·Ð° извършени от мен промени" - setting_time_format: Формат на чаÑа - label_registration_activation_by_email: активиране на профила по email - mail_subject_account_activation_request: "ЗаÑвка за активиране на профил в {{value}}" - mail_body_account_activation_request: "Има новорегиÑтриран потребител ({{value}}), очакващ вашето одобрение:" - label_registration_automatic_activation: автоматично активиране - label_registration_manual_activation: ръчно активиране - notice_account_pending: "Профилът Ви е Ñъздаден и очаква одобрение от админиÑтратор." - field_time_zone: ЧаÑова зона - text_caracters_minimum: "Минимум {{count}} Ñимвола." - setting_bcc_recipients: Получатели на Ñкрито копие (bcc) - button_annotate: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ - label_issues_by: "Задачи по {{value}}" - field_searchable: С възможноÑÑ‚ за търÑене - label_display_per_page: "Ðа Ñтраница по: {{value}}" - setting_per_page_options: Опции за Ñтраниране - label_age: ВъзраÑÑ‚ - notice_default_data_loaded: Примерната информациÑта е уÑпешно заредена. - text_load_default_configuration: Зареждане на примерна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - text_no_configuration_data: "Ð’Ñе още не Ñа конфигурирани Роли, тракери, ÑÑŠÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи и работен процеÑ.\nСтрого Ñе препоръчва зареждането на примерната информациÑ. Веднъж заредена ще имате възможноÑÑ‚ да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." - error_can_t_load_default_data: "Грешка при зареждане на примерната информациÑ: {{value}}" - button_update: ОбновÑване - label_change_properties: ПромÑна на наÑтройки - label_general: ОÑновни - label_repository_plural: Хранилища - label_associated_revisions: ÐÑоциирани ревизии - setting_user_format: ПотребителÑки формат - text_status_changed_by_changeset: "Приложено Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ {{value}}." - label_more: Още - text_issues_destroy_confirmation: 'Сигурни ли Ñте, че иÑкате да изтриете избраните задачи?' - label_scm: SCM (СиÑтема за контрол на кода) - text_select_project_modules: 'Изберете активните модули за този проект:' - label_issue_added: Добавена задача - label_issue_updated: Обновена задача - label_document_added: Добавен документ - label_message_posted: Добавено Ñъобщение - label_file_added: Добавен файл - label_news_added: Добавена новина - project_module_boards: Форуми - project_module_issue_tracking: Тракинг - project_module_wiki: Wiki - project_module_files: Файлове - project_module_documents: Документи - project_module_repository: Хранилище - project_module_news: Ðовини - project_module_time_tracking: ОтделÑне на време - text_file_repository_writable: ВъзможноÑÑ‚ за пиÑане в хранилището Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ - text_default_administrator_account_changed: Сменен Ñ„Ð°Ð±Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑтраторÑки профил - text_rmagick_available: Ðаличен RMagick (по избор) - button_configure: Конфигуриране - label_plugins: Плъгини - label_ldap_authentication: LDAP Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ - label_downloads_abbr: D/L - label_this_month: Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼ÐµÑец - label_last_n_days: "поÑледните {{count}} дни" - label_all_time: вÑички - label_this_year: текущата година - label_date_range: Период - label_last_week: поÑледната Ñедмица - label_yesterday: вчера - label_last_month: поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец - label_add_another_file: ДобавÑне на друг файл - label_optional_description: Ðезадължително опиÑание - text_destroy_time_entries_question: "{{hours}} чаÑа Ñа отделени на задачите, които иÑкате да изтриете. Какво избирате?" - error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' - text_assign_time_entries_to_project: ПрехвърлÑне на отделеното време към проект - text_destroy_time_entries: Изтриване на отделеното време - text_reassign_time_entries: 'ПрехвърлÑне на отделеното време към задача:' - setting_activity_days_default: Брой дни показвани на таб ДейноÑÑ‚ - label_chronological_order: Хронологичен ред - field_comments_sorting: Сортиране на коментарите - label_reverse_chronological_order: Обратен хронологичен ред - label_preferences: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ - setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране - label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ - setting_default_projects_public: Ðовите проекти Ñа публични по подразбиране - error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." - label_planning: Планиране - text_subprojects_destroy_warning: "Ðеговите подпроекти: {{value}} Ñъщо ще бъдат изтрити." - label_and_its_subprojects: "{{value}} и неговите подпроекти" - mail_body_reminder: "{{count}} задачи, назначени на Ð²Ð°Ñ Ñа Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок в Ñледващите {{days}} дни:" - mail_subject_reminder: "{{count}} задачи Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок Ñ Ñледващите {{days}} дни" - text_user_wrote: "{{value}} напиÑа:" - label_duplicated_by: дублирана от - setting_enabled_scm: Разрешена SCM - text_enumeration_category_reassign_to: 'ПреÑвържете ги към тази ÑтойноÑÑ‚:' - text_enumeration_destroy_question: "{{count}} обекта Ñа Ñвързани Ñ Ñ‚Ð°Ð·Ð¸ ÑтойноÑÑ‚." - label_incoming_emails: ВходÑщи e-mail-и - label_generate_key: Генериране на ключ - setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и - setting_mail_handler_api_key: API ключ - text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/email.yml и реÑтартирайте Redmine, за да ги разрешите." - field_parent_title: РодителÑка Ñтраница - label_issue_watchers: Ðаблюдатели - setting_commit_logs_encoding: Кодова таблица на ÑъобщениÑта при поверÑване - button_quote: Цитат - setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори - notice_unable_delete_version: ÐевъзможноÑÑ‚ за изтриване на верÑÐ¸Ñ - label_renamed: преименуван - label_copied: копиран - setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) - permission_view_files: Разглеждане на файлове - permission_edit_issues: Редактиране на задачи - permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs - permission_manage_public_queries: Управление на публичните заÑвки - permission_add_issues: ДобавÑне на задачи - permission_log_time: Log spent time - permission_view_changesets: Разглеждане на changesets - permission_view_time_entries: Разглеждане на изразходваното време - permission_manage_versions: Управление на верÑиите - permission_manage_wiki: Управление на wiki - permission_manage_categories: Управление на категориите задачи - permission_protect_wiki_pages: Заключване на wiki Ñтраници - permission_comment_news: Коментиране на новини - permission_delete_messages: Изтриване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_select_project_modules: Избор на проектни модули - permission_manage_documents: Управление на документи - permission_edit_wiki_pages: Редактиране на wiki Ñтраници - permission_add_issue_watchers: ДобавÑне на наблюдатели - permission_view_gantt: Разглеждане на мрежов график - permission_move_issues: ПремеÑтване на задачи - permission_manage_issue_relations: Управление на връзките между задачите - permission_delete_wiki_pages: Изтриване на wiki Ñтраници - permission_manage_boards: Управление на boards - permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове - permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ - permission_add_messages: Публикуване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_view_messages: Разглеждане на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_manage_files: Управление на файлове - permission_edit_issue_notes: Редактиране на бележки - permission_manage_news: Управление на новини - permission_view_calendar: Разглеждане на календари - permission_manage_members: Управление на членовете (на екип) - permission_edit_messages: Редактиране на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_issues: Изтриване на задачи - permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ - permission_manage_repository: Управление на хранилища - permission_commit_access: ПоверÑване - permission_browse_repository: Разглеждане на хранилища - permission_view_documents: Разглеждане на документи - permission_edit_project: Редактиране на проект - permission_add_issue_notes: Добаване на бележки - permission_save_queries: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) - permission_view_wiki_pages: Разглеждане на wiki - permission_rename_wiki_pages: Преименуване на wiki Ñтраници - permission_edit_time_entries: Редактиране на time logs - permission_edit_own_issue_notes: Редактиране на ÑобÑтвени бележки - setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar - label_example: Пример - 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: Редактиране на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_own_messages: Изтриване на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - label_user_activity: "ÐктивноÑÑ‚ на {{value}}" - label_updated_time_by: "Обновена от {{author}} преди {{age}}" - text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' - setting_diff_max_lines_displayed: МакÑимален брой показани diff редове - text_plugin_assets_writable: Папката на приÑтавките е разрешена за Ð·Ð°Ð¿Ð¸Ñ - warning_attachments_not_saved: "{{count}} файла не бÑха запиÑани." - button_create_and_continue: Създаване и продължаване - text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' - label_display: Display - field_editable: Editable - setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла - setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline - field_watcher: Ðаблюдател - setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ - field_identity_url: OpenID URL - label_login_with_open_id_option: или вход чрез OpenID - field_content: Съдържание - label_descending: ÐамалÑващ - label_sort: Сортиране - label_ascending: ÐараÑтващ - label_date_from_to: От {{start}} до {{end}} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Тази Ñтраница има {{descendants}} Ñтраници деца и descendant(s). Какво желаете да правите? - text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница - text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници - text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants - setting_password_min_length: Минимална дължина на парола - field_group_by: Групиране на резултатите по - mail_subject_wiki_content_updated: "Wiki Ñтраницата '{{id}}' не беше обновена" - label_wiki_content_added: Wiki Ñтраница беше добавена - mail_subject_wiki_content_added: "Wiki Ñтраницата '{{id}}' беше добавена" - mail_body_wiki_content_added: Wiki Ñтраницата '{{id}}' беше добавена от {{author}}. - label_wiki_content_updated: Wiki Ñтраница беше обновена - mail_body_wiki_content_updated: Wiki Ñтраницата '{{id}}' беше обновена от {{author}}. - permission_add_project: Създаване на проект - setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор - label_view_all_revisions: Разглеждане на вÑички ревизии - label_tag: ВерÑÐ¸Ñ - label_branch: работен вариант - error_no_tracker_in_project: ÐÑма аÑоциирани тракери Ñ Ñ‚Ð¾Ð·Ð¸ проект. Проверете наÑтройките на проекта. - error_no_default_issue_status: ÐÑма уÑтановено подразбиращо Ñе ÑÑŠÑтоÑние за задачите. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ вашата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (Вижте "ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ -> СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи"). - text_journal_changed: "{{label}} променен от {{old}} на {{new}}" - text_journal_set_to: "{{label}} уÑтановен на {{value}}" - text_journal_deleted: "{{label}} изтрит ({{old}})" - label_group_plural: Групи - label_group: Група - label_group_new: Ðова група - label_time_entry_plural: Използвано време - text_journal_added: "Добавено {{label}} {{value}}" - field_active: Ðктивен enumeration_system_activity: СиÑтемна активноÑÑ‚ - permission_delete_issue_watchers: Изтриване на наблюдатели - version_status_closed: затворена - version_status_locked: заключена - version_status_open: отворена - error_can_not_reopen_issue_on_closed_version: Задача, аÑоциирана ÑÑŠÑ Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð° верÑÐ¸Ñ Ð½Ðµ може да бъде отворена отново - label_user_anonymous: Ðнонимен - button_move_and_follow: ПремеÑтване и продължаване - setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект - setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar - field_sharing: Sharing - label_version_sharing_hierarchy: С проектна Ð¹ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ - label_version_sharing_system: С вÑички проекти - label_version_sharing_descendants: С подпроекти - label_version_sharing_tree: С дърво на проектите - label_version_sharing_none: Ðе Ñподелен - error_can_not_archive_project: Този проект не може да бъде архивиран - button_duplicate: Дублиране - button_copy_and_follow: Копиране и продължаване - label_copy_source: Източник - setting_issue_done_ratio: ИзчиÑление на процента на готово задачи Ñ - setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑниетона задачите - error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен. - error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). - setting_issue_done_ratio_issue_field: Използване на поле 'задача' - label_copy_same_as_target: Също като целта - label_copy_target: Цел - notice_issue_done_ratios_updated: Обновен процент на завършените задачи. - error_workflow_copy_source: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ - label_update_issue_done_ratios: ОбновÑване на процента на завършените задачи - setting_start_of_week: Първи ден на Ñедмицата - permission_view_issues: Разглеждане на задачите - label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер - label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ {{value}} - label_api_access_key: API ключ за доÑтъп - label_api_access_key_created_on: API ключ за доÑтъп е Ñъздаден преди {{value}} - label_feeds_access_key: RSS access ключ - notice_api_access_key_reseted: ВашиÑÑ‚ API ключ за доÑтъп беше изчиÑтен. - setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ - label_missing_api_access_key: ЛипÑващ API ключ - label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп - button_show: Показване - text_line_separated: Позволени Ñа много ÑтойноÑти (по едно на ред). - setting_mail_handler_body_delimiters: ОтрÑзване на e-mail-ите Ñлед един от тези редове - permission_add_subprojects: Създаване на подпроекти - label_subproject_new: Ðов подпроект - text_own_membership_delete_confirmation: |- - Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това на да не можете да редатирате този проект. - Сигурен ли Ñте, че иÑкате да продължите? - label_close_versions: ЗатварÑне на завършените верÑии - label_board_sticky: Sticky - label_board_locked: Заключена - permission_export_wiki_pages: ЕкÑпорт на wiki Ñтраници - setting_cache_formatted_text: 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: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта - error_can_not_delete_custom_field: ÐевъзможноÑÑ‚ за изтриване на потребителÑко поле - error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ ({{value}}) - error_can_not_remove_role: Тази Ñ€Ð¾Ð»Ñ Ñе използва и не може да бъде изтрита. - error_can_not_delete_tracker: Този тракер Ñъдържа задачи и не може да бъде изтрит. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° член(ове): {{errors}}." - text_zoom_out: ÐамалÑване - text_zoom_in: Увеличаване - notice_unable_delete_time_entry: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. - label_overall_spent_time: Общо употребено време - field_time_entries: Log time - notice_not_authorized_archived_project: The project you're trying to access has been archived. - text_tip_issue_end_day: issue ending this day - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - field_member_of_group: Assignee's group - project_module_gantt: Gantt - text_are_you_sure_with_children: Delete issue and all child issues? - text_tip_issue_begin_end_day: issue beginning and ending this day - setting_default_notification_option: Default notification option - project_module_calendar: Calendar - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - text_tip_issue_begin_day: issue beginning this day - label_user_mail_option_only_assigned: Only for things I am assigned to - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" - field_assigned_to_role: Assignee's role - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + + text_journal_changed_no_detail: "%{label} updated" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/bs.yml --- a/config/locales/bs.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/bs.yml Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "pola minute" less_than_x_seconds: one: "manje od 1 sekunde" - other: "manje od {{count}} sekudni" + other: "manje od %{count} sekudni" x_seconds: one: "1 sekunda" - other: "{{count}} sekundi" + other: "%{count} sekundi" less_than_x_minutes: one: "manje od 1 minute" - other: "manje od {{count}} minuta" + other: "manje od %{count} minuta" x_minutes: one: "1 minuta" - other: "{{count}} minuta" + other: "%{count} minuta" about_x_hours: one: "oko 1 sahat" - other: "oko {{count}} sahata" + other: "oko %{count} sahata" x_days: one: "1 dan" - other: "{{count}} dana" + other: "%{count} dana" about_x_months: one: "oko 1 mjesec" - other: "oko {{count}} mjeseci" + other: "oko %{count} mjeseci" x_months: one: "1 mjesec" - other: "{{count}} mjeseci" + other: "%{count} mjeseci" about_x_years: one: "oko 1 godine" - other: "oko {{count}} godina" + other: "oko %{count} godina" over_x_years: one: "preko 1 godine" - other: "preko {{count}} godina" + other: "preko %{count} godina" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: @@ -106,6 +106,10 @@ 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Äeno u listu" exclusion: "je rezervisano" @@ -120,11 +124,11 @@ taken: "već je zauzeto" not_a_number: "nije broj" not_a_date: "nije ispravan datum" - greater_than: "mora bit veći od {{count}}" - greater_than_or_equal_to: "mora bit veći ili jednak {{count}}" - equal_to: "mora biti jednak {{count}}" - less_than: "mora biti manji od {{count}}" - less_than_or_equal_to: "mora bit manji ili jednak {{count}}" + greater_than: "mora bit veći od %{count}" + greater_than_or_equal_to: "mora bit veći ili jednak %{count}" + equal_to: "mora biti jednak %{count}" + less_than: "mora biti manji od %{count}" + less_than_or_equal_to: "mora bit manji ili jednak %{count}" odd: "mora biti neparan" even: "mora biti paran" greater_than_start_date: "mora biti veći nego poÄetni datum" @@ -156,9 +160,9 @@ notice_account_wrong_password: PogreÅ¡na lozinka notice_can_t_change_password: Ovaj nalog koristi eksterni izvor prijavljivanja. Ne mogu da promjenim Å¡ifru. notice_default_data_loaded: Podrazumjevana konfiguracija uspjeÄno uÄitana. - notice_email_error: DoÅ¡lo je do greÅ¡ke pri slanju emaila ({{value}}) - notice_email_sent: "Email je poslan {{value}}" - notice_failed_to_save_issues: "NeuspjeÅ¡no snimanje {{count}} aktivnosti na {{total}} izabrano: {{ids}}." + notice_email_error: DoÅ¡lo je do greÅ¡ke pri slanju emaila (%{value}) + notice_email_sent: "Email je poslan %{value}" + notice_failed_to_save_issues: "NeuspjeÅ¡no snimanje %{count} aktivnosti na %{total} izabrano: %{ids}." notice_feeds_access_key_reseted: VaÅ¡ RSS pristup je resetovan. notice_file_not_found: Stranica kojoj pokuÅ¡avate da pristupite ne postoji ili je uklonjena. notice_locking_conflict: "Konflikt: podaci su izmjenjeni od strane drugog korisnika." @@ -169,28 +173,28 @@ notice_successful_delete: Brisanje izvrÅ¡eno. notice_successful_update: Promjene uspjeÅ¡no izvrÅ¡ene. - error_can_t_load_default_data: "Podrazumjevane postavke se ne mogu uÄitati {{value}}" - error_scm_command_failed: "Desila se greÅ¡ka pri pristupu repozitoriju: {{value}}" + error_can_t_load_default_data: "Podrazumjevane postavke se ne mogu uÄitati %{value}" + error_scm_command_failed: "Desila se greÅ¡ka pri pristupu repozitoriju: %{value}" error_scm_not_found: "Unos i/ili revizija ne postoji u repozitoriju." error_scm_annotate: "Ova stavka ne postoji ili nije oznaÄena." error_issue_not_found_in_project: 'Aktivnost nije naÄ‘ena ili ne pripada ovom projektu' - warning_attachments_not_saved: "{{count}} fajl(ovi) ne mogu biti snimljen(i)." + warning_attachments_not_saved: "%{count} fajl(ovi) ne mogu biti snimljen(i)." - mail_subject_lost_password: "VaÅ¡a {{value}} lozinka" + mail_subject_lost_password: "VaÅ¡a %{value} lozinka" mail_body_lost_password: 'Za promjenu lozinke, kliknite na sljedeći link:' - mail_subject_register: "Aktivirajte {{value}} vaÅ¡ korisniÄki raÄun" + mail_subject_register: "Aktivirajte %{value} vaÅ¡ korisniÄki raÄun" mail_body_register: 'Za aktivaciju vaÅ¡eg korisniÄkog raÄuna, kliknite na sljedeći link:' - mail_body_account_information_external: "Možete koristiti vaÅ¡ {{value}} korisniÄki raÄun za prijavu na sistem." + mail_body_account_information_external: "Možete koristiti vaÅ¡ %{value} korisniÄki raÄun za prijavu na sistem." mail_body_account_information: Informacija o vaÅ¡em korisniÄkom raÄunu - mail_subject_account_activation_request: "{{value}} zahtjev za aktivaciju korisniÄkog raÄuna" - mail_body_account_activation_request: "Novi korisnik ({{value}}) se registrovao. KorisniÄki raÄun Äeka vaÅ¡e odobrenje za aktivaciju:" - mail_subject_reminder: "{{count}} aktivnost(i) u kaÅ¡njenju u narednim {{days}} danima" - mail_body_reminder: "{{count}} aktivnost(i) koje su dodjeljenje vama u narednim {{days}} danima:" + mail_subject_account_activation_request: "%{value} zahtjev za aktivaciju korisniÄkog raÄuna" + mail_body_account_activation_request: "Novi korisnik (%{value}) se registrovao. KorisniÄki raÄun Äeka vaÅ¡e odobrenje za aktivaciju:" + mail_subject_reminder: "%{count} aktivnost(i) u kaÅ¡njenju u narednim %{days} danima" + mail_body_reminder: "%{count} aktivnost(i) koje su dodjeljenje vama u narednim %{days} danima:" gui_validation_error: 1 greÅ¡ka - gui_validation_error_plural: "{{count}} greÅ¡aka" + gui_validation_error_plural: "%{count} greÅ¡aka" field_name: Ime field_description: Opis @@ -252,6 +256,7 @@ field_attr_lastname: Atribut za prezime field_attr_mail: Atribut za email field_onthefly: 'Kreiranje korisnika "On-the-fly"' + field_start_date: PoÄetak field_done_ratio: % Realizovano field_auth_source: Mod za authentifikaciju field_hide_mail: Sakrij moju email adresu @@ -391,14 +396,14 @@ label_x_projects: zero: 0 projekata one: 1 projekat - other: "{{count}} projekata" + other: "%{count} projekata" label_project_all: Svi projekti label_project_latest: Posljednji projekti label_issue: Aktivnost label_issue_new: Nova aktivnost label_issue_plural: Aktivnosti label_issue_view_all: Vidi sve aktivnosti - label_issues_by: "Aktivnosti po {{value}}" + label_issues_by: "Aktivnosti po %{value}" label_issue_added: Aktivnost je dodana label_issue_updated: Aktivnost je izmjenjena label_document: Dokument @@ -449,7 +454,7 @@ label_activity_plural: Promjene label_activity: Operacija label_overall_activity: Pregled svih promjena - label_user_activity: "Promjene izvrÅ¡ene od: {{value}}" + label_user_activity: "Promjene izvrÅ¡ene od: %{value}" label_new: Novi label_logged_as: Prijavljen kao label_environment: Sistemsko okruženje @@ -458,7 +463,7 @@ label_auth_source_new: Novi mod authentifikacije label_auth_source_plural: Modovi authentifikacije label_subproject_plural: Podprojekti - label_and_its_subprojects: "{{value}} i njegovi podprojekti" + label_and_its_subprojects: "%{value} i njegovi podprojekti" label_min_max_length: Min - Maks dužina label_list: Lista label_date: Datum @@ -469,8 +474,8 @@ label_text: Dugi tekst label_attribute: Atribut label_attribute_plural: Atributi - label_download: "{{count}} download" - label_download_plural: "{{count}} download-i" + label_download: "%{count} download" + label_download_plural: "%{count} download-i" label_no_data: Nema podataka za prikaz label_change_status: Promjeni status label_history: Istorija @@ -501,17 +506,17 @@ label_closed_issues: zatvoren label_closed_issues_plural: zatvoreni label_x_open_issues_abbr_on_total: - zero: 0 otvoreno / {{total}} - one: 1 otvorena / {{total}} - other: "{{count}} otvorene / {{total}}" + zero: 0 otvoreno / %{total} + one: 1 otvorena / %{total} + other: "%{count} otvorene / %{total}" label_x_open_issues_abbr: zero: 0 otvoreno one: 1 otvorena - other: "{{count}} otvorene" + other: "%{count} otvorene" label_x_closed_issues_abbr: zero: 0 zatvoreno one: 1 zatvorena - other: "{{count}} zatvorene" + other: "%{count} zatvorene" label_total: Ukupno label_permissions: Dozvole label_current_status: Tekući status @@ -529,7 +534,7 @@ label_months_from: mjeseci od label_gantt: Gantt label_internal: Interno - label_last_changes: "posljednjih {{count}} promjena" + label_last_changes: "posljednjih %{count} promjena" label_change_view_all: Vidi sve promjene label_personalize_page: Personaliziraj ovu stranicu label_comment: Komentar @@ -537,7 +542,7 @@ label_x_comments: zero: bez komentara one: 1 komentar - other: "{{count}} komentari" + other: "%{count} komentari" label_comment_add: Dodaj komentar label_comment_added: Komentar je dodan label_comment_delete: IzbriÅ¡i komentar @@ -556,7 +561,7 @@ label_yesterday: juÄe label_this_week: ova hefta label_last_week: zadnja hefta - label_last_n_days: "posljednjih {{count}} dana" + label_last_n_days: "posljednjih %{count} dana" label_this_month: ovaj mjesec label_last_month: posljednji mjesec label_this_year: ova godina @@ -570,8 +575,8 @@ label_repository: Repozitorij label_repository_plural: Repozitoriji label_browse: Listaj - label_modification: "{{count}} promjena" - label_modification_plural: "{{count}} promjene" + label_modification: "%{count} promjena" + label_modification_plural: "%{count} promjene" label_revision: Revizija label_revision_plural: Revizije label_associated_revisions: Doddjeljene revizije @@ -589,8 +594,8 @@ label_sort_lower: Pomjeri dole label_sort_lowest: Pomjeri na dno label_roadmap: Plan realizacije - label_roadmap_due_in: "Obavezan do {{value}}" - label_roadmap_overdue: "{{value}} kasni" + label_roadmap_due_in: "Obavezan do %{value}" + label_roadmap_overdue: "%{value} kasni" label_roadmap_no_issues: Nema aktivnosti za ovu verziju label_search: Traži label_result_plural: Rezultati @@ -608,8 +613,8 @@ label_changes_details: Detalji svih promjena label_issue_tracking: Evidencija aktivnosti label_spent_time: UtroÅ¡ak vremena - label_f_hour: "{{value}} sahat" - label_f_hour_plural: "{{value}} sahata" + label_f_hour: "%{value} sahat" + label_f_hour_plural: "%{value} sahata" label_time_tracking: Evidencija vremena label_change_plural: Promjene label_statistics: Statistika @@ -658,13 +663,13 @@ label_date_from: Od label_date_to: Do label_language_based: Bazirano na korisnikovom jeziku - label_sort_by: "Sortiraj po {{value}}" + label_sort_by: "Sortiraj po %{value}" label_send_test_email: PoÅ¡alji testni email - label_feeds_access_key_created_on: "RSS pristupni kljuÄ kreiran prije {{value}} dana" + label_feeds_access_key_created_on: "RSS pristupni kljuÄ kreiran prije %{value} dana" label_module_plural: Moduli - label_added_time_by: "Dodano od {{author}} prije {{age}}" - label_updated_time_by: "Izmjenjeno od {{author}} prije {{age}}" - label_updated_time: "Izmjenjeno prije {{value}}" + label_added_time_by: "Dodano od %{author} prije %{age}" + label_updated_time_by: "Izmjenjeno od %{author} prije %{age}" + label_updated_time: "Izmjenjeno prije %{value}" label_jump_to_a_project: SkoÄi na projekat... label_file_plural: Fajlovi label_changeset_plural: Setovi promjena @@ -680,7 +685,7 @@ label_registration_activation_by_email: aktivacija korisniÄkog raÄuna email-om label_registration_manual_activation: ruÄna aktivacija korisniÄkog raÄuna label_registration_automatic_activation: automatska kreacija korisniÄkog raÄuna - label_display_per_page: "Po stranici: {{value}}" + label_display_per_page: "Po stranici: %{value}" label_age: Starost label_change_properties: Promjena osobina label_general: Generalno @@ -746,44 +751,44 @@ text_regexp_info: npr. ^[A-Z0-9]+$ text_min_max_length_info: 0 znaÄi bez restrikcije text_project_destroy_confirmation: Sigurno želite izbrisati ovaj projekat i njegove podatke ? - text_subprojects_destroy_warning: "Podprojekt(i): {{value}} će takoÄ‘e biti izbrisani." + text_subprojects_destroy_warning: "Podprojekt(i): %{value} će takoÄ‘e biti izbrisani." text_workflow_edit: Odaberite ulogu i podruÄje aktivnosti za ispravku toka promjena na aktivnosti text_are_you_sure: Da li ste sigurni ? text_tip_issue_begin_day: zadatak poÄinje danas text_tip_issue_end_day: zadatak zavrÅ¡ava danas text_tip_issue_begin_end_day: zadatak zapoÄinje i zavrÅ¡ava danas text_project_identifier_info: 'Samo mala slova (a-z), brojevi i crtice su dozvoljeni.
    Nakon snimanja, identifikator se ne može mijenjati.' - text_caracters_maximum: "maksimum {{count}} karaktera." - text_caracters_minimum: "Dužina mora biti najmanje {{count}} znakova." - text_length_between: "Broj znakova izmeÄ‘u {{min}} i {{max}}." + text_caracters_maximum: "maksimum %{count} karaktera." + text_caracters_minimum: "Dužina mora biti najmanje %{count} znakova." + text_length_between: "Broj znakova izmeÄ‘u %{min} i %{max}." text_tracker_no_workflow: Tok statusa nije definisan za ovo podruÄje aktivnosti text_unallowed_characters: Nedozvoljeni znakovi text_comma_separated: ViÅ¡estruke vrijednosti dozvoljene (odvojiti zarezom). text_issues_ref_in_commit_messages: 'Referenciranje i zatvaranje aktivnosti putem "commit" poruka' - text_issue_added: "Aktivnost {{id}} je prijavljena od {{author}}." - text_issue_updated: "Aktivnost {{id}} je izmjenjena od {{author}}." + text_issue_added: "Aktivnost %{id} je prijavljena od %{author}." + text_issue_updated: "Aktivnost %{id} je izmjenjena od %{author}." text_wiki_destroy_confirmation: Sigurno želite izbrisati ovaj wiki i Äitav njegov sadržaj ? - text_issue_category_destroy_question: "Neke aktivnosti ({{count}}) pripadaju ovoj kategoriji. Sigurno to želite uraditi ?" + text_issue_category_destroy_question: "Neke aktivnosti (%{count}) pripadaju ovoj kategoriji. Sigurno to želite uraditi ?" text_issue_category_destroy_assignments: Ukloni kategoriju text_issue_category_reassign_to: Ponovo dodijeli ovu kategoriju text_user_mail_option: "Za projekte koje niste odabrali, primićete samo notifikacije o stavkama koje pratite ili ste u njih ukljuÄeni (npr. vi ste autor ili su vama dodjeljenje)." text_no_configuration_data: "Uloge, podruÄja aktivnosti, statusi aktivnosti i tok promjena statusa nisu konfigurisane.\nKrajnje je preporuÄeno da uÄitate tekuÄ‘e postavke. Kasnije ćete ih moći mjenjati po svojim potrebama." text_load_default_configuration: UÄitaj tekuću konfiguraciju - text_status_changed_by_changeset: "Primjenjeno u setu promjena {{value}}." + text_status_changed_by_changeset: "Primjenjeno u setu promjena %{value}." text_issues_destroy_confirmation: 'Sigurno želite izbrisati odabranu/e aktivnost/i ?' text_select_project_modules: 'Odaberi module koje želite u ovom projektu:' text_default_administrator_account_changed: Tekući administratorski raÄun je promjenjen text_file_repository_writable: U direktorij sa fajlovima koji su prilozi se može pisati text_plugin_assets_writable: U direktorij plugin-ova se može pisati text_rmagick_available: RMagick je dostupan (opciono) - text_destroy_time_entries_question: "{{hours}} sahata je prijavljeno na aktivnostima koje želite brisati. Želite li to uÄiniti ?" + text_destroy_time_entries_question: "%{hours} sahata je prijavljeno na aktivnostima koje želite brisati. Želite li to uÄiniti ?" text_destroy_time_entries: IzbriÅ¡i prijavljeno vrijeme text_assign_time_entries_to_project: Dodaj prijavljenoo vrijeme projektu text_reassign_time_entries: 'Preraspodjeli prijavljeno vrijeme na ovu aktivnost:' - text_user_wrote: "{{value}} je napisao/la:" - text_enumeration_destroy_question: "Za {{count}} objekata je dodjeljenja ova vrijednost." + text_user_wrote: "%{value} je napisao/la:" + text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost." text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:' - text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/email.yml i restartuj aplikaciju nakon toga." + text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/configuration.yml i restartuj aplikaciju nakon toga." text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisniÄko ima naÄ‘eno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju." text_diff_truncated: '... Ovaj prikaz razlike je odsjeÄen poÅ¡to premaÅ¡uje maksimalnu veliÄinu za prikaz' text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost' @@ -818,23 +823,23 @@ button_annotate: Zabilježi button_activate: Aktiviraj label_sort: Sortiranje - label_date_from_to: Od {{start}} do {{end}} + label_date_from_to: Od %{start} do %{end} label_ascending: Rastuće label_descending: Opadajuće 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_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" + 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}}. + 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}}. + 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 @@ -842,14 +847,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -884,9 +889,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -913,12 +918,12 @@ 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_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}}." + 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. @@ -926,7 +931,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -937,8 +942,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/ca.yml --- a/config/locales/ca.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/ca.yml Thu Mar 03 12:11:53 2011 +0000 @@ -36,37 +36,37 @@ half_a_minute: "mig minut" less_than_x_seconds: one: "menys d'un segon" - other: "menys de {{count}} segons" + other: "menys de %{count} segons" x_seconds: one: "1 segons" - other: "{{count}} segons" + other: "%{count} segons" less_than_x_minutes: one: "menys d'un minut" - other: "menys de {{count}} minuts" + other: "menys de %{count} minuts" x_minutes: one: "1 minut" - other: "{{count}} minuts" + other: "%{count} minuts" about_x_hours: one: "aproximadament 1 hora" - other: "aproximadament {{count}} hores" + other: "aproximadament %{count} hores" x_days: one: "1 dia" - other: "{{count}} dies" + other: "%{count} dies" about_x_months: one: "aproximadament 1 mes" - other: "aproximadament {{count}} mesos" + other: "aproximadament %{count} mesos" x_months: one: "1 mes" - other: "{{count}} mesos" + other: "%{count} mesos" about_x_years: one: "aproximadament 1 any" - other: "aproximadament {{count}} anys" + other: "aproximadament %{count} anys" over_x_years: one: "més d'un any" - other: "més de {{count}} anys" + other: "més de %{count} anys" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: # Default format for numbers @@ -98,6 +98,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "no està inclòs a la llista" exclusion: "està reservat" @@ -112,11 +116,11 @@ taken: "ja s'està utilitzant" not_a_number: "no és un número" not_a_date: "no és una data vàlida" - greater_than: "ha de ser més gran que {{count}}" - greater_than_or_equal_to: "ha de ser més gran o igual a {{count}}" - equal_to: "ha de ser igual a {{count}}" - less_than: "ha de ser menys que {{count}}" - less_than_or_equal_to: "ha de ser menys o igual a {{count}}" + greater_than: "ha de ser més gran que %{count}" + greater_than_or_equal_to: "ha de ser més gran o igual a %{count}" + equal_to: "ha de ser igual a %{count}" + less_than: "ha de ser menys que %{count}" + less_than_or_equal_to: "ha de ser menys o igual a %{count}" odd: "ha de ser senar" even: "ha de ser parell" greater_than_start_date: "ha de ser superior que la data inicial" @@ -153,12 +157,12 @@ notice_file_not_found: "La pàgina a la que intenteu accedir no existeix o s'ha suprimit." notice_locking_conflict: Un altre usuari ha actualitzat les dades. notice_not_authorized: No teniu permís per a accedir a aquesta pàgina. - notice_email_sent: "S'ha enviat un correu electrònic a {{value}}" - notice_email_error: "S'ha produït un error en enviar el correu ({{value}})" + notice_email_sent: "S'ha enviat un correu electrònic a %{value}" + 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_members: "No s'han pogut desar els membres: {{errors}}." + notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de %{count} 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." notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada." @@ -166,9 +170,9 @@ notice_unable_delete_time_entry: "No s'ha pogut suprimir l'entrada del registre de temps." notice_issue_done_ratios_updated: "S'ha actualitzat el tant per cent dels assumptes." - error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: {{value}} " + error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: %{value} " error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el dipòsit." - error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: {{value}}" + error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: %{value}" error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar." error_issue_not_found_in_project: "No s'ha trobat l'assumpte o no pertany a aquest projecte" error_no_tracker_in_project: "Aquest projecte no té seguidor associat. Comproveu els paràmetres del projecte." @@ -182,26 +186,26 @@ error_workflow_copy_source: "Seleccioneu un seguidor o rol font" error_workflow_copy_target: "Seleccioneu seguidors i rols objectiu" error_unable_delete_issue_status: "No s'ha pogut suprimir l'estat de l'assumpte" - error_unable_to_connect: "No s'ha pogut connectar ({{value}})" - warning_attachments_not_saved: "No s'han pogut desar {{count}} fitxers." + error_unable_to_connect: "No s'ha pogut connectar (%{value})" + warning_attachments_not_saved: "No s'han pogut desar %{count} fitxers." - mail_subject_lost_password: "Contrasenya de {{value}}" + mail_subject_lost_password: "Contrasenya de %{value}" mail_body_lost_password: "Per a canviar la contrasenya, feu clic en l'enllaç següent:" - mail_subject_register: "Activació del compte de {{value}}" + mail_subject_register: "Activació del compte de %{value}" mail_body_register: "Per a activar el compte, feu clic en l'enllaç següent:" - mail_body_account_information_external: "Podeu utilitzar el compte «{{value}}» per a entrar." + mail_body_account_information_external: "Podeu utilitzar el compte «%{value}» per a entrar." mail_body_account_information: Informació del compte - mail_subject_account_activation_request: "Sol·licitud d'activació del compte de {{value}}" - mail_body_account_activation_request: "S'ha registrat un usuari nou ({{value}}). El seu compte està pendent d'aprovació:" - mail_subject_reminder: "{{count}} assumptes venceran els següents {{days}} dies" - mail_body_reminder: "{{count}} assumptes que teniu assignades venceran els següents {{days}} dies:" - mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «{{id}}»" - mail_body_wiki_content_added: "En {{author}} ha afegit la pàgina wiki «{{id}}»." - mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «{{id}}»" - mail_body_wiki_content_updated: "En {{author}} ha actualitzat la pàgina wiki «{{id}}»." + mail_subject_account_activation_request: "Sol·licitud d'activació del compte de %{value}" + mail_body_account_activation_request: "S'ha registrat un usuari nou (%{value}). El seu compte està pendent d'aprovació:" + mail_subject_reminder: "%{count} assumptes venceran els següents %{days} dies" + mail_body_reminder: "%{count} assumptes que teniu assignades venceran els següents %{days} dies:" + mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «%{id}»" + mail_body_wiki_content_added: "En %{author} ha afegit la pàgina wiki «%{id}»." + mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «%{id}»" + mail_body_wiki_content_updated: "En %{author} ha actualitzat la pàgina wiki «%{id}»." gui_validation_error: 1 error - gui_validation_error_plural: "{{count}} errors" + gui_validation_error_plural: "%{count} errors" field_name: Nom field_description: Descripció @@ -264,6 +268,7 @@ field_attr_lastname: Atribut del cognom 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_auth_source: "Mode d'autenticació" field_hide_mail: "Oculta l'adreça de correu electrònic" @@ -427,14 +432,14 @@ label_x_projects: zero: cap projecte one: 1 projecte - other: "{{count}} projectes" + other: "%{count} projectes" label_project_all: Tots els projectes label_project_latest: Els últims projectes label_issue: Assumpte label_issue_new: Assumpte nou label_issue_plural: Assumptes label_issue_view_all: Visualitza tots els assumptes - label_issues_by: "Assumptes per {{value}}" + label_issues_by: "Assumptes per %{value}" label_issue_added: Assumpte afegit label_issue_updated: Assumpte actualitzat label_document: Document @@ -485,7 +490,7 @@ label_registered_on: Informat el label_activity: Activitat label_overall_activity: Activitat global - label_user_activity: "Activitat de {{value}}" + label_user_activity: "Activitat de %{value}" label_new: Nou label_logged_as: Heu entrat com a label_environment: Entorn @@ -495,7 +500,7 @@ label_auth_source_plural: "Modes d'autenticació" label_subproject_plural: Subprojectes label_subproject_new: "Subprojecte nou" - label_and_its_subprojects: "{{value}} i els seus subprojectes" + label_and_its_subprojects: "%{value} i els seus subprojectes" label_min_max_length: Longitud mín - max label_list: Llist label_date: Data @@ -506,8 +511,8 @@ label_text: Text llarg label_attribute: Atribut label_attribute_plural: Atributs - label_download: "{{count}} baixada" - label_download_plural: "{{count}} baixades" + label_download: "%{count} baixada" + label_download_plural: "%{count} baixades" label_no_data: Sense dades a mostrar label_change_status: "Canvia l'estat" label_history: Historial @@ -539,17 +544,17 @@ label_closed_issues: tancat label_closed_issues_plural: tancats label_x_open_issues_abbr_on_total: - zero: 0 oberts / {{total}} - one: 1 obert / {{total}} - other: "{{count}} oberts / {{total}}" + zero: 0 oberts / %{total} + one: 1 obert / %{total} + other: "%{count} oberts / %{total}" label_x_open_issues_abbr: zero: 0 oberts one: 1 obert - other: "{{count}} oberts" + other: "%{count} oberts" label_x_closed_issues_abbr: zero: 0 tancats one: 1 tancat - other: "{{count}} tancats" + other: "%{count} tancats" label_total: Total label_permissions: Permisos label_current_status: Estat actual @@ -567,7 +572,7 @@ label_months_from: mesos des de label_gantt: Gantt label_internal: Intern - label_last_changes: "últims {{count}} canvis" + label_last_changes: "últims %{count} canvis" label_change_view_all: Visualitza tots els canvis label_personalize_page: Personalitza aquesta pàgina label_comment: Comentari @@ -575,7 +580,7 @@ label_x_comments: zero: sense comentaris one: 1 comentari - other: "{{count}} comentaris" + other: "%{count} comentaris" label_comment_add: Afegeix un comentari label_comment_added: Comentari afegit label_comment_delete: Suprimeix comentaris @@ -596,7 +601,7 @@ label_yesterday: ahir label_this_week: aquesta setmana label_last_week: "l'última setmana" - label_last_n_days: "els últims {{count}} dies" + label_last_n_days: "els últims %{count} dies" label_this_month: aquest més label_last_month: "l'últim més" label_this_year: aquest any @@ -610,13 +615,13 @@ label_repository: Dipòsit label_repository_plural: Dipòsits label_browse: Navega - label_modification: "{{count}} canvi" - label_modification_plural: "{{count}} canvis" + label_modification: "%{count} canvi" + label_modification_plural: "%{count} canvis" label_branch: Branca label_tag: Etiqueta label_revision: Revisió label_revision_plural: Revisions - label_revision_id: "Revisió {{value}}" + label_revision_id: "Revisió %{value}" label_associated_revisions: Revisions associades label_added: afegit label_modified: modificat @@ -633,8 +638,8 @@ label_sort_lower: Mou cap avall label_sort_lowest: Mou a la part inferior label_roadmap: Planificació - label_roadmap_due_in: "Venç en {{value}}" - label_roadmap_overdue: "{{value}} tard" + label_roadmap_due_in: "Venç en %{value}" + label_roadmap_overdue: "%{value} tard" label_roadmap_no_issues: No hi ha assumptes per a aquesta versió label_search: Cerca label_result_plural: Resultats @@ -653,8 +658,8 @@ label_issue_tracking: "Seguiment d'assumptes" label_spent_time: Temps invertit label_overall_spent_time: "Temps total invertit" - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} hores" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} hores" label_time_tracking: Temps de seguiment label_change_plural: Canvis label_statistics: Estadístiques @@ -705,15 +710,15 @@ label_date_from: Des de label_date_to: A label_language_based: "Basat en l'idioma de l'usuari" - label_sort_by: "Ordena per {{value}}" + label_sort_by: "Ordena per %{value}" label_send_test_email: Envia un correu electrònic de prova label_feeds_access_key: "Clau d'accés del RSS" label_missing_feeds_access_key: "Falta una clau d'accés del RSS" - label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa {{value}}" + label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa %{value}" label_module_plural: Mòduls - label_added_time_by: "Afegit per {{author}} fa {{age}}" - label_updated_time_by: "Actualitzat per {{author}} fa {{age}}" - label_updated_time: "Actualitzat fa {{value}}" + label_added_time_by: "Afegit per %{author} fa %{age}" + label_updated_time_by: "Actualitzat per %{author} fa %{age}" + label_updated_time: "Actualitzat fa %{value}" label_jump_to_a_project: Salta al projecte... label_file_plural: Fitxers label_changeset_plural: Conjunt de canvis @@ -729,7 +734,7 @@ label_registration_activation_by_email: activació del compte per correu electrònic label_registration_manual_activation: activació del compte manual label_registration_automatic_activation: activació del compte automàtica - label_display_per_page: "Per pàgina: {{value}}" + label_display_per_page: "Per pàgina: %{value}" label_age: Edat label_change_properties: Canvia les propietats label_general: General @@ -752,7 +757,7 @@ label_sort: Ordena label_ascending: Ascendent label_descending: Descendent - label_date_from_to: Des de {{start}} a {{end}} + label_date_from_to: Des de %{start} a %{end} label_wiki_content_added: "S'ha afegit la pàgina wiki" label_wiki_content_updated: "S'ha actualitzat la pàgina wiki" label_group: Grup @@ -771,7 +776,7 @@ label_display_used_statuses_only: "Mostra només els estats que utilitza aquest seguidor" label_api_access_key: "Clau d'accés a l'API" label_missing_api_access_key: "Falta una clau d'accés de l'API" - label_api_access_key_created_on: "Clau d'accés de l'API creada fa {{value}}" + label_api_access_key_created_on: "Clau d'accés de l'API creada fa %{value}" label_profile: Perfil label_subtask_plural: Subtasques label_project_copy_notifications: "Envia notificacions de correu electrònic durant la còpia del projecte" @@ -834,53 +839,53 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 significa sense restricció text_project_destroy_confirmation: Segur que voleu suprimir aquest projecte i les dades relacionades? - text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: {{value}}." + text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: %{value}." text_workflow_edit: Seleccioneu un rol i un seguidor per a editar el flux de treball text_are_you_sure: Segur? - text_journal_changed: "{{label}} ha canviat de {{old}} a {{new}}" - text_journal_set_to: "{{label}} s'ha establert a {{value}}" - text_journal_deleted: "{{label}} s'ha suprimit ({{old}})" - text_journal_added: "S'ha afegit {{label}} {{value}}" + text_journal_changed: "%{label} ha canviat de %{old} a %{new}" + text_journal_set_to: "%{label} s'ha establert a %{value}" + text_journal_deleted: "%{label} s'ha suprimit (%{old})" + text_journal_added: "S'ha afegit %{label} %{value}" text_tip_issue_begin_day: "tasca que s'inicia aquest dia" text_tip_issue_end_day: tasca que finalitza aquest dia text_tip_issue_begin_end_day: "tasca que s'inicia i finalitza aquest dia" text_project_identifier_info: "Es permeten lletres en minúscules (a-z), números i guions.
    Un cop desat, l'identificador no es pot modificar." - text_caracters_maximum: "{{count}} caràcters com a màxim." - text_caracters_minimum: "Com a mínim ha de tenir {{count}} caràcters." - text_length_between: "Longitud entre {{min}} i {{max}} caràcters." + text_caracters_maximum: "%{count} caràcters com a màxim." + text_caracters_minimum: "Com a mínim ha de tenir %{count} caràcters." + text_length_between: "Longitud entre %{min} i %{max} caràcters." text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest seguidor" text_unallowed_characters: Caràcters no permesos text_comma_separated: Es permeten valors múltiples (separats per una coma). text_line_separated: "Es permeten diversos valors (una línia per cada valor)." text_issues_ref_in_commit_messages: Referència i soluciona els assumptes en els missatges publicats - text_issue_added: "L'assumpte {{id}} ha sigut informat per {{author}}." - text_issue_updated: "L'assumpte {{id}} ha sigut actualitzat per {{author}}." + text_issue_added: "L'assumpte %{id} ha sigut informat per %{author}." + text_issue_updated: "L'assumpte %{id} ha sigut actualitzat per %{author}." text_wiki_destroy_confirmation: Segur que voleu suprimir aquest wiki i tots els seus continguts? - text_issue_category_destroy_question: "Alguns assumptes ({{count}}) estan assignats a aquesta categoria. Què voleu fer?" + text_issue_category_destroy_question: "Alguns assumptes (%{count}) estan assignats a aquesta categoria. Què voleu fer?" text_issue_category_destroy_assignments: Suprimeix les assignacions de la categoria text_issue_category_reassign_to: Torna a assignar els assumptes a aquesta categoria text_user_mail_option: "Per als projectes no seleccionats, només rebreu notificacions sobre les coses que vigileu o que hi esteu implicat (ex. assumptes que en sou l'autor o hi esteu assignat)." text_no_configuration_data: "Encara no s'han configurat els rols, seguidors, estats de l'assumpte i flux de treball.\nÉs altament recomanable que carregueu la configuració predeterminada. Podreu modificar-la un cop carregada." text_load_default_configuration: Carrega la configuració predeterminada - text_status_changed_by_changeset: "Aplicat en el conjunt de canvis {{value}}." + text_status_changed_by_changeset: "Aplicat en el conjunt de canvis %{value}." text_issues_destroy_confirmation: "Segur que voleu suprimir els assumptes seleccionats?" text_select_project_modules: "Seleccioneu els mòduls a habilitar per a aquest projecte:" text_default_administrator_account_changed: "S'ha canviat el compte d'administrador predeterminat" text_file_repository_writable: Es pot escriure en el dipòsit de fitxers text_plugin_assets_writable: Es pot escriure als connectors actius text_rmagick_available: RMagick disponible (opcional) - text_destroy_time_entries_question: "S'han informat {{hours}} hores en els assumptes que aneu a suprimir. Què voleu fer?" + text_destroy_time_entries_question: "S'han informat %{hours} hores en els assumptes que aneu a suprimir. Què voleu fer?" text_destroy_time_entries: Suprimeix les hores informades text_assign_time_entries_to_project: Assigna les hores informades al projecte text_reassign_time_entries: "Torna a assignar les hores informades a aquest assumpte:" - text_user_wrote: "{{value}} va escriure:" - text_enumeration_destroy_question: "{{count}} objectes estan assignats a aquest valor." + text_user_wrote: "%{value} va escriure:" + text_enumeration_destroy_question: "%{count} objectes estan assignats a aquest valor." text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:" - text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo." + text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/configuration.yml i reinicieu l'aplicació per habilitar-lo." text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament." text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar." text_custom_field_possible_values_info: "Una línia per a cada valor" - text_wiki_page_destroy_question: "Aquesta pàgina té {{descendants}} pàgines fill i descendents. Què voleu fer?" + text_wiki_page_destroy_question: "Aquesta pàgina té %{descendants} pàgines fill i descendents. Què voleu fer?" text_wiki_page_nullify_children: "Deixa les pàgines fill com a pàgines arrel" text_wiki_page_destroy_children: "Suprimeix les pàgines fill i tots els seus descendents" text_wiki_page_reassign_children: "Reasigna les pàgines fill a aquesta pàgina pare" @@ -915,7 +920,7 @@ enumeration_activities: Activitats (seguidor de temps) enumeration_system_activity: Activitat del sistema - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -926,8 +931,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/cs.yml --- a/config/locales/cs.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/cs.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,9 @@ +# Update to 1.1 by Michal Gebauer +# Updated by Josef LiÅ¡ka +# CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz +# Based on original CZ translation by Jan KadleÄek cs: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: @@ -26,63 +31,65 @@ long: "%B %d, %Y %H:%M" am: "dop." pm: "odp." - + datetime: distance_in_words: half_a_minute: "půl minuty" less_than_x_seconds: one: "ménÄ› než sekunda" - other: "ménÄ› než {{count}} sekund" + other: "ménÄ› než %{count} sekund" x_seconds: one: "1 sekunda" - other: "{{count}} sekund" + other: "%{count} sekund" less_than_x_minutes: one: "ménÄ› než minuta" - other: "ménÄ› než {{count}} minut" + other: "ménÄ› než %{count} minut" x_minutes: one: "1 minuta" - other: "{{count}} minut" + other: "%{count} minut" about_x_hours: one: "asi 1 hodina" - other: "asi {{count}} hodin" + other: "asi %{count} hodin" x_days: one: "1 den" - other: "{{count}} dnů" + other: "%{count} dnů" about_x_months: one: "asi 1 mÄ›síc" - other: "asi {{count}} mÄ›síců" + other: "asi %{count} mÄ›síců" x_months: one: "1 mÄ›síc" - other: "{{count}} mÄ›síců" + other: "%{count} mÄ›síců" about_x_years: one: "asi 1 rok" - other: "asi {{count}} let" + other: "asi %{count} let" over_x_years: one: "více než 1 rok" - other: "více než {{count}} roky" + other: "více než %{count} roky" almost_x_years: one: "témeÅ™ 1 rok" - other: "téměř {{count}} roky" + other: "téměř %{count} roky" number: + # Výchozí formát pro Äísla format: - separator: "." + separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: + delimiter: "" precision: 1 - delimiter: "" - storage_units: + storage_units: format: "%n %u" - units: - kb: KB - tb: TB - gb: GB - byte: - one: Byte - other: Bytes - mb: MB + units: + byte: + one: "Bajt" + other: "Bajtů" + kb: "kB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in array.to_sentence. support: @@ -92,6 +99,10 @@ activerecord: errors: + template: + header: + one: "1 chyba zabránila uložení %{model}" + other: "%{count} chyb zabránilo uložení %{model}" messages: inclusion: "není zahrnuto v seznamu" exclusion: "je rezervováno" @@ -106,11 +117,11 @@ taken: "je již použito" not_a_number: "není Äíslo" not_a_date: "není platné datum" - greater_than: "musí být vÄ›tší než {{count}}" - greater_than_or_equal_to: "musí být vÄ›tší nebo rovno {{count}}" - equal_to: "musí být pÅ™esnÄ› {{count}}" - less_than: "musí být ménÄ› než {{count}}" - less_than_or_equal_to: "musí být ménÄ› nebo rovno {{count}}" + greater_than: "musí být vÄ›tší než %{count}" + greater_than_or_equal_to: "musí být vÄ›tší nebo rovno %{count}" + equal_to: "musí být pÅ™esnÄ› %{count}" + less_than: "musí být ménÄ› než %{count}" + less_than_or_equal_to: "musí být ménÄ› nebo rovno %{count}" odd: "musí být liché" even: "musí být sudé" greater_than_start_date: "musí být vÄ›tší než poÄáteÄní datum" @@ -118,10 +129,6 @@ circular_dependency: "Tento vztah by vytvoÅ™il cyklickou závislost" cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílÄích úkolů" - # Updated by Josef LiÅ¡ka - # CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz - # Based on original CZ translation by Jan KadleÄek - actionview_instancetag_blank_option: Prosím vyberte general_text_No: 'Ne' @@ -150,32 +157,58 @@ notice_successful_connection: Úspěšné pÅ™ipojení. notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána. notice_locking_conflict: Údaje byly zmÄ›nÄ›ny jiným uživatelem. - notice_scm_error: Záznam a/nebo revize neexistuje v repozitáři. notice_not_authorized: Nemáte dostateÄná práva pro zobrazení této stránky. - notice_email_sent: "Na adresu {{value}} byl odeslán email" - notice_email_error: "PÅ™i odesílání emailu nastala chyba ({{value}})" + notice_not_authorized_archived_project: Projekt ke kterému se snažíte pÅ™istupovat byl archivován. + notice_email_sent: "Na adresu %{value} byl odeslán email" + notice_email_error: "PÅ™i odesílání emailu nastala chyba (%{value})" notice_feeds_access_key_reseted: Váš klÃ­Ä pro přístup k RSS byl resetován. - notice_failed_to_save_issues: "Chyba pÅ™i uložení {{count}} úkolu(ů) z {{total}} vybraných: {{ids}}." + notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. + notice_failed_to_save_issues: "Chyba pÅ™i uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}." + notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): %{errors}." notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete editovat" notice_account_pending: "Váš úÄet byl vytvoÅ™en, nyní Äeká na schválení administrátorem." notice_default_data_loaded: Výchozí konfigurace úspěšnÄ› nahrána. + notice_unable_delete_version: Nemohu odstanit verzi + notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. + notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. + notice_gantt_chart_truncated: Graf byl oříznut, poÄet položek pÅ™esáhl limit pro zobrazení (%{max}) - error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: {{value}}" + error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}" error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři." - error_scm_command_failed: "PÅ™i pokusu o přístup k repozitáři doÅ¡lo k chybÄ›: {{value}}" + error_scm_command_failed: "PÅ™i pokusu o přístup k repozitáři doÅ¡lo k chybÄ›: %{value}" + error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu' + error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. + error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). + error_can_not_delete_custom_field: Nelze smazat volitelné pole + error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. + error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. + error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en + error_can_not_archive_project: Tento projekt nemůže být archivován + error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. + error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly + error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) + error_unable_delete_issue_status: Nelze smazat stavy úkolů + error_unable_to_connect: Nelze se pÅ™ipojit (%{value}) + warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit." - mail_subject_lost_password: "VaÅ¡e heslo ({{value}})" + mail_subject_lost_password: "VaÅ¡e heslo (%{value})" mail_body_lost_password: 'Pro zmÄ›nu vaÅ¡eho hesla kliknÄ›te na následující odkaz:' - mail_subject_register: "Aktivace úÄtu ({{value}})" + mail_subject_register: "Aktivace úÄtu (%{value})" mail_body_register: 'Pro aktivaci vaÅ¡eho úÄtu kliknÄ›te na následující odkaz:' - mail_body_account_information_external: "Pomocí vaÅ¡eho úÄtu {{value}} se můžete pÅ™ihlásit." + mail_body_account_information_external: "Pomocí vaÅ¡eho úÄtu %{value} se můžete pÅ™ihlásit." mail_body_account_information: Informace o vaÅ¡em úÄtu - mail_subject_account_activation_request: "Aktivace {{value}} úÄtu" - mail_body_account_activation_request: "Byl zaregistrován nový uživatel {{value}}. Aktivace jeho úÄtu závisí na vaÅ¡em potvrzení." + mail_subject_account_activation_request: "Aktivace %{value} úÄtu" + mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho úÄtu závisí na vaÅ¡em potvrzení." + mail_subject_reminder: "%{count} úkol(ů) má termín bÄ›hem nÄ›kolik dní (%{days})" + mail_body_reminder: "%{count} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní (%{days}):" + mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána" + mail_body_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána od %{author}." + mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována" + mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}." gui_validation_error: 1 chyba - gui_validation_error_plural: "{{count}} chyb(y)" + gui_validation_error_plural: "%{count} chyb(y)" field_name: Název field_description: Popis @@ -212,6 +245,7 @@ field_priority: Priorita field_fixed_version: Cílová verze field_user: Uživatel + field_principal: Hlavní field_role: Role field_homepage: Domovská stránka field_is_public: VeÅ™ejný @@ -237,6 +271,7 @@ field_attr_lastname: Příjemní (atribut) field_attr_mail: Email (atribut) field_onthefly: Automatické vytváření uživatelů + field_start_date: ZaÄátek field_done_ratio: % Hotovo field_auth_source: AutentifikaÄní mód field_hide_mail: Nezobrazovat můj email @@ -255,10 +290,23 @@ field_redirect_existing_links: PÅ™esmÄ›rovat stvávající odkazy field_estimated_hours: Odhadovaná doba field_column_names: Sloupce + field_time_entries: Zaznamenaný Äas field_time_zone: ÄŒasové pásmo field_searchable: Umožnit vyhledávání field_default_value: Výchozí hodnota field_comments_sorting: Zobrazit komentáře + field_parent_title: RodiÄovská stránka + field_editable: Editovatelný + field_watcher: Sleduje + field_identity_url: OpenID URL + field_content: Obsah + field_group_by: Seskupovat výsledky podle + field_sharing: Sdílení + field_parent_issue: RodiÄovský úkol + field_member_of_group: Skupina pÅ™iÅ™aditele + field_assigned_to_role: Role pÅ™iÅ™aditele + field_text: Textové pole + field_visible: Viditelný setting_app_title: Název aplikace setting_app_subtitle: Podtitulek aplikace @@ -270,6 +318,7 @@ setting_issues_export_limit: Limit pro export úkolů setting_mail_from: Odesílat emaily z adresy setting_bcc_recipients: Příjemci skryté kopie (bcc) + setting_plain_text_mail: pouze prostý text (ne HTML) setting_host_name: Jméno serveru setting_text_formatting: Formátování textu setting_wiki_compression: Komprese historie Wiki @@ -285,12 +334,94 @@ 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 setting_per_page_options: Povolené poÄty řádků na stránce setting_user_format: Formát zobrazení uživatele setting_activity_days_default: Dny zobrazené v Äinnosti projektu setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu + setting_enabled_scm: Povolené SCM + setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků + setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily + setting_mail_handler_api_key: API klÃ­Ä + 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_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 + setting_password_min_length: Minimální délka hesla + setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il + setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt + setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s + setting_issue_done_ratio_issue_field: Použít pole úkolu + setting_issue_done_ratio_issue_status: Použít stav úkolu + setting_start_of_week: ZaÄínat kalendáře + setting_rest_api_enabled: Zapnout službu REST + setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti + setting_default_notification_option: Výchozí nastavení oznámení + setting_commit_logtime_enabled: Povolit zapisování Äasu + setting_commit_logtime_activity_id: Aktivita pro zapsaný Äas + setting_gantt_items_limit: Maximální poÄet položek zobrazený na ganttovÄ› grafu + + permission_add_project: VytvoÅ™it projekt + permission_add_subprojects: VytvoÅ™it podprojekty + permission_edit_project: Úprava projektů + permission_select_project_modules: VýbÄ›r modulů projektu + permission_manage_members: Spravování Älenství + permission_manage_project_activities: Spravovat aktivity projektu + permission_manage_versions: Spravování verzí + permission_manage_categories: Spravování kategorií úkolů + permission_view_issues: Zobrazit úkoly + permission_add_issues: PÅ™idávání úkolů + permission_edit_issues: Upravování úkolů + permission_manage_issue_relations: Spravování vztahů mezi úkoly + permission_add_issue_notes: PÅ™idávání poznámek + permission_edit_issue_notes: Upravování poznámek + permission_edit_own_issue_notes: Upravování vlastních poznámek + permission_move_issues: PÅ™esouvání úkolů + permission_delete_issues: Mazání úkolů + permission_manage_public_queries: Správa veÅ™ejných dotazů + permission_save_queries: Ukládání dotazů + permission_view_gantt: Zobrazené Ganttova diagramu + permission_view_calendar: Prohlížení kalendáře + permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů + permission_add_issue_watchers: PÅ™idání sledujících uživatelů + permission_delete_issue_watchers: Smazat pÅ™ihlížející + permission_log_time: Zaznamenávání stráveného Äasu + permission_view_time_entries: Zobrazení stráveného Äasu + permission_edit_time_entries: Upravování záznamů o stráveném Äasu + permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase + permission_manage_news: Spravování novinek + permission_comment_news: Komentování novinek + permission_manage_documents: Správa dokumentů + permission_view_documents: Prohlížení dokumentů + permission_manage_files: Spravování souborů + permission_view_files: Prohlížení souborů + permission_manage_wiki: Spravování Wiki + permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek + permission_delete_wiki_pages: Mazání stránek na Wiki + permission_view_wiki_pages: Prohlížení Wiki + permission_view_wiki_edits: Prohlížení historie Wiki + permission_edit_wiki_pages: Upravování stránek Wiki + permission_delete_wiki_pages_attachments: Mazání příloh + permission_protect_wiki_pages: ZabezpeÄení Wiki stránek + permission_manage_repository: Spravování repozitáře + permission_browse_repository: Procházení repozitáře + permission_view_changesets: Zobrazování sady zmÄ›n + permission_commit_access: Commit přístup + permission_manage_boards: Správa diskusních fór + permission_view_messages: Prohlížení zpráv + permission_add_messages: Posílání zpráv + permission_edit_messages: Upravování zpráv + permission_edit_own_messages: Upravit vlastní zprávy + permission_delete_messages: Mazání zpráv + permission_delete_own_messages: Smazat vlastní zprávy + permission_export_wiki_pages: Exportovat Wiki stránky + permission_manage_subtasks: Spravovat podúkoly project_module_issue_tracking: Sledování úkolů project_module_time_tracking: Sledování Äasu @@ -300,24 +431,27 @@ project_module_wiki: Wiki project_module_repository: Repozitář project_module_boards: Diskuse + project_module_calendar: Kalendář + project_module_gantt: Gantt label_user: Uživatel label_user_plural: Uživatelé label_user_new: Nový uživatel + label_user_anonymous: Anonymní label_project: Projekt label_project_new: Nový projekt label_project_plural: Projekty label_x_projects: zero: žádné projekty one: 1 projekt - other: "{{count}} projekty(ů)" + other: "%{count} projekty(ů)" label_project_all: VÅ¡echny projekty label_project_latest: Poslední projekty label_issue: Úkol label_issue_new: Nový úkol label_issue_plural: Úkoly label_issue_view_all: VÅ¡echny úkoly - label_issues_by: "Úkoly podle {{value}}" + label_issues_by: "Úkoly podle %{value}" label_issue_added: Úkol pÅ™idán label_issue_updated: Úkol aktualizován label_document: Dokument @@ -350,12 +484,14 @@ label_information_plural: Informace label_please_login: Prosím pÅ™ihlaÅ¡te se label_register: Registrovat + label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID label_password_lost: Zapomenuté heslo label_home: Úvodní label_home_heading: Úvodní label_my_page: Moje stránka label_my_account: Můj úÄet label_my_projects: Moje projekty + label_my_page_block: Bloky na mé stránce label_administration: Administrace label_login: PÅ™ihlášení label_logout: Odhlášení @@ -366,6 +502,7 @@ label_registered_on: Registrován label_activity: Aktivita label_overall_activity: Celková aktivita + label_user_activity: "Aktivita uživatele: %{value}" label_new: Nový label_logged_as: PÅ™ihlášen jako label_environment: ProstÅ™edí @@ -374,6 +511,8 @@ label_auth_source_new: Nový mód autentifikace label_auth_source_plural: Módy autentifikace label_subproject_plural: Podprojekty + label_subproject_new: Nový podprojekt + label_and_its_subprojects: "%{value} a jeho podprojekty" label_min_max_length: Min - Max délka label_list: Seznam label_date: Datum @@ -384,8 +523,8 @@ label_text: Dlouhý text label_attribute: Atribut label_attribute_plural: Atributy - label_download: "{{count}} stažení" - label_download_plural: "{{count}} stažení" + label_download: "%{count} stažení" + label_download_plural: "%{count} stažení" label_no_data: Žádné položky label_change_status: ZmÄ›nit stav label_history: Historie @@ -407,6 +546,7 @@ label_version: Verze label_version_new: Nová verze label_version_plural: Verze + label_close_versions: Zavřít dokonÄené verze label_confirmation: Potvrzení label_export_to: 'Také k dispozici:' label_read: NaÄítá se... @@ -416,17 +556,17 @@ label_closed_issues: uzavÅ™ený label_closed_issues_plural: uzavÅ™ené label_x_open_issues_abbr_on_total: - zero: 0 otevÅ™ených / {{total}} - one: 1 otevÅ™ený / {{total}} - other: "{{count}} otevÅ™ených / {{total}}" + zero: 0 otevÅ™ených / %{total} + one: 1 otevÅ™ený / %{total} + other: "%{count} otevÅ™ených / %{total}" label_x_open_issues_abbr: zero: 0 otevÅ™ených one: 1 otevÅ™ený - other: "{{count}} otevÅ™ených" + other: "%{count} otevÅ™ených" label_x_closed_issues_abbr: zero: 0 uzavÅ™ených one: 1 uzavÅ™ený - other: "{{count}} uzavÅ™ených" + other: "%{count} uzavÅ™ených" label_total: Celkem label_permissions: Práva label_current_status: Aktuální stav @@ -444,7 +584,7 @@ label_months_from: mÄ›síců od label_gantt: Ganttův graf label_internal: Interní - label_last_changes: "posledních {{count}} zmÄ›n" + label_last_changes: "posledních %{count} zmÄ›n" label_change_view_all: Zobrazit vÅ¡echny zmÄ›ny label_personalize_page: PÅ™izpůsobit tuto stránku label_comment: Komentář @@ -452,7 +592,7 @@ label_x_comments: zero: žádné komentáře one: 1 komentář - other: "{{count}} komentářů" + other: "%{count} komentářů" label_comment_add: PÅ™idat komentáře label_comment_added: Komentář pÅ™idán label_comment_delete: Odstranit komentář @@ -465,13 +605,15 @@ label_not_equals: není label_in_less_than: je měší než label_in_more_than: je vÄ›tší než + label_greater_or_equal: '>=' + label_less_or_equal: '<=' label_in: v label_today: dnes label_all_time: vÅ¡e label_yesterday: vÄera label_this_week: tento týden label_last_week: minulý týden - label_last_n_days: "posledních {{count}} dnů" + label_last_n_days: "posledních %{count} dnů" label_this_month: tento mÄ›síc label_last_month: minulý mÄ›síc label_this_year: tento rok @@ -485,25 +627,31 @@ label_repository: Repozitář label_repository_plural: Repozitáře label_browse: Procházet - label_modification: "{{count}} zmÄ›na" - label_modification_plural: "{{count}} zmÄ›n" + label_modification: "%{count} zmÄ›na" + label_modification_plural: "%{count} zmÄ›n" + label_branch: VÄ›tev + label_tag: Tag label_revision: Revize label_revision_plural: Revizí + label_revision_id: "Revize %{value}" label_associated_revisions: Související verze label_added: pÅ™idáno label_modified: zmÄ›nÄ›no + label_copied: zkopírováno + label_renamed: pÅ™ejmenováno label_deleted: odstranÄ›no label_latest_revision: Poslední revize label_latest_revision_plural: Poslední revize label_view_revisions: Zobrazit revize + label_view_all_revisions: Zobrazit vÅ¡echny revize label_max_size: Maximální velikost label_sort_highest: PÅ™esunout na zaÄátek label_sort_higher: PÅ™esunout nahoru label_sort_lower: PÅ™esunout dolů label_sort_lowest: PÅ™esunout na konec label_roadmap: Plán - label_roadmap_due_in: "Zbývá {{value}}" - label_roadmap_overdue: "{{value}} pozdÄ›" + label_roadmap_due_in: "Zbývá %{value}" + label_roadmap_overdue: "%{value} pozdÄ›" label_roadmap_no_issues: Pro tuto verzi nejsou žádné úkoly label_search: Hledat label_result_plural: Výsledky @@ -521,8 +669,9 @@ label_changes_details: Detail vÅ¡ech zmÄ›n label_issue_tracking: Sledování úkolů label_spent_time: Strávený Äas - label_f_hour: "{{value}} hodina" - label_f_hour_plural: "{{value}} hodin" + label_overall_spent_time: Celkem strávený Äas + label_f_hour: "%{value} hodina" + label_f_hour_plural: "%{value} hodin" label_time_tracking: Sledování Äasu label_change_plural: ZmÄ›ny label_statistics: Statistiky @@ -541,8 +690,9 @@ label_relation_new: Nová souvislost label_relation_delete: Odstranit souvislost label_relates_to: související s - label_duplicates: duplicity - label_blocks: bloků + label_duplicates: duplikuje + label_duplicated_by: zduplikován + label_blocks: blokuje label_blocked_by: zablokován label_precedes: pÅ™edchází label_follows: následuje @@ -557,6 +707,8 @@ label_board: Fórum label_board_new: Nové fórum label_board_plural: Fóra + label_board_locked: UzamÄeno + label_board_sticky: Nálepka label_topic_plural: Témata label_message_plural: Zprávy label_message_last: Poslední zpráva @@ -570,12 +722,15 @@ label_date_from: Od label_date_to: Do label_language_based: Podle výchozího jazyku - label_sort_by: "SeÅ™adit podle {{value}}" + label_sort_by: "SeÅ™adit podle %{value}" label_send_test_email: Poslat testovací email - label_feeds_access_key_created_on: "Přístupový klÃ­Ä pro RSS byl vytvoÅ™en pÅ™ed {{value}}" + label_feeds_access_key: Přístupový klÃ­Ä pro RSS + label_missing_feeds_access_key: Postrádá přístupový klÃ­Ä pro RSS + label_feeds_access_key_created_on: "Přístupový klÃ­Ä pro RSS byl vytvoÅ™en pÅ™ed %{value}" label_module_plural: Moduly - label_added_time_by: "PÅ™idáno uživatelem {{author}} pÅ™ed {{age}}" - label_updated_time: "Aktualizováno pÅ™ed {{value}}" + label_added_time_by: "PÅ™idáno uživatelem %{author} pÅ™ed %{age}" + label_updated_time_by: "Aktualizováno uživatelem %{author} pÅ™ed %{age}" + label_updated_time: "Aktualizováno pÅ™ed %{value}" label_jump_to_a_project: Vyberte projekt... label_file_plural: Soubory label_changeset_plural: Changesety @@ -587,11 +742,15 @@ label_search_titles_only: Vyhledávat pouze v názvech label_user_mail_option_all: "Pro vÅ¡echny události vÅ¡ech mých projektů" label_user_mail_option_selected: "Pro vÅ¡echny události vybraných projektů..." + label_user_mail_option_none: "Žádné události" + label_user_mail_option_only_my_events: "Jen pro vÄ›ci co sleduji nebo jsem v nich zapojen" + label_user_mail_option_only_assigned: "Jen pro vÅ¡eci kterým sem pÅ™iÅ™azen" + label_user_mail_option_only_owner: "Jen pro vÄ›ci které vlastním" label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvoÅ™ených zmÄ›nách" label_registration_activation_by_email: aktivace úÄtu emailem label_registration_manual_activation: manuální aktivace úÄtu label_registration_automatic_activation: automatická aktivace úÄtu - label_display_per_page: "{{value}} na stránku" + label_display_per_page: "%{value} na stránku" label_age: VÄ›k label_change_properties: ZmÄ›nit vlastnosti label_general: Obecné @@ -605,6 +764,40 @@ label_preferences: Nastavení label_chronological_order: V chronologickém poÅ™adí label_reverse_chronological_order: V obrácaném chronologickém poÅ™adí + label_planning: Plánování + label_incoming_emails: Příchozí e-maily + label_generate_key: Generovat klÃ­Ä + label_issue_watchers: Sledování + label_example: Příklad + label_display: Zobrazit + label_sort: Řazení + label_ascending: VzestupnÄ› + label_descending: SestupnÄ› + label_date_from_to: Od %{start} do %{end} + label_wiki_content_added: Wiki stránka pÅ™idána + label_wiki_content_updated: Wiki stránka aktualizována + label_group: Skupina + label_group_plural: Skupiny + label_group_new: Nová skupina + label_time_entry_plural: Strávený Äas + label_version_sharing_none: Nesdíleno + label_version_sharing_descendants: S podprojekty + label_version_sharing_hierarchy: S hierarchií projektu + label_version_sharing_tree: Se stromem projektu + label_version_sharing_system: Se vÅ¡emi projekty + label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů + label_copy_source: Zdroj + label_copy_target: Cíl + label_copy_same_as_target: Stejný jako cíl + label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou + label_api_access_key: API přístupový klÃ­Ä + label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API + label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en %{value} + label_profile: Profil + label_subtask_plural: Podúkol + label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu + label_principal_search: "Hledat uživatele nebo skupinu:" + label_user_search: "Hledat uživatele:" button_login: PÅ™ihlásit button_submit: Potvrdit @@ -613,8 +806,10 @@ button_uncheck_all: OdÅ¡rtnout vÅ¡e button_delete: Odstranit button_create: VytvoÅ™it - button_test: Test + button_create_and_continue: VytvoÅ™it a pokraÄovat + button_test: Testovat button_edit: Upravit + button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: %{page_title}" button_add: PÅ™idat button_change: ZmÄ›nit button_apply: Použít @@ -625,6 +820,7 @@ button_list: Vypsat button_view: Zobrazit button_move: PÅ™esunout + button_move_and_follow: PÅ™esunout a následovat button_back: ZpÄ›t button_cancel: Storno button_activate: Aktivovat @@ -636,54 +832,87 @@ button_reply: OdpovÄ›dÄ›t button_archive: Archivovat button_unarchive: Odarchivovat - button_reset: Reset + button_reset: Resetovat button_rename: PÅ™ejmenovat button_change_password: ZmÄ›nit heslo button_copy: Kopírovat + button_copy_and_follow: Kopírovat a následovat button_annotate: Komentovat button_update: Aktualizovat button_configure: Konfigurovat + button_quote: Citovat + button_duplicate: Duplikát + button_show: Zobrazit status_active: aktivní status_registered: registrovaný status_locked: uzamÄený + version_status_open: otevÅ™ený + version_status_locked: uzamÄený + version_status_closed: zavÅ™ený + + field_active: Aktivní + text_select_mail_notifications: Vyberte akci pÅ™i které bude zasláno upozornÄ›ní emailem. text_regexp_info: napÅ™. ^[A-Z0-9]+$ text_min_max_length_info: 0 znamená bez limitu text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a vÅ¡echna související data ? + text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány." text_workflow_edit: Vyberte roli a frontu k editaci průbÄ›hu práce text_are_you_sure: Jste si jisti? + text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? + text_journal_changed: "%{label} zmÄ›nÄ›n z %{old} na %{new}" + text_journal_set_to: "%{label} nastaven na %{value}" + text_journal_deleted: "%{label} smazán (%{old})" + text_journal_added: "%{label} %{value} pÅ™idán" text_tip_issue_begin_day: úkol zaÄíná v tento den text_tip_issue_end_day: úkol konÄí v tento den text_tip_issue_begin_end_day: úkol zaÄíná a konÄí v tento den text_project_identifier_info: 'Jsou povolena malá písmena (a-z), Äísla a pomlÄky.
    Po uložení již není možné identifikátor zmÄ›nit.' - text_caracters_maximum: "{{count}} znaků maximálnÄ›." - text_caracters_minimum: "Musí být alespoň {{count}} znaků dlouhé." - text_length_between: "Délka mezi {{min}} a {{max}} znaky." + text_caracters_maximum: "%{count} znaků maximálnÄ›." + text_caracters_minimum: "Musí být alespoň %{count} znaků dlouhé." + text_length_between: "Délka mezi %{min} a %{max} znaky." text_tracker_no_workflow: Pro tuto frontu není definován žádný průbÄ›h práce text_unallowed_characters: Nepovolené znaky text_comma_separated: Povoleno více hodnot (oddÄ›lÄ›né Äárkou). + text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů - text_issue_added: "Úkol {{id}} byl vytvoÅ™en uživatelem {{author}}." - text_issue_updated: "Úkol {{id}} byl aktualizován uživatelem {{author}}." + text_issue_added: "Úkol %{id} byl vytvoÅ™en uživatelem %{author}." + text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}." text_wiki_destroy_confirmation: Opravdu si pÅ™ejete odstranit tuto Wiki a celý její obsah? - text_issue_category_destroy_question: "NÄ›které úkoly ({{count}}) jsou pÅ™iÅ™azeny k této kategorii. Co s nimi chtete udÄ›lat?" + text_issue_category_destroy_question: "NÄ›které úkoly (%{count}) jsou pÅ™iÅ™azeny k této kategorii. Co s nimi chtete udÄ›lat?" text_issue_category_destroy_assignments: ZruÅ¡it pÅ™iÅ™azení ke kategorii text_issue_category_reassign_to: PÅ™iÅ™adit úkoly do této kategorie text_user_mail_option: "U projektů, které nebyly vybrány, budete dostávat oznámení pouze o vaÅ¡ich Äi o sledovaných položkách (napÅ™. o položkách jejichž jste autor nebo ke kterým jste pÅ™iÅ™azen(a))." text_no_configuration_data: "Role, fronty, stavy úkolů ani průbÄ›h práce nebyly zatím nakonfigurovány.\nVelice doporuÄujeme nahrát výchozí konfiguraci. Po té si můžete vÅ¡e upravit" text_load_default_configuration: Nahrát výchozí konfiguraci - text_status_changed_by_changeset: "Použito v changesetu {{value}}." + text_status_changed_by_changeset: "Použito v changesetu %{value}." + text_time_logged_by_changeset: Aplikováno v changesetu %{value}. text_issues_destroy_confirmation: 'Opravdu si pÅ™ejete odstranit vÅ¡echny zvolené úkoly?' text_select_project_modules: 'Aktivní moduly v tomto projektu:' text_default_administrator_account_changed: Výchozí nastavení administrátorského úÄtu zmÄ›nÄ›no text_file_repository_writable: Povolen zápis do adresáře ukládání souborů + text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets text_rmagick_available: RMagick k dispozici (volitelné) - text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno {{hours}} práce. Co chete udÄ›lat?" + text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udÄ›lat?" text_destroy_time_entries: Odstranit evidované hodiny. text_assign_time_entries_to_project: PÅ™iÅ™adit evidované hodiny projektu text_reassign_time_entries: 'PÅ™eÅ™adit evidované hodiny k tomuto úkolu:' + 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_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' + text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udÄ›lat? + text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky + text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky + text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi + text_own_membership_delete_confirmation: "Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokraÄovat?" + text_zoom_in: PÅ™iblížit + text_zoom_out: Oddálit default_role_manager: Manažer default_role_developer: Vývojář @@ -710,221 +939,9 @@ enumeration_issue_priorities: Priority úkolů enumeration_doc_categories: Kategorie dokumentů enumeration_activities: Aktivity (sledování Äasu) - error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." - label_planning: Plánování - text_subprojects_destroy_warning: "Jeho podprojek(y): {{value}} budou také smazány." - label_and_its_subprojects: "{{value}} a jeho podprojekty" - mail_body_reminder: "{{count}} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní ({{days}}):" - mail_subject_reminder: "{{count}} úkol(ů) má termín bÄ›hem nÄ›kolik dní ({{days}})" - text_user_wrote: "{{value}} napsal:" - label_duplicated_by: duplikováno od - setting_enabled_scm: Povolené SCM - text_enumeration_category_reassign_to: 'PÅ™eÅ™adit je do této:' - text_enumeration_destroy_question: "NÄ›kolik ({{count}}) objektů je pÅ™iÅ™azeno k této hodnotÄ›." - label_incoming_emails: Příchozí e-maily - label_generate_key: Generovat klÃ­Ä - setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily - setting_mail_handler_api_key: API klÃ­Ä - 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." - field_parent_title: RodiÄovská stránka - label_issue_watchers: Sledování - setting_commit_logs_encoding: Kódování zpráv pÅ™i commitu - button_quote: Citovat - setting_sequential_project_identifiers: Generovat sekvenÄní identifikátory projektů - notice_unable_delete_version: Nemohu odstanit verzi - label_renamed: pÅ™ejmenováno - label_copied: zkopírováno - setting_plain_text_mail: pouze prostý text (ne HTML) - permission_view_files: Prohlížení souborů - permission_edit_issues: Upravování úkolů - permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase - permission_manage_public_queries: Správa veÅ™ejných dotazů - permission_add_issues: PÅ™idávání úkolů - permission_log_time: Zaznamenávání stráveného Äasu - permission_view_changesets: Zobrazování sady zmÄ›n - permission_view_time_entries: Zobrazení stráveného Äasu - permission_manage_versions: Spravování verzí - permission_manage_wiki: Spravování Wiki - permission_manage_categories: Spravování kategorií úkolů - permission_protect_wiki_pages: ZabezpeÄení Wiki stránek - permission_comment_news: Komentování novinek - permission_delete_messages: Mazání zpráv - permission_select_project_modules: VýbÄ›r modulů projektu - permission_manage_documents: Správa dokumentů - permission_edit_wiki_pages: Upravování stránek Wiki - permission_add_issue_watchers: PÅ™idání sledujících uživatelů - permission_view_gantt: Zobrazené Ganttova diagramu - permission_move_issues: PÅ™esouvání úkolů - permission_manage_issue_relations: Spravování vztahů mezi úkoly - permission_delete_wiki_pages: Mazání stránek na Wiki - permission_manage_boards: Správa diskusních fór - permission_delete_wiki_pages_attachments: Mazání příloh - permission_view_wiki_edits: Prohlížení historie Wiki - permission_add_messages: Posílání zpráv - permission_view_messages: Prohlížení zpráv - permission_manage_files: Spravování souborů - permission_edit_issue_notes: Upravování poznámek - permission_manage_news: Spravování novinek - permission_view_calendar: Prohlížení kalendáře - permission_manage_members: Spravování Älenství - permission_edit_messages: Upravování zpráv - permission_delete_issues: Mazání úkolů - permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů - permission_manage_repository: Spravování repozitáře - permission_commit_access: Commit přístup - permission_browse_repository: Procházení repozitáře - permission_view_documents: Prohlížení dokumentů - permission_edit_project: Úprava projektů - permission_add_issue_notes: PÅ™idávání poznámek - permission_save_queries: Ukládání dotazů - permission_view_wiki_pages: Prohlížení Wiki - permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek - permission_edit_time_entries: Upravování záznamů o stráveném Äasu - permission_edit_own_issue_notes: Upravování vlastních poznámek - setting_gravatar_enabled: Použít uživatelské ikony Gravatar - label_example: Příklad - 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." - permission_edit_own_messages: Upravit vlastní zprávy - permission_delete_own_messages: Smazat vlastní zprávy - label_user_activity: "Aktivita uživatele: {{value}}" - label_updated_time_by: "Akutualizováno: {{author}} pÅ™ed: {{age}}" - text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka pÅ™esahuje max. limit.' - setting_diff_max_lines_displayed: Maximální poÄet zobrazenách řádků rozdílů - text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets - warning_attachments_not_saved: "{{count}} soubor(ů) nebylo možné uložit." - button_create_and_continue: VytvoÅ™it a pokraÄovat - text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' - label_display: Zobrazit - field_editable: Editovatelný - setting_repository_log_display_limit: Maximální poÄet revizí zobrazených v logu souboru - setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce - field_watcher: Sleduje - setting_openid: Umožnit pÅ™ihlaÅ¡ování a registrace s OpenID - field_identity_url: OpenID URL - label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID - field_content: Obsah - label_descending: SestupnÄ› - label_sort: Řazení - label_ascending: VzestupnÄ› - label_date_from_to: Od {{start}} do {{end}} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Tato stránka má {{descendants}} podstránek a potomků. Co chcete udÄ›lat? - text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi - text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky - text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky - setting_password_min_length: Minimální délka hesla - field_group_by: Seskupovat výsledky podle - mail_subject_wiki_content_updated: "'{{id}}' Wiki stránka byla aktualizována" - label_wiki_content_added: Wiki stránka pÅ™idána - mail_subject_wiki_content_added: "'{{id}}' Wiki stránka byla pÅ™idána" - mail_body_wiki_content_added: "'{{id}}' Wiki stránka byla pÅ™idána od {{author}}." - label_wiki_content_updated: Wiki stránka aktualizována - mail_body_wiki_content_updated: "'{{id}}' Wiki stránka byla aktualizována od {{author}}." - permission_add_project: VytvoÅ™it projekt - setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il - label_view_all_revisions: Zobrazit vÅ¡echny revize - label_tag: Tag - label_branch: Branch - error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. - error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). - text_journal_changed: "{{label}} zmÄ›nÄ›n z {{old}} na {{new}}" - text_journal_set_to: "{{label}} nastaven na {{value}}" - text_journal_deleted: "{{label}} smazán ({{old}})" - label_group_plural: Skupiny - label_group: Skupina - label_group_new: Nová skupina - label_time_entry_plural: Strávený Äas - text_journal_added: "{{label}} {{value}} pÅ™idán" - field_active: Aktivní enumeration_system_activity: Systémová aktivita - permission_delete_issue_watchers: Smazat pÅ™ihlížející - version_status_closed: zavÅ™ený - version_status_locked: uzamÄený - version_status_open: otevÅ™ený - error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en - label_user_anonymous: Anonymní - button_move_and_follow: PÅ™esunout a následovat - setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt - setting_gravatar_default: Výchozí Gravatar - field_sharing: Sdílení - label_version_sharing_hierarchy: S hierarchií projektu - label_version_sharing_system: Se vÅ¡emi projekty - label_version_sharing_descendants: S podprojekty - label_version_sharing_tree: Se stromem projektu - label_version_sharing_none: Nesdíleno - error_can_not_archive_project: Tento projekt nemůže být archivován - button_duplicate: Duplikát - button_copy_and_follow: Kopírovat a následovat - label_copy_source: Zdroj - setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s - setting_issue_done_ratio_issue_status: Použít stav úkolu - error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. - error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) - setting_issue_done_ratio_issue_field: Použít pole úkolu - label_copy_same_as_target: Stejný jako cíl - label_copy_target: Cíl - notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. - error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly - label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů - setting_start_of_week: ZaÄínat kalendáře - permission_view_issues: Zobrazit úkoly - label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou - label_revision_id: Revize {{value}} - label_api_access_key: API přístupový klÃ­Ä - label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en {{value}} - label_feeds_access_key: RSS přístupový klÃ­Ä - notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. - setting_rest_api_enabled: Zapnout službu REST - label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API - label_missing_feeds_access_key: ChybÄ›jící přístupový klÃ­Ä RSS - button_show: Zobrazit - text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). - setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků - permission_add_subprojects: VytvoÅ™it podprojekty - label_subproject_new: Nový podprojekt - text_own_membership_delete_confirmation: |- - Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt. - Opravdu chcete pokraÄovat? - label_close_versions: Zavřít dokonÄené verze - label_board_sticky: Nálepka - label_board_locked: UzamÄeno - permission_export_wiki_pages: Exportovat Wiki stránky - setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti - permission_manage_project_activities: Spravovat aktivity projektu - error_unable_delete_issue_status: Nelze smazat stavy úkolů - label_profile: Profil - permission_manage_subtasks: Spravovat podúkoly - field_parent_issue: RodiÄovský úkol - label_subtask_plural: Podúkol - label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu - error_can_not_delete_custom_field: Nelze smazat volitelné pole - error_unable_to_connect: Nelze se pÅ™ipojit ({{value}}) - error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. - error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. - field_principal: Hlavní - label_my_page_block: Bloky na mé stránce - notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): {{errors}}." - text_zoom_out: Oddálit - text_zoom_in: PÅ™iblížit - notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. - label_overall_spent_time: CelkovÄ› strávený Äas - field_time_entries: Zaznamenaný Äas - project_module_gantt: Gantt - project_module_calendar: Kalendář - button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: {{page_title}}" - text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? - field_text: Textové pole - 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/da.yml --- a/config/locales/da.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/da.yml Thu Mar 03 12:11:53 2011 +0000 @@ -35,37 +35,37 @@ half_a_minute: "et halvt minut" less_than_x_seconds: one: "mindre end et sekund" - other: "mindre end {{count}} sekunder" + other: "mindre end %{count} sekunder" x_seconds: one: "et sekund" - other: "{{count}} sekunder" + other: "%{count} sekunder" less_than_x_minutes: one: "mindre end et minut" - other: "mindre end {{count}} minutter" + other: "mindre end %{count} minutter" x_minutes: one: "et minut" - other: "{{count}} minutter" + other: "%{count} minutter" about_x_hours: one: "cirka en time" - other: "cirka {{count}} timer" + other: "cirka %{count} timer" x_days: one: "en dag" - other: "{{count}} dage" + other: "%{count} dage" about_x_months: one: "cirka en mÃ¥ned" - other: "cirka {{count}} mÃ¥neder" + other: "cirka %{count} mÃ¥neder" x_months: one: "en mÃ¥ned" - other: "{{count}} mÃ¥neder" + other: "%{count} mÃ¥neder" about_x_years: one: "cirka et Ã¥r" - other: "cirka {{count}} Ã¥r" + other: "cirka %{count} Ã¥r" over_x_years: one: "mere end et Ã¥r" - other: "mere end {{count}} Ã¥r" + other: "mere end %{count} Ã¥r" almost_x_years: one: "næsten 1 Ã¥r" - other: "næsten {{count}} Ã¥r" + other: "næsten %{count} Ã¥r" number: format: @@ -107,6 +107,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "er ikke i listen" exclusion: "er reserveret" @@ -115,16 +119,16 @@ accepted: "skal accepteres" empty: "mÃ¥ ikke udelades" blank: "skal udfyldes" - too_long: "er for lang (højst {{count}} tegn)" - too_short: "er for kort (mindst {{count}} tegn)" - wrong_length: "har forkert længde (skulle være {{count}} tegn)" + too_long: "er for lang (højst %{count} tegn)" + too_short: "er for kort (mindst %{count} tegn)" + wrong_length: "har forkert længde (skulle være %{count} tegn)" taken: "er allerede anvendt" not_a_number: "er ikke et tal" - greater_than: "skal være større end {{count}}" - greater_than_or_equal_to: "skal være større end eller lig med {{count}}" - equal_to: "skal være lig med {{count}}" - less_than: "skal være mindre end {{count}}" - less_than_or_equal_to: "skal være mindre end eller lig med {{count}}" + greater_than: "skal være større end %{count}" + greater_than_or_equal_to: "skal være større end eller lig med %{count}" + equal_to: "skal være lig med %{count}" + less_than: "skal være mindre end %{count}" + less_than_or_equal_to: "skal være mindre end eller lig med %{count}" odd: "skal være ulige" even: "skal være lige" greater_than_start_date: "skal være senere end startdatoen" @@ -134,8 +138,8 @@ template: header: - one: "En fejl forhindrede {{model}} i at blive gemt" - other: "{{count}} fejl forhindrede denne {{model}} i at blive gemt" + one: "En fejl forhindrede %{model} i at blive gemt" + other: "%{count} fejl forhindrede denne %{model} i at blive gemt" body: "Der var problemer med følgende felter:" actionview_instancetag_blank_option: Vælg venligst @@ -166,29 +170,29 @@ notice_file_not_found: Siden du forsøger at tilgÃ¥ eksisterer ikke eller er blevet fjernet. notice_locking_conflict: Data er opdateret af en anden bruger. notice_not_authorized: Du har ikke adgang til denne side. - notice_email_sent: "En email er sendt til {{value}}" - notice_email_error: "En fejl opstod under afsendelse af email ({{value}})" + notice_email_sent: "En email er sendt til %{value}" + notice_email_error: "En fejl opstod under afsendelse af email (%{value})" notice_feeds_access_key_reseted: Din adgangsnøgle til RSS er nulstillet. - notice_failed_to_save_issues: "Det mislykkedes at gemme {{count}} sage(r) pÃ¥ {{total}} valgt: {{ids}}." + notice_failed_to_save_issues: "Det mislykkedes at gemme %{count} sage(r) pÃ¥ %{total} valgt: %{ids}." notice_no_issue_selected: "Ingen sag er valgt! Vælg venligst hvilke emner du vil rette." notice_account_pending: "Din konto er oprettet, og afventer administrators godkendelse." notice_default_data_loaded: Standardopsætningen er indlæst. - error_can_t_load_default_data: "Standardopsætning kunne ikke indlæses: {{value}}" + error_can_t_load_default_data: "Standardopsætning kunne ikke indlæses: %{value}" error_scm_not_found: "Adgang nægtet og/eller revision blev ikke fundet i det valgte repository." - error_scm_command_failed: "En fejl opstod under forbindelsen til det valgte repository: {{value}}" + error_scm_command_failed: "En fejl opstod under forbindelsen til det valgte repository: %{value}" - mail_subject_lost_password: "Dit {{value}} kodeord" + mail_subject_lost_password: "Dit %{value} kodeord" mail_body_lost_password: 'For at ændre dit kodeord, klik pÃ¥ dette link:' - mail_subject_register: "{{value}} kontoaktivering" + 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." + mail_body_account_information_external: "Du kan bruge din %{value} konto til at logge ind." mail_body_account_information: Din kontoinformation - mail_subject_account_activation_request: "{{value}} kontoaktivering" - mail_body_account_activation_request: "En ny bruger ({{value}}) er registreret. Godkend venligst kontoen:" + mail_subject_account_activation_request: "%{value} kontoaktivering" + mail_body_account_activation_request: "En ny bruger (%{value}) er registreret. Godkend venligst kontoen:" gui_validation_error: 1 fejl - gui_validation_error_plural: "{{count}} fejl" + gui_validation_error_plural: "%{count} fejl" field_name: Navn field_description: Beskrivelse @@ -250,6 +254,7 @@ 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_auth_source: Sikkerhedsmetode field_hide_mail: Skjul min email @@ -318,14 +323,14 @@ label_x_projects: zero: Ingen projekter one: 1 projekt - other: "{{count}} projekter" + other: "%{count} projekter" label_project_all: Alle projekter label_project_latest: Seneste projekter label_issue: Sag label_issue_new: Opret sag label_issue_plural: Sager label_issue_view_all: Vis alle sager - label_issues_by: "Sager fra {{value}}" + label_issues_by: "Sager fra %{value}" label_issue_added: Sagen er oprettet label_issue_updated: Sagen er opdateret label_document: Dokument @@ -371,7 +376,7 @@ label_reported_issues: Rapporterede sager label_assigned_to_me_issues: Sager tildelt mig label_last_login: Sidste login tidspunkt - label_registered_on: Registeret den + label_registered_on: Registreret den label_activity: Aktivitet label_new: Ny label_logged_as: Registreret som @@ -391,8 +396,8 @@ label_text: Lang tekst label_attribute: Attribut label_attribute_plural: Attributter - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Ingen data at vise label_change_status: Ændringsstatus label_history: Historik @@ -423,17 +428,17 @@ label_closed_issues: lukket label_closed_issues_plural: lukkede label_x_open_issues_abbr_on_total: - zero: 0 Ã¥bne / {{total}} - one: 1 Ã¥ben / {{total}} - other: "{{count}} Ã¥bne / {{total}}" + zero: 0 Ã¥bne / %{total} + one: 1 Ã¥ben / %{total} + other: "%{count} Ã¥bne / %{total}" label_x_open_issues_abbr: zero: 0 Ã¥bne one: 1 Ã¥ben - other: "{{count}} Ã¥bne" + other: "%{count} Ã¥bne" label_x_closed_issues_abbr: zero: 0 lukkede one: 1 lukket - other: "{{count}} lukkede" + other: "%{count} lukkede" label_total: Total label_permissions: Rettigheder label_current_status: Nuværende status @@ -442,7 +447,7 @@ label_none: intet label_nobody: ingen label_next: Næste - label_previous: Forrig + label_previous: Forrige label_used_by: Brugt af label_details: Detaljer label_add_note: Tilføj note @@ -451,7 +456,7 @@ label_months_from: mÃ¥neder frem label_gantt: Gantt label_internal: Intern - label_last_changes: "sidste {{count}} ændringer" + label_last_changes: "sidste %{count} ændringer" label_change_view_all: Vis alle ændringer label_personalize_page: Tilret denne side label_comment: Kommentar @@ -459,7 +464,7 @@ label_x_comments: zero: ingen kommentarer one: 1 kommentar - other: "{{count}} kommentarer" + other: "%{count} kommentarer" label_comment_add: Tilføj en kommentar label_comment_added: Kommentaren er tilføjet label_comment_delete: Slet kommentar @@ -478,7 +483,7 @@ label_yesterday: i gÃ¥r label_this_week: denne uge label_last_week: sidste uge - label_last_n_days: "sidste {{count}} dage" + label_last_n_days: "sidste %{count} dage" label_this_month: denne mÃ¥ned label_last_month: sidste mÃ¥ned label_this_year: dette Ã¥r @@ -492,8 +497,8 @@ label_repository: Repository label_repository_plural: Repositories label_browse: Gennemse - label_modification: "{{count}} ændring" - label_modification_plural: "{{count}} ændringer" + label_modification: "%{count} ændring" + label_modification_plural: "%{count} ændringer" label_revision: Revision label_revision_plural: Revisioner label_associated_revisions: Tilnyttede revisioner @@ -510,7 +515,7 @@ label_sort_lowest: Flyt til bunden label_roadmap: Roadmap label_roadmap_due_in: Deadline - label_roadmap_overdue: "{{value}} forsinket" + label_roadmap_overdue: "%{value} forsinket" label_roadmap_no_issues: Ingen sager i denne version label_search: Søg label_result_plural: Resultater @@ -528,8 +533,8 @@ label_changes_details: Detaljer for alle ændringer label_issue_tracking: Sags søgning label_spent_time: Anvendt tid - label_f_hour: "{{value}} time" - label_f_hour_plural: "{{value}} timer" + label_f_hour: "%{value} time" + label_f_hour_plural: "%{value} timer" label_time_tracking: Tidsstyring label_change_plural: Ændringer label_statistics: Statistik @@ -538,7 +543,7 @@ label_view_diff: Vis forskelle label_diff_inline: inline label_diff_side_by_side: side om side - label_options: Optioner + label_options: Formatering label_copy_workflow_from: Kopier arbejdsgang fra label_permissions_report: Godkendelsesrapport label_watched_issues: OvervÃ¥gede sager @@ -548,7 +553,7 @@ label_relation_new: Ny relation label_relation_delete: Slet relation label_relates_to: relaterer til - label_duplicates: kopierer + label_duplicates: duplikater label_blocks: blokerer label_blocked_by: blokeret af label_precedes: kommer før @@ -577,12 +582,12 @@ label_date_from: Fra label_date_to: Til label_language_based: Baseret pÃ¥ brugerens sprog - label_sort_by: "Sortér efter {{value}}" + label_sort_by: "Sortér efter %{value}" label_send_test_email: Send en test email - label_feeds_access_key_created_on: "RSS adgangsnøgle dannet for {{value}} siden" + label_feeds_access_key_created_on: "RSS adgangsnøgle dannet for %{value} siden" label_module_plural: Moduler - label_added_time_by: "Tilføjet af {{author}} for {{age}} siden" - label_updated_time: "Opdateret for {{value}} siden" + label_added_time_by: "Tilføjet af %{author} for %{age} siden" + label_updated_time: "Opdateret for %{value} siden" label_jump_to_a_project: Skift til projekt... label_file_plural: Filer label_changeset_plural: Ændringer @@ -598,7 +603,7 @@ label_registration_activation_by_email: kontoaktivering pÃ¥ email label_registration_manual_activation: manuel kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering - label_display_per_page: "Per side: {{value}}" + label_display_per_page: "Per side: %{value}" label_age: Alder label_change_properties: Ændre indstillinger label_general: Generelt @@ -660,23 +665,23 @@ text_tip_issue_end_day: opaven slutter denne dag text_tip_issue_begin_end_day: opgaven begynder og slutter denne dag text_project_identifier_info: 'SmÃ¥ bogstaver (a-z), numre og bindestreg er tilladt.
    Denne er en unik identifikation for projektet, og kan defor ikke rettes senere.' - text_caracters_maximum: "max {{count}} karakterer." - text_caracters_minimum: "Skal være mindst {{count}} karakterer lang." - text_length_between: "Længde skal være mellem {{min}} og {{max}} karakterer." + text_caracters_maximum: "max %{count} karakterer." + text_caracters_minimum: "Skal være mindst %{count} karakterer lang." + text_length_between: "Længde skal være mellem %{min} og %{max} karakterer." text_tracker_no_workflow: Ingen arbejdsgang defineret for denne type text_unallowed_characters: Ikke-tilladte karakterer text_comma_separated: Adskillige værdier tilladt (adskilt med komma). text_issues_ref_in_commit_messages: Referer og løser sager i commit-beskeder - text_issue_added: "Sag {{id}} er rapporteret af {{author}}." - text_issue_updated: "Sag {{id}} er blevet opdateret af {{author}}." + text_issue_added: "Sag %{id} er rapporteret af %{author}." + text_issue_updated: "Sag %{id} er blevet opdateret af %{author}." text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wiki og dens indhold? - text_issue_category_destroy_question: "Nogle sager ({{count}}) er tildelt denne kategori. Hvad ønsker du at gøre?" + text_issue_category_destroy_question: "Nogle sager (%{count}) er tildelt denne kategori. Hvad ønsker du at gøre?" 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_load_default_configuration: Indlæs standardopsætningen - text_status_changed_by_changeset: "Anvendt i ændring {{value}}." + 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 @@ -712,7 +717,7 @@ label_add_another_file: Tilføj endnu en fil label_chronological_order: I kronologisk rækkefølge setting_activity_days_default: Antal dage der vises under projektaktivitet - text_destroy_time_entries_question: "{{hours}} timer er registreret på denne sag som du er ved at slette. Hvad vil du gøre?" + text_destroy_time_entries_question: "%{hours} timer er registreret på denne sag som du er ved at slette. Hvad vil du gøre?" 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 @@ -726,7 +731,7 @@ setting_default_projects_public: Nye projekter er offentlige som standard error_scm_annotate: "Filen findes ikke, eller kunne ikke annoteres." label_planning: Planlægning - text_subprojects_destroy_warning: "Dets underprojekter(er): {{value}} vil også blive slettet." + text_subprojects_destroy_warning: "Dets underprojekter(er): %{value} vil også blive slettet." permission_edit_issues: Redigér sager setting_diff_max_lines_displayed: Højeste antal forskelle der vises permission_edit_own_issue_notes: Redigér egne noter @@ -749,11 +754,11 @@ setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer setting_plain_text_mail: Emails som almindelig tekst (ingen HTML) field_parent_title: Siden over - text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse." + text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/configuration.yml og genstart applikationen for at aktivere email-afsendelse." permission_protect_wiki_pages: Beskyt wiki sider permission_manage_documents: Administrér dokumenter permission_add_issue_watchers: Tilføj overvågere - warning_attachments_not_saved: "der var {{count}} fil(er), som ikke kunne gemmes." + 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:' permission_select_project_modules: Vælg projektmoduler @@ -761,7 +766,7 @@ permission_delete_messages: Slet beskeder permission_move_issues: Flyt sager permission_edit_wiki_pages: Redigér wiki sider - label_user_activity: "{{value}}'s aktivitet" + label_user_activity: "%{value}'s aktivitet" permission_manage_issue_relations: Administrér sags-relationer label_issue_watchers: Overvågere permission_delete_wiki_pages: Slet wiki sider @@ -772,27 +777,27 @@ permission_manage_boards: Administrér fora permission_delete_wiki_pages_attachments: Slet filer vedhæftet wiki sider permission_view_messages: Se beskeder - text_enumeration_destroy_question: "{{count}} objekter er tildelt denne værdi." + text_enumeration_destroy_question: "%{count} objekter er tildelt denne værdi." permission_manage_files: Administrér filer permission_add_messages: Opret beskeder permission_edit_issue_notes: Redigér noter permission_manage_news: Administrér nyheder text_plugin_assets_writable: Der er skriverettigheder til plugin assets folderen label_display: Vis - label_and_its_subprojects: "{{value}} og dets underprojekter" + 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 - label_updated_time_by: "Opdateret af {{author}} for {{age}} siden" + 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_user_wrote: "{{value}} skrev:" + text_user_wrote: "%{value} skrev:" setting_mail_handler_api_enabled: Aktiver webservice for indkomne emails permission_delete_issues: Slet sager permission_view_documents: Se dokumenter permission_browse_repository: Gennemse repository permission_manage_repository: Administrér repository permission_manage_members: Administrér medlemmer - mail_subject_reminder: "{{count}} sag(er) har deadline i de kommende dage ({{days}})" + mail_subject_reminder: "%{count} sag(er) har deadline i de kommende dage (%{days})" permission_add_issue_notes: Tilføj noter permission_edit_messages: Redigér beskeder permission_view_issue_watchers: Se liste over overvågere @@ -817,26 +822,26 @@ field_identity_url: OpenID URL label_login_with_open_id_option: eller login med OpenID setting_per_page_options: Enheder per side muligheder - mail_body_reminder: "{{count}} sage(er) som er tildelt dig har deadline indenfor de næste {{days}} dage:" + mail_body_reminder: "%{count} sage(er) som er tildelt dig har deadline indenfor de næste %{days} dage:" field_content: Indhold label_descending: Aftagende label_sort: Sortér label_ascending: Tiltagende - label_date_from_to: Fra {{start}} til {{end}} + label_date_from_to: Fra %{start} til %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Denne side har {{descendants}} underside(r) og afledte. Hvad vil du gøre? + text_wiki_page_destroy_question: Denne side har %{descendants} underside(r) og afledte. Hvad vil du gøre? text_wiki_page_reassign_children: Flyt undersider til denne side text_wiki_page_nullify_children: Behold undersider som rod-sider text_wiki_page_destroy_children: Slet undersider ogalle deres afledte sider. setting_password_min_length: Mindste længde på kodeord field_group_by: Gruppér resultater efter - mail_subject_wiki_content_updated: "'{{id}}' wikisiden er blevet opdateret" + mail_subject_wiki_content_updated: "'%{id}' wikisiden er blevet opdateret" label_wiki_content_added: Wiki side tilføjet - mail_subject_wiki_content_added: "'{{id}}' wikisiden er blevet tilføjet" - mail_body_wiki_content_added: The '{{id}}' wikiside er blevet tilføjet af {{author}}. + mail_subject_wiki_content_added: "'%{id}' wikisiden er blevet tilføjet" + mail_body_wiki_content_added: The '%{id}' wikiside er blevet tilføjet af %{author}. label_wiki_content_updated: Wikiside opdateret - mail_body_wiki_content_updated: Wikisiden '{{id}}' er blevet opdateret af {{author}}. + mail_body_wiki_content_updated: Wikisiden '%{id}' er blevet opdateret af %{author}. permission_add_project: Opret projekt setting_new_project_user_role_id: Denne rolle gives til en bruger, som ikke er administrator, og som opretter et projekt label_view_all_revisions: Se alle revisioner @@ -844,14 +849,14 @@ 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"). - text_journal_changed: "{{label}} ændret fra {{old}} til {{new}}" - text_journal_set_to: "{{label}} sat til {{value}}" - text_journal_deleted: "{{label}} slettet ({{old}})" + text_journal_changed: "%{label} ændret fra %{old} til %{new}" + text_journal_set_to: "%{label} sat til %{value}" + text_journal_deleted: "%{label} slettet (%{old})" label_group_plural: Grupper label_group: Grupper label_group_new: Ny gruppe label_time_entry_plural: Anvendt tid - text_journal_added: "{{label}} {{value}} tilføjet" + text_journal_added: "%{label} %{value} tilføjet" field_active: Aktiv enumeration_system_activity: System Aktivitet permission_delete_issue_watchers: Slet overvågere @@ -870,8 +875,8 @@ label_version_sharing_tree: Med projekt træ label_version_sharing_none: Ikke delt error_can_not_archive_project: Dette projekt kan ikke arkiveres - button_duplicate: Kopier - button_copy_and_follow: Kopier og overvåg + 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 @@ -886,9 +891,9 @@ 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_revision_id: Revision {{value}} + label_revision_id: Revision %{value} label_api_access_key: API nøgle - label_api_access_key_created_on: API nøgle genereret {{value}} siden + label_api_access_key_created_on: API nøgle genereret %{value} siden label_feeds_access_key: RSS nøgle notice_api_access_key_reseted: Din API nøgle er nulstillet. setting_rest_api_enabled: Aktiver REST web service @@ -896,14 +901,14 @@ label_missing_feeds_access_key: Mangler en RSS nøgle button_show: Vis text_line_separated: Flere væredier tilladt (en linje for hver værdi). - setting_mail_handler_body_delimiters: Trunker emails efter en af disse linjer + setting_mail_handler_body_delimiters: Trunkér emails efter en af disse linjer permission_add_subprojects: Lav underprojekter label_subproject_new: Nyt underprojekt text_own_membership_delete_confirmation: |- Du er ved at fjerne en eller flere af dine rettigheder, og kan muligvis ikke redigere projektet bagefter. Er du sikker på du ønsker at fortsætte? label_close_versions: Luk færdige versioner - label_board_sticky: Sticky + label_board_sticky: Klistret label_board_locked: Låst permission_export_wiki_pages: Eksporter wiki sider setting_cache_formatted_text: Cache formatteret tekst @@ -914,33 +919,41 @@ field_parent_issue: Hoved opgave label_subtask_plural: Under opgaver label_project_copy_notifications: Send email notifikationer, mens projektet kopieres - 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. + error_can_not_delete_custom_field: Kan ikke slette brugerdefineret felt + error_unable_to_connect: Kan ikke forbinde (%{value}) + error_can_not_remove_role: Denne rolle er i brug og kan ikke slettes. + error_can_not_delete_tracker: Denne type indeholder sager og kan ikke slettes. 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 + 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 - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time + notice_unable_delete_time_entry: Kan ikke slette tidsregistrering. + label_overall_spent_time: Overordnet forbrug af tid + field_time_entries: Log tid 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 + project_module_calendar: Kalender + 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: Assignee's group - field_assigned_to_role: Assignee's role + 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/de.yml --- a/config/locales/de.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/de.yml Thu Mar 03 12:11:53 2011 +0000 @@ -35,37 +35,37 @@ half_a_minute: 'eine halbe Minute' less_than_x_seconds: one: 'weniger als 1 Sekunde' - other: 'weniger als {{count}} Sekunden' + other: 'weniger als %{count} Sekunden' x_seconds: one: '1 Sekunde' - other: '{{count}} Sekunden' + other: '%{count} Sekunden' less_than_x_minutes: one: 'weniger als 1 Minute' - other: 'weniger als {{count}} Minuten' + other: 'weniger als %{count} Minuten' x_minutes: one: '1 Minute' - other: '{{count}} Minuten' + other: '%{count} Minuten' about_x_hours: one: 'etwa 1 Stunde' - other: 'etwa {{count}} Stunden' + other: 'etwa %{count} Stunden' x_days: one: '1 Tag' - other: '{{count}} Tagen' + other: '%{count} Tagen' about_x_months: one: 'etwa 1 Monat' - other: 'etwa {{count}} Monaten' + other: 'etwa %{count} Monaten' x_months: one: '1 Monat' - other: '{{count}} Monaten' + other: '%{count} Monaten' about_x_years: one: 'etwa 1 Jahr' - other: 'etwa {{count}} Jahren' + other: 'etwa %{count} Jahren' over_x_years: one: 'mehr als 1 Jahr' - other: 'mehr als {{count}} Jahren' + other: 'mehr als %{count} Jahren' almost_x_years: one: "fast 1 Jahr" - other: "fast {{count}} Jahren" + other: "fast %{count} Jahren" number: # Default format for numbers @@ -111,7 +111,9 @@ activerecord: errors: template: - header: "Dieses {{model}}-Objekt konnte nicht gespeichert werden: {{count}} Fehler." + header: + one: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." + other: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." body: "Bitte überprüfen Sie die folgenden Felder:" messages: @@ -122,17 +124,17 @@ accepted: "muss akzeptiert werden" empty: "muss ausgefüllt werden" blank: "muss ausgefüllt werden" - too_long: "ist zu lang (nicht mehr als {{count}} Zeichen)" - too_short: "ist zu kurz (nicht weniger als {{count}} Zeichen)" - wrong_length: "hat die falsche Länge (muss genau {{count}} Zeichen haben)" + too_long: "ist zu lang (nicht mehr als %{count} Zeichen)" + too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)" + wrong_length: "hat die falsche Länge (muss genau %{count} Zeichen haben)" taken: "ist bereits vergeben" not_a_number: "ist keine Zahl" not_a_date: "is kein gültiges Datum" - greater_than: "muss größer als {{count}} sein" - greater_than_or_equal_to: "muss größer oder gleich {{count}} sein" - equal_to: "muss genau {{count}} sein" - less_than: "muss kleiner als {{count}} sein" - less_than_or_equal_to: "muss kleiner oder gleich {{count}} sein" + greater_than: "muss größer als %{count} sein" + greater_than_or_equal_to: "muss größer oder gleich %{count} sein" + equal_to: "muss genau %{count} sein" + less_than: "muss kleiner als %{count} sein" + less_than_or_equal_to: "muss kleiner oder gleich %{count} sein" odd: "muss ungerade sein" even: "muss gerade sein" greater_than_start_date: "muss größer als Anfangsdatum sein" @@ -169,12 +171,12 @@ notice_file_not_found: Anhang existiert nicht oder ist gelöscht worden. notice_locking_conflict: Datum wurde von einem anderen Benutzer geändert. notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen. - notice_email_sent: "Eine E-Mail wurde an {{value}} gesendet." - notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten ({{value}})." + notice_email_sent: "Eine E-Mail wurde an %{value} gesendet." + notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten (%{value})." notice_feeds_access_key_reseted: Ihr Atom-Zugriffsschlüssel wurde zurückgesetzt. notice_api_access_key_reseted: Ihr API-Zugriffsschlüssel wurde zurückgesetzt. - notice_failed_to_save_issues: "{{count}} von {{total}} ausgewählten Tickets konnte(n) nicht gespeichert werden: {{ids}}." - notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: {{errors}}." + notice_failed_to_save_issues: "%{count} von %{total} ausgewählten Tickets konnte(n) nicht gespeichert werden: %{ids}." + notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: %{errors}." notice_no_issue_selected: "Kein Ticket ausgewählt! Bitte wählen Sie die Tickets, die Sie bearbeiten möchten." notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators." notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen. @@ -182,9 +184,9 @@ notice_unable_delete_time_entry: Der Zeiterfassungseintrag konnte nicht gelöscht werden. notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert. - error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: {{value}}" + error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %{value}" error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv. - error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: {{value}}" + error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %{value}" error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden." error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.' error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte überprüfen Sie die Projekteinstellungen. @@ -198,26 +200,26 @@ error_workflow_copy_source: Bitte wählen Sie einen Quell-Tracker und eine Quell-Rolle. error_workflow_copy_target: Bitte wählen Sie die Ziel-Tracker und -Rollen. error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelöscht werden." - error_unable_to_connect: Fehler beim Verbinden ({{value}}) - warning_attachments_not_saved: "{{count}} Datei(en) konnten nicht gespeichert werden." + error_unable_to_connect: Fehler beim Verbinden (%{value}) + warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden." - mail_subject_lost_password: "Ihr {{value}} Kennwort" + mail_subject_lost_password: "Ihr %{value} Kennwort" mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu ändern:' - mail_subject_register: "{{value}} Kontoaktivierung" + mail_subject_register: "%{value} Kontoaktivierung" mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:' - mail_body_account_information_external: "Sie können sich mit Ihrem Konto {{value}} an anmelden." + mail_body_account_information_external: "Sie können sich mit Ihrem Konto %{value} an anmelden." mail_body_account_information: Ihre Konto-Informationen - mail_subject_account_activation_request: "Antrag auf {{value}} Kontoaktivierung" - mail_body_account_activation_request: "Ein neuer Benutzer ({{value}}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:" - mail_subject_reminder: "{{count}} Tickets müssen in den nächsten {{days}} Tagen abgegeben werden" - mail_body_reminder: "{{count}} Tickets, die Ihnen zugewiesen sind, müssen in den nächsten {{days}} Tagen abgegeben werden:" - mail_subject_wiki_content_added: "Wiki-Seite '{{id}}' hinzugefügt" - mail_body_wiki_content_added: "Die Wiki-Seite '{{id}}' wurde von {{author}} hinzugefügt." - mail_subject_wiki_content_updated: "Wiki-Seite '{{id}}' erfolgreich aktualisiert" - mail_body_wiki_content_updated: "Die Wiki-Seite '{{id}}' wurde von {{author}} aktualisiert." + mail_subject_account_activation_request: "Antrag auf %{value} Kontoaktivierung" + mail_body_account_activation_request: "Ein neuer Benutzer (%{value}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:" + mail_subject_reminder: "%{count} Tickets müssen in den nächsten %{days} Tagen abgegeben werden" + mail_body_reminder: "%{count} Tickets, die Ihnen zugewiesen sind, müssen in den nächsten %{days} Tagen abgegeben werden:" + mail_subject_wiki_content_added: "Wiki-Seite '%{id}' hinzugefügt" + mail_body_wiki_content_added: "Die Wiki-Seite '%{id}' wurde von %{author} hinzugefügt." + mail_subject_wiki_content_updated: "Wiki-Seite '%{id}' erfolgreich aktualisiert" + mail_body_wiki_content_updated: "Die Wiki-Seite '%{id}' wurde von %{author} aktualisiert." gui_validation_error: 1 Fehler - gui_validation_error_plural: "{{count}} Fehler" + gui_validation_error_plural: "%{count} Fehler" field_name: Name field_description: Beschreibung @@ -280,6 +282,7 @@ field_attr_lastname: Name-Attribut field_attr_mail: E-Mail-Attribut field_onthefly: On-the-fly-Benutzererstellung + field_start_date: Beginn field_done_ratio: % erledigt field_auth_source: Authentifizierungs-Modus field_hide_mail: E-Mail-Adresse nicht anzeigen @@ -443,14 +446,14 @@ label_x_projects: zero: keine Projekte one: 1 Projekt - other: "{{count}} Projekte" + other: "%{count} Projekte" label_project_all: Alle Projekte label_project_latest: Neueste Projekte label_issue: Ticket label_issue_new: Neues Ticket label_issue_plural: Tickets label_issue_view_all: Alle Tickets anzeigen - label_issues_by: "Tickets von {{value}}" + label_issues_by: "Tickets von %{value}" label_issue_added: Ticket hinzugefügt label_issue_updated: Ticket aktualisiert label_document: Dokument @@ -501,7 +504,7 @@ label_registered_on: Angemeldet am label_activity: Aktivität label_overall_activity: Aktivität aller Projekte anzeigen - label_user_activity: "Aktivität von {{value}}" + label_user_activity: "Aktivität von %{value}" label_new: Neu label_logged_as: Angemeldet als label_environment: Umgebung @@ -511,7 +514,7 @@ label_auth_source_plural: Authentifizierungs-Arten label_subproject_plural: Unterprojekte label_subproject_new: Neues Unterprojekt - label_and_its_subprojects: "{{value}} und dessen Unterprojekte" + label_and_its_subprojects: "%{value} und dessen Unterprojekte" label_min_max_length: Länge (Min. - Max.) label_list: Liste label_date: Datum @@ -522,8 +525,8 @@ label_text: Langer Text label_attribute: Attribut label_attribute_plural: Attribute - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Nichts anzuzeigen label_change_status: Statuswechsel label_history: Historie @@ -555,17 +558,17 @@ label_closed_issues: geschlossen label_closed_issues_plural: geschlossen label_x_open_issues_abbr_on_total: - zero: 0 offen / {{total}} - one: 1 offen / {{total}} - other: "{{count}} offen / {{total}}" + zero: 0 offen / %{total} + one: 1 offen / %{total} + other: "%{count} offen / %{total}" label_x_open_issues_abbr: zero: 0 offen one: 1 offen - other: "{{count}} offen" + other: "%{count} offen" label_x_closed_issues_abbr: zero: 0 geschlossen one: 1 geschlossen - other: "{{count}} geschlossen" + other: "%{count} geschlossen" label_total: Gesamtzahl label_permissions: Berechtigungen label_current_status: Gegenwärtiger Status @@ -583,7 +586,7 @@ label_months_from: Monate ab label_gantt: Gantt-Diagramm label_internal: Intern - label_last_changes: "{{count}} letzte Änderungen" + label_last_changes: "%{count} letzte Änderungen" label_change_view_all: Alle Änderungen anzeigen label_personalize_page: Diese Seite anpassen label_comment: Kommentar @@ -591,7 +594,7 @@ label_x_comments: zero: keine Kommentare one: 1 Kommentar - other: "{{count}} Kommentare" + other: "%{count} Kommentare" label_comment_add: Kommentar hinzufügen label_comment_added: Kommentar hinzugefügt label_comment_delete: Kommentar löschen @@ -612,7 +615,7 @@ label_yesterday: gestern label_this_week: aktuelle Woche label_last_week: vorige Woche - label_last_n_days: "die letzten {{count}} Tage" + label_last_n_days: "die letzten %{count} Tage" label_this_month: aktueller Monat label_last_month: voriger Monat label_this_year: aktuelles Jahr @@ -626,13 +629,13 @@ label_repository: Projektarchiv label_repository_plural: Projektarchive label_browse: Codebrowser - label_modification: "{{count}} Änderung" - label_modification_plural: "{{count}} Änderungen" + label_modification: "%{count} Änderung" + label_modification_plural: "%{count} Änderungen" label_branch: Zweig label_tag: Markierung label_revision: Revision label_revision_plural: Revisionen - label_revision_id: Revision {{value}} + label_revision_id: Revision %{value} label_associated_revisions: Zugehörige Revisionen label_added: hinzugefügt label_modified: geändert @@ -649,8 +652,8 @@ label_sort_lower: Eins tiefer label_sort_lowest: Ans Ende label_roadmap: Roadmap - label_roadmap_due_in: "Fällig in {{value}}" - label_roadmap_overdue: "{{value}} verspätet" + label_roadmap_due_in: "Fällig in %{value}" + label_roadmap_overdue: "%{value} verspätet" label_roadmap_no_issues: Keine Tickets für diese Version label_search: Suche label_result_plural: Resultate @@ -669,8 +672,8 @@ label_issue_tracking: Tickets label_spent_time: Aufgewendete Zeit label_overall_spent_time: Aufgewendete Zeit aller Projekte anzeigen - label_f_hour: "{{value}} Stunde" - label_f_hour_plural: "{{value}} Stunden" + label_f_hour: "%{value} Stunde" + label_f_hour_plural: "%{value} Stunden" label_time_tracking: Zeiterfassung label_change_plural: Änderungen label_statistics: Statistiken @@ -721,15 +724,15 @@ label_date_from: Von label_date_to: Bis label_language_based: Sprachabhängig - label_sort_by: "Sortiert nach {{value}}" + label_sort_by: "Sortiert nach %{value}" label_send_test_email: Test-E-Mail senden label_feeds_access_key: RSS-Zugriffsschlüssel label_missing_feeds_access_key: Der RSS-Zugriffsschlüssel fehlt. - label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor {{value}} erstellt" + label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor %{value} erstellt" label_module_plural: Module - label_added_time_by: "Von {{author}} vor {{age}} hinzugefügt" - label_updated_time_by: "Von {{author}} vor {{age}} aktualisiert" - label_updated_time: "Vor {{value}} aktualisiert" + label_added_time_by: "Von %{author} vor %{age} hinzugefügt" + label_updated_time_by: "Von %{author} vor %{age} aktualisiert" + label_updated_time: "Vor %{value} aktualisiert" label_jump_to_a_project: Zu einem Projekt springen... label_file_plural: Dateien label_changeset_plural: Changesets @@ -745,7 +748,7 @@ label_registration_activation_by_email: Kontoaktivierung durch E-Mail label_registration_manual_activation: Manuelle Kontoaktivierung label_registration_automatic_activation: Automatische Kontoaktivierung - label_display_per_page: "Pro Seite: {{value}}" + label_display_per_page: "Pro Seite: %{value}" label_age: Geändert vor label_change_properties: Eigenschaften ändern label_general: Allgemein @@ -768,7 +771,7 @@ label_sort: Sortierung label_ascending: Aufsteigend label_descending: Absteigend - label_date_from_to: von {{start}} bis {{end}} + label_date_from_to: von %{start} bis %{end} label_wiki_content_added: Die Wiki-Seite wurde erfolgreich hinzugefügt. label_wiki_content_updated: Die Wiki-Seite wurde erfolgreich aktualisiert. label_group: Gruppe @@ -787,7 +790,7 @@ label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden label_api_access_key: API-Zugriffsschlüssel label_missing_api_access_key: Der API-Zugriffsschlüssel fehlt. - label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor {{value}} erstellt + label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor %{value} erstellt label_profile: Profil label_subtask_plural: Unteraufgaben label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts. @@ -804,7 +807,7 @@ button_create_and_continue: Anlegen und weiter button_test: Testen button_edit: Bearbeiten - button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: {{page_title}}" + button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: %{page_title}" button_add: Hinzufügen button_change: Wechseln button_apply: Anwenden @@ -853,53 +856,54 @@ text_regexp_info: z. B. ^[A-Z0-9]+$ text_min_max_length_info: 0 heißt keine Beschränkung text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt löschen wollen? - text_subprojects_destroy_warning: "Dessen Unterprojekte ({{value}}) werden ebenfalls gelöscht." + text_subprojects_destroy_warning: "Dessen Unterprojekte (%{value}) werden ebenfalls gelöscht." text_workflow_edit: Workflow zum Bearbeiten auswählen text_are_you_sure: Sind Sie sicher? - text_journal_changed: "{{label}} wurde von {{old}} zu {{new}} geändert" - text_journal_set_to: "{{label}} wurde auf {{value}} gesetzt" - text_journal_deleted: "{{label}} {{old}} wurde gelöscht" - text_journal_added: "{{label}} {{value}} wurde hinzugefügt" + text_are_you_sure_with_children: "Lösche Aufgabe und alle Unteraufgaben?" + text_journal_changed: "%{label} wurde von %{old} zu %{new} geändert" + text_journal_set_to: "%{label} wurde auf %{value} gesetzt" + text_journal_deleted: "%{label} %{old} wurde gelöscht" + text_journal_added: "%{label} %{value} wurde hinzugefügt" text_tip_issue_begin_day: Aufgabe, die an diesem Tag beginnt text_tip_issue_end_day: Aufgabe, die an diesem Tag endet text_tip_issue_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern und Bindestriche erlaubt.
    Einmal gespeichert, kann die Kennung nicht mehr geändert werden.' - text_caracters_maximum: "Max. {{count}} Zeichen." - text_caracters_minimum: "Muss mindestens {{count}} Zeichen lang sein." - text_length_between: "Länge zwischen {{min}} und {{max}} Zeichen." + text_caracters_maximum: "Max. %{count} Zeichen." + text_caracters_minimum: "Muss mindestens %{count} Zeichen lang sein." + text_length_between: "Länge zwischen %{min} und %{max} Zeichen." text_tracker_no_workflow: Kein Workflow für diesen Tracker definiert. text_unallowed_characters: Nicht erlaubte Zeichen text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt). text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert). text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen - text_issue_added: "Ticket {{id}} wurde erstellt von {{author}}." - text_issue_updated: "Ticket {{id}} wurde aktualisiert von {{author}}." + text_issue_added: "Ticket %{id} wurde erstellt von %{author}." + text_issue_updated: "Ticket %{id} wurde aktualisiert von %{author}." text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sämtlichem Inhalt löschen möchten? - text_issue_category_destroy_question: "Einige Tickets ({{count}}) sind dieser Kategorie zugeodnet. Was möchten Sie tun?" + text_issue_category_destroy_question: "Einige Tickets (%{count}) sind dieser Kategorie zugeodnet. Was möchten Sie tun?" text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen text_user_mail_option: "Für nicht ausgewählte Projekte werden Sie nur Benachrichtigungen für Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)." text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, können Sie sie abändern." text_load_default_configuration: Standard-Konfiguration laden - text_status_changed_by_changeset: "Status geändert durch Changeset {{value}}." + text_status_changed_by_changeset: "Status geändert durch Changeset %{value}." text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewählten Tickets löschen möchten?' text_select_project_modules: 'Bitte wählen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:' text_default_administrator_account_changed: Administrator-Kennwort geändert text_file_repository_writable: Verzeichnis für Dateien beschreibbar text_plugin_assets_writable: Verzeichnis für Plugin-Assets beschreibbar text_rmagick_available: RMagick verfügbar (optional) - text_destroy_time_entries_question: Es wurden bereits {{hours}} Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? + text_destroy_time_entries_question: Es wurden bereits %{hours} Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? text_destroy_time_entries: Gebuchte Aufwände löschen text_assign_time_entries_to_project: Gebuchte Aufwände dem Projekt zuweisen text_reassign_time_entries: 'Gebuchte Aufwände diesem Ticket zuweisen:' - text_user_wrote: "{{value}} schrieb:" - text_enumeration_destroy_question: "{{count}} Objekt(e) sind diesem Wert zugeordnet." + text_user_wrote: "%{value} schrieb:" + text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet." text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:' - text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu." + text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu." text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.' text_custom_field_possible_values_info: 'Eine Zeile pro Wert' - text_wiki_page_destroy_question: "Diese Seite hat {{descendants}} Unterseite(n). Was möchten Sie tun?" + text_wiki_page_destroy_question: "Diese Seite hat %{descendants} Unterseite(n). Was möchten Sie tun?" text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene text_wiki_page_destroy_children: Lösche alle Unterseiten text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu @@ -934,16 +938,23 @@ enumeration_activities: Aktivitäten (Zeiterfassung) enumeration_system_activity: System-Aktivität - 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_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - field_start_date: Start date - field_visible: Visible - setting_emails_header: Emails header + field_text: Textfeld + label_user_mail_option_only_owner: Nur für Aufgaben die ich angelegt habe + setting_default_notification_option: Standard Benachrichtigungsoptionen + label_user_mail_option_only_my_events: Nur für Aufgaben die ich beobachte oder an welchen ich mitarbeite + label_user_mail_option_only_assigned: Nur für Aufgaben für die ich zuständig bin. + notice_not_authorized_archived_project: Das Projekt wurde archiviert und ist daher nicht nicht verfügbar. + label_user_mail_option_none: keine Ereignisse + field_member_of_group: Zuständigkeitsgruppe + field_assigned_to_role: Zuständigkeitsrolle + field_visible: Sichtbar + setting_emails_header: Emailkopf + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/el.yml --- a/config/locales/el.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/el.yml Thu Mar 03 12:11:53 2011 +0000 @@ -35,37 +35,37 @@ half_a_minute: "μισό λεπτό" less_than_x_seconds: one: "λιγότεÏο από 1 δευτεÏόλεπτο" - other: "λιγότεÏο από {{count}} δευτεÏόλεπτα" + other: "λιγότεÏο από %{count} δευτεÏόλεπτα" x_seconds: one: "1 δευτεÏόλεπτο" - other: "{{count}} δευτεÏόλεπτα" + other: "%{count} δευτεÏόλεπτα" less_than_x_minutes: one: "λιγότεÏο από ένα λεπτό" - other: "λιγότεÏο από {{count}} λεπτά" + other: "λιγότεÏο από %{count} λεπτά" x_minutes: one: "1 λεπτό" - other: "{{count}} λεπτά" + other: "%{count} λεπτά" about_x_hours: one: "πεÏίπου 1 ÏŽÏα" - other: "πεÏίπου {{count}} ÏŽÏες" + other: "πεÏίπου %{count} ÏŽÏες" x_days: one: "1 ημέÏα" - other: "{{count}} ημέÏες" + other: "%{count} ημέÏες" about_x_months: one: "πεÏίπου 1 μήνα" - other: "πεÏίπου {{count}} μήνες" + other: "πεÏίπου %{count} μήνες" x_months: one: "1 μήνα" - other: "{{count}} μήνες" + other: "%{count} μήνες" about_x_years: one: "πεÏίπου 1 χÏόνο" - other: "πεÏίπου {{count}} χÏόνια" + other: "πεÏίπου %{count} χÏόνια" over_x_years: one: "πάνω από 1 χÏόνο" - other: "πάνω από {{count}} χÏόνια" + other: "πάνω από %{count} χÏόνια" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -95,6 +95,10 @@ 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: "έχει κατοχυÏωθεί" @@ -103,17 +107,17 @@ accepted: "Ï€Ïέπει να γίνει αποδοχή" empty: "δε μποÏεί να είναι άδειο" blank: "δε μποÏεί να είναι κενό" - too_long: "έχει πολλοÏÏ‚ (μέγ.επιτÏ. {{count}} χαÏακτήÏες)" - too_short: "έχει λίγους (ελάχ.επιτÏ. {{count}} χαÏακτήÏες)" - wrong_length: "δεν είναι σωστός ο αÏιθμός χαÏακτήÏων (Ï€Ïέπει να έχει {{count}} χαÏακτήÏες)" + 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}}" + 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: "Ï€Ïέπει να είναι αÏγότεÏα από την ημεÏομηνία έναÏξης" @@ -150,42 +154,42 @@ notice_file_not_found: Η σελίδα που ζητήσατε δεν υπάÏχει ή έχει αφαιÏεθεί. notice_locking_conflict: Τα δεδομένα έχουν ενημεÏωθεί από άλλο χÏήστη. notice_not_authorized: Δεν έχετε δικαίωμα Ï€Ïόσβασης σε αυτή τη σελίδα. - notice_email_sent: "Ένα μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου εστάλη στο {{value}}" - notice_email_error: "Σφάλμα κατά την αποστολή του μηνÏματος στο ({{value}})" + notice_email_sent: "Ένα μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου εστάλη στο %{value}" + notice_email_error: "Σφάλμα κατά την αποστολή του μηνÏματος στο (%{value})" notice_feeds_access_key_reseted: Έγινε επαναφοÏά στο κλειδί Ï€Ïόσβασης RSS. - notice_failed_to_save_issues: "Αποτυχία αποθήκευσης {{count}} θεμα(των) από τα {{total}} επιλεγμένα: {{ids}}." + notice_failed_to_save_issues: "Αποτυχία αποθήκευσης %{count} θεμα(των) από τα %{total} επιλεγμένα: %{ids}." notice_no_issue_selected: "Κανένα θέμα δεν είναι επιλεγμένο! ΠαÏακαλοÏμε, ελέγξτε τα θέματα που θέλετε να επεξεÏγαστείτε." notice_account_pending: "Ο λογαÏιασμός σας έχει δημιουÏγηθεί και είναι σε στάδιο έγκÏισης από τον διαχειÏιστή." notice_default_data_loaded: Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις φοÏτώθηκαν επιτυχώς. notice_unable_delete_version: ΑδÏνατον να διαγÏαφεί η έκδοση. - error_can_t_load_default_data: "Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις δεν μπόÏεσαν να φοÏτωθοÏν:: {{value}}" + error_can_t_load_default_data: "Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις δεν μπόÏεσαν να φοÏτωθοÏν:: %{value}" error_scm_not_found: "Η εγγÏαφή ή η αναθεώÏηση δεν βÏέθηκε στο αποθετήÏιο." - error_scm_command_failed: "ΠαÏουσιάστηκε σφάλμα κατά την Ï€Ïοσπάθεια Ï€Ïόσβασης στο αποθετήÏιο: {{value}}" + error_scm_command_failed: "ΠαÏουσιάστηκε σφάλμα κατά την Ï€Ïοσπάθεια Ï€Ïόσβασης στο αποθετήÏιο: %{value}" error_scm_annotate: "Η καταχώÏιση δεν υπάÏχει ή δεν μποÏεί να σχολιαστεί." error_issue_not_found_in_project: 'Το θέμα δεν βÏέθηκε ή δεν ανήκει σε αυτό το έÏγο' error_no_tracker_in_project: 'Δεν υπάÏχει ανιχνευτής για αυτό το έÏγο. ΠαÏακαλώ ελέγξτε τις Ïυθμίσεις του έÏγου.' error_no_default_issue_status: 'Δεν έχει οÏιστεί η Ï€Ïοεπιλογή κατάστασης θεμάτων. ΠαÏακαλώ ελέγξτε τις Ïυθμίσεις σας (Μεταβείτε στην "ΔιαχείÏιση -> Κατάσταση θεμάτων").' - warning_attachments_not_saved: "{{count}} αÏχείο(α) δε μποÏοÏν να αποθηκευτοÏν." + warning_attachments_not_saved: "%{count} αÏχείο(α) δε μποÏοÏν να αποθηκευτοÏν." - mail_subject_lost_password: "Ο κωδικός σας {{value}}" + mail_subject_lost_password: "Ο κωδικός σας %{value}" mail_body_lost_password: 'Για να αλλάξετε τον κωδικό Ï€Ïόσβασης, πατήστε τον ακόλουθο σÏνδεσμο:' - mail_subject_register: "ΕνεÏγοποίηση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï‡Ïήστη {{value}} " + mail_subject_register: "ΕνεÏγοποίηση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï‡Ïήστη %{value} " mail_body_register: 'Για να ενεÏγοποιήσετε το λογαÏιασμό σας, επιλέξτε τον ακόλουθο σÏνδεσμο:' - mail_body_account_information_external: "ΜποÏείτε να χÏησιμοποιήσετε τον λογαÏιασμό {{value}} για να συνδεθείτε." + 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: "'Ï€Ïοστέθηκε η σελίδα wiki {{id}}' " - mail_body_wiki_content_added: "Η σελίδα wiki '{{id}}' Ï€Ïοστέθηκε από τον {{author}}." - mail_subject_wiki_content_updated: "'ενημεÏώθηκε η σελίδα wiki {{id}}' " - mail_body_wiki_content_updated: "Η σελίδα wiki '{{id}}' ενημεÏώθηκε από τον {{author}}." + 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: "'Ï€Ïοστέθηκε η σελίδα wiki %{id}' " + mail_body_wiki_content_added: "Η σελίδα wiki '%{id}' Ï€Ïοστέθηκε από τον %{author}." + mail_subject_wiki_content_updated: "'ενημεÏώθηκε η σελίδα wiki %{id}' " + mail_body_wiki_content_updated: "Η σελίδα wiki '%{id}' ενημεÏώθηκε από τον %{author}." gui_validation_error: 1 σφάλμα - gui_validation_error_plural: "{{count}} σφάλματα" + gui_validation_error_plural: "%{count} σφάλματα" field_name: Όνομα field_description: ΠεÏιγÏαφή @@ -247,6 +251,7 @@ field_attr_lastname: Ιδιότητα επωνÏμου field_attr_mail: Ιδιότητα email field_onthefly: Άμεση δημιουÏγία χÏήστη + field_start_date: Εκκίνηση field_done_ratio: % επιτεÏχθη field_auth_source: ΤÏόπος πιστοποίησης field_hide_mail: ΑπόκÏυψη διεÏθυνσης email @@ -389,14 +394,14 @@ label_x_projects: zero: κανένα έÏγο one: 1 έÏγο - other: "{{count}} έÏγα" + 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_issues_by: "Θέματα του %{value}" label_issue_added: Το θέμα Ï€Ïοστέθηκε label_issue_updated: Το θέμα ενημεÏώθηκε label_document: ΈγγÏαφο @@ -446,7 +451,7 @@ label_registered_on: ΕγγÏάφηκε την label_activity: ΔÏαστηÏιότητα label_overall_activity: Συνολική δÏαστηÏιότητα - label_user_activity: "δÏαστηÏιότητα του {{value}}" + label_user_activity: "δÏαστηÏιότητα του %{value}" label_new: Îέο label_logged_as: ΣÏνδεδεμένος ως label_environment: ΠεÏιβάλλον @@ -455,7 +460,7 @@ label_auth_source_new: Îέος Ï„Ïόπος πιστοποίησης label_auth_source_plural: ΤÏόποι πιστοποίησης label_subproject_plural: ΕπιμέÏους έÏγα - label_and_its_subprojects: "{{value}} και τα επιμέÏους έÏγα του" + label_and_its_subprojects: "%{value} και τα επιμέÏους έÏγα του" label_min_max_length: Ελάχ. - Μέγ. μήκος label_list: Λίστα label_date: ΗμεÏομηνία @@ -466,8 +471,8 @@ label_text: ΜακÏοσκελές κείμενο label_attribute: Ιδιότητα label_attribute_plural: Ιδιότητες - label_download: "{{count}} ΜεταφόÏτωση" - label_download_plural: "{{count}} ΜεταφοÏτώσεις" + label_download: "%{count} ΜεταφόÏτωση" + label_download_plural: "%{count} ΜεταφοÏτώσεις" label_no_data: Δεν υπάÏχουν δεδομένα label_change_status: Αλλαγή κατάστασης label_history: ΙστοÏικό @@ -498,17 +503,17 @@ label_closed_issues: Κλειστό label_closed_issues_plural: Κλειστά label_x_open_issues_abbr_on_total: - zero: 0 ανοικτά / {{total}} - one: 1 ανοικτό / {{total}} - other: "{{count}} ανοικτά / {{total}}" + zero: 0 ανοικτά / %{total} + one: 1 ανοικτό / %{total} + other: "%{count} ανοικτά / %{total}" label_x_open_issues_abbr: zero: 0 ανοικτά one: 1 ανοικτό - other: "{{count}} ανοικτά" + other: "%{count} ανοικτά" label_x_closed_issues_abbr: zero: 0 κλειστά one: 1 κλειστό - other: "{{count}} κλειστά" + other: "%{count} κλειστά" label_total: ΣÏνολο label_permissions: Άδειες label_current_status: ΤÏέχουσα κατάσταση @@ -526,7 +531,7 @@ label_months_from: μηνών από label_gantt: Gantt label_internal: ΕσωτεÏικό - label_last_changes: "Τελευταίες {{count}} αλλαγές" + label_last_changes: "Τελευταίες %{count} αλλαγές" label_change_view_all: ΠÏοβολή όλων των αλλαγών label_personalize_page: ΠÏοσαÏμογή σελίδας label_comment: Σχόλιο @@ -534,7 +539,7 @@ label_x_comments: zero: δεν υπάÏχουν σχόλια one: 1 σχόλιο - other: "{{count}} σχόλια" + other: "%{count} σχόλια" label_comment_add: ΠÏοσθήκη σχολίου label_comment_added: Τα σχόλια Ï€Ïοστέθηκαν label_comment_delete: ΔιαγÏαφή σχολίων @@ -555,7 +560,7 @@ label_yesterday: χθες 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: αυτό το χÏόνο @@ -569,8 +574,8 @@ label_repository: ΑποθετήÏιο label_repository_plural: ΑποθετήÏια label_browse: Πλοήγηση - label_modification: "{{count}} Ï„Ïοποποίηση" - label_modification_plural: "{{count}} Ï„Ïοποποιήσεις" + label_modification: "%{count} Ï„Ïοποποίηση" + label_modification_plural: "%{count} Ï„Ïοποποιήσεις" label_branch: Branch label_tag: Tag label_revision: ΑναθεώÏηση @@ -591,8 +596,8 @@ label_sort_lower: Μετακίνηση Ï€Ïος τα κάτω label_sort_lowest: Μετακίνηση στο κατώτατο μέÏος label_roadmap: ΧάÏτης ποÏείας - label_roadmap_due_in: "ΠÏοθεσμία σε {{value}}" - label_roadmap_overdue: "{{value}} καθυστεÏημένο" + label_roadmap_due_in: "ΠÏοθεσμία σε %{value}" + label_roadmap_overdue: "%{value} καθυστεÏημένο" label_roadmap_no_issues: Δεν υπάÏχουν θέματα για αυτή την έκδοση label_search: Αναζήτηση label_result_plural: Αποτελέσματα @@ -610,8 +615,8 @@ label_changes_details: ΛεπτομέÏειες όλων των αλλαγών label_issue_tracking: Ανίχνευση θεμάτων label_spent_time: Δαπανημένος χÏόνος - label_f_hour: "{{value}} ÏŽÏα" - label_f_hour_plural: "{{value}} ÏŽÏες" + label_f_hour: "%{value} ÏŽÏα" + label_f_hour_plural: "%{value} ÏŽÏες" label_time_tracking: Ανίχνευση χÏόνου label_change_plural: Αλλαγές label_statistics: Στατιστικά @@ -660,13 +665,13 @@ label_date_from: Από label_date_to: Έως label_language_based: Με βάση τη γλώσσα του χÏήστη - label_sort_by: "Ταξινόμηση ανά {{value}}" + label_sort_by: "Ταξινόμηση ανά %{value}" label_send_test_email: Αποστολή Î´Î¿ÎºÎ¹Î¼Î±ÏƒÏ„Î¹ÎºÎ¿Ï email - label_feeds_access_key_created_on: "το κλειδί Ï€Ïόσβασης RSS δημιουÏγήθηκε Ï€Ïιν από {{value}}" + 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_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 @@ -682,7 +687,7 @@ label_registration_activation_by_email: ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼Îµ email label_registration_manual_activation: χειÏοκίνητη ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï label_registration_automatic_activation: αυτόματη ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï - label_display_per_page: "Ανά σελίδα: {{value}}" + label_display_per_page: "Ανά σελίδα: %{value}" label_age: Ηλικία label_change_properties: Αλλαγή ιδιοτήτων label_general: Γενικά @@ -705,7 +710,7 @@ label_sort: Ταξινόμηση label_ascending: ΑÏξουσα label_descending: Φθίνουσα - label_date_from_to: Από {{start}} έως {{end}} + label_date_from_to: Από %{start} έως %{end} label_wiki_content_added: Η σελίδα Wiki Ï€Ïοστέθηκε label_wiki_content_updated: Η σελίδα Wiki ενημεÏώθηκε @@ -757,48 +762,48 @@ text_regexp_info: eg. ^[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_tip_issue_begin_day: καθήκοντα που ξεκινάνε σήμεÏα text_tip_issue_end_day: καθήκοντα που τελειώνουν σήμεÏα text_tip_issue_begin_end_day: καθήκοντα που ξεκινάνε και τελειώνουν σήμεÏα text_project_identifier_info: 'ΕπιτÏέπονται μόνο μικÏά πεζά γÏάμματα (a-z), αÏιθμοί και παÏλες.
    Μετά την αποθήκευση, το αναγνωÏιστικό δεν μποÏεί να αλλάξει.' - text_caracters_maximum: "μέγιστος αÏιθμός {{count}} χαÏακτήÏες." - text_caracters_minimum: "ΠÏέπει να πεÏιέχει τουλάχιστον {{count}} χαÏακτήÏες." - text_length_between: "Μήκος Î¼ÎµÏ„Î±Î¾Ï {{min}} και {{max}} χαÏακτήÏες." + text_caracters_maximum: "μέγιστος αÏιθμός %{count} χαÏακτήÏες." + text_caracters_minimum: "ΠÏέπει να πεÏιέχει τουλάχιστον %{count} χαÏακτήÏες." + text_length_between: "Μήκος Î¼ÎµÏ„Î±Î¾Ï %{min} και %{max} χαÏακτήÏες." text_tracker_no_workflow: Δεν έχει οÏιστεί Ïοή εÏγασίας για αυτό τον ανιχνευτή text_unallowed_characters: Μη επιτÏεπόμενοι χαÏακτήÏες text_comma_separated: ΕπιτÏέπονται πολλαπλές τιμές (χωÏισμένες με κόμμα). text_issues_ref_in_commit_messages: ΑναφοÏά και καθοÏισμός θεμάτων σε μηνÏματα commit - text_issue_added: "Το θέμα {{id}} παÏουσιάστηκε από τον {{author}}." - text_issue_updated: "Το θέμα {{id}} ενημεÏώθηκε από τον {{author}}." + text_issue_added: "Το θέμα %{id} παÏουσιάστηκε από τον %{author}." + text_issue_updated: "Το θέμα %{id} ενημεÏώθηκε από τον %{author}." text_wiki_destroy_confirmation: Είστε σίγουÏοι ότι θέλετε να διαγÏάψετε αυτό το wiki και όλο το πεÏιεχόμενο του ; - text_issue_category_destroy_question: "Κάποια θέματα ({{count}}) έχουν εκχωÏηθεί σε αυτή την κατηγοÏία. Τι θέλετε να κάνετε ;" + 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: "ΕφαÏμόστηκε στο changeset {{value}}." + text_status_changed_by_changeset: "ΕφαÏμόστηκε στο changeset %{value}." text_issues_destroy_confirmation: 'Είστε σίγουÏος ότι θέλετε να διαγÏάψετε το επιλεγμένο θέμα(τα);' text_select_project_modules: 'Επιλέξτε ποιες μονάδες θα ενεÏγοποιήσετε για αυτό το έÏγο:' text_default_administrator_account_changed: Ο Ï€ÏοκαθοÏισμένος λογαÏιασμός του διαχειÏιστή άλλαξε text_file_repository_writable: ΕγγÏάψιμος κατάλογος συνημμένων text_plugin_assets_writable: ΕγγÏάψιμος κατάλογος plugin assets text_rmagick_available: Διαθέσιμο RMagick (Ï€ÏοαιÏετικό) - text_destroy_time_entries_question: "{{hours}} δαπανήθηκαν σχετικά με τα θέματα που Ï€Ïόκειται να διαγÏάψετε. Τι θέλετε να κάνετε ;" + 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_user_wrote: "%{value} έγÏαψε:" + text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή." text_enumeration_category_reassign_to: 'ΕπανεκχώÏηση τους στην παÏοÏσα αξία:' - text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/email.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." + text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/configuration.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." text_repository_usernames_mapping: "Επιλέξτε ή ενημεÏώστε τον χÏήστη Redmine που αντιστοιχεί σε κάθε όνομα χÏήστη στο ιστοÏικό του αποθετηÏίου.\nΧÏήστες με το ίδιο όνομα χÏήστη ή email στο Redmine και στο αποθετηÏίο αντιστοιχίζονται αυτόματα." text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπεÏβαίνει το μέγιστο μέγεθος που μποÏεί να Ï€Ïοβληθεί.' text_custom_field_possible_values_info: 'Μία γÏαμμή για κάθε τιμή' - text_wiki_page_destroy_question: "Αυτή η σελίδα έχει {{descendants}} σελίδες τέκνων και απογόνων. Τι θέλετε να κάνετε ;" + text_wiki_page_destroy_question: "Αυτή η σελίδα έχει %{descendants} σελίδες τέκνων και απογόνων. Τι θέλετε να κάνετε ;" text_wiki_page_nullify_children: "ΔιατηÏήστε τις σελίδες τέκνων ως σελίδες root" text_wiki_page_destroy_children: "ΔιαγÏάψτε όλες τις σελίδες τέκνων και των απογόνων τους" text_wiki_page_reassign_children: "ΕπανεκχώÏιση των σελίδων τέκνων στη γονική σελίδα" @@ -828,14 +833,14 @@ enumeration_issue_priorities: ΠÏοτεÏαιότητα θέματος enumeration_doc_categories: ΚατηγοÏία εγγÏάφων enumeration_activities: ΔÏαστηÏιότητες (κατακεÏματισμός χÏόνου) - text_journal_changed: "{{label}} άλλαξε από {{old}} σε {{new}}" - text_journal_set_to: "{{label}} οÏίζεται σε {{value}}" - text_journal_deleted: "{{label}} διαγÏάφηκε ({{old}})" + text_journal_changed: "%{label} άλλαξε από %{old} σε %{new}" + text_journal_set_to: "%{label} οÏίζεται σε %{value}" + text_journal_deleted: "%{label} διαγÏάφηκε (%{old})" label_group_plural: Ομάδες label_group: Ομάδα label_group_new: Îέα ομάδα label_time_entry_plural: ΧÏόνος που δαπανήθηκε - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -870,9 +875,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -899,12 +904,12 @@ 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_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}}." + 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. @@ -912,7 +917,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -923,8 +928,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/en-GB.yml --- a/config/locales/en-GB.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/en-GB.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,961 +1,970 @@ -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: - 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: 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_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_tipoftheday_text: Tip of the Day - setting_notifications_text: Notifications - 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_home_heading: Welcome! - 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.
    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_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/email.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 +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" + + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/en.yml --- a/config/locales/en.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/en.yml Thu Mar 03 12:11:53 2011 +0000 @@ -33,37 +33,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: # Default format for numbers @@ -94,6 +94,10 @@ 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" @@ -102,17 +106,17 @@ 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)" + 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}}" + 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" @@ -151,22 +155,23 @@ notice_locking_conflict: Data has been updated by another user. notice_not_authorized: You are not authorized 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_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_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_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_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.' @@ -180,29 +185,27 @@ 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." + 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_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_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_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}}." + 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 + gui_validation_error_plural: "%{count} errors" + institution: Institution field_other_institution: '' @@ -211,8 +214,8 @@ field_description: Description field_summary: Summary field_is_required: Required - field_firstname: First name - field_lastname: Last name + field_firstname: Firstname + field_lastname: Lastname field_mail: Email field_filename: File field_filesize: Size @@ -305,12 +308,10 @@ 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_tipoftheday_text: Tip of the Day - setting_notifications_text: Notifications field_terms_and_conditions: 'Terms and Conditions:' accept_terms_and_conditions: 'I have read and agree with the ' - label_ssamr_description: Research description setting_app_title: Application title setting_app_subtitle: Application subtitle setting_welcome_text: Welcome text @@ -366,6 +367,9 @@ 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 @@ -449,7 +453,7 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: All Projects label_project_latest: Latest projects label_managers: Managed by @@ -457,7 +461,7 @@ label_issue_new: New issue label_issue_plural: Issues label_issue_view_all: View all issues - label_issues_by: "Issues by {{value}}" + label_issues_by: "Issues by %{value}" label_issue_added: Issue added label_issue_updated: Issue updated label_document: Document @@ -493,7 +497,6 @@ label_login_with_open_id_option: or login with OpenID label_password_lost: Lost password label_home: Home - label_home_heading: Welcome! label_my_page: My page label_my_account: My account label_my_projects: My projects @@ -508,7 +511,7 @@ label_registered_on: Registered on label_activity: Activity label_overall_activity: Overall activity - label_user_activity: "{{value}}'s activity" + label_user_activity: "%{value}'s activity" label_new: New label_logged_as: Logged in as label_environment: Environment @@ -518,7 +521,7 @@ label_auth_source_plural: Authentication modes label_subproject_plural: Subprojects label_subproject_new: New subproject - label_and_its_subprojects: "{{value}} and its subprojects" + label_and_its_subprojects: "%{value} and its subprojects" label_min_max_length: Min - Max length label_list: List label_date: Date @@ -529,8 +532,8 @@ label_text: Long text label_attribute: Attribute label_attribute_plural: Attributes - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: No data to display label_change_status: Change status label_history: History @@ -562,17 +565,17 @@ 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}}" + 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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Total label_permissions: Permissions label_current_status: Current status @@ -590,7 +593,7 @@ label_months_from: months from label_gantt: Gantt label_internal: Internal - label_last_changes: "last {{count}} changes" + label_last_changes: "last %{count} changes" label_change_view_all: View all changes label_personalize_page: Personalize this page label_comment: Comment @@ -598,13 +601,14 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + 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 @@ -619,7 +623,7 @@ label_yesterday: yesterday label_this_week: this week label_last_week: last week - label_last_n_days: "last {{count}} days" + label_last_n_days: "last %{count} days" label_this_month: this month label_last_month: last month label_this_year: this year @@ -633,13 +637,13 @@ label_repository: Repository label_repository_plural: Repositories label_browse: Browse - label_modification: "{{count}} change" - label_modification_plural: "{{count}} changes" + 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_revision_id: "Revision %{value}" label_associated_revisions: Associated revisions label_added: added label_modified: modified @@ -656,8 +660,8 @@ 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_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 @@ -676,8 +680,8 @@ 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_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" label_time_tracking: Time tracking label_change_plural: Changes label_statistics: Statistics @@ -728,15 +732,15 @@ label_date_from: From label_date_to: To label_language_based: Based on user's language - label_sort_by: "Sort by {{value}}" + 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_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_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 @@ -756,7 +760,7 @@ 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_display_per_page: "Per page: %{value}" label_age: Age label_change_properties: Change properties label_general: General @@ -779,7 +783,7 @@ label_sort: Sort label_ascending: Ascending label_descending: Descending - label_date_from_to: From {{start}} to {{end}} + 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 @@ -798,7 +802,7 @@ 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_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 @@ -815,7 +819,7 @@ button_create_and_continue: Create and continue button_test: Test button_edit: Edit - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" button_add: Add button_change: Change button_apply: Apply @@ -864,65 +868,64 @@ 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_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_set_to: "{{label}} set to {{value}}" - text_journal_deleted: "{{label}} deleted ({{old}})" - text_journal_added: "{{label}} {{value}} added" + 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: 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.
    This will be used in all project-related URLs, and as the repository name. Once saved, the identifier can not be changed.' - 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_project_homepage_info: 'Link to an external project page.' + 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_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_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_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_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_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_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_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/email.yml and restart the application to enable them." + 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_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." 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. default_role_manager: Manager diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/es.yml --- a/config/locales/es.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/es.yml Thu Mar 03 12:11:53 2011 +0000 @@ -66,44 +66,44 @@ half_a_minute: "medio minuto" less_than_x_seconds: one: "menos de 1 segundo" - other: "menos de {{count}} segundos" + other: "menos de %{count} segundos" x_seconds: one: "1 segundo" - other: "{{count}} segundos" + other: "%{count} segundos" less_than_x_minutes: one: "menos de 1 minuto" - other: "menos de {{count}} minutos" + other: "menos de %{count} minutos" x_minutes: one: "1 minuto" - other: "{{count}} minutos" + other: "%{count} minutos" about_x_hours: one: "alrededor de 1 hora" - other: "alrededor de {{count}} horas" + other: "alrededor de %{count} horas" x_days: one: "1 día" - other: "{{count}} días" + other: "%{count} días" about_x_months: one: "alrededor de 1 mes" - other: "alrededor de {{count}} meses" + other: "alrededor de %{count} meses" x_months: one: "1 mes" - other: "{{count}} meses" + other: "%{count} meses" about_x_years: one: "alrededor de 1 año" - other: "alrededor de {{count}} años" + other: "alrededor de %{count} años" over_x_years: one: "más de 1 año" - other: "más de {{count}} años" + other: "más de %{count} años" almost_x_years: one: "casi 1 año" - other: "casi {{count}} años" + other: "casi %{count} años" activerecord: errors: template: header: - one: "no se pudo guardar este {{model}} porque se encontró 1 error" - other: "no se pudo guardar este {{model}} porque se encontraron {{count}} errores" + one: "no se pudo guardar este %{model} porque se encontró 1 error" + other: "no se pudo guardar este %{model} porque se encontraron %{count} errores" # The variable :count is also available body: "Se encontraron problemas con los siguientes campos:" @@ -117,16 +117,16 @@ accepted: "debe ser aceptado" empty: "no puede estar vacío" blank: "no puede estar en blanco" - too_long: "es demasiado largo ({{count}} caracteres máximo)" - too_short: "es demasiado corto ({{count}} caracteres mínimo)" - wrong_length: "no tiene la longitud correcta ({{count}} caracteres exactos)" + too_long: "es demasiado largo (%{count} caracteres máximo)" + too_short: "es demasiado corto (%{count} caracteres mínimo)" + wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" taken: "ya está en uso" not_a_number: "no es un número" - greater_than: "debe ser mayor que {{count}}" - greater_than_or_equal_to: "debe ser mayor que o igual a {{count}}" - equal_to: "debe ser igual a {{count}}" - less_than: "debe ser menor que {{count}}" - less_than_or_equal_to: "debe ser menor que o igual a {{count}}" + greater_than: "debe ser mayor que %{count}" + greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" + equal_to: "debe ser igual a %{count}" + less_than: "debe ser menor que %{count}" + less_than_or_equal_to: "debe ser menor que o igual a %{count}" odd: "debe ser impar" even: "debe ser par" greater_than_start_date: "debe ser posterior a la fecha de comienzo" @@ -239,10 +239,10 @@ enumeration_activities: Actividades (tiempo dedicado) enumeration_doc_categories: Categorías del documento enumeration_issue_priorities: Prioridad de las peticiones - error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: {{value}}" + error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %{value}" error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto' error_scm_annotate: "No existe la entrada o no ha podido ser anotada" - error_scm_command_failed: "Se produjo un error al acceder al repositorio: {{value}}" + error_scm_command_failed: "Se produjo un error al acceder al repositorio: %{value}" error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio." field_account: Cuenta field_activity: Actividad @@ -313,6 +313,7 @@ field_role: Perfil field_searchable: Incluir en las búsquedas field_spent_on: Fecha + field_start_date: Fecha de inicio field_start_page: Página principal field_status: Estado field_subject: Tema @@ -338,19 +339,19 @@ general_text_no: 'no' general_text_yes: 'sí' gui_validation_error: 1 error - gui_validation_error_plural: "{{count}} errores" + gui_validation_error_plural: "%{count} errores" label_activity: Actividad label_add_another_file: Añadir otro fichero label_add_note: Añadir una nota label_added: añadido - label_added_time_by: "Añadido por {{author}} hace {{age}}" + label_added_time_by: "Añadido por %{author} hace %{age}" label_administration: Administración label_age: Edad label_ago: hace label_all: todos label_all_time: todo el tiempo label_all_words: Todas las palabras - label_and_its_subprojects: "{{value}} y proyectos secundarios" + label_and_its_subprojects: "%{value} y proyectos secundarios" label_applied_status: Aplicar estado label_assigned_to_me_issues: Peticiones que me están asignadas label_associated_revisions: Revisiones asociadas @@ -383,17 +384,17 @@ label_closed_issues: cerrada label_closed_issues_plural: cerradas label_x_open_issues_abbr_on_total: - zero: 0 abiertas / {{total}} - one: 1 abierta / {{total}} - other: "{{count}} abiertas / {{total}}" + zero: 0 abiertas / %{total} + one: 1 abierta / %{total} + other: "%{count} abiertas / %{total}" label_x_open_issues_abbr: zero: 0 abiertas one: 1 abierta - other: "{{count}} abiertas" + other: "%{count} abiertas" label_x_closed_issues_abbr: zero: 0 cerradas one: 1 cerrada - other: "{{count}} cerradas" + other: "%{count} cerradas" label_comment: Comentario label_comment_add: Añadir un comentario label_comment_added: Comentario añadido @@ -402,7 +403,7 @@ label_x_comments: zero: sin comentarios one: 1 comentario - other: "{{count}} comentarios" + other: "%{count} comentarios" label_commits_per_author: Commits por autor label_commits_per_month: Commits por mes label_confirmation: Confirmación @@ -426,13 +427,13 @@ label_diff_inline: en línea label_diff_side_by_side: cara a cara label_disabled: deshabilitado - label_display_per_page: "Por página: {{value}}" + label_display_per_page: "Por página: %{value}" label_document: Documento label_document_added: Documento añadido label_document_new: Nuevo documento label_document_plural: Documentos - label_download: "{{count}} Descarga" - label_download_plural: "{{count}} Descargas" + label_download: "%{count} Descarga" + label_download_plural: "%{count} Descargas" label_downloads_abbr: D/L label_duplicated_by: duplicada por label_duplicates: duplicada de @@ -444,10 +445,10 @@ label_equals: igual label_example: Ejemplo label_export_to: 'Exportar a:' - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_feed_plural: Feeds - label_feeds_access_key_created_on: "Clave de acceso por RSS creada hace {{value}}" + label_feeds_access_key_created_on: "Clave de acceso por RSS creada hace %{value}" label_file_added: Fichero añadido label_file_plural: Archivos label_filter_add: Añadir el filtro @@ -485,13 +486,13 @@ label_issue_updated: Petición actualizada label_issue_view_all: Ver todas las peticiones label_issue_watchers: Seguidores - label_issues_by: "Peticiones por {{value}}" + label_issues_by: "Peticiones por %{value}" label_jump_to_a_project: Ir al proyecto... label_language_based: Basado en el idioma - label_last_changes: "últimos {{count}} cambios" + label_last_changes: "últimos %{count} cambios" label_last_login: Última conexión label_last_month: último mes - label_last_n_days: "últimos {{count}} días" + label_last_n_days: "últimos %{count} días" label_last_week: última semana label_latest_revision: Última revisión label_latest_revision_plural: Últimas revisiones @@ -512,8 +513,8 @@ label_message_plural: Mensajes label_message_posted: Mensaje añadido label_min_max_length: Longitud mín - máx - label_modification: "{{count}} modificación" - label_modification_plural: "{{count}} modificaciones" + label_modification: "%{count} modificación" + label_modification_plural: "%{count} modificaciones" label_modified: modificado label_module_plural: Módulos label_month: Mes @@ -564,7 +565,7 @@ label_x_projects: zero: sin proyectos one: 1 proyecto - other: "{{count}} proyectos" + other: "%{count} proyectos" label_public_projects: Proyectos públicos label_query: Consulta personalizada label_query_new: Nueva consulta @@ -591,9 +592,9 @@ label_revision: Revisión label_revision_plural: Revisiones label_roadmap: Planificación - label_roadmap_due_in: "Finaliza en {{value}}" + label_roadmap_due_in: "Finaliza en %{value}" label_roadmap_no_issues: No hay peticiones para esta versión - label_roadmap_overdue: "{{value}} tarde" + label_roadmap_overdue: "%{value} tarde" label_role: Perfil label_role_and_permissions: Perfiles y permisos label_role_new: Nuevo perfil @@ -605,7 +606,7 @@ label_send_test_email: Enviar un correo de prueba label_settings: Configuración label_show_completed_versions: Muestra las versiones terminadas - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_sort_higher: Subir label_sort_highest: Primero label_sort_lower: Bajar @@ -629,11 +630,11 @@ label_tracker: Tipo label_tracker_new: Nuevo tipo label_tracker_plural: Tipos de peticiones - label_updated_time: "Actualizado hace {{value}}" - label_updated_time_by: "Actualizado por {{author}} hace {{age}}" + label_updated_time: "Actualizado hace %{value}" + label_updated_time_by: "Actualizado por %{author} hace %{age}" label_used_by: Utilizado por label_user: Usuario - label_user_activity: "Actividad de {{value}}" + label_user_activity: "Actividad de %{value}" label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí" label_user_mail_option_all: "Para cualquier evento en todos mis proyectos" label_user_mail_option_selected: "Para cualquier evento de los proyectos seleccionados..." @@ -654,16 +655,16 @@ label_workflow: Flujo de trabajo label_year: Año label_yesterday: ayer - mail_body_account_activation_request: "Se ha inscrito un nuevo usuario ({{value}}). La cuenta está pendiende de aprobación:" + mail_body_account_activation_request: "Se ha inscrito un nuevo usuario (%{value}). La cuenta está pendiende de aprobación:" mail_body_account_information: Información sobre su cuenta - mail_body_account_information_external: "Puede usar su cuenta {{value}} para conectarse." + mail_body_account_information_external: "Puede usar su cuenta %{value} para conectarse." mail_body_lost_password: 'Para cambiar su contraseña, haga clic en el siguiente enlace:' mail_body_register: 'Para activar su cuenta, haga clic en el siguiente enlace:' - mail_body_reminder: "{{count}} peticion(es) asignadas a tí finalizan en los próximos {{days}} días:" - mail_subject_account_activation_request: "Petición de activación de cuenta {{value}}" - mail_subject_lost_password: "Tu contraseña del {{value}}" - mail_subject_register: "Activación de la cuenta del {{value}}" - mail_subject_reminder: "{{count}} peticion(es) finalizan en los próximos {{days}} días" + mail_body_reminder: "%{count} peticion(es) asignadas a tí finalizan en los próximos %{days} días:" + mail_subject_account_activation_request: "Petición de activación de cuenta %{value}" + mail_subject_lost_password: "Tu contraseña del %{value}" + mail_subject_register: "Activación de la cuenta del %{value}" + mail_subject_reminder: "%{count} peticion(es) finalizan en los próximos %{days} días" notice_account_activated: Su cuenta ha sido activada. Ya puede conectarse. notice_account_invalid_creditentials: Usuario o contraseña inválido. notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña. @@ -675,9 +676,9 @@ notice_account_wrong_password: Contraseña incorrecta. notice_can_t_change_password: Esta cuenta utiliza una fuente de autenticación externa. No es posible cambiar la contraseña. 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_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_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. @@ -788,25 +789,25 @@ status_registered: registrado text_are_you_sure: ¿Está seguro? text_assign_time_entries_to_project: Asignar las horas al proyecto - text_caracters_maximum: "{{count}} caracteres como máximo." - text_caracters_minimum: "{{count}} caracteres como mínimo." + text_caracters_maximum: "%{count} caracteres como máximo." + text_caracters_minimum: "%{count} caracteres como mínimo." text_comma_separated: Múltiples valores permitidos (separados por coma). text_default_administrator_account_changed: Cuenta de administrador por defecto modificada text_destroy_time_entries: Borrar las horas - text_destroy_time_entries_question: Existen {{hours}} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer? + text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer? text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' - text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios." + text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios." text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' - text_enumeration_destroy_question: "{{count}} objetos con este valor asignado." + text_enumeration_destroy_question: "%{count} objetos con este valor asignado." text_file_repository_writable: Se puede escribir en el repositorio - text_issue_added: "Petición {{id}} añadida por {{author}}." + text_issue_added: "Petición %{id} añadida por %{author}." text_issue_category_destroy_assignments: Dejar las peticiones sin categoría - text_issue_category_destroy_question: "Algunas peticiones ({{count}}) están asignadas a esta categoría. ¿Qué desea hacer?" + text_issue_category_destroy_question: "Algunas peticiones (%{count}) están asignadas a esta categoría. ¿Qué desea hacer?" text_issue_category_reassign_to: Reasignar las peticiones a la categoría - text_issue_updated: "La petición {{id}} ha sido actualizada por {{author}}." + text_issue_updated: "La petición %{id} ha sido actualizada por %{author}." text_issues_destroy_confirmation: '¿Seguro que quiere borrar las peticiones seleccionadas?' text_issues_ref_in_commit_messages: Referencia y petición de corrección en los mensajes - text_length_between: "Longitud entre {{min}} y {{max}} caracteres." + text_length_between: "Longitud entre %{min} y %{max} caracteres." text_load_default_configuration: Cargar la configuración por defecto text_min_max_length_info: 0 para ninguna restricción text_no_configuration_data: "Todavía no se han configurado perfiles, ni tipos, estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla." @@ -818,19 +819,19 @@ text_rmagick_available: RMagick disponible (opcional) text_select_mail_notifications: Seleccionar los eventos a notificar text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:' - text_status_changed_by_changeset: "Aplicado en los cambios {{value}}" - text_subprojects_destroy_warning: "Los proyectos secundarios: {{value}} también se eliminarán" + text_status_changed_by_changeset: "Aplicado en los cambios %{value}" + text_subprojects_destroy_warning: "Los proyectos secundarios: %{value} también se eliminarán" text_tip_issue_begin_day: tarea que comienza este día text_tip_issue_begin_end_day: tarea que comienza y termina este día text_tip_issue_end_day: tarea que termina este día text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tipo de petición text_unallowed_characters: Caracteres no permitidos text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, peticiones de las que usted sea autor o asignadas a usted)." - text_user_wrote: "{{value}} escribió:" + text_user_wrote: "%{value} escribió:" text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido? text_workflow_edit: Seleccionar un flujo de trabajo para actualizar text_plugin_assets_writable: Se puede escribir en el directorio público de las extensiones - warning_attachments_not_saved: "No se han podido grabar {{count}} ficheros." + warning_attachments_not_saved: "No se han podido grabar %{count} ficheros." button_create_and_continue: Crear y continuar text_custom_field_possible_values_info: 'Un valor en cada línea' label_display: Mostrar @@ -845,21 +846,21 @@ label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente - label_date_from_to: Desde {{start}} hasta {{end}} + label_date_from_to: Desde %{start} hasta %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Esta página tiene {{descendants}} página(s) hija(s) y descendiente(s). ¿Qué desea hacer? + text_wiki_page_destroy_question: Esta página tiene %{descendants} página(s) hija(s) y descendiente(s). ¿Qué desea hacer? text_wiki_page_reassign_children: Reasignar páginas hijas a esta página text_wiki_page_nullify_children: Dejar páginas hijas como páginas raíz text_wiki_page_destroy_children: Eliminar páginas hijas y todos sus descendientes setting_password_min_length: Longitud mínima de la contraseña field_group_by: Agrupar resultados por - mail_subject_wiki_content_updated: "La página wiki '{{id}}' ha sido actualizada" + mail_subject_wiki_content_updated: "La página wiki '%{id}' ha sido actualizada" label_wiki_content_added: Página wiki añadida - mail_subject_wiki_content_added: "Se ha añadido la página wiki '{{id}}'." - mail_body_wiki_content_added: "{{author}} ha añadido la página wiki '{{id}}'." + mail_subject_wiki_content_added: "Se ha añadido la página wiki '%{id}'." + mail_body_wiki_content_added: "%{author} ha añadido la página wiki '%{id}'." label_wiki_content_updated: Página wiki actualizada - mail_body_wiki_content_updated: La página wiki '{{id}}' ha sido actualizada por {{author}}. + mail_body_wiki_content_updated: La página wiki '%{id}' ha sido actualizada por %{author}. permission_add_project: Crear proyecto setting_new_project_user_role_id: Permiso asignado a un usuario no-administrador para crear proyectos label_view_all_revisions: Ver todas las revisiones @@ -867,14 +868,14 @@ label_branch: Rama error_no_tracker_in_project: Este proyecto no tiene asociados tipos de peticiones. Por favor, revise la configuración. error_no_default_issue_status: No se ha definido un estado de petición por defecto. Por favor, revise la configuración (en "Administración" -> "Estados de las peticiones"). - text_journal_changed: "{{label}} cambiado {{old}} por {{new}}" - text_journal_set_to: "{{label}} establecido a {{value}}" - text_journal_deleted: "{{label}} eliminado ({{old}})" + text_journal_changed: "%{label} cambiado %{old} por %{new}" + text_journal_set_to: "%{label} establecido a %{value}" + text_journal_deleted: "%{label} eliminado (%{old})" label_group_plural: Grupos label_group: Grupo label_group_new: Nuevo grupo label_time_entry_plural: Tiempo dedicado - text_journal_added: "Añadido {{label}} {{value}}" + text_journal_added: "Añadido %{label} %{value}" field_active: Activo enumeration_system_activity: Actividad del sistema permission_delete_issue_watchers: Borrar seguidores @@ -910,9 +911,9 @@ setting_start_of_week: Comenzar las semanas en permission_view_issues: Ver peticiones label_display_used_statuses_only: Sólo mostrar los estados usados por este tipo de petición - label_revision_id: Revisión {{value}} + label_revision_id: Revisión %{value} label_api_access_key: Clave de acceso de la API - label_api_access_key_created_on: Clave de acceso de la API creada hace {{value}} + label_api_access_key_created_on: Clave de acceso de la API creada hace %{value} label_feeds_access_key: Clave de acceso RSS notice_api_access_key_reseted: Clave de acceso a la API regenerada. setting_rest_api_enabled: Activar servicio web REST @@ -939,32 +940,41 @@ label_subtask_plural: Subtareas label_project_copy_notifications: Enviar notificaciones por correo electrónico durante la copia del proyecto error_can_not_delete_custom_field: Fue imposible eliminar el campo personalizado - error_unable_to_connect: Fue imposible conectar con ({{value}}) + error_unable_to_connect: Fue imposible conectar con (%{value}) error_can_not_remove_role: Este rol está en uso y no puede ser eliminado. error_can_not_delete_tracker: Este tipo contiene peticiones y no puede ser eliminado. field_principal: Principal label_my_page_block: Bloque Mi página - notice_failed_to_save_members: "Fallo al guardar miembro(s): {{errors}}." + notice_failed_to_save_members: "Fallo al guardar miembro(s): %{errors}." text_zoom_out: Alejar text_zoom_in: Acercar notice_unable_delete_time_entry: Fue imposible eliminar la entrada de tiempo dedicado. label_overall_spent_time: Tiempo total dedicado 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + project_module_calendar: Calendario + button_edit_associated_wikipage: "Editar paginas Wiki asociadas: %{page_title}" + text_are_you_sure_with_children: ¿Borrar peticiones y todas sus peticiones hijas? + field_text: Campo de texto + label_user_mail_option_only_owner: Solo para objetos que soy propietario + setting_default_notification_option: Opcion de notificacion por defecto + label_user_mail_option_only_my_events: Solo para objetos que soy seguidor o estoy involucrado + label_user_mail_option_only_assigned: Solo para objetos que estoy asignado + label_user_mail_option_none: Sin eventos + field_member_of_group: Asignado al grupo + field_assigned_to_role: Asignado al perfil + notice_not_authorized_archived_project: El proyecto al que intenta acceder ha sido archivado. + label_principal_search: "Buscar por usuario o grupo:" + label_user_search: "Buscar por usuario:" field_visible: Visible - setting_emails_header: Emails header + setting_emails_header: Encabezado de Correos + + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/eu.yml --- a/config/locales/eu.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/eu.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,934 +1,947 @@ -# 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: - 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: "An issue can not be linked to one of its subtasks" - - 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_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 estelak 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 mezuen 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 diagrama 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: Workflow - 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: Beria - 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: months from - 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 apuntatu - 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 atazak - text_tip_issue_end_day: gaur bukatzen diren atazak - text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren atazak - 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/email.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: Itxaskorra - 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: Guraso ataza - label_subtask_plural: Azpiatazak - label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali - error_can_not_delete_custom_field: Ezin da eremu pertsonallizatua 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: 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header +# 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/fa.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/locales/fa.yml Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,945 @@ +fa: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: rtl + 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: "%B %d, %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: [ :year, :month, :day ] + + time: + formats: + default: "%Y/%m/%d %p %I:%M" + time: "%p %I:%M" + short: "%d %b %H:%M" + long: "%B %d, %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: "بایت" + other: "بایت" + kb: "کیلوبایت" + mb: "مگابایت" + gb: "گیگابایت" + tb: "ترابایت" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "Ùˆ" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 ایراد از ذخیره سازی این %{model} جلوگیری کرد" + other: "%{count} ایراد از ذخیره سازی این %{model} جلوگیری کرد" + 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: 'Persian (پارسی)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '6' + + 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_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: "نمودار بریده شد چون از بیشترین شماری Ú©Ù‡ می‌توان نشان داد بزگتر است (%{max})." + + error_can_t_load_default_data: "پیکربندی پیش‌گزیده نمی‌تواند بار شود: %{value}" + 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: 'هیچ وضعیت پیامد پیش‌گزیده‌ای مشخص نشده است. پیکربندی را بررسی کنید (به «پیکربندی -> وضعیت‌های پیامد» بروید).' + 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: 'پیگردها یا نقش‌های مقصد را برگزینید.' + error_unable_delete_issue_status: 'وضعیت پیامد را نمی‌توان پاک کرد.' + error_unable_to_connect: "نمی‌توان متصل شد (%{value})" + warning_attachments_not_saved: "%{count} پرونده ذخیره نشد." + + 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}» Ø§ÙØ²ÙˆØ¯Ù‡ شد" + mail_body_wiki_content_added: "برگه ویکی «%{id}» به دست %{author} Ø§ÙØ²ÙˆØ¯Ù‡ شد." + mail_subject_wiki_content_updated: "برگه ویکی «%{id}» بروز شد" + mail_body_wiki_content_updated: "برگه ویکی «%{id}» به دست %{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_principal: دستور دهنده + 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: 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: نشانی + 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: مقدار پیش‌گزیده + field_comments_sorting: نمایش دیدگاه‌ها + field_parent_title: برگه پدر + field_editable: ویرایش پذیر + field_watcher: دیده‌بان + field_identity_url: نشانی OpenID + 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: نوشتار خوش‌آمد گویی + setting_default_language: زبان پیش‌گزیده + setting_login_required: الزامی بودن ورود + setting_self_registration: خود نام نویسی + setting_attachment_max_size: بیشترین اندازه پیوست + setting_issues_export_limit: کرانه صدور پییامدها + setting_mail_from: نشانی ÙØ±Ø³ØªÙ†Ø¯Ù‡ ایمیل + setting_bcc_recipients: گیرندگان ایمیل دیده نشوند (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: ÙØ¹Ø§Ù„ سازی وب سرویس برای سرپرستی انباره + 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: پیوندنامه + setting_per_page_options: گزینه‌های اندازه داده‌های هر برگ + setting_user_format: قالب نمایشی کاربران + setting_activity_days_default: روزهای نمایش داده شده در ÙØ¹Ø§Ù„یت پروژه + setting_display_subprojects_issues: پیش‌گزیده نمایش پیامدهای زیرپروژه در پروژه پدر + setting_enabled_scm: ÙØ¹Ø§Ù„سازی SCM + setting_mail_handler_body_delimiters: "بریدن ایمیل‌ها پس از یکی از این ردیÙ‌ها" + setting_mail_handler_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس برای ایمیل‌های آمده + setting_mail_handler_api_key: کلید API + setting_sequential_project_identifiers: ساخت پشت سر هم شناسه پروژه + setting_gravatar_enabled: کاربرد Gravatar برای عکس کاربر + setting_gravatar_default: عکس Gravatar پیش‌گزیده + setting_diff_max_lines_displayed: بیشترین اندازه ردیÙ‌های ØªÙØ§ÙˆØª نشان داده شده + setting_file_max_size_displayed: بیشترین اندازه پرونده‌های نمایش داده شده درون خطی + setting_repository_log_display_limit: بیشترین شمار نگارش‌های نمایش داده شده در گزارش پرونده + setting_openid: پذیرش ورود Ùˆ نام نویسی با OpenID + setting_password_min_length: کمترین اندازه گذرواژه + setting_new_project_user_role_id: نقش داده شده به کاربری Ú©Ù‡ سرپرست نیست Ùˆ پروژه می‌سازد + setting_default_projects_modules: پیمانه‌های پیش‌گزیده ÙØ¹Ø§Ù„ برای پروژه‌های تازه + setting_issue_done_ratio: برآورد اندازه انجام شده پیامد با + setting_issue_done_ratio_issue_field: کاربرد Ùیلد پیامد + setting_issue_done_ratio_issue_status: کاربرد وضعیت پیامد + setting_start_of_week: آغاز گاهشمار از + setting_rest_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس‌های REST + 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: دیدن پیامدها + 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: صدور برگه‌های ویکی + permission_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: انباره + project_module_boards: انجمن‌ها + project_module_calendar: گاهشمار + project_module_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: پیگرد + 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: یا با 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: شماره درست + 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_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: بیشترین اندازه + 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: خوراک + 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: تغییر در هر ماه + 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: چسبناک + 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_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_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: پسندها + label_chronological_order: به ترتیب تاریخ + label_reverse_chronological_order: برعکس ترتیب تاریخ + label_planning: برنامه ریزی + label_incoming_emails: ایمیل‌های آمده + label_generate_key: ساخت کلید + label_issue_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: بروز رسانی اندازه انجام شده پیامد + label_copy_source: منبع + label_copy_target: مقصد + label_copy_same_as_target: مانند مقصد + label_display_used_statuses_only: تنها وضعیت‌هایی نشان داده شوند Ú©Ù‡ در این پیگرد به کار Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯ + 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: واگذاری + button_save: نگهداری + button_check_all: گزینش همه + button_uncheck_all: گزینش هیچ + button_delete: پاک + button_create: ساخت + button_create_and_continue: ساخت Ùˆ ادامه + button_test: آزمایش + button_edit: ویرایش + button_edit_associated_wikipage: "ویرایش برگه ویکی وابسته: %{page_title}" + 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: برای نمونه ^[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_are_you_sure_with_children: "آیا پیامد Ùˆ همه زیرپیامدهای آن پاک شوند؟" + text_journal_changed: "«%{label}» از «%{old}» به «%{new}» جایگزین شد" + text_journal_set_to: "«%{label}» به «%{value}» نشانده شد" + text_journal_deleted: "«%{label}» پاک شد (%{old})" + text_journal_added: "«%{label}»، «%{value}» را Ø§ÙØ²ÙˆØ¯" + text_tip_task_begin_day: روز آغاز پیامد + text_tip_task_end_day: روز پایان پیامد + text_tip_task_begin_end_day: روز آغاز Ùˆ پایان پیامد + text_project_identifier_info: 'تنها نویسه‌های Ú©ÙˆÚ†Ú© (a-z)ØŒ شماره‌ها Ùˆ خط تیره Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است.
    پس از ذخیره سازی، شناسه نمی‌تواند جایگزین شود.' + 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: چند مقدار Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است (هر مقدار در یک خط). + 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_time_logged_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: "Ø¯Ø±ÛŒØ§ÙØª ایمیل پیکربندی نشده است Ùˆ آگاه‌سازی‌ها غیر ÙØ¹Ø§Ù„ هستند.\nکارگزار SMTP خود را در config/email.yml پیکربندی کنید Ùˆ برنامه را بازنشانی کنید تا ÙØ¹Ø§Ù„ شوند." + text_repository_usernames_mapping: "کاربر Redmine Ú©Ù‡ به هر نام کاربری پیام‌های انباره نگاشت می‌شود را برگزینید.\nکاربرانی Ú©Ù‡ نام کاربری یا ایمیل همسان دارند، خود به خود نگاشت می‌شوند." + text_diff_truncated: '... این ØªÙØ§ÙˆØª بریده شده چون بیشتر از بیشترین اندازه نمایش دادنی است.' + text_custom_field_possible_values_info: 'یک خط برای هر مقدار' + text_wiki_page_destroy_question: "این برگه %{descendants} زیربرگه دارد.می‌خواهید Ú†Ù‡ کنید؟" + text_wiki_page_nullify_children: "زیربرگه‌ها برگه ریشه شوند" + text_wiki_page_destroy_children: "زیربرگه‌ها Ùˆ زیربرگه‌های آن‌ها پاک شوند" + text_wiki_page_reassign_children: "زیربرگه‌ها به زیر این برگه پدر بروند" + text_own_membership_delete_confirmation: "شما دارید برخی یا همه پروانه‌های خود را برمی‌دارید Ùˆ شاید پس از این دیگر نتوانید این پروژه را ویرایش کنید.\nآیا می‌خواهید این کار را بکنید؟" + text_zoom_in: درشتنمایی + text_zoom_out: ریزنمایی + + 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_resolved: درست شده + default_issue_status_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: ÙØ¹Ø§Ù„یت سامانه + + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/fi.yml --- a/config/locales/fi.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/fi.yml Thu Mar 03 12:11:53 2011 +0000 @@ -78,37 +78,37 @@ half_a_minute: "puoli minuuttia" less_than_x_seconds: one: "aiemmin kuin sekunti" - other: "aiemmin kuin {{count}} sekuntia" + other: "aiemmin kuin %{count} sekuntia" x_seconds: one: "sekunti" - other: "{{count}} sekuntia" + other: "%{count} sekuntia" less_than_x_minutes: one: "aiemmin kuin minuutti" - other: "aiemmin kuin {{count}} minuuttia" + other: "aiemmin kuin %{count} minuuttia" x_minutes: one: "minuutti" - other: "{{count}} minuuttia" + other: "%{count} minuuttia" about_x_hours: one: "noin tunti" - other: "noin {{count}} tuntia" + other: "noin %{count} tuntia" x_days: one: "päivä" - other: "{{count}} päivää" + other: "%{count} päivää" about_x_months: one: "noin kuukausi" - other: "noin {{count}} kuukautta" + other: "noin %{count} kuukautta" x_months: one: "kuukausi" - other: "{{count}} kuukautta" + other: "%{count} kuukautta" about_x_years: one: "vuosi" - other: "noin {{count}} vuotta" + other: "noin %{count} vuotta" over_x_years: one: "yli vuosi" - other: "yli {{count}} vuotta" + other: "yli %{count} vuotta" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" prompts: year: "Vuosi" month: "Kuukausi" @@ -121,8 +121,8 @@ errors: template: header: - one: "1 virhe esti tämän {{model}} mallinteen tallentamisen" - other: "{{count}} virhettä esti tämän {{model}} mallinteen tallentamisen" + one: "1 virhe esti tämän %{model} mallinteen tallentamisen" + other: "%{count} virhettä esti tämän %{model} mallinteen tallentamisen" body: "Seuraavat kentät aiheuttivat ongelmia:" messages: inclusion: "ei löydy listauksesta" @@ -132,16 +132,16 @@ accepted: "täytyy olla hyväksytty" empty: "ei voi olla tyhjä" blank: "ei voi olla sisällötön" - too_long: "on liian pitkä (maksimi on {{count}} merkkiä)" - too_short: "on liian lyhyt (minimi on {{count}} merkkiä)" - wrong_length: "on väärän pituinen (täytyy olla täsmälleen {{count}} merkkiä)" + too_long: "on liian pitkä (maksimi on %{count} merkkiä)" + too_short: "on liian lyhyt (minimi on %{count} merkkiä)" + wrong_length: "on väärän pituinen (täytyy olla täsmälleen %{count} merkkiä)" taken: "on jo käytössä" not_a_number: "ei ole numero" - greater_than: "täytyy olla suurempi kuin {{count}}" - greater_than_or_equal_to: "täytyy olla suurempi tai yhtä suuri kuin{{count}}" - equal_to: "täytyy olla yhtä suuri kuin {{count}}" - less_than: "täytyy olla pienempi kuin {{count}}" - less_than_or_equal_to: "täytyy olla pienempi tai yhtä suuri kuin {{count}}" + greater_than: "täytyy olla suurempi kuin %{count}" + greater_than_or_equal_to: "täytyy olla suurempi tai yhtä suuri kuin%{count}" + equal_to: "täytyy olla yhtä suuri kuin %{count}" + less_than: "täytyy olla pienempi kuin %{count}" + less_than_or_equal_to: "täytyy olla pienempi tai yhtä suuri kuin %{count}" odd: "täytyy olla pariton" even: "täytyy olla parillinen" greater_than_start_date: "tulee olla aloituspäivän jälkeinen" @@ -178,29 +178,29 @@ notice_file_not_found: Hakemaasi sivua ei löytynyt tai se on poistettu. notice_locking_conflict: Toinen käyttäjä on päivittänyt tiedot. notice_not_authorized: Sinulla ei ole oikeutta näyttää tätä sivua. - notice_email_sent: "Sähköposti on lähetty osoitteeseen {{value}}" - notice_email_error: "Sähköpostilähetyksessä tapahtui virhe ({{value}})" + notice_email_sent: "Sähköposti on lähetty osoitteeseen %{value}" + notice_email_error: "Sähköpostilähetyksessä tapahtui virhe (%{value})" notice_feeds_access_key_reseted: RSS salasana on nollaantunut. - notice_failed_to_save_issues: "{{count}} Tapahtum(an/ien) tallennus epäonnistui {{total}} valitut: {{ids}}." + notice_failed_to_save_issues: "%{count} Tapahtum(an/ien) tallennus epäonnistui %{total} valitut: %{ids}." notice_no_issue_selected: "Tapahtumia ei ole valittu! Valitse tapahtumat joita haluat muokata." notice_account_pending: "Tilisi on luotu ja odottaa ylläpitäjän hyväksyntää." notice_default_data_loaded: Vakioasetusten palautus onnistui. - error_can_t_load_default_data: "Vakioasetuksia ei voitu ladata: {{value}}" + error_can_t_load_default_data: "Vakioasetuksia ei voitu ladata: %{value}" error_scm_not_found: "Syötettä ja/tai versiota ei löydy tietovarastosta." - error_scm_command_failed: "Tietovarastoon pääsyssä tapahtui virhe: {{value}}" + error_scm_command_failed: "Tietovarastoon pääsyssä tapahtui virhe: %{value}" - mail_subject_lost_password: "Sinun {{value}} salasanasi" + mail_subject_lost_password: "Sinun %{value} salasanasi" mail_body_lost_password: 'Vaihtaaksesi salasanasi, napsauta seuraavaa linkkiä:' - mail_subject_register: "{{value}} tilin aktivointi" + mail_subject_register: "%{value} tilin aktivointi" mail_body_register: 'Aktivoidaksesi tilisi, napsauta seuraavaa linkkiä:' - mail_body_account_information_external: "Voit nyt käyttää {{value}} tiliäsi kirjautuaksesi järjestelmään." + mail_body_account_information_external: "Voit nyt käyttää %{value} tiliäsi kirjautuaksesi järjestelmään." mail_body_account_information: Sinun tilin tiedot - mail_subject_account_activation_request: "{{value}} tilin aktivointi pyyntö" - mail_body_account_activation_request: "Uusi käyttäjä ({{value}}) on rekisteröitynyt. Hänen tili odottaa hyväksyntääsi:" + mail_subject_account_activation_request: "%{value} tilin aktivointi pyyntö" + mail_body_account_activation_request: "Uusi käyttäjä (%{value}) on rekisteröitynyt. Hänen tili odottaa hyväksyntääsi:" gui_validation_error: 1 virhe - gui_validation_error_plural: "{{count}} virhettä" + gui_validation_error_plural: "%{count} virhettä" field_name: Nimi field_description: Kuvaus @@ -262,6 +262,7 @@ field_attr_lastname: Sukunimenmääre field_attr_mail: Sähköpostinmääre field_onthefly: Automaattinen käyttäjien luonti + field_start_date: Alku field_done_ratio: % Tehty field_auth_source: Varmennusmuoto field_hide_mail: Piiloita sähköpostiosoitteeni @@ -321,14 +322,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Kaikki projektit label_project_latest: Uusimmat projektit label_issue: Tapahtuma label_issue_new: Uusi tapahtuma label_issue_plural: Tapahtumat label_issue_view_all: Näytä kaikki tapahtumat - label_issues_by: "Tapahtumat {{value}}" + label_issues_by: "Tapahtumat %{value}" label_document: Dokumentti label_document_new: Uusi dokumentti label_document_plural: Dokumentit @@ -391,8 +392,8 @@ label_text: Pitkä merkkijono label_attribute: Määre label_attribute_plural: Määreet - label_download: "{{count}} Lataus" - label_download_plural: "{{count}} Lataukset" + label_download: "%{count} Lataus" + label_download_plural: "%{count} Lataukset" label_no_data: Ei tietoa näytettäväksi label_change_status: Muutos tila label_history: Historia @@ -421,17 +422,17 @@ label_closed_issues: suljettu label_closed_issues_plural: suljettua label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Yhteensä label_permissions: Oikeudet label_current_status: Nykyinen tila @@ -449,7 +450,7 @@ label_months_from: kuukauden päässä label_gantt: Gantt label_internal: Sisäinen - label_last_changes: "viimeiset {{count}} muutokset" + label_last_changes: "viimeiset %{count} muutokset" label_change_view_all: Näytä kaikki muutokset label_personalize_page: Personoi tämä sivu label_comment: Kommentti @@ -457,7 +458,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Lisää kommentti label_comment_added: Kommentti lisätty label_comment_delete: Poista kommentti @@ -481,8 +482,8 @@ label_repository: Tietovarasto label_repository_plural: Tietovarastot label_browse: Selaus - label_modification: "{{count}} muutos" - label_modification_plural: "{{count}} muutettu" + label_modification: "%{count} muutos" + label_modification_plural: "%{count} muutettu" label_revision: Versio label_revision_plural: Versiot label_added: lisätty @@ -497,8 +498,8 @@ label_sort_lower: Siirrä alas label_sort_lowest: Siirrä alimmaiseksi label_roadmap: Roadmap - label_roadmap_due_in: "Määräaika {{value}}" - label_roadmap_overdue: "{{value}} myöhässä" + label_roadmap_due_in: "Määräaika %{value}" + label_roadmap_overdue: "%{value} myöhässä" label_roadmap_no_issues: Ei tapahtumia tälle versiolle label_search: Haku label_result_plural: Tulokset @@ -516,8 +517,8 @@ label_changes_details: Kaikkien muutosten yksityiskohdat label_issue_tracking: Tapahtumien seuranta label_spent_time: Käytetty aika - label_f_hour: "{{value}} tunti" - label_f_hour_plural: "{{value}} tuntia" + label_f_hour: "%{value} tunti" + label_f_hour_plural: "%{value} tuntia" label_time_tracking: Ajan seuranta label_change_plural: Muutokset label_statistics: Tilastot @@ -562,12 +563,12 @@ label_month: Kuukausi label_week: Viikko label_language_based: Pohjautuen käyttäjän kieleen - label_sort_by: "Lajittele {{value}}" + label_sort_by: "Lajittele %{value}" label_send_test_email: Lähetä testi sähköposti - label_feeds_access_key_created_on: "RSS salasana luotiin {{value}} sitten" + label_feeds_access_key_created_on: "RSS salasana luotiin %{value} sitten" label_module_plural: Moduulit - label_added_time_by: "Lisännyt {{author}} {{age}} sitten" - label_updated_time: "Päivitetty {{value}} sitten" + label_added_time_by: "Lisännyt %{author} %{age} sitten" + label_updated_time: "Päivitetty %{value} sitten" label_jump_to_a_project: Siirry projektiin... label_file_plural: Tiedostot label_changeset_plural: Muutosryhmät @@ -583,7 +584,7 @@ label_registration_activation_by_email: tilin aktivointi sähköpostitse label_registration_manual_activation: tilin aktivointi käsin label_registration_automatic_activation: tilin aktivointi automaattisesti - label_display_per_page: "Per sivu: {{value}}" + label_display_per_page: "Per sivu: %{value}" label_age: Ikä label_change_properties: Vaihda asetuksia label_general: Yleinen @@ -639,17 +640,17 @@ text_tip_issue_end_day: tehtävä joka loppuu tänä päivänä text_tip_issue_begin_end_day: tehtävä joka alkaa ja loppuu tänä päivänä text_project_identifier_info: 'Pienet kirjaimet (a-z), numerot ja viivat ovat sallittu.
    Tallentamisen jälkeen tunnistetta ei voi muuttaa.' - text_caracters_maximum: "{{count}} merkkiä enintään." - text_caracters_minimum: "Täytyy olla vähintään {{count}} merkkiä pitkä." - text_length_between: "Pituus välillä {{min}} ja {{max}} merkkiä." + text_caracters_maximum: "%{count} merkkiä enintään." + text_caracters_minimum: "Täytyy olla vähintään %{count} merkkiä pitkä." + text_length_between: "Pituus välillä %{min} ja %{max} merkkiä." text_tracker_no_workflow: Työnkulkua ei määritelty tälle tapahtumalle text_unallowed_characters: Kiellettyjä merkkejä text_comma_separated: Useat arvot sallittu (pilkku eroteltuna). text_issues_ref_in_commit_messages: Liitän ja korjaan ongelmia syötetyssä viestissä - text_issue_added: "Issue {{id}} has been reported by {{author}}." - text_issue_updated: "Issue {{id}} has been updated by {{author}}." + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Oletko varma että haluat poistaa tämän wiki:n ja kaikki sen sisältämän tiedon? - text_issue_category_destroy_question: "Jotkut tapahtumat ({{count}}) ovat nimetty tälle luokalle. Mitä haluat tehdä?" + text_issue_category_destroy_question: "Jotkut tapahtumat (%{count}) ovat nimetty tälle luokalle. Mitä haluat tehdä?" text_issue_category_destroy_assignments: Poista luokan tehtävät text_issue_category_reassign_to: Vaihda tapahtuma tähän luokkaan text_user_mail_option: "Valitsemattomille projekteille, saat vain muistutuksen asioista joita seuraat tai olet mukana (esim. tapahtumat joissa olet tekijä tai nimettynä)." @@ -683,7 +684,7 @@ enumeration_activities: Historia (ajan seuranta) label_associated_revisions: Liittyvät versiot setting_user_format: Käyttäjien esitysmuoto - text_status_changed_by_changeset: "Päivitetty muutosversioon {{value}}." + text_status_changed_by_changeset: "Päivitetty muutosversioon %{value}." text_issues_destroy_confirmation: 'Oletko varma että haluat poistaa valitut tapahtumat ?' label_more: Lisää label_issue_added: Tapahtuma lisätty @@ -711,8 +712,8 @@ label_downloads_abbr: D/L label_add_another_file: Lisää uusi tiedosto label_this_month: tässä kuussa - text_destroy_time_entries_question: "{{hours}} tuntia on raportoitu tapahtumasta jonka aiot poistaa. Mitä haluat tehdä ?" - label_last_n_days: "viimeiset {{count}} päivää" + text_destroy_time_entries_question: "%{hours} tuntia on raportoitu tapahtumasta jonka aiot poistaa. Mitä haluat tehdä ?" + label_last_n_days: "viimeiset %{count} päivää" label_all_time: koko ajalta error_issue_not_found_in_project: 'Tapahtumaa ei löytynyt tai se ei kuulu tähän projektiin' label_this_year: tänä vuonna @@ -737,20 +738,20 @@ label_overall_activity: Kokonaishistoria error_scm_annotate: "Merkintää ei ole tai siihen ei voi lisätä selityksiä." label_planning: Suunnittelu - text_subprojects_destroy_warning: "Tämän aliprojekti(t): {{value}} tullaan myös poistamaan." - label_and_its_subprojects: "{{value}} ja aliprojektit" - mail_body_reminder: "{{count}} sinulle nimettyä tapahtuma(a) erääntyy {{days}} päivä sisään:" - mail_subject_reminder: "{{count}} tapahtuma(a) erääntyy {{days}} lähipäivinä" - text_user_wrote: "{{value}} kirjoitti:" + text_subprojects_destroy_warning: "Tämän aliprojekti(t): %{value} tullaan myös poistamaan." + label_and_its_subprojects: "%{value} ja aliprojektit" + mail_body_reminder: "%{count} sinulle nimettyä tapahtuma(a) erääntyy %{days} päivä sisään:" + mail_subject_reminder: "%{count} tapahtuma(a) erääntyy %{days} lähipäivinä" + text_user_wrote: "%{value} kirjoitti:" label_duplicated_by: kopioinut setting_enabled_scm: Versionhallinta käytettävissä text_enumeration_category_reassign_to: 'Siirrä täksi arvoksi:' - text_enumeration_destroy_question: "{{count}} kohdetta on sijoitettu tälle arvolle." + text_enumeration_destroy_question: "%{count} kohdetta on sijoitettu tälle arvolle." label_incoming_emails: Saapuvat sähköpostiviestit label_generate_key: Luo avain setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille setting_mail_handler_api_key: API avain - text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/email.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." + text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/configuration.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." field_parent_title: Aloitussivu label_issue_watchers: Tapahtuman seuraajat button_quote: Vastaa @@ -811,12 +812,12 @@ text_repository_usernames_mapping: "Valitse päivittääksesi Redmine käyttäjä jokaiseen käyttäjään joka löytyy tietovaraston lokista.\nKäyttäjät joilla on sama Redmine ja tietovaraston käyttäjänimi tai sähköpostiosoite, yhdistetään automaattisesti." permission_edit_own_messages: Muokkaa omia viestejä permission_delete_own_messages: Poista omia viestejä - label_user_activity: "Käyttäjän {{value}} historia" - label_updated_time_by: "Updated by {{author}} {{age}} ago" + label_user_activity: "Käyttäjän %{value} historia" + 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." + 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 @@ -831,21 +832,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -853,14 +854,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -895,9 +896,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -924,12 +925,12 @@ 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_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}}." + 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. @@ -937,7 +938,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -948,8 +949,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/fr.yml --- a/config/locales/fr.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/fr.yml Thu Mar 03 12:11:53 2011 +0000 @@ -36,38 +36,38 @@ less_than_x_seconds: zero: "moins d'une seconde" one: "moins d'une seconde" - other: "moins de {{count}} secondes" + other: "moins de %{count} secondes" x_seconds: one: "1 seconde" - other: "{{count}} secondes" + other: "%{count} secondes" less_than_x_minutes: zero: "moins d'une minute" one: "moins d'une minute" - other: "moins de {{count}} minutes" + other: "moins de %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "environ une heure" - other: "environ {{count}} heures" + other: "environ %{count} heures" x_days: one: "un jour" - other: "{{count}} jours" + other: "%{count} jours" about_x_months: one: "environ un mois" - other: "environ {{count}} mois" + other: "environ %{count} mois" x_months: one: "un mois" - other: "{{count}} mois" + other: "%{count} mois" about_x_years: one: "environ un an" - other: "environ {{count}} ans" + other: "environ %{count} ans" over_x_years: one: "plus d'un an" - other: "plus de {{count}} ans" + other: "plus de %{count} ans" almost_x_years: one: "presqu'un an" - other: "presque {{count}} ans" + other: "presque %{count} ans" prompts: year: "Année" month: "Mois" @@ -112,8 +112,8 @@ errors: template: header: - one: "Impossible d'enregistrer {{model}} : une erreur" - other: "Impossible d'enregistrer {{model}} : {{count}} erreurs." + one: "Impossible d'enregistrer %{model} : une erreur" + other: "Impossible d'enregistrer %{model} : %{count} erreurs." body: "Veuillez vérifier les champs suivants :" messages: inclusion: "n'est pas inclus(e) dans la liste" @@ -123,16 +123,17 @@ accepted: "doit être accepté(e)" empty: "doit être renseigné(e)" blank: "doit être renseigné(e)" - too_long: "est trop long (pas plus de {{count}} caractères)" - too_short: "est trop court (au moins {{count}} caractères)" - wrong_length: "ne fait pas la bonne longueur (doit comporter {{count}} caractères)" + too_long: "est trop long (pas plus de %{count} caractères)" + too_short: "est trop court (au moins %{count} caractères)" + wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)" taken: "est déjà utilisé" not_a_number: "n'est pas un nombre" - greater_than: "doit être supérieur à {{count}}" - greater_than_or_equal_to: "doit être supérieur ou égal à {{count}}" - equal_to: "doit être égal à {{count}}" - less_than: "doit être inférieur à {{count}}" - less_than_or_equal_to: "doit être inférieur ou égal à {{count}}" + not_a_date: "n'est pas une date valide" + greater_than: "doit être supérieur à %{count}" + greater_than_or_equal_to: "doit être supérieur ou égal à %{count}" + equal_to: "doit être égal à %{count}" + less_than: "doit être inférieur à %{count}" + less_than_or_equal_to: "doit être inférieur ou égal à %{count}" odd: "doit être impair" even: "doit être pair" greater_than_start_date: "doit être postérieure à la date de début" @@ -165,25 +166,26 @@ notice_successful_create: Création effectuée avec succès. notice_successful_update: Mise à jour effectuée avec succès. notice_successful_delete: Suppression effectuée avec succès. - notice_successful_connection: Connection réussie. + notice_successful_connection: Connexion réussie. notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée." notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible. - notice_not_authorized: "Vous n'êtes pas autorisés à accéder à cette page." + notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page." notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé. - notice_email_sent: "Un email a été envoyé à {{value}}" - notice_email_error: "Erreur lors de l'envoi de l'email ({{value}})" + notice_email_sent: "Un email a été envoyé à %{value}" + notice_email_error: "Erreur lors de l'envoi de l'email (%{value})" notice_feeds_access_key_reseted: "Votre clé d'accès aux flux RSS a été réinitialisée." - notice_failed_to_save_issues: "{{count}} demande(s) sur les {{total}} sélectionnées n'ont pas pu être mise(s) à jour : {{ids}}." + notice_failed_to_save_issues: "%{count} demande(s) sur les %{total} sélectionnées n'ont pas pu être mise(s) à jour : %{ids}." notice_no_issue_selected: "Aucune demande sélectionnée ! Cochez les demandes que vous voulez mettre à jour." notice_account_pending: "Votre compte a été créé et attend l'approbation de l'administrateur." notice_default_data_loaded: Paramétrage par défaut chargé avec succès. notice_unable_delete_version: Impossible de supprimer cette version. notice_issue_done_ratios_updated: L'avancement des demandes a été mis à jour. notice_api_access_key_reseted: Votre clé d'accès API a été réinitialisée. + notice_gantt_chart_truncated: "Le diagramme a été tronqué car il excède le nombre maximal d'éléments pouvant être affichés (%{max})" - error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramétrage : {{value}}" + error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramétrage : %{value}" error_scm_not_found: "L'entrée et/ou la révision demandée n'existe pas dans le dépôt." - error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt : {{value}}" + error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt : %{value}" error_scm_annotate: "L'entrée n'existe pas ou ne peut pas être annotée." error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas à ce projet" error_can_not_reopen_issue_on_closed_version: 'Une demande assignée à une version fermée ne peut pas être réouverte' @@ -192,25 +194,25 @@ error_workflow_copy_target: 'Veuillez sélectionner les trackers et rôles cibles' error_issue_done_ratios_not_updated: L'avancement des demandes n'a pas pu être mis à jour. - warning_attachments_not_saved: "{{count}} fichier(s) n'ont pas pu être sauvegardés." + warning_attachments_not_saved: "%{count} fichier(s) n'ont pas pu être sauvegardés." - mail_subject_lost_password: "Votre mot de passe {{value}}" + mail_subject_lost_password: "Votre mot de passe %{value}" mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant :' - mail_subject_register: "Activation de votre compte {{value}}" + mail_subject_register: "Activation de votre compte %{value}" mail_body_register: 'Pour activer votre compte, cliquez sur le lien suivant :' - mail_body_account_information_external: "Vous pouvez utiliser votre compte {{value}} pour vous connecter." + mail_body_account_information_external: "Vous pouvez utiliser votre compte %{value} pour vous connecter." mail_body_account_information: Paramètres de connexion de votre compte - mail_subject_account_activation_request: "Demande d'activation d'un compte {{value}}" - mail_body_account_activation_request: "Un nouvel utilisateur ({{value}}) s'est inscrit. Son compte nécessite votre approbation :" - mail_subject_reminder: "{{count}} demande(s) arrivent à échéance ({{days}})" - mail_body_reminder: "{{count}} demande(s) qui vous sont assignées arrivent à échéance dans les {{days}} prochains jours :" - mail_subject_wiki_content_added: "Page wiki '{{id}}' ajoutée" - mail_body_wiki_content_added: "La page wiki '{{id}}' a été ajoutée par {{author}}." - mail_subject_wiki_content_updated: "Page wiki '{{id}}' mise à jour" - mail_body_wiki_content_updated: "La page wiki '{{id}}' a été mise à jour par {{author}}." + mail_subject_account_activation_request: "Demande d'activation d'un compte %{value}" + mail_body_account_activation_request: "Un nouvel utilisateur (%{value}) s'est inscrit. Son compte nécessite votre approbation :" + mail_subject_reminder: "%{count} demande(s) arrivent à échéance (%{days})" + mail_body_reminder: "%{count} demande(s) qui vous sont assignées arrivent à échéance dans les %{days} prochains jours :" + mail_subject_wiki_content_added: "Page wiki '%{id}' ajoutée" + mail_body_wiki_content_added: "La page wiki '%{id}' a été ajoutée par %{author}." + mail_subject_wiki_content_updated: "Page wiki '%{id}' mise à jour" + mail_body_wiki_content_updated: "La page wiki '%{id}' a été mise à jour par %{author}." gui_validation_error: 1 erreur - gui_validation_error_plural: "{{count}} erreurs" + gui_validation_error_plural: "%{count} erreurs" field_name: Nom field_description: Description @@ -272,6 +274,7 @@ field_attr_lastname: Attribut Nom 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_auth_source: Mode d'authentification field_hide_mail: Cacher mon adresse mail @@ -304,6 +307,7 @@ field_active: Actif 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é" setting_app_title: Titre de l'application setting_app_subtitle: Sous-titre de l'application @@ -320,11 +324,11 @@ setting_text_formatting: Formatage du texte setting_wiki_compression: Compression historique wiki setting_feeds_limit: Limite du contenu des flux RSS - setting_default_projects_public: Définir les nouveaux projects comme publics par défaut + setting_default_projects_public: Définir les nouveaux projets comme publics par défaut setting_autofetch_changesets: Récupération auto. des commits setting_sys_api_enabled: Activer les WS pour la gestion des dépôts - setting_commit_ref_keywords: Mot-clés de référencement - setting_commit_fix_keywords: Mot-clés de résolution + setting_commit_ref_keywords: Mots-clés de référencement + setting_commit_fix_keywords: Mots-clés de résolution setting_autologin: Autologin setting_date_format: Format de date setting_time_format: Format d'heure @@ -346,7 +350,7 @@ setting_gravatar_enabled: Afficher les Gravatar des utilisateurs setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne - setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier" + setting_repository_log_display_limit: "Nombre maximum de révisions affichées sur l'historique d'un fichier" setting_openid: "Autoriser l'authentification et l'enregistrement OpenID" setting_password_min_length: Longueur minimum des mots de passe setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet @@ -358,12 +362,15 @@ setting_gravatar_default: Image Gravatar par défaut setting_start_of_week: Jour de début des calendriers setting_cache_formatted_text: Mettre en cache le texte formaté + setting_commit_logtime_enabled: Permettre la saisie de temps + setting_commit_logtime_activity_id: Activité pour le temps saisi + setting_gantt_items_limit: Nombre maximum d'éléments affichés sur le gantt permission_add_project: Créer un projet permission_add_subprojects: Créer des sous-projets permission_edit_project: Modifier le projet permission_select_project_modules: Choisir les modules - permission_manage_members: Gérer les members + permission_manage_members: Gérer les membres permission_manage_versions: Gérer les versions permission_manage_categories: Gérer les catégories de demandes permission_view_issues: Voir les demandes @@ -434,7 +441,7 @@ label_x_projects: zero: aucun projet one: un projet - other: "{{count}} projets" + other: "%{count} projets" label_project_all: Tous les projets label_project_latest: Derniers projets label_issue: Demande @@ -443,7 +450,10 @@ label_issue_view_all: Voir toutes les demandes label_issue_added: Demande ajoutée label_issue_updated: Demande mise à jour - label_issues_by: "Demandes par {{value}}" + label_issue_note_added: Note ajoutée + label_issue_status_updated: Statut changé + label_issue_priority_updated: Priorité changée + label_issues_by: "Demandes par %{value}" label_document: Document label_document_new: Nouveau document label_document_plural: Documents @@ -481,7 +491,7 @@ label_my_page: Ma page label_my_account: Mon compte label_my_projects: Mes projets - label_my_page_block: Ma page bloque + label_my_page_block: Blocs disponibles label_administration: Administration label_login: Connexion label_logout: Déconnexion @@ -492,7 +502,7 @@ label_registered_on: "Inscrit le " label_activity: Activité label_overall_activity: Activité globale - label_user_activity: "Activité de {{value}}" + label_user_activity: "Activité de %{value}" label_new: Nouveau label_logged_as: Connecté en tant que label_environment: Environnement @@ -502,7 +512,7 @@ label_auth_source_plural: Modes d'authentification label_subproject_plural: Sous-projets label_subproject_new: Nouveau sous-projet - label_and_its_subprojects: "{{value}} et ses sous-projets" + label_and_its_subprojects: "%{value} et ses sous-projets" label_min_max_length: Longueurs mini - maxi label_list: Liste label_date: Date @@ -513,8 +523,8 @@ label_text: Texte long label_attribute: Attribut label_attribute_plural: Attributs - label_download: "{{count}} téléchargement" - label_download_plural: "{{count}} téléchargements" + label_download: "%{count} téléchargement" + label_download_plural: "%{count} téléchargements" label_no_data: Aucune donnée à afficher label_change_status: Changer le statut label_history: Historique @@ -545,17 +555,17 @@ label_closed_issues: fermé label_closed_issues_plural: fermés label_x_open_issues_abbr_on_total: - zero: 0 ouvert sur {{total}} - one: 1 ouvert sur {{total}} - other: "{{count}} ouverts sur {{total}}" + zero: 0 ouvert sur %{total} + one: 1 ouvert sur %{total} + other: "%{count} ouverts sur %{total}" label_x_open_issues_abbr: zero: 0 ouvert one: 1 ouvert - other: "{{count}} ouverts" + other: "%{count} ouverts" label_x_closed_issues_abbr: zero: 0 fermé one: 1 fermé - other: "{{count}} fermés" + other: "%{count} fermés" label_total: Total label_permissions: Permissions label_current_status: Statut actuel @@ -573,7 +583,7 @@ label_months_from: mois depuis label_gantt: Gantt label_internal: Interne - label_last_changes: "{{count}} derniers changements" + label_last_changes: "%{count} derniers changements" label_change_view_all: Voir tous les changements label_personalize_page: Personnaliser cette page label_comment: Commentaire @@ -581,13 +591,14 @@ label_x_comments: zero: aucun commentaire one: un commentaire - other: "{{count}} commentaires" + other: "%{count} commentaires" label_comment_add: Ajouter un commentaire label_comment_added: Commentaire ajouté label_comment_delete: Supprimer les commentaires label_query: Rapport personnalisé label_query_plural: Rapports personnalisés label_query_new: Nouveau rapport + label_my_queries: Mes rapports personnalisés label_filter_add: "Ajouter le filtre " label_filter_plural: Filtres label_equals: égal @@ -600,7 +611,7 @@ label_yesterday: hier label_this_week: cette semaine label_last_week: la semaine dernière - label_last_n_days: "les {{count}} derniers jours" + label_last_n_days: "les %{count} derniers jours" label_this_month: ce mois-ci label_last_month: le mois dernier label_this_year: cette année @@ -614,8 +625,8 @@ label_repository: Dépôt label_repository_plural: Dépôts label_browse: Parcourir - label_modification: "{{count}} modification" - label_modification_plural: "{{count}} modifications" + label_modification: "%{count} modification" + label_modification_plural: "%{count} modifications" label_revision: "Révision " label_revision_plural: Révisions label_associated_revisions: Révisions associées @@ -633,8 +644,8 @@ label_sort_lower: Descendre label_sort_lowest: Descendre en dernier label_roadmap: Roadmap - label_roadmap_due_in: "Échéance dans {{value}}" - label_roadmap_overdue: "En retard de {{value}}" + label_roadmap_due_in: "Échéance dans %{value}" + label_roadmap_overdue: "En retard de %{value}" label_roadmap_no_issues: Aucune demande pour cette version label_search: "Recherche " label_result_plural: Résultats @@ -652,8 +663,8 @@ label_changes_details: Détails de tous les changements label_issue_tracking: Suivi des demandes label_spent_time: Temps passé - label_f_hour: "{{value}} heure" - label_f_hour_plural: "{{value}} heures" + label_f_hour: "%{value} heure" + label_f_hour_plural: "%{value} heures" label_time_tracking: Suivi du temps label_change_plural: Changements label_statistics: Statistiques @@ -702,13 +713,13 @@ label_date_from: Du label_date_to: Au label_language_based: Basé sur la langue de l'utilisateur - label_sort_by: "Trier par {{value}}" + label_sort_by: "Trier par %{value}" label_send_test_email: Envoyer un email de test - label_feeds_access_key_created_on: "Clé d'accès RSS créée il y a {{value}}" + label_feeds_access_key_created_on: "Clé d'accès RSS créée il y a %{value}" label_module_plural: Modules - label_added_time_by: "Ajouté par {{author}} il y a {{age}}" - label_updated_time_by: "Mis à jour par {{author}} il y a {{age}}" - label_updated_time: "Mis à jour il y a {{value}}" + label_added_time_by: "Ajouté par %{author} il y a %{age}" + label_updated_time_by: "Mis à jour par %{author} il y a %{age}" + label_updated_time: "Mis à jour il y a %{value}" label_jump_to_a_project: Aller à un projet... label_file_plural: Fichiers label_changeset_plural: Révisions @@ -724,7 +735,7 @@ label_registration_activation_by_email: activation du compte par email label_registration_manual_activation: activation manuelle du compte label_registration_automatic_activation: activation automatique du compte - label_display_per_page: "Par page : {{value}}" + label_display_per_page: "Par page : %{value}" label_age: Âge label_change_properties: Changer les propriétés label_general: Général @@ -747,7 +758,7 @@ label_sort: Tri label_ascending: Croissant label_descending: Décroissant - label_date_from_to: Du {{start}} au {{end}} + label_date_from_to: Du %{start} au %{end} label_wiki_content_added: Page wiki ajoutée label_wiki_content_updated: Page wiki mise à jour label_group_plural: Groupes @@ -765,12 +776,12 @@ label_update_issue_done_ratios: Mettre à jour l'avancement des demandes label_display_used_statuses_only: N'afficher que les statuts utilisés dans ce tracker label_api_access_key: Clé d'accès API - label_api_access_key_created_on: Clé d'accès API créée il y a {{value}} + label_api_access_key_created_on: Clé d'accès API créée il y a %{value} label_feeds_access_key: Clé d'accès RSS label_missing_api_access_key: Clé d'accès API manquante label_missing_feeds_access_key: Clé d'accès RSS manquante label_close_versions: Fermer les versions terminées - label_revision_id: Revision {{value}} + label_revision_id: Revision %{value} label_profile: Profil label_subtask_plural: Sous-tâches label_project_copy_notifications: Envoyer les notifications durant la copie du projet @@ -833,53 +844,55 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 pour aucune restriction text_project_destroy_confirmation: Êtes-vous sûr de vouloir supprimer ce projet et toutes ses données ? - text_subprojects_destroy_warning: "Ses sous-projets : {{value}} seront également supprimés." + text_subprojects_destroy_warning: "Ses sous-projets : %{value} seront également supprimés." text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow text_are_you_sure: Êtes-vous sûr ? text_tip_issue_begin_day: tâche commençant ce jour text_tip_issue_end_day: tâche finissant ce jour text_tip_issue_begin_end_day: tâche commençant et finissant ce jour text_project_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres et tirets sont autorisés.
    Un fois sauvegardé, l''identifiant ne pourra plus être modifié.' - text_caracters_maximum: "{{count}} caractères maximum." - text_caracters_minimum: "{{count}} caractères minimum." - text_length_between: "Longueur comprise entre {{min}} et {{max}} caractères." + text_caracters_maximum: "%{count} caractères maximum." + text_caracters_minimum: "%{count} caractères minimum." + text_length_between: "Longueur comprise entre %{min} et %{max} caractères." text_tracker_no_workflow: Aucun worflow n'est défini pour ce tracker text_unallowed_characters: Caractères non autorisés text_comma_separated: Plusieurs valeurs possibles (séparées par des virgules). text_line_separated: Plusieurs valeurs possibles (une valeur par ligne). text_issues_ref_in_commit_messages: Référencement et résolution des demandes dans les commentaires de commits - text_issue_added: "La demande {{id}} a été soumise par {{author}}." - text_issue_updated: "La demande {{id}} a été mise à jour par {{author}}." + text_issue_added: "La demande %{id} a été soumise par %{author}." + text_issue_updated: "La demande %{id} a été mise à jour par %{author}." text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ? - text_issue_category_destroy_question: "{{count}} demandes sont affectées à cette catégories. Que voulez-vous faire ?" + text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégorie. Que voulez-vous faire ?" text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)." text_no_configuration_data: "Les rôles, trackers, statuts et le workflow ne sont pas encore paramétrés.\nIl est vivement recommandé de charger le paramétrage par defaut. Vous pourrez le modifier une fois chargé." text_load_default_configuration: Charger le paramétrage par défaut - text_status_changed_by_changeset: "Appliqué par commit {{value}}." + 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_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 text_plugin_assets_writable: Répertoire public des plugins accessible en écriture text_rmagick_available: Bibliothèque RMagick présente (optionnelle) - text_destroy_time_entries_question: "{{hours}} heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?" + text_destroy_time_entries_question: "%{hours} heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?" text_destroy_time_entries: Supprimer les heures text_assign_time_entries_to_project: Reporter les heures sur le projet text_reassign_time_entries: 'Reporter les heures sur cette demande:' - text_user_wrote: "{{value}} a écrit :" - text_enumeration_destroy_question: "Cette valeur est affectée à {{count}} objets." + text_user_wrote: "%{value} a écrit :" + text_enumeration_destroy_question: "Cette valeur est affectée à %{count} objets." text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:' - text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer." + text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/configuration.yml et redémarrez l'application pour les activer." text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés." text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.' text_custom_field_possible_values_info: 'Une ligne par valeur' - text_wiki_page_destroy_question: "Cette page possède {{descendants}} sous-page(s) et descendante(s). Que voulez-vous faire ?" + text_wiki_page_destroy_question: "Cette page possède %{descendants} sous-page(s) et descendante(s). Que voulez-vous faire ?" text_wiki_page_nullify_children: "Conserver les sous-pages en tant que pages racines" text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes" text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page" text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?" + text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardé qui sera perdu si vous quittez la page." default_role_manager: "Manager " default_role_developer: "Développeur " @@ -913,20 +926,21 @@ label_branch: Branche error_no_tracker_in_project: "Aucun tracker n'est associé à ce projet. Vérifier la configuration du projet." error_no_default_issue_status: "Aucun statut de demande n'est défini par défaut. Vérifier votre configuration (Administration -> Statuts de demandes)." - text_journal_changed: "{{label}} changé de {{old}} à {{new}}" - text_journal_set_to: "{{label}} mis à {{value}}" - text_journal_deleted: "{{label}} {{old}} supprimé" - text_journal_added: "{{label}} {{value}} ajouté" + text_journal_changed: "%{label} changé de %{old} à %{new}" + text_journal_changed_no_detail: "%{label} mis à jour" + text_journal_set_to: "%{label} mis à %{value}" + text_journal_deleted: "%{label} %{old} supprimé" + text_journal_added: "%{label} %{value} ajouté" enumeration_system_activity: Activité système label_board_sticky: Sticky label_board_locked: Verrouillé error_unable_delete_issue_status: Impossible de supprimer le statut de demande error_can_not_delete_custom_field: Impossible de supprimer le champ personnalisé - error_unable_to_connect: Connexion impossible ({{value}}) + error_unable_to_connect: Connexion impossible (%{value}) error_can_not_remove_role: Ce rôle est utilisé et ne peut pas être supprimé. error_can_not_delete_tracker: Ce tracker contient des demandes et ne peut pas être supprimé. field_principal: Principal - notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: {{errors}}." + notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: %{errors}." text_zoom_out: Zoom arrière text_zoom_in: Zoom avant notice_unable_delete_time_entry: Impossible de supprimer le temps passé. @@ -934,7 +948,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendrier - button_edit_associated_wikipage: "Modifier la page wiki associée: {{page_title}}" + button_edit_associated_wikipage: "Modifier la page wiki associée: %{page_title}" text_are_you_sure_with_children: Supprimer la demande et toutes ses sous-demandes ? field_text: Champ texte label_user_mail_option_only_owner: Seulement pour ce que j'ai créé @@ -944,5 +958,4 @@ label_user_mail_option_none: Aucune notification field_member_of_group: Groupe de l'assigné field_assigned_to_role: Rôle de l'assigné - field_start_date: Start date setting_emails_header: Emails header diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/gl.yml --- a/config/locales/gl.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/gl.yml Thu Mar 03 12:11:53 2011 +0000 @@ -74,41 +74,41 @@ zero: 'menos dun segundo' one: '1 segundo' few: 'poucos segundos' - other: '{{count}} segundos' + other: '%{count} segundos' x_seconds: one: '1 segundo' - other: '{{count}} segundos' + other: '%{count} segundos' less_than_x_minutes: zero: 'menos dun minuto' one: '1 minuto' - other: '{{count}} minutos' + other: '%{count} minutos' x_minutes: one: '1 minuto' - other: '{{count}} minuto' + other: '%{count} minuto' about_x_hours: one: 'aproximadamente unha hora' - other: '{{count}} horas' + other: '%{count} horas' x_days: one: '1 día' - other: '{{count}} días' + other: '%{count} días' x_weeks: one: '1 semana' - other: '{{count}} semanas' + other: '%{count} semanas' about_x_months: one: 'aproximadamente 1 mes' - other: '{{count}} meses' + other: '%{count} meses' x_months: one: '1 mes' - other: '{{count}} meses' + other: '%{count} meses' about_x_years: one: 'aproximadamente 1 ano' - other: '{{count}} anos' + other: '%{count} anos' over_x_years: one: 'máis dun ano' - other: '{{count}} anos' + other: '%{count} anos' almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" now: 'agora' today: 'hoxe' tomorrow: 'mañá' @@ -124,8 +124,8 @@ errors: template: header: - one: "1 erro evitou que se poidese gardar o {{model}}" - other: "{{count}} erros evitaron que se poidese gardar o {{model}}" + one: "1 erro evitou que se poidese gardar o %{model}" + other: "%{count} erros evitaron que se poidese gardar o %{model}" body: "Atopáronse os seguintes problemas:" messages: inclusion: "non está incluido na lista" @@ -135,16 +135,16 @@ accepted: "debe ser aceptado" empty: "non pode estar valeiro" blank: "non pode estar en blanco" - too_long: "é demasiado longo (non máis de {{count}} carácteres)" - too_short: "é demasiado curto (non menos de {{count}} carácteres)" - wrong_length: "non ten a lonxitude correcta (debe ser de {{count}} carácteres)" + too_long: "é demasiado longo (non máis de %{count} carácteres)" + too_short: "é demasiado curto (non menos de %{count} carácteres)" + wrong_length: "non ten a lonxitude correcta (debe ser de %{count} carácteres)" taken: "non está dispoñible" not_a_number: "non é un número" - greater_than: "debe ser maior que {{count}}" - greater_than_or_equal_to: "debe ser maior ou igual que {{count}}" - equal_to: "debe ser igual a {{count}}" - less_than: "debe ser menor que {{count}}" - less_than_or_equal_to: "debe ser menor ou igual que {{count}}" + greater_than: "debe ser maior que %{count}" + greater_than_or_equal_to: "debe ser maior ou igual que %{count}" + equal_to: "debe ser igual a %{count}" + less_than: "debe ser menor que %{count}" + less_than_or_equal_to: "debe ser menor ou igual que %{count}" odd: "debe ser par" even: "debe ser impar" greater_than_start_date: "debe ser posterior á data de comezo" @@ -216,10 +216,10 @@ enumeration_activities: Actividades (tempo dedicado) enumeration_doc_categories: Categorías do documento enumeration_issue_priorities: Prioridade das peticións - error_can_t_load_default_data: "Non se puido cargar a configuración por defecto: {{value}}" + error_can_t_load_default_data: "Non se puido cargar a configuración por defecto: %{value}" error_issue_not_found_in_project: 'A petición non se atopa ou non está asociada a este proxecto' error_scm_annotate: "Non existe a entrada ou non se puido anotar" - error_scm_command_failed: "Aconteceu un erro ao acceder ó repositorio: {{value}}" + error_scm_command_failed: "Aconteceu un erro ao acceder ó repositorio: %{value}" error_scm_not_found: "A entrada e/ou revisión non existe no repositorio." field_account: Conta field_activity: Actividade @@ -290,6 +290,7 @@ field_role: Perfil field_searchable: Incluír nas búsquedas field_spent_on: Data + field_start_date: Data de inicio field_start_page: Páxina principal field_status: Estado field_subject: Tema @@ -315,19 +316,19 @@ general_text_no: 'non' general_text_yes: 'si' gui_validation_error: 1 erro - gui_validation_error_plural: "{{count}} erros" + gui_validation_error_plural: "%{count} erros" label_activity: Actividade label_add_another_file: Engadir outro arquivo label_add_note: Engadir unha nota label_added: engadido - label_added_time_by: "Engadido por {{author}} fai {{age}}" + label_added_time_by: "Engadido por %{author} fai %{age}" label_administration: Administración label_age: Idade label_ago: fai label_all: todos label_all_time: todo o tempo label_all_words: Tódalas palabras - label_and_its_subprojects: "{{value}} e proxectos secundarios" + label_and_its_subprojects: "%{value} e proxectos secundarios" label_applied_status: Aplicar estado label_assigned_to_me_issues: Peticións asignadas a min label_associated_revisions: Revisións asociadas @@ -360,17 +361,17 @@ label_closed_issues: pechada label_closed_issues_plural: pechadas label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_comment: Comentario label_comment_add: Engadir un comentario label_comment_added: Comentario engadido @@ -379,7 +380,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_commits_per_author: Commits por autor label_commits_per_month: Commits por mes label_confirmation: Confirmación @@ -403,13 +404,13 @@ label_diff_inline: en liña label_diff_side_by_side: cara a cara label_disabled: deshabilitado - label_display_per_page: "Por páxina: {{value}}" + label_display_per_page: "Por páxina: %{value}" label_document: Documento label_document_added: Documento engadido label_document_new: Novo documento label_document_plural: Documentos - label_download: "{{count}} Descarga" - label_download_plural: "{{count}} Descargas" + label_download: "%{count} Descarga" + label_download_plural: "%{count} Descargas" label_downloads_abbr: D/L label_duplicated_by: duplicada por label_duplicates: duplicada de @@ -421,10 +422,10 @@ label_equals: igual label_example: Exemplo label_export_to: 'Exportar a:' - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_feed_plural: Feeds - label_feeds_access_key_created_on: "Clave de acceso por RSS creada fai {{value}}" + label_feeds_access_key_created_on: "Clave de acceso por RSS creada fai %{value}" label_file_added: Arquivo engadido label_file_plural: Arquivos label_filter_add: Engadir o filtro @@ -462,13 +463,13 @@ label_issue_updated: Petición actualizada label_issue_view_all: Ver tódalas peticións label_issue_watchers: Seguidores - label_issues_by: "Peticións por {{value}}" + label_issues_by: "Peticións por %{value}" label_jump_to_a_project: Ir ao proxecto... label_language_based: Baseado no idioma - label_last_changes: "últimos {{count}} cambios" + label_last_changes: "últimos %{count} cambios" label_last_login: Última conexión label_last_month: último mes - label_last_n_days: "últimos {{count}} días" + label_last_n_days: "últimos %{count} días" label_last_week: última semana label_latest_revision: Última revisión label_latest_revision_plural: Últimas revisións @@ -489,8 +490,8 @@ label_message_plural: Mensaxes label_message_posted: Mensaxe engadida label_min_max_length: Lonxitude mín - máx - label_modification: "{{count}} modificación" - label_modification_plural: "{{count}} modificacións" + label_modification: "%{count} modificación" + label_modification_plural: "%{count} modificacións" label_modified: modificado label_module_plural: Módulos label_month: Mes @@ -541,7 +542,7 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_public_projects: Proxectos públicos label_query: Consulta personalizada label_query_new: Nova consulta @@ -568,9 +569,9 @@ label_revision: Revisión label_revision_plural: Revisións label_roadmap: Planificación - label_roadmap_due_in: "Remata en {{value}}" + label_roadmap_due_in: "Remata en %{value}" label_roadmap_no_issues: Non hai peticións para esta versión - label_roadmap_overdue: "{{value}} tarde" + label_roadmap_overdue: "%{value} tarde" label_role: Perfil label_role_and_permissions: Perfiles e permisos label_role_new: Novo perfil @@ -582,7 +583,7 @@ label_send_test_email: Enviar un correo de proba label_settings: Configuración label_show_completed_versions: Mostra as versións rematadas - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_sort_higher: Subir label_sort_highest: Primeiro label_sort_lower: Baixar @@ -606,11 +607,11 @@ label_tracker: Tipo label_tracker_new: Novo tipo label_tracker_plural: Tipos de peticións - label_updated_time: "Actualizado fai {{value}}" - label_updated_time_by: "Actualizado por {{author}} fai {{age}}" + label_updated_time: "Actualizado fai %{value}" + label_updated_time_by: "Actualizado por %{author} fai %{age}" label_used_by: Utilizado por label_user: Usuario - label_user_activity: "Actividade de {{value}}" + label_user_activity: "Actividade de %{value}" label_user_mail_no_self_notified: "Non quero ser avisado de cambios feitos por min" label_user_mail_option_all: "Para calquera evento en tódolos proxectos" label_user_mail_option_selected: "Para calquera evento dos proxectos seleccionados..." @@ -631,16 +632,16 @@ label_workflow: Fluxo de traballo label_year: Ano label_yesterday: onte - mail_body_account_activation_request: "Inscribiuse un novo usuario ({{value}}). A conta está pendente de aprobación:" + mail_body_account_activation_request: "Inscribiuse un novo usuario (%{value}). A conta está pendente de aprobación:" mail_body_account_information: Información sobre a súa conta - mail_body_account_information_external: "Pode usar a súa conta {{value}} para conectarse." + mail_body_account_information_external: "Pode usar a súa conta %{value} para conectarse." mail_body_lost_password: 'Para cambiar o seu contrasinal, faga clic no seguinte enlace:' mail_body_register: 'Para activar a súa conta, faga clic no seguinte enlace:' - mail_body_reminder: "{{count}} petición(s) asignadas a ti rematan nos próximos {{days}} días:" - mail_subject_account_activation_request: "Petición de activación de conta {{value}}" - mail_subject_lost_password: "O teu contrasinal de {{value}}" - mail_subject_register: "Activación da conta de {{value}}" - mail_subject_reminder: "{{count}} petición(s) rematarán nos próximos {{days}} días" + mail_body_reminder: "%{count} petición(s) asignadas a ti rematan nos próximos %{days} días:" + mail_subject_account_activation_request: "Petición de activación de conta %{value}" + mail_subject_lost_password: "O teu contrasinal de %{value}" + mail_subject_register: "Activación da conta de %{value}" + mail_subject_reminder: "%{count} petición(s) rematarán nos próximos %{days} días" notice_account_activated: A súa conta foi activada. Xa pode conectarse. notice_account_invalid_creditentials: Usuario ou contrasinal inválido. notice_account_lost_email_sent: Enviouse un correo con instrucións para elixir un novo contrasinal. @@ -652,9 +653,9 @@ notice_account_wrong_password: Contrasinal incorrecto. notice_can_t_change_password: Esta conta utiliza unha fonte de autenticación externa. Non é posible cambiar o contrasinal. 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_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_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. @@ -765,25 +766,25 @@ status_registered: rexistrado text_are_you_sure: ¿Está seguro? text_assign_time_entries_to_project: Asignar as horas ó proxecto - text_caracters_maximum: "{{count}} caracteres como máximo." - text_caracters_minimum: "{{count}} caracteres como mínimo" + text_caracters_maximum: "%{count} caracteres como máximo." + text_caracters_minimum: "%{count} caracteres como mínimo" text_comma_separated: Múltiples valores permitidos (separados por coma). text_default_administrator_account_changed: Conta de administrador por defecto modificada text_destroy_time_entries: Borrar as horas - text_destroy_time_entries_question: Existen {{hours}} horas asignadas á petición que quere borrar. ¿Que quere facer ? + text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. ¿Que quere facer ? text_diff_truncated: '... Diferencia truncada por exceder o máximo tamaño visualizable.' - text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/email.yml e reinicie a aplicación para activar os cambios." + text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/configuration.yml e reinicie a aplicación para activar os cambios." text_enumeration_category_reassign_to: 'Reasignar ó seguinte valor:' - text_enumeration_destroy_question: "{{count}} obxectos con este valor asignado." + text_enumeration_destroy_question: "%{count} obxectos con este valor asignado." text_file_repository_writable: Pódese escribir no repositorio - text_issue_added: "Petición {{id}} engadida por {{author}}." + text_issue_added: "Petición %{id} engadida por %{author}." text_issue_category_destroy_assignments: Deixar as peticións sen categoría - text_issue_category_destroy_question: "Algunhas peticións ({{count}}) están asignadas a esta categoría. ¿Que desexa facer?" + text_issue_category_destroy_question: "Algunhas peticións (%{count}) están asignadas a esta categoría. ¿Que desexa facer?" text_issue_category_reassign_to: Reasignar as peticións á categoría - text_issue_updated: "A petición {{id}} actualizouse por {{author}}." + text_issue_updated: "A petición %{id} actualizouse por %{author}." text_issues_destroy_confirmation: '¿Seguro que quere borrar as peticións seleccionadas?' text_issues_ref_in_commit_messages: Referencia e petición de corrección nas mensaxes - text_length_between: "Lonxitude entre {{min}} e {{max}} caracteres." + text_length_between: "Lonxitude entre %{min} e %{max} caracteres." text_load_default_configuration: Cargar a configuración por defecto text_min_max_length_info: 0 para ningunha restrición text_no_configuration_data: "Inda non se configuraron perfiles, nin tipos, estados e fluxo de traballo asociado a peticións. Recoméndase encarecidamente cargar a configuración por defecto. Unha vez cargada, poderá modificala." @@ -795,18 +796,18 @@ text_rmagick_available: RMagick dispoñible (opcional) text_select_mail_notifications: Seleccionar os eventos a notificar text_select_project_modules: 'Seleccione os módulos a activar para este proxecto:' - text_status_changed_by_changeset: "Aplicado nos cambios {{value}}" - text_subprojects_destroy_warning: "Os proxectos secundarios: {{value}} tamén se eliminarán" + text_status_changed_by_changeset: "Aplicado nos cambios %{value}" + text_subprojects_destroy_warning: "Os proxectos secundarios: %{value} tamén se eliminarán" text_tip_issue_begin_day: tarefa que comeza este día text_tip_issue_begin_end_day: tarefa que comeza e remata este día text_tip_issue_end_day: tarefa que remata este día text_tracker_no_workflow: Non hai ningún fluxo de traballo definido para este tipo de petición text_unallowed_characters: Caracteres non permitidos text_user_mail_option: "Dos proxectos non seleccionados, só recibirá notificacións sobre elementos monitorizados ou elementos nos que estea involucrado (por exemplo, peticións das que vostede sexa autor ou asignadas a vostede)." - text_user_wrote: "{{value}} escribiu:" + text_user_wrote: "%{value} escribiu:" text_wiki_destroy_confirmation: ¿Seguro que quere borrar o wiki e todo o seu contido? text_workflow_edit: Seleccionar un fluxo de traballo para actualizar - warning_attachments_not_saved: "{{count}} file(s) could not be saved." + warning_attachments_not_saved: "%{count} file(s) could not be saved." field_editable: Editable text_plugin_assets_writable: Plugin assets directory writable label_display: Display @@ -822,21 +823,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -844,14 +845,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -886,9 +887,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -915,12 +916,12 @@ 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_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}}." + 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. @@ -928,7 +929,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -939,8 +940,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/he.yml --- a/config/locales/he.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/he.yml Thu Mar 03 12:11:53 2011 +0000 @@ -38,38 +38,38 @@ less_than_x_seconds: zero: 'פחות משניה' one: 'פחות משניה' - other: 'פחות מ־{{count}} שניות' + other: 'פחות מ־%{count} שניות' x_seconds: one: 'שניה ×חת' - other: '{{count}} שניות' + other: '%{count} שניות' less_than_x_minutes: zero: 'פחות מדקה ×חת' one: 'פחות מדקה ×חת' - other: 'פחות מ־{{count}} דקות' + other: 'פחות מ־%{count} דקות' x_minutes: one: 'דקה ×חת' - other: '{{count}} דקות' + other: '%{count} דקות' about_x_hours: one: 'בערך שעה ×חת' - other: 'בערך {{count}} שעות' + other: 'בערך %{count} שעות' x_days: one: '×™×•× ×חד' - other: '{{count}} ימי×' + other: '%{count} ימי×' about_x_months: one: 'בערך חודש ×חד' - other: 'בערך {{count}} חודשי×' + other: 'בערך %{count} חודשי×' x_months: one: 'חודש ×חד' - other: '{{count}} חודשי×' + other: '%{count} חודשי×' about_x_years: one: 'בערך שנה ×חת' - other: 'בערך {{count}} שני×' + other: 'בערך %{count} שני×' over_x_years: one: 'מעל שנה ×חת' - other: 'מעל {{count}} שני×' + other: 'מעל %{count} שני×' almost_x_years: one: "כמעט שנה" - other: "כמעט {{count}} שני×" + other: "כמעט %{count} שני×" number: format: @@ -100,6 +100,10 @@ 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: "×œ× ×–×ž×™×Ÿ" @@ -108,16 +112,16 @@ accepted: "חייב ב×ישור" empty: "חייב להכלל" blank: "חייב להכלל" - too_long: "×רוך מדי (×œ× ×™×•×ª×¨ מ־{{count}} תוי×)" - too_short: "קצר מדי (×œ× ×™×•×ª×¨ מ־{{count}} תוי×)" - wrong_length: "×œ× ×‘×ורך הנכון (חייב להיות {{count}} תוי×)" + too_long: "×רוך מדי (×œ× ×™×•×ª×¨ מ־%{count} תוי×)" + too_short: "קצר מדי (×œ× ×™×•×ª×¨ מ־%{count} תוי×)" + wrong_length: "×œ× ×‘×ורך הנכון (חייב להיות %{count} תוי×)" taken: "×œ× ×–×ž×™×Ÿ" not_a_number: "×”×•× ×œ× ×ž×¡×¤×¨" - greater_than: "חייב להיות גדול מ־{{count}}" - greater_than_or_equal_to: "חייב להיות גדול ×ו שווה ל־{{count}}" - equal_to: "חייב להיות שווה ל־{{count}}" - less_than: "חייב להיות קטן מ־{{count}}" - less_than_or_equal_to: "חייב להיות קטן ×ו שווה ל־{{count}}" + 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: "חייב להיות מ×וחר יותר מת×ריך ההתחלה" @@ -155,12 +159,12 @@ notice_locking_conflict: המידע עודכן על ידי משתמש ×חר. notice_not_authorized: ×ינך מורשה לר×ות דף ×–×”. notice_not_authorized_archived_project: הפרויקט ש×תה מנסה לגשת ×ליו × ×ž×¦× ×‘×רכיון. - notice_email_sent: "דו×ל נשלח לכתובת {{value}}" - notice_email_error: "×רעה שגי××” בעת שליחת הדו×ל ({{value}})" + 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_failed_to_save_issues: "נכשרת בשמירת %{count} נוש×\×™× ×‘ %{total} נבחרו: %{ids}." + notice_failed_to_save_members: "כשלון בשמירת חבר(×™×): %{errors}." notice_no_issue_selected: "×œ× × ×‘×—×¨ ××£ נוש×! בחר בבקשה ×ת הנוש××™× ×©×‘×¨×¦×•× ×š לערוך." notice_account_pending: "החשבון שלך נוצר ועתה מחכה ל×ישור מנהל המערכת." notice_default_data_loaded: ×פשרויות ברירת מחדל מופעלות. @@ -168,9 +172,9 @@ notice_unable_delete_time_entry: ×œ× × ×™×ª×Ÿ למחוק רשומת זמן. notice_issue_done_ratios_updated: ×חוזי התקדמות ×œ× ×•×©× ×¢×•×“×›× ×•. - error_can_t_load_default_data: "×פשרויות ברירת המחדל ×œ× ×”×¦×œ×™×—×• להיטען: {{value}}" + error_can_t_load_default_data: "×פשרויות ברירת המחדל ×œ× ×”×¦×œ×™×—×• להיטען: %{value}" error_scm_not_found: כניסה ו\×ו מהדורה ××™× × ×§×™×™×ž×™× ×‘×ž×גר. - error_scm_command_failed: "×רעה שגי××” בעת ניסון גישה למ×גר: {{value}}" + error_scm_command_failed: "×רעה שגי××” בעת ניסון גישה למ×גר: %{value}" error_scm_annotate: "הכניסה ×œ× ×§×™×™×ž×ª ×ו ×©×œ× × ×™×ª×Ÿ לת×ר ×ותה." error_issue_not_found_in_project: 'הנוש××™× ×œ× × ×ž×¦×ו ×ו ××™× × ×©×™×›×™× ×œ×¤×¨×•×™×§×˜' error_no_tracker_in_project: ×œ× ×”×•×’×“×¨ סיווג לפרויקט ×–×”. × × ×‘×“×•×§ ×ת הגדרות הפרויקט. @@ -184,26 +188,26 @@ error_workflow_copy_source: × × ×‘×—×¨ סיווג ×ו תפקיד מקור error_workflow_copy_target: × × ×‘×—×¨ תפקיד(×™×) וסיווג(×™×) error_unable_delete_issue_status: ×œ× × ×™×ª×Ÿ למחוק מצב × ×•×©× - error_unable_to_connect: ×œ× × ×™×ª×Ÿ להתחבר ({{value}}) - warning_attachments_not_saved: "כשלון בשמירת {{count}} קבצי×." + error_unable_to_connect: ×œ× × ×™×ª×Ÿ להתחבר (%{value}) + warning_attachments_not_saved: "כשלון בשמירת %{count} קבצי×." - mail_subject_lost_password: "סיסמת ×”Ö¾{{value}} שלך" + mail_subject_lost_password: "סיסמת ×”Ö¾%{value} שלך" mail_body_lost_password: 'לשינו סיסמת ×”Ö¾Redmine שלך, לחץ על הקישור הב×:' - mail_subject_register: "הפעלת חשבון {{value}}" + mail_subject_register: "הפעלת חשבון %{value}" mail_body_register: 'להפעלת חשבון ×”Ö¾Redmine שלך, לחץ על הקישור הב×:' - mail_body_account_information_external: "×תה יכול להשתמש בחשבון {{value}} כדי להתחבר" + 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: "דף ×”Ö¾wiki â€'{{id}}' נוסף" - mail_body_wiki_content_added: דף ×”Ö¾wiki â€'{{id}}' נוסף ×¢"×™ {{author}}. - mail_subject_wiki_content_updated: "דף ×”Ö¾wiki â€'{{id}}' עודכן" - mail_body_wiki_content_updated: דף ×”Ö¾wiki â€'{{id}}' עודכן ×¢"×™ {{author}}. + 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: "דף ×”Ö¾wiki â€'%{id}' נוסף" + mail_body_wiki_content_added: דף ×”Ö¾wiki â€'%{id}' נוסף ×¢"×™ %{author}. + mail_subject_wiki_content_updated: "דף ×”Ö¾wiki â€'%{id}' עודכן" + mail_body_wiki_content_updated: דף ×”Ö¾wiki â€'%{id}' עודכן ×¢"×™ %{author}. gui_validation_error: שגי××” 1 - gui_validation_error_plural: "{{count}} שגי×ות" + gui_validation_error_plural: "%{count} שגי×ות" field_name: ×©× field_description: תי×ור @@ -266,6 +270,7 @@ field_attr_lastname: תכונת ×©× ×ž×©×¤×—×” field_attr_mail: תכונת דו×"ל field_onthefly: יצירת ×ž×©×ª×ž×©×™× ×–×¨×™×–×” + field_start_date: ת×ריך התחלה field_done_ratio: % גמור field_auth_source: מקור הזדהות field_hide_mail: ×”×—×‘× ×ת כתובת הדו×"ל שלי @@ -431,14 +436,14 @@ label_x_projects: zero: ×œ×œ× ×¤×¨×•×™×§×˜×™× one: פרויקט ×חד - other: "{{count}} פרויקטי×" + 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_issues_by: "נוש××™× ×œ×¤×™ %{value}" label_issue_added: × ×•×©× × ×•×¡×£ label_issue_updated: × ×•×©× ×¢×•×“×›×Ÿ label_document: מסמך @@ -489,7 +494,7 @@ label_registered_on: × ×¨×©× ×‘×ª×ריך label_activity: פעילות label_overall_activity: פעילות כוללת - label_user_activity: "הפעילות של {{value}}" + label_user_activity: "הפעילות של %{value}" label_new: חדש label_logged_as: מחובר ×› label_environment: סביבה @@ -499,7 +504,7 @@ label_auth_source_plural: מקורות הזדהות label_subproject_plural: ×ª×ªÖ¾×¤×¨×•×™×§×˜×™× label_subproject_new: תת־פרויקט חדש - label_and_its_subprojects: "{{value}} וכל ×ª×ª×™Ö¾×”×¤×¨×•×™×§×˜×™× ×©×œ×•" + label_and_its_subprojects: "%{value} וכל ×ª×ª×™Ö¾×”×¤×¨×•×™×§×˜×™× ×©×œ×•" label_min_max_length: ×ורך מינימ×לי - מקסימ×לי label_list: רשימה label_date: ת×ריך @@ -510,8 +515,8 @@ label_text: טקסט ×רוך label_attribute: תכונה label_attribute_plural: תכונות - label_download: "הורדה {{count}}" - label_download_plural: "{{count}} הורדות" + label_download: "הורדה %{count}" + label_download_plural: "%{count} הורדות" label_no_data: ×ין מידע להציג label_change_status: שנה מצב label_history: היסטוריה @@ -543,17 +548,17 @@ label_closed_issues: סגור label_closed_issues_plural: ×¡×’×•×¨×™× label_x_open_issues_abbr_on_total: - zero: 0 ×¤×ª×•×—×™× / {{total}} - one: 1 פתוח / {{total}} - other: "{{count}} ×¤×ª×•×—×™× / {{total}}" + zero: 0 ×¤×ª×•×—×™× / %{total} + one: 1 פתוח / %{total} + other: "%{count} ×¤×ª×•×—×™× / %{total}" label_x_open_issues_abbr: zero: 0 ×¤×ª×•×—×™× one: 1 פתוח - other: "{{count}} פתוחי×" + other: "%{count} פתוחי×" label_x_closed_issues_abbr: zero: 0 ×¡×’×•×¨×™× one: 1 סגור - other: "{{count}} סגורי×" + other: "%{count} סגורי×" label_total: סה"×› label_permissions: הרש×ות label_current_status: מצב נוכחי @@ -571,7 +576,7 @@ label_months_from: ×—×•×“×©×™× ×ž label_gantt: ×’×נט label_internal: פנימי - label_last_changes: "{{count}} ×©×™× ×•×™× ×חרוני×" + label_last_changes: "%{count} ×©×™× ×•×™× ×חרוני×" label_change_view_all: צפה בכל ×”×©×™× ×•×™× label_personalize_page: הת×× ×ישית דף ×–×” label_comment: תגובה @@ -579,7 +584,7 @@ label_x_comments: zero: ×ין הערות one: הערה ×חת - other: "{{count}} הערות" + other: "%{count} הערות" label_comment_add: הוסף תגובה label_comment_added: תגובה נוספה label_comment_delete: מחק תגובות @@ -600,7 +605,7 @@ label_yesterday: ×תמול 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: השנה @@ -614,13 +619,13 @@ label_repository: מ×גר label_repository_plural: מ××’×¨×™× label_browse: סייר - label_modification: "שינוי {{count}}" - label_modification_plural: "{{count}} שינויי×" + label_modification: "שינוי %{count}" + label_modification_plural: "%{count} שינויי×" label_branch: ×¢× ×£ label_tag: סימון label_revision: מהדורה label_revision_plural: מהדורות - label_revision_id: מהדורה {{value}} + label_revision_id: מהדורה %{value} label_associated_revisions: מהדורות קשורות label_added: נוסף label_modified: שונה @@ -637,8 +642,8 @@ label_sort_lower: ×”×–×– למטה label_sort_lowest: ×”×–×– לתחתית label_roadmap: מפת ×”×“×¨×›×™× - label_roadmap_due_in: "נגמר בעוד {{value}}" - label_roadmap_overdue: "{{value}} מ×חר" + label_roadmap_due_in: "נגמר בעוד %{value}" + label_roadmap_overdue: "%{value} מ×חר" label_roadmap_no_issues: ×ין נוש××™× ×œ×’×™×¨×¡×” זו label_search: חפש label_result_plural: תוצ×ות @@ -657,8 +662,8 @@ label_issue_tracking: מעקב ×חר נוש××™× label_spent_time: זמן שהושקע label_overall_spent_time: זמן שהושקע סה"×› - label_f_hour: "{{value}} שעה" - label_f_hour_plural: "{{value}} שעות" + label_f_hour: "%{value} שעה" + label_f_hour_plural: "%{value} שעות" label_time_tracking: מעקב ×–×ž× ×™× label_change_plural: ×©×™× ×•×™×™× label_statistics: סטטיסטיקות @@ -709,15 +714,15 @@ label_date_from: מת×ריך label_date_to: עד label_language_based: מבוסס שפה - label_sort_by: "מיין לפי {{value}}" + 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_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_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: סדרות ×©×™× ×•×™×™× @@ -736,7 +741,7 @@ label_registration_activation_by_email: הפעל חשבון ב×מצעות דו×"ל label_registration_manual_activation: הפעלת חשבון ידנית label_registration_automatic_activation: הפעלת חשבון ×וטומטית - label_display_per_page: "בכל דף: {{value}} תוצ×ות" + label_display_per_page: "בכל דף: %{value} תוצ×ות" label_age: גיל label_change_properties: שנה מ××¤×™×™× ×™× label_general: כללי @@ -759,7 +764,7 @@ label_sort: מיון label_ascending: בסדר עולה label_descending: בסדר יורד - label_date_from_to: 'מת×ריך {{start}} ועד ת×ריך {{end}}' + label_date_from_to: 'מת×ריך %{start} ועד ת×ריך %{end}' label_wiki_content_added: נוסף דף ל־wiki label_wiki_content_updated: דף wiki עודכן label_group: קבוצה @@ -778,7 +783,7 @@ label_display_used_statuses_only: הצג רק ×ת ×”×ž×¦×‘×™× ×‘×©×™×ž×•×© לסיווג ×–×” label_api_access_key: מפתח גישה ל־API label_missing_api_access_key: חסר מפתח גישה ל־API - label_api_access_key_created_on: 'מפתח גישה ל־API נוצר לפני {{value}}' + label_api_access_key_created_on: 'מפתח גישה ל־API נוצר לפני %{value}' label_profile: פרופיל label_subtask_plural: תתי־משימות label_project_copy_notifications: שלח התר×ות דו×ר במהלך העתקת הפרויקט @@ -793,7 +798,7 @@ button_create_and_continue: צור ופתח חדש button_test: בדוק button_edit: ערוך - button_edit_associated_wikipage: "ערוך דף wiki מקושר: {{page_title}}" + button_edit_associated_wikipage: "ערוך דף wiki מקושר: %{page_title}" button_add: הוסף button_change: שנה button_apply: החל @@ -842,54 +847,54 @@ 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: ×”×× ×œ×ž×—×•×§ ×ת ×”× ×•×©× ×•×ת כל בניו? - text_journal_changed: "{{label}} השתנה מ{{old}} ל{{new}}" - text_journal_set_to: "{{label}} נקבע ל{{value}}" - text_journal_deleted: "{{label}} נמחק ({{old}})" - text_journal_added: "{{label}} {{value}} נוסף" + 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), ×ž×¡×¤×¨×™× ×•×ž×§×¤×™×.
    ברגע שנשמר, ×œ× × ×™×ª×Ÿ לשנות ×ת המזהה.' - text_caracters_maximum: "×ž×§×¡×™×ž×•× {{count}} תווי×." - text_caracters_minimum: "חייב להיות לפחות ב×ורך של {{count}} תווי×." - text_length_between: "×ורך בין {{min}} ל {{max}} תווי×." + 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: ניתן להזין מספר ×¢×¨×›×™× (שורה ×חת לכל ערך). text_issues_ref_in_commit_messages: קישור ×•×ª×™×§×•× × ×•×©××™× ×‘×”×•×“×¢×•×ª הפקדה - text_issue_added: "×”× ×•×©× {{id}} דווח (בידי {{author}})." - text_issue_updated: "×”× ×•×©× {{id}} עודכן (בידי {{author}})." + text_issue_added: "×”× ×•×©× %{id} דווח (בידי %{author})." + text_issue_updated: "×”× ×•×©× %{id} עודכן (בידי %{author})." text_wiki_destroy_confirmation: ×”×× ×תה בטוח שברצונך למחוק ×ת ×”WIKI ×”×–×” ו×ת כל תוכנו? - text_issue_category_destroy_question: "כמה נוש××™× ({{count}}) ×ž×•×¦×‘×™× ×œ×§×˜×’×•×¨×™×” הזו. מה ברצונך לעשות?" + 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_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_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_user_wrote: "%{value} כתב:" + text_enumeration_destroy_question: "%{count} ××•×‘×™×§×˜×™× ×ž×•×¦×‘×™× ×œ×¢×¨×š ×–×”." text_enumeration_category_reassign_to: 'הצב מחדש לערך ×”×–×”:' - text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/email.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' + text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/configuration.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' 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_destroy_question: לדף ×–×” יש %{descendants} ×“×¤×™× ×‘× ×™× ×•×ª×œ×•×™×™×. מה ברצונך לעשות? text_wiki_page_nullify_children: הש×ר ×“×¤×™× ×‘× ×™× ×›×“×¤×™× ×¨××©×™×™× text_wiki_page_destroy_children: מחק ×ת ×”×“×¤×™× ×”×‘× ×™× ×•×ת כל ×”×ª×œ×•×™×™× ×‘×”× text_wiki_page_reassign_children: הצב מחדש ×“×¤×™× ×‘× ×™× ×œ×“×£ ×”×ב הנוכחי @@ -928,8 +933,16 @@ label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/hr.yml --- a/config/locales/hr.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/hr.yml Thu Mar 03 12:11:53 2011 +0000 @@ -35,34 +35,34 @@ half_a_minute: "pola minute" less_than_x_seconds: one: "manje od sekunde" - other: "manje od {{count}} sekundi" + other: "manje od %{count} sekundi" x_seconds: one: "1 sekunda" - other: "{{count}} sekundi" + other: "%{count} sekundi" less_than_x_minutes: one: "manje od minute" - other: "manje od {{count}} minuta" + other: "manje od %{count} minuta" x_minutes: one: "1 minuta" - other: "{{count}} minuta" + other: "%{count} minuta" about_x_hours: one: "oko sat vremena" - other: "oko {{count}} sati" + other: "oko %{count} sati" x_days: one: "1 dan" - other: "{{count}} dana" + other: "%{count} dana" about_x_months: one: "oko 1 mjesec" - other: "oko {{count}} mjeseci" + other: "oko %{count} mjeseci" x_months: one: "mjesec" - other: "{{count}} mjeseci" + other: "%{count} mjeseci" about_x_years: one: "1 godina" - other: "{{count}} godina" + other: "%{count} godina" over_x_years: one: "preko 1 godine" - other: "preko {{count}} godina" + other: "preko %{count} godina" number: format: @@ -93,6 +93,10 @@ 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 ukljuceno u listu" exclusion: "je rezervirano" @@ -101,17 +105,17 @@ accepted: "mora biti prihvaćen" empty: "ne može biti prazno" blank: "ne može biti razmaka" - too_long: "je predug (maximum is {{count}} characters)" - too_short: "je prekratak (minimum is {{count}} characters)" - wrong_length: "je pogreÅ¡ne dužine (should be {{count}} characters)" + too_long: "je predug (maximum is %{count} characters)" + too_short: "je prekratak (minimum is %{count} characters)" + wrong_length: "je pogreÅ¡ne dužine (should be %{count} characters)" taken: "već je zauzeto" 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 bit manji ili jednak{{count}}" + 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 bit manji ili jednak%{count}" odd: "mora biti neparan" even: "mora biti paran" greater_than_start_date: "mora biti veci nego pocetni datum" @@ -148,20 +152,20 @@ notice_file_not_found: Stranica kojoj ste pokuÅ¡ali pristupiti ne postoji ili je uklonjena. notice_locking_conflict: Podataci su ažurirani od strane drugog korisnika. notice_not_authorized: Niste ovlaÅ¡teni za pristup ovoj stranici. - notice_email_sent: E-mail je poslan {{value}}" - notice_email_error: Dogodila se pogreÅ¡ka tijekom slanja E-maila ({{value}})" + notice_email_sent: E-mail je poslan %{value}" + notice_email_error: Dogodila se pogreÅ¡ka tijekom slanja E-maila (%{value})" notice_feeds_access_key_reseted: VaÅ¡ RSS pristup je resetovan. notice_api_access_key_reseted: VaÅ¡ API pristup je resetovan. - notice_failed_to_save_issues: "Neuspjelo spremanje {{count}} predmeta na {{total}} odabrane: {{ids}}." + notice_failed_to_save_issues: "Neuspjelo spremanje %{count} predmeta na %{total} odabrane: %{ids}." notice_no_issue_selected: "Niti jedan predmet nije odabran! Molim, odaberite predmete koje želite urediti." notice_account_pending: "VaÅ¡ korisnicki raÄun je otvoren, Äeka odobrenje administratora." notice_default_data_loaded: Konfiguracija je uspjeÅ¡no uÄitana. notice_unable_delete_version: Nije moguće izbrisati verziju. notice_issue_done_ratios_updated: Issue done ratios updated. - error_can_t_load_default_data: "Zadanu konfiguracija nije uÄitana: {{value}}" + error_can_t_load_default_data: "Zadanu konfiguracija nije uÄitana: %{value}" error_scm_not_found: "Unos i/ili revizija nije pronaÄ‘en." - error_scm_command_failed: "Dogodila se pogreÅ¡ka prilikom pokuÅ¡aja pristupa: {{value}}" + error_scm_command_failed: "Dogodila se pogreÅ¡ka prilikom pokuÅ¡aja pristupa: %{value}" error_scm_annotate: "Ne postoji ili ne može biti obilježen." error_issue_not_found_in_project: 'Nije pronaÄ‘en ili ne pripada u ovaj projekt' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' @@ -172,25 +176,25 @@ 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}} Datoteka/e nije mogla biti spremljena." + warning_attachments_not_saved: "%{count} Datoteka/e nije mogla biti spremljena." - mail_subject_lost_password: "VaÅ¡a {{value}} zaporka" + mail_subject_lost_password: "VaÅ¡a %{value} zaporka" mail_body_lost_password: 'Kako biste promijenili VaÅ¡u zaporku slijedite poveznicu:' - mail_subject_register: "Aktivacija korisniÄog raÄuna {{value}}" + mail_subject_register: "Aktivacija korisniÄog raÄuna %{value}" mail_body_register: 'Da biste aktivirali svoj raÄun, kliknite na sljedeci link:' - mail_body_account_information_external: "Možete koristiti vaÅ¡ raÄun {{value}} za prijavu." + mail_body_account_information_external: "Možete koristiti vaÅ¡ raÄun %{value} za prijavu." mail_body_account_information: VaÅ¡i korisniÄki podaci - mail_subject_account_activation_request: "{{value}} predmet za aktivaciju korisniÄkog raÄuna" - mail_body_account_activation_request: "Novi korisnik ({{value}}) je registriran. Njegov korisniÄki raÄun Äeka vaÅ¡e odobrenje:" - mail_subject_reminder: "{{count}} predmet(a) dospijeva sljedećih {{days}} dana" - mail_body_reminder: "{{count}} vama dodijeljen(ih) predmet(a) dospijeva u sljedećih {{days}} dana:" - 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}}." + mail_subject_account_activation_request: "%{value} predmet za aktivaciju korisniÄkog raÄuna" + mail_body_account_activation_request: "Novi korisnik (%{value}) je registriran. Njegov korisniÄki raÄun Äeka vaÅ¡e odobrenje:" + mail_subject_reminder: "%{count} predmet(a) dospijeva sljedećih %{days} dana" + mail_body_reminder: "%{count} vama dodijeljen(ih) predmet(a) dospijeva u sljedećih %{days} dana:" + 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 pogreÅ¡ka - gui_validation_error_plural: "{{count}} pogreÅ¡aka" + gui_validation_error_plural: "%{count} pogreÅ¡aka" field_name: Ime field_description: Opis @@ -253,6 +257,7 @@ field_attr_lastname: Atribut prezimena field_attr_mail: Atribut e-poÅ¡te field_onthefly: "Izrada korisnika \"u hodu\"" + field_start_date: Pocetak field_done_ratio: % UÄinjeno field_auth_source: Vrsta prijavljivanja field_hide_mail: Sakrij moju adresu e-poÅ¡te @@ -407,14 +412,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Svi Projekti label_project_latest: Najnoviji projekt label_issue: Predmet label_issue_new: Novi predmet label_issue_plural: Predmeti label_issue_view_all: Pregled svih predmeta - label_issues_by: "Predmeti od {{value}}" + label_issues_by: "Predmeti od %{value}" label_issue_added: Predmet dodan label_issue_updated: Predmet promijenjen label_document: Dokument @@ -464,7 +469,7 @@ label_registered_on: Registrirano label_activity: Aktivnosti label_overall_activity: Aktivnosti - label_user_activity: "{{value}} ova/ina aktivnost" + label_user_activity: "%{value} ova/ina aktivnost" label_new: Novi label_logged_as: Prijavljeni ste kao label_environment: Okolina @@ -474,7 +479,7 @@ label_auth_source_plural: NaÄini prijavljivanja label_subproject_plural: Potprojekti label_subproject_new: Novi potprojekt - label_and_its_subprojects: "{{value}} i njegovi potprojekti" + label_and_its_subprojects: "%{value} i njegovi potprojekti" label_min_max_length: Min - Maks veliÄina label_list: Liste label_date: Datum @@ -485,8 +490,8 @@ label_text: Long text label_attribute: Atribut label_attribute_plural: Atributi - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Nema podataka za prikaz label_change_status: Promjena statusa label_history: Povijest @@ -518,17 +523,17 @@ label_closed_issues: Zatvoren label_closed_issues_plural: Zatvoreno label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Ukupno label_permissions: Dozvole label_current_status: Trenutni status @@ -546,7 +551,7 @@ label_months_from: Mjeseci od label_gantt: Gantt label_internal: Interno - label_last_changes: "Posljednjih {{count}} promjena" + label_last_changes: "Posljednjih %{count} promjena" label_change_view_all: Prikaz svih promjena label_personalize_page: Prilagodite ovu stranicu label_comment: Komentar @@ -554,7 +559,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Dodaj komentar label_comment_added: Komentar dodan label_comment_delete: Brisanje komentara @@ -575,7 +580,7 @@ label_yesterday: juÄer label_this_week: ovog tjedna label_last_week: proÅ¡log tjedna - label_last_n_days: "zadnjih {{count}} dana" + label_last_n_days: "zadnjih %{count} dana" label_this_month: ovog mjeseca label_last_month: proÅ¡log mjeseca label_this_year: ove godine @@ -589,13 +594,13 @@ label_repository: SkladiÅ¡te label_repository_plural: SkladiÅ¡ta label_browse: Pregled - label_modification: "{{count}} promjena" - label_modification_plural: "{{count}} promjena" + label_modification: "%{count} promjena" + label_modification_plural: "%{count} promjena" label_branch: Branch label_tag: Tag label_revision: Revizija label_revision_plural: Revizije - label_revision_id: "Revision {{value}}" + label_revision_id: "Revision %{value}" label_associated_revisions: Dodijeljene revizije label_added: dodano label_modified: promijenjen @@ -612,8 +617,8 @@ label_sort_lower: Premjesti prema dolje label_sort_lowest: Premjesti na dno label_roadmap: Putokaz - label_roadmap_due_in: "ZavrÅ¡ava se za {{value}}" - label_roadmap_overdue: "{{value}} kasni" + label_roadmap_due_in: "ZavrÅ¡ava se za %{value}" + label_roadmap_overdue: "%{value} kasni" label_roadmap_no_issues: Nema predmeta za ovu verziju label_search: Traži label_result_plural: Rezultati @@ -631,8 +636,8 @@ label_changes_details: Detalji svih promjena label_issue_tracking: Praćenje predmeta label_spent_time: UtroÅ¡eno vrijeme - label_f_hour: "{{value}} sata" - label_f_hour_plural: "{{value}} sati" + label_f_hour: "%{value} sata" + label_f_hour_plural: "%{value} sati" label_time_tracking: Praćenje vremena label_change_plural: Promjene label_statistics: Statistika @@ -681,15 +686,15 @@ label_date_from: Od label_date_to: Do label_language_based: Zasnovano na jeziku - label_sort_by: "Uredi po {{value}}" + label_sort_by: "Uredi po %{value}" label_send_test_email: PoÅ¡alji testno E-pismo label_feeds_access_key: RSS access key label_missing_feeds_access_key: Missing a RSS access key - label_feeds_access_key_created_on: "RSS kljuc za pristup je napravljen prije {{value}}" + label_feeds_access_key_created_on: "RSS kljuc za pristup je napravljen prije %{value}" label_module_plural: Moduli - label_added_time_by: "Promijenio {{author}} prije {{age}}" - label_updated_time_by: "Dodao/la {{author}} prije {{age}}" - label_updated_time: "Promijenjeno prije {{value}}" + label_added_time_by: "Promijenio %{author} prije %{age}" + label_updated_time_by: "Dodao/la %{author} prije %{age}" + label_updated_time: "Promijenjeno prije %{value}" label_jump_to_a_project: Prebaci se na projekt... label_file_plural: Datoteke label_changeset_plural: Promjene @@ -705,7 +710,7 @@ label_registration_activation_by_email: aktivacija putem e-poÅ¡te label_registration_manual_activation: ruÄna aktivacija label_registration_automatic_activation: automatska aktivacija - label_display_per_page: "Po stranici: {{value}}" + label_display_per_page: "Po stranici: %{value}" label_age: Starost label_change_properties: Promijeni svojstva label_general: Općenito @@ -728,7 +733,7 @@ label_sort: Sort label_ascending: Ascending label_descending: Descending - label_date_from_to: From {{start}} to {{end}} + 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 @@ -747,7 +752,7 @@ 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_api_access_key_created_on: "API access key created %{value} ago" button_login: Prijavi button_submit: PoÅ¡alji @@ -807,54 +812,54 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 znaÄi bez ograniÄenja text_project_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj projekt i sve njegove podatke? - text_subprojects_destroy_warning: "Njegov(i) potprojekt(i): {{value}} će takoÄ‘er biti obrisan." + text_subprojects_destroy_warning: "Njegov(i) potprojekt(i): %{value} će takoÄ‘er biti obrisan." text_workflow_edit: Select a role and a tracker to edit the workflow text_are_you_sure: Da li ste sigurni? - text_journal_changed: "{{label}} promijenjen iz {{old}} u {{new}}" - text_journal_set_to: "{{label}} postavi na {{value}}" - text_journal_deleted: "{{label}} izbrisano ({{old}})" - text_journal_added: "{{label}} {{value}} added" + text_journal_changed: "%{label} promijenjen iz %{old} u %{new}" + text_journal_set_to: "%{label} postavi na %{value}" + text_journal_deleted: "%{label} izbrisano (%{old})" + text_journal_added: "%{label} %{value} added" text_tip_issue_begin_day: Zadaci koji poÄinju ovog dana text_tip_issue_end_day: zadaci koji se zavrÅ¡avaju ovog dana text_tip_issue_begin_end_day: Zadaci koji poÄinju i zavrÅ¡avaju se ovog dana text_project_identifier_info: 'mala slova (a-z), brojevi i crtice su dozvoljeni.
    Jednom snimljen identifikator se ne može mijenjati!' - text_caracters_maximum: "NajviÅ¡e {{count}} znakova." - text_caracters_minimum: "Mora biti dugaÄko najmanje {{count}} znakova." - text_length_between: "Dužina izmedu {{min}} i {{max}} znakova." + text_caracters_maximum: "NajviÅ¡e %{count} znakova." + text_caracters_minimum: "Mora biti dugaÄko najmanje %{count} znakova." + text_length_between: "Dužina izmedu %{min} i %{max} znakova." text_tracker_no_workflow: Tijek rada nije definiran za ovaj tracker text_unallowed_characters: Nedozvoljeni znakovi text_comma_separated: ViÅ¡estruke vrijednosti su dozvoljene (razdvojene zarezom). text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_tracker_no_workflow: No workflow defined for this tracker text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Predmet {{id}} je prijavljen (prijavio {{author}})." - text_issue_updated: "Predmet {{id}} je promijenjen {{author}})." + text_issue_added: "Predmet %{id} je prijavljen (prijavio %{author})." + text_issue_updated: "Predmet %{id} je promijenjen %{author})." text_wiki_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj wiki i njegov sadržaj? - text_issue_category_destroy_question: "Neke predmeti ({{count}}) su dodijeljeni ovoj kategoriji. Å to želite uraditi?" + text_issue_category_destroy_question: "Neke predmeti (%{count}) su dodijeljeni ovoj kategoriji. Å to želite uraditi?" text_issue_category_destroy_assignments: Ukloni dodjeljivanje kategorija text_issue_category_reassign_to: Ponovo dodijeli predmete ovoj kategoriji text_user_mail_option: "Za neizabrane projekte, primit ćete obavjesti samo o stvarima koje pratite ili u kojima sudjelujete (npr. predmete koje ste vi napravili ili koje su vama dodjeljeni)." 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: UÄitaj poÄetnu konfiguraciju - text_status_changed_by_changeset: "Applied in changeset {{value}}." + text_status_changed_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Jeste li sigurni da želite obrisati izabrani/e predmet(e)?' text_select_project_modules: 'Odaberite module koji će biti omogućeni za ovaj projekt:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Dozvoljeno pisanje u direktorij za privitke text_plugin_assets_writable: Plugin assets directory writable text_rmagick_available: RMagick dostupan (nije obavezno) - text_destroy_time_entries_question: "{{hours}} sati je prijavljeno za predmete koje želite obrisati. Å to ćete uÄiniti?" + text_destroy_time_entries_question: "%{hours} sati je prijavljeno za predmete koje želite obrisati. Å to ćete uÄiniti?" text_destroy_time_entries: ObriÅ¡i prijavljene sate text_assign_time_entries_to_project: Pridruži prijavljene sate projektu text_reassign_time_entries: 'Premjesti prijavljene sate ovom predmetu:' - text_user_wrote: "{{value}} je napisao/la:" - text_enumeration_destroy_question: "{{count}} objekata je pridruženo toj vrijednosti." + text_user_wrote: "%{value} je napisao/la:" + text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti." text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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: '... Ovaj diff je odrezan zato Å¡to prelazi maksimalnu veliÄinu koja može biti prikazana.' 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_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" @@ -906,12 +911,12 @@ 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_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}}." + 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. @@ -919,7 +924,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -930,8 +935,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/hu.yml --- a/config/locales/hu.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/hu.yml Thu Mar 03 12:11:53 2011 +0000 @@ -33,38 +33,38 @@ less_than_x_seconds: # zero: 'kevesebb, mint 1 másodperc' one: 'kevesebb, mint 1 másodperc' - other: 'kevesebb, mint {{count}} másodperc' + other: 'kevesebb, mint %{count} másodperc' x_seconds: one: '1 másodperc' - other: '{{count}} másodperc' + other: '%{count} másodperc' less_than_x_minutes: # zero: 'kevesebb, mint 1 perc' one: 'kevesebb, mint 1 perc' - other: 'kevesebb, mint {{count}} perc' + other: 'kevesebb, mint %{count} perc' x_minutes: one: '1 perc' - other: '{{count}} perc' + other: '%{count} perc' about_x_hours: one: 'majdnem 1 óra' - other: 'majdnem {{count}} óra' + other: 'majdnem %{count} óra' x_days: one: '1 nap' - other: '{{count}} nap' + other: '%{count} nap' about_x_months: one: 'majdnem 1 hónap' - other: 'majdnem {{count}} hónap' + other: 'majdnem %{count} hónap' x_months: one: '1 hónap' - other: '{{count}} hónap' + other: '%{count} hónap' about_x_years: one: 'majdnem 1 év' - other: 'majdnem {{count}} év' + other: 'majdnem %{count} év' over_x_years: one: 'több, mint 1 év' - other: 'több, mint {{count}} év' + other: 'több, mint %{count} év' almost_x_years: one: "közel 1 év" - other: "közel {{count}} év" + other: "közel %{count} év" prompts: year: "Év" month: "Hónap" @@ -117,8 +117,8 @@ errors: template: header: - one: "1 hiba miatt nem menthetÅ‘ a következÅ‘: {{model}}" - other: "{{count}} hiba miatt nem menthetÅ‘ a következÅ‘: {{model}}" + one: "1 hiba miatt nem menthetÅ‘ a következÅ‘: %{model}" + other: "%{count} hiba miatt nem menthetÅ‘ a következÅ‘: %{model}" body: "Problémás mezÅ‘k:" messages: inclusion: "nincs a listában" @@ -128,16 +128,16 @@ accepted: "nincs elfogadva" empty: "nincs megadva" blank: "nincs megadva" - too_long: "túl hosszú (nem lehet több {{count}} karakternél)" - too_short: "túl rövid (legalább {{count}} karakter kell legyen)" - wrong_length: "nem megfelelÅ‘ hosszúságú ({{count}} karakter szükséges)" + too_long: "túl hosszú (nem lehet több %{count} karakternél)" + too_short: "túl rövid (legalább %{count} karakter kell legyen)" + wrong_length: "nem megfelelÅ‘ hosszúságú (%{count} karakter szükséges)" taken: "már foglalt" not_a_number: "nem szám" - greater_than: "nagyobb kell legyen, mint {{count}}" - greater_than_or_equal_to: "legalább {{count}} kell legyen" - equal_to: "pontosan {{count}} kell legyen" - less_than: "kevesebb, mint {{count}} kell legyen" - less_than_or_equal_to: "legfeljebb {{count}} lehet" + greater_than: "nagyobb kell legyen, mint %{count}" + greater_than_or_equal_to: "legalább %{count} kell legyen" + equal_to: "pontosan %{count} kell legyen" + less_than: "kevesebb, mint %{count} kell legyen" + less_than_or_equal_to: "legfeljebb %{count} lehet" odd: "páratlan kell legyen" even: "páros kell legyen" greater_than_start_date: "nagyobbnak kell lennie, mint az indítás dátuma" @@ -174,17 +174,17 @@ notice_file_not_found: Az oldal, amit meg szeretne nézni nem található, vagy átkerült egy másik helyre. notice_locking_conflict: Az adatot egy másik felhasználó idÅ‘ közben módosította. notice_not_authorized: Nincs hozzáférési engedélye ehhez az oldalhoz. - notice_email_sent: "Egy e-mail üzenetet küldtünk a következÅ‘ címre {{value}}" - notice_email_error: "Hiba történt a levél küldése közben ({{value}})" + notice_email_sent: "Egy e-mail üzenetet küldtünk a következÅ‘ címre %{value}" + notice_email_error: "Hiba történt a levél küldése közben (%{value})" notice_feeds_access_key_reseted: Az RSS hozzáférési kulcsát újra generáltuk. - notice_failed_to_save_issues: "Nem sikerült a {{count}} feladat(ok) mentése a {{total}} -ban kiválasztva: {{ids}}." + notice_failed_to_save_issues: "Nem sikerült a %{count} feladat(ok) mentése a %{total} -ban kiválasztva: %{ids}." notice_no_issue_selected: "Nincs feladat kiválasztva! Kérem jelölje meg melyik feladatot szeretné szerkeszteni!" notice_account_pending: "A fiókja létrejött, és adminisztrátori jóváhagyásra vár." notice_default_data_loaded: Az alapértelmezett konfiguráció betöltése sikeresen megtörtént. - error_can_t_load_default_data: "Az alapértelmezett konfiguráció betöltése nem lehetséges: {{value}}" + error_can_t_load_default_data: "Az alapértelmezett konfiguráció betöltése nem lehetséges: %{value}" error_scm_not_found: "A bejegyzés, vagy revízió nem található a tárolóban." - error_scm_command_failed: "A tároló elérése közben hiba lépett fel: {{value}}" + error_scm_command_failed: "A tároló elérése közben hiba lépett fel: %{value}" error_scm_annotate: "A bejegyzés nem létezik, vagy nics jegyzetekkel ellátva." error_issue_not_found_in_project: 'A feladat nem található, vagy nem ehhez a projekthez tartozik' @@ -192,13 +192,13 @@ mail_body_lost_password: 'A Redmine jelszó megváltoztatásához, kattintson a következÅ‘ linkre:' mail_subject_register: Redmine azonosító aktiválása mail_body_register: 'A Redmine azonosítója aktiválásához, kattintson a következÅ‘ linkre:' - mail_body_account_information_external: "A {{value}} azonosító használatával bejelentkezhet a Redmine-ba." + mail_body_account_information_external: "A %{value} azonosító használatával bejelentkezhet a Redmine-ba." mail_body_account_information: Az Ön Redmine azonosítójának információi mail_subject_account_activation_request: Redmine azonosító aktiválási kérelem - mail_body_account_activation_request: "Egy új felhasználó ({{value}}) regisztrált, azonosítója jóváhasgyásra várakozik:" + mail_body_account_activation_request: "Egy új felhasználó (%{value}) regisztrált, azonosítója jóváhasgyásra várakozik:" gui_validation_error: 1 hiba - gui_validation_error_plural: "{{count}} hiba" + gui_validation_error_plural: "%{count} hiba" field_name: Név field_description: Leírás @@ -260,6 +260,7 @@ field_attr_lastname: Vezetéknév field_attr_mail: E-mail field_onthefly: On-the-fly felhasználó létrehozás + field_start_date: Kezdés dátuma field_done_ratio: Elkészült (%) field_auth_source: Azonosítási mód field_hide_mail: Rejtse el az e-mail címem @@ -334,14 +335,14 @@ label_x_projects: zero: nincsenek projektek one: 1 projekt - other: "{{count}} projekt" + other: "%{count} projekt" label_project_all: Az összes projekt label_project_latest: Legutóbbi projektek label_issue: Feladat label_issue_new: Új feladat label_issue_plural: Feladatok label_issue_view_all: Minden feladat - label_issues_by: "{{value}} feladatai" + label_issues_by: "%{value} feladatai" label_issue_added: Feladat hozzáadva label_issue_updated: Feladat frissítve label_document: Dokumentum @@ -398,7 +399,7 @@ label_auth_source_new: Új azonosítási mód label_auth_source_plural: Azonosítási módok label_subproject_plural: Alprojektek - label_and_its_subprojects: "{{value}} és alprojektjei" + label_and_its_subprojects: "%{value} és alprojektjei" label_min_max_length: Min - Max hossz label_list: Lista label_date: Dátum @@ -409,8 +410,8 @@ label_text: Hosszú szöveg label_attribute: Tulajdonság label_attribute_plural: Tulajdonságok - label_download: "{{count}} Letöltés" - label_download_plural: "{{count}} Letöltés" + label_download: "%{count} Letöltés" + label_download_plural: "%{count} Letöltés" label_no_data: Nincs megjeleníthetÅ‘ adat label_change_status: Státusz módosítása label_history: Történet @@ -441,17 +442,17 @@ label_closed_issues: lezárt label_closed_issues_plural: lezárt label_x_open_issues_abbr_on_total: - zero: nyitott 0 / {{total}} - one: nyitott 1 / {{total}} - other: "nyitott {{count}} / {{total}}" + zero: nyitott 0 / %{total} + one: nyitott 1 / %{total} + other: "nyitott %{count} / %{total}" label_x_open_issues_abbr: zero: 0 nyitott one: 1 nyitott - other: "{{count}} nyitott" + other: "%{count} nyitott" label_x_closed_issues_abbr: zero: 0 lezárt one: 1 lezárt - other: "{{count}} lezárt" + other: "%{count} lezárt" label_total: Összesen label_permissions: Jogosultságok label_current_status: Jelenlegi státusz @@ -469,7 +470,7 @@ label_months_from: hónap, kezdve label_gantt: Gantt label_internal: BelsÅ‘ - label_last_changes: "utolsó {{count}} változás" + label_last_changes: "utolsó %{count} változás" label_change_view_all: Minden változás megtekintése label_personalize_page: Az oldal testreszabása label_comment: Megjegyzés @@ -477,7 +478,7 @@ label_x_comments: zero: nincs megjegyzés one: 1 megjegyzés - other: "{{count}} megjegyzés" + other: "%{count} megjegyzés" label_comment_add: Megjegyzés hozzáadása label_comment_added: Megjegyzés hozzáadva label_comment_delete: Megjegyzések törlése @@ -496,7 +497,7 @@ label_yesterday: tegnap label_this_week: aktuális hét label_last_week: múlt hét - label_last_n_days: "az elmúlt {{count}} nap" + label_last_n_days: "az elmúlt %{count} nap" label_this_month: aktuális hónap label_last_month: múlt hónap label_this_year: aktuális év @@ -510,8 +511,8 @@ label_repository: Tároló label_repository_plural: Tárolók label_browse: Tallóz - label_modification: "{{count}} változás" - label_modification_plural: "{{count}} változás" + label_modification: "%{count} változás" + label_modification_plural: "%{count} változás" label_revision: Revízió label_revision_plural: Revíziók label_associated_revisions: Kapcsolt revíziók @@ -527,8 +528,8 @@ label_sort_lower: Eggyel lejjebb label_sort_lowest: Az aljára label_roadmap: Életút - label_roadmap_due_in: "Elkészültéig várhatóan még {{value}}" - label_roadmap_overdue: "{{value}} késésben" + label_roadmap_due_in: "Elkészültéig várhatóan még %{value}" + label_roadmap_overdue: "%{value} késésben" label_roadmap_no_issues: Nincsenek feladatok ehhez a verzióhoz label_search: Keresés label_result_plural: Találatok @@ -546,8 +547,8 @@ label_changes_details: Változások részletei label_issue_tracking: Feladat követés label_spent_time: Ráfordított idÅ‘ - label_f_hour: "{{value}} óra" - label_f_hour_plural: "{{value}} óra" + label_f_hour: "%{value} óra" + label_f_hour_plural: "%{value} óra" label_time_tracking: IdÅ‘ rögzítés label_change_plural: Változások label_statistics: Statisztikák @@ -595,12 +596,12 @@ label_date_from: 'Kezdet:' label_date_to: 'Vége:' label_language_based: A felhasználó nyelve alapján - label_sort_by: "{{value}} szerint rendezve" + label_sort_by: "%{value} szerint rendezve" label_send_test_email: Teszt e-mail küldése - label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva ennyivel ezelÅ‘tt: {{value}}" + label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva ennyivel ezelÅ‘tt: %{value}" label_module_plural: Modulok - label_added_time_by: "{{author}} adta hozzá ennyivel ezelÅ‘tt: {{age}}" - label_updated_time: "Utolsó módosítás ennyivel ezelÅ‘tt: {{value}}" + label_added_time_by: "%{author} adta hozzá ennyivel ezelÅ‘tt: %{age}" + label_updated_time: "Utolsó módosítás ennyivel ezelÅ‘tt: %{value}" label_jump_to_a_project: Ugrás projekthez... label_file_plural: Fájlok label_changeset_plural: Changesets @@ -616,7 +617,7 @@ label_registration_activation_by_email: Fiók aktiválása e-mailben label_registration_manual_activation: Manuális fiók aktiválás label_registration_automatic_activation: Automatikus fiók aktiválás - label_display_per_page: "Oldalanként: {{value}}" + label_display_per_page: "Oldalanként: %{value}" label_age: Kor label_change_properties: Tulajdonságok változtatása label_general: Ãltalános @@ -678,36 +679,36 @@ text_regexp_info: pl. ^[A-Z0-9]+$ text_min_max_length_info: 0 = nincs korlátozás text_project_destroy_confirmation: Biztosan törölni szeretné a projektet és vele együtt minden kapcsolódó adatot ? - text_subprojects_destroy_warning: "Az alprojekt(ek): {{value}} szintén törlésre kerülnek." + text_subprojects_destroy_warning: "Az alprojekt(ek): %{value} szintén törlésre kerülnek." text_workflow_edit: Válasszon egy szerepkört, és egy feladat típust a workflow szerkesztéséhez text_are_you_sure: Biztos benne ? text_tip_issue_begin_day: a feladat ezen a napon kezdÅ‘dik text_tip_issue_end_day: a feladat ezen a napon ér véget text_tip_issue_begin_end_day: a feladat ezen a napon kezdÅ‘dik és ér véget text_project_identifier_info: 'Kis betűk (a-z), számok és kötÅ‘jel megengedett.
    Mentés után az azonosítót megváltoztatni nem lehet.' - text_caracters_maximum: "maximum {{count}} karakter." - text_caracters_minimum: "Legkevesebb {{count}} karakter hosszúnek kell lennie." - text_length_between: "Legalább {{min}} és legfeljebb {{max}} hosszú karakter." + text_caracters_maximum: "maximum %{count} karakter." + text_caracters_minimum: "Legkevesebb %{count} karakter hosszúnek kell lennie." + text_length_between: "Legalább %{min} és legfeljebb %{max} hosszú karakter." text_tracker_no_workflow: Nincs workflow definiálva ehhez a feladat típushoz text_unallowed_characters: Tiltott karakterek text_comma_separated: Több érték megengedett (vesszÅ‘vel elválasztva) text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben - text_issue_added: "A feladatot {{id}} bejelentette: {{author}}." - text_issue_updated: "A feladatot {{id}} módosította: {{author}}." + text_issue_added: "A feladatot %{id} bejelentette: %{author}." + text_issue_updated: "A feladatot %{id} módosította: %{author}." text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ? - text_issue_category_destroy_question: "Néhány feladat ({{count}}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ?" + text_issue_category_destroy_question: "Néhány feladat (%{count}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ?" text_issue_category_destroy_assignments: Kategória hozzárendelés megszűntetése text_issue_category_reassign_to: Feladatok újra hozzárendelése másik kategóriához text_user_mail_option: "A nem kiválasztott projektekrÅ‘l csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelÅ‘)" text_no_configuration_data: "Szerepkörök, feladat típusok, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErÅ‘sen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt." text_load_default_configuration: Alapértelmezett konfiguráció betöltése - text_status_changed_by_changeset: "Applied in changeset {{value}}." + text_status_changed_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Biztos benne, hogy törölni szeretné a kijelölt feladato(ka)t ?' text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:' text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva text_file_repository_writable: Fájl tároló írható text_rmagick_available: RMagick elérhetÅ‘ (opcionális) - text_destroy_time_entries_question: "{{hours}} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ?" + text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ?" text_destroy_time_entries: A rögzített órák törlése text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez text_reassign_time_entries: 'A rögzített órák újra hozzárendelése másik feladathoz:' @@ -737,18 +738,18 @@ enumeration_issue_priorities: Feladat prioritások enumeration_doc_categories: Dokumentum kategóriák enumeration_activities: Tevékenységek (idÅ‘ rögzítés) - mail_body_reminder: "{{count}} neked kiosztott feladat határidÅ‘s az elkövetkezÅ‘ {{days}} napban:" - mail_subject_reminder: "{{count}} feladat határidÅ‘s az elkövetkezÅ‘ {{days}} napokban" - text_user_wrote: "{{value}} írta:" + mail_body_reminder: "%{count} neked kiosztott feladat határidÅ‘s az elkövetkezÅ‘ %{days} napban:" + mail_subject_reminder: "%{count} feladat határidÅ‘s az elkövetkezÅ‘ %{days} napokban" + text_user_wrote: "%{value} írta:" label_duplicated_by: duplikálta setting_enabled_scm: ForráskódkezelÅ‘ (SCM) engedélyezése text_enumeration_category_reassign_to: 'Újra hozzárendelés ehhez:' - text_enumeration_destroy_question: "{{count}} objektum van hozzárendelve ehhez az értékhez." + text_enumeration_destroy_question: "%{count} objektum van hozzárendelve ehhez az értékhez." label_incoming_emails: Beérkezett levelek label_generate_key: Kulcs generálása setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez setting_mail_handler_api_key: API kulcs - 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/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." + 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 @@ -809,12 +810,12 @@ text_repository_usernames_mapping: "Ãllítsd be a felhasználó összerendeléseket a Redmine, és a tároló logban található felhasználók között.\nAz azonos felhasználó nevek összerendelése automatikusan megtörténik." permission_edit_own_messages: Saját üzenetek szerkesztése permission_delete_own_messages: Saját üzenetek törlése - label_user_activity: "{{value}} tevékenységei" - label_updated_time_by: "Módosította {{author}} ennyivel ezelÅ‘tt: {{age}}" + label_user_activity: "%{value} tevékenységei" + label_updated_time_by: "Módosította %{author} ennyivel ezelÅ‘tt: %{age}" text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthetÅ‘ sorok száma.' setting_diff_max_lines_displayed: A megjelenítendÅ‘ sorok száma (maximum) a diff fájloknál text_plugin_assets_writable: Plugin eszközök könyvtár írható - warning_attachments_not_saved: "{{count}} fájl mentése nem sikerült." + warning_attachments_not_saved: "%{count} fájl mentése nem sikerült." button_create_and_continue: Létrehozás és folytatás text_custom_field_possible_values_info: 'Értékenként egy sor' label_display: Megjelenés @@ -829,21 +830,21 @@ label_descending: CsökkenÅ‘ label_sort: Rendezés label_ascending: NövekvÅ‘ - label_date_from_to: "{{start}} -tól {{end}} -ig" + label_date_from_to: "%{start} -tól %{end} -ig" label_greater_or_equal: ">=" label_less_or_equal: "<=" - text_wiki_page_destroy_question: Ennek az oldalnak {{descendants}} gyermek-, és leszármazott oldala van. Mit szeretne tenni? + text_wiki_page_destroy_question: Ennek az oldalnak %{descendants} gyermek-, és leszármazott oldala van. Mit szeretne tenni? text_wiki_page_reassign_children: Az aloldalak hozzárendelése ehhez a szülÅ‘ oldalhoz text_wiki_page_nullify_children: Az aloldalak megtartása, mint fÅ‘oldalak text_wiki_page_destroy_children: Minden aloldal és leszármazottjának törlése setting_password_min_length: Minimum jelszó hosszúság field_group_by: Szerint csoportosítva - mail_subject_wiki_content_updated: "'{{id}}' wiki oldal frissítve" + mail_subject_wiki_content_updated: "'%{id}' wiki oldal frissítve" label_wiki_content_added: Wiki oldal hozzáadva - mail_subject_wiki_content_added: "Új wiki oldal: '{{id}}'" - mail_body_wiki_content_added: A '{{id}}' wiki oldalt {{author}} hozta létre. + mail_subject_wiki_content_added: "Új wiki oldal: '%{id}'" + mail_body_wiki_content_added: A '%{id}' wiki oldalt %{author} hozta létre. label_wiki_content_updated: Wiki oldal frissítve - mail_body_wiki_content_updated: A '{{id}}' wiki oldalt {{author}} frissítette. + mail_body_wiki_content_updated: A '%{id}' wiki oldalt %{author} frissítette. permission_add_project: Projekt létrehozása setting_new_project_user_role_id: Projekt létrehozási jog nem adminisztrátor felhasználóknak label_view_all_revisions: Minden revízió megtekintése @@ -851,14 +852,14 @@ label_branch: Branch error_no_tracker_in_project: Nincs feladat típus hozzárendelve ehhez a projekthez. Kérem ellenÅ‘rizze a projekt beállításait. error_no_default_issue_status: Nincs alapértelmezett feladat státusz beállítva. Kérem ellenÅ‘rizze a beállításokat (Itt találja "Adminisztráció -> Feladat státuszok"). - text_journal_changed: "{{label}} változott errÅ‘l: {{old}} erre: {{new}}" - text_journal_set_to: "{{label}} új értéke: {{value}}" - text_journal_deleted: "{{label}} törölve ({{old}})" + text_journal_changed: "%{label} változott errÅ‘l: %{old} erre: %{new}" + text_journal_set_to: "%{label} új értéke: %{value}" + text_journal_deleted: "%{label} törölve (%{old})" label_group_plural: Csoportok label_group: Csoport label_group_new: Új csoport label_time_entry_plural: Rögzített idÅ‘ - text_journal_added: "{{label}} {{value}} hozzáadva" + text_journal_added: "%{label} %{value} hozzáadva" field_active: Aktív enumeration_system_activity: Rendszer Tevékenység permission_delete_issue_watchers: MegfigyelÅ‘k törlése @@ -893,9 +894,9 @@ setting_start_of_week: A hét elsÅ‘ napja permission_view_issues: Feladatok megtekintése label_display_used_statuses_only: Csak olyan feladat státuszok megjelenítése, amit ez a feladat típus használ - label_revision_id: Revízió {{value}} + label_revision_id: Revízió %{value} label_api_access_key: API hozzáférési kulcs - label_api_access_key_created_on: API hozzáférési kulcs létrehozva {{value}} ezelÅ‘tt + label_api_access_key_created_on: API hozzáférési kulcs létrehozva %{value} ezelÅ‘tt label_feeds_access_key: RSS hozzáférési kulcs notice_api_access_key_reseted: Az API hozzáférési kulcsa újragenerálva. setting_rest_api_enabled: REST web service engedélyezése @@ -918,7 +919,7 @@ error_can_not_delete_custom_field: Nem lehet törölni az egyéni mezÅ‘t permission_manage_subtasks: Alfeladatok kezelése label_profile: Profil - error_unable_to_connect: Nem lehet csatlakozni ({{value}}) + error_unable_to_connect: Nem lehet csatlakozni (%{value}) error_can_not_remove_role: Ez a szerepkör használatban van és ezért nem törölhetÅ‘- field_parent_issue: SzülÅ‘ feladat error_unable_delete_issue_status: Nem lehet törölni a feladat állapotát @@ -927,7 +928,7 @@ label_project_copy_notifications: Küldjön e-mail értesítéseket projektmásolás közben. field_principal: FelelÅ‘s label_my_page_block: Saját kezdÅ‘lap-blokk - notice_failed_to_save_members: "Nem sikerült menteni a tago(ka)t: {{errors}}." + notice_failed_to_save_members: "Nem sikerült menteni a tago(ka)t: %{errors}." 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Å‘ @@ -935,7 +936,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -946,8 +947,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/id.yml --- a/config/locales/id.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/id.yml Thu Mar 03 12:11:53 2011 +0000 @@ -30,37 +30,37 @@ half_a_minute: "setengah menit" less_than_x_seconds: one: "kurang dari sedetik" - other: "kurang dari {{count}} detik" + other: "kurang dari %{count} detik" x_seconds: one: "sedetik" - other: "{{count}} detik" + other: "%{count} detik" less_than_x_minutes: one: "kurang dari semenit" - other: "kurang dari {{count}} menit" + other: "kurang dari %{count} menit" x_minutes: one: "semenit" - other: "{{count}} menit" + other: "%{count} menit" about_x_hours: one: "sekitar sejam" - other: "sekitar {{count}} jam" + other: "sekitar %{count} jam" x_days: one: "sehari" - other: "{{count}} hari" + other: "%{count} hari" about_x_months: one: "sekitar sebulan" - other: "sekitar {{count}} bulan" + other: "sekitar %{count} bulan" x_months: one: "sebulan" - other: "{{count}} bulan" + other: "%{count} bulan" about_x_years: one: "sekitar setahun" - other: "sekitar {{count}} tahun" + other: "sekitar %{count} tahun" over_x_years: one: "lebih dari setahun" - other: "lebih dari {{count}} tahun" + other: "lebih dari %{count} tahun" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -95,6 +95,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "tidak termasuk dalam daftar" exclusion: "sudah dicadangkan" @@ -103,17 +107,17 @@ accepted: "harus disetujui" empty: "tidak boleh kosong" blank: "tidak boleh kosong" - too_long: "terlalu panjang (maksimum {{count}} karakter)" - too_short: "terlalu pendek (minimum {{count}} karakter)" - wrong_length: "panjangnya salah (seharusnya {{count}} karakter)" + too_long: "terlalu panjang (maksimum %{count} karakter)" + too_short: "terlalu pendek (minimum %{count} karakter)" + wrong_length: "panjangnya salah (seharusnya %{count} karakter)" taken: "sudah diambil" not_a_number: "bukan angka" not_a_date: "bukan tanggal" - greater_than: "harus lebih besar dari {{count}}" - greater_than_or_equal_to: "harus lebih besar atau sama dengan {{count}}" - equal_to: "harus sama dengan {{count}}" - less_than: "harus kurang dari {{count}}" - less_than_or_equal_to: "harus kurang atau sama dengan {{count}}" + greater_than: "harus lebih besar dari %{count}" + greater_than_or_equal_to: "harus lebih besar atau sama dengan %{count}" + equal_to: "harus sama dengan %{count}" + less_than: "harus kurang dari %{count}" + less_than_or_equal_to: "harus kurang atau sama dengan %{count}" odd: "harus ganjil" even: "harus genap" greater_than_start_date: "harus lebih besar dari tanggal mulai" @@ -150,18 +154,18 @@ notice_file_not_found: Berkas yang anda buka tidak ada atau sudah dihapus. notice_locking_conflict: Data sudah diubah oleh pengguna lain. notice_not_authorized: Anda tidak memiliki akses ke halaman ini. - notice_email_sent: "Email sudah dikirim ke {{value}}" - notice_email_error: "Terjadi kesalahan pada saat pengiriman email ({{value}})" + notice_email_sent: "Email sudah dikirim ke %{value}" + notice_email_error: "Terjadi kesalahan pada saat pengiriman email (%{value})" notice_feeds_access_key_reseted: RSS access key anda sudah direset. - notice_failed_to_save_issues: "Gagal menyimpan {{count}} masalah dari {{total}} yang dipilih: {{ids}}." + notice_failed_to_save_issues: "Gagal menyimpan %{count} masalah dari %{total} yang dipilih: %{ids}." notice_no_issue_selected: "Tidak ada masalah yang dipilih! Silakan pilih masalah yang akan anda sunting." notice_account_pending: "Akun anda sudah dibuat dan sekarang sedang menunggu persetujuan administrator." notice_default_data_loaded: Konfigurasi default sudah berhasil dimuat. notice_unable_delete_version: Tidak bisa menghapus versi. - error_can_t_load_default_data: "Konfigurasi default tidak bisa dimuat: {{value}}" + error_can_t_load_default_data: "Konfigurasi default tidak bisa dimuat: %{value}" error_scm_not_found: "Entri atau revisi tidak terdapat pada repositori." - error_scm_command_failed: "Terjadi kesalahan pada saat mengakses repositori: {{value}}" + error_scm_command_failed: "Terjadi kesalahan pada saat mengakses repositori: %{value}" error_scm_annotate: "Entri tidak ada, atau tidak dapat di anotasi." error_issue_not_found_in_project: 'Masalah tidak ada atau tidak tergabung dalam proyek ini.' error_no_tracker_in_project: 'Tidak ada pelacak yang diasosiasikan pada proyek ini. Silakan pilih Pengaturan Proyek.' @@ -169,25 +173,25 @@ error_can_not_reopen_issue_on_closed_version: 'Masalah yang ditujukan pada versi tertutup tidak bisa dibuka kembali' error_can_not_archive_project: Proyek ini tidak bisa diarsipkan - warning_attachments_not_saved: "{{count}} berkas tidak bisa disimpan." + warning_attachments_not_saved: "%{count} berkas tidak bisa disimpan." - mail_subject_lost_password: "Kata sandi {{value}} anda" + mail_subject_lost_password: "Kata sandi %{value} anda" mail_body_lost_password: 'Untuk mengubah kata sandi anda, klik tautan berikut::' - mail_subject_register: "Aktivasi akun {{value}} anda" + mail_subject_register: "Aktivasi akun %{value} anda" mail_body_register: 'Untuk mengaktifkan akun anda, klik tautan berikut:' - mail_body_account_information_external: "Anda dapat menggunakan akun {{value}} anda untuk login." + mail_body_account_information_external: "Anda dapat menggunakan akun %{value} anda untuk login." mail_body_account_information: Informasi akun anda - mail_subject_account_activation_request: "Permintaan aktivasi akun {{value}} " - mail_body_account_activation_request: "Pengguna baru ({{value}}) sudan didaftarkan. Akun tersebut menunggu persetujuan anda:" - mail_subject_reminder: "{{count}} masalah harus selesai pada hari berikutnya ({{days}})" - mail_body_reminder: "{{count}} masalah yang ditugaskan pada anda harus selesai dalam {{days}} hari kedepan:" - mail_subject_wiki_content_added: "'{{id}}' halaman wiki sudah ditambahkan" - mail_body_wiki_content_added: "The '{{id}}' halaman wiki sudah ditambahkan oleh {{author}}." - mail_subject_wiki_content_updated: "'{{id}}' halaman wiki sudah diperbarui" - mail_body_wiki_content_updated: "The '{{id}}' halaman wiki sudah diperbarui oleh {{author}}." + mail_subject_account_activation_request: "Permintaan aktivasi akun %{value} " + mail_body_account_activation_request: "Pengguna baru (%{value}) sudan didaftarkan. Akun tersebut menunggu persetujuan anda:" + mail_subject_reminder: "%{count} masalah harus selesai pada hari berikutnya (%{days})" + mail_body_reminder: "%{count} masalah yang ditugaskan pada anda harus selesai dalam %{days} hari kedepan:" + mail_subject_wiki_content_added: "'%{id}' halaman wiki sudah ditambahkan" + mail_body_wiki_content_added: "The '%{id}' halaman wiki sudah ditambahkan oleh %{author}." + mail_subject_wiki_content_updated: "'%{id}' halaman wiki sudah diperbarui" + mail_body_wiki_content_updated: "The '%{id}' halaman wiki sudah diperbarui oleh %{author}." gui_validation_error: 1 kesalahan - gui_validation_error_plural: "{{count}} kesalahan" + gui_validation_error_plural: "%{count} kesalahan" field_name: Nama @@ -251,6 +255,7 @@ field_attr_lastname: Atribut nama belakang field_attr_mail: Atribut email field_onthefly: Pembuatan pengguna seketika + field_start_date: Mulai field_done_ratio: % Selesai field_auth_source: Mode otentikasi field_hide_mail: Sembunyikan email saya @@ -398,14 +403,14 @@ label_x_projects: zero: tidak ada proyek one: 1 proyek - other: "{{count}} proyek" + other: "%{count} proyek" label_project_all: Semua Proyek label_project_latest: Proyek terakhir label_issue: Masalah label_issue_new: Masalah baru label_issue_plural: Masalah label_issue_view_all: tampilkan semua masalah - label_issues_by: "Masalah ditambahkan oleh {{value}}" + label_issues_by: "Masalah ditambahkan oleh %{value}" label_issue_added: Masalah ditambahan label_issue_updated: Masalah diperbarui label_document: Dokumen @@ -455,7 +460,7 @@ label_registered_on: Terdaftar pada label_activity: Kegiatan label_overall_activity: Kegiatan umum - label_user_activity: "kegiatan {{value}}" + label_user_activity: "kegiatan %{value}" label_new: Baru label_logged_as: Login sebagai label_environment: Lingkungan @@ -464,7 +469,7 @@ label_auth_source_new: Mode otentikasi baru label_auth_source_plural: Mode Otentikasi label_subproject_plural: Subproyek - label_and_its_subprojects: "{{value}} dan subproyeknya" + label_and_its_subprojects: "%{value} dan subproyeknya" label_min_max_length: Panjang Min - Maks label_list: Daftar label_date: Tanggal @@ -475,8 +480,8 @@ label_text: Long text label_attribute: Atribut label_attribute_plural: Atribut - label_download: "{{count}} Unduhan" - label_download_plural: "{{count}} Unduhan" + label_download: "%{count} Unduhan" + label_download_plural: "%{count} Unduhan" label_no_data: Tidak ada data untuk ditampilkan label_change_status: Status perubahan label_history: Riwayat @@ -508,17 +513,17 @@ label_closed_issues: selesai label_closed_issues_plural: selesai label_x_open_issues_abbr_on_total: - zero: 0 belum selesai / {{total}} - one: 1 belum selesai / {{total}} - other: "{{count}} terbuka / {{total}}" + zero: 0 belum selesai / %{total} + one: 1 belum selesai / %{total} + other: "%{count} terbuka / %{total}" label_x_open_issues_abbr: zero: 0 belum selesai one: 1 belum selesai - other: "{{count}} belum selesai" + other: "%{count} belum selesai" label_x_closed_issues_abbr: zero: 0 selesai one: 1 selesai - other: "{{count}} selesai" + other: "%{count} selesai" label_total: Total label_permissions: Perijinan label_current_status: Status sekarang @@ -536,7 +541,7 @@ label_months_from: dari bulan label_gantt: Gantt label_internal: Internal - label_last_changes: "{{count}} perubahan terakhir" + label_last_changes: "%{count} perubahan terakhir" label_change_view_all: Tampilkan semua perubahan label_personalize_page: Personalkan halaman ini label_comment: Komentar @@ -544,7 +549,7 @@ label_x_comments: zero: tak ada komentar one: 1 komentar - other: "{{count}} komentar" + other: "%{count} komentar" label_comment_add: Tambahkan komentar label_comment_added: Komentar ditambahkan label_comment_delete: Hapus komentar @@ -565,7 +570,7 @@ label_yesterday: kemarin label_this_week: minggu ini label_last_week: minggu lalu - label_last_n_days: "{{count}} hari terakhir" + label_last_n_days: "%{count} hari terakhir" label_this_month: bulan ini label_last_month: bulan lalu label_this_year: this year @@ -579,8 +584,8 @@ label_repository: Repositori label_repository_plural: Repositori label_browse: Jelajah - label_modification: "{{count}} perubahan" - label_modification_plural: "{{count}} perubahan" + label_modification: "%{count} perubahan" + label_modification_plural: "%{count} perubahan" label_branch: Cabang label_tag: Tag label_revision: Revisi @@ -601,8 +606,8 @@ label_sort_lower: Ke bawah label_sort_lowest: Ke paling bawah label_roadmap: Rencana kerja - label_roadmap_due_in: "Harus selesai dalam {{value}}" - label_roadmap_overdue: "{{value}} terlambat" + label_roadmap_due_in: "Harus selesai dalam %{value}" + label_roadmap_overdue: "%{value} terlambat" label_roadmap_no_issues: Tak ada masalah pada versi ini label_search: Cari label_result_plural: Hasil @@ -620,8 +625,8 @@ label_changes_details: Rincian semua perubahan label_issue_tracking: Pelacak masalah label_spent_time: Waktu terpakai - label_f_hour: "{{value}} jam" - label_f_hour_plural: "{{value}} jam" + label_f_hour: "%{value} jam" + label_f_hour_plural: "%{value} jam" label_time_tracking: Pelacak waktu label_change_plural: Perubahan label_statistics: Statistik @@ -670,13 +675,13 @@ label_date_from: Dari label_date_to: Sampai label_language_based: Berdasarkan bahasa pengguna - label_sort_by: "Urut berdasarkan {{value}}" + label_sort_by: "Urut berdasarkan %{value}" label_send_test_email: Kirim email percobaan - label_feeds_access_key_created_on: "RSS access key dibuat {{value}} yang lalu" + label_feeds_access_key_created_on: "RSS access key dibuat %{value} yang lalu" label_module_plural: Modul - label_added_time_by: "Ditambahkan oleh {{author}} {{age}} yang lalu" - label_updated_time_by: "Diperbarui oleh {{author}} {{age}} yang lalu" - label_updated_time: "Diperbarui oleh {{value}} yang lalu" + label_added_time_by: "Ditambahkan oleh %{author} %{age} yang lalu" + label_updated_time_by: "Diperbarui oleh %{author} %{age} yang lalu" + label_updated_time: "Diperbarui oleh %{value} yang lalu" label_jump_to_a_project: Pilih proyek... label_file_plural: Berkas label_changeset_plural: Set perubahan @@ -694,7 +699,7 @@ label_registration_activation_by_email: aktivasi akun melalui email label_registration_manual_activation: aktivasi akun secara manual label_registration_automatic_activation: aktivasi akun secara otomatis - label_display_per_page: "Per halaman: {{value}}" + label_display_per_page: "Per halaman: %{value}" label_age: Umur label_change_properties: Rincian perubahan label_general: Umum @@ -717,7 +722,7 @@ label_sort: Urut label_ascending: Menaik label_descending: Menurun - label_date_from_to: Dari {{start}} sampai {{end}} + label_date_from_to: Dari %{start} sampai %{end} label_wiki_content_added: Halaman wiki ditambahkan label_wiki_content_updated: Halaman wiki diperbarui label_group: Kelompok @@ -788,52 +793,52 @@ text_regexp_info: mis. ^[A-Z0-9]+$ text_min_max_length_info: 0 berarti tidak ada pembatasan text_project_destroy_confirmation: Apakah anda benar-benar akan menghapus proyek ini beserta data terkait ? - text_subprojects_destroy_warning: "Subproyek: {{value}} juga akan dihapus." + text_subprojects_destroy_warning: "Subproyek: %{value} juga akan dihapus." text_workflow_edit: Pilih peran dan pelacak untuk menyunting alur kerja text_are_you_sure: Anda yakin ? - text_journal_changed: "{{label}} berubah dari {{old}} menjadi {{new}}" - text_journal_set_to: "{{label}} di set ke {{value}}" - text_journal_deleted: "{{label}} dihapus ({{old}})" - text_journal_added: "{{label}} {{value}} ditambahkan" + text_journal_changed: "%{label} berubah dari %{old} menjadi %{new}" + text_journal_set_to: "%{label} di set ke %{value}" + text_journal_deleted: "%{label} dihapus (%{old})" + text_journal_added: "%{label} %{value} ditambahkan" text_tip_issue_begin_day: tugas dimulai hari itu text_tip_issue_end_day: tugas berakhir hari itu text_tip_issue_begin_end_day: tugas dimulai dan berakhir hari itu text_project_identifier_info: 'Yang diijinkan hanya huruf kecil (a-z), angka dan tanda minus.
    Sekali disimpan, pengenal tidak bisa diubah.' - text_caracters_maximum: "maximum {{count}} karakter." - text_caracters_minimum: "Setidaknya harus sepanjang {{count}} karakter." - text_length_between: "Panjang diantara {{min}} dan {{max}} karakter." + text_caracters_maximum: "maximum %{count} karakter." + text_caracters_minimum: "Setidaknya harus sepanjang %{count} karakter." + text_length_between: "Panjang diantara %{min} dan %{max} karakter." text_tracker_no_workflow: Tidak ada alur kerja untuk pelacak ini text_unallowed_characters: Karakter tidak diperbolehkan text_comma_separated: Beberapa nilai diperbolehkan (dipisahkan koma). text_issues_ref_in_commit_messages: Mereferensikan dan membetulkan masalah pada pesan komit - text_issue_added: "Masalah {{id}} sudah dilaporkan oleh {{author}}." - text_issue_updated: "Masalah {{id}} sudah diperbarui oleh {{author}}." + text_issue_added: "Masalah %{id} sudah dilaporkan oleh %{author}." + text_issue_updated: "Masalah %{id} sudah diperbarui oleh %{author}." text_wiki_destroy_confirmation: Apakah anda benar-benar akan menghapus wiki ini beserta semua isinya ? - text_issue_category_destroy_question: "Beberapa masalah ({{count}}) ditugaskan pada kategori ini. Apa yang anda lakukan ?" + text_issue_category_destroy_question: "Beberapa masalah (%{count}) ditugaskan pada kategori ini. Apa yang anda lakukan ?" text_issue_category_destroy_assignments: Hapus kategori penugasan text_issue_category_reassign_to: Tugaskan kembali masalah untuk kategori ini text_user_mail_option: "Untuk proyek yang tidak dipilih, anda hanya akan menerima notifikasi hal-hal yang anda pantau atau anda terlibat di dalamnya (misalnya masalah yang anda tulis atau ditugaskan pada anda)." text_no_configuration_data: "Peran, pelacak, status masalah dan alur kerja belum dikonfigur.\nSangat disarankan untuk memuat konfigurasi default. Anda akan bisa mengubahnya setelah konfigurasi dimuat." text_load_default_configuration: Muat konfigurasi default - text_status_changed_by_changeset: "Diterapkan di set perubahan {{value}}." + text_status_changed_by_changeset: "Diterapkan di set perubahan %{value}." text_issues_destroy_confirmation: 'Apakah anda yakin untuk menghapus masalah terpilih ?' text_select_project_modules: 'Pilih modul untuk diaktifkan pada proyek ini:' text_default_administrator_account_changed: Akun administrator default sudah berubah text_file_repository_writable: Direktori yang bisa ditulisi untuk lampiran text_plugin_assets_writable: Direktori yang bisa ditulisi untuk plugin asset text_rmagick_available: RMagick tersedia (optional) - text_destroy_time_entries_question: "{{hours}} jam sudah dilaporkan pada masalah yang akan anda hapus. Apa yang akan anda lakukan ?" + text_destroy_time_entries_question: "%{hours} jam sudah dilaporkan pada masalah yang akan anda hapus. Apa yang akan anda lakukan ?" text_destroy_time_entries: Hapus jam yang terlapor text_assign_time_entries_to_project: Tugaskan jam terlapor pada proyek text_reassign_time_entries: 'Tugaskan kembali jam terlapor pada masalah ini:' - text_user_wrote: "{{value}} menulis:" - text_enumeration_destroy_question: "{{count}} obyek ditugaskan untuk nilai ini." + text_user_wrote: "%{value} menulis:" + text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini." text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:' - text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/email.yml dan restart kembali aplikasi untuk mengaktifkan." + text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/configuration.yml dan restart kembali aplikasi untuk mengaktifkan." text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan." text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.' text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai' - text_wiki_page_destroy_question: "Halaman ini mempunyai {{descendants}} halaman anak dan turunannya. Apa yang akan anda lakukan ?" + text_wiki_page_destroy_question: "Halaman ini mempunyai %{descendants} halaman anak dan turunannya. Apa yang akan anda lakukan ?" text_wiki_page_nullify_children: "Biarkan halaman anak sebagai halaman teratas (root)" text_wiki_page_destroy_children: "Hapus halaman anak dan semua turunannya" text_wiki_page_reassign_children: "Tujukan halaman anak ke halaman induk yang ini" @@ -869,13 +874,13 @@ setting_issue_done_ratio: Calculate the issue done ratio with label_api_access_key: API access key text_line_separated: Multiple values allowed (one line for each value). - label_revision_id: Revision {{value}} + label_revision_id: Revision %{value} permission_view_issues: View Issues setting_issue_done_ratio_issue_status: Use the issue status error_issue_done_ratios_not_updated: Issue done ratios not updated. label_display_used_statuses_only: Only display statuses that are used by this tracker error_workflow_copy_target: Please select target tracker(s) and role(s) - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -907,12 +912,12 @@ 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_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}}." + 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. @@ -920,7 +925,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -931,8 +936,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/it.yml --- a/config/locales/it.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/it.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,6 +1,7 @@ # Italian translations for Ruby on Rails # by Claudio Poli (masterkain@gmail.com) # by Diego Pierotto (ita.translations@tiscali.it) +# by Emidio Stani (emidiostani@gmail.com) it: direction: ltr @@ -37,37 +38,37 @@ half_a_minute: "mezzo minuto" less_than_x_seconds: one: "meno di un secondo" - other: "meno di {{count}} secondi" + other: "meno di %{count} secondi" x_seconds: one: "1 secondo" - other: "{{count}} secondi" + other: "%{count} secondi" less_than_x_minutes: one: "meno di un minuto" - other: "meno di {{count}} minuti" + other: "meno di %{count} minuti" x_minutes: one: "1 minuto" - other: "{{count}} minuti" + other: "%{count} minuti" about_x_hours: one: "circa un'ora" - other: "circa {{count}} ore" + other: "circa %{count} ore" x_days: one: "1 giorno" - other: "{{count}} giorni" + other: "%{count} giorni" about_x_months: one: "circa un mese" - other: "circa {{count}} mesi" + other: "circa %{count} mesi" x_months: one: "1 mese" - other: "{{count}} mesi" + other: "%{count} mesi" about_x_years: one: "circa un anno" - other: "circa {{count}} anni" + other: "circa %{count} anni" over_x_years: one: "oltre un anno" - other: "oltre {{count}} anni" + other: "oltre %{count} anni" almost_x_years: one: "quasi 1 anno" - other: "quasi {{count}} anni" + other: "quasi %{count} anni" number: format: @@ -100,8 +101,8 @@ errors: template: header: - one: "Non posso salvare questo {{model}}: 1 errore" - other: "Non posso salvare questo {{model}}: {{count}} errori." + one: "Non posso salvare questo %{model}: 1 errore" + other: "Non posso salvare questo %{model}: %{count} errori." body: "Per favore ricontrolla i seguenti campi:" messages: inclusion: "non è incluso nella lista" @@ -111,22 +112,22 @@ accepted: "deve essere accettata" empty: "non può essere vuoto" blank: "non può essere lasciato in bianco" - too_long: "è troppo lungo (il massimo è {{count}} lettere)" - too_short: "è troppo corto (il minimo è {{count}} lettere)" - wrong_length: "è della lunghezza sbagliata (deve essere di {{count}} lettere)" + too_long: "è troppo lungo (il massimo è %{count} lettere)" + too_short: "è troppo corto (il minimo è %{count} lettere)" + wrong_length: "è della lunghezza sbagliata (deve essere di %{count} lettere)" taken: "è già in uso" not_a_number: "non è un numero" - greater_than: "deve essere superiore a {{count}}" - greater_than_or_equal_to: "deve essere superiore o uguale a {{count}}" - equal_to: "deve essere uguale a {{count}}" - less_than: "deve essere meno di {{count}}" - less_than_or_equal_to: "deve essere meno o uguale a {{count}}" + greater_than: "deve essere superiore a %{count}" + greater_than_or_equal_to: "deve essere superiore o uguale a %{count}" + equal_to: "deve essere uguale a %{count}" + less_than: "deve essere meno di %{count}" + less_than_or_equal_to: "deve essere meno o uguale a %{count}" odd: "deve essere dispari" even: "deve essere pari" greater_than_start_date: "deve essere maggiore della data di partenza" not_same_project: "non appartiene allo stesso progetto" circular_dependency: "Questa relazione creerebbe una dipendenza circolare" - 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: "Una segnalazione non può essere collegata a una delle sue discendenti" actionview_instancetag_blank_option: Scegli @@ -141,11 +142,11 @@ general_pdf_encoding: ISO-8859-1 general_first_day_of_week: '1' - notice_account_updated: L'utente è stata aggiornato. + notice_account_updated: L'utente è stato aggiornato. notice_account_invalid_creditentials: Nome utente o password non validi. notice_account_password_updated: La password è stata aggiornata. notice_account_wrong_password: Password errata - notice_account_register_done: L'utente è stata creato. + notice_account_register_done: L'utente è stato creato. notice_account_unknown_email: Utente sconosciuto. notice_can_t_change_password: Questo utente utilizza un metodo di autenticazione esterno. Impossibile cambiare la password. notice_account_lost_email_sent: Ti è stata spedita una email con le istruzioni per cambiare la password. @@ -157,20 +158,20 @@ notice_file_not_found: La pagina desiderata non esiste o è stata rimossa. notice_locking_conflict: Le informazioni sono state modificate da un altro utente. notice_not_authorized: Non sei autorizzato ad accedere a questa pagina. - notice_email_sent: "Una email è stata spedita a {{value}}" - notice_email_error: "Si è verificato un errore durante l'invio di una email ({{value}})" + notice_email_sent: "Una email è stata spedita a %{value}" + notice_email_error: "Si è verificato un errore durante l'invio di una email (%{value})" notice_feeds_access_key_reseted: La tua chiave di accesso RSS è stata reimpostata. error_scm_not_found: "La risorsa e/o la versione non esistono nel repository." - error_scm_command_failed: "Si è verificato un errore durante l'accesso al repository: {{value}}" + error_scm_command_failed: "Si è verificato un errore durante l'accesso al repository: %{value}" - mail_subject_lost_password: "Password {{value}}" + mail_subject_lost_password: "Password %{value}" mail_body_lost_password: 'Per cambiare la password, usa il seguente collegamento:' - mail_subject_register: "Attivazione utente {{value}}" + mail_subject_register: "Attivazione utente %{value}" mail_body_register: "Per attivare l'utente, usa il seguente collegamento:" gui_validation_error: 1 errore - gui_validation_error_plural: "{{count}} errori" + gui_validation_error_plural: "%{count} errori" field_name: Nome field_description: Descrizione @@ -232,6 +233,7 @@ field_attr_lastname: Attributo cognome field_attr_mail: Attributo email field_onthefly: Creazione utente "al volo" + field_start_date: Inizio field_done_ratio: % completato field_auth_source: Modalità di autenticazione field_hide_mail: Nascondi il mio indirizzo email @@ -281,7 +283,7 @@ label_x_projects: zero: nessun progetto one: 1 progetto - other: "{{count}} progetti" + other: "%{count} progetti" label_project_all: Tutti i progetti label_project_latest: Ultimi progetti registrati label_issue: Segnalazione @@ -349,8 +351,8 @@ label_text: Testo esteso label_attribute: Attributo label_attribute_plural: Attributi - label_download: "{{count}} Download" - label_download_plural: "{{count}} Download" + label_download: "%{count} Download" + label_download_plural: "%{count} Download" label_no_data: Nessun dato disponibile label_change_status: Cambia stato label_history: Cronologia @@ -379,17 +381,17 @@ label_closed_issues: chiusa label_closed_issues_plural: chiuse label_x_open_issues_abbr_on_total: - zero: 0 aperte / {{total}} - one: 1 aperta / {{total}} - other: "{{count}} aperte / {{total}}" + zero: 0 aperte / %{total} + one: 1 aperta / %{total} + other: "%{count} aperte / %{total}" label_x_open_issues_abbr: zero: 0 aperte one: 1 aperta - other: "{{count}} aperte" + other: "%{count} aperte" label_x_closed_issues_abbr: zero: 0 chiuse one: 1 chiusa - other: "{{count}} chiuse" + other: "%{count} chiuse" label_total: Totale label_permissions: Permessi label_current_status: Stato attuale @@ -406,7 +408,7 @@ label_months_from: mesi da label_gantt: Gantt label_internal: Interno - label_last_changes: "ultime {{count}} modifiche" + label_last_changes: "ultime %{count} modifiche" label_change_view_all: Tutte le modifiche label_personalize_page: Personalizza la pagina label_comment: Commento @@ -414,7 +416,7 @@ label_x_comments: zero: nessun commento one: 1 commento - other: "{{count}} commenti" + other: "%{count} commenti" label_comment_add: Aggiungi un commento label_comment_added: Commento aggiunto label_comment_delete: Elimina commenti @@ -438,8 +440,8 @@ label_day_plural: giorni label_repository: Repository label_browse: Sfoglia - label_modification: "{{count}} modifica" - label_modification_plural: "{{count}} modifiche" + label_modification: "%{count} modifica" + label_modification_plural: "%{count} modifiche" label_revision: Versione label_revision_plural: Versioni label_added: aggiunto @@ -454,15 +456,15 @@ label_sort_lower: Giù label_sort_lowest: Sposta in fondo label_roadmap: Roadmap - label_roadmap_due_in: "Da ultimare in {{value}}" - label_roadmap_overdue: "{{value}} di ritardo" + label_roadmap_due_in: "Da ultimare in %{value}" + label_roadmap_overdue: "%{value} di ritardo" label_roadmap_no_issues: Nessuna segnalazione per questa versione label_search: Ricerca label_result_plural: Risultati label_all_words: Tutte le parole label_wiki: Wiki label_wiki_edit: Modifica wiki - label_wiki_edit_plural: Modfiche wiki + label_wiki_edit_plural: Modifiche wiki label_wiki_page: Pagina Wiki label_wiki_page_plural: Pagine wiki label_index_by_title: Ordina per titolo @@ -473,8 +475,8 @@ label_changes_details: Particolari di tutti i cambiamenti label_issue_tracking: Tracking delle segnalazioni label_spent_time: Tempo impiegato - label_f_hour: "{{value}} ora" - label_f_hour_plural: "{{value}} ore" + label_f_hour: "%{value} ora" + label_f_hour_plural: "%{value} ore" label_time_tracking: Tracking del tempo label_change_plural: Modifiche label_statistics: Statistiche @@ -521,12 +523,12 @@ label_date_from: Da label_date_to: A label_language_based: Basato sul linguaggio - label_sort_by: "Ordina per {{value}}" + label_sort_by: "Ordina per %{value}" label_send_test_email: Invia una email di prova - label_feeds_access_key_created_on: "chiave di accesso RSS creata {{value}} fa" + label_feeds_access_key_created_on: "chiave di accesso RSS creata %{value} fa" label_module_plural: Moduli - label_added_time_by: "Aggiunto da {{author}} {{age}} fa" - label_updated_time: "Aggiornato {{value}} fa" + label_added_time_by: "Aggiunto da %{author} %{age} fa" + label_updated_time: "Aggiornato %{value} fa" label_jump_to_a_project: Vai al progetto... button_login: Entra @@ -576,16 +578,16 @@ text_tip_issue_end_day: attività che terminano in questa giornata text_tip_issue_begin_end_day: attività che iniziano e terminano in questa giornata text_project_identifier_info: "Lettere minuscole (a-z), numeri e trattini permessi.
    Una volta salvato, l'identificativo non può essere modificato." - text_caracters_maximum: "massimo {{count}} caratteri." - text_length_between: "Lunghezza compresa tra {{min}} e {{max}} caratteri." + text_caracters_maximum: "massimo %{count} caratteri." + text_length_between: "Lunghezza compresa tra %{min} e %{max} caratteri." text_tracker_no_workflow: Nessun workflow definito per questo tracker text_unallowed_characters: Caratteri non permessi text_comma_separated: Valori multipli permessi (separati da virgole). text_issues_ref_in_commit_messages: Segnalazioni di riferimento e chiusura nei messaggi di commit - text_issue_added: "E' stata segnalata l'anomalia {{id}} da {{author}}." - text_issue_updated: "L'anomalia {{id}} è stata aggiornata da {{author}}." + text_issue_added: "E' stata segnalata l'anomalia %{id} da %{author}." + text_issue_updated: "L'anomalia %{id} è stata aggiornata da %{author}." text_wiki_destroy_confirmation: Sicuro di voler eliminare questo wiki e tutti i suoi contenuti? - text_issue_category_destroy_question: "Alcune segnalazioni ({{count}}) risultano assegnate a questa categoria. Cosa vuoi fare ?" + text_issue_category_destroy_question: "Alcune segnalazioni (%{count}) risultano assegnate a questa categoria. Cosa vuoi fare ?" text_issue_category_destroy_assignments: Rimuovi le assegnazioni a questa categoria text_issue_category_reassign_to: Riassegna segnalazioni a questa categoria @@ -623,7 +625,7 @@ notice_no_issue_selected: "Nessuna segnalazione selezionata! Seleziona le segnalazioni che intendi modificare." label_bulk_edit_selected_issues: Modifica massiva delle segnalazioni selezionate label_no_change_option: (Nessuna modifica) - notice_failed_to_save_issues: "Impossibile salvare {{count}} segnalazioni su {{total}} selezionate: {{ids}}." + notice_failed_to_save_issues: "Impossibile salvare %{count} segnalazioni su %{total} selezionate: %{ids}." label_theme: Tema label_default: Predefinito label_search_titles_only: Cerca solo nei titoli @@ -635,37 +637,37 @@ setting_emails_footer: Piè di pagina email label_float: Decimale button_copy: Copia - mail_body_account_information_external: "Puoi utilizzare il tuo account {{value}} per accedere al sistema." + mail_body_account_information_external: "Puoi utilizzare il tuo account %{value} per accedere al sistema." mail_body_account_information: Le informazioni riguardanti il tuo account setting_protocol: Protocollo label_user_mail_no_self_notified: "Non voglio notifiche riguardanti modifiche da me apportate" setting_time_format: Formato ora label_registration_activation_by_email: attivazione account via email - mail_subject_account_activation_request: "{{value}} richiesta attivazione account" - mail_body_account_activation_request: "Un nuovo utente ({{value}}) ha effettuato la registrazione. Il suo account è in attesa di abilitazione da parte tua:" + mail_subject_account_activation_request: "%{value} richiesta attivazione account" + mail_body_account_activation_request: "Un nuovo utente (%{value}) ha effettuato la registrazione. Il suo account è in attesa di abilitazione da parte tua:" label_registration_automatic_activation: attivazione account automatica label_registration_manual_activation: attivazione account manuale notice_account_pending: "Il tuo account è stato creato ed è in attesa di attivazione da parte dell'amministratore." field_time_zone: Fuso orario - text_caracters_minimum: "Deve essere lungo almeno {{count}} caratteri." + text_caracters_minimum: "Deve essere lungo almeno %{count} caratteri." setting_bcc_recipients: Destinatari in copia nascosta (bcc) button_annotate: Annota - label_issues_by: "Segnalazioni di {{value}}" + label_issues_by: "Segnalazioni di %{value}" field_searchable: Ricercabile - label_display_per_page: "Per pagina: {{value}}" + label_display_per_page: "Per pagina: %{value}" setting_per_page_options: Opzioni oggetti per pagina label_age: Età notice_default_data_loaded: Configurazione predefinita caricata con successo. text_load_default_configuration: Carica la configurazione predefinita text_no_configuration_data: "Ruoli, tracker, stati delle segnalazioni e workflow non sono stati ancora configurati.\nE' vivamente consigliato caricare la configurazione predefinita. Potrai modificarla una volta caricata." - error_can_t_load_default_data: "Non è stato possibile caricare la configurazione predefinita : {{value}}" + error_can_t_load_default_data: "Non è stato possibile caricare la configurazione predefinita : %{value}" button_update: Aggiorna label_change_properties: Modifica le proprietà label_general: Generale label_repository_plural: Repository label_associated_revisions: Revisioni associate setting_user_format: Formato visualizzazione utenti - text_status_changed_by_changeset: "Applicata nel changeset {{value}}." + text_status_changed_by_changeset: "Applicata nel changeset %{value}." label_more: Altro text_issues_destroy_confirmation: 'Sei sicuro di voler eliminare le segnalazioni selezionate?' label_scm: SCM @@ -692,7 +694,7 @@ label_ldap_authentication: Autenticazione LDAP label_downloads_abbr: D/L label_this_month: questo mese - label_last_n_days: "ultimi {{count}} giorni" + label_last_n_days: "ultimi %{count} giorni" label_all_time: sempre label_this_year: quest'anno label_date_range: Intervallo di date @@ -701,7 +703,7 @@ label_last_month: ultimo mese label_add_another_file: Aggiungi un altro file label_optional_description: Descrizione opzionale - text_destroy_time_entries_question: "{{hours}} ore risultano spese sulle segnalazioni che stai per eliminare. Cosa vuoi fare ?" + text_destroy_time_entries_question: "%{hours} ore risultano spese sulle segnalazioni che stai per eliminare. Cosa vuoi fare ?" error_issue_not_found_in_project: 'La segnalazione non è stata trovata o non appartiene al progetto' text_assign_time_entries_to_project: Assegna le ore segnalate al progetto text_destroy_time_entries: Elimina le ore segnalate @@ -716,20 +718,20 @@ setting_default_projects_public: I nuovi progetti sono pubblici in modo predefinito error_scm_annotate: "L'oggetto non esiste o non può essere annotato." label_planning: Pianificazione - text_subprojects_destroy_warning: "Anche i suoi sottoprogetti: {{value}} verranno eliminati." - label_and_its_subprojects: "{{value}} ed i suoi sottoprogetti" - mail_body_reminder: "{{count}} segnalazioni che ti sono state assegnate scadranno nei prossimi {{days}} giorni:" - mail_subject_reminder: "{{count}} segnalazioni in scadenza nei prossimi {{days}} giorni" - text_user_wrote: "{{value}} ha scritto:" + text_subprojects_destroy_warning: "Anche i suoi sottoprogetti: %{value} verranno eliminati." + label_and_its_subprojects: "%{value} ed i suoi sottoprogetti" + mail_body_reminder: "%{count} segnalazioni che ti sono state assegnate scadranno nei prossimi %{days} giorni:" + mail_subject_reminder: "%{count} segnalazioni in scadenza nei prossimi %{days} giorni" + text_user_wrote: "%{value} ha scritto:" label_duplicated_by: duplicato da setting_enabled_scm: SCM abilitato text_enumeration_category_reassign_to: 'Riassegnale a questo valore:' - text_enumeration_destroy_question: "{{count}} oggetti hanno un assegnamento su questo valore." + text_enumeration_destroy_question: "%{count} oggetti hanno un assegnamento su questo valore." label_incoming_emails: Email in arrivo label_generate_key: Genera una chiave setting_mail_handler_api_enabled: Abilita WS per le email in arrivo setting_mail_handler_api_key: Chiave API - text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle." + 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 @@ -790,12 +792,12 @@ text_repository_usernames_mapping: "Seleziona per aggiornare la corrispondenza tra gli utenti Redmine e quelli presenti nel log del repository.\nGli utenti Redmine e repository con lo stesso note utente o email sono mappati automaticamente." permission_edit_own_messages: Modifica propri messaggi permission_delete_own_messages: Elimina propri messaggi - label_user_activity: "attività di {{value}}" - label_updated_time_by: "Aggiornato da {{author}} {{age}} fa" + label_user_activity: "attività di %{value}" + label_updated_time_by: "Aggiornato da %{author} %{age} fa" text_diff_truncated: '... Le differenze sono state troncate perchè superano il limite massimo visualizzabile.' setting_diff_max_lines_displayed: Limite massimo di differenze (linee) mostrate text_plugin_assets_writable: Directory attività dei plugins scrivibile - warning_attachments_not_saved: "{{count}} file non possono essere salvati." + warning_attachments_not_saved: "%{count} file non possono essere salvati." button_create_and_continue: Crea e continua text_custom_field_possible_values_info: 'Un valore per ogni riga' label_display: Mostra @@ -810,21 +812,21 @@ label_descending: Discendente label_sort: Ordina label_ascending: Ascendente - label_date_from_to: Da {{start}} a {{end}} + label_date_from_to: Da %{start} a %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Questa pagina ha {{descendants}} pagine figlie. Cosa ne vuoi fare? + text_wiki_page_destroy_question: Questa pagina ha %{descendants} pagine figlie. Cosa ne vuoi fare? text_wiki_page_reassign_children: Riassegna le pagine figlie al padre di questa pagina text_wiki_page_nullify_children: Mantieni le pagine figlie come pagine radice text_wiki_page_destroy_children: Elimina le pagine figlie e tutta la discendenza setting_password_min_length: Lunghezza minima password field_group_by: Raggruppa risultati per - mail_subject_wiki_content_updated: "La pagina wiki '{{id}}' è stata aggiornata" + mail_subject_wiki_content_updated: "La pagina wiki '%{id}' è stata aggiornata" label_wiki_content_added: Aggiunta pagina al wiki - mail_subject_wiki_content_added: "La pagina '{{id}}' è stata aggiunta al wiki" - mail_body_wiki_content_added: La pagina '{{id}}' è stata aggiunta al wiki da {{author}}. + mail_subject_wiki_content_added: "La pagina '%{id}' è stata aggiunta al wiki" + mail_body_wiki_content_added: La pagina '%{id}' è stata aggiunta al wiki da %{author}. label_wiki_content_updated: Aggiornata pagina wiki - mail_body_wiki_content_updated: La pagina '{{id}}' wiki è stata aggiornata da{{author}}. + mail_body_wiki_content_updated: La pagina '%{id}' wiki è stata aggiornata da%{author}. permission_add_project: Crea progetto setting_new_project_user_role_id: Ruolo assegnato agli utenti non amministratori che creano un progetto label_view_all_revisions: Mostra tutte le revisioni @@ -832,14 +834,14 @@ label_branch: Branch error_no_tracker_in_project: Nessun tracker è associato a questo progetto. Per favore verifica le impostazioni del Progetto. error_no_default_issue_status: Nessuno stato predefinito delle segnalazioni è configurato. Per favore verifica le impostazioni (Vai in "Amministrazione -> Stati segnalazioni"). - text_journal_changed: "{{label}} modificata da {{old}} a {{new}}" - text_journal_set_to: "{{label}} impostata a {{value}}" - text_journal_deleted: "{{label}} eliminata ({{old}})" + text_journal_changed: "%{label} modificata da %{old} a %{new}" + text_journal_set_to: "%{label} impostata a %{value}" + text_journal_deleted: "%{label} eliminata (%{old})" label_group_plural: Gruppi label_group: Gruppo label_group_new: Nuovo gruppo label_time_entry_plural: Tempo impiegato - text_journal_added: "{{value}} {{label}} aggiunto" + text_journal_added: "%{value} %{label} aggiunto" field_active: Attivo enumeration_system_activity: Attività di sistema permission_delete_issue_watchers: Elimina osservatori @@ -874,9 +876,9 @@ setting_start_of_week: Avvia calendari il permission_view_issues: Mostra segnalazioni label_display_used_statuses_only: Mostra solo stati che vengono usati per questo tracker - label_revision_id: Revisione {{value}} + label_revision_id: Revisione %{value} label_api_access_key: Chiave di accesso API - label_api_access_key_created_on: Chiave di accesso API creata {{value}} fa + label_api_access_key_created_on: Chiave di accesso API creata %{value} fa label_feeds_access_key: Chiave di accesso RSS notice_api_access_key_reseted: La chiave di accesso API è stata reimpostata. setting_rest_api_enabled: Abilita il servizio web REST @@ -903,32 +905,40 @@ label_subtask_plural: Sottoattività label_project_copy_notifications: Invia notifiche email durante la copia del progetto error_can_not_delete_custom_field: Impossibile eliminare il campo personalizzato - error_unable_to_connect: Impossibile connettersi ({{value}}) + error_unable_to_connect: Impossibile connettersi (%{value}) error_can_not_remove_role: Questo ruolo è in uso e non può essere eliminato. error_can_not_delete_tracker: Questo tracker contiene segnalazioni e non può essere eliminato. field_principal: Principale label_my_page_block: La mia pagina di blocco - notice_failed_to_save_members: "Impossibile salvare il membro(i): {{errors}}." + notice_failed_to_save_members: "Impossibile salvare il membro(i): %{errors}." text_zoom_out: Riduci ingrandimento text_zoom_in: Aumenta ingrandimento notice_unable_delete_time_entry: Impossibile eliminare il valore time log. label_overall_spent_time: Totale tempo impiegato - field_time_entries: Log time + field_time_entries: Tempo di collegamento 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + project_module_calendar: Calendario + button_edit_associated_wikipage: "Modifica la pagina wiki associata: %{page_title}" + text_are_you_sure_with_children: Eliminare la segnalazione e tutte le discendenti? + field_text: Campo di testo + label_user_mail_option_only_owner: Solo se io sono il proprietario + setting_default_notification_option: Opzione di notifica predefinita + label_user_mail_option_only_my_events: Solo se sono un osservatore o sono coinvolto + label_user_mail_option_only_assigned: Solo quando mi assegnano attività + label_user_mail_option_none: Nessun evento + field_member_of_group: Gruppo dell'assegnatario + field_assigned_to_role: Ruolo dell'assegnatario + notice_not_authorized_archived_project: Il progetto a cui stai accedendo è stato archiviato. + label_principal_search: "Cerca utente o gruppo:" + label_user_search: "Cerca utente:" + field_visible: Visibile + setting_emails_header: Intestazione email + setting_commit_logtime_activity_id: Attività per il tempo di collegamento + text_time_logged_by_changeset: Usato nel changeset %{value}. + setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento + notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare + setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/ja.yml --- a/config/locales/ja.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/ja.yml Thu Mar 03 12:11:53 2011 +0000 @@ -36,37 +36,37 @@ half_a_minute: "30ç§’å‰å¾Œ" less_than_x_seconds: one: "1秒以内" - other: "{{count}}秒以内" + other: "%{count}秒以内" x_seconds: one: "1ç§’" - other: "{{count}}ç§’" + other: "%{count}ç§’" less_than_x_minutes: one: "1分以内" - other: "{{count}}分以内" + other: "%{count}分以内" x_minutes: one: "1分" - other: "{{count}}分" + other: "%{count}分" about_x_hours: one: "ç´„1時間" - other: "ç´„{{count}}時間" + other: "ç´„%{count}時間" x_days: one: "1æ—¥" - other: "{{count}}æ—¥" + other: "%{count}æ—¥" about_x_months: one: "ç´„1ヶ月" - other: "ç´„{{count}}ヶ月" + other: "ç´„%{count}ヶ月" x_months: one: "1ヶ月" - other: "{{count}}ヶ月" + other: "%{count}ヶ月" about_x_years: one: "ç´„1å¹´" - other: "ç´„{{count}}å¹´" + other: "ç´„%{count}å¹´" over_x_years: one: "1年以上" - other: "{{count}}年以上" + other: "%{count}年以上" almost_x_years: one: "ã»ã¼1å¹´" - other: "ã»ã¼{{count}}å¹´" + other: "ã»ã¼%{count}å¹´" number: format: @@ -116,8 +116,8 @@ errors: template: header: - one: "{{model}} ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" - other: "{{model}} ã« {{count}} ã¤ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" + one: "%{model} ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" + other: "%{model} ã« %{count} ã¤ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" body: "次ã®é …目を確èªã—ã¦ãã ã•ã„。" messages: @@ -128,17 +128,17 @@ accepted: "ã‚’å—諾ã—ã¦ãã ã•ã„。" empty: "を入力ã—ã¦ãã ã•ã„。" blank: "を入力ã—ã¦ãã ã•ã„。" - too_long: "ã¯{{count}}文字以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" - too_short: "ã¯{{count}}文字以上ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" - wrong_length: "ã¯{{count}}文字ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" + 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}}以下ã®å€¤ã«ã—ã¦ãã ã•ã„。" + 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: "を開始日より後ã«ã—ã¦ãã ã•ã„" @@ -176,29 +176,30 @@ notice_locking_conflict: 別ã®ãƒ¦ãƒ¼ã‚¶ãŒãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã—ã¦ã„ã¾ã™ã€‚ notice_not_authorized: ã“ã®ãƒšãƒ¼ã‚¸ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯èªè¨¼ãŒå¿…è¦ã§ã™ã€‚ notice_not_authorized_archived_project: ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã¯æ›¸åº«ã«ä¿å­˜ã•れã¦ã„ã¾ã™ã€‚ - notice_email_sent: "{{value}} å®›ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚" - notice_email_error: "メールé€ä¿¡ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠({{value}})" + 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: "{{total}}ä»¶ã®ã†ã¡{{count}}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: {{ids}}." - notice_failed_to_save_members: "メンãƒãƒ¼ã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ: {{errors}}." + notice_failed_to_save_issues: "%{total}ä»¶ã®ã†ã¡%{count}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{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: ガントãƒãƒ£ãƒ¼ãƒˆã¯ã€æœ€å¤§è¡¨ç¤ºé …目数(%{max})ã‚’è¶…ãˆãŸãŸãŸã‚切りæ¨ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ - error_can_t_load_default_data: "デフォルト設定ãŒãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ: {{value}}" + error_can_t_load_default_data: "デフォルト設定ãŒãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{value}" error_scm_not_found: リãƒã‚¸ãƒˆãƒªã«ã€ã‚¨ãƒ³ãƒˆãƒª/リビジョンãŒå­˜åœ¨ã—ã¾ã›ã‚“。 - error_scm_command_failed: "リãƒã‚¸ãƒˆãƒªã¸ã‚¢ã‚¯ã‚»ã‚¹ã—よã†ã¨ã—ã¦ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã—ãŸ: {{value}}" + error_scm_command_failed: "リãƒã‚¸ãƒˆãƒªã¸ã‚¢ã‚¯ã‚»ã‚¹ã—よã†ã¨ã—ã¦ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã—ãŸ: %{value}" error_scm_annotate: "エントリãŒå­˜åœ¨ã—ãªã„ã€ã‚‚ã—ãã¯ã‚¢ãƒŽãƒ†ãƒ¼ãƒˆã§ãã¾ã›ã‚“。" error_issue_not_found_in_project: 'ãƒã‚±ãƒƒãƒˆãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€ã‚‚ã—ãã¯ã“ã®ãƒ—ロジェクトã«å±žã—ã¦ã„ã¾ã›ã‚“' error_unable_delete_issue_status: "ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" error_no_tracker_in_project: 'ã“ã®ãƒ—ロジェクトã«ã¯ãƒˆãƒ©ãƒƒã‚«ãƒ¼ãŒç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“。プロジェクト設定を確èªã—ã¦ãã ã•ã„。' error_no_default_issue_status: 'デフォルトã®ãƒã‚±ãƒƒãƒˆã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。設定を確èªã—ã¦ãã ã•ã„(管ç†â†’ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ï¼‰ã€‚' error_can_not_delete_custom_field: 'カスタムフィールドを削除ã§ãã¾ã›ã‚“。' - error_unable_to_connect: "接続ã§ãã¾ã›ã‚“。 ({{value}})" + error_unable_to_connect: "接続ã§ãã¾ã›ã‚“。 (%{value})" error_can_not_remove_role: 'ã“ã®ãƒ­ãƒ¼ãƒ«ã¯ä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚削除ã§ãã¾ã›ã‚“。' error_can_not_reopen_issue_on_closed_version: '終了ã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã²ã‚‚付ã‘ã•れãŸãƒã‚±ãƒƒãƒˆã®å†ã‚ªãƒ¼ãƒ—ンã¯ã§ãã¾ã›ã‚“。' error_can_not_archive_project: ã“ã®ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã¯æ›¸åº«ã«ä¿å­˜ã§ãã¾ã›ã‚“ @@ -207,25 +208,25 @@ error_workflow_copy_target: 'コピー先ã¨ãªã‚‹ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã¨ãƒ­ãƒ¼ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„' error_can_not_delete_tracker: 'ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã¯ä½¿ç”¨ã•れã¦ã„ã¾ã™ã€‚削除ã§ãã¾ã›ã‚“。' - warning_attachments_not_saved: "{{count}}å€‹ã®æ·»ä»˜ãƒ•ァイルãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + warning_attachments_not_saved: "%{count}å€‹ã®æ·»ä»˜ãƒ•ァイルãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" - mail_subject_lost_password: "{{value}} パスワードå†ç™ºè¡Œ" + mail_subject_lost_password: "%{value} パスワードå†ç™ºè¡Œ" mail_body_lost_password: 'パスワードを変更ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®ãƒªãƒ³ã‚¯ã‚’クリックã—ã¦ãã ã•ã„:' - mail_subject_register: "{{value}} アカウント登録ã®ç¢ºèª" + mail_subject_register: "%{value} アカウント登録ã®ç¢ºèª" mail_body_register: 'アカウント登録を完了ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’クリックã—ã¦ãã ã•ã„:' - mail_body_account_information_external: "{{value}} アカウントを使ã£ã¦ã«ãƒ­ã‚°ã‚¤ãƒ³ã§ãã¾ã™ã€‚" + 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: "Wikiページ {{id}} ãŒè¿½åŠ ã•れã¾ã—ãŸ" - mail_body_wiki_content_added: "{{author}} ã«ã‚ˆã£ã¦Wikiページ {{id}} ãŒè¿½åŠ ã•れã¾ã—ãŸã€‚" - mail_subject_wiki_content_updated: "Wikiページ {{id}} ãŒæ›´æ–°ã•れã¾ã—ãŸ" - mail_body_wiki_content_updated: "{{author}} ã«ã‚ˆã£ã¦Wikiページ {{id}} ãŒæ›´æ–°ã•れã¾ã—ãŸã€‚" + 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: "Wikiページ %{id} ãŒè¿½åŠ ã•れã¾ã—ãŸ" + 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}}ä»¶ã®ã‚¨ãƒ©ãƒ¼" + gui_validation_error_plural: "%{count}ä»¶ã®ã‚¨ãƒ©ãƒ¼" field_name: åç§° field_description: 説明 @@ -288,6 +289,7 @@ field_attr_lastname: 苗字属性 field_attr_mail: メール属性 field_onthefly: ã‚ã‚ã›ã¦ãƒ¦ãƒ¼ã‚¶ã‚’ä½œæˆ + field_start_date: é–‹å§‹æ—¥ field_done_ratio: é€²æ— % field_auth_source: èªè¨¼æ–¹å¼ field_hide_mail: メールアドレスを隠㙠@@ -322,6 +324,7 @@ field_member_of_group: 担当者ã®ã‚°ãƒ«ãƒ¼ãƒ— field_assigned_to_role: 担当者ã®ãƒ­ãƒ¼ãƒ« field_text: テキスト + field_visible: 表示 setting_app_title: アプリケーションã®ã‚¿ã‚¤ãƒˆãƒ« setting_app_subtitle: アプリケーションã®ã‚µãƒ–タイトル @@ -351,6 +354,7 @@ setting_issue_list_default_columns: ãƒã‚±ãƒƒãƒˆã®ä¸€è¦§ã§è¡¨ç¤ºã™ã‚‹é …ç›® setting_repositories_encodings: リãƒã‚¸ãƒˆãƒªã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° setting_commit_logs_encoding: コミットメッセージã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° + setting_emails_header: メールã®ãƒ˜ãƒƒãƒ€ setting_emails_footer: メールã®ãƒ•ッタ setting_protocol: プロトコル setting_per_page_options: ページ毎ã®è¡¨ç¤ºä»¶æ•° @@ -377,6 +381,9 @@ setting_start_of_week: 週ã®é–‹å§‹æ›œæ—¥ setting_rest_api_enabled: RESTã«ã‚ˆã‚‹Webサービスを有効ã«ã™ã‚‹ setting_default_notification_option: デフォルトã®ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚ªãƒ—ション + setting_commit_logtime_enabled: コミット時ã«ä½œæ¥­æ™‚間を記録ã™ã‚‹ + setting_commit_logtime_activity_id: 作業時間ã®ä½œæ¥­åˆ†é¡ž + setting_gantt_items_limit: ガントãƒãƒ£ãƒ¼ãƒˆæœ€å¤§è¡¨ç¤ºé …目数 permission_add_project: プロジェクトã®è¿½åŠ  permission_add_subprojects: サブプロジェクトã®è¿½åŠ  @@ -456,14 +463,14 @@ label_x_projects: zero: プロジェクトã¯ã‚りã¾ã›ã‚“ one: 1プロジェクト - other: "{{count}}プロジェクト" + 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_issues_by: "%{value} 別ã®ãƒã‚±ãƒƒãƒˆ" label_issue_added: ãƒã‚±ãƒƒãƒˆãŒè¿½åŠ ã•れã¾ã—㟠label_issue_updated: ãƒã‚±ãƒƒãƒˆãŒæ›´æ–°ã•れã¾ã—㟠label_document: 文書 @@ -514,7 +521,7 @@ label_registered_on: 登録日 label_activity: 活動 label_overall_activity: å…¨ã¦ã®æ´»å‹• - label_user_activity: "{{value}} ã®æ´»å‹•" + label_user_activity: "%{value} ã®æ´»å‹•" label_new: æ–°ã—ãä½œæˆ label_logged_as: ログイン中: label_environment: 環境 @@ -524,7 +531,7 @@ label_auth_source_plural: èªè¨¼æ–¹å¼ label_subproject_plural: サブプロジェクト label_subproject_new: æ–°ã—ã„サブプロジェクト - label_and_its_subprojects: "{{value}} ã¨ã‚µãƒ–プロジェクト" + label_and_its_subprojects: "%{value} ã¨ã‚µãƒ–プロジェクト" label_min_max_length: 最å°å€¤ - 最大値ã®é•·ã• label_list: リストã‹ã‚‰é¸æŠž label_date: 日付 @@ -535,8 +542,8 @@ label_text: é•·ã„テキスト label_attribute: 属性 label_attribute_plural: 属性 - label_download: "{{count}}ダウンロード" - label_download_plural: "{{count}}ダウンロード" + label_download: "%{count}ダウンロード" + label_download_plural: "%{count}ダウンロード" label_no_data: 表示ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãŒã‚りã¾ã›ã‚“ label_change_status: ステータスã®å¤‰æ›´ label_history: 履歴 @@ -568,17 +575,17 @@ label_closed_issues: 完了 label_closed_issues_plural: 完了 label_x_open_issues_abbr_on_total: - zero: 0件未完了 / å…¨{{total}}ä»¶ - one: 1件未完了 / å…¨{{total}}ä»¶ - other: "{{count}}件未完了 / å…¨{{total}}ä»¶" + zero: 0件未完了 / å…¨%{total}ä»¶ + one: 1件未完了 / å…¨%{total}ä»¶ + other: "%{count}件未完了 / å…¨%{total}ä»¶" label_x_open_issues_abbr: zero: 0件未完了 one: 1件未完了 - other: "{{count}}件未完了" + other: "%{count}件未完了" label_x_closed_issues_abbr: zero: 0件完了 one: 1件完了 - other: "{{count}}件完了" + other: "%{count}件完了" label_total: åˆè¨ˆ label_permissions: æ¨©é™ label_current_status: ç¾åœ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ @@ -596,7 +603,7 @@ label_months_from: ヶ月分 label_gantt: ガントãƒãƒ£ãƒ¼ãƒˆ label_internal: 内部 - label_last_changes: "最新ã®å¤‰æ›´ {{count}}ä»¶" + label_last_changes: "最新ã®å¤‰æ›´ %{count}ä»¶" label_change_view_all: å…¨ã¦ã®å¤‰æ›´ã‚’見る label_personalize_page: ã“ã®ãƒšãƒ¼ã‚¸ã‚’パーソナライズã™ã‚‹ label_comment: コメント @@ -604,7 +611,7 @@ label_x_comments: zero: コメントãŒã‚りã¾ã›ã‚“ one: 1コメント - other: "{{count}}コメント" + other: "%{count}コメント" label_comment_add: コメント追加 label_comment_added: 追加ã•れãŸã‚³ãƒ¡ãƒ³ãƒˆ label_comment_delete: コメント削除 @@ -625,7 +632,7 @@ label_yesterday: 昨日 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: 今年 @@ -639,13 +646,13 @@ label_repository: リãƒã‚¸ãƒˆãƒª label_repository_plural: リãƒã‚¸ãƒˆãƒª label_browse: ブラウズ - label_modification: "{{count}}点ã®å¤‰æ›´" - label_modification_plural: "{{count}}点ã®å¤‰æ›´" + label_modification: "%{count}点ã®å¤‰æ›´" + label_modification_plural: "%{count}点ã®å¤‰æ›´" label_branch: ブランムlabel_tag: ã‚¿ã‚° label_revision: リビジョン label_revision_plural: リビジョン - label_revision_id: リビジョン {{value}} + label_revision_id: リビジョン %{value} label_associated_revisions: 関係ã—ã¦ã„るリビジョン label_added: 追加 label_modified: 変更 @@ -662,8 +669,8 @@ label_sort_lower: 下㸠label_sort_lowest: 一番下㸠label_roadmap: ロードマップ - label_roadmap_due_in: "期日ã¾ã§ {{value}}" - label_roadmap_overdue: "{{value}} é…れ" + label_roadmap_due_in: "期日ã¾ã§ %{value}" + label_roadmap_overdue: "%{value} é…れ" label_roadmap_no_issues: ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«é–¢ã™ã‚‹ãƒã‚±ãƒƒãƒˆã¯ã‚りã¾ã›ã‚“ label_search: 検索 label_result_plural: çµæžœ @@ -682,8 +689,8 @@ label_issue_tracking: ãƒã‚±ãƒƒãƒˆãƒˆãƒ©ãƒƒã‚­ãƒ³ã‚° label_spent_time: 作業時間ã®è¨˜éŒ² label_overall_spent_time: å…¨ã¦ã®ä½œæ¥­æ™‚é–“ã®è¨˜éŒ² - label_f_hour: "{{value}}時間" - label_f_hour_plural: "{{value}}時間" + label_f_hour: "%{value}時間" + label_f_hour_plural: "%{value}時間" label_time_tracking: 時間トラッキング label_change_plural: 変更 label_statistics: 統計 @@ -734,15 +741,15 @@ label_date_from: "日付指定: " label_date_to: ã‹ã‚‰ label_language_based: 既定ã®è¨€èªžã®è¨­å®šã«å¾“ㆠ- label_sort_by: "ä¸¦ã³æ›¿ãˆ {{value}}" + 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_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_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: 更新履歴 @@ -762,7 +769,7 @@ label_registration_activation_by_email: メールã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 label_registration_manual_activation: 手動ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 label_registration_automatic_activation: 自動ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 - label_display_per_page: "1ページã«: {{value}}" + label_display_per_page: "1ページã«: %{value}" label_age: å¹´é½¢ label_change_properties: プロパティã®å¤‰æ›´ label_general: 全般 @@ -785,7 +792,7 @@ label_sort: ソートæ¡ä»¶ label_ascending: 昇順 label_descending: é™é † - label_date_from_to: "{{start}}ã‹ã‚‰{{end}}ã¾ã§" + label_date_from_to: "%{start}ã‹ã‚‰%{end}ã¾ã§" label_wiki_content_added: WikiページãŒè¿½åŠ ã•れã¾ã—㟠label_wiki_content_updated: Wikiãƒšãƒ¼ã‚¸ãŒæ›´æ–°ã•れã¾ã—㟠label_group: グループ @@ -804,9 +811,11 @@ label_display_used_statuses_only: ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã§ä½¿ã‚れã¦ã„るステータスã®ã¿è¡¨ç¤ºã™ã‚‹ label_api_access_key: APIアクセスキー label_missing_api_access_key: APIアクセスキーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ - label_api_access_key_created_on: "APIアクセスキーã¯{{value}}å‰ã«ä½œæˆã•れã¾ã—ãŸ" + label_api_access_key_created_on: "APIアクセスキーã¯%{value}å‰ã«ä½œæˆã•れã¾ã—ãŸ" label_subtask_plural: å­ãƒã‚±ãƒƒãƒˆ label_project_copy_notifications: コピーã—ãŸãƒã‚±ãƒƒãƒˆã®ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚’é€ä¿¡ã™ã‚‹ + label_principal_search: "ユーザã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®æ¤œç´¢:" + label_user_search: "ãƒ¦ãƒ¼ã‚¶ã®æ¤œç´¢:" button_login: ログイン button_submit: 変更 @@ -818,7 +827,7 @@ button_create_and_continue: é€£ç¶šä½œæˆ button_test: テスト button_edit: 編集 - button_edit_associated_wikipage: "関連ã™ã‚‹Wikiページを編集: {{page_title}}" + button_edit_associated_wikipage: "関連ã™ã‚‹Wikiページを編集: %{page_title}" button_add: 追加 button_change: 変更 button_apply: é©ç”¨ @@ -867,54 +876,55 @@ 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: ãƒã‚±ãƒƒãƒˆã¨ãã®å­ãƒã‚±ãƒƒãƒˆå…¨ã¦ã‚’削除ã—ã¾ã™ã‹? - text_journal_changed: "{{label}} ã‚’ {{old}} ã‹ã‚‰ {{new}} ã«å¤‰æ›´" - text_journal_set_to: "{{label}} ã‚’ {{value}} ã«ã‚»ãƒƒãƒˆ" - text_journal_deleted: "{{label}} を削除 ({{old}})" - text_journal_added: "{{label}} {{value}} を追加" + 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)ã¨æ•°å­—ã¨ãƒ€ãƒƒã‚·ãƒ¥(-)ãŒä½¿ãˆã¾ã™ã€‚
    一度ä¿å­˜ã™ã‚‹ã¨ã€è­˜åˆ¥å­ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。' - text_caracters_maximum: "最大{{count}}文字ã§ã™ã€‚" - text_caracters_minimum: "最低{{count}}文字ã®é•·ã•ãŒå¿…è¦ã§ã™" - text_length_between: "é•·ã•ã¯{{min}}ã‹ã‚‰{{max}}文字ã¾ã§ã§ã™ã€‚" + 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: (1行ã”ã¨ã«æ›¸ãã“ã¨ã§)複数ã®å€¤ã‚’設定ã§ãã¾ã™ã€‚ text_issues_ref_in_commit_messages: コミットメッセージ内ã§ãƒã‚±ãƒƒãƒˆã®å‚ç…§/修正 - text_issue_added: "ãƒã‚±ãƒƒãƒˆ {{id}} ㌠{{author}} ã«ã‚ˆã£ã¦å ±å‘Šã•れã¾ã—ãŸã€‚" - text_issue_updated: "ãƒã‚±ãƒƒãƒˆ {{id}} ㌠{{author}} ã«ã‚ˆã£ã¦æ›´æ–°ã•れã¾ã—ãŸã€‚" + text_issue_added: "ãƒã‚±ãƒƒãƒˆ %{id} ㌠%{author} ã«ã‚ˆã£ã¦å ±å‘Šã•れã¾ã—ãŸã€‚" + text_issue_updated: "ãƒã‚±ãƒƒãƒˆ %{id} ㌠%{author} ã«ã‚ˆã£ã¦æ›´æ–°ã•れã¾ã—ãŸã€‚" text_wiki_destroy_confirmation: 本当ã«ã“ã®wikiã¨ãã®å†…容ã®å…¨ã¦ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ - text_issue_category_destroy_question: "{{count}}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒã“ã®ã‚«ãƒ†ã‚´ãƒªã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" + 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_status_changed_by_changeset: "更新履歴 %{value} ã§é©ç”¨ã•れã¾ã—ãŸã€‚" + text_time_logged_by_changeset: "更新履歴 %{value} ã§é©ç”¨ã•れã¾ã—ãŸã€‚" text_issues_destroy_confirmation: '本当ã«é¸æŠžã—ãŸãƒã‚±ãƒƒãƒˆã‚’削除ã—ã¾ã™ã‹ï¼Ÿ' text_select_project_modules: 'ã“ã®ãƒ—ロジェクトã§ä½¿ç”¨ã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„:' text_default_administrator_account_changed: デフォルト管ç†ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¤‰æ›´æ¸ˆ text_file_repository_writable: ファイルリãƒã‚¸ãƒˆãƒªã«æ›¸ãè¾¼ã¿å¯èƒ½ text_plugin_assets_writable: Plugin assetsãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¿å¯èƒ½ text_rmagick_available: RMagickãŒä½¿ç”¨å¯èƒ½ (オプション) - text_destroy_time_entries_question: ã“ã®ãƒã‚±ãƒƒãƒˆã®{{hours}}時間分ã®ä½œæ¥­è¨˜éŒ²ã®æ‰±ã„ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + 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_user_wrote: "%{value} ã¯æ›¸ãã¾ã—ãŸ:" + text_enumeration_destroy_question: "%{count}個ã®ã‚ªãƒ–ジェクトãŒã“ã®å€¤ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" text_enumeration_category_reassign_to: '次ã®å€¤ã«å‰²ã‚Šå½“ã¦ç›´ã™:' - text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/email.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" + text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/configuration.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" text_repository_usernames_mapping: "リãƒã‚¸ãƒˆãƒªã®ãƒ­ã‚°ã‹ã‚‰æ¤œå‡ºã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’ã©ã®Redmineユーザーã«é–¢é€£ã¥ã‘ã‚‹ã®ã‹é¸æŠžã—ã¦ãã ã•ã„。\nログ上ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒRedmineã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ä¸€è‡´ã™ã‚‹å ´åˆã¯è‡ªå‹•çš„ã«é–¢é€£ã¥ã‘られã¾ã™ã€‚" text_diff_truncated: '... 差分ã®è¡Œæ•°ãŒè¡¨ç¤ºå¯èƒ½ãªä¸Šé™ã‚’è¶…ãˆã¾ã—ãŸã€‚è¶…éŽåˆ†ã¯è¡¨ç¤ºã—ã¾ã›ã‚“。' text_custom_field_possible_values_info: 'é¸æŠžè‚¢ã®å€¤ã¯1行ã«1個ãšã¤è¨˜è¿°ã—ã¦ãã ã•ã„。' - text_wiki_page_destroy_question: "ã“ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«{{descendants}}ページã®å­å­«ãƒšãƒ¼ã‚¸ãŒã‚りã¾ã™ã€‚" + text_wiki_page_destroy_question: "ã“ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«%{descendants}ページã®å­å­«ãƒšãƒ¼ã‚¸ãŒã‚りã¾ã™ã€‚" text_wiki_page_nullify_children: "å­ãƒšãƒ¼ã‚¸ã‚’メインページé…下ã«ç§»å‹•ã™ã‚‹" text_wiki_page_destroy_children: "é…下ã®å­å­«ãƒšãƒ¼ã‚¸ã‚‚削除ã™ã‚‹" text_wiki_page_reassign_children: "å­ãƒšãƒ¼ã‚¸ã‚’次ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«ç§»å‹•ã™ã‚‹" @@ -948,8 +958,7 @@ enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作業分類 (時間トラッキング) enumeration_system_activity: システム作業分類 - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/ko.yml --- a/config/locales/ko.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/ko.yml Thu Mar 03 12:11:53 2011 +0000 @@ -37,37 +37,37 @@ half_a_minute: "30ì´ˆ" less_than_x_seconds: one: "ì¼ì´ˆ ì´í•˜" - other: "{{count}}ì´ˆ ì´í•˜" + other: "%{count}ì´ˆ ì´í•˜" x_seconds: one: "ì¼ì´ˆ" - other: "{{count}}ì´ˆ" + other: "%{count}ì´ˆ" less_than_x_minutes: one: "ì¼ë¶„ ì´í•˜" - other: "{{count}}ë¶„ ì´í•˜" + other: "%{count}ë¶„ ì´í•˜" x_minutes: one: "ì¼ë¶„" - other: "{{count}}ë¶„" + other: "%{count}ë¶„" about_x_hours: one: "약 한시간" - other: "약 {{count}}시간" + other: "약 %{count}시간" x_days: one: "하루" - other: "{{count}}ì¼" + other: "%{count}ì¼" about_x_months: one: "약 한달" - other: "약 {{count}}달" + other: "약 %{count}달" x_months: one: "한달" - other: "{{count}}달" + other: "%{count}달" about_x_years: one: "약 ì¼ë…„" - other: "약 {{count}}ë…„" + other: "약 %{count}ë…„" over_x_years: one: "ì¼ë…„ ì´ìƒ" - other: "{{count}}ë…„ ì´ìƒ" + other: "%{count}ë…„ ì´ìƒ" almost_x_years: one: "약 1ë…„" - other: "약 {{count}}ë…„" + other: "약 %{count}ë…„" prompts: year: "ë…„" month: "ì›”" @@ -145,8 +145,8 @@ errors: template: header: - one: "í•œê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ {{model}}ì„(를) 저장하지 않았습니다." - other: "{{count}}ê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ {{model}}ì„(를) 저장하지 않았습니다." + one: "í•œê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ %{model}ì„(를) 저장하지 않았습니다." + other: "%{count}ê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ %{model}ì„(를) 저장하지 않았습니다." # The variable :count is also available body: "ë‹¤ìŒ í•­ëª©ì— ë¬¸ì œê°€ 발견했습니다:" @@ -158,16 +158,16 @@ accepted: "ì€ ì¸ì •ë˜ì–´ì•¼ 합니다" empty: "ì€ ê¸¸ì´ê°€ 0ì´ì–´ì„œëŠ” 안ë©ë‹ˆë‹¤." blank: "ì€ ë¹ˆ ê°’ì´ì–´ì„œëŠ” 안 ë©ë‹ˆë‹¤" - too_long: "ì€ ë„ˆë¬´ ê¹ë‹ˆë‹¤ (최대 {{count}}ìž ê¹Œì§€)" - too_short: "ì€ ë„ˆë¬´ 짧습니다 (최소 {{count}}ìž ê¹Œì§€)" - wrong_length: "ì€ ê¸¸ì´ê°€ 틀렸습니다 ({{count}}ìžì´ì–´ì•¼ 합니다.)" + too_long: "ì€ ë„ˆë¬´ ê¹ë‹ˆë‹¤ (최대 %{count}ìž ê¹Œì§€)" + too_short: "ì€ ë„ˆë¬´ 짧습니다 (최소 %{count}ìž ê¹Œì§€)" + wrong_length: "ì€ ê¸¸ì´ê°€ 틀렸습니다 (%{count}ìžì´ì–´ì•¼ 합니다.)" taken: "ì€ ì´ë¯¸ ì„ íƒëœ ê²ë‹ˆë‹¤" not_a_number: "ì€ ìˆ«ìžê°€ 아닙니다" - greater_than: "ì€ {{count}}보다 커야 합니다." - greater_than_or_equal_to: "ì€ {{count}}보다 í¬ê±°ë‚˜ 같아야 합니다" - equal_to: "ì€ {{count}}(와)ê³¼ 같아야 합니다" - less_than: "ì€ {{count}}보다 작어야 합니다" - less_than_or_equal_to: "ì€ {{count}}ê³¼ 같거나 ì´í•˜ì„ 요구합니다" + 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: "는 시작날짜보다 커야 합니다" @@ -204,40 +204,40 @@ notice_file_not_found: 요청하신 페ì´ì§€ëŠ” ì‚­ì œë˜ì—ˆê±°ë‚˜ 옮겨졌습니다. notice_locking_conflict: 다른 사용ìžì— ì˜í•´ì„œ ë°ì´í„°ê°€ 변경ë˜ì—ˆìŠµë‹ˆë‹¤. notice_not_authorized: ì´ íŽ˜ì´ì§€ì— 접근할 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. - notice_email_sent: "{{value}}님ì—게 ë©”ì¼ì´ 발송ë˜ì—ˆìŠµë‹ˆë‹¤." - notice_email_error: "ë©”ì¼ì„ 전송하는 ê³¼ì •ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. ({{value}})" + notice_email_sent: "%{value}님ì—게 ë©”ì¼ì´ 발송ë˜ì—ˆìŠµë‹ˆë‹¤." + notice_email_error: "ë©”ì¼ì„ 전송하는 ê³¼ì •ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. (%{value})" notice_feeds_access_key_reseted: RSSì— ì ‘ê·¼ê°€ëŠ¥í•œ 열쇠(key)ê°€ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. - notice_failed_to_save_issues: "ì €ìž¥ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤: 실패 {{count}}(ì„ íƒ {{total}}): {{ids}}." + notice_failed_to_save_issues: "ì €ìž¥ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤: 실패 %{count}(ì„ íƒ %{total}): %{ids}." notice_no_issue_selected: "ì¼ê°ì´ ì„ íƒë˜ì§€ 않았습니다. 수정하기 ì›í•˜ëŠ” ì¼ê°ì„ ì„ íƒí•˜ì„¸ìš”" notice_account_pending: "ê³„ì •ì´ ë§Œë“¤ì–´ì¡Œìœ¼ë©° ê´€ë¦¬ìž ìŠ¹ì¸ ëŒ€ê¸°ì¤‘ìž…ë‹ˆë‹¤." notice_default_data_loaded: ê¸°ë³¸ê°’ì„ ì„±ê³µì ìœ¼ë¡œ ì½ì–´ë“¤ì˜€ìŠµë‹ˆë‹¤. notice_unable_delete_version: 삭제할 수 없는 버전입니다. - error_can_t_load_default_data: "ê¸°ë³¸ê°’ì„ ì½ì–´ë“¤ì¼ 수 없습니다.: {{value}}" + error_can_t_load_default_data: "ê¸°ë³¸ê°’ì„ ì½ì–´ë“¤ì¼ 수 없습니다.: %{value}" error_scm_not_found: 항목ì´ë‚˜ ë¦¬ë¹„ì ¼ì´ ì €ìž¥ì†Œì— ì¡´ìž¬í•˜ì§€ 않습니다. - error_scm_command_failed: "ì €ìž¥ì†Œì— ì ‘ê·¼í•˜ëŠ” ë„ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.: {{value}}" + error_scm_command_failed: "ì €ìž¥ì†Œì— ì ‘ê·¼í•˜ëŠ” ë„ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.: %{value}" error_scm_annotate: "í•­ëª©ì´ ì—†ê±°ë‚˜ 행별 ì´ë ¥ì„ ë³¼ 수 없습니다." error_issue_not_found_in_project: 'ì¼ê°ì´ 없거나 ì´ í”„ë¡œì íŠ¸ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤.' - warning_attachments_not_saved: "{{count}}ê°œ 파ì¼ì„ 저장할 수 없습니다." + warning_attachments_not_saved: "%{count}ê°œ 파ì¼ì„ 저장할 수 없습니다." - mail_subject_lost_password: "{{value}} 비밀번호" + mail_subject_lost_password: "%{value} 비밀번호" mail_body_lost_password: '비밀번호를 변경하려면 ë‹¤ìŒ ë§í¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.' - mail_subject_register: "{{value}} 계정 활성화" + mail_subject_register: "%{value} 계정 활성화" mail_body_register: 'ê³„ì •ì„ í™œì„±í™”í•˜ë ¤ë©´ ë§í¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.:' - mail_body_account_information_external: "로그ì¸í•  때 {{value}} ê³„ì •ì„ ì‚¬ìš©í•˜ì‹¤ 수 있습니다." + mail_body_account_information_external: "로그ì¸í•  때 %{value} ê³„ì •ì„ ì‚¬ìš©í•˜ì‹¤ 수 있습니다." mail_body_account_information: 계정 ì •ë³´ - mail_subject_account_activation_request: "{{value}} 계정 활성화 요청" - mail_body_account_activation_request: "새 사용ìž({{value}})ê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤. 관리ìžë‹˜ì˜ 승ì¸ì„ 기다리고 있습니다.:" - mail_body_reminder: "ë‹¹ì‹ ì´ ë§¡ê³  있는 ì¼ê° {{count}}ê°œì˜ ì™„ë£Œ ê¸°í•œì´ {{days}}ì¼ í›„ 입니다." - mail_subject_reminder: "ë‚´ì¼ì´ ë§Œê¸°ì¸ ì¼ê° {{count}}ê°œ ({{days}})" - mail_subject_wiki_content_added: "위키페ì´ì§€ '{{id}}'ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." - mail_subject_wiki_content_updated: "'위키페ì´ì§€ {{id}}'ì´(ê°€) 수정ë˜ì—ˆìŠµë‹ˆë‹¤." - mail_body_wiki_content_added: "{{author}}ì´(ê°€) 위키페ì´ì§€ '{{id}}'ì„(를) 추가하였습니다." - mail_body_wiki_content_updated: "{{author}}ì´(ê°€) 위키페ì´ì§€ '{{id}}'ì„(를) 수정하였습니다." + mail_subject_account_activation_request: "%{value} 계정 활성화 요청" + mail_body_account_activation_request: "새 사용ìž(%{value})ê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤. 관리ìžë‹˜ì˜ 승ì¸ì„ 기다리고 있습니다.:" + mail_body_reminder: "ë‹¹ì‹ ì´ ë§¡ê³  있는 ì¼ê° %{count}ê°œì˜ ì™„ë£Œ ê¸°í•œì´ %{days}ì¼ í›„ 입니다." + mail_subject_reminder: "ë‚´ì¼ì´ ë§Œê¸°ì¸ ì¼ê° %{count}ê°œ (%{days})" + mail_subject_wiki_content_added: "위키페ì´ì§€ '%{id}'ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." + mail_subject_wiki_content_updated: "'위키페ì´ì§€ %{id}'ì´(ê°€) 수정ë˜ì—ˆìŠµë‹ˆë‹¤." + mail_body_wiki_content_added: "%{author}ì´(ê°€) 위키페ì´ì§€ '%{id}'ì„(를) 추가하였습니다." + mail_body_wiki_content_updated: "%{author}ì´(ê°€) 위키페ì´ì§€ '%{id}'ì„(를) 수정하였습니다." gui_validation_error: ì—러 - gui_validation_error_plural: "{{count}}ê°œ ì—러" + gui_validation_error_plural: "%{count}ê°œ ì—러" field_name: ì´ë¦„ field_description: 설명 @@ -299,6 +299,7 @@ field_attr_lastname: 성 ì†ì„± field_attr_mail: ë©”ì¼ ì†ì„± field_onthefly: ë™ì  ì‚¬ìš©ìž ìƒì„± + field_start_date: 시작시간 field_done_ratio: ì§„ì²™ë„ field_auth_source: ì¸ì¦ ê³µê¸‰ìž field_hide_mail: ë©”ì¼ ì£¼ì†Œ 숨기기 @@ -441,14 +442,14 @@ label_x_projects: zero: ì—†ìŒ one: "한 프로ì íЏ" - other: "{{count}}ê°œ 프로ì íЏ" + 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_issues_by: "%{value}별 ì¼ê°" label_issue_added: ì¼ê° 추가 label_issue_updated: ì¼ê° 수정 label_document: 문서 @@ -498,7 +499,7 @@ label_registered_on: 등ë¡ì‹œê° label_activity: 작업내역 label_overall_activity: ì „ì²´ 작업내역 - label_user_activity: "{{value}}ì˜ ìž‘ì—…ë‚´ì—­" + label_user_activity: "%{value}ì˜ ìž‘ì—…ë‚´ì—­" label_new: 새로 만들기 label_logged_as: '로그ì¸ê³„ì •:' label_environment: 환경 @@ -507,7 +508,7 @@ label_auth_source_new: 새 ì¸ì¦ ê³µê¸‰ìž label_auth_source_plural: ì¸ì¦ ê³µê¸‰ìž label_subproject_plural: 하위 프로ì íЏ - label_and_its_subprojects: "{{value}}와 하위 프로ì íŠ¸ë“¤" + label_and_its_subprojects: "%{value}와 하위 프로ì íŠ¸ë“¤" label_min_max_length: 최소 - 최대 ê¸¸ì´ label_list: ëª©ë¡ label_date: ë‚ ì§œ @@ -518,8 +519,8 @@ label_text: í…스트 label_attribute: ì†ì„± label_attribute_plural: ì†ì„± - label_download: "{{count}}회 다운로드" - label_download_plural: "{{count}}회 다운로드" + label_download: "%{count}회 다운로드" + label_download_plural: "%{count}회 다운로드" label_no_data: 표시할 ë°ì´í„°ê°€ 없습니다. label_change_status: ìƒíƒœ 변경 label_history: ì´ë ¥ @@ -550,17 +551,17 @@ label_closed_issues: ì™„ë£Œë¨ label_closed_issues_plural: ì™„ë£Œë¨ label_x_open_issues_abbr_on_total: - zero: "ì´ {{total}} ê±´ ëª¨ë‘ ì™„ë£Œ" - one: "한 ê±´ ì§„í–‰ 중 / ì´ {{total}} ê±´ 중 " - other: "{{count}} ê±´ ì§„í–‰ 중 / ì´ {{total}} ê±´" + zero: "ì´ %{total} ê±´ ëª¨ë‘ ì™„ë£Œ" + one: "한 ê±´ ì§„í–‰ 중 / ì´ %{total} ê±´ 중 " + other: "%{count} ê±´ ì§„í–‰ 중 / ì´ %{total} ê±´" label_x_open_issues_abbr: zero: ëª¨ë‘ ì™„ë£Œ one: 한 ê±´ ì§„í–‰ 중 - other: "{{count}} ê±´ ì§„í–‰ 중" + other: "%{count} ê±´ ì§„í–‰ 중" label_x_closed_issues_abbr: zero: ëª¨ë‘ ë¯¸ì™„ë£Œ one: 한 ê±´ 완료 - other: "{{count}} ê±´ 완료" + other: "%{count} ê±´ 완료" label_total: 합계 label_permissions: 권한 label_current_status: ì¼ê° ìƒíƒœ @@ -578,7 +579,7 @@ label_months_from: 개월 ë™ì•ˆ | 다ìŒë¶€í„° label_gantt: Gantt 챠트 label_internal: ë‚´ë¶€ - label_last_changes: "최근 {{count}}ê°œì˜ ë³€ê²½ì‚¬í•­" + label_last_changes: "최근 %{count}ê°œì˜ ë³€ê²½ì‚¬í•­" label_change_view_all: 모든 변경 ë‚´ì—­ 보기 label_personalize_page: 입맛대로 구성하기 label_comment: 댓글 @@ -586,7 +587,7 @@ label_x_comments: zero: 댓글 ì—†ìŒ one: 한 ê°œì˜ ëŒ“ê¸€ - other: "{{count}} ê°œì˜ ëŒ“ê¸€" + other: "%{count} ê°œì˜ ëŒ“ê¸€" label_comment_add: 댓글 추가 label_comment_added: ëŒ“ê¸€ì´ ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤. label_comment_delete: 댓글 ì‚­ì œ @@ -607,7 +608,7 @@ label_yesterday: ì–´ì œ 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: 올해 @@ -621,8 +622,8 @@ label_repository: 저장소 label_repository_plural: 저장소 label_browse: 저장소 둘러보기 - label_modification: "{{count}} 변경" - label_modification_plural: "{{count}} 변경" + label_modification: "%{count} 변경" + label_modification_plural: "%{count} 변경" label_revision: ê°œì •íŒ label_revision_plural: ê°œì •íŒ label_associated_revisions: ê´€ë ¨ëœ ê°œì •íŒë“¤ @@ -640,8 +641,8 @@ label_sort_lower: 아래로 label_sort_lowest: 맨 아래로 label_roadmap: 로드맵 - label_roadmap_due_in: "기한 {{value}}" - label_roadmap_overdue: "{{value}} 지연" + label_roadmap_due_in: "기한 %{value}" + label_roadmap_overdue: "%{value} 지연" label_roadmap_no_issues: ì´ ë²„ì „ì— í•´ë‹¹í•˜ëŠ” ì¼ê° ì—†ìŒ label_search: 검색 label_result_plural: ê²°ê³¼ @@ -659,8 +660,8 @@ label_changes_details: 모든 ìƒì„¸ 변경 ë‚´ì—­ label_issue_tracking: ì¼ê° ì¶”ì  label_spent_time: 소요 시간 - label_f_hour: "{{value}} 시간" - label_f_hour_plural: "{{value}} 시간" + label_f_hour: "%{value} 시간" + label_f_hour_plural: "%{value} 시간" label_time_tracking: ì‹œê°„ì¶”ì  label_change_plural: 변경사항들 label_statistics: 통계 @@ -709,13 +710,13 @@ label_date_from: '기간:' label_date_to: ' ~ ' label_language_based: ì–¸ì–´ì„¤ì •ì— ë”°ë¦„ - label_sort_by: "{{value}}(으)로 ì •ë ¬" + label_sort_by: "%{value}(으)로 ì •ë ¬" label_send_test_email: 테스트 ë©”ì¼ ë³´ë‚´ê¸° - label_feeds_access_key_created_on: "피드 ì ‘ê·¼ 키가 {{value}} ì´ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." + label_feeds_access_key_created_on: "피드 ì ‘ê·¼ 키가 %{value} ì´ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." label_module_plural: 모듈 - label_added_time_by: "{{author}}ì´(ê°€) {{age}} ì „ì— ì¶”ê°€í•¨" - label_updated_time_by: "{{author}}ì´(ê°€) {{age}} ì „ì— ë³€ê²½" - label_updated_time: "{{value}} ì „ì— ìˆ˜ì •ë¨" + 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: ë³€ê²½ë¬¶ìŒ @@ -731,7 +732,7 @@ label_registration_activation_by_email: ë©”ì¼ë¡œ ê³„ì •ì„ í™œì„±í™”í•˜ê¸° label_registration_automatic_activation: ìžë™ 계정 활성화 label_registration_manual_activation: ìˆ˜ë™ ê³„ì • 활성화 - label_display_per_page: "페ì´ì§€ë‹¹ 줄수: {{value}}" + label_display_per_page: "페ì´ì§€ë‹¹ 줄수: %{value}" label_age: 마지막 ìˆ˜ì •ì¼ label_change_properties: ì†ì„± 변경 label_general: ì¼ë°˜ @@ -754,7 +755,7 @@ label_sort: ì •ë ¬ label_ascending: 오름차순 label_descending: 내림차순 - label_date_from_to: "{{start}}부터 {{end}}까지" + label_date_from_to: "%{start}부터 %{end}까지" label_wiki_content_added: 위키페ì´ì§€ 추가 label_wiki_content_updated: 위키페ì´ì§€ 수정 @@ -806,48 +807,48 @@ 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_tip_issue_begin_day: 오늘 시작하는 업무(task) text_tip_issue_end_day: 오늘 종료하는 업무(task) text_tip_issue_begin_end_day: 오늘 시작하고 종료하는 업무(task) text_project_identifier_info: 'ì˜ë¬¸ 소문ìž(a-z) ë° ìˆ«ìž, 대쉬(-) 가능.
    저장ëœí›„ì—는 ì‹ë³„ìž ë³€ê²½ 불가능.' - text_caracters_maximum: "최대 {{count}} ê¸€ìž ê°€ëŠ¥" - text_caracters_minimum: "최소한 {{count}} ê¸€ìž ì´ìƒì´ì–´ì•¼ 합니다." - text_length_between: "{{min}} ì—서 {{max}} 글ìž" + text_caracters_maximum: "최대 %{count} ê¸€ìž ê°€ëŠ¥" + text_caracters_minimum: "최소한 %{count} ê¸€ìž ì´ìƒì´ì–´ì•¼ 합니다." + text_length_between: "%{min} ì—서 %{max} 글ìž" text_tracker_no_workflow: ì´ ì¼ê° 유형ì—는 업무íë¦„ì´ ì •ì˜ë˜ì§€ 않았습니다. text_unallowed_characters: 허용ë˜ì§€ 않는 문ìžì—´ text_comma_separated: "구분ìž','를 ì´ìš©í•´ì„œ 여러 ê°œì˜ ê°’ì„ ìž…ë ¥í•  수 있습니다." text_issues_ref_in_commit_messages: 제출 메시지ì—서 ì¼ê°ì„ 참조하거나 해결하기 - text_issue_added: "{{author}}ì´(ê°€) ì¼ê° {{id}}ì„(를) 보고하였습니다." - text_issue_updated: "{{author}}ì´(ê°€) ì¼ê° {{id}}ì„(를) 수정하였습니다." + text_issue_added: "%{author}ì´(ê°€) ì¼ê° %{id}ì„(를) 보고하였습니다." + text_issue_updated: "%{author}ì´(ê°€) ì¼ê° %{id}ì„(를) 수정하였습니다." text_wiki_destroy_confirmation: ì´ ìœ„í‚¤ì™€ 모든 ë‚´ìš©ì„ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ? - text_issue_category_destroy_question: "ì¼ë¶€ ì¼ê°ë“¤({{count}}ê°œ)ì´ ì´ ë²”ì£¼ì— ì§€ì •ë˜ì–´ 있습니다. 어떻게 하시겠습니까?" + 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_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_question: 삭제하려는 ì¼ê°ì— %{hours} ì‹œê°„ì´ ë³´ê³ ë˜ì–´ 있습니다. 어떻게 하시겠습니까? text_destroy_time_entries: ë³´ê³ ëœ ì‹œê°„ì„ ì‚­ì œí•˜ê¸° text_assign_time_entries_to_project: ë³´ê³ ëœ ì‹œê°„ì„ í”„ë¡œì íŠ¸ì— í• ë‹¹í•˜ê¸° text_reassign_time_entries: 'ì´ ì•Œë¦¼ì— ë³´ê³ ëœ ì‹œê°„ì„ ìž¬í• ë‹¹í•˜ê¸°:' - text_user_wrote: "{{value}}ì˜ ë§ê¸€:" + text_user_wrote: "%{value}ì˜ ë§ê¸€:" text_enumeration_category_reassign_to: '새로운 ê°’ì„ ì„¤ì •:' - text_enumeration_destroy_question: "{{count}} ê°œì˜ ì¼ê°ì´ ì´ ê°’ì„ ì‚¬ìš©í•˜ê³  있습니다." - text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/email.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." + text_enumeration_destroy_question: "%{count} ê°œì˜ ì¼ê°ì´ ì´ ê°’ì„ ì‚¬ìš©í•˜ê³  있습니다." + text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/configuration.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." text_repository_usernames_mapping: "저장소 로그ì—서 ë°œê²¬ëœ ê° ì‚¬ìš©ìžì— ë ˆë“œë§ˆì¸ ì‚¬ìš©ìžë¥¼ ì—…ë°ì´íŠ¸í• ë•Œ ì„ íƒí•©ë‹ˆë‹¤.\n레드마ì¸ê³¼ ì €ìž¥ì†Œì˜ ì´ë¦„ì´ë‚˜ ì´ë©”ì¼ì´ ê°™ì€ ì‚¬ìš©ìžê°€ ìžë™ìœ¼ë¡œ ì—°ê²°ë©ë‹ˆë‹¤." text_diff_truncated: '... ì´ ì°¨ì´ì ì€ 표시할 수 있는 최대 줄수를 초과해서 ì´ ì°¨ì´ì ì€ 잘렸습니다.' text_custom_field_possible_values_info: 'ê° ê°’ 당 한 줄' - text_wiki_page_destroy_question: ì´ íŽ˜ì´ì§€ëŠ” {{descendants}} ê°œì˜ í•˜ìœ„ 페ì´ì§€ì™€ 관련 ë‚´ìš©ì´ ìžˆìŠµë‹ˆë‹¤. ì´ ë‚´ìš©ì„ ì–´ë–»ê²Œ 하시겠습니까? + text_wiki_page_destroy_question: ì´ íŽ˜ì´ì§€ëŠ” %{descendants} ê°œì˜ í•˜ìœ„ 페ì´ì§€ì™€ 관련 ë‚´ìš©ì´ ìžˆìŠµë‹ˆë‹¤. ì´ ë‚´ìš©ì„ ì–´ë–»ê²Œ 하시겠습니까? text_wiki_page_nullify_children: 하위 페ì´ì§€ë¥¼ 최ìƒìœ„ 페ì´ì§€ 아래로 지정 text_wiki_page_destroy_children: 모든 하위 페ì´ì§€ì™€ 관련 ë‚´ìš©ì„ ì‚­ì œ text_wiki_page_reassign_children: 하위 페ì´ì§€ë¥¼ ì´ íŽ˜ì´ì§€ 아래로 지정 @@ -884,14 +885,14 @@ label_branch: 분기(分å²)저장소 error_no_tracker_in_project: 사용할 수 있ë„ë¡ ì„¤ì •ëœ ì¼ê° ìœ í˜•ì´ ì—†ìŠµë‹ˆë‹¤. 프로ì íЏ ì„¤ì •ì„ í™•ì¸í•˜ì‹­ì‹œì˜¤. error_no_default_issue_status: '기본 ìƒíƒœê°€ ì •í•´ì ¸ 있지 않습니다. ì„¤ì •ì„ í™•ì¸í•˜ì‹­ì‹œì˜¤. (주 ë©”ë‰´ì˜ "관리" -> "ì¼ê° ìƒíƒœ")' - text_journal_changed: "{{label}}ì„(를) {{old}}ì—서 {{new}}(으)로 변경ë˜ì—ˆìŠµë‹ˆë‹¤." - text_journal_set_to: "{{label}}ì„(를) {{value}}(으)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." - text_journal_deleted: "{{label}} ê°’ì´ ì§€ì›Œì¡ŒìŠµë‹ˆë‹¤. ({{old}})" + text_journal_changed: "%{label}ì„(를) %{old}ì—서 %{new}(으)로 변경ë˜ì—ˆìŠµë‹ˆë‹¤." + text_journal_set_to: "%{label}ì„(를) %{value}(으)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." + text_journal_deleted: "%{label} ê°’ì´ ì§€ì›Œì¡ŒìŠµë‹ˆë‹¤. (%{old})" label_group_plural: 그룹 label_group: 그룹 label_group_new: 새 그룹 label_time_entry_plural: 작업시간 - text_journal_added: "{{label}}ì— {{value}}ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." + text_journal_added: "%{label}ì— %{value}ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." field_active: 사용중 enumeration_system_activity: 시스템 작업 permission_delete_issue_watchers: ì¼ê°ì§€í‚´ì´ 지우기 @@ -926,9 +927,9 @@ setting_start_of_week: 달력 시작 ìš”ì¼ permission_view_issues: ì¼ê° 보기 label_display_used_statuses_only: ì´ ì¼ê°ìœ í˜•ì—서 사용ë˜ëŠ” ìƒíƒœë§Œ 보여주기 - label_revision_id: ê°œì •íŒ {{value}} + label_revision_id: ê°œì •íŒ %{value} label_api_access_key: API 접근키 - label_api_access_key_created_on: API 접근키가 {{value}} ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + label_api_access_key_created_on: API 접근키가 %{value} ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. label_feeds_access_key: RSS 접근키 notice_api_access_key_reseted: API 접근키가 초기화ë˜ì—ˆìŠµë‹ˆë‹¤. setting_rest_api_enabled: REST 웹서비스 활성화 @@ -955,12 +956,12 @@ label_subtask_plural: 하위 ì¼ê° label_project_copy_notifications: 프로ì íЏ 복사 ì¤‘ì— ì´ë©”ì¼ ì•Œë¦¼ 보내기 error_can_not_delete_custom_field: ì‚¬ìš©ìž ì •ì˜ í•„ë“œë¥¼ 삭제할 수 없습니다. - error_unable_to_connect: ì—°ê²°í•  수 없습니다(({{value}}) + error_unable_to_connect: ì—°ê²°í•  수 없습니다((%{value}) error_can_not_remove_role: ì´ ì—­í• ì€ í˜„ìž¬ 사용 중ì´ì´ì„œ 삭제할 수 없습니다. - error_can_not_delete_tracker: ì´ ìœ í˜•ì˜ ì¼ê°ë“¤ì´ 있ì—서 삭제할 수 없습니다. + error_can_not_delete_tracker: ì´ ìœ í˜•ì˜ ì¼ê°ë“¤ì´ 있어서 삭제할 수 없습니다. field_principal: ì‹ ì› label_my_page_block: ë‚´ 페ì´ì§€ 출력화면 - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." + notice_failed_to_save_members: "%{errors}:구성ì›ì„ 저장 중 실패하였습니다" text_zoom_out: ë” ìž‘ê²Œ text_zoom_in: ë” í¬ê²Œ notice_unable_delete_time_entry: 시간 ê¸°ë¡ í•­ëª©ì„ ì‚­ì œí•  수 없습니다. @@ -968,19 +969,27 @@ field_time_entries: 기ë¡ëœ 시간 project_module_gantt: Gantt 챠트 project_module_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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + button_edit_associated_wikipage: "ì—°ê´€ëœ ìœ„í‚¤ 페ì´ì§€ %{page_title} 수정" + text_are_you_sure_with_children: ì¼ê°ê³¼ 모든 하위 ì¼ê°ë“¤ì„ 삭제하시겠습니까? + field_text: í…스트 ì˜ì—­ + label_user_mail_option_only_owner: ë‚´ê°€ ì €ìžì¸ 사항만 + setting_default_notification_option: 기본 알림 옵션 + label_user_mail_option_only_my_events: ë‚´ê°€ 지켜보거나 ì†í•´ìžˆëŠ” 사항만 + label_user_mail_option_only_assigned: ë‚´ì—게 í• ë‹¹ëœ ì‚¬í•­ë§Œ + label_user_mail_option_none: 알림 ì—†ìŒ + field_member_of_group: í• ë‹¹ëœ ì‚¬ëžŒì˜ ê·¸ë£¹ + field_assigned_to_role: í• ë‹¹ëœ ì‚¬ëžŒì˜ ì—­í•  + notice_not_authorized_archived_project: 접근하려는 프로ì íŠ¸ëŠ” ì´ë¯¸ 잠금보관ë˜ì–´ 있습니다. + label_principal_search: "ì‚¬ìš©ìž ë° ê·¸ë£¹ 찾기:" + label_user_search: "ì‚¬ìš©ìž ì°¾ê¸°::" + field_visible: ë³´ì´ê¸° + setting_emails_header: ì´ë©”ì¼ í—¤ë” + setting_commit_logtime_activity_id: 기ë¡ëœ ì‹œê°„ì— ì ìš©í•  작업분류 + text_time_logged_by_changeset: "ë³€ê²½ë¬¶ìŒ %{value}ì—서 ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤." + setting_commit_logtime_enabled: 커밋 시ì ì— 작업 시간 ê¸°ë¡ í™œì„±í™” + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/lt.yml --- a/config/locales/lt.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/lt.yml Thu Mar 03 12:11:53 2011 +0000 @@ -37,42 +37,42 @@ distance_in_words: half_a_minute: "pusÄ— minutÄ—s" less_than_x_seconds: - one: "mažiau nei {{count}} sekundÄ—" - few: "mažiau nei {{count}} sekundžių" - many: "mažiau nei {{count}} sekundžių" - other: "mažiau nei {{count}} sekundÄ—s" + one: "mažiau nei %{count} sekundÄ—" + few: "mažiau nei %{count} sekundžių" + many: "mažiau nei %{count} sekundžių" + other: "mažiau nei %{count} sekundÄ—s" x_seconds: - one: "{{count}} sekundÄ—" - few: "{{count}} sekundžių" - many: "{{count}} sekundžių" - other: "{{count}} sekundÄ—s" + one: "%{count} sekundÄ—" + few: "%{count} sekundžių" + many: "%{count} sekundžių" + other: "%{count} sekundÄ—s" less_than_x_minutes: one: "mažiau nei minutÄ—" - other: "mažiau nei {{count}} minutÄ—s" + other: "mažiau nei %{count} minutÄ—s" x_minutes: one: "1 minutÄ—" - other: "{{count}} minutÄ—s" + other: "%{count} minutÄ—s" about_x_hours: one: "apie 1 valanda" - other: "apie {{count}} valandų" + other: "apie %{count} valandų" x_days: one: "1 diena" - other: "{{count}} dienų" + other: "%{count} dienų" about_x_months: one: "apie 1 mÄ—nuo" - other: "apie {{count}} mÄ—nesiai" + other: "apie %{count} mÄ—nesiai" x_months: one: "1 mÄ—nuo" - other: "{{count}} mÄ—nesiai" + other: "%{count} mÄ—nesiai" about_x_years: one: "apie 1 metai" - other: "apie {{count}} metų" + other: "apie %{count} metų" over_x_years: one: "virÅ¡ 1 metų" - other: "virÅ¡ {{count}} metų" + other: "virÅ¡ %{count} metų" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" prompts: year: "Metai" month: "MÄ—nuo" @@ -137,10 +137,10 @@ errors: template: header: - one: "IÅ¡saugant objektÄ… {{model}} rasta {{count}} klaida" - few: "IÅ¡saugant objektÄ… {{model}} rasta {{count}} klaidų" - many: "IÅ¡saugant objektÄ… {{model}} rasta {{count}} klaidų" - other: "IÅ¡saugant objektÄ… {{model}} rastos {{count}} klaidos" + one: "IÅ¡saugant objektÄ… %{model} rasta %{count} klaida" + few: "IÅ¡saugant objektÄ… %{model} rasta %{count} klaidų" + many: "IÅ¡saugant objektÄ… %{model} rasta %{count} klaidų" + other: "IÅ¡saugant objektÄ… %{model} rastos %{count} klaidos" body: "Å iuose laukuose yra klaidų:" messages: @@ -152,28 +152,28 @@ empty: "negali bÅ«ti tuÅ¡Äias" blank: "negali bÅ«ti tuÅ¡Äias" too_long: - one: "per ilgas (daugiausiai {{count}} simbolius)" - few: "per ilgas (daugiausiai {{count}} simboliu)" - many: "per ilgas (daugiausiai {{count}} simboliu)" - other: "per ilgas (daugiausiai {{count}} simboliai)" + one: "per ilgas (daugiausiai %{count} simbolius)" + few: "per ilgas (daugiausiai %{count} simboliu)" + many: "per ilgas (daugiausiai %{count} simboliu)" + other: "per ilgas (daugiausiai %{count} simboliai)" too_short: - one: "per trumpas (mažiausiai {{count}} simbolius)" - few: "per trumpas (mažiausiai {{count}} simboliu)" - many: "per trumpas (mažiausiai {{count}} simboliu)" - other: "per trumpas (mažiausiai {{count}} simboliai)" + one: "per trumpas (mažiausiai %{count} simbolius)" + few: "per trumpas (mažiausiai %{count} simboliu)" + many: "per trumpas (mažiausiai %{count} simboliu)" + other: "per trumpas (mažiausiai %{count} simboliai)" wrong_length: - one: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simbolius)" - few: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simboliu)" - many: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simboliu)" - other: "neteisingo ilgio (turi bÅ«ti lygiai {{count}} simboliai)" + one: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simbolius)" + few: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simboliu)" + many: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simboliu)" + other: "neteisingo ilgio (turi bÅ«ti lygiai %{count} simboliai)" taken: "jau užimtas" not_a_number: "ne skaiÄius" not_a_date: "is not a valid date" - greater_than: "turi bÅ«ti didesnis už {{count}}" - greater_than_or_equal_to: "turi bÅ«ti didesnis arba lygus {{count}}" - equal_to: "turi bÅ«ti lygus {{count}}" - less_than: "turi bÅ«ti mažesnis už {{count}}" - less_than_or_equal_to: "turi bÅ«ti mažesnis arba lygus {{count}}" + greater_than: "turi bÅ«ti didesnis už %{count}" + greater_than_or_equal_to: "turi bÅ«ti didesnis arba lygus %{count}" + equal_to: "turi bÅ«ti lygus %{count}" + less_than: "turi bÅ«ti mažesnis už %{count}" + less_than_or_equal_to: "turi bÅ«ti mažesnis arba lygus %{count}" odd: "turi bÅ«ti nelyginis" even: "turi bÅ«ti lyginis" greater_than_start_date: "turi bÅ«ti didesnÄ— negu pradžios data" @@ -210,18 +210,18 @@ notice_file_not_found: Puslapis, į kurį ketinate įeiti, neegzistuoja arba yra paÅ¡alintas. notice_locking_conflict: Duomenys atnaujinti kito vartotojo. notice_not_authorized: JÅ«s neturite teisių gauti prieigÄ… prie Å¡io puslapio. - notice_email_sent: "LaiÅ¡kas iÅ¡siųstas {{value}}" - notice_email_error: "LaiÅ¡ko siuntimo metu įvyko klaida ({{value}})" + notice_email_sent: "LaiÅ¡kas iÅ¡siųstas %{value}" + notice_email_error: "LaiÅ¡ko siuntimo metu įvyko klaida (%{value})" notice_feeds_access_key_reseted: JÅ«sų RSS raktas buvo atnaujintas. - notice_failed_to_save_issues: "Nepavyko iÅ¡saugoti {{count}} problemos(ų) iÅ¡ {{total}} pasirinkto: {{ids}}." + notice_failed_to_save_issues: "Nepavyko iÅ¡saugoti %{count} problemos(ų) iÅ¡ %{total} pasirinkto: %{ids}." notice_no_issue_selected: "Nepasirinkta nÄ— viena problema! PraÅ¡om pažymÄ—ti problemÄ…, kuriÄ… norite redaguoti." notice_account_pending: "JÅ«sų paskyra buvo sukurta ir dabar laukiama administratoriaus patvirtinimo." notice_default_data_loaded: Numatytoji konfiguracija sÄ—kmingai užkrauta. notice_unable_delete_version: Neįmanoma panaikinti versijÄ… - error_can_t_load_default_data: "Numatytoji konfiguracija negali bÅ«ti užkrauta: {{value}}" + error_can_t_load_default_data: "Numatytoji konfiguracija negali bÅ«ti užkrauta: %{value}" error_scm_not_found: "Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja." - error_scm_command_failed: "Ä®vyko klaida jungiantis prie saugyklos: {{value}}" + error_scm_command_failed: "Ä®vyko klaida jungiantis prie saugyklos: %{value}" error_scm_annotate: "Ä®raÅ¡as neegzistuoja arba negalima jo atvaizduoti." error_issue_not_found_in_project: 'Darbas nerastas arba nesuriÅ¡tas su Å¡iuo projektu' error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. @@ -229,25 +229,25 @@ error_can_not_reopen_issue_on_closed_version: Uždarytai versijai priskirtas darbas negali bÅ«ti atnaujintas. error_can_not_archive_project: Å io projekto negalima suarchyvuoti - warning_attachments_not_saved: "{{count}} byla(ų) negali bÅ«ti iÅ¡saugota." + warning_attachments_not_saved: "%{count} byla(ų) negali bÅ«ti iÅ¡saugota." - mail_subject_lost_password: "JÅ«sų {{value}} slaptažodis" + mail_subject_lost_password: "JÅ«sų %{value} slaptažodis" mail_body_lost_password: 'NorÄ—dami pakeisti slaptažodį, spauskite nuorodÄ…:' - mail_subject_register: "JÅ«sų {{value}} paskyros aktyvavimas" + mail_subject_register: "JÅ«sų %{value} paskyros aktyvavimas" mail_body_register: 'NorÄ—dami aktyvuoti paskyrÄ…, spauskite nuorodÄ…:' - mail_body_account_information_external: "JÅ«s galite naudoti JÅ«sų {{value}} paskyrÄ…, norÄ—dami prisijungti." + mail_body_account_information_external: "JÅ«s galite naudoti JÅ«sų %{value} paskyrÄ…, norÄ—dami prisijungti." mail_body_account_information: Informacija apie JÅ«sų paskyrÄ… - mail_subject_account_activation_request: "{{value}} paskyros aktyvavimo praÅ¡ymas" - mail_body_account_activation_request: "Užsiregistravo naujas vartotojas ({{value}}). Jo paskyra laukia jÅ«sų patvirtinimo:" - mail_subject_reminder: "{{count}} darbas(ai) po kelių {{days}} dienų" - mail_body_reminder: "{{count}} darbas(ai), kurie yra jums priskirti, baigiasi po {{days}} dienų(os):" - mail_subject_wiki_content_added: "'{{id}}' pridÄ—tas wiki puslapis" - mail_body_wiki_content_added: "The '{{id}}' wiki puslapi pridÄ—jo {{author}}." - mail_subject_wiki_content_updated: "'{{id}}' atnaujintas wiki puslapis" - mail_body_wiki_content_updated: "The '{{id}}' wiki puslapį atnaujino {{author}}." + mail_subject_account_activation_request: "%{value} paskyros aktyvavimo praÅ¡ymas" + mail_body_account_activation_request: "Užsiregistravo naujas vartotojas (%{value}). Jo paskyra laukia jÅ«sų patvirtinimo:" + mail_subject_reminder: "%{count} darbas(ai) po kelių %{days} dienų" + mail_body_reminder: "%{count} darbas(ai), kurie yra jums priskirti, baigiasi po %{days} dienų(os):" + mail_subject_wiki_content_added: "'%{id}' pridÄ—tas wiki puslapis" + mail_body_wiki_content_added: "The '%{id}' wiki puslapi pridÄ—jo %{author}." + mail_subject_wiki_content_updated: "'%{id}' atnaujintas wiki puslapis" + mail_body_wiki_content_updated: "The '%{id}' wiki puslapį atnaujino %{author}." gui_validation_error: 1 klaida - gui_validation_error_plural: "{{count}} klaidų(os)" + gui_validation_error_plural: "%{count} klaidų(os)" field_name: Pavadinimas field_description: ApraÅ¡as @@ -310,6 +310,7 @@ field_attr_lastname: PavardÄ—s priskiria field_attr_mail: Elektroninio paÅ¡to požymis field_onthefly: Automatinis vartotojų registravimas + field_start_date: PradÄ—ti field_done_ratio: % atlikta field_auth_source: AutentiÅ¡kumo nustatymo bÅ«das field_hide_mail: PaslÄ—pkite mano elektroninio paÅ¡to adresÄ… @@ -458,14 +459,14 @@ label_x_projects: zero: nÄ—ra projektų one: 1 projektas - other: "{{count}} projektų" + other: "%{count} projektų" label_project_all: Visi Projektai label_project_latest: Paskutiniai projektai label_issue: Darbas label_issue_new: Naujas darbas label_issue_plural: Darbai label_issue_view_all: PeržiÅ«rÄ—ti visus darbus - label_issues_by: "Darbai pagal {{value}}" + label_issues_by: "Darbai pagal %{value}" label_issue_added: Darbas pridÄ—tas label_issue_updated: Darbas atnaujintas label_document: Dokumentas @@ -514,7 +515,7 @@ label_registered_on: Užregistruota label_activity: Veikla label_overall_activity: Visa veikla - label_user_activity: "{{value}}o veiksmai" + label_user_activity: "%{value}o veiksmai" label_new: Naujas label_logged_as: PrisijungÄ™s kaip label_environment: Aplinka @@ -523,7 +524,7 @@ label_auth_source_new: Naujas autentiÅ¡kumo nustatymo bÅ«das label_auth_source_plural: AutentiÅ¡kumo nustatymo bÅ«dai label_subproject_plural: Subprojektai - label_and_its_subprojects: "{{value}} projektas ir jo subprojektai" + label_and_its_subprojects: "%{value} projektas ir jo subprojektai" label_min_max_length: Min - Maks ilgis label_list: SÄ…raÅ¡as label_date: Data @@ -534,8 +535,8 @@ label_text: Ilgas tekstas label_attribute: Požymis label_attribute_plural: Požymiai - label_download: "{{count}} persiuntimas" - label_download_plural: "{{count}} persiuntimai" + label_download: "%{count} persiuntimas" + label_download_plural: "%{count} persiuntimai" label_no_data: NÄ—ra kÄ… atvaizduoti label_change_status: Pakeitimo bÅ«sena label_history: Istorija @@ -567,17 +568,17 @@ label_closed_issues: uždaryta label_closed_issues_plural: uždaryti label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 uždarytu one: 1 uždarytas - other: "{{count}} uždarytu" + other: "%{count} uždarytu" label_total: Bendra suma label_permissions: Leidimai label_current_status: Einamoji bÅ«sena @@ -595,7 +596,7 @@ label_months_from: mÄ—nesiai nuo label_gantt: Gantt label_internal: Vidinis - label_last_changes: "paskutiniai {{count}}, pokyÄiai" + label_last_changes: "paskutiniai %{count}, pokyÄiai" label_change_view_all: PeržiÅ«rÄ—ti visus pakeitimus label_personalize_page: Suasmeninti šį puslapį label_comment: Komentaras @@ -603,7 +604,7 @@ label_x_comments: zero: nÄ—ra komentarų one: 1 komentaras - other: "{{count}} komentarų" + other: "%{count} komentarų" label_comment_add: PridÄ—kite komentarÄ… label_comment_added: Komentaras pridÄ—tas label_comment_delete: PaÅ¡alinkite komentarus @@ -622,7 +623,7 @@ label_yesterday: vakar label_this_week: Å¡iÄ… savaitÄ™ label_last_week: paskutinÄ— savaitÄ— - label_last_n_days: "paskutinių {{count}} dienų" + label_last_n_days: "paskutinių %{count} dienų" label_this_month: Å¡is menuo label_last_month: paskutinis menuo label_this_year: Å¡iemet @@ -636,8 +637,8 @@ label_repository: Saugykla label_repository_plural: Saugyklos label_browse: NarÅ¡yti - label_modification: "{{count}} pakeitimas" - label_modification_plural: "{{count}} pakeitimai" + label_modification: "%{count} pakeitimas" + label_modification_plural: "%{count} pakeitimai" label_revision: Revizija label_revision_plural: Revizijos label_associated_revisions: susijusios revizijos @@ -655,8 +656,8 @@ label_sort_lower: Perkelti žemyn label_sort_lowest: Perkelti į apaÄiÄ… label_roadmap: Veiklos grafikas - label_roadmap_due_in: "Baigiasi po {{value}}" - label_roadmap_overdue: "{{value}} vÄ—luojama" + label_roadmap_due_in: "Baigiasi po %{value}" + label_roadmap_overdue: "%{value} vÄ—luojama" label_roadmap_no_issues: Jokio darbo Å¡iai versijai nÄ—ra label_search: IeÅ¡koti label_result_plural: Rezultatai @@ -674,8 +675,8 @@ label_changes_details: Visų pakeitimų detalÄ—s label_issue_tracking: Darbų sekimas label_spent_time: Dirbtas laikas - label_f_hour: "{{value}} valanda" - label_f_hour_plural: "{{value}} valandų" + label_f_hour: "%{value} valanda" + label_f_hour_plural: "%{value} valandų" label_time_tracking: Laiko sekimas label_change_plural: Pakeitimai label_statistics: Statistika @@ -724,13 +725,13 @@ label_date_from: Nuo label_date_to: Iki label_language_based: Pagrįsta vartotojo kalba - label_sort_by: "Rūšiuoti pagal {{value}}" + label_sort_by: "Rūšiuoti pagal %{value}" label_send_test_email: Nusiųsti bandomÄ…jį elektroninį laiÅ¡kÄ… - label_feeds_access_key_created_on: "RSS prieigos raktas sukurtas prieÅ¡ {{value}}" + label_feeds_access_key_created_on: "RSS prieigos raktas sukurtas prieÅ¡ %{value}" label_module_plural: Moduliai - label_added_time_by: "PridÄ—jo {{author}} prieÅ¡ {{age}}" - label_updated_time_by: "Atnaujino {{author}} {{age}} atgal" - label_updated_time: "Atnaujinta prieÅ¡ {{value}}" + label_added_time_by: "PridÄ—jo %{author} prieÅ¡ %{age}" + label_updated_time_by: "Atnaujino %{author} %{age} atgal" + label_updated_time: "Atnaujinta prieÅ¡ %{value}" label_jump_to_a_project: Å uolis į projektÄ…... label_file_plural: Bylos label_changeset_plural: Changesets @@ -746,7 +747,7 @@ label_registration_activation_by_email: "paskyros aktyvacija per e-paÅ¡tÄ…" label_registration_manual_activation: "rankinÄ— paskyros aktyvacija" label_registration_automatic_activation: "automatinÄ— paskyros aktyvacija" - label_display_per_page: "{{value}} įrašų puslapyje" + label_display_per_page: "%{value} įrašų puslapyje" label_age: Amžius label_change_properties: Pakeisti nustatymus label_general: Bendri @@ -770,7 +771,7 @@ label_descending: Descending label_sort: Rūšiuoti label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} label_greater_or_equal: ">=" label_less_or_equal: <= label_wiki_content_added: Wiki puslapis pridÄ—tas @@ -844,52 +845,52 @@ text_regexp_info: pvz. ^[A-Z0-9]+$ text_min_max_length_info: 0 reiÅ¡kia jokių apribojimų text_project_destroy_confirmation: Ar esate įsitikinÄ™s, kad jÅ«s norite paÅ¡alinti šį projektÄ… ir visus susijusius duomenis? - text_subprojects_destroy_warning: "Å is(ie) subprojektas(ai): {{value}} taip pat bus iÅ¡trintas(i)." + text_subprojects_destroy_warning: "Å is(ie) subprojektas(ai): %{value} taip pat bus iÅ¡trintas(i)." text_workflow_edit: IÅ¡rinkite vaidmenį ir pÄ—dsekį, kad redaguotumÄ—te darbų eigÄ… text_are_you_sure: Ar esate įsitikinÄ™s? - text_journal_changed: "{{label}} pakeista iÅ¡ {{old}} į {{new}}" - text_journal_set_to: "{{label}} pakeista į {{value}}" - text_journal_deleted: "{{label}} iÅ¡trintas ({{old}})" - text_journal_added: "{{label}} {{value}} pridÄ—tas" + text_journal_changed: "%{label} pakeista iÅ¡ %{old} į %{new}" + text_journal_set_to: "%{label} pakeista į %{value}" + text_journal_deleted: "%{label} iÅ¡trintas (%{old})" + text_journal_added: "%{label} %{value} pridÄ—tas" text_tip_issue_begin_day: užduotis, prasidedanti Å¡iÄ… dienÄ… text_tip_issue_end_day: užduotis, pasibaigianti Å¡iÄ… dienÄ… text_tip_issue_begin_end_day: užduotis, prasidedanti ir pasibaigianti Å¡iÄ… dienÄ… text_project_identifier_info: 'Mažosios raidÄ—s (a-z), skaiÄiai ir brÅ«kÅ¡niai galimi.
    IÅ¡saugojus, identifikuotojas negali bÅ«ti keiÄiamas.' - text_caracters_maximum: "{{count}} simbolių maksimumas." - text_caracters_minimum: "Turi bÅ«ti mažiausiai {{count}} simbolių ilgio." - text_length_between: "Ilgis tarp {{min}} ir {{max}} simbolių." + text_caracters_maximum: "%{count} simbolių maksimumas." + text_caracters_minimum: "Turi bÅ«ti mažiausiai %{count} simbolių ilgio." + text_length_between: "Ilgis tarp %{min} ir %{max} simbolių." text_tracker_no_workflow: Jokia darbų eiga neapibrėžta Å¡iam pÄ—dsekiui text_unallowed_characters: Neleistini simboliai text_comma_separated: Leistinos kelios reikÅ¡mÄ—s (atskirtos kableliu). text_issues_ref_in_commit_messages: Darbų pavedimų(commit) nurodymas ir fiksavimas praneÅ¡imuose - text_issue_added: "Darbas {{id}} buvo praneÅ¡tas (by {{author}})." - text_issue_updated: "Darbas {{id}} buvo atnaujintas (by {{author}})." + text_issue_added: "Darbas %{id} buvo praneÅ¡tas (by %{author})." + text_issue_updated: "Darbas %{id} buvo atnaujintas (by %{author})." text_wiki_destroy_confirmation: Ar esate įsitikinÄ™s, kad jÅ«s norite paÅ¡alinti wiki ir visÄ… jos turinį? - text_issue_category_destroy_question: "Kai kurie darbai ({{count}}) yra paskirti Å¡iai kategorijai. KÄ… jÅ«s norite daryti?" + text_issue_category_destroy_question: "Kai kurie darbai (%{count}) yra paskirti Å¡iai kategorijai. KÄ… jÅ«s norite daryti?" text_issue_category_destroy_assignments: PaÅ¡alinti kategorijos užduotis text_issue_category_reassign_to: IÅ¡ naujo priskirti darbus Å¡iai kategorijai text_user_mail_option: "neiÅ¡rinktiems projektams, jÅ«s tiktai gausite praneÅ¡imus apie įvykius, kuriuos jÅ«s stebite, arba į kuriuos esate įtrauktas (pvz. darbai, jÅ«s esate autorius ar įgaliotinis)." text_no_configuration_data: "Vaidmenys, pÄ—dsekiai, darbų bÅ«senos ir darbų eiga dar nebuvo konfigÅ«ruoti.\nGriežtai rekomenduojam užkrauti numatytÄ…jÄ…(default)konfiguracijÄ…. Užkrovus, galÄ—site jÄ… modifikuoti." text_load_default_configuration: Užkrauti numatytÄ…j konfiguracijÄ… - text_status_changed_by_changeset: "Pakeista {{value}} revizijoje." + text_status_changed_by_changeset: "Pakeista %{value} revizijoje." text_issues_destroy_confirmation: 'Ar jÅ«s tikrai norite sunaikinti pažymÄ—tÄ…(us) darbÄ…(us)?' text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti Å¡iame projekte:' text_default_administrator_account_changed: Administratoriaus numatyta paskyra pakeista text_file_repository_writable: Ä® rinkmenu saugyklÄ… galima saugoti (RW) text_plugin_assets_writable: Ä®skiepių 'assets' katalogas įraÅ¡omas text_rmagick_available: RMagick pasiekiamas (pasirinktinai) - text_destroy_time_entries_question: Naikinamam darbui priskirta {{hours}} valandų. KÄ… jÅ«s noryte su jomis daryti? + text_destroy_time_entries_question: Naikinamam darbui priskirta %{hours} valandų. KÄ… jÅ«s noryte su jomis daryti? text_destroy_time_entries: IÅ¡trinti paskelbtas valandas text_assign_time_entries_to_project: Priskirti valandas prie projekto text_reassign_time_entries: 'Priskirti paskelbtas valandas Å¡iam darbui:' - text_user_wrote: "{{value}} parašė:" - text_enumeration_destroy_question: "{{count}} objektai priskirti Å¡iai reikÅ¡mei." + text_user_wrote: "%{value} parašė:" + text_enumeration_destroy_question: "%{count} objektai priskirti Å¡iai reikÅ¡mei." text_enumeration_category_reassign_to: 'Priskirti juos Å¡iai reikÅ¡mei:' - text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/email.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." + text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/configuration.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojo vardÄ… kiekvienam saugyklos vardui, kuris paminÄ—tas saugyklos log'e.\nVartotojai, turintys tÄ… patį Redmine ir saugyklos vardÄ… ar el.paÅ¡tÄ… automatiÅ¡kai suriÅ¡ti." text_diff_truncated: "... Å is diff'as nukarpytas, nes jis virÅ¡ijo maksimalų rodomÄ… eiluÄių skaiÄių." text_custom_field_possible_values_info: 'Po vienÄ… eilutÄ™ kiekvienai reikÅ¡mei' - text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do? + 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: Priskirkite iÅ¡ naujo 'child' puslapius Å¡iam puslapiui text_wiki_page_nullify_children: Laikyti child puslapius as root puslapius text_wiki_page_destroy_children: PaÅ¡alinti child puslapius ir jų sekinius @@ -934,9 +935,9 @@ label_update_issue_done_ratios: Update issue done ratios 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -963,12 +964,12 @@ 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_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}}." + 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. @@ -976,7 +977,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -987,8 +988,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/lv.yml --- a/config/locales/lv.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/lv.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,925 +1,938 @@ -# 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: - 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_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/email.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 +# 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/mk.yml --- a/config/locales/mk.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/mk.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,930 +1,943 @@ -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: - 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_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/email.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 +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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/mn.yml --- a/config/locales/mn.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/mn.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,931 +1,944 @@ -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: - 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_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/email.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 +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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/nl.yml --- a/config/locales/nl.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/nl.yml Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "halve minuut" less_than_x_seconds: one: "minder dan een seconde" - other: "mindera dan {{count}} seconden" + other: "mindera dan %{count} seconden" x_seconds: one: "1 seconde" - other: "{{count}} seconden" + other: "%{count} seconden" less_than_x_minutes: one: "minder dan een minuut" - other: "minder dan {{count}} minuten" + other: "minder dan %{count} minuten" x_minutes: one: "1 minuut" - other: "{{count}} minuten" + other: "%{count} minuten" about_x_hours: one: "ongeveer 1 uur" - other: "ongeveer {{count}} uren" + other: "ongeveer %{count} uren" x_days: one: "1 dag" - other: "{{count}} dagen" + other: "%{count} dagen" about_x_months: one: "ongeveer 1 maand" - other: "ongeveer {{count}} maanden" + other: "ongeveer %{count} maanden" x_months: one: "1 maand" - other: "{{count}} maanden" + other: "%{count} maanden" about_x_years: one: "ongeveer 1 jaar" - other: "ongeveer {{count}} jaren" + other: "ongeveer %{count} jaren" over_x_years: one: "over 1 jaar" - other: "over {{count}} jaren" + other: "over %{count} jaren" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "staat niet in de lijst" exclusion: "is gereserveerd" @@ -106,11 +110,11 @@ taken: "is al in gebruik" not_a_number: "is geen getal" not_a_date: "is geen valide datum" - greater_than: "moet groter zijn dan {{count}}" - greater_than_or_equal_to: "moet groter zijn of gelijk zijn aan {{count}}" - equal_to: "moet gelijk zijn aan {{count}}" - less_than: "moet minder zijn dan {{count}}" - less_than_or_equal_to: "moet minder dan of gelijk zijn aan {{count}}" + greater_than: "moet groter zijn dan %{count}" + greater_than_or_equal_to: "moet groter zijn of gelijk zijn aan %{count}" + equal_to: "moet gelijk zijn aan %{count}" + less_than: "moet minder zijn dan %{count}" + less_than_or_equal_to: "moet minder dan of gelijk zijn aan %{count}" odd: "moet oneven zijn" even: "moet even zijn" greater_than_start_date: "moet na de startdatum liggen" @@ -182,10 +186,10 @@ enumeration_activities: Activiteiten (tijdtracking) enumeration_doc_categories: Documentcategorieën enumeration_issue_priorities: Issueprioriteiten - error_can_t_load_default_data: "De standaard configuratie kon niet worden geladen: {{value}}" + error_can_t_load_default_data: "De standaard configuratie kon niet worden geladen: %{value}" error_issue_not_found_in_project: 'Deze issue is niet gevonden of behoort niet toe tot dit project.' error_scm_annotate: "Er kan geen commentaar toegevoegd worden." - error_scm_command_failed: "Er trad een fout op tijdens de poging om verbinding te maken met de repository: {{value}}" + error_scm_command_failed: "Er trad een fout op tijdens de poging om verbinding te maken met de repository: %{value}" error_scm_not_found: "Deze ingang of revisie bestaat niet in de repository." field_account: Account field_activity: Activiteit @@ -256,6 +260,7 @@ field_role: Rol field_searchable: Doorzoekbaar field_spent_on: Datum + field_start_date: Startdatum field_start_page: Startpagina field_status: Status field_subject: Onderwerp @@ -270,9 +275,9 @@ field_user: Gebruiker field_value: Waarde field_version: Versie - general_csv_decimal_separator: '.' + general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 - general_csv_separator: ',' + general_csv_separator: ';' general_first_day_of_week: '7' general_lang_name: 'Nederlands' general_pdf_encoding: ISO-8859-1 @@ -281,19 +286,19 @@ general_text_no: 'nee' general_text_yes: 'ja' gui_validation_error: 1 fout - gui_validation_error_plural: "{{count}} fouten" + gui_validation_error_plural: "%{count} fouten" label_activity: Activiteit label_add_another_file: Ander bestand toevoegen label_add_note: Voeg een notitie toe label_added: toegevoegd - label_added_time_by: "Toegevoegd door {{author}} {{age}} geleden" + label_added_time_by: "Toegevoegd door %{author} %{age} geleden" label_administration: Administratie label_age: Leeftijd label_ago: dagen geleden label_all: alle label_all_time: alles label_all_words: Alle woorden - label_and_its_subprojects: "{{value}} en zijn subprojecten." + label_and_its_subprojects: "%{value} en zijn subprojecten." label_applied_status: Toegekende status label_assigned_to_me_issues: Aan mij toegewezen issues label_associated_revisions: Geassociëerde revisies @@ -326,17 +331,17 @@ label_closed_issues: gesloten label_closed_issues_plural: gesloten label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_comment: Commentaar label_comment_add: Voeg commentaar toe label_comment_added: Commentaar toegevoegd @@ -345,7 +350,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_commits_per_author: Commits per auteur label_commits_per_month: Commits per maand label_confirmation: Bevestiging @@ -369,13 +374,13 @@ label_diff_inline: inline label_diff_side_by_side: naast elkaar label_disabled: uitgeschakeld - label_display_per_page: "Per pagina: {{value}}" + label_display_per_page: "Per pagina: %{value}" label_document: Document label_document_added: Document toegevoegd label_document_new: Nieuw document label_document_plural: Documenten - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_downloads_abbr: D/L label_duplicated_by: gedupliceerd door label_duplicates: dupliceert @@ -387,10 +392,10 @@ label_equals: is gelijk label_example: Voorbeeld label_export_to: Exporteer naar - label_f_hour: "{{value}} uur" - label_f_hour_plural: "{{value}} uren" + label_f_hour: "%{value} uur" + label_f_hour_plural: "%{value} uren" label_feed_plural: Feeds - label_feeds_access_key_created_on: "RSS toegangssleutel {{value}} geleden gemaakt." + label_feeds_access_key_created_on: "RSS toegangssleutel %{value} geleden gemaakt." label_file_added: Bericht toegevoegd label_file_plural: Bestanden label_filter_add: Voeg filter toe @@ -428,13 +433,13 @@ label_issue_updated: Issue bijgewerkt label_issue_view_all: Bekijk alle issues label_issue_watchers: Monitoren - label_issues_by: "Issues door {{value}}" + label_issues_by: "Issues door %{value}" label_jump_to_a_project: Ga naar een project... label_language_based: Taal gebaseerd - label_last_changes: "laatste {{count}} wijzigingen" + label_last_changes: "laatste %{count} wijzigingen" label_last_login: Laatste bezoek label_last_month: laatste maand - label_last_n_days: "{{count}} dagen geleden" + label_last_n_days: "%{count} dagen geleden" label_last_week: vorige week label_latest_revision: Meest recente revisie label_latest_revision_plural: Meest recente revisies @@ -455,8 +460,8 @@ label_message_plural: Berichten label_message_posted: Bericht toegevoegd label_min_max_length: Min-max lengte - label_modification: "{{count}} wijziging" - label_modification_plural: "{{count}} wijzigingen" + label_modification: "%{count} wijziging" + label_modification_plural: "%{count} wijzigingen" label_modified: gewijzigd label_module_plural: Modules label_month: Maand @@ -507,7 +512,7 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_public_projects: Publieke projecten label_query: Eigen zoekvraag label_query_new: Nieuwe zoekvraag @@ -534,9 +539,9 @@ label_revision: Revisie label_revision_plural: Revisies label_roadmap: Roadmap - label_roadmap_due_in: "Voldaan in {{value}}" + label_roadmap_due_in: "Voldaan in %{value}" label_roadmap_no_issues: Geen issues voor deze versie - label_roadmap_overdue: "{{value}} over tijd" + label_roadmap_overdue: "%{value} over tijd" label_role: Rol label_role_and_permissions: Rollen en permissies label_role_new: Nieuwe rol @@ -548,7 +553,7 @@ label_send_test_email: Stuur een test e-mail label_settings: Instellingen label_show_completed_versions: Toon afgeronde versies - label_sort_by: "Sorteer op {{value}}" + label_sort_by: "Sorteer op %{value}" label_sort_higher: Verplaats naar boven label_sort_highest: Verplaats naar begin label_sort_lower: Verplaats naar beneden @@ -572,11 +577,11 @@ label_tracker: Tracker label_tracker_new: Nieuwe tracker label_tracker_plural: Trackers - label_updated_time: "{{value}} geleden bijgewerkt" - label_updated_time_by: "{{age}} geleden bijgewerkt door {{author}}" + label_updated_time: "%{value} geleden bijgewerkt" + label_updated_time_by: "%{age} geleden bijgewerkt door %{author}" label_used_by: Gebruikt door label_user: Gebruiker - label_user_activity: "{{value}}'s activiteit" + 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_option_all: "Bij elk gebeurtenis in al mijn projecten..." label_user_mail_option_selected: "Enkel bij elke gebeurtenis op het geselecteerde project..." @@ -597,16 +602,16 @@ label_workflow: Workflow label_year: Jaar label_yesterday: gisteren - mail_body_account_activation_request: "Een nieuwe gebruiker ({{value}}) is geregistreerd. Zijn account wacht op uw akkoord:" + mail_body_account_activation_request: "Een nieuwe gebruiker (%{value}) is geregistreerd. Zijn account wacht op uw akkoord:" mail_body_account_information: Uw account gegevens - mail_body_account_information_external: "U kunt uw account ({{value}}) gebruiken om in te loggen." + mail_body_account_information_external: "U kunt uw account (%{value}) gebruiken om in te loggen." mail_body_lost_password: 'Gebruik de volgende link om uw wachtwoord te wijzigen:' mail_body_register: 'Gebruik de volgende link om uw account te activeren:' - mail_body_reminder: "{{count}} issue(s) die aan u toegewezen zijn en voldaan moeten zijn in de komende {{days}} dagen:" - mail_subject_account_activation_request: "{{value}} accountactivatieverzoek" - mail_subject_lost_password: "uw {{value}} wachtwoord" - mail_subject_register: "uw {{value}} accountactivatie" - mail_subject_reminder: "{{count}} issue(s) die voldaan moeten zijn in de komende {{days}} dagen." + mail_body_reminder: "%{count} issue(s) die aan u toegewezen zijn en voldaan moeten zijn in de komende %{days} dagen:" + mail_subject_account_activation_request: "%{value} accountactivatieverzoek" + mail_subject_lost_password: "uw %{value} wachtwoord" + mail_subject_register: "uw %{value} accountactivatie" + mail_subject_reminder: "%{count} issue(s) die voldaan moeten zijn in de komende %{days} dagen." notice_account_activated: uw account is geactiveerd. u kunt nu inloggen. notice_account_invalid_creditentials: Incorrecte gebruikersnaam of wachtwoord notice_account_lost_email_sent: Er is een e-mail naar u verstuurd met instructies over het kiezen van een nieuw wachtwoord. @@ -618,9 +623,9 @@ notice_account_wrong_password: Incorrect wachtwoord notice_can_t_change_password: Dit account gebruikt een externe bron voor authenticatie. Het is niet mogelijk om het wachtwoord te veranderen. notice_default_data_loaded: Standaard configuratie succesvol geladen. - notice_email_error: "Er is een fout opgetreden tijdens het versturen van ({{value}})" - notice_email_sent: "Een e-mail werd verstuurd naar {{value}}" - notice_failed_to_save_issues: "Fout bij bewaren van {{count}} issue(s) ({{total}} geselecteerd): {{ids}}." + notice_email_error: "Er is een fout opgetreden tijdens het versturen van (%{value})" + notice_email_sent: "Een e-mail werd verstuurd naar %{value}" + notice_failed_to_save_issues: "Fout bij bewaren van %{count} issue(s) (%{total} geselecteerd): %{ids}." notice_feeds_access_key_reseted: Je RSS toegangssleutel werd gereset. notice_file_not_found: De pagina die u probeerde te benaderen bestaat niet of is verwijderd. notice_locking_conflict: De gegevens zijn gewijzigd door een andere gebruiker. @@ -731,25 +736,25 @@ status_registered: geregistreerd text_are_you_sure: Weet u het zeker? text_assign_time_entries_to_project: Gerapporteerde uren toevoegen aan dit project - text_caracters_maximum: "{{count}} van maximum aantal tekens." - text_caracters_minimum: "Moet minstens {{count}} karakters lang zijn." + text_caracters_maximum: "%{count} van maximum aantal tekens." + text_caracters_minimum: "Moet minstens %{count} karakters lang zijn." text_comma_separated: Meerdere waarden toegestaan (kommagescheiden). text_default_administrator_account_changed: Standaard beheerderaccount gewijzigd 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_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/email.yml en herstart de applicatie om dit te activeren." + 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_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:' - text_enumeration_destroy_question: "{{count}} objecten zijn toegewezen aan deze waarde." + text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: Bestandsrepository beschrijfbaar - text_issue_added: "Issue {{id}} is gerapporteerd (door {{author}})." + text_issue_added: "Issue %{id} is gerapporteerd (door %{author})." text_issue_category_destroy_assignments: Verwijder toewijzingen aan deze categorie - text_issue_category_destroy_question: "Er zijn issues ({{count}}) aan deze categorie toegewezen. Wat wilt u hiermee doen ?" + text_issue_category_destroy_question: "Er zijn issues (%{count}) aan deze categorie toegewezen. Wat wilt u hiermee doen ?" text_issue_category_reassign_to: Issues opnieuw toewijzen aan deze categorie - text_issue_updated: "Issue {{id}} is gewijzigd (door {{author}})." + text_issue_updated: "Issue %{id} is gewijzigd (door %{author})." text_issues_destroy_confirmation: 'Weet u zeker dat u deze issue(s) wil verwijderen?' text_issues_ref_in_commit_messages: Opzoeken en aanpassen van issues in commitberichten - text_length_between: "Lengte tussen {{min}} en {{max}} tekens." + text_length_between: "Lengte tussen %{min} en %{max} tekens." text_load_default_configuration: Laad de standaardconfiguratie text_min_max_length_info: 0 betekent geen restrictie text_no_configuration_data: "Rollen, trackers, issue statussen en workflows zijn nog niet geconfigureerd.\nHet is ten zeerste aangeraden om de standaard configuratie in te laden. U kunt deze aanpassen nadat deze is ingeladen." @@ -762,18 +767,18 @@ text_rmagick_available: RMagick beschikbaar (optioneel) text_select_mail_notifications: Selecteer acties waarvoor mededelingen via mail moeten worden verstuurd. text_select_project_modules: 'Selecteer de modules die u wilt gebruiken voor dit project:' - text_status_changed_by_changeset: "Toegepast in changeset {{value}}." - text_subprojects_destroy_warning: "De subprojecten: {{value}} zullen ook verwijderd worden." + text_status_changed_by_changeset: "Toegepast in changeset %{value}." + text_subprojects_destroy_warning: "De subprojecten: %{value} zullen ook verwijderd worden." text_tip_issue_begin_day: issue die op deze dag begint text_tip_issue_begin_end_day: issue die op deze dag begint en eindigt 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_wrote: "{{value}} schreef:" + 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 - warning_attachments_not_saved: "{{count}} bestand(en) konden niet opgeslagen worden." + warning_attachments_not_saved: "%{count} bestand(en) konden niet opgeslagen worden." button_create_and_continue: Maak en ga verder text_custom_field_possible_values_info: 'Per lijn een waarde' label_display: Toon @@ -788,21 +793,21 @@ label_descending: Aflopend label_sort: Sorteer label_ascending: Oplopend - label_date_from_to: Van {{start}} tot {{end}} + 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?. Wil wil je ermee 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 setting_password_min_length: Minimum wachtwoord lengte field_group_by: Groepeer resultaten per - mail_subject_wiki_content_updated: "'{{id}}' wiki pagina is bijgewerkt" + 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_subject_wiki_content_added: "'%{id}' wiki pagina is toegevoegd" + mail_body_wiki_content_added: The '%{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: The '%{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 @@ -810,14 +815,14 @@ label_branch: Branch error_no_tracker_in_project: Geen tracker is geassocieerd met dit project. Check de project instellingen. error_no_default_issue_status: Geen standaard issue status ingesteld. Check de configuratie (Ga naar "Administratie -> Issue statussen"). - text_journal_changed: "{{label}} gewijzigd van {{old}} naar {{new}}" - text_journal_set_to: "{{label}} gewijzigd naar {{value}}" - text_journal_deleted: "{{label}} verwijderd ({{old}})" + text_journal_changed: "%{label} gewijzigd van %{old} naar %{new}" + text_journal_set_to: "%{label} gewijzigd naar %{value}" + text_journal_deleted: "%{label} verwijderd (%{old})" label_group_plural: Groepen label_group: Groep label_group_new: Nieuwe groep label_time_entry_plural: Bestede tijd - text_journal_added: "{{label}} {{value}} toegevoegd" + text_journal_added: "%{label} %{value} toegevoegd" field_active: Actief enumeration_system_activity: Systeem Activiteit permission_delete_issue_watchers: Verwijder volgers @@ -852,9 +857,9 @@ setting_start_of_week: Week begint op permission_view_issues: Bekijk Issues label_display_used_statuses_only: Laat alleen statussen zien die gebruikt worden door deze tracker - label_revision_id: Revisie {{value}} + label_revision_id: Revisie %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key gemaakt {{value}} geleden + label_api_access_key_created_on: API access key gemaakt %{value} geleden label_feeds_access_key: RSS access key notice_api_access_key_reseted: Uw API access key was gereset. setting_rest_api_enabled: Activeer REST web service @@ -881,12 +886,12 @@ label_subtask_plural: Subtasks label_project_copy_notifications: Stuur email notificaties voor de project kopie error_can_not_delete_custom_field: Verwijderen niet mogelijk van custom field - error_unable_to_connect: Geen connectie ({{value}}) + error_unable_to_connect: Geen connectie (%{value}) error_can_not_remove_role: Deze rol is in gebruik en kan niet worden verwijderd. error_can_not_delete_tracker: Deze tracker bevat nog issues en kan niet worden verwijderd. field_principal: Principal label_my_page_block: Mijn pagina block - notice_failed_to_save_members: "Niet gelukt om lid/leden op te slaan: {{errors}}." + notice_failed_to_save_members: "Niet gelukt om lid/leden op te slaan: %{errors}." text_zoom_out: Zoom uit text_zoom_in: Zoom in notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer. @@ -894,7 +899,7 @@ field_time_entries: Log tijd project_module_gantt: Gantt project_module_calendar: Kalender - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -905,8 +910,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/no.yml --- a/config/locales/no.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/no.yml Thu Mar 03 12:11:53 2011 +0000 @@ -27,37 +27,37 @@ half_a_minute: "et halvt minutt" less_than_x_seconds: one: "mindre enn 1 sekund" - other: "mindre enn {{count}} sekunder" + other: "mindre enn %{count} sekunder" x_seconds: one: "1 sekund" - other: "{{count}} sekunder" + other: "%{count} sekunder" less_than_x_minutes: one: "mindre enn 1 minutt" - other: "mindre enn {{count}} minutter" + other: "mindre enn %{count} minutter" x_minutes: one: "1 minutt" - other: "{{count}} minutter" + other: "%{count} minutter" about_x_hours: one: "rundt 1 time" - other: "rundt {{count}} timer" + other: "rundt %{count} timer" x_days: one: "1 dag" - other: "{{count}} dager" + other: "%{count} dager" about_x_months: one: "rundt 1 mÃ¥ned" - other: "rundt {{count}} mÃ¥neder" + other: "rundt %{count} mÃ¥neder" x_months: one: "1 mÃ¥ned" - other: "{{count}} mÃ¥neder" + other: "%{count} mÃ¥neder" about_x_years: one: "rundt 1 Ã¥r" - other: "rundt {{count}} Ã¥r" + other: "rundt %{count} Ã¥r" over_x_years: one: "over 1 Ã¥r" - other: "over {{count}} Ã¥r" + other: "over %{count} Ã¥r" almost_x_years: one: "nesten 1 Ã¥r" - other: "nesten {{count}} Ã¥r" + other: "nesten %{count} Ã¥r" number: format: precision: 2 @@ -86,7 +86,7 @@ activerecord: errors: template: - header: "kunne ikke lagre {{model}} pÃ¥ grunn av {{count}} feil." + header: "kunne ikke lagre %{model} pÃ¥ grunn av %{count} feil." body: "det oppstod problemer i følgende felt:" messages: inclusion: "er ikke inkludert i listen" @@ -96,16 +96,16 @@ accepted: "mÃ¥ være akseptert" empty: "kan ikke være tom" blank: "kan ikke være blank" - too_long: "er for lang (maksimum {{count}} tegn)" - too_short: "er for kort (minimum {{count}} tegn)" - wrong_length: "er av feil lengde (maksimum {{count}} tegn)" + too_long: "er for lang (maksimum %{count} tegn)" + too_short: "er for kort (minimum %{count} tegn)" + wrong_length: "er av feil lengde (maksimum %{count} tegn)" taken: "er allerede i bruk" not_a_number: "er ikke et tall" - greater_than: "mÃ¥ være større enn {{count}}" - greater_than_or_equal_to: "mÃ¥ være større enn eller lik {{count}}" - equal_to: "mÃ¥ være lik {{count}}" - less_than: "mÃ¥ være mindre enn {{count}}" - less_than_or_equal_to: "mÃ¥ være mindre enn eller lik {{count}}" + greater_than: "mÃ¥ være større enn %{count}" + greater_than_or_equal_to: "mÃ¥ være større enn eller lik %{count}" + equal_to: "mÃ¥ være lik %{count}" + less_than: "mÃ¥ være mindre enn %{count}" + less_than_or_equal_to: "mÃ¥ være mindre enn eller lik %{count}" odd: "mÃ¥ være oddetall" even: "mÃ¥ være partall" greater_than_start_date: "mÃ¥ være større enn startdato" @@ -143,33 +143,33 @@ notice_file_not_found: Siden du forsøkte Ã¥ vise eksisterer ikke, eller er slettet. notice_locking_conflict: Data har blitt oppdatert av en annen bruker. notice_not_authorized: Du har ikke adgang til denne siden. - notice_email_sent: "En e-post er sendt til {{value}}" - notice_email_error: "En feil oppstod under sending av e-post ({{value}})" + notice_email_sent: "En e-post er sendt til %{value}" + notice_email_error: "En feil oppstod under sending av e-post (%{value})" notice_feeds_access_key_reseted: Din RSS-tilgangsnøkkel er nullstilt. - notice_failed_to_save_issues: "Lykkes ikke Ã¥ lagre {{count}} sak(er) pÃ¥ {{total}} valgt: {{ids}}." + notice_failed_to_save_issues: "Lykkes ikke Ã¥ lagre %{count} sak(er) pÃ¥ %{total} valgt: %{ids}." notice_no_issue_selected: "Ingen sak valgt! Vennligst merk sakene du vil endre." notice_account_pending: "Din konto ble opprettet og avventer nÃ¥ administrativ godkjenning." notice_default_data_loaded: Standardkonfigurasjonen lastet inn. - error_can_t_load_default_data: "Standardkonfigurasjonen kunne ikke lastes inn: {{value}}" + error_can_t_load_default_data: "Standardkonfigurasjonen kunne ikke lastes inn: %{value}" error_scm_not_found: "Elementet og/eller revisjonen eksisterer ikke i depoet." - error_scm_command_failed: "En feil oppstod under tilkobling til depoet: {{value}}" + error_scm_command_failed: "En feil oppstod under tilkobling til depoet: %{value}" error_scm_annotate: "Elementet eksisterer ikke, eller kan ikke noteres." error_issue_not_found_in_project: 'Saken eksisterer ikke, eller hører ikke til dette prosjektet' - mail_subject_lost_password: "Ditt {{value}} passord" + mail_subject_lost_password: "Ditt %{value} passord" mail_body_lost_password: 'Klikk følgende lenke for Ã¥ endre ditt passord:' - mail_subject_register: "{{value}} kontoaktivering" + mail_subject_register: "%{value} kontoaktivering" mail_body_register: 'Klikk følgende lenke for Ã¥ aktivere din konto:' - mail_body_account_information_external: "Du kan bruke din {{value}}-konto for Ã¥ logge inn." + mail_body_account_information_external: "Du kan bruke din %{value}-konto for Ã¥ logge inn." mail_body_account_information: Informasjon om din konto - mail_subject_account_activation_request: "{{value}} kontoaktivering" - mail_body_account_activation_request: "En ny bruker ({{value}}) er registrert, og avventer din godkjenning:" - mail_subject_reminder: "{{count}} sak(er) har frist de kommende {{days}} dagene" - mail_body_reminder: "{{count}} sak(er) som er tildelt deg har frist de kommende {{days}} dager:" + mail_subject_account_activation_request: "%{value} kontoaktivering" + mail_body_account_activation_request: "En ny bruker (%{value}) er registrert, og avventer din godkjenning:" + mail_subject_reminder: "%{count} sak(er) har frist de kommende %{days} dagene" + mail_body_reminder: "%{count} sak(er) som er tildelt deg har frist de kommende %{days} dager:" gui_validation_error: 1 feil - gui_validation_error_plural: "{{count}} feil" + gui_validation_error_plural: "%{count} feil" field_name: Navn field_description: Beskrivelse @@ -231,6 +231,7 @@ field_attr_lastname: Etternavnsattributt field_attr_mail: E-post-attributt field_onthefly: On-the-fly brukeropprettelse + field_start_date: Start field_done_ratio: % Ferdig field_auth_source: Autentifikasjonsmodus field_hide_mail: Skjul min e-post-adresse @@ -305,14 +306,14 @@ label_x_projects: zero: ingen prosjekter one: 1 prosjekt - other: "{{count}} prosjekter" + other: "%{count} prosjekter" label_project_all: Alle prosjekter label_project_latest: Siste prosjekter label_issue: Sak label_issue_new: Ny sak label_issue_plural: Saker label_issue_view_all: Vis alle saker - label_issues_by: "Saker etter {{value}}" + label_issues_by: "Saker etter %{value}" label_issue_added: Sak lagt til label_issue_updated: Sak oppdatert label_document: Dokument @@ -369,7 +370,7 @@ label_auth_source_new: Ny autentifikasjonmodus label_auth_source_plural: Autentifikasjonsmoduser label_subproject_plural: Underprosjekter - label_and_its_subprojects: "{{value}} og dets underprosjekter" + label_and_its_subprojects: "%{value} og dets underprosjekter" label_min_max_length: Min.-maks. lengde label_list: Liste label_date: Dato @@ -380,8 +381,8 @@ label_text: Lang tekst label_attribute: Attributt label_attribute_plural: Attributter - label_download: "{{count}} Nedlasting" - label_download_plural: "{{count}} Nedlastinger" + label_download: "%{count} Nedlasting" + label_download_plural: "%{count} Nedlastinger" label_no_data: Ingen data Ã¥ vise label_change_status: Endre status label_history: Historikk @@ -412,17 +413,17 @@ label_closed_issues: lukket label_closed_issues_plural: lukkede label_x_open_issues_abbr_on_total: - zero: 0 Ã¥pne / {{total}} - one: 1 Ã¥pen / {{total}} - other: "{{count}} Ã¥pne / {{total}}" + zero: 0 Ã¥pne / %{total} + one: 1 Ã¥pen / %{total} + other: "%{count} Ã¥pne / %{total}" label_x_open_issues_abbr: zero: 0 Ã¥pne one: 1 Ã¥pen - other: "{{count}} Ã¥pne" + other: "%{count} Ã¥pne" label_x_closed_issues_abbr: zero: 0 lukka one: 1 lukka - other: "{{count}} lukka" + other: "%{count} lukka" label_total: Totalt label_permissions: Godkjenninger label_current_status: NÃ¥værende status @@ -440,7 +441,7 @@ label_months_from: mÃ¥neder fra label_gantt: Gantt label_internal: Intern - label_last_changes: "siste {{count}} endringer" + label_last_changes: "siste %{count} endringer" label_change_view_all: Vis alle endringer label_personalize_page: Tilpass denne siden label_comment: Kommentar @@ -448,7 +449,7 @@ label_x_comments: zero: no kommentarer one: 1 kommentar - other: "{{count}} kommentarer" + other: "%{count} kommentarer" label_comment_add: Legg til kommentar label_comment_added: Kommentar lagt til label_comment_delete: Slett kommentar @@ -467,7 +468,7 @@ label_yesterday: i gÃ¥r label_this_week: denne uken label_last_week: sist uke - label_last_n_days: "siste {{count}} dager" + label_last_n_days: "siste %{count} dager" label_this_month: denne mÃ¥neden label_last_month: siste mÃ¥ned label_this_year: dette Ã¥ret @@ -481,8 +482,8 @@ label_repository: Depot label_repository_plural: Depoter label_browse: Utforsk - label_modification: "{{count}} endring" - label_modification_plural: "{{count}} endringer" + label_modification: "%{count} endring" + label_modification_plural: "%{count} endringer" label_revision: Revisjon label_revision_plural: Revisjoner label_associated_revisions: Assosierte revisjoner @@ -498,8 +499,8 @@ label_sort_lower: Flytt ned label_sort_lowest: Flytt til bunnen label_roadmap: Veikart - label_roadmap_due_in: "Frist om {{value}}" - label_roadmap_overdue: "{{value}} over fristen" + label_roadmap_due_in: "Frist om %{value}" + label_roadmap_overdue: "%{value} over fristen" label_roadmap_no_issues: Ingen saker for denne versjonen label_search: Søk label_result_plural: Resultater @@ -517,8 +518,8 @@ label_changes_details: Detaljer om alle endringer label_issue_tracking: Sakssporing label_spent_time: Brukt tid - label_f_hour: "{{value}} time" - label_f_hour_plural: "{{value}} timer" + label_f_hour: "%{value} time" + label_f_hour_plural: "%{value} timer" label_time_tracking: Tidssporing label_change_plural: Endringer label_statistics: Statistikk @@ -567,12 +568,12 @@ label_date_from: Fra label_date_to: Til label_language_based: Basert pÃ¥ brukerens sprÃ¥k - label_sort_by: "Sorter etter {{value}}" + label_sort_by: "Sorter etter %{value}" label_send_test_email: Send en e-post-test - label_feeds_access_key_created_on: "RSS tilgangsnøkkel opprettet for {{value}} siden" + label_feeds_access_key_created_on: "RSS tilgangsnøkkel opprettet for %{value} siden" label_module_plural: Moduler - label_added_time_by: "Lagt til av {{author}} for {{age}} siden" - label_updated_time: "Oppdatert for {{value}} siden" + label_added_time_by: "Lagt til av %{author} for %{age} siden" + label_updated_time: "Oppdatert for %{value} siden" label_jump_to_a_project: GÃ¥ til et prosjekt... label_file_plural: Filer label_changeset_plural: Endringssett @@ -588,7 +589,7 @@ label_registration_activation_by_email: kontoaktivering pr. e-post label_registration_manual_activation: manuell kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering - label_display_per_page: "Pr. side: {{value}}" + label_display_per_page: "Pr. side: %{value}" label_age: Alder label_change_properties: Endre egenskaper label_general: Generell @@ -650,40 +651,40 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 betyr ingen begrensning text_project_destroy_confirmation: Er du sikker pÃ¥ at du vil slette dette prosjekter og alle relatert data ? - text_subprojects_destroy_warning: "Underprojekt(ene): {{value}} vil ogsÃ¥ bli slettet." + text_subprojects_destroy_warning: "Underprojekt(ene): %{value} vil ogsÃ¥ bli slettet." text_workflow_edit: Velg en rolle og en sakstype for Ã¥ endre arbeidsflyten text_are_you_sure: Er du sikker ? text_tip_issue_begin_day: oppgaven starter denne dagen text_tip_issue_end_day: oppgaven avsluttes denne dagen text_tip_issue_begin_end_day: oppgaven starter og avsluttes denne dagen text_project_identifier_info: 'SmÃ¥ bokstaver (a-z), nummer og bindestrek tillatt.
    Identifikatoren kan ikke endres etter den er lagret.' - text_caracters_maximum: "{{count}} tegn maksimum." - text_caracters_minimum: "Må være minst {{count}} tegn langt." - text_length_between: "Lengde mellom {{min}} og {{max}} tegn." + text_caracters_maximum: "%{count} tegn maksimum." + text_caracters_minimum: "Må være minst %{count} tegn langt." + text_length_between: "Lengde mellom %{min} og %{max} tegn." text_tracker_no_workflow: Ingen arbeidsflyt definert for denne sakstypen text_unallowed_characters: Ugyldige tegn text_comma_separated: Flere verdier tillat (kommaseparert). text_issues_ref_in_commit_messages: Referering og retting av saker i innsendingsmelding - text_issue_added: "Issue {{id}} has been reported by {{author}}." - text_issue_updated: "Issue {{id}} has been updated by {{author}}." + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wikien og alt innholdet ? - text_issue_category_destroy_question: "Noen saker ({{count}}) er lagt til i denne kategorien. Hva vil du gjøre ?" + text_issue_category_destroy_question: "Noen saker (%{count}) er lagt til i denne kategorien. Hva vil du gjøre ?" text_issue_category_destroy_assignments: Fjern bruk av kategorier text_issue_category_reassign_to: Overfør sakene til denne kategorien text_user_mail_option: "For ikke-valgte prosjekter vil du bare motta varsling om ting du overvåker eller er involveret i (eks. saker du er forfatter av eller er tildelt)." text_no_configuration_data: "Roller, arbeidsflyt, sakstyper og -statuser er ikke konfigurert enda.\nDet anbefales sterkt å laste inn standardkonfigurasjonen. Du vil kunne endre denne etter den er innlastet." text_load_default_configuration: Last inn standardkonfigurasjonen - text_status_changed_by_changeset: "Brukt i endringssett {{value}}." + text_status_changed_by_changeset: "Brukt i endringssett %{value}." text_issues_destroy_confirmation: 'Er du sikker på at du vil slette valgte sak(er) ?' text_select_project_modules: 'Velg moduler du vil aktivere for dette prosjektet:' text_default_administrator_account_changed: Standard administrator-konto er endret text_file_repository_writable: Fil-arkivet er skrivbart text_rmagick_available: RMagick er tilgjengelig (valgfritt) - text_destroy_time_entries_question: "{{hours}} timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ?" + text_destroy_time_entries_question: "%{hours} timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ?" text_destroy_time_entries: Slett førte timer text_assign_time_entries_to_project: Overfør førte timer til prosjektet text_reassign_time_entries: 'Overfør førte timer til denne saken:' - text_user_wrote: "{{value}} skrev:" + text_user_wrote: "%{value} skrev:" default_role_manager: Leder default_role_developer: Utvikler @@ -711,12 +712,12 @@ enumeration_doc_categories: Dokument-kategorier enumeration_activities: Aktiviteter (tidssporing) text_enumeration_category_reassign_to: 'Endre dem til denne verdien:' - text_enumeration_destroy_question: "{{count}} objekter er endret til denne verdien." + text_enumeration_destroy_question: "%{count} objekter er endret til denne verdien." label_incoming_emails: Innkommende e-post label_generate_key: Generer en nøkkel setting_mail_handler_api_enabled: Skru på WS for innkommende e-post setting_mail_handler_api_key: API-nøkkel - 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/email.yml og start programmet på nytt for å skru det på." + 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 @@ -777,12 +778,12 @@ 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" + 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." + 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 @@ -797,21 +798,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -819,14 +820,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -861,9 +862,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -890,12 +891,12 @@ 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_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}}." + 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. @@ -903,7 +904,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -914,8 +915,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/pl.yml --- a/config/locales/pl.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/pl.yml Thu Mar 03 12:11:53 2011 +0000 @@ -61,50 +61,50 @@ half_a_minute: "pół minuty" less_than_x_seconds: one: "mniej niż sekundę" - few: "mniej niż {{count}} sekundy" - other: "mniej niż {{count}} sekund" + few: "mniej niż %{count} sekundy" + other: "mniej niż %{count} sekund" x_seconds: one: "sekundę" - few: "{{count}} sekundy" - other: "{{count}} sekund" + few: "%{count} sekundy" + other: "%{count} sekund" less_than_x_minutes: one: "mniej niż minutę" - few: "mniej niż {{count}} minuty" - other: "mniej niż {{count}} minut" + few: "mniej niż %{count} minuty" + other: "mniej niż %{count} minut" x_minutes: one: "minutę" - few: "{{count}} minuty" - other: "{{count}} minut" + few: "%{count} minuty" + other: "%{count} minut" about_x_hours: one: "około godziny" - other: "około {{count}} godzin" + other: "około %{count} godzin" x_days: one: "1 dzień" - other: "{{count}} dni" + other: "%{count} dni" about_x_months: one: "około miesiąca" - other: "około {{count}} miesięcy" + other: "około %{count} miesięcy" x_months: one: "1 miesiąc" - few: "{{count}} miesiące" - other: "{{count}} miesięcy" + few: "%{count} miesiące" + other: "%{count} miesięcy" about_x_years: one: "około roku" - other: "około {{count}} lat" + other: "około %{count} lat" over_x_years: one: "ponad rok" - few: "ponad {{count}} lata" - other: "ponad {{count}} lat" + few: "ponad %{count} lata" + other: "ponad %{count} lat" almost_x_years: one: "prawie rok" - other: "prawie {{count}} lata" + other: "prawie %{count} lata" activerecord: errors: template: header: - one: "{{model}} nie został zachowany z powodu jednego błędu" - other: "{{model}} nie został zachowany z powodu {{count}} błędów" + one: "%{model} nie został zachowany z powodu jednego błędu" + other: "%{model} nie został zachowany z powodu %{count} błędów" body: "Błędy dotyczą następujących pól:" messages: inclusion: "nie znajduje się na liście dopuszczalnych wartości" @@ -114,16 +114,16 @@ accepted: "musi być zaakceptowane" empty: "nie może być puste" blank: "nie może być puste" - too_long: "jest za długie (maksymalnie {{count}} znaków)" - too_short: "jest za krótkie (minimalnie {{count}} znaków)" - wrong_length: "jest nieprawidłowej długości (powinna wynosić {{count}} znaków)" + too_long: "jest za długie (maksymalnie %{count} znaków)" + too_short: "jest za krótkie (minimalnie %{count} znaków)" + wrong_length: "jest nieprawidłowej długości (powinna wynosić %{count} znaków)" taken: "jest już zajęte" not_a_number: "nie jest liczbą" - greater_than: "musi być większe niż {{count}}" - greater_than_or_equal_to: "musi być większe lub równe {{count}}" - equal_to: "musi być równe {{count}}" - less_than: "musi być mniejsze niż {{count}}" - less_than_or_equal_to: "musi być mniejsze lub równe {{count}}" + greater_than: "musi być większe niż %{count}" + greater_than_or_equal_to: "musi być większe lub równe %{count}" + equal_to: "musi być równe %{count}" + less_than: "musi być mniejsze niż %{count}" + less_than_or_equal_to: "musi być mniejsze lub równe %{count}" odd: "musi być nieparzyste" even: "musi być parzyste" greater_than_start_date: "musi być większe niż początkowa data" @@ -203,10 +203,10 @@ enumeration_activities: Działania (śledzenie czasu) enumeration_doc_categories: Kategorie dokumentów enumeration_issue_priorities: Priorytety zagadnień - error_can_t_load_default_data: "Domyślna konfiguracja nie może być załadowana: {{value}}" + error_can_t_load_default_data: "Domyślna konfiguracja nie może być załadowana: %{value}" error_issue_not_found_in_project: 'Zaganienie nie zostało znalezione lub nie należy do tego projektu' error_scm_annotate: "Wpis nie istnieje lub nie można do niego dodawać adnotacji." - error_scm_command_failed: "Wystąpił błąd przy próbie dostępu do repozytorium: {{value}}" + error_scm_command_failed: "Wystąpił błąd przy próbie dostępu do repozytorium: %{value}" error_scm_not_found: "Obiekt lub wersja nie zostały znalezione w repozytorium." field_account: Konto field_activity: Aktywność @@ -277,6 +277,7 @@ field_role: Rola field_searchable: Przeszukiwalne field_spent_on: Data + field_start_date: Start field_start_page: Strona startowa field_status: Status field_subject: Temat @@ -304,21 +305,21 @@ general_text_no: 'nie' general_text_yes: 'tak' gui_validation_error: 1 błąd - gui_validation_error_plural234: "{{count}} błędy" - gui_validation_error_plural5: "{{count}} błędów" - gui_validation_error_plural: "{{count}} błędów" + gui_validation_error_plural234: "%{count} błędy" + gui_validation_error_plural5: "%{count} błędów" + gui_validation_error_plural: "%{count} błędów" label_activity: Aktywność label_add_another_file: Dodaj kolejny plik label_add_note: Dodaj notatkę label_added: dodane - label_added_time_by: "Dodane przez {{author}} {{age}} temu" + label_added_time_by: "Dodane przez %{author} %{age} temu" label_administration: Administracja label_age: Wiek label_ago: dni temu label_all: wszystko label_all_time: cały czas label_all_words: Wszystkie słowa - label_and_its_subprojects: "{{value}} i podprojekty" + label_and_its_subprojects: "%{value} i podprojekty" label_applied_status: Stosowany status label_assigned_to_me_issues: Zagadnienia przypisane do mnie label_associated_revisions: Skojarzone rewizje @@ -333,7 +334,7 @@ label_auth_source_plural: Tryby identyfikacji label_authentication: Identyfikacja label_blocked_by: zablokowane przez - label_blocks: blokady + label_blocks: blokuje label_board: Forum label_board_new: Nowe forum label_board_plural: Fora @@ -353,17 +354,17 @@ label_closed_issues_plural5: zamknięte label_closed_issues_plural: zamknięte label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_comment: Komentarz label_comment_add: Dodaj komentarz label_comment_added: Komentarz dodany @@ -374,7 +375,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_commits_per_author: Zatwierdzenia według autorów label_commits_per_month: Zatwierdzenia według miesięcy label_confirmation: Potwierdzenie @@ -398,18 +399,18 @@ label_diff_inline: w linii label_diff_side_by_side: obok siebie label_disabled: zablokowany - label_display_per_page: "Na stronę: {{value}}" + label_display_per_page: "Na stronę: %{value}" label_document: Dokument label_document_added: Dodano dokument label_document_new: Nowy dokument label_document_plural: Dokumenty - label_download: "{{count}} Pobranie" - label_download_plural234: "{{count}} Pobrania" - label_download_plural5: "{{count}} Pobrań" - label_download_plural: "{{count}} Pobrania" + label_download: "%{count} Pobranie" + label_download_plural234: "%{count} Pobrania" + label_download_plural5: "%{count} Pobrań" + label_download_plural: "%{count} Pobrania" label_downloads_abbr: Pobieranie label_duplicated_by: zduplikowane przez - label_duplicates: duplikaty + label_duplicates: duplikuje label_end_to_end: koniec do końca label_end_to_start: koniec do początku label_enumeration_new: Nowa wartość @@ -418,10 +419,10 @@ label_equals: równa się label_example: Przykład label_export_to: Eksportuj do - label_f_hour: "{{value}} godzina" - label_f_hour_plural: "{{value}} godzin" + label_f_hour: "%{value} godzina" + label_f_hour_plural: "%{value} godzin" label_feed_plural: Ilość RSS - label_feeds_access_key_created_on: "Klucz dostępu RSS stworzony {{value}} dni temu" + label_feeds_access_key_created_on: "Klucz dostępu RSS stworzony %{value} dni temu" label_file_added: Dodano plik label_file_plural: Pliki label_filter_add: Dodaj filtr @@ -459,13 +460,13 @@ label_issue_updated: Uaktualniono zagadnienie label_issue_view_all: Zobacz wszystkie zagadnienia label_issue_watchers: Obserwatorzy - label_issues_by: "Zagadnienia wprowadzone przez {{value}}" + label_issues_by: "Zagadnienia wprowadzone przez %{value}" label_jump_to_a_project: Skocz do projektu... label_language_based: Na podstawie języka - label_last_changes: "ostatnie {{count}} zmian" + label_last_changes: "ostatnie %{count} zmian" label_last_login: Ostatnie połączenie label_last_month: ostatni miesiąc - label_last_n_days: "ostatnie {{count}} dni" + label_last_n_days: "ostatnie %{count} dni" label_last_week: ostatni tydzień label_latest_revision: Najnowsza rewizja label_latest_revision_plural: Najnowsze rewizje @@ -486,10 +487,10 @@ label_message_plural: Wiadomości label_message_posted: Dodano wiadomość label_min_max_length: Min - Maks długość - label_modification: "{{count}} modyfikacja" - label_modification_plural234: "{{count}} modyfikacje" - label_modification_plural5: "{{count}} modyfikacji" - label_modification_plural: "{{count}} modyfikacje" + label_modification: "%{count} modyfikacja" + label_modification_plural234: "%{count} modyfikacje" + label_modification_plural5: "%{count} modyfikacji" + label_modification_plural: "%{count} modyfikacje" label_modified: zmodyfikowane label_module_plural: Moduły label_month: Miesiąc @@ -544,7 +545,7 @@ label_x_projects: zero: brak projektów one: jeden projekt - other: "{{count}} projektów" + other: "%{count} projektów" label_public_projects: Projekty publiczne label_query: Kwerenda label_query_new: Nowa kwerenda @@ -573,7 +574,7 @@ label_roadmap: Mapa label_roadmap_due_in: W czasie label_roadmap_no_issues: Brak zagadnień do tej wersji - label_roadmap_overdue: "{{value}} spóźnienia" + label_roadmap_overdue: "%{value} spóźnienia" label_role: Rola label_role_and_permissions: Role i Uprawnienia label_role_new: Nowa rola @@ -585,7 +586,7 @@ label_send_test_email: Wyślij próbny email label_settings: Ustawienia label_show_completed_versions: Pokaż kompletne wersje - label_sort_by: "Sortuj po {{value}}" + label_sort_by: "Sortuj po %{value}" label_sort_higher: Do góry label_sort_highest: Przesuń na górę label_sort_lower: Do dołu @@ -609,7 +610,7 @@ label_tracker: Typ zagadnienia label_tracker_new: Nowy typ zagadnienia label_tracker_plural: Typy zagadnień - label_updated_time: "Zaktualizowane {{value}} temu" + label_updated_time: "Zaktualizowane %{value} temu" label_used_by: Używane przez label_user: Użytkownik label_user_mail_no_self_notified: "Nie chcę powiadomień o zmianach, które sam wprowadzam." @@ -632,16 +633,16 @@ label_workflow: Przepływ label_year: Rok label_yesterday: wczoraj - mail_body_account_activation_request: "Zarejestrowano nowego użytkownika: ({{value}}). Konto oczekuje na twoje zatwierdzenie:" + mail_body_account_activation_request: "Zarejestrowano nowego użytkownika: (%{value}). Konto oczekuje na twoje zatwierdzenie:" mail_body_account_information: Twoje konto - mail_body_account_information_external: "Możesz użyć twojego {{value}} konta do zalogowania." + mail_body_account_information_external: "Możesz użyć twojego %{value} konta do zalogowania." mail_body_lost_password: 'W celu zmiany swojego hasła użyj poniższego odnośnika:' mail_body_register: 'W celu aktywacji Twojego konta, użyj poniższego odnośnika:' - mail_body_reminder: "Wykaz przypisanych do Ciebie zagadnień, których termin wypada w ciągu następnych {{count}} dni" - mail_subject_account_activation_request: "Zapytanie aktywacyjne konta {{value}}" - mail_subject_lost_password: "Twoje hasło do {{value}}" - mail_subject_register: "Aktywacja konta w {{value}}" - mail_subject_reminder: "Uwaga na terminy, masz zagadnienia do obsłużenia w ciągu następnych {{count}} dni! ({{days}})" + mail_body_reminder: "Wykaz przypisanych do Ciebie zagadnień, których termin wypada w ciągu następnych %{count} dni" + mail_subject_account_activation_request: "Zapytanie aktywacyjne konta %{value}" + mail_subject_lost_password: "Twoje hasło do %{value}" + mail_subject_register: "Aktywacja konta w %{value}" + mail_subject_reminder: "Uwaga na terminy, masz zagadnienia do obsłużenia w ciągu następnych %{count} dni! (%{days})" notice_account_activated: Twoje konto zostało aktywowane. Możesz się zalogować. notice_account_invalid_creditentials: Zły użytkownik lub hasło notice_account_lost_email_sent: Email z instrukcjami zmiany hasła został wysłany do Ciebie. @@ -653,9 +654,9 @@ notice_account_wrong_password: Złe hasło notice_can_t_change_password: To konto ma zewnętrzne źródło identyfikacji. Nie możesz zmienić hasła. notice_default_data_loaded: Domyślna konfiguracja została pomyślnie załadowana. - notice_email_error: "Wystąpił błąd w trakcie wysyłania maila ({{value}})" - notice_email_sent: "Email został wysłany do {{value}}" - notice_failed_to_save_issues: "Błąd podczas zapisu zagadnień {{count}} z {{total}} zaznaczonych: {{ids}}." + notice_email_error: "Wystąpił błąd w trakcie wysyłania maila (%{value})" + notice_email_sent: "Email został wysłany do %{value}" + notice_failed_to_save_issues: "Błąd podczas zapisu zagadnień %{count} z %{total} zaznaczonych: %{ids}." notice_feeds_access_key_reseted: Twój klucz dostępu RSS został zrestetowany. notice_file_not_found: Strona do której próbujesz się dostać nie istnieje lub została usunięta. notice_locking_conflict: Dane poprawione przez innego użytkownika. @@ -765,24 +766,24 @@ status_registered: zarejestrowany text_are_you_sure: Jesteś pewien ? text_assign_time_entries_to_project: Przypisz wpisy dziennika do projektu - text_caracters_maximum: "{{count}} znaków maksymalnie." - text_caracters_minimum: "Musi być nie krótsze niż {{count}} znaków." + text_caracters_maximum: "%{count} znaków maksymalnie." + text_caracters_minimum: "Musi być nie krótsze niż %{count} znaków." text_comma_separated: Wielokrotne wartości dozwolone (rozdzielone przecinkami). text_default_administrator_account_changed: Zmieniono domyślne hasło administratora text_destroy_time_entries: Usuń wpisy dziennika - text_destroy_time_entries_question: Przepracowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić? - text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml a następnie zrestartuj aplikację i uaktywnij to." + text_destroy_time_entries_question: Przepracowano %{hours} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić? + text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/configuration.yml a następnie zrestartuj aplikację i uaktywnij to." text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:' - text_enumeration_destroy_question: "{{count}} obiektów jest przypisana do tej wartości." + text_enumeration_destroy_question: "%{count} obiektów jest przypisana do tej wartości." text_file_repository_writable: Zapisywalne repozytorium plików - text_issue_added: "Zagadnienie {{id}} zostało wprowadzone (by {{author}})." + text_issue_added: "Zagadnienie %{id} zostało wprowadzone (by %{author})." text_issue_category_destroy_assignments: Usuń przydziały kategorii - text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz zrobić?" + text_issue_category_destroy_question: "Zagadnienia (%{count}) są przypisane do tej kategorii. Co chcesz zrobić?" text_issue_category_reassign_to: Przydziel zagadnienie do tej kategorii - text_issue_updated: "Zagadnienie {{id}} zostało zaktualizowane (by {{author}})." + text_issue_updated: "Zagadnienie %{id} zostało zaktualizowane (by %{author})." text_issues_destroy_confirmation: 'Czy jestes pewien, że chcesz usunąć wskazane zagadnienia?' text_issues_ref_in_commit_messages: Odwołania do zagadnień w komentarzach zatwierdzeń - text_length_between: "Długość pomiędzy {{min}} i {{max}} znaków." + text_length_between: "Długość pomiędzy %{min} i %{max} znaków." text_load_default_configuration: Załaduj domyślną konfigurację text_min_max_length_info: 0 oznacza brak restrykcji text_no_configuration_data: "Role użytkowników, typy zagadnień, statusy zagadnień oraz przepływ pracy nie zostały jeszcze skonfigurowane.\nJest wysoce rekomendowane by załadować domyślną konfigurację. Po załadowaniu będzie możliwość edycji tych danych." @@ -794,24 +795,24 @@ text_rmagick_available: RMagick dostępne (opcjonalnie) text_select_mail_notifications: Zaznacz czynności przy których użytkownik powinien być powiadomiony mailem. text_select_project_modules: 'Wybierz moduły do aktywacji w tym projekcie:' - text_status_changed_by_changeset: "Zastosowane w zmianach {{value}}." - text_subprojects_destroy_warning: "Podprojekt(y): {{value}} zostaną także usunięte." + text_status_changed_by_changeset: "Zastosowane w zmianach %{value}." + text_subprojects_destroy_warning: "Podprojekt(y): %{value} zostaną także usunięte." text_tip_issue_begin_day: zadanie zaczynające się dzisiaj text_tip_issue_begin_end_day: zadanie zaczynające i kończące się dzisiaj text_tip_issue_end_day: zadanie kończące się dzisiaj text_tracker_no_workflow: Brak przepływu zdefiniowanego dla tego typu zagadnienia text_unallowed_characters: Niedozwolone znaki text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnień, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)." - text_user_wrote: "{{value}} napisał:" + text_user_wrote: "%{value} napisał:" text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i całą jego zawartość ? text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu - label_user_activity: "Aktywność: {{value}}" - label_updated_time_by: "Uaktualnione przez {{author}} {{age}} temu" + label_user_activity: "Aktywność: %{value}" + label_updated_time_by: "Uaktualnione przez %{author} %{age} temu" text_diff_truncated: '... Ten plik różnic został przycięty ponieważ jest zbyt długi.' setting_diff_max_lines_displayed: Maksymalna liczba linii różnicy do pokazania text_plugin_assets_writable: Zapisywalny katalog zasobów wtyczek - warning_attachments_not_saved: "{{count}} załącznik(ów) nie zostało zapisanych." + warning_attachments_not_saved: "%{count} załącznik(ów) nie zostało zapisanych." field_editable: Edytowalne label_display: Wygląd button_create_and_continue: Stwórz i dodaj kolejne @@ -826,21 +827,21 @@ label_descending: Malejąco label_sort: Sortuj label_ascending: Rosnąco - label_date_from_to: Od {{start}} do {{end}} + label_date_from_to: Od %{start} do %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Ta strona posiada podstrony ({{descendants}}). Co chcesz zrobić? + text_wiki_page_destroy_question: Ta strona posiada podstrony (%{descendants}). Co chcesz zrobić? text_wiki_page_reassign_children: Podepnij je do strony nadrzędnej względem usuwanej text_wiki_page_nullify_children: Przesuń je na szczyt hierarchii text_wiki_page_destroy_children: Usuń wszystkie podstrony setting_password_min_length: Minimalna długość hasła field_group_by: Grupuj wyniki wg - mail_subject_wiki_content_updated: "Strona wiki '{{id}}' została uaktualniona" + mail_subject_wiki_content_updated: "Strona wiki '%{id}' została uaktualniona" label_wiki_content_added: Dodano stronę wiki - mail_subject_wiki_content_added: "Strona wiki '{{id}}' została dodana" - mail_body_wiki_content_added: Strona wiki '{{id}}' została dodana przez {{author}}. + mail_subject_wiki_content_added: "Strona wiki '%{id}' została dodana" + mail_body_wiki_content_added: Strona wiki '%{id}' została dodana przez %{author}. label_wiki_content_updated: Uaktualniono stronę wiki - mail_body_wiki_content_updated: Strona wiki '{{id}}' została uaktualniona przez {{author}}. + mail_body_wiki_content_updated: Strona wiki '%{id}' została uaktualniona przez %{author}. permission_add_project: Tworzenie projektu setting_new_project_user_role_id: Rola nadawana twórcom projektów, którzy nie posiadają uprawnień administatora label_view_all_revisions: Pokaż wszystkie rewizje @@ -848,14 +849,14 @@ label_branch: Gałąź error_no_tracker_in_project: Projekt nie posiada powiązanych typów zagadnień. Sprawdź ustawienia projektu. error_no_default_issue_status: Nie zdefiniowano domyślnego statusu zagadnień. Sprawdź konfigurację (Przejdź do "Administracja -> Statusy zagadnień). - text_journal_changed: "Zmieniono {{label}} z {{old}} na {{new}}" - text_journal_set_to: "Ustawiono {{label}} na {{value}}" - text_journal_deleted: "Usunięto {{label}} ({{old}})" + text_journal_changed: "Zmieniono %{label} z %{old} na %{new}" + text_journal_set_to: "Ustawiono %{label} na %{value}" + text_journal_deleted: "Usunięto %{label} (%{old})" label_group_plural: Grupy label_group: Grupa label_group_new: Nowa grupa label_time_entry_plural: Przepracowany czas - text_journal_added: "Dodano {{label}} {{value}}" + text_journal_added: "Dodano %{label} %{value}" field_active: Aktywne enumeration_system_activity: Aktywność Systemowa button_copy_and_follow: Kopiuj i przejdź do kopii zagadnienia @@ -869,7 +870,7 @@ error_workflow_copy_target: Proszę wybrać docelowe typ(y) zagadnień i rolę(e) field_sharing: Współdzielenie label_api_access_key: Klucz dostępu do API - label_api_access_key_created_on: Klucz dostępu do API został utworzony {{value}} temu + label_api_access_key_created_on: Klucz dostępu do API został utworzony %{value} temu label_close_versions: Zamknij ukończone wersje label_copy_same_as_target: Jak cel label_copy_source: Źródło @@ -878,7 +879,7 @@ label_feeds_access_key: Klucz dostępu do RSS label_missing_api_access_key: Brakuje klucza dostępu do API label_missing_feeds_access_key: Brakuje klucza dostępu do RSS - label_revision_id: Rewizja {{value}} + label_revision_id: Rewizja %{value} label_subproject_new: Nowy podprojekt label_update_issue_done_ratios: Uaktualnij % wykonania label_user_anonymous: Anonimowy @@ -920,12 +921,12 @@ label_subtask_plural: Podzagadnienia label_project_copy_notifications: Wyślij powiadomienia mailowe przy kopiowaniu projektu error_can_not_delete_custom_field: Nie można usunąć tego pola - error_unable_to_connect: Nie można połączyć ({{value}}) + error_unable_to_connect: Nie można połączyć (%{value}) error_can_not_remove_role: Ta rola przypisana jest niektórym użytkownikom i nie może zostać usunięta. error_can_not_delete_tracker: Ten typ przypisany jest do części zagadnień i nie może zostać usunięty. field_principal: Przełożony label_my_page_block: Elementy - notice_failed_to_save_members: "Nie można zapisać uczestników: {{errors}}." + notice_failed_to_save_members: "Nie można zapisać uczestników: %{errors}." text_zoom_out: Zmniejsz czcionkę text_zoom_in: Powiększ czcionkę notice_unable_delete_time_entry: Nie można usunąć wpisu z dziennika. @@ -933,7 +934,7 @@ field_time_entries: Dziennik project_module_gantt: Diagram Gantta project_module_calendar: Kalendarz - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -944,8 +945,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/pt-BR.yml --- a/config/locales/pt-BR.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/pt-BR.yml Thu Mar 03 12:11:53 2011 +0000 @@ -33,46 +33,46 @@ half_a_minute: 'meio minuto' less_than_x_seconds: one: 'menos de 1 segundo' - other: 'menos de {{count}} segundos' + other: 'menos de %{count} segundos' x_seconds: one: '1 segundo' - other: '{{count}} segundos' + other: '%{count} segundos' less_than_x_minutes: one: 'menos de um minuto' - other: 'menos de {{count}} minutos' + other: 'menos de %{count} minutos' x_minutes: one: '1 minuto' - other: '{{count}} minutos' + other: '%{count} minutos' about_x_hours: one: 'aproximadamente 1 hora' - other: 'aproximadamente {{count}} horas' + other: 'aproximadamente %{count} horas' x_days: one: '1 dia' - other: '{{count}} dias' + other: '%{count} dias' about_x_months: one: 'aproximadamente 1 mês' - other: 'aproximadamente {{count}} meses' + other: 'aproximadamente %{count} meses' x_months: one: '1 mês' - other: '{{count}} meses' + other: '%{count} meses' about_x_years: one: 'aproximadamente 1 ano' - other: 'aproximadamente {{count}} anos' + other: 'aproximadamente %{count} anos' over_x_years: one: 'mais de 1 ano' - other: 'mais de {{count}} anos' + other: 'mais de %{count} anos' almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" # numeros number: @@ -118,7 +118,7 @@ template: header: one: "model não pode ser salvo: 1 erro" - other: "model não pode ser salvo: {{count}} erros." + other: "model não pode ser salvo: %{count} erros." body: "Por favor, verifique os seguintes campos:" messages: inclusion: "não está incluso na lista" @@ -128,16 +128,16 @@ accepted: "precisa ser aceito" empty: "não pode ficar vazio" blank: "não pode ficar vazio" - too_long: "é muito longo (máximo: {{count}} caracteres)" - too_short: "é muito curto (mínimon: {{count}} caracteres)" - wrong_length: "deve ter {{count}} caracteres" + too_long: "é muito longo (máximo: %{count} caracteres)" + too_short: "é muito curto (mínimon: %{count} caracteres)" + wrong_length: "deve ter %{count} caracteres" taken: "não está disponível" not_a_number: "não é um número" - greater_than: "precisa ser maior do que {{count}}" - greater_than_or_equal_to: "precisa ser maior ou igual a {{count}}" - equal_to: "precisa ser igual a {{count}}" - less_than: "precisa ser menor do que {{count}}" - less_than_or_equal_to: "precisa ser menor ou igual a {{count}}" + greater_than: "precisa ser maior do que %{count}" + greater_than_or_equal_to: "precisa ser maior ou igual a %{count}" + equal_to: "precisa ser igual a %{count}" + less_than: "precisa ser menor do que %{count}" + less_than_or_equal_to: "precisa ser menor ou igual a %{count}" odd: "precisa ser ímpar" even: "precisa ser par" greater_than_start_date: "deve ser maior que a data inicial" @@ -174,35 +174,35 @@ notice_file_not_found: A página que você está tentando acessar não existe ou foi excluída. notice_locking_conflict: Os dados foram atualizados por outro usuário. notice_not_authorized: Você não está autorizado a acessar esta página. - notice_email_sent: "Um e-mail foi enviado para {{value}}" - notice_email_error: "Ocorreu um erro ao enviar o e-mail ({{value}})" + notice_email_sent: "Um e-mail foi enviado para %{value}" + notice_email_error: "Ocorreu um erro ao enviar o e-mail (%{value})" notice_feeds_access_key_reseted: Sua chave RSS foi reconfigurada. - notice_failed_to_save_issues: "Problema ao salvar {{count}} tarefa(s) de {{total}} selecionadas: {{ids}}." + notice_failed_to_save_issues: "Problema ao salvar %{count} tarefa(s) de %{total} selecionadas: %{ids}." notice_no_issue_selected: "Nenhuma tarefa selecionada! Por favor, marque as tarefas que você deseja editar." notice_account_pending: "Sua conta foi criada e está aguardando aprovação do administrador." notice_default_data_loaded: Configuração padrão carregada com sucesso. - error_can_t_load_default_data: "A configuração padrão não pode ser carregada: {{value}}" + error_can_t_load_default_data: "A configuração padrão não pode ser carregada: %{value}" error_scm_not_found: "A entrada e/ou a revisão não existe no repositório." - error_scm_command_failed: "Ocorreu um erro ao tentar acessar o repositório: {{value}}" + error_scm_command_failed: "Ocorreu um erro ao tentar acessar o repositório: %{value}" error_scm_annotate: "Esta entrada não existe ou não pode ser anotada." error_issue_not_found_in_project: 'A tarefa não foi encontrada ou não pertence a este projeto' error_no_tracker_in_project: 'Não há um tipo de tarefa associado a este projeto. Favor verificar as configurações do projeto.' error_no_default_issue_status: 'A situação padrão para tarefa não está definida. Favor verificar sua configuração (Vá em "Administração -> Situação da tarefa").' - mail_subject_lost_password: "Sua senha do {{value}}." + mail_subject_lost_password: "Sua senha do %{value}." mail_body_lost_password: 'Para mudar sua senha, clique no link abaixo:' - mail_subject_register: "Ativação de conta do {{value}}." + mail_subject_register: "Ativação de conta do %{value}." mail_body_register: 'Para ativar sua conta, clique no link abaixo:' - mail_body_account_information_external: "Você pode usar sua conta do {{value}} para entrar." + mail_body_account_information_external: "Você pode usar sua conta do %{value} para entrar." mail_body_account_information: Informações sobre sua conta - mail_subject_account_activation_request: "{{value}} - Requisição de ativação de conta" - mail_body_account_activation_request: "Um novo usuário ({{value}}) se registrou. A conta está aguardando sua aprovação:" - mail_subject_reminder: "{{count}} tarefa(s) com data prevista para os próximos {{days}} dias" - mail_body_reminder: "{{count}} tarefa(s) para você com data prevista para os próximos {{days}} dias:" + mail_subject_account_activation_request: "%{value} - Requisição de ativação de conta" + mail_body_account_activation_request: "Um novo usuário (%{value}) se registrou. A conta está aguardando sua aprovação:" + mail_subject_reminder: "%{count} tarefa(s) com data prevista para os próximos %{days} dias" + mail_body_reminder: "%{count} tarefa(s) para você com data prevista para os próximos %{days} dias:" gui_validation_error: 1 erro - gui_validation_error_plural: "{{count}} erros" + gui_validation_error_plural: "%{count} erros" field_name: Nome field_description: Descrição @@ -264,6 +264,7 @@ field_attr_lastname: Atributo para sobrenome 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_auth_source: Modo de autenticação field_hide_mail: Ocultar meu e-mail @@ -343,14 +344,14 @@ label_x_projects: zero: nenhum projeto one: 1 projeto - other: "{{count}} projetos" + other: "%{count} projetos" label_project_all: Todos os projetos label_project_latest: Últimos projetos label_issue: Tarefa label_issue_new: Nova tarefa label_issue_plural: Tarefas label_issue_view_all: Ver todas as tarefas - label_issues_by: "Tarefas por {{value}}" + label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa atualizada label_document: Documento @@ -407,7 +408,7 @@ label_auth_source_new: Novo modo de autenticação label_auth_source_plural: Modos de autenticação label_subproject_plural: Sub-projetos - label_and_its_subprojects: "{{value}} e seus sub-projetos" + label_and_its_subprojects: "%{value} e seus sub-projetos" label_min_max_length: Tamanho mín-máx label_list: Lista label_date: Data @@ -418,8 +419,8 @@ label_text: Texto longo label_attribute: Atributo label_attribute_plural: Atributos - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Nenhuma informação disponível label_change_status: Alterar situação label_history: Histórico @@ -450,17 +451,17 @@ label_closed_issues: Fechada label_closed_issues_plural: Fechadas label_x_open_issues_abbr_on_total: - zero: 0 aberta / {{total}} - one: 1 aberta / {{total}} - other: "{{count}} abertas / {{total}}" + zero: 0 aberta / %{total} + one: 1 aberta / %{total} + other: "%{count} abertas / %{total}" label_x_open_issues_abbr: zero: 0 aberta one: 1 aberta - other: "{{count}} abertas" + other: "%{count} abertas" label_x_closed_issues_abbr: zero: 0 fechada one: 1 fechada - other: "{{count}} fechadas" + other: "%{count} fechadas" label_total: Total label_permissions: Permissões label_current_status: Situação atual @@ -478,7 +479,7 @@ label_months_from: meses a partir de label_gantt: Gantt label_internal: Interno - label_last_changes: "últimas {{count}} alterações" + label_last_changes: "últimas %{count} alterações" label_change_view_all: Mostrar todas as alterações label_personalize_page: Personalizar esta página label_comment: Comentário @@ -486,7 +487,7 @@ label_x_comments: zero: nenhum comentário one: 1 comentário - other: "{{count}} comentários" + other: "%{count} comentários" label_comment_add: Adicionar comentário label_comment_added: Comentário adicionado label_comment_delete: Excluir comentário @@ -505,7 +506,7 @@ label_yesterday: ontem label_this_week: esta semana label_last_week: última semana - label_last_n_days: "últimos {{count}} dias" + label_last_n_days: "últimos %{count} dias" label_this_month: este mês label_last_month: último mês label_this_year: este ano @@ -519,8 +520,8 @@ label_repository: Repositório label_repository_plural: Repositórios label_browse: Procurar - label_modification: "{{count}} alteração" - label_modification_plural: "{{count}} alterações" + label_modification: "%{count} alteração" + label_modification_plural: "%{count} alterações" label_revision: Revisão label_revision_plural: Revisões label_associated_revisions: Revisões associadas @@ -536,8 +537,8 @@ label_sort_lower: Mover para baixo label_sort_lowest: Mover para o fim label_roadmap: Planejamento - label_roadmap_due_in: "Previsto para {{value}}" - label_roadmap_overdue: "{{value}} atrasado" + label_roadmap_due_in: "Previsto para %{value}" + label_roadmap_overdue: "%{value} atrasado" label_roadmap_no_issues: Sem tarefas para esta versão label_search: Busca label_result_plural: Resultados @@ -555,8 +556,8 @@ label_changes_details: Detalhes de todas as alterações label_issue_tracking: Tarefas label_spent_time: Tempo gasto - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_time_tracking: Controle de horas label_change_plural: Alterações label_statistics: Estatísticas @@ -605,12 +606,12 @@ label_date_from: De label_date_to: Para label_language_based: Com base no idioma do usuário - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_send_test_email: Enviar um e-mail de teste - label_feeds_access_key_created_on: "chave de acesso RSS criada {{value}} atrás" + label_feeds_access_key_created_on: "chave de acesso RSS criada %{value} atrás" label_module_plural: Módulos - label_added_time_by: "Adicionado por {{author}} {{age}} atrás" - label_updated_time: "Atualizado {{value}} atrás" + label_added_time_by: "Adicionado por %{author} %{age} atrás" + label_updated_time: "Atualizado %{value} atrás" label_jump_to_a_project: Ir para o projeto... label_file_plural: Arquivos label_changeset_plural: Changesets @@ -626,7 +627,7 @@ label_registration_activation_by_email: ativação de conta por e-mail label_registration_manual_activation: ativação manual de conta label_registration_automatic_activation: ativação automática de conta - label_display_per_page: "Por página: {{value}}" + label_display_per_page: "Por página: %{value}" label_age: Idade label_change_properties: Alterar propriedades label_general: Geral @@ -692,43 +693,43 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 = sem restrição text_project_destroy_confirmation: Você tem certeza que deseja excluir este projeto e todos os dados relacionados? - text_subprojects_destroy_warning: "Seu(s) subprojeto(s): {{value}} também serão excluídos." + text_subprojects_destroy_warning: "Seu(s) subprojeto(s): %{value} também serão excluídos." text_workflow_edit: Selecione um papel e um tipo de tarefa para editar o fluxo de trabalho text_are_you_sure: Você tem certeza? text_tip_issue_begin_day: tarefa inicia neste dia text_tip_issue_end_day: tarefa termina neste dia text_tip_issue_begin_end_day: tarefa inicia e termina neste dia text_project_identifier_info: 'Letras minúsculas (a-z), números e hífens permitidos.
    Uma vez salvo, o identificador não poderá ser alterado.' - text_caracters_maximum: "máximo {{count}} caracteres" - text_caracters_minimum: "deve ter ao menos {{count}} caracteres." - text_length_between: "deve ter entre {{min}} e {{max}} caracteres." + text_caracters_maximum: "máximo %{count} caracteres" + text_caracters_minimum: "deve ter ao menos %{count} caracteres." + text_length_between: "deve ter entre %{min} e %{max} caracteres." text_tracker_no_workflow: Sem fluxo de trabalho definido para este tipo. text_unallowed_characters: Caracteres não permitidos text_comma_separated: Múltiplos valores são permitidos (separados por vírgula). text_issues_ref_in_commit_messages: Referenciando tarefas nas mensagens de commit - text_issue_added: "Tarefa {{id}} incluída (por {{author}})." - text_issue_updated: "Tarefa {{id}} alterada (por {{author}})." + text_issue_added: "Tarefa %{id} incluída (por %{author})." + text_issue_updated: "Tarefa %{id} alterada (por %{author})." text_wiki_destroy_confirmation: Você tem certeza que deseja excluir este wiki e TODO o seu conteúdo? - text_issue_category_destroy_question: "Algumas tarefas ({{count}}) estão atribuídas a esta categoria. O que você deseja fazer?" + text_issue_category_destroy_question: "Algumas tarefas (%{count}) estão atribuídas a esta categoria. O que você deseja fazer?" text_issue_category_destroy_assignments: Remover atribuições da categoria text_issue_category_reassign_to: Redefinir tarefas para esta categoria text_user_mail_option: "Para projetos (não selecionados), você somente receberá notificações sobre o que você está observando ou está envolvido (ex. tarefas das quais você é o autor ou que estão atribuídas a você)" text_no_configuration_data: "Os Papéis, tipos de tarefas, situação de tarefas e fluxos de trabalho não foram configurados ainda.\nÉ altamente recomendado carregar as configurações padrão. Você poderá modificar estas configurações assim que carregadas." text_load_default_configuration: Carregar a configuração padrão - text_status_changed_by_changeset: "Aplicado no changeset {{value}}." + text_status_changed_by_changeset: "Aplicado no changeset %{value}." text_issues_destroy_confirmation: 'Você tem certeza que deseja excluir a(s) tarefa(s) selecionada(s)?' text_select_project_modules: 'Selecione módulos para habilitar para este projeto:' text_default_administrator_account_changed: Conta padrão do administrador alterada text_file_repository_writable: Repositório com permissão de escrita text_rmagick_available: RMagick disponível (opcional) - text_destroy_time_entries_question: "{{hours}} horas de trabalho foram registradas nas tarefas que você está excluindo. O que você deseja fazer?" + text_destroy_time_entries_question: "%{hours} horas de trabalho foram registradas nas tarefas que você está excluindo. O que você deseja fazer?" text_destroy_time_entries: Excluir horas de trabalho text_assign_time_entries_to_project: Atribuir estas horas de trabalho para outro projeto text_reassign_time_entries: 'Atribuir horas reportadas para esta tarefa:' - text_user_wrote: "{{value}} escreveu:" - text_enumeration_destroy_question: "{{count}} objetos estão atribuídos a este valor." + text_user_wrote: "%{value} escreveu:" + text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:' - text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/email.yml e reinicie a aplicação para ativá-las." + text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/configuration.yml e reinicie a aplicação para ativá-las." default_role_manager: Gerente default_role_developer: Desenvolvedor @@ -810,12 +811,12 @@ text_repository_usernames_mapping: "Seleciona ou atualiza os usuários do Redmine mapeando para cada usuário encontrado no log do repositório.\nUsuários com o mesmo login ou e-mail no Redmine e no repositório serão mapeados automaticamente." permission_edit_own_messages: Editar próprias mensagens permission_delete_own_messages: Excluir próprias mensagens - label_user_activity: "Atividade de {{value}}" - label_updated_time_by: "Atualizado por {{author}} há {{age}}" + label_user_activity: "Atividade de %{value}" + label_updated_time_by: "Atualizado por %{author} há %{age}" text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser exibido.' setting_diff_max_lines_displayed: Número máximo de linhas exibidas no diff text_plugin_assets_writable: Diretório de plugins gravável - warning_attachments_not_saved: "{{count}} arquivo(s) não puderam ser salvo(s)." + warning_attachments_not_saved: "%{count} arquivo(s) não puderam ser salvo(s)." button_create_and_continue: Criar e continuar text_custom_field_possible_values_info: 'Uma linha para cada valor' label_display: Exibição @@ -830,34 +831,34 @@ label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente - label_date_from_to: De {{start}} até {{end}} + label_date_from_to: De %{start} até %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Esta página tem {{descendants}} página(s) filha(s) e descendente(s). O que você quer fazer? + text_wiki_page_destroy_question: Esta página tem %{descendants} página(s) filha(s) e descendente(s). O que você quer fazer? text_wiki_page_reassign_children: Reatribuir páginas filhas para esta página pai text_wiki_page_nullify_children: Manter as páginas filhas como páginas raízes text_wiki_page_destroy_children: Excluir páginas filhas e todas suas descendentes setting_password_min_length: Comprimento mínimo para senhas field_group_by: Agrupar por - mail_subject_wiki_content_updated: "A página wiki '{{id}}' foi atualizada" + mail_subject_wiki_content_updated: "A página wiki '%{id}' foi atualizada" label_wiki_content_added: Página wiki adicionada - mail_subject_wiki_content_added: "A página wiki '{{id}}' foi adicionada" - mail_body_wiki_content_added: A página wiki '{{id}}' foi adicionada por {{author}}. + mail_subject_wiki_content_added: "A página wiki '%{id}' foi adicionada" + mail_body_wiki_content_added: A página wiki '%{id}' foi adicionada por %{author}. label_wiki_content_updated: Página wiki atualizada - mail_body_wiki_content_updated: A página wiki '{{id}}' foi atualizada por {{author}}. + mail_body_wiki_content_updated: A página wiki '%{id}' foi atualizada por %{author}. permission_add_project: Criar projeto setting_new_project_user_role_id: Papel atribuído a um usuário não-administrador que cria um projeto label_view_all_revisions: Ver todas as revisões label_tag: Etiqueta label_branch: Ramo - text_journal_changed: "{{label}} alterado de {{old}} para {{new}}" - text_journal_set_to: "{{label}} ajustado para {{value}}" - text_journal_deleted: "{{label}} excluído ({{old}})" + text_journal_changed: "%{label} alterado de %{old} para %{new}" + text_journal_set_to: "%{label} ajustado para %{value}" + text_journal_deleted: "%{label} excluído (%{old})" label_group_plural: Grupos label_group: Grupo label_group_new: Novo grupo label_time_entry_plural: Tempos gastos - text_journal_added: "{{label}} {{value}} adicionado" + text_journal_added: "%{label} %{value} adicionado" field_active: Ativo enumeration_system_activity: Atividade do sistema permission_delete_issue_watchers: Excluir observadores @@ -893,10 +894,10 @@ field_watcher: Observador permission_view_issues: Ver tarefas label_display_used_statuses_only: Somente exibir situações que são usadas por este tipo de tarefa - label_revision_id: Revisão {{value}} + label_revision_id: Revisão %{value} label_api_access_key: Chave de acesso a API button_show: Exibir - label_api_access_key_created_on: Chave de acesso a API criado a {{value}} atrás + label_api_access_key_created_on: Chave de acesso a API criado a %{value} atrás label_feeds_access_key: Chave de acesso ao RSS notice_api_access_key_reseted: Sua chave de acesso a API foi redefinida. setting_rest_api_enabled: Habilitar REST web service @@ -923,12 +924,12 @@ label_subtask_plural: Subtarefas label_project_copy_notifications: Enviar notificações por e-mail ao copiar projeto error_can_not_delete_custom_field: Não foi possível excluir o campo personalizado - error_unable_to_connect: Não foi possível conectar ({{value}}) + error_unable_to_connect: Não foi possível conectar (%{value}) error_can_not_remove_role: Este papel está em uso e não pode ser excluído. error_can_not_delete_tracker: Este tipo de tarefa está atribuído a alguma(s) tarefa(s) e não pode ser excluído. field_principal: Principal label_my_page_block: Meu bloco de página - notice_failed_to_save_members: "Falha ao gravar membro(s): {{errors}}." + notice_failed_to_save_members: "Falha ao gravar membro(s): %{errors}." text_zoom_out: Afastar zoom text_zoom_in: Aproximar zoom notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas. @@ -936,7 +937,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendário - button_edit_associated_wikipage: "Editar página wiki relacionada: {{page_title}}" + button_edit_associated_wikipage: "Editar página wiki relacionada: %{page_title}" text_are_you_sure_with_children: Excluir a tarefa e suas subtarefas? field_text: Campo de texto label_user_mail_option_only_owner: Somente para as coisas que eu criei @@ -947,8 +948,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/pt.yml --- a/config/locales/pt.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/pt.yml Thu Mar 03 12:11:53 2011 +0000 @@ -33,37 +33,37 @@ half_a_minute: "meio minuto" less_than_x_seconds: one: "menos de 1 segundo" - other: "menos de {{count}} segundos" + other: "menos de %{count} segundos" x_seconds: one: "1 segundo" - other: "{{count}} segundos" + other: "%{count} segundos" less_than_x_minutes: one: "menos de um minuto" - other: "menos de {{count}} minutos" + other: "menos de %{count} minutos" x_minutes: one: "1 minuto" - other: "{{count}} minutos" + other: "%{count} minutos" about_x_hours: one: "aproximadamente 1 hora" - other: "aproximadamente {{count}} horas" + other: "aproximadamente %{count} horas" x_days: one: "1 dia" - other: "{{count}} dias" + other: "%{count} dias" about_x_months: one: "aproximadamente 1 mês" - other: "aproximadamente {{count}} meses" + other: "aproximadamente %{count} meses" x_months: one: "1 mês" - other: "{{count}} meses" + other: "%{count} meses" about_x_years: one: "aproximadamente 1 ano" - other: "aproximadamente {{count}} anos" + other: "aproximadamente %{count} anos" over_x_years: one: "mais de 1 ano" - other: "mais de {{count}} anos" + other: "mais de %{count} anos" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -102,8 +102,8 @@ errors: template: header: - one: "Não foi possível guardar {{model}}: 1 erro" - other: "Não foi possível guardar {{model}}: {{count}} erros" + one: "Não foi possível guardar %{model}: 1 erro" + other: "Não foi possível guardar %{model}: %{count} erros" body: "Por favor, verifique os seguintes campos:" messages: inclusion: "não está incluído na lista" @@ -113,16 +113,16 @@ accepted: "precisa de ser aceite" empty: "não pode estar em branco" blank: "não pode estar em branco" - too_long: "tem demasiados caracteres (máximo: {{count}} caracteres)" - too_short: "tem poucos caracteres (mínimo: {{count}} caracteres)" - wrong_length: "não é do tamanho correcto (necessita de ter {{count}} caracteres)" + too_long: "tem demasiados caracteres (máximo: %{count} caracteres)" + too_short: "tem poucos caracteres (mínimo: %{count} caracteres)" + wrong_length: "não é do tamanho correcto (necessita de ter %{count} caracteres)" taken: "não está disponível" not_a_number: "não é um número" - greater_than: "tem de ser maior do que {{count}}" - greater_than_or_equal_to: "tem de ser maior ou igual a {{count}}" - equal_to: "tem de ser igual a {{count}}" - less_than: "tem de ser menor do que {{count}}" - less_than_or_equal_to: "tem de ser menor ou igual a {{count}}" + greater_than: "tem de ser maior do que %{count}" + greater_than_or_equal_to: "tem de ser maior ou igual a %{count}" + equal_to: "tem de ser igual a %{count}" + less_than: "tem de ser menor do que %{count}" + less_than_or_equal_to: "tem de ser menor ou igual a %{count}" odd: "tem de ser ímpar" even: "tem de ser par" greater_than_start_date: "deve ser maior que a data inicial" @@ -160,34 +160,34 @@ notice_file_not_found: A página que está a tentar aceder não existe ou foi removida. notice_locking_conflict: Os dados foram actualizados por outro utilizador. notice_not_authorized: Não está autorizado a visualizar esta página. - notice_email_sent: "Foi enviado um e-mail para {{value}}" - notice_email_error: "Ocorreu um erro ao enviar o e-mail ({{value}})" + notice_email_sent: "Foi enviado um e-mail para %{value}" + notice_email_error: "Ocorreu um erro ao enviar o e-mail (%{value})" notice_feeds_access_key_reseted: A sua chave de RSS foi inicializada. - notice_failed_to_save_issues: "Não foi possível guardar {{count}} tarefa(s) das {{total}} seleccionadas: {{ids}}." + notice_failed_to_save_issues: "Não foi possível guardar %{count} tarefa(s) das %{total} seleccionadas: %{ids}." notice_no_issue_selected: "Nenhuma tarefa seleccionada! Por favor, seleccione as tarefas que quer editar." notice_account_pending: "A sua conta foi criada e está agora à espera de aprovação do administrador." notice_default_data_loaded: Configuração padrão carregada com sucesso. notice_unable_delete_version: Não foi possível apagar a versão. - error_can_t_load_default_data: "Não foi possível carregar a configuração padrão: {{value}}" + error_can_t_load_default_data: "Não foi possível carregar a configuração padrão: %{value}" error_scm_not_found: "A entrada ou revisão não foi encontrada no repositório." - error_scm_command_failed: "Ocorreu um erro ao tentar aceder ao repositório: {{value}}" + error_scm_command_failed: "Ocorreu um erro ao tentar aceder ao repositório: %{value}" error_scm_annotate: "A entrada não existe ou não pode ser anotada." error_issue_not_found_in_project: 'A tarefa não foi encontrada ou não pertence a este projecto.' - mail_subject_lost_password: "Palavra-chave de {{value}}" + mail_subject_lost_password: "Palavra-chave de %{value}" mail_body_lost_password: 'Para mudar a sua palavra-chave, clique na ligação abaixo:' - mail_subject_register: "Activação de conta de {{value}}" + mail_subject_register: "Activação de conta de %{value}" mail_body_register: 'Para activar a sua conta, clique na ligação abaixo:' - mail_body_account_information_external: "Pode utilizar a conta {{value}} para autenticar-se." + mail_body_account_information_external: "Pode utilizar a conta %{value} para autenticar-se." mail_body_account_information: Informação da sua conta - mail_subject_account_activation_request: "Pedido de activação da conta {{value}}" - mail_body_account_activation_request: "Um novo utilizador ({{value}}) registou-se. A sua conta está à espera de aprovação:" - mail_subject_reminder: "{{count}} tarefa(s) para entregar nos próximos {{days}} dias" - mail_body_reminder: "{{count}} tarefa(s) que estão atribuídas a si estão agendadas para estarem completas nos próximos {{days}} dias:" + mail_subject_account_activation_request: "Pedido de activação da conta %{value}" + mail_body_account_activation_request: "Um novo utilizador (%{value}) registou-se. A sua conta está à espera de aprovação:" + mail_subject_reminder: "%{count} tarefa(s) para entregar nos próximos %{days} dias" + mail_body_reminder: "%{count} tarefa(s) que estão atribuídas a si estão agendadas para estarem completas nos próximos %{days} dias:" gui_validation_error: 1 erro - gui_validation_error_plural: "{{count}} erros" + gui_validation_error_plural: "%{count} erros" field_name: Nome field_description: Descrição @@ -249,6 +249,7 @@ field_attr_lastname: Atributo último nome field_attr_mail: Atributo e-mail field_onthefly: Criação de utilizadores na hora + field_start_date: Início field_done_ratio: % Completo field_auth_source: Modo de autenticação field_hide_mail: Esconder endereço de e-mail @@ -328,14 +329,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Todos os projectos label_project_latest: Últimos projectos label_issue: Tarefa label_issue_new: Nova tarefa label_issue_plural: Tarefas label_issue_view_all: Ver todas as tarefas - label_issues_by: "Tarefas por {{value}}" + label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa actualizada label_document: Documento @@ -392,7 +393,7 @@ label_auth_source_new: Novo modo de autenticação label_auth_source_plural: Modos de autenticação label_subproject_plural: Sub-projectos - label_and_its_subprojects: "{{value}} e sub-projectos" + label_and_its_subprojects: "%{value} e sub-projectos" label_min_max_length: Tamanho mínimo-máximo label_list: Lista label_date: Data @@ -403,8 +404,8 @@ label_text: Texto longo label_attribute: Atributo label_attribute_plural: Atributos - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloads" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" label_no_data: Sem dados para mostrar label_change_status: Mudar estado label_history: Histórico @@ -435,17 +436,17 @@ label_closed_issues: fechado label_closed_issues_plural: fechados label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Total label_permissions: Permissões label_current_status: Estado actual @@ -463,7 +464,7 @@ label_months_from: meses de label_gantt: Gantt label_internal: Interno - label_last_changes: "últimas {{count}} alterações" + label_last_changes: "últimas %{count} alterações" label_change_view_all: Ver todas as alterações label_personalize_page: Personalizar esta página label_comment: Comentário @@ -471,7 +472,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Adicionar comentário label_comment_added: Comentário adicionado label_comment_delete: Apagar comentários @@ -490,7 +491,7 @@ label_yesterday: ontem label_this_week: esta semana label_last_week: semana passada - label_last_n_days: "últimos {{count}} dias" + label_last_n_days: "últimos %{count} dias" label_this_month: este mês label_last_month: mês passado label_this_year: este ano @@ -504,8 +505,8 @@ label_repository: Repositório label_repository_plural: Repositórios label_browse: Navegar - label_modification: "{{count}} alteração" - label_modification_plural: "{{count}} alterações" + label_modification: "%{count} alteração" + label_modification_plural: "%{count} alterações" label_revision: Revisão label_revision_plural: Revisões label_associated_revisions: Revisões associadas @@ -523,8 +524,8 @@ label_sort_lower: Mover para baixo label_sort_lowest: Mover para o fim label_roadmap: Roadmap - label_roadmap_due_in: "Termina em {{value}}" - label_roadmap_overdue: "Atrasado {{value}}" + label_roadmap_due_in: "Termina em %{value}" + label_roadmap_overdue: "Atrasado %{value}" label_roadmap_no_issues: Sem tarefas para esta versão label_search: Procurar label_result_plural: Resultados @@ -542,8 +543,8 @@ label_changes_details: Detalhes de todas as mudanças label_issue_tracking: Tarefas label_spent_time: Tempo gasto - label_f_hour: "{{value}} hora" - label_f_hour_plural: "{{value}} horas" + label_f_hour: "%{value} hora" + label_f_hour_plural: "%{value} horas" label_time_tracking: Registo de tempo label_change_plural: Mudanças label_statistics: Estatísticas @@ -592,12 +593,12 @@ label_date_from: De label_date_to: Para label_language_based: Baseado na língua do utilizador - label_sort_by: "Ordenar por {{value}}" + label_sort_by: "Ordenar por %{value}" label_send_test_email: enviar um e-mail de teste - label_feeds_access_key_created_on: "Chave RSS criada há {{value}} atrás" + label_feeds_access_key_created_on: "Chave RSS criada há %{value} atrás" label_module_plural: Módulos - label_added_time_by: "Adicionado por {{author}} há {{age}} atrás" - label_updated_time: "Alterado há {{value}} atrás" + label_added_time_by: "Adicionado por %{author} há %{age} atrás" + label_updated_time: "Alterado há %{value} atrás" label_jump_to_a_project: Ir para o projecto... label_file_plural: Ficheiros label_changeset_plural: Changesets @@ -613,7 +614,7 @@ label_registration_activation_by_email: Activação da conta por e-mail label_registration_manual_activation: Activação manual da conta label_registration_automatic_activation: Activação automática da conta - label_display_per_page: "Por página: {{value}}" + label_display_per_page: "Por página: %{value}" label_age: Idade label_change_properties: Mudar propriedades label_general: Geral @@ -679,43 +680,43 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 siginifica sem restrição text_project_destroy_confirmation: Tem a certeza que deseja apagar o projecto e todos os dados relacionados? - text_subprojects_destroy_warning: "O(s) seu(s) sub-projecto(s): {{value}} também será/serão apagado(s)." + text_subprojects_destroy_warning: "O(s) seu(s) sub-projecto(s): %{value} também será/serão apagado(s)." text_workflow_edit: Seleccione uma função e um tipo de tarefa para editar o fluxo de trabalho text_are_you_sure: Tem a certeza? text_tip_issue_begin_day: tarefa a começar neste dia text_tip_issue_end_day: tarefa a acabar neste dia text_tip_issue_begin_end_day: tarefa a começar e acabar neste dia text_project_identifier_info: 'Apenas são permitidos letras minúsculas (a-z), números e hífens.
    Uma vez guardado, o identificador não poderá ser alterado.' - text_caracters_maximum: "máximo {{count}} caracteres." - text_caracters_minimum: "Deve ter pelo menos {{count}} caracteres." - text_length_between: "Deve ter entre {{min}} e {{max}} caracteres." + text_caracters_maximum: "máximo %{count} caracteres." + text_caracters_minimum: "Deve ter pelo menos %{count} caracteres." + text_length_between: "Deve ter entre %{min} e %{max} caracteres." text_tracker_no_workflow: Sem fluxo de trabalho definido para este tipo de tarefa. text_unallowed_characters: Caracteres não permitidos text_comma_separated: Permitidos múltiplos valores (separados por vírgula). text_issues_ref_in_commit_messages: Referenciando e fechando tarefas em mensagens de commit - text_issue_added: "Tarefa {{id}} foi criada por {{author}}." - text_issue_updated: "Tarefa {{id}} foi actualizada por {{author}}." + text_issue_added: "Tarefa %{id} foi criada por %{author}." + text_issue_updated: "Tarefa %{id} foi actualizada por %{author}." text_wiki_destroy_confirmation: Tem a certeza que deseja apagar este wiki e todo o seu conteúdo? - text_issue_category_destroy_question: "Algumas tarefas ({{count}}) estão atribuídas a esta categoria. O que quer fazer?" + text_issue_category_destroy_question: "Algumas tarefas (%{count}) estão atribuídas a esta categoria. O que quer fazer?" text_issue_category_destroy_assignments: Remover as atribuições à categoria text_issue_category_reassign_to: Re-atribuir as tarefas para esta categoria text_user_mail_option: "Para projectos não seleccionados, apenas receberá notificações acerca de coisas que está a observar ou está envolvido (ex. tarefas das quais foi o criador ou lhes foram atribuídas)." text_no_configuration_data: "Perfis, tipos de tarefas, estados das tarefas e workflows ainda não foram configurados.\nÉ extremamente recomendado carregar as configurações padrão. Será capaz de as modificar depois de estarem carregadas." text_load_default_configuration: Carregar as configurações padrão - text_status_changed_by_changeset: "Aplicado no changeset {{value}}." + text_status_changed_by_changeset: "Aplicado no changeset %{value}." text_issues_destroy_confirmation: 'Tem a certeza que deseja apagar a(s) tarefa(s) seleccionada(s)?' text_select_project_modules: 'Seleccione os módulos a activar para este projecto:' text_default_administrator_account_changed: Conta default de administrador alterada. text_file_repository_writable: Repositório de ficheiros com permissões de escrita text_rmagick_available: RMagick disponível (opcional) - text_destroy_time_entries_question: "{{hours}} horas de trabalho foram atribuídas a estas tarefas que vai apagar. O que deseja fazer?" + text_destroy_time_entries_question: "%{hours} horas de trabalho foram atribuídas a estas tarefas que vai apagar. O que deseja fazer?" text_destroy_time_entries: Apagar as horas text_assign_time_entries_to_project: Atribuir as horas ao projecto text_reassign_time_entries: 'Re-atribuir as horas para esta tarefa:' - text_user_wrote: "{{value}} escreveu:" - text_enumeration_destroy_question: "{{count}} objectos estão atribuídos a este valor." + text_user_wrote: "%{value} escreveu:" + text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:' - text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/email.yml e reinicie a aplicação para activar estas funcionalidades." + text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para activar estas funcionalidades." default_role_manager: Gestor default_role_developer: Programador @@ -794,12 +795,12 @@ text_repository_usernames_mapping: "Seleccionar ou actualizar o utilizador de Redmine mapeado a cada nome de utilizador encontrado no repositório.\nUtilizadores com o mesmo nome de utilizador ou email no Redmine e no repositório são mapeados automaticamente." permission_edit_own_messages: Editar as próprias mensagens permission_delete_own_messages: Apagar as próprias mensagens - label_user_activity: "Actividade de {{value}}" - label_updated_time_by: "Actualizado por {{author}} há {{age}}" + label_user_activity: "Actividade de %{value}" + label_updated_time_by: "Actualizado por %{author} há %{age}" text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser mostrado.' setting_diff_max_lines_displayed: Número máximo de linhas de diff mostradas text_plugin_assets_writable: Escrita na pasta de activos dos módulos de extensão possível - warning_attachments_not_saved: "Não foi possível gravar {{count}} ficheiro(s) ." + warning_attachments_not_saved: "Não foi possível gravar %{count} ficheiro(s) ." button_create_and_continue: Criar e continuar text_custom_field_possible_values_info: 'Uma linha para cada valor' label_display: Mostrar @@ -814,21 +815,21 @@ label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente - label_date_from_to: De {{start}} a {{end}} + label_date_from_to: De %{start} a %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Esta página tem {{descendants}} página(s) subordinada(s) e descendente(s). O que deseja fazer? + text_wiki_page_destroy_question: Esta página tem %{descendants} página(s) subordinada(s) e descendente(s). O que deseja fazer? text_wiki_page_reassign_children: Reatribuir páginas subordinadas a esta página principal text_wiki_page_nullify_children: Manter páginas subordinadas como páginas raíz text_wiki_page_destroy_children: Apagar as páginas subordinadas e todos os seus descendentes setting_password_min_length: Tamanho mínimo de palavra-chave field_group_by: Agrupar resultados por - mail_subject_wiki_content_updated: "A página Wiki '{{id}}' foi actualizada" + mail_subject_wiki_content_updated: "A página Wiki '%{id}' foi actualizada" label_wiki_content_added: Página Wiki adicionada - mail_subject_wiki_content_added: "A página Wiki '{{id}}' foi adicionada" - mail_body_wiki_content_added: A página Wiki '{{id}}' foi adicionada por {{author}}. + mail_subject_wiki_content_added: "A página Wiki '%{id}' foi adicionada" + mail_body_wiki_content_added: A página Wiki '%{id}' foi adicionada por %{author}. label_wiki_content_updated: Página Wiki actualizada - mail_body_wiki_content_updated: A página Wiki '{{id}}' foi actualizada por {{author}}. + mail_body_wiki_content_updated: A página Wiki '%{id}' foi actualizada por %{author}. permission_add_project: Criar projecto setting_new_project_user_role_id: Função atribuída a um utilizador não-administrador que cria um projecto label_view_all_revisions: Ver todas as revisões @@ -840,10 +841,10 @@ label_group: Grupo label_group_new: Novo grupo label_time_entry_plural: Tempo registado - text_journal_changed: "{{label}} alterado de {{old}} para {{new}}" - text_journal_set_to: "{{label}} configurado como {{value}}" - text_journal_deleted: "{{label}} apagou ({{old}})" - text_journal_added: "{{label}} {{value}} adicionado" + text_journal_changed: "%{label} alterado de %{old} para %{new}" + text_journal_set_to: "%{label} configurado como %{value}" + text_journal_deleted: "%{label} apagou (%{old})" + text_journal_added: "%{label} %{value} adicionado" field_active: Activo enumeration_system_activity: Actividade de sistema permission_delete_issue_watchers: Apagar observadores @@ -878,9 +879,9 @@ setting_start_of_week: Iniciar calendários a permission_view_issues: Ver tarefas label_display_used_statuses_only: Só exibir estados empregues por este tipo de tarefa - label_revision_id: Revisão {{value}} + label_revision_id: Revisão %{value} label_api_access_key: Chave de acesso API - label_api_access_key_created_on: Chave de acesso API criada há {{value}} + label_api_access_key_created_on: Chave de acesso API criada há %{value} label_feeds_access_key: Chave de acesso RSS notice_api_access_key_reseted: A sua chave de acesso API foi reinicializada. setting_rest_api_enabled: Activar serviço Web REST @@ -907,12 +908,12 @@ label_subtask_plural: Sub-tarefa label_project_copy_notifications: Enviar notificações por e-mail durante a cópia do projecto error_can_not_delete_custom_field: Não foi possível apagar o campo personalizado - error_unable_to_connect: Não foi possível ligar ({{value}}) + error_unable_to_connect: Não foi possível ligar (%{value}) error_can_not_remove_role: Esta função está actualmente em uso e não pode ser apagada. error_can_not_delete_tracker: Existem ainda tarefas nesta categoria. Não é possível apagar este tipo de tarefa. field_principal: Principal label_my_page_block: Bloco da minha página - notice_failed_to_save_members: "Erro ao guardar o(s) membro(s): {{errors}}." + notice_failed_to_save_members: "Erro ao guardar o(s) membro(s): %{errors}." text_zoom_out: Ampliar text_zoom_in: Reduzir notice_unable_delete_time_entry: Não foi possível apagar a entrada de tempo registado. @@ -920,7 +921,7 @@ field_time_entries: Tempo registado project_module_gantt: Gantt project_module_calendar: Calendário - button_edit_associated_wikipage: "Editar página Wiki associada: {{page_title}}" + 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 @@ -931,8 +932,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/ro.yml --- a/config/locales/ro.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/ro.yml Thu Mar 03 12:11:53 2011 +0000 @@ -30,37 +30,37 @@ half_a_minute: "jumătate de minut" less_than_x_seconds: one: "mai puțin de o secundă" - other: "mai puțin de {{count}} secunde" + other: "mai puțin de %{count} secunde" x_seconds: one: "o secundă" - other: "{{count}} secunde" + other: "%{count} secunde" less_than_x_minutes: one: "mai puțin de un minut" - other: "mai puțin de {{count}} minute" + other: "mai puțin de %{count} minute" x_minutes: one: "un minut" - other: "{{count}} minute" + other: "%{count} minute" about_x_hours: one: "aproximativ o oră" - other: "aproximativ {{count}} ore" + other: "aproximativ %{count} ore" x_days: one: "o zi" - other: "{{count}} zile" + other: "%{count} zile" about_x_months: one: "aproximativ o lună" - other: "aproximativ {{count}} luni" + other: "aproximativ %{count} luni" x_months: one: "o luna" - other: "{{count}} luni" + other: "%{count} luni" about_x_years: one: "aproximativ un an" - other: "aproximativ {{count}} ani" + other: "aproximativ %{count} ani" over_x_years: one: "peste un an" - other: "peste {{count}} ani" + other: "peste %{count} ani" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: human: @@ -86,6 +86,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nu este inclus în listă" exclusion: "este rezervat" @@ -100,11 +104,11 @@ taken: "a fost luat deja" not_a_number: "nu este un număr" not_a_date: "nu este o dată validă" - greater_than: "trebuie să fie mai mare de {{count}}" - greater_than_or_equal_to: "trebuie să fie mai mare sau egal cu {{count}}" + greater_than: "trebuie să fie mai mare de %{count}" + greater_than_or_equal_to: "trebuie să fie mai mare sau egal cu %{count}" equal_to: "trebuie să fie egal cu {count}}" - less_than: "trebuie să fie mai mic decat {{count}}" - less_than_or_equal_to: "trebuie să fie mai mic sau egal cu {{count}}" + less_than: "trebuie să fie mai mic decat %{count}" + less_than_or_equal_to: "trebuie să fie mai mic sau egal cu %{count}" odd: "trebuie să fie impar" even: "trebuie să fie par" greater_than_start_date: "trebuie să fie după data de început" @@ -141,36 +145,36 @@ notice_file_not_found: Pagina pe care doriți să o accesați nu există sau a fost ștearsă. notice_locking_conflict: Datele au fost actualizate de alt utilizator. notice_not_authorized: Nu sunteți autorizat sa accesați această pagină. - notice_email_sent: "S-a trimis un email către {{value}}" - notice_email_error: "A intervenit o eroare la trimiterea de email ({{value}})" + notice_email_sent: "S-a trimis un email către %{value}" + notice_email_error: "A intervenit o eroare la trimiterea de email (%{value})" notice_feeds_access_key_reseted: Cheia de acces RSS a fost resetată. - notice_failed_to_save_issues: "Nu s-au putut salva {{count}} tichete din cele {{total}} selectate: {{ids}}." + notice_failed_to_save_issues: "Nu s-au putut salva %{count} tichete din cele %{total} selectate: %{ids}." notice_no_issue_selected: "Niciun tichet selectat! Vă rugăm să selectați tichetele pe care doriți să le editați." notice_account_pending: "Contul dumneavoastră a fost creat și așteaptă aprobarea administratorului." notice_default_data_loaded: S-a încărcat configurația implicită. notice_unable_delete_version: Nu se poate șterge versiunea. - error_can_t_load_default_data: "Nu s-a putut încărca configurația implicită: {{value}}" + error_can_t_load_default_data: "Nu s-a putut încărca configurația implicită: %{value}" error_scm_not_found: "Nu s-a găsit articolul sau revizia în depozit." - error_scm_command_failed: "A intervenit o eroare la accesarea depozitului: {{value}}" + error_scm_command_failed: "A intervenit o eroare la accesarea depozitului: %{value}" error_scm_annotate: "Nu există sau nu poate fi adnotată." error_issue_not_found_in_project: 'Tichetul nu a fost găsit sau nu aparține acestui proiect' - warning_attachments_not_saved: "Nu s-au putut salva {{count}} fișiere." + warning_attachments_not_saved: "Nu s-au putut salva %{count} fișiere." - mail_subject_lost_password: "Parola dumneavoastră: {{value}}" + mail_subject_lost_password: "Parola dumneavoastră: %{value}" mail_body_lost_password: 'Pentru a schimba parola, accesați:' - mail_subject_register: "Activarea contului {{value}}" + mail_subject_register: "Activarea contului %{value}" mail_body_register: 'Pentru activarea contului, accesați:' mail_body_account_information_external: "Puteți folosi contul „{value}}†pentru a vă autentifica." mail_body_account_information: Informații despre contul dumneavoastră - mail_subject_account_activation_request: "Cerere de activare a contului {{value}}" - mail_body_account_activation_request: "S-a înregistrat un utilizator nou ({{value}}). Contul așteaptă aprobarea dumneavoastră:" - mail_subject_reminder: "{{count}} tichete trebuie rezolvate în următoarele {{days}} zile" - mail_body_reminder: "{{count}} tichete atribuite dumneavoastră trebuie rezolvate în următoarele {{days}} zile:" + mail_subject_account_activation_request: "Cerere de activare a contului %{value}" + mail_body_account_activation_request: "S-a înregistrat un utilizator nou (%{value}). Contul așteaptă aprobarea dumneavoastră:" + mail_subject_reminder: "%{count} tichete trebuie rezolvate în următoarele %{days} zile" + mail_body_reminder: "%{count} tichete atribuite dumneavoastră trebuie rezolvate în următoarele %{days} zile:" gui_validation_error: o eroare - gui_validation_error_plural: "{{count}} erori" + gui_validation_error_plural: "%{count} erori" field_name: Nume field_description: Descriere @@ -232,6 +236,7 @@ field_attr_lastname: Atribut nume field_attr_mail: Atribut email field_onthefly: Creare utilizator pe loc + field_start_date: Data începerii field_done_ratio: Realizat (%) field_auth_source: Mod autentificare field_hide_mail: Nu se afișează adresa de email @@ -370,14 +375,14 @@ label_x_projects: zero: niciun proiect one: un proiect - other: "{{count}} proiecte" + other: "%{count} proiecte" label_project_all: Toate proiectele label_project_latest: Proiecte noi label_issue: Tichet label_issue_new: Tichet nou label_issue_plural: Tichete label_issue_view_all: Afișează toate tichetele - label_issues_by: "Sortează după {{value}}" + label_issues_by: "Sortează după %{value}" label_issue_added: Adaugat label_issue_updated: Actualizat label_document: Document @@ -427,7 +432,7 @@ label_registered_on: Înregistrat la label_activity: Activitate label_overall_activity: Activitate - vedere de ansamblu - label_user_activity: "Activitate {{value}}" + label_user_activity: "Activitate %{value}" label_new: Nou label_logged_as: Autentificat ca label_environment: Mediu @@ -436,7 +441,7 @@ label_auth_source_new: Nou label_auth_source_plural: Moduri de autentificare label_subproject_plural: Sub-proiecte - label_and_its_subprojects: "{{value}} și sub-proiecte" + label_and_its_subprojects: "%{value} și sub-proiecte" label_min_max_length: lungime min - max label_list: Listă label_date: Dată @@ -447,8 +452,8 @@ label_text: Text lung label_attribute: Atribut label_attribute_plural: Atribute - label_download: "{{count}} descărcare" - label_download_plural: "{{count}} descărcări" + label_download: "%{count} descărcare" + label_download_plural: "%{count} descărcări" label_no_data: Nu există date de afișat label_change_status: Schimbă starea label_history: Istoric @@ -479,17 +484,17 @@ label_closed_issues: închis label_closed_issues_plural: închise label_x_open_issues_abbr_on_total: - zero: 0 deschise / {{total}} - one: 1 deschis / {{total}} - other: "{{count}} deschise / {{total}}" + zero: 0 deschise / %{total} + one: 1 deschis / %{total} + other: "%{count} deschise / %{total}" label_x_open_issues_abbr: zero: 0 deschise one: 1 deschis - other: "{{count}} deschise" + other: "%{count} deschise" label_x_closed_issues_abbr: zero: 0 închise one: 1 închis - other: "{{count}} închise" + other: "%{count} închise" label_total: Total label_permissions: Permisiuni label_current_status: Stare curentă @@ -507,7 +512,7 @@ label_months_from: luni de la label_gantt: Gantt label_internal: Intern - label_last_changes: "ultimele {{count}} schimbări" + label_last_changes: "ultimele %{count} schimbări" label_change_view_all: Afișează toate schimbările label_personalize_page: Personalizează aceasta pagina label_comment: Comentariu @@ -515,7 +520,7 @@ label_x_comments: zero: fara comentarii one: 1 comentariu - other: "{{count}} comentarii" + other: "%{count} comentarii" label_comment_add: Adaugă un comentariu label_comment_added: Adăugat label_comment_delete: Șterge comentariul @@ -534,7 +539,7 @@ label_yesterday: ieri label_this_week: săptămâna aceasta label_last_week: săptămâna trecută - label_last_n_days: "ultimele {{count}} zile" + label_last_n_days: "ultimele %{count} zile" label_this_month: luna aceasta label_last_month: luna trecută label_this_year: anul acesta @@ -548,8 +553,8 @@ label_repository: Depozit label_repository_plural: Depozite label_browse: Afișează - label_modification: "{{count}} schimbare" - label_modification_plural: "{{count}} schimbări" + label_modification: "%{count} schimbare" + label_modification_plural: "%{count} schimbări" label_revision: Revizie label_revision_plural: Revizii label_associated_revisions: Revizii asociate @@ -567,8 +572,8 @@ label_sort_lower: În jos label_sort_lowest: Ultima label_roadmap: Planificare - label_roadmap_due_in: "De terminat în {{value}}" - label_roadmap_overdue: "Întârziat cu {{value}}" + label_roadmap_due_in: "De terminat în %{value}" + label_roadmap_overdue: "Întârziat cu %{value}" label_roadmap_no_issues: Nu există tichete pentru această versiune label_search: Caută label_result_plural: Rezultate @@ -586,8 +591,8 @@ label_changes_details: Detaliile tuturor schimbărilor label_issue_tracking: Urmărire tichete label_spent_time: Timp alocat - label_f_hour: "{{value}} oră" - label_f_hour_plural: "{{value}} ore" + label_f_hour: "%{value} oră" + label_f_hour_plural: "%{value} ore" label_time_tracking: Urmărire timp de lucru label_change_plural: Schimbări label_statistics: Statistici @@ -636,13 +641,13 @@ label_date_from: De la label_date_to: La label_language_based: Un funcție de limba de afișare a utilizatorului - label_sort_by: "Sortează după {{value}}" + label_sort_by: "Sortează după %{value}" label_send_test_email: Trimite email de test - label_feeds_access_key_created_on: "Cheie de acces creată acum {{value}}" + label_feeds_access_key_created_on: "Cheie de acces creată acum %{value}" label_module_plural: Module - label_added_time_by: "Adăugat de {{author}} acum {{age}}" - label_updated_time_by: "Actualizat de {{author}} acum {{age}}" - label_updated_time: "Actualizat acum {{value}}" + label_added_time_by: "Adăugat de %{author} acum %{age}" + label_updated_time_by: "Actualizat de %{author} acum %{age}" + label_updated_time: "Actualizat acum %{value}" label_jump_to_a_project: Alege proiectul... label_file_plural: Fișiere label_changeset_plural: Schimbări @@ -658,7 +663,7 @@ label_registration_activation_by_email: activare cont prin email label_registration_manual_activation: activare manuală a contului label_registration_automatic_activation: activare automată a contului - label_display_per_page: "pe pagină: {{value}}" + label_display_per_page: "pe pagină: %{value}" label_age: vechime label_change_properties: Schimbă proprietățile label_general: General @@ -682,7 +687,7 @@ label_sort: Sortează label_ascending: Crescător label_descending: Descrescător - label_date_from_to: De la {{start}} la {{end}} + label_date_from_to: De la %{start} la %{end} button_login: Autentificare @@ -733,44 +738,44 @@ text_regexp_info: ex. ^[A-Z0-9]+$ text_min_max_length_info: 0 înseamnă fără restricții text_project_destroy_confirmation: Sigur doriți să ștergeți proiectul și toate datele asociate? - text_subprojects_destroy_warning: "Se vor șterge și sub-proiectele: {{value}}." + text_subprojects_destroy_warning: "Se vor șterge și sub-proiectele: %{value}." text_workflow_edit: Selectați un rol și un tip de tichet pentru a edita modul de lucru text_are_you_sure: Sunteți sigur(ă)? text_tip_issue_begin_day: sarcină care începe în această zi text_tip_issue_end_day: sarcină care se termină în această zi text_tip_issue_begin_end_day: sarcină care începe și se termină în această zi text_project_identifier_info: 'Sunt permise doar litere mici (a-z), numere și cratime.
    Odată salvat, identificatorul nu mai poate fi modificat.' - text_caracters_maximum: "maxim {{count}} caractere." - text_caracters_minimum: "Trebuie să fie minim {{count}} caractere." - text_length_between: "Lungime între {{min}} È™i {{max}} caractere." + text_caracters_maximum: "maxim %{count} caractere." + text_caracters_minimum: "Trebuie să fie minim %{count} caractere." + text_length_between: "Lungime între %{min} È™i %{max} caractere." text_tracker_no_workflow: Nu sunt moduri de lucru pentru acest tip de tichet text_unallowed_characters: Caractere nepermise text_comma_separated: Sunt permise mai multe valori (separate cu virgulă). text_issues_ref_in_commit_messages: Referire la tichete È™i rezolvare în textul mesajului - text_issue_added: "Tichetul {{id}} a fost adăugat de {{author}}." - text_issue_updated: "Tichetul {{id}} a fost actualizat de {{author}}." + text_issue_added: "Tichetul %{id} a fost adăugat de %{author}." + text_issue_updated: "Tichetul %{id} a fost actualizat de %{author}." text_wiki_destroy_confirmation: Sigur doriÈ›i È™tergerea Wiki È™i a conÈ›inutului asociat? - text_issue_category_destroy_question: "Această categorie conÈ›ine ({{count}}) tichete. Ce doriÈ›i să faceÈ›i?" + text_issue_category_destroy_question: "Această categorie conÈ›ine (%{count}) tichete. Ce doriÈ›i să faceÈ›i?" text_issue_category_destroy_assignments: Șterge apartenenÈ›a la categorie. text_issue_category_reassign_to: Atribuie tichetele la această categorie text_user_mail_option: "Pentru proiectele care nu sunt selectate, veÈ›i primi notificări doar pentru ceea ce urmăriÈ›i sau în ce sunteÈ›i implicat (ex: tichete create de dumneavoastră sau care vă sunt atribuite)." text_no_configuration_data: "Nu s-au configurat încă rolurile, stările tichetelor È™i modurile de lucru.\nEste recomandat să încărcaÈ›i configuraÈ›ia implicită. O veÈ›i putea modifica ulterior." text_load_default_configuration: ÃŽncarcă configuraÈ›ia implicită - text_status_changed_by_changeset: "Aplicat în setul {{value}}." + text_status_changed_by_changeset: "Aplicat în setul %{value}." text_issues_destroy_confirmation: 'Sigur doriÈ›i să È™tergeÈ›i tichetele selectate?' text_select_project_modules: 'SelectaÈ›i modulele active pentru acest proiect:' text_default_administrator_account_changed: S-a schimbat contul administratorului implicit text_file_repository_writable: Se poate scrie în directorul de ataÈ™amente text_plugin_assets_writable: Se poate scrie în directorul de plugin-uri text_rmagick_available: Este disponibil RMagick (opÈ›ional) - text_destroy_time_entries_question: "{{hours}} ore sunt înregistrate la tichetele pe care doriÈ›i să le È™tergeÈ›i. Ce doriÈ›i sa faceÈ›i?" + text_destroy_time_entries_question: "%{hours} ore sunt înregistrate la tichetele pe care doriÈ›i să le È™tergeÈ›i. Ce doriÈ›i sa faceÈ›i?" text_destroy_time_entries: Șterge orele înregistrate text_assign_time_entries_to_project: Atribuie orele la proiect text_reassign_time_entries: 'Atribuie orele înregistrate la tichetul:' - text_user_wrote: "{{value}} a scris:" - text_enumeration_destroy_question: "Această valoare are {{count}} obiecte." + text_user_wrote: "%{value} a scris:" + text_enumeration_destroy_question: "Această valoare are %{count} obiecte." text_enumeration_category_reassign_to: 'Atribuie la această valoare:' - text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/email.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." + text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/configuration.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." text_repository_usernames_mapping: "SelectaÈ›i sau modificaÈ›i contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine È™i depozit sunt echivalate automat." text_diff_truncated: '... ComparaÈ›ia a fost trunchiată pentru ca depășeÈ™te lungimea maximă de text care poate fi afiÈ™at.' text_custom_field_possible_values_info: 'O linie pentru fiecare valoare' @@ -802,18 +807,18 @@ enumeration_activities: Activități (timp de lucru) label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Această pagină are {{descendants}} pagini anterioare È™i descendenÈ›i. Ce doriÈ›i să faceÈ›i? + text_wiki_page_destroy_question: Această pagină are %{descendants} pagini anterioare È™i descendenÈ›i. Ce doriÈ›i să faceÈ›i? text_wiki_page_reassign_children: Atribuie paginile la această pagină text_wiki_page_nullify_children: MenÈ›ine paginile ca È™i pagini iniÈ›iale (root) text_wiki_page_destroy_children: Șterge paginile È™i descendenÈ›ii setting_password_min_length: Lungime minimă parolă field_group_by: Grupează după - mail_subject_wiki_content_updated: "Pagina wiki '{{id}}' a fost actualizată" + mail_subject_wiki_content_updated: "Pagina wiki '%{id}' a fost actualizată" label_wiki_content_added: Adăugat - mail_subject_wiki_content_added: "Pagina wiki '{{id}}' a fost adăugată" - mail_body_wiki_content_added: Pagina wiki '{{id}}' a fost adăugată de {{author}}. + mail_subject_wiki_content_added: "Pagina wiki '%{id}' a fost adăugată" + mail_body_wiki_content_added: Pagina wiki '%{id}' a fost adăugată de %{author}. label_wiki_content_updated: Actualizat - mail_body_wiki_content_updated: Pagina wiki '{{id}}' a fost actualizată de {{author}}. + mail_body_wiki_content_updated: Pagina wiki '%{id}' a fost actualizată de %{author}. permission_add_project: Crează proiect setting_new_project_user_role_id: Rol atribuit utilizatorului non-admin care crează un proiect. label_view_all_revisions: Arată toate reviziile @@ -821,14 +826,14 @@ label_branch: Branch error_no_tracker_in_project: Nu există un tracker asociat cu proiectul. VerificaÈ›i vă rog setările proiectului. error_no_default_issue_status: Nu există un status implicit al tichetelor. VerificaÈ›i vă rog configuraÈ›ia (MergeÈ›i la "Administrare -> Stări tichete"). - text_journal_changed: "{{label}} schimbat din {{old}} în {{new}}" - text_journal_set_to: "{{label}} setat ca {{value}}" - text_journal_deleted: "{{label}} È™ters ({{old}})" + text_journal_changed: "%{label} schimbat din %{old} în %{new}" + text_journal_set_to: "%{label} setat ca %{value}" + text_journal_deleted: "%{label} È™ters (%{old})" label_group_plural: Grupuri label_group: Grup label_group_new: Grup nou label_time_entry_plural: Timp alocat - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -863,9 +868,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -892,12 +897,12 @@ 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_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}}." + 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. @@ -905,7 +910,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -916,8 +921,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/ru.yml --- a/config/locales/ru.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/ru.yml Thu Mar 03 12:11:53 2011 +0000 @@ -89,60 +89,60 @@ distance_in_words: half_a_minute: "меньше минуты" less_than_x_seconds: - one: "меньше {{count}} Ñекунды" - few: "меньше {{count}} Ñекунд" - many: "меньше {{count}} Ñекунд" - other: "меньше {{count}} Ñекунды" + one: "меньше %{count} Ñекунды" + few: "меньше %{count} Ñекунд" + many: "меньше %{count} Ñекунд" + other: "меньше %{count} Ñекунды" x_seconds: - one: "{{count}} Ñекунда" - few: "{{count}} Ñекунды" - many: "{{count}} Ñекунд" - other: "{{count}} Ñекунды" + one: "%{count} Ñекунда" + few: "%{count} Ñекунды" + many: "%{count} Ñекунд" + other: "%{count} Ñекунды" less_than_x_minutes: - one: "меньше {{count}} минуты" - few: "меньше {{count}} минут" - many: "меньше {{count}} минут" - other: "меньше {{count}} минуты" + one: "меньше %{count} минуты" + few: "меньше %{count} минут" + many: "меньше %{count} минут" + other: "меньше %{count} минуты" x_minutes: - one: "{{count}} минуту" - few: "{{count}} минуты" - many: "{{count}} минут" - other: "{{count}} минуты" + one: "%{count} минуту" + few: "%{count} минуты" + many: "%{count} минут" + other: "%{count} минуты" about_x_hours: - one: "около {{count}} чаÑа" - few: "около {{count}} чаÑов" - many: "около {{count}} чаÑов" - other: "около {{count}} чаÑа" + one: "около %{count} чаÑа" + few: "около %{count} чаÑов" + many: "около %{count} чаÑов" + other: "около %{count} чаÑа" x_days: - one: "{{count}} день" - few: "{{count}} днÑ" - many: "{{count}} дней" - other: "{{count}} днÑ" + one: "%{count} день" + few: "%{count} днÑ" + many: "%{count} дней" + other: "%{count} днÑ" about_x_months: - one: "около {{count}} меÑÑца" - few: "около {{count}} меÑÑцев" - many: "около {{count}} меÑÑцев" - other: "около {{count}} меÑÑца" + one: "около %{count} меÑÑца" + few: "около %{count} меÑÑцев" + many: "около %{count} меÑÑцев" + other: "около %{count} меÑÑца" x_months: - one: "{{count}} меÑÑц" - few: "{{count}} меÑÑца" - many: "{{count}} меÑÑцев" - other: "{{count}} меÑÑца" + one: "%{count} меÑÑц" + few: "%{count} меÑÑца" + many: "%{count} меÑÑцев" + other: "%{count} меÑÑца" about_x_years: - one: "около {{count}} года" - few: "около {{count}} лет" - many: "около {{count}} лет" - other: "около {{count}} лет" + one: "около %{count} года" + few: "около %{count} лет" + many: "около %{count} лет" + other: "около %{count} лет" over_x_years: - one: "больше {{count}} года" - few: "больше {{count}} лет" - many: "больше {{count}} лет" - other: "больше {{count}} лет" + one: "больше %{count} года" + few: "больше %{count} лет" + many: "больше %{count} лет" + other: "больше %{count} лет" almost_x_years: one: "почти 1 год" - few: "почти {{count}} года" - many: "почти {{count}} лет" - other: "почти {{count}} года" + few: "почти %{count} года" + many: "почти %{count} лет" + other: "почти %{count} года" prompts: year: "Год" month: "МеÑÑц" @@ -155,10 +155,10 @@ errors: template: header: - one: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибки" - few: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибок" - many: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибок" - other: "{{model}}: Ñохранение не удалоÑÑŒ из-за {{count}} ошибки" + one: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибки" + few: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибок" + many: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибок" + other: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибки" body: "Проблемы возникли Ñо Ñледующими полÑми:" @@ -171,27 +171,27 @@ empty: "не может быть пуÑтым" blank: "не может быть пуÑтым" too_long: - one: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимвол)" - few: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимвола)" - many: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимволов)" - other: "Ñлишком большой длины (не может быть больше чем {{count}} Ñимвола)" + one: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвол)" + few: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвола)" + many: "Ñлишком большой длины (не может быть больше чем %{count} Ñимволов)" + other: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвола)" too_short: - one: "недоÑтаточной длины (не может быть меньше {{count}} Ñимвола)" - few: "недоÑтаточной длины (не может быть меньше {{count}} Ñимволов)" - many: "недоÑтаточной длины (не может быть меньше {{count}} Ñимволов)" - other: "недоÑтаточной длины (не может быть меньше {{count}} Ñимвола)" + one: "недоÑтаточной длины (не может быть меньше %{count} Ñимвола)" + few: "недоÑтаточной длины (не может быть меньше %{count} Ñимволов)" + many: "недоÑтаточной длины (не может быть меньше %{count} Ñимволов)" + other: "недоÑтаточной длины (не может быть меньше %{count} Ñимвола)" wrong_length: - one: "неверной длины (может быть длиной ровно {{count}} Ñимвол)" - few: "неверной длины (может быть длиной ровно {{count}} Ñимвола)" - many: "неверной длины (может быть длиной ровно {{count}} Ñимволов)" - other: "неверной длины (может быть длиной ровно {{count}} Ñимвола)" + one: "неверной длины (может быть длиной ровно %{count} Ñимвол)" + few: "неверной длины (может быть длиной ровно %{count} Ñимвола)" + many: "неверной длины (может быть длиной ровно %{count} Ñимволов)" + other: "неверной длины (может быть длиной ровно %{count} Ñимвола)" taken: "уже ÑущеÑтвует" not_a_number: "не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом" - greater_than: "может иметь значение большее {{count}}" - greater_than_or_equal_to: "может иметь значение большее или равное {{count}}" - equal_to: "может иметь лишь значение, равное {{count}}" - less_than: "может иметь значение меньшее чем {{count}}" - less_than_or_equal_to: "может иметь значение меньшее или равное {{count}}" + 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: "должна быть позднее даты начала" @@ -230,7 +230,7 @@ button_delete: Удалить button_download: Загрузить button_edit: Редактировать - button_edit_associated_wikipage: "Редактировать ÑвÑзанную wiki-Ñтраницу: {{page_title}}" + button_edit_associated_wikipage: "Редактировать ÑвÑзанную wiki-Ñтраницу: %{page_title}" button_list: СпиÑок button_lock: Заблокировать button_login: Вход @@ -282,12 +282,12 @@ error_can_not_remove_role: Эта роль иÑпользуетÑÑ Ð¸ не может быть удалена. error_can_not_delete_custom_field: Ðевозможно удалить наÑтраиваемое поле error_can_not_delete_tracker: Этот трекер Ñодержит задачи и не может быть удален. - error_can_t_load_default_data: "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию не была загружена: {{value}}" + error_can_t_load_default_data: "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию не была загружена: %{value}" error_issue_not_found_in_project: Задача не была найдена или не прикреплена к Ñтому проекту error_scm_annotate: "Данные отÑутÑтвуют или не могут быть подпиÑаны." - error_scm_command_failed: "Ошибка доÑтупа к хранилищу: {{value}}" + error_scm_command_failed: "Ошибка доÑтупа к хранилищу: %{value}" error_scm_not_found: Хранилище не Ñодержит запиÑи и/или иÑправлениÑ. - error_unable_to_connect: Ðевозможно подключитьÑÑ ({{value}}) + error_unable_to_connect: Ðевозможно подключитьÑÑ (%{value}) error_unable_delete_issue_status: Ðевозможно удалить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ field_account: Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ @@ -313,7 +313,6 @@ field_description: ОпиÑание field_done_ratio: ГотовноÑть в % field_downloads: Загрузки - field_start_date: Дата начала field_due_date: Дата Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ field_editable: Редактируемый field_effective_date: Дата @@ -364,6 +363,7 @@ field_role: Роль field_searchable: ДоÑтупно Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка field_spent_on: Дата + field_start_date: Ðачата field_start_page: Ð¡Ñ‚Ð°Ñ€Ñ‚Ð¾Ð²Ð°Ñ Ñтраница field_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ field_subject: Тема @@ -382,9 +382,9 @@ field_version: ВерÑÐ¸Ñ field_watcher: Ðаблюдатель - 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: 'Russian (РуÑÑкий)' general_pdf_encoding: UTF-8 @@ -394,13 +394,13 @@ general_text_Yes: 'Да' gui_validation_error: 1 ошибка - gui_validation_error_plural: "{{count}} ошибок" - gui_validation_error_plural2: "{{count}} ошибки" - gui_validation_error_plural5: "{{count}} ошибок" + gui_validation_error_plural: "%{count} ошибок" + gui_validation_error_plural2: "%{count} ошибки" + gui_validation_error_plural5: "%{count} ошибок" label_activity: ÐктивноÑть label_add_another_file: Добавить ещё один файл - label_added_time_by: "Добавил(а) {{author}} {{age}} назад" + label_added_time_by: "Добавил(а) %{author} %{age} назад" label_added: добавлено label_add_note: Добавить замечание label_administration: ÐдминиÑтрирование @@ -409,7 +409,7 @@ label_all_time: вÑÑ‘ Ð²Ñ€ÐµÐ¼Ñ label_all_words: Ð’Ñе Ñлова label_all: вÑе - label_and_its_subprojects: "{{value}} и вÑе подпроекты" + label_and_its_subprojects: "%{value} и вÑе подпроекты" label_applied_status: Применимый ÑÑ‚Ð°Ñ‚ÑƒÑ label_ascending: По возраÑтанию label_assigned_to_me_issues: Мои задачи @@ -465,7 +465,7 @@ label_custom_field_new: Ðовое наÑтраиваемое поле label_custom_field_plural: ÐаÑтраиваемые Ð¿Ð¾Ð»Ñ label_date_from: С - label_date_from_to: С {{start}} по {{end}} + label_date_from_to: С %{start} по %{end} label_date_range: временной интервал label_date_to: по label_date: Дата @@ -479,15 +479,15 @@ label_diff_side_by_side: Ñ€Ñдом label_disabled: отключено label_display: Отображение - label_display_per_page: "Ðа Ñтраницу: {{value}}" + label_display_per_page: "Ðа Ñтраницу: %{value}" label_document: Документ label_document_added: Добавлен документ label_document_new: Ðовый документ label_document_plural: Документы - label_download: "{{count}} загрузка" - label_download_plural: "{{count}} Ñкачиваний" - label_download_plural2: "{{count}} загрузки" - label_download_plural5: "{{count}} загрузок" + label_download: "%{count} загрузка" + label_download_plural: "%{count} Ñкачиваний" + label_download_plural2: "%{count} загрузки" + label_download_plural5: "%{count} загрузок" label_downloads_abbr: Скачиваний label_duplicated_by: дублируетÑÑ label_duplicates: дублирует @@ -500,9 +500,9 @@ label_example: Пример label_export_to: ЭкÑпортировать в label_feed_plural: RSS - label_feeds_access_key_created_on: "Ключ доÑтупа RSS Ñоздан {{value}} назад" - label_f_hour: "{{value}} чаÑ" - label_f_hour_plural: "{{value}} чаÑов" + label_feeds_access_key_created_on: "Ключ доÑтупа RSS Ñоздан %{value} назад" + label_f_hour: "%{value} чаÑ" + label_f_hour_plural: "%{value} чаÑов" label_file_added: Добавлен файл label_file_plural: Файлы label_filter_add: Добавить фильтр @@ -534,7 +534,7 @@ label_issue_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸ label_issue_new: ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° label_issue_plural: Задачи - label_issues_by: "Сортировать по {{value}}" + label_issues_by: "Сортировать по %{value}" label_issue_status_new: Ðовый ÑÑ‚Ð°Ñ‚ÑƒÑ label_issue_status_plural: СтатуÑÑ‹ задачи label_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ @@ -544,10 +544,10 @@ label_issue_watchers: Ðаблюдатели label_jump_to_a_project: Перейти к проекту... label_language_based: Ðа оÑнове Ñзыка - label_last_changes: "менее {{count}} изменений" + label_last_changes: "менее %{count} изменений" label_last_login: ПоÑледнее подключение label_last_month: поÑледний меÑÑц - label_last_n_days: "поÑледние {{count}} дней" + label_last_n_days: "поÑледние %{count} дней" label_last_week: поÑледнÑÑ Ð½ÐµÐ´ÐµÐ»ÑŽ label_latest_revision: ПоÑледнÑÑ Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ label_latest_revision_plural: ПоÑледние редакции @@ -570,10 +570,10 @@ label_message_posted: Добавлено Ñообщение label_me: мне label_min_max_length: ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ - макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° - label_modification: "{{count}} изменение" - label_modification_plural: "{{count}} изменений" - label_modification_plural2: "{{count}} изменениÑ" - label_modification_plural5: "{{count}} изменений" + label_modification: "%{count} изменение" + label_modification_plural: "%{count} изменений" + label_modification_plural2: "%{count} изменениÑ" + label_modification_plural5: "%{count} изменений" label_modified: изменено label_module_plural: Модули label_months_from: меÑÑцев(ца) Ñ @@ -654,9 +654,9 @@ label_revision: Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ label_revision_plural: Редакции label_roadmap: Оперативный план - label_roadmap_due_in: "Ð’ Ñрок {{value}}" + label_roadmap_due_in: "Ð’ Ñрок %{value}" label_roadmap_no_issues: Ðет задач Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ верÑии - label_roadmap_overdue: "опоздание {{value}}" + label_roadmap_overdue: "опоздание %{value}" label_role: Роль label_role_and_permissions: Роли и права доÑтупа label_role_new: ÐÐ¾Ð²Ð°Ñ Ñ€Ð¾Ð»ÑŒ @@ -669,7 +669,7 @@ label_settings: ÐаÑтройки label_show_completed_versions: Показывать завершенные верÑии label_sort: Сортировать - label_sort_by: "Сортировать по {{value}}" + label_sort_by: "Сортировать по %{value}" label_sort_higher: Вверх label_sort_highest: Ð’ начало label_sort_lower: Вниз @@ -695,11 +695,11 @@ label_tracker: Трекер label_tracker_new: Ðовый трекер label_tracker_plural: Трекеры - label_updated_time: "Обновлено {{value}} назад" - label_updated_time_by: "Обновлено {{author}} {{age}} назад" + label_updated_time: "Обновлено %{value} назад" + label_updated_time_by: "Обновлено %{author} %{age} назад" label_used_by: ИÑпользуетÑÑ label_user: Пользователь - label_user_activity: "ÐктивноÑть Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ {{value}}" + label_user_activity: "ÐктивноÑть Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %{value}" label_user_mail_no_self_notified: "Ðе извещать об изменениÑÑ…, которые Ñ Ñделал Ñам" label_user_mail_option_all: "О вÑех ÑобытиÑÑ… во вÑех моих проектах" label_user_mail_option_selected: "О вÑех ÑобытиÑÑ… только в выбранном проекте..." @@ -724,46 +724,46 @@ label_x_closed_issues_abbr: zero: "0 закрыто" one: "1 закрыт" - few: "{{count}} закрыто" - many: "{{count}} закрыто" - other: "{{count}} закрыто" + few: "%{count} закрыто" + many: "%{count} закрыто" + other: "%{count} закрыто" label_x_comments: zero: "нет комментариев" one: "1 комментарий" - few: "{{count}} комментариÑ" - many: "{{count}} комментариев" - other: "{{count}} комментариев" + few: "%{count} комментариÑ" + many: "%{count} комментариев" + other: "%{count} комментариев" label_x_open_issues_abbr: zero: "0 открыто" one: "1 открыт" - few: "{{count}} открыто" - many: "{{count}} открыто" - other: "{{count}} открыто" + few: "%{count} открыто" + many: "%{count} открыто" + other: "%{count} открыто" label_x_open_issues_abbr_on_total: - zero: "0 открыто / {{total}}" - one: "1 открыт / {{total}}" - few: "{{count}} открыто / {{total}}" - many: "{{count}} открыто / {{total}}" - other: "{{count}} открыто / {{total}}" + zero: "0 открыто / %{total}" + one: "1 открыт / %{total}" + few: "%{count} открыто / %{total}" + many: "%{count} открыто / %{total}" + other: "%{count} открыто / %{total}" label_x_projects: zero: "нет проектов" one: "1 проект" - few: "{{count}} проекта" - many: "{{count}} проектов" - other: "{{count}} проектов" + few: "%{count} проекта" + many: "%{count} проектов" + other: "%{count} проектов" label_year: Год label_yesterday: вчера - mail_body_account_activation_request: "ЗарегиÑтрирован новый пользователь ({{value}}). Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ожидает Вашего утверждениÑ:" + mail_body_account_activation_request: "ЗарегиÑтрирован новый пользователь (%{value}). Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ожидает Вашего утверждениÑ:" mail_body_account_information: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Вашей учетной запиÑи - mail_body_account_information_external: "Ð’Ñ‹ можете иÑпользовать Вашу {{value}} учетную запиÑÑŒ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°." + mail_body_account_information_external: "Ð’Ñ‹ можете иÑпользовать Вашу %{value} учетную запиÑÑŒ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°." mail_body_lost_password: 'Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð·Ð°Ð¹Ð´Ð¸Ñ‚Ðµ по Ñледующей ÑÑылке:' mail_body_register: 'Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ учетной запиÑи зайдите по Ñледующей ÑÑылке:' - mail_body_reminder: "{{count}} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ на Ñледующие {{days}} дней:" - mail_subject_account_activation_request: "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° активацию Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑиÑтеме {{value}}" - mail_subject_lost_password: "Ваш {{value}} пароль" - mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи {{value}}" - mail_subject_reminder: "{{count}} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ в ближайшие {{days}} дней" + mail_body_reminder: "%{count} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ на Ñледующие %{days} дней:" + mail_subject_account_activation_request: "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° активацию Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑиÑтеме %{value}" + mail_subject_lost_password: "Ваш %{value} пароль" + mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %{value}" + mail_subject_reminder: "%{count} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ в ближайшие %{days} дней" notice_account_activated: Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ активирована. Ð’Ñ‹ можете войти. notice_account_invalid_creditentials: Ðеправильное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль @@ -776,10 +776,10 @@ notice_account_wrong_password: Ðеверный пароль notice_can_t_change_password: Ð”Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ учетной запиÑи иÑпользуетÑÑ Ð¸Ñточник внешней аутентификации. Ðевозможно изменить пароль. notice_default_data_loaded: Была загружена ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию. - notice_email_error: "Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ пиÑьма произошла ошибка ({{value}})" - notice_email_sent: "Отправлено пиÑьмо {{value}}" - notice_failed_to_save_issues: "Ðе удалоÑÑŒ Ñохранить {{count}} пункт(ов) из {{total}} выбранных: {{ids}}." - notice_failed_to_save_members: "Ðе удалоÑÑŒ Ñохранить учаÑтника(ов): {{errors}}." + notice_email_error: "Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ пиÑьма произошла ошибка (%{value})" + notice_email_sent: "Отправлено пиÑьмо %{value}" + notice_failed_to_save_issues: "Ðе удалоÑÑŒ Ñохранить %{count} пункт(ов) из %{total} выбранных: %{ids}." + notice_failed_to_save_members: "Ðе удалоÑÑŒ Ñохранить учаÑтника(ов): %{errors}." notice_feeds_access_key_reseted: Ваш ключ доÑтупа RSS был перезапущен. notice_file_not_found: Страница, на которую Ð’Ñ‹ пытаетеÑÑŒ зайти, не ÑущеÑтвует или удалена. notice_locking_conflict: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð° другим пользователем. @@ -860,7 +860,7 @@ setting_attachment_max_size: МакÑимальный размер Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ setting_autofetch_changesets: ÐвтоматичеÑки Ñледить за изменениÑми хранилища setting_autologin: ÐвтоматичеÑкий вход - setting_bcc_recipients: ИÑпользовать Ñкрытые ÑпиÑки (bcc) + setting_bcc_recipients: ИÑпользовать Ñкрытые ÑпиÑки (BCC) setting_cache_formatted_text: Кешировать форматированный текÑÑ‚ setting_commit_fix_keywords: Ðазначение ключевых Ñлов setting_commit_logs_encoding: Кодировка комментариев в хранилище @@ -872,7 +872,7 @@ setting_default_projects_public: Ðовые проекты ÑвлÑÑŽÑ‚ÑÑ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупными setting_diff_max_lines_displayed: МакÑимальное чиÑло Ñтрок Ð´Ð»Ñ diff setting_display_subprojects_issues: Отображение подпроектов по умолчанию - setting_emails_footer: ПодÑтрочные Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Email + setting_emails_footer: ПодÑтрочные Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¿Ð¸Ñьма setting_enabled_scm: Разрешенные SCM setting_feeds_limit: Ограничение количеÑтва заголовков Ð´Ð»Ñ RSS потока setting_file_max_size_displayed: МакÑимальный размер текÑтового файла Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ @@ -906,29 +906,29 @@ text_are_you_sure_with_children: Удалить задачу и вÑе ее подзадачи? text_are_you_sure: Подтвердите text_assign_time_entries_to_project: Прикрепить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ Ðº проекту - text_caracters_maximum: "МакÑимум {{count}} Ñимволов(а)." - text_caracters_minimum: "Должно быть не менее {{count}} Ñимволов." + text_caracters_maximum: "МакÑимум %{count} Ñимволов(а)." + text_caracters_minimum: "Должно быть не менее %{count} Ñимволов." text_comma_separated: ДопуÑтимы неÑколько значений (через запÑтую). text_custom_field_possible_values_info: 'По одному значению в каждой Ñтроке' text_default_administrator_account_changed: Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ админиÑтратора по умолчанию изменена - text_destroy_time_entries_question: Ð’Ñ‹ ÑобираетеÑÑŒ удалить {{hours}} чаÑа(ов), прикрепленных за Ñтой задачей. + text_destroy_time_entries_question: Ð’Ñ‹ ÑобираетеÑÑŒ удалить %{hours} чаÑа(ов), прикрепленных за Ñтой задачей. text_destroy_time_entries: Удалить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ text_diff_truncated: '... Этот diff ограничен, так как превышает макÑимальный отображаемый размер.' - text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/email.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." + text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/configuration.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." text_enumeration_category_reassign_to: 'Ðазначить им Ñледующее значение:' - text_enumeration_destroy_question: "{{count}} объект(а,ов) ÑвÑзаны Ñ Ñтим значением." + text_enumeration_destroy_question: "%{count} объект(а,ов) ÑвÑзаны Ñ Ñтим значением." text_file_repository_writable: Хранилище Ñ Ð´Ð¾Ñтупом на запиÑÑŒ - text_issue_added: "По задаче {{id}} был Ñоздан отчет ({{author}})." + text_issue_added: "По задаче %{id} был Ñоздан отчет (%{author})." text_issue_category_destroy_assignments: Удалить Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ - text_issue_category_destroy_question: "ÐеÑколько задач ({{count}}) назначено в данную категорию. Что Ð’Ñ‹ хотите предпринÑть?" + text_issue_category_destroy_question: "ÐеÑколько задач (%{count}) назначено в данную категорию. Что Ð’Ñ‹ хотите предпринÑть?" text_issue_category_reassign_to: Переназначить задачи Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ категории text_issues_destroy_confirmation: 'Ð’Ñ‹ уверены, что хотите удалить выбранные задачи?' text_issues_ref_in_commit_messages: СопоÑтавление и изменение ÑтатуÑа задач иÑÑ…Ð¾Ð´Ñ Ð¸Ð· текÑта Ñообщений - text_issue_updated: "Задача {{id}} была обновлена ({{author}})." - text_journal_changed: "Параметр {{label}} изменилÑÑ Ñ {{old}} на {{new}}" - text_journal_deleted: "Значение {{old}} параметра {{label}} удалено" - text_journal_set_to: "Параметр {{label}} изменилÑÑ Ð½Ð° {{value}}" - text_length_between: "Длина между {{min}} и {{max}} Ñимволов." + text_issue_updated: "Задача %{id} была обновлена (%{author})." + text_journal_changed: "Параметр %{label} изменилÑÑ Ñ %{old} на %{new}" + text_journal_deleted: "Значение %{old} параметра %{label} удалено" + text_journal_set_to: "Параметр %{label} изменилÑÑ Ð½Ð° %{value}" + text_length_between: "Длина между %{min} и %{max} Ñимволов." text_load_default_configuration: Загрузить конфигурацию по умолчанию text_min_max_length_info: 0 означает отÑутÑтвие запретов text_no_configuration_data: "Роли, трекеры, ÑтатуÑÑ‹ задач и оперативный план не были Ñконфигурированы.\nÐаÑтоÑтельно рекомендуетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ конфигурацию по-умолчанию. Ð’Ñ‹ Ñможете её изменить потом." @@ -941,31 +941,31 @@ text_rmagick_available: ДоÑтупно иÑпользование RMagick (опционально) text_select_mail_notifications: Выберите дейÑтвиÑ, на которые будет отÑылатьÑÑ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ðµ на Ñлектронную почту. text_select_project_modules: 'Выберите модули, которые будут иÑпользованы в проекте:' - text_status_changed_by_changeset: "Реализовано в {{value}} редакции." - text_subprojects_destroy_warning: "Подпроекты: {{value}} также будут удалены." + text_status_changed_by_changeset: "Реализовано в %{value} редакции." + text_subprojects_destroy_warning: "Подпроекты: %{value} также будут удалены." text_tip_issue_begin_day: дата начала задачи text_tip_issue_begin_end_day: начало задачи и окончание ее в Ñтот день text_tip_issue_end_day: дата Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸ text_tracker_no_workflow: Ð”Ð»Ñ Ñтого трекера поÑледовательноÑть дейÑтвий не определена text_unallowed_characters: Запрещенные Ñимволы text_user_mail_option: "Ð”Ð»Ñ Ð½ÐµÐ²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… проектов, Ð’Ñ‹ будете получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ о том что проÑматриваете или в чем учаÑтвуете (например, вопроÑÑ‹, автором которых Ð’Ñ‹ ÑвлÑетеÑÑŒ или которые Вам назначены)." - text_user_wrote: "{{value}} пиÑал(а):" + text_user_wrote: "%{value} пиÑал(а):" text_wiki_destroy_confirmation: Ð’Ñ‹ уверены, что хотите удалить данную Wiki и вÑе ее Ñодержимое? text_workflow_edit: Выберите роль и трекер Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑледовательноÑти ÑоÑтоÑний - warning_attachments_not_saved: "{{count}} файл(ов) невозможно Ñохранить." - text_wiki_page_destroy_question: Эта Ñтраница имеет {{descendants}} дочерних Ñтраниц и их потомков. Что вы хотите Ñделать? + warning_attachments_not_saved: "%{count} файл(ов) невозможно Ñохранить." + text_wiki_page_destroy_question: Эта Ñтраница имеет %{descendants} дочерних Ñтраниц и их потомков. Что вы хотите Ñделать? text_wiki_page_reassign_children: Переопределить дочерние Ñтраницы на текущую Ñтраницу text_wiki_page_nullify_children: Сделать дочерние Ñтраницы главными Ñтраницами text_wiki_page_destroy_children: Удалить дочерние Ñтраницы и вÑех их потомков setting_password_min_length: ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð¿Ð°Ñ€Ð¾Ð»Ñ field_group_by: Группировать результаты по - mail_subject_wiki_content_updated: "Wiki-Ñтраница '{{id}}' была обновлена" + mail_subject_wiki_content_updated: "Wiki-Ñтраница '%{id}' была обновлена" label_wiki_content_added: Добавлена wiki-Ñтраница - mail_subject_wiki_content_added: "Wiki-Ñтраница '{{id}}' была добавлена" - mail_body_wiki_content_added: "{{author}} добавил(а) wiki-Ñтраницу '{{id}}'." + mail_subject_wiki_content_added: "Wiki-Ñтраница '%{id}' была добавлена" + mail_body_wiki_content_added: "%{author} добавил(а) wiki-Ñтраницу '%{id}'." label_wiki_content_updated: Обновлена wiki-Ñтраница - mail_body_wiki_content_updated: "{{author}} обновил(а) wiki-Ñтраницу '{{id}}'." + mail_body_wiki_content_updated: "%{author} обновил(а) wiki-Ñтраницу '%{id}'." permission_add_project: Создание проекта setting_new_project_user_role_id: Роль, Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼Ð°Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ, Ñоздавшему проект label_view_all_revisions: Показать вÑе ревизии @@ -977,7 +977,7 @@ label_group: Группа label_group_new: ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° label_time_entry_plural: Затраченное Ð²Ñ€ÐµÐ¼Ñ - text_journal_added: "{{label}} {{value}} добавлен" + text_journal_added: "%{label} %{value} добавлен" field_active: Ðктивно enumeration_system_activity: СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ñть permission_delete_issue_watchers: Удаление наблюдателей @@ -1012,10 +1012,10 @@ setting_start_of_week: День начала недели label_api_access_key: Ключ доÑтупа к API text_line_separated: Разрешено неÑколько значений (по одному значению в Ñтроку). - label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ {{value}} + label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value} permission_view_issues: ПроÑмотр задач label_display_used_statuses_only: Отображать только те ÑтатуÑÑ‹, которые иÑпользуютÑÑ Ð² Ñтом трекере - label_api_access_key_created_on: Ключ доÑтуп к API был Ñоздан {{value}} назад + label_api_access_key_created_on: Ключ доÑтуп к API был Ñоздан %{value} назад label_feeds_access_key: Ключ доÑтупа к RSS notice_api_access_key_reseted: Ваш ключ доÑтупа к API был Ñброшен. setting_rest_api_enabled: Включить веб-ÑÐµÑ€Ð²Ð¸Ñ REST @@ -1036,13 +1036,21 @@ text_zoom_in: Приблизить notice_unable_delete_time_entry: Ðевозможно удалить запиÑÑŒ журнала. label_overall_spent_time: Ð’Ñего затрачено времени - label_user_mail_option_none: Ðет Ñобытий field_member_of_group: Группа назначенного field_assigned_to_role: Роль назначенного notice_not_authorized_archived_project: Запрашиваемый проект был архивирован. + label_principal_search: "Ðайти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ группу:" + label_user_search: "Ðайти пользователÑ:" + field_visible: Видимый + setting_emails_header: Заголовок пиÑьма - 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/sk.yml --- a/config/locales/sk.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/sk.yml Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "pol minúty" less_than_x_seconds: one: "menej ako 1 sekunda" - other: "menej ako {{count}} sekúnd" + other: "menej ako %{count} sekúnd" x_seconds: one: "1 sekunda" - other: "{{count}} sekúnd" + other: "%{count} sekúnd" less_than_x_minutes: one: "menej ako minúta" - other: "menej ako {{count}} minút" + other: "menej ako %{count} minút" x_minutes: one: "1 minuta" - other: "{{count}} minút" + other: "%{count} minút" about_x_hours: one: "okolo 1 hodiny" - other: "okolo {{count}} hodín" + other: "okolo %{count} hodín" x_days: one: "1 deň" - other: "{{count}} dní" + other: "%{count} dní" about_x_months: one: "okolo 1 mesiaca" - other: "okolo {{count}} mesiace/ov" + other: "okolo %{count} mesiace/ov" x_months: one: "1 mesiac" - other: "{{count}} mesiace/ov" + other: "%{count} mesiace/ov" about_x_years: one: "okolo 1 roka" - other: "okolo {{count}} roky/ov" + other: "okolo %{count} roky/ov" over_x_years: one: "cez 1 rok" - other: "cez {{count}} roky/ov" + other: "cez %{count} roky/ov" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: human: @@ -88,6 +88,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nieje zahrnuté v zozname" exclusion: "je rezervované" @@ -102,11 +106,11 @@ taken: "je už použité" not_a_number: "nieje Äíslo" not_a_date: "nieje platný dátum" - greater_than: "musí byÅ¥ väÄšíe ako {{count}}" - greater_than_or_equal_to: "musí byÅ¥ väÄÅ¡ie alebo rovné {{count}}" - equal_to: "musí byÅ¥ rovné {{count}}" - less_than: "musí byÅ¥ menej ako {{count}}" - less_than_or_equal_to: "musí byÅ¥ menej alebo rovné {{count}}" + greater_than: "musí byÅ¥ väÄšíe ako %{count}" + greater_than_or_equal_to: "musí byÅ¥ väÄÅ¡ie alebo rovné %{count}" + equal_to: "musí byÅ¥ rovné %{count}" + less_than: "musí byÅ¥ menej ako %{count}" + less_than_or_equal_to: "musí byÅ¥ menej alebo rovné %{count}" odd: "musí byÅ¥ nepárne" even: "musí byÅ¥ párne" greater_than_start_date: "musí byÅ¥ neskôr ako poÄiatoÄný dátum" @@ -146,30 +150,30 @@ notice_locking_conflict: Údaje boli zmenené iným užívateľom. notice_scm_error: Položka a/alebo revízia neexistuje v repozitári. notice_not_authorized: Nemáte dostatoÄné práva pre zobrazenie tejto stránky. - notice_email_sent: "Na adresu {{value}} bol odeslaný email" - notice_email_error: "Pri odosielaní emailu nastala chyba ({{value}})" + notice_email_sent: "Na adresu %{value} bol odeslaný email" + notice_email_error: "Pri odosielaní emailu nastala chyba (%{value})" notice_feeds_access_key_reseted: Váš klÃºÄ pre prístup k Atomu bol resetovaný. - notice_failed_to_save_issues: "Nastala chyba pri ukládaní {{count}} úloh na {{total}} zvolený: {{ids}}." + notice_failed_to_save_issues: "Nastala chyba pri ukládaní %{count} úloh na %{total} zvolený: %{ids}." notice_no_issue_selected: "Nebola zvolená žiadná úloha. Prosím, zvoľte úlohy, ktoré chcete upraviÅ¥" notice_account_pending: "Váš úÄet bol vytvorený, teraz Äaká na schválenie administrátorom." notice_default_data_loaded: Výchozia konfigurácia úspeÅ¡ne nahraná. - error_can_t_load_default_data: "Výchozia konfigurácia nebola nahraná: {{value}}" + error_can_t_load_default_data: "Výchozia konfigurácia nebola nahraná: %{value}" error_scm_not_found: "Položka a/alebo revízia neexistuje v repozitári." - error_scm_command_failed: "Pri pokuse o prístup k repozitári doÅ¡lo k chybe: {{value}}" + error_scm_command_failed: "Pri pokuse o prístup k repozitári doÅ¡lo k chybe: %{value}" error_issue_not_found_in_project: 'Úloha nebola nájdená alebo nepatrí k tomuto projektu' - mail_subject_lost_password: "VaÅ¡e heslo ({{value}})" + mail_subject_lost_password: "VaÅ¡e heslo (%{value})" mail_body_lost_password: 'Pre zmenu vaÅ¡eho hesla kliknite na následujúci odkaz:' - mail_subject_register: "Aktivácia úÄtu ({{value}})" + mail_subject_register: "Aktivácia úÄtu (%{value})" mail_body_register: 'Pre aktiváciu vaÅ¡eho úÄtu kliknite na následujúci odkaz:' - mail_body_account_information_external: "Pomocou vaÅ¡eho úÄtu {{value}} se môžete prihlásiÅ¥." + mail_body_account_information_external: "Pomocou vaÅ¡eho úÄtu %{value} se môžete prihlásiÅ¥." mail_body_account_information: Informácie o vaÅ¡om úÄte - mail_subject_account_activation_request: "Aktivácia {{value}} úÄtu" - mail_body_account_activation_request: "Bol zaregistrovaný nový uživateľ {{value}}. Aktivácia jeho úÄtu závisí na vaÅ¡om potvrdení." + mail_subject_account_activation_request: "Aktivácia %{value} úÄtu" + mail_body_account_activation_request: "Bol zaregistrovaný nový uživateľ %{value}. Aktivácia jeho úÄtu závisí na vaÅ¡om potvrdení." gui_validation_error: 1 chyba - gui_validation_error_plural: "{{count}} chyb(y)" + gui_validation_error_plural: "%{count} chyb(y)" field_name: Názov field_description: Popis @@ -231,6 +235,7 @@ field_attr_lastname: Priezvisko (atribut) field_attr_mail: Email (atribut) field_onthefly: Automatické vytváranie užívateľov + field_start_date: ZaÄiatok field_done_ratio: % hotovo field_auth_source: AutentifikaÄný mód field_hide_mail: NezobrazovaÅ¥ môj email @@ -304,14 +309,14 @@ label_x_projects: zero: žiadne projekty one: 1 projekt - other: "{{count}} projekty/ov" + other: "%{count} projekty/ov" label_project_all: VÅ¡etky projekty label_project_latest: Posledné projekty label_issue: Úloha label_issue_new: Nová úloha label_issue_plural: Úlohy label_issue_view_all: VÅ¡etky úlohy - label_issues_by: "Úlohy od užívateľa {{value}}" + label_issues_by: "Úlohy od užívateľa %{value}" label_issue_added: Úloha pridaná label_issue_updated: Úloha aktualizovaná label_document: Dokument @@ -378,8 +383,8 @@ label_text: Dlhý text label_attribute: Atribut label_attribute_plural: Atributy - label_download: "{{count}} Download" - label_download_plural: "{{count}} Downloady" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloady" label_no_data: Žiadné položky label_change_status: ZmeniÅ¥ stav label_history: História @@ -410,17 +415,17 @@ label_closed_issues: Uzavrený label_closed_issues_plural: Uzavrené label_x_open_issues_abbr_on_total: - zero: 0 otvorených z celkovo {{total}} - one: 1 otvorený z celkovo {{total}} - other: "{{count}} otvorené/ých z celkovo {{total}}" + zero: 0 otvorených z celkovo %{total} + one: 1 otvorený z celkovo %{total} + other: "%{count} otvorené/ých z celkovo %{total}" label_x_open_issues_abbr: zero: 0 otvorených one: 1 otvorený - other: "{{count}} otvorené/ých" + other: "%{count} otvorené/ých" label_x_closed_issues_abbr: zero: 0 zavretých one: 1 zavretý - other: "{{count}} zavreté/ých" + other: "%{count} zavreté/ých" label_total: Celkovo label_permissions: Práva label_current_status: Aktuálny stav @@ -438,7 +443,7 @@ label_months_from: mesiacov od label_gantt: Ganttov graf label_internal: Interný - label_last_changes: "posledných {{count}} zmien" + label_last_changes: "posledných %{count} zmien" label_change_view_all: ZobraziÅ¥ vÅ¡etky zmeny label_personalize_page: PrispôsobiÅ¥ túto stránku label_comment: Komentár @@ -446,7 +451,7 @@ label_x_comments: zero: žiaden komentár one: 1 komentár - other: "{{count}} komentáre/ov" + other: "%{count} komentáre/ov" label_comment_add: PridaÅ¥ komentár label_comment_added: Komentár pridaný label_comment_delete: OdstrániÅ¥ komentár @@ -465,7 +470,7 @@ label_yesterday: vÄera label_this_week: tento týždeň label_last_week: minulý týždeň - label_last_n_days: "posledných {{count}} dní" + label_last_n_days: "posledných %{count} dní" label_this_month: tento mesiac label_last_month: minulý mesiac label_this_year: tento rok @@ -479,8 +484,8 @@ label_repository: Repozitár label_repository_plural: Repozitáre label_browse: PrechádzaÅ¥ - label_modification: "{{count}} zmena" - label_modification_plural: "{{count}} zmien" + label_modification: "%{count} zmena" + label_modification_plural: "%{count} zmien" label_revision: Revízia label_revision_plural: Revízií label_associated_revisions: Súvisiace verzie @@ -496,8 +501,8 @@ label_sort_lower: Presunúť dole label_sort_lowest: Presunúť na koniec label_roadmap: Plán - label_roadmap_due_in: "Zostáva {{value}}" - label_roadmap_overdue: "{{value}} neskoro" + label_roadmap_due_in: "Zostáva %{value}" + label_roadmap_overdue: "%{value} neskoro" label_roadmap_no_issues: Pre túto verziu niesú žiadne úlohy label_search: HľadaÅ¥ label_result_plural: Výsledky @@ -515,8 +520,8 @@ label_changes_details: Detail vÅ¡etkých zmien label_issue_tracking: Sledovanie úloh label_spent_time: Strávený Äas - label_f_hour: "{{value}} hodina" - label_f_hour_plural: "{{value}} hodín" + label_f_hour: "%{value} hodina" + label_f_hour_plural: "%{value} hodín" label_time_tracking: Sledovánie Äasu label_change_plural: Zmeny label_statistics: Å tatistiky @@ -564,12 +569,12 @@ label_date_from: Od label_date_to: Do label_language_based: Podľa výchozieho jazyka - label_sort_by: "Zoradenie podľa {{value}}" + label_sort_by: "Zoradenie podľa %{value}" label_send_test_email: PoslaÅ¥ testovací email - label_feeds_access_key_created_on: "Prístupový klÃºÄ pre RSS bol vytvorený pred {{value}}" + label_feeds_access_key_created_on: "Prístupový klÃºÄ pre RSS bol vytvorený pred %{value}" label_module_plural: Moduly - label_added_time_by: "Pridané užívateľom {{author}} pred {{age}}" - label_updated_time: "Aktualizované pred {{value}}" + label_added_time_by: "Pridané užívateľom %{author} pred %{age}" + label_updated_time: "Aktualizované pred %{value}" label_jump_to_a_project: ZvoliÅ¥ projekt... label_file_plural: Súbory label_changeset_plural: Sady zmien @@ -585,7 +590,7 @@ label_registration_activation_by_email: aktivácia úÄtu emailom label_registration_manual_activation: manuálna aktivácia úÄtu label_registration_automatic_activation: automatická aktivácia úÄtu - label_display_per_page: "{{value}} na stránku" + label_display_per_page: "%{value} na stránku" label_age: Vek label_change_properties: ZmeniÅ¥ vlastnosti label_general: VÅ¡eobecné @@ -652,23 +657,23 @@ text_tip_issue_end_day: úloha konÄí v tento deň text_tip_issue_begin_end_day: úloha zaÄína a konÄí v tento deň text_project_identifier_info: 'Povolené znaky sú malé písmena (a-z), Äísla a pomlÄka.
    Po uložení už nieje možné identifikátor zmeniÅ¥.' - text_caracters_maximum: "{{count}} znakov maximálne." - text_caracters_minimum: "Musí byÅ¥ aspoň {{count}} znaky/ov dlhé." - text_length_between: "Dĺžka medzi {{min}} až {{max}} znakmi." + text_caracters_maximum: "%{count} znakov maximálne." + text_caracters_minimum: "Musí byÅ¥ aspoň %{count} znaky/ov dlhé." + text_length_between: "Dĺžka medzi %{min} až %{max} znakmi." text_tracker_no_workflow: Pre tuto frontu nieje definovaný žiadný workflow text_unallowed_characters: Nepovolené znaky text_comma_separated: Je povolené viacero hodnôt (oddelené navzájom Äiarkou). text_issues_ref_in_commit_messages: OdkazovaÅ¥ a upravovaÅ¥ úlohy v správach s následovnym obsahom - text_issue_added: "úloha {{id}} bola vytvorená užívateľom {{author}}." - text_issue_updated: "Úloha {{id}} byla aktualizovaná užívateľom {{author}}." + text_issue_added: "úloha %{id} bola vytvorená užívateľom %{author}." + text_issue_updated: "Úloha %{id} byla aktualizovaná užívateľom %{author}." text_wiki_destroy_confirmation: Naozaj si prajete odstrániÅ¥ túto Wiki a celý jej obsah? - text_issue_category_destroy_question: "Niektoré úlohy ({{count}}) sú priradené k tejto kategórii. ÄŒo chtete s nimi spraviÅ¥?" + text_issue_category_destroy_question: "Niektoré úlohy (%{count}) sú priradené k tejto kategórii. ÄŒo chtete s nimi spraviÅ¥?" text_issue_category_destroy_assignments: ZruÅ¡iÅ¥ priradenie ku kategórii text_issue_category_reassign_to: PriradiÅ¥ úlohy do tejto kategórie text_user_mail_option: "U projektov, které neboli vybrané, budete dostávaÅ¥ oznamenie iba o vaÅ¡ich Äi o sledovaných položkách (napr. o položkách, ktorých ste autor, alebo ku ktorým ste priradený/á)." text_no_configuration_data: "Role, fronty, stavy úloh ani workflow neboli zatiaľ nakonfigurované.\nVelmi doporuÄujeme nahraÅ¥ východziu konfiguráciu. Potom si môžete vÅ¡etko upraviÅ¥" text_load_default_configuration: NahraÅ¥ východziu konfiguráciu - text_status_changed_by_changeset: "Aktualizované v sade zmien {{value}}." + text_status_changed_by_changeset: "Aktualizované v sade zmien %{value}." text_issues_destroy_confirmation: 'Naozaj si prajete odstrániÅ¥ vÅ¡etky zvolené úlohy?' text_select_project_modules: 'Aktivne moduly v tomto projekte:' text_default_administrator_account_changed: Zmenené výchozie nastavenie administrátorského úÄtu @@ -706,20 +711,20 @@ enumeration_activities: Aktivity (sledovanie Äasu) error_scm_annotate: "Položka neexistuje alebo nemôže byÅ¥ komentovaná." label_planning: Plánovanie - text_subprojects_destroy_warning: "Jeho podprojekt(y): {{value}} budú takisto vymazané." - label_and_its_subprojects: "{{value}} a jeho podprojekty" - mail_body_reminder: "{{count}} úloha(y), ktorá(é) je(sú) vám priradený(é), ma(jú) byÅ¥ hotova(é) za {{days}} dní:" - mail_subject_reminder: "{{count}} úloha(y) ma(jú) byÅ¥ hotova(é) za pár {{days}} dní" - text_user_wrote: "{{value}} napísal:" + text_subprojects_destroy_warning: "Jeho podprojekt(y): %{value} budú takisto vymazané." + label_and_its_subprojects: "%{value} a jeho podprojekty" + mail_body_reminder: "%{count} úloha(y), ktorá(é) je(sú) vám priradený(é), ma(jú) byÅ¥ hotova(é) za %{days} dní:" + mail_subject_reminder: "%{count} úloha(y) ma(jú) byÅ¥ hotova(é) za pár %{days} dní" + text_user_wrote: "%{value} napísal:" label_duplicated_by: duplikovaný setting_enabled_scm: Zapnúť SCM text_enumeration_category_reassign_to: 'PrenastaviÅ¥ na túto hodnotu:' - text_enumeration_destroy_question: "{{count}} objekty sú nastavené na túto hodnotu." + text_enumeration_destroy_question: "%{count} objekty sú nastavené na túto hodnotu." label_incoming_emails: Príchádzajúce emaily label_generate_key: VygenerovaÅ¥ kÄ¾ÃºÄ setting_mail_handler_api_enabled: Zapnúť Webovú Službu (WS) pre príchodzie emaily setting_mail_handler_api_key: API kÄ¾ÃºÄ - text_email_delivery_not_configured: "DoruÄenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/email.yml a reÅ¡tartnite aplikáciu pre aktiváciu funkcie." + 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 @@ -780,12 +785,12 @@ permission_delete_own_messages: Mazanie vlastných správ text_repository_usernames_mapping: "Vyberte alebo upravte mapovanie medzi užívateľmi systému Redmine a užívateľskými menami nájdenými v logu repozitára.\nUžívatelia s rovnakým prihlasovacím menom alebo emailom v systéme Redmine a repozitára sú mapovaní automaticky." label_example: Príklad - label_user_activity: "Aktivita užívateľa {{value}}" - label_updated_time_by: "Aktualizované užívateľom {{author}} pred {{age}}" + label_user_activity: "Aktivita užívateľa %{value}" + label_updated_time_by: "Aktualizované užívateľom %{author} pred %{age}" text_diff_truncated: '... Tento rozdielový výpis bol skratený, pretože prekraÄuje maximálnu veľkosÅ¥, ktorá môže byÅ¥ zobrazená.' setting_diff_max_lines_displayed: Maximálne množstvo zobrazených riadkov rozdielového výpisu text_plugin_assets_writable: Adresár pre pluginy s možnosÅ¥ou zápisu - warning_attachments_not_saved: "{{count}} súbor(y) nemohol(li) byÅ¥ uložené." + warning_attachments_not_saved: "%{count} súbor(y) nemohol(li) byÅ¥ uložené." field_editable: Editovateľné label_display: Zobrazenie button_create_and_continue: VytvoriÅ¥ a pokraÄovaÅ¥ @@ -800,22 +805,22 @@ label_descending: Zostupné label_sort: Zoradenie label_ascending: Rastúce - label_date_from_to: Od {{start}} do {{end}} + label_date_from_to: Od %{start} do %{end} label_greater_or_equal: ">=" label_less_or_equal: <= - text_wiki_page_destroy_question: Táto stránka má {{descendants}} podstránku/y a potomka/ov. ÄŒo chcete vykonaÅ¥? + text_wiki_page_destroy_question: Táto stránka má %{descendants} podstránku/y a potomka/ov. ÄŒo chcete vykonaÅ¥? text_wiki_page_reassign_children: PreradiÅ¥ podstránky k tejto hlavnej stránke text_wiki_page_nullify_children: ZachovaÅ¥ podstránky ako hlavné stránky text_wiki_page_destroy_children: VymazaÅ¥ podstránky a vÅ¡etkých ich potomkov setting_password_min_length: Minimálna dĺžka hesla field_group_by: Skupinové výsledky podľa - mail_subject_wiki_content_updated: "'{{id}}' Wiki stránka bola aktualizovaná" + mail_subject_wiki_content_updated: "'%{id}' Wiki stránka bola aktualizovaná" label_wiki_content_added: Wiki stránka pridaná - mail_subject_wiki_content_added: "'{{id}}' Wiki stránka bola pridaná" - mail_body_wiki_content_added: The '{{id}}' Wiki stránka bola pridaná užívateľom {{author}}. + mail_subject_wiki_content_added: "'%{id}' Wiki stránka bola pridaná" + mail_body_wiki_content_added: The '%{id}' Wiki stránka bola pridaná užívateľom %{author}. permission_add_project: Vytvorenie projektu label_wiki_content_updated: Wiki stránka aktualizovaná - mail_body_wiki_content_updated: Wiki stránka '{{id}}' bola aktualizovaná užívateľom {{author}}. + mail_body_wiki_content_updated: Wiki stránka '%{id}' bola aktualizovaná užívateľom %{author}. setting_repositories_encodings: Kódovanie repozitára setting_new_project_user_role_id: Rola dána non-admin užívateľovi, ktorý vytvorí projekt label_view_all_revisions: ZobraziÅ¥ vÅ¡etkz revízie @@ -823,14 +828,14 @@ label_branch: Vetva error_no_tracker_in_project: K tomuto projektu nieje priradená žiadna fronta. Prosím skontrolujte nastavenie projektu. error_no_default_issue_status: Nieje definovaný východzí stav úlohy. Prosím skontrolujte vase nastavenie (ChoÄte na "Administrácia -> Stavz úloh"). - text_journal_changed: "{{label}} zmenené z {{old}} na {{new}}" - text_journal_set_to: "{{label}} nastavené na {{value}}" - text_journal_deleted: "{{label}} zmazané ({{old}})" + text_journal_changed: "%{label} zmenené z %{old} na %{new}" + text_journal_set_to: "%{label} nastavené na %{value}" + text_journal_deleted: "%{label} zmazané (%{old})" label_group_plural: Skupiny label_group: Skupina label_group_new: Nová skupina label_time_entry_plural: Strávený Äas - text_journal_added: "{{label}} {{value}} pridané" + text_journal_added: "%{label} %{value} pridané" field_active: Aktívne enumeration_system_activity: Aktivita systému permission_delete_issue_watchers: OdstrániÅ¥ pozorovateľov @@ -865,9 +870,9 @@ setting_start_of_week: Å tart pracovného týždňa v permission_view_issues: ZobraziÅ¥ úlohy label_display_used_statuses_only: ZobraziÅ¥ len stavy, ktoré sú priradené k tejto fronte - label_revision_id: Revízia {{value}} + label_revision_id: Revízia %{value} label_api_access_key: API prístupový kÄ¾ÃºÄ - label_api_access_key_created_on: API prístupový kÄ¾ÃºÄ vytvorený pred {{value}} + label_api_access_key_created_on: API prístupový kÄ¾ÃºÄ vytvorený pred %{value} label_feeds_access_key: RSS prístupový kÄ¾ÃºÄ notice_api_access_key_reseted: Váš API prístupový kÄ¾ÃºÄ bol resetovaný. setting_rest_api_enabled: Zapnúť REST web službu @@ -894,12 +899,12 @@ label_subtask_plural: Podúlohy label_project_copy_notifications: ZaslaÅ¥ emailové upozornenie behom kopírovania projektu error_can_not_delete_custom_field: Nieje možné vymazaÅ¥ užívateľské pole - error_unable_to_connect: Nieje možné vymazaÅ¥ ({{value}}) + error_unable_to_connect: Nieje možné vymazaÅ¥ (%{value}) error_can_not_remove_role: Táto roľa sa používa a nemôže byÅ¥ vymazaná. error_can_not_delete_tracker: Táto fronta obsahuje úlohy a nemôže byÅ¥ vymazaná. field_principal: Principal label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." + 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. @@ -907,7 +912,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -918,8 +923,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/sl.yml --- a/config/locales/sl.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/sl.yml Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ activerecord: errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "ni vkljuÄen na seznamu" exclusion: "je rezerviran" @@ -106,11 +110,11 @@ taken: "je že zaseden" not_a_number: "ni Å¡tevilo" not_a_date: "ni veljaven datum" - 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}}" + 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: "mora biti kasnejÅ¡i kot zaÄeten datum" @@ -147,34 +151,34 @@ notice_file_not_found: Stran na katero se želite povezati ne obstaja ali pa je bila umaknjena. notice_locking_conflict: Drug uporabnik je posodobil podatke. notice_not_authorized: Nimate privilegijev za dostop do te strani. - notice_email_sent: "E-poÅ¡tno sporoÄilo je bilo poslano {{value}}" - notice_email_error: "Ob poÅ¡iljanju e-sporoÄila je priÅ¡lo do napake ({{value}})" + notice_email_sent: "E-poÅ¡tno sporoÄilo je bilo poslano %{value}" + notice_email_error: "Ob poÅ¡iljanju e-sporoÄila je priÅ¡lo do napake (%{value})" notice_feeds_access_key_reseted: VaÅ¡ RSS dostopni kljuÄ je bil ponastavljen. - notice_failed_to_save_issues: "Neuspelo shranjevanje {{count}} zahtevka na {{total}} izbranem: {{ids}}." + notice_failed_to_save_issues: "Neuspelo shranjevanje %{count} zahtevka na %{total} izbranem: %{ids}." notice_no_issue_selected: "Izbran ni noben zahtevek! Prosimo preverite zahtevke, ki jih želite urediti." notice_account_pending: "VaÅ¡ raÄun je bil ustvarjen in Äaka na potrditev s strani administratorja." notice_default_data_loaded: Privzete nastavitve so bile uspeÅ¡no naložene. notice_unable_delete_version: Verzije ni bilo mogoÄe izbrisati. - error_can_t_load_default_data: "Privzetih nastavitev ni bilo mogoÄe naložiti: {{value}}" + error_can_t_load_default_data: "Privzetih nastavitev ni bilo mogoÄe naložiti: %{value}" error_scm_not_found: "Vnos ali revizija v shrambi ni bila najdena ." - error_scm_command_failed: "Med vzpostavljem povezave s shrambo je priÅ¡lo do napake: {{value}}" + error_scm_command_failed: "Med vzpostavljem povezave s shrambo je priÅ¡lo do napake: %{value}" error_scm_annotate: "Vnos ne obstaja ali pa ga ni mogoÄe komentirati." error_issue_not_found_in_project: 'Zahtevek ni bil najden ali pa ne pripada temu projektu' - mail_subject_lost_password: "VaÅ¡e {{value}} geslo" + mail_subject_lost_password: "VaÅ¡e %{value} geslo" mail_body_lost_password: 'Za spremembo glesla kliknite na naslednjo povezavo:' - mail_subject_register: "Aktivacija {{value}} vaÅ¡ega raÄuna" + mail_subject_register: "Aktivacija %{value} vaÅ¡ega raÄuna" mail_body_register: 'Za aktivacijo vaÅ¡ega raÄuna kliknite na naslednjo povezavo:' - mail_body_account_information_external: "Za prijavo lahko uporabite vaÅ¡ {{value}} raÄun." + mail_body_account_information_external: "Za prijavo lahko uporabite vaÅ¡ %{value} raÄun." mail_body_account_information: Informacije o vaÅ¡em raÄunu - mail_subject_account_activation_request: "{{value}} zahtevek za aktivacijo raÄuna" - mail_body_account_activation_request: "Registriral se je nov uporabnik ({{value}}). RaÄun Äaka na vaÅ¡o odobritev:" - mail_subject_reminder: "{{count}} zahtevek(zahtevki) zapadejo v naslednjih {{days}} dneh" - mail_body_reminder: "{{count}} zahtevek(zahtevki), ki so vam dodeljeni bodo zapadli v naslednjih {{days}} dneh:" + mail_subject_account_activation_request: "%{value} zahtevek za aktivacijo raÄuna" + mail_body_account_activation_request: "Registriral se je nov uporabnik (%{value}). RaÄun Äaka na vaÅ¡o odobritev:" + mail_subject_reminder: "%{count} zahtevek(zahtevki) zapadejo v naslednjih %{days} dneh" + mail_body_reminder: "%{count} zahtevek(zahtevki), ki so vam dodeljeni bodo zapadli v naslednjih %{days} dneh:" gui_validation_error: 1 napaka - gui_validation_error_plural: "{{count}} napak" + gui_validation_error_plural: "%{count} napak" field_name: Ime field_description: Opis @@ -236,6 +240,7 @@ field_attr_lastname: Oznaka za priimek field_attr_mail: Oznaka za e-naslov field_onthefly: Sprotna izdelava uporabnikov + field_start_date: ZaÄetek field_done_ratio: % Narejeno field_auth_source: NaÄin overovljanja field_hide_mail: Skrij moj e-naslov @@ -367,14 +372,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Vsi projekti label_project_latest: Zadnji projekti label_issue: Zahtevek label_issue_new: Nov zahtevek label_issue_plural: Zahtevki label_issue_view_all: Poglej vse zahtevke - label_issues_by: "Zahtevki od {{value}}" + label_issues_by: "Zahtevki od %{value}" label_issue_added: Zahtevek dodan label_issue_updated: Zahtevek posodobljen label_document: Dokument @@ -423,7 +428,7 @@ label_registered_on: Registriran label_activity: Aktivnost label_overall_activity: Celotna aktivnost - label_user_activity: "Aktivnost {{value}}" + label_user_activity: "Aktivnost %{value}" label_new: Nov label_logged_as: Prijavljen(a) kot label_environment: Okolje @@ -432,7 +437,7 @@ label_auth_source_new: Nov naÄin overovitve label_auth_source_plural: NaÄini overovitve label_subproject_plural: Podprojekti - label_and_its_subprojects: "{{value}} in njegovi podprojekti" + label_and_its_subprojects: "%{value} in njegovi podprojekti" label_min_max_length: Min - Max dolžina label_list: Seznam label_date: Datum @@ -443,8 +448,8 @@ label_text: Dolgo besedilo label_attribute: Lastnost label_attribute_plural: Lastnosti - label_download: "{{count}} Prenos" - label_download_plural: "{{count}} Prenosi" + label_download: "%{count} Prenos" + label_download_plural: "%{count} Prenosi" label_no_data: Ni podatkov za prikaz label_change_status: Spremeni stanje label_history: Zgodovina @@ -475,17 +480,17 @@ label_closed_issues: zapri zahtevek label_closed_issues_plural: zapri zahtevke label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Skupaj label_permissions: Dovoljenja label_current_status: Trenutno stanje @@ -503,7 +508,7 @@ label_months_from: mesecev od label_gantt: Gantt label_internal: Notranji - label_last_changes: "zadnjih {{count}} sprememb" + label_last_changes: "zadnjih %{count} sprememb" label_change_view_all: Poglej vse spremembe label_personalize_page: Individualiziraj to stran label_comment: Komentar @@ -511,7 +516,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Dodaj komentar label_comment_added: Komentar dodan label_comment_delete: IzbriÅ¡i komentarje @@ -530,7 +535,7 @@ label_yesterday: vÄeraj label_this_week: ta teden label_last_week: pretekli teden - label_last_n_days: "zadnjih {{count}} dni" + label_last_n_days: "zadnjih %{count} dni" label_this_month: ta mesec label_last_month: zadnji mesec label_this_year: to leto @@ -544,8 +549,8 @@ label_repository: Shramba label_repository_plural: Shrambe label_browse: Prebrskaj - label_modification: "{{count}} sprememba" - label_modification_plural: "{{count}} spremembe" + label_modification: "%{count} sprememba" + label_modification_plural: "%{count} spremembe" label_revision: Revizija label_revision_plural: Revizije label_associated_revisions: Povezane revizije @@ -563,8 +568,8 @@ label_sort_lower: Premakni dol label_sort_lowest: Premakni na dno label_roadmap: NaÄrt - label_roadmap_due_in: "Do {{value}}" - label_roadmap_overdue: "{{value}} zakasnel" + label_roadmap_due_in: "Do %{value}" + label_roadmap_overdue: "%{value} zakasnel" label_roadmap_no_issues: Ni zahtevkov za to verzijo label_search: IÅ¡Äi label_result_plural: Rezultati @@ -582,8 +587,8 @@ label_changes_details: Podrobnosti o vseh spremembah label_issue_tracking: Sledenje zahtevkom label_spent_time: Porabljen Äas - label_f_hour: "{{value}} ura" - label_f_hour_plural: "{{value}} ur" + label_f_hour: "%{value} ura" + label_f_hour_plural: "%{value} ur" label_time_tracking: Sledenje Äasu label_change_plural: Spremembe label_statistics: Statistika @@ -632,13 +637,13 @@ label_date_from: Do label_date_to: Do label_language_based: Glede na uporabnikov jezik - label_sort_by: "Razporedi po {{value}}" + label_sort_by: "Razporedi po %{value}" label_send_test_email: PoÅ¡lji testno e-pismo - label_feeds_access_key_created_on: "RSS dostopni kljuÄ narejen {{value}} nazaj" + label_feeds_access_key_created_on: "RSS dostopni kljuÄ narejen %{value} nazaj" label_module_plural: Moduli - label_added_time_by: "Dodan {{author}} {{age}} nazaj" - label_updated_time_by: "Posodobljen od {{author}} {{age}} nazaj" - label_updated_time: "Posodobljen {{value}} nazaj" + label_added_time_by: "Dodan %{author} %{age} nazaj" + label_updated_time_by: "Posodobljen od %{author} %{age} nazaj" + label_updated_time: "Posodobljen %{value} nazaj" label_jump_to_a_project: SkoÄi na projekt... label_file_plural: Datoteke label_changeset_plural: Zapisi sprememb @@ -654,7 +659,7 @@ label_registration_activation_by_email: aktivacija raÄuna po e-poÅ¡ti label_registration_manual_activation: roÄna aktivacija raÄuna label_registration_automatic_activation: samodejna aktivacija raÄuna - label_display_per_page: "Na stran: {{value}}" + label_display_per_page: "Na stran: %{value}" label_age: Starost label_change_properties: Sprememba lastnosti label_general: SploÅ¡no @@ -721,43 +726,43 @@ text_regexp_info: npr. ^[A-Z0-9]+$ text_min_max_length_info: 0 pomeni brez omejitev text_project_destroy_confirmation: Ali ste prepriÄani da želite izbrisati izbrani projekt in vse z njim povezane podatke? - text_subprojects_destroy_warning: "Njegov(i) podprojekt(i): {{value}} bodo prav tako izbrisani." + text_subprojects_destroy_warning: "Njegov(i) podprojekt(i): %{value} bodo prav tako izbrisani." text_workflow_edit: Izberite vlogo in zahtevek za urejanje poteka dela text_are_you_sure: Ali ste prepriÄani? text_tip_issue_begin_day: naloga z zaÄetkom na ta dan text_tip_issue_end_day: naloga z zakljuÄkom na ta dan text_tip_issue_begin_end_day: naloga ki se zaÄne in konÄa ta dan text_project_identifier_info: 'Dovoljene so samo male Ärke (a-z), Å¡tevilke in vezaji.
    Enkrat shranjen identifikator ne more biti spremenjen.' - text_caracters_maximum: "najveÄ {{count}} znakov." - text_caracters_minimum: "Mora biti vsaj dolg vsaj {{count}} znakov." - text_length_between: "Dolžina med {{min}} in {{max}} znakov." + text_caracters_maximum: "najveÄ %{count} znakov." + text_caracters_minimum: "Mora biti vsaj dolg vsaj %{count} znakov." + text_length_between: "Dolžina med %{min} in %{max} znakov." text_tracker_no_workflow: Potek dela za to vrsto zahtevka ni doloÄen text_unallowed_characters: Nedovoljeni znaki text_comma_separated: Dovoljenih je veÄ vrednosti (loÄenih z vejico). text_issues_ref_in_commit_messages: Zahtevki sklicev in popravkov v sporoÄilu predaje - text_issue_added: "Zahtevek {{id}} je sporoÄil(a) {{author}}." - text_issue_updated: "Zahtevek {{id}} je posodobil(a) {{author}}." + text_issue_added: "Zahtevek %{id} je sporoÄil(a) %{author}." + text_issue_updated: "Zahtevek %{id} je posodobil(a) %{author}." text_wiki_destroy_confirmation: Ali ste prepriÄani da želite izbrisati ta wiki in vso njegovo vsebino? - text_issue_category_destroy_question: "Nekateri zahtevki ({{count}}) so dodeljeni tej kategoriji. Kaj želite storiti?" + text_issue_category_destroy_question: "Nekateri zahtevki (%{count}) so dodeljeni tej kategoriji. Kaj želite storiti?" text_issue_category_destroy_assignments: Odstrani naloge v kategoriji text_issue_category_reassign_to: Ponovno dodeli zahtevke tej kategoriji text_user_mail_option: "Na neizbrane projekte boste prejemali le obvestila o zadevah ki jih spremljate ali v katere ste vkljuÄeni (npr. zahtevki katerih avtor(ica) ste)" text_no_configuration_data: "Vloge, vrste zahtevkov, statusi zahtevkov in potek dela Å¡e niso bili doloÄeni. \nZelo priporoÄljivo je, da naložite privzeto konfiguracijo, ki jo lahko kasneje tudi prilagodite." text_load_default_configuration: Naloži privzeto konfiguracijo - text_status_changed_by_changeset: "Dodano v zapis sprememb {{value}}." + text_status_changed_by_changeset: "Dodano v zapis sprememb %{value}." text_issues_destroy_confirmation: 'Ali ste prepriÄani, da želite izbrisati izbrani(e) zahtevek(ke)?' text_select_project_modules: 'Izberite module, ki jih želite omogoÄiti za ta projekt:' text_default_administrator_account_changed: Spremenjen privzeti administratorski raÄun text_file_repository_writable: OmogoÄeno pisanje v shrambo datotek text_rmagick_available: RMagick je na voljo(neobvezno) - text_destroy_time_entries_question: "{{hours}} ur je bilo opravljenih na zahtevku, ki ga želite izbrisati. Kaj želite storiti?" + text_destroy_time_entries_question: "%{hours} ur je bilo opravljenih na zahtevku, ki ga želite izbrisati. Kaj želite storiti?" text_destroy_time_entries: IzbriÅ¡i opravljene ure text_assign_time_entries_to_project: Predaj opravljene ure projektu text_reassign_time_entries: 'Prenesi opravljene ure na ta zahtevek:' - text_user_wrote: "{{value}} je napisal(a):" - text_enumeration_destroy_question: "{{count}} objektov je doloÄenih tej vrednosti." + text_user_wrote: "%{value} je napisal(a):" + text_enumeration_destroy_question: "%{count} objektov je doloÄenih tej vrednosti." text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:' - text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/email.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" + text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/configuration.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniÅ¡kemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniÅ¡kem imenu ali e-poÅ¡tnem naslovu so samodejno dodeljeni." text_diff_truncated: '... Ta sprememba je bila odsekana ker presega najveÄjo velikost ki je lahko prikazana.' @@ -786,7 +791,7 @@ enumeration_issue_priorities: Prioritete zahtevkov enumeration_doc_categories: Kategorije dokumentov enumeration_activities: Aktivnosti (sledenje Äasa) - warning_attachments_not_saved: "{{count}} file(s) could not be saved." + warning_attachments_not_saved: "%{count} file(s) could not be saved." field_editable: Editable text_plugin_assets_writable: Plugin assets directory writable label_display: Display @@ -802,21 +807,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -824,14 +829,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -866,9 +871,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -895,12 +900,12 @@ 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_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}}." + 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. @@ -908,7 +913,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -919,8 +924,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/sr-YU.yml --- a/config/locales/sr-YU.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/sr-YU.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,930 +1,943 @@ -# 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: - 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_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/email.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 +# 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. - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" + 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/sr.yml --- a/config/locales/sr.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/sr.yml Thu Mar 03 12:11:53 2011 +0000 @@ -34,37 +34,37 @@ half_a_minute: "пола минута" less_than_x_seconds: one: "мање од једне Ñекунде" - other: "мање од {{count}} Ñек." + other: "мање од %{count} Ñек." x_seconds: one: "једна Ñекунда" - other: "{{count}} Ñек." + other: "%{count} Ñек." less_than_x_minutes: one: "мање од минута" - other: "мање од {{count}} мин." + other: "мање од %{count} мин." x_minutes: one: "један минут" - other: "{{count}} мин." + other: "%{count} мин." about_x_hours: one: "приближно један Ñат" - other: "приближно {{count}} Ñати" + other: "приближно %{count} Ñати" x_days: one: "један дан" - other: "{{count}} дана" + other: "%{count} дана" about_x_months: one: "приближно један меÑец" - other: "приближно {{count}} меÑеци" + other: "приближно %{count} меÑеци" x_months: one: "један меÑец" - other: "{{count}} меÑеци" + other: "%{count} меÑеци" about_x_years: one: "приближно годину дана" - other: "приближно {{count}} год." + other: "приближно %{count} год." over_x_years: one: "преко годину дана" - other: "преко {{count}} год." + other: "преко %{count} год." almost_x_years: one: "Ñкоро годину дана" - other: "Ñкоро {{count}} год." + other: "Ñкоро %{count} год." number: format: @@ -95,6 +95,10 @@ 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: "је резервиÑан" @@ -103,17 +107,17 @@ accepted: "мора бити прихваћен" empty: "не може бити празно" blank: "не може бити празно" - too_long: "је предугачка (макÑимум знакова је {{count}})" - too_short: "је прекратка (минимум знакова је {{count}})" - wrong_length: "је погрешне дужине (број знакова мора бити {{count}})" + 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}}" + 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: "мора бити већи од почетног датума" @@ -150,12 +154,12 @@ notice_file_not_found: Страна којој желите приÑтупити не поÑтоји или је уклоњена. notice_locking_conflict: Податак је ажуриран од Ñтране другог кориÑника. notice_not_authorized: ÐиÑте овлашћени за приÑтуп овој Ñтрани. - notice_email_sent: "E-порука је поÑлата на {{value}}" - notice_email_error: "Догодила Ñе грешка приликом Ñлања е-поруке ({{value}})" + notice_email_sent: "E-порука је поÑлата на %{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_failed_to_save_issues: "ÐеуÑпешно Ñнимање %{count} проблема од %{total} одабраних: %{ids}." + notice_failed_to_save_members: "ÐеуÑпешно Ñнимање члана(ова): %{errors}." notice_no_issue_selected: "Ðи један проблем није одабран! Молимо, одаберите проблем који желите да мењате." notice_account_pending: "Ваш налог је креиран и чека на одобрење админиÑтратора." notice_default_data_loaded: Подразумевано конфигуриÑање је уÑпешно учитано. @@ -163,9 +167,9 @@ notice_unable_delete_time_entry: Ставку евиденције времена је немогуће избриÑати. notice_issue_done_ratios_updated: ÐžÐ´Ð½Ð¾Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ… проблема је ажуриран. - error_can_t_load_default_data: "Подразумевано конфигуриÑање је немогуће учитати: {{value}}" + error_can_t_load_default_data: "Подразумевано конфигуриÑање је немогуће учитати: %{value}" error_scm_not_found: "Ставка или иÑправка ниÑу пронађене у Ñпремишту." - error_scm_command_failed: "Грешка Ñе јавила приликом покушаја приÑтупа Ñпремишту: {{value}}" + error_scm_command_failed: "Грешка Ñе јавила приликом покушаја приÑтупа Ñпремишту: %{value}" error_scm_annotate: "Ставка не поÑтоји или не може бити означена." error_issue_not_found_in_project: 'Проблем није пронађен или не припада овом пројекту.' error_no_tracker_in_project: 'Ðи једно праћење није повезано Ñа овим пројектом. Молимо проверите подешавања пројекта.' @@ -179,26 +183,26 @@ error_workflow_copy_source: 'Молимо одаберите изворно праћење или улогу' error_workflow_copy_target: 'Молимо одаберите одредишно праћење и улогу' error_unable_delete_issue_status: 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° је немогуће обриÑати' - error_unable_to_connect: "Повезивање Ñа ({{value}}) је немогуће" - warning_attachments_not_saved: "{{count}} датотека не може бити Ñнимљена." + error_unable_to_connect: "Повезивање Ñа (%{value}) је немогуће" + warning_attachments_not_saved: "%{count} датотека не може бити Ñнимљена." - mail_subject_lost_password: "Ваша {{value}} лозинка" + mail_subject_lost_password: "Ваша %{value} лозинка" mail_body_lost_password: 'За промену ваше лозинке, кликните на Ñледећи линк:' - mail_subject_register: "Ðктивација вашег {{value}} налога" + mail_subject_register: "Ðктивација вашег %{value} налога" mail_body_register: 'За активацију вашег налога, кликните на Ñледећи линк:' - mail_body_account_information_external: "Ваш налог {{value}} можете кориÑтити за пријаву." + 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: "Wiki Ñтраница '{{id}}' је додата" - mail_body_wiki_content_added: "{{author}} је додао wiki Ñтраницу '{{id}}'." - mail_subject_wiki_content_updated: "Wiki Ñтраница '{{id}}' је ажурирана" - mail_body_wiki_content_updated: "{{author}} је ажурирао wiki Ñтраницу '{{id}}'." + 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: "Wiki Ñтраница '%{id}' је додата" + 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: једна грешка - gui_validation_error_plural: "{{count}} грешака" + gui_validation_error_plural: "%{count} грешака" field_name: Ðазив field_description: ÐžÐ¿Ð¸Ñ @@ -261,6 +265,7 @@ field_attr_lastname: Ðтрибут презимена field_attr_mail: Ðтрибут е-адреÑе field_onthefly: Креирање кориÑника у току рада + field_start_date: Почетак field_done_ratio: % урађено field_auth_source: Режим потврде идентитета field_hide_mail: Сакриј моју е-адреÑу @@ -421,14 +426,14 @@ label_x_projects: zero: нема пројеката one: један пројекат - other: "{{count}} пројеката" + 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_issues_by: "Проблеми (%{value})" label_issue_added: Проблем је додат label_issue_updated: Проблем је ажуриран label_document: Документ @@ -479,7 +484,7 @@ label_registered_on: РегиÑтрован label_activity: ÐктивноÑÑ‚ label_overall_activity: Целокупна активноÑÑ‚ - label_user_activity: "ÐктивноÑÑ‚ кориÑника {{value}}" + label_user_activity: "ÐктивноÑÑ‚ кориÑника %{value}" label_new: Ðово label_logged_as: Пријављени Ñте као label_environment: Окружење @@ -489,7 +494,7 @@ label_auth_source_plural: Режими потврде идентитета label_subproject_plural: Потпројекти label_subproject_new: Ðови потпројекат - label_and_its_subprojects: "{{value}} и његови потпројекти" + label_and_its_subprojects: "%{value} и његови потпројекти" label_min_max_length: Мин. - МакÑ. дужина label_list: СпиÑак label_date: Датум @@ -500,8 +505,8 @@ label_text: Дуги текÑÑ‚ label_attribute: ОÑобина label_attribute_plural: ОÑобине - label_download: "{{count}} преузимање" - label_download_plural: "{{count}} преузимања" + label_download: "%{count} преузимање" + label_download_plural: "%{count} преузимања" label_no_data: Ðема података за приказивање label_change_status: Промена ÑтатуÑа label_history: ИÑторија @@ -533,17 +538,17 @@ label_closed_issues: затворен label_closed_issues_plural: затворених label_x_open_issues_abbr_on_total: - zero: 0 отворених / {{total}} - one: 1 отворен / {{total}} - other: "{{count}} отворених / {{total}}" + zero: 0 отворених / %{total} + one: 1 отворен / %{total} + other: "%{count} отворених / %{total}" label_x_open_issues_abbr: zero: 0 отворених one: 1 отворен - other: "{{count}} отворених" + other: "%{count} отворених" label_x_closed_issues_abbr: zero: 0 затворених one: 1 затворен - other: "{{count}} затворених" + other: "%{count} затворених" label_total: Укупно label_permissions: Дозволе label_current_status: Тренутни ÑÑ‚Ð°Ñ‚ÑƒÑ @@ -561,7 +566,7 @@ label_months_from: меÑеци од label_gantt: Гантов дијаграм label_internal: Унутрашњи - label_last_changes: "поÑледњих {{count}} промена" + label_last_changes: "поÑледњих %{count} промена" label_change_view_all: Прикажи Ñве промене label_personalize_page: ПерÑонализуј ову Ñтрану label_comment: Коментар @@ -569,7 +574,7 @@ label_x_comments: zero: без коментара one: један коментар - other: "{{count}} коментара" + other: "%{count} коментара" label_comment_add: Додај коментар label_comment_added: Коментар додат label_comment_delete: Обриши коментаре @@ -590,7 +595,7 @@ label_yesterday: јуче 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: ове године @@ -604,13 +609,13 @@ label_repository: Спремиште label_repository_plural: Спремишта label_browse: Прегледање - label_modification: "{{count}} промена" - label_modification_plural: "{{count}} промена" + label_modification: "%{count} промена" + label_modification_plural: "%{count} промена" label_branch: Грана label_tag: Ознака label_revision: Ревизија label_revision_plural: Ревизије - label_revision_id: "Ревизија {{value}}" + label_revision_id: "Ревизија %{value}" label_associated_revisions: Придружене ревизије label_added: додато label_modified: промењено @@ -627,8 +632,8 @@ label_sort_lower: Премештање на доле label_sort_lowest: Премештање на дно label_roadmap: План рада - label_roadmap_due_in: "ДоÑпева {{value}}" - label_roadmap_overdue: "{{value}} најкаÑније" + label_roadmap_due_in: "ДоÑпева %{value}" + label_roadmap_overdue: "%{value} најкаÑније" label_roadmap_no_issues: Ðема проблема за ову верзију label_search: Претрага label_result_plural: Резултати @@ -647,8 +652,8 @@ label_issue_tracking: Праћење проблема label_spent_time: Утрошено време label_overall_spent_time: Целокупно утрошено време - label_f_hour: "{{value}} Ñат" - label_f_hour_plural: "{{value}} Ñати" + label_f_hour: "%{value} Ñат" + label_f_hour_plural: "%{value} Ñати" label_time_tracking: Праћење времена label_change_plural: Промене label_statistics: СтатиÑтика @@ -699,15 +704,15 @@ label_date_from: Шаље label_date_to: Прима label_language_based: Базирано на језику кориÑника - label_sort_by: "Сортирано по {{value}}" + 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_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_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: Скупови промена @@ -723,7 +728,7 @@ label_registration_activation_by_email: активација налога путем е-поруке label_registration_manual_activation: ручна активација налога label_registration_automatic_activation: аутоматÑка активација налога - label_display_per_page: "Број Ñтавки по Ñтраници: {{value}}" + label_display_per_page: "Број Ñтавки по Ñтраници: %{value}" label_age: СтароÑÑ‚ label_change_properties: Промени ÑвојÑтва label_general: Општи @@ -746,7 +751,7 @@ label_sort: Сортирање label_ascending: РаÑтући низ label_descending: Опадајући низ - label_date_from_to: Од {{start}} до {{end}} + label_date_from_to: Од %{start} до %{end} label_wiki_content_added: Wiki Ñтраница је додата label_wiki_content_updated: Wiki Ñтраница је ажурирана label_group: Група @@ -765,7 +770,7 @@ label_display_used_statuses_only: Приказуј ÑтатуÑе коришћене Ñамо од Ñтране овог праћења label_api_access_key: API приÑтупни кључ label_missing_api_access_key: ÐедоÑтаје API приÑтупни кључ - label_api_access_key_created_on: "API приÑтупни кључ је креиран пре {{value}}" + label_api_access_key_created_on: "API приÑтупни кључ је креиран пре %{value}" label_profile: Профил label_subtask_plural: Подзадатак label_project_copy_notifications: Пошаљи е-поруку Ñа обавештењем приликом копирања пројекта @@ -828,53 +833,53 @@ 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_journal_changed: "{{label}} промењен од {{old}} у {{new}}" - text_journal_set_to: "{{label}} поÑтављен у {{value}}" - text_journal_deleted: "{{label}} избриÑано ({{old}})" - text_journal_added: "{{label}} {{value}} додато" + 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-ш), бројеви и цртице.
    Једном Ñнимљен идентификатор више Ñе не може променити.' - text_caracters_maximum: "Ðајвише {{count}} знак(ова)." - text_caracters_minimum: "Број знакова мора бити најмање {{count}}." - text_length_between: "Број знакова мора бити између {{min}} и {{max}}." + 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: Дозвољене Ñу вишеÑтруке вредноÑти (један ред за Ñваку вредноÑÑ‚). text_issues_ref_in_commit_messages: Референцирање и поправљање проблема у извршним порукама - text_issue_added: "{{author}} је пријавио проблем {{id}}." - text_issue_updated: "{{author}} је ажурирао проблем {{id}}." + text_issue_added: "%{author} је пријавио проблем %{id}." + text_issue_updated: "%{author} је ажурирао проблем %{id}." text_wiki_destroy_confirmation: ЈеÑте ли Ñигурни да желите да обришете wiki и Ñав Ñадржај? - text_issue_category_destroy_question: "Ðеколико проблема ({{count}}) је додељено овој категорији. Шта желите да урадите?" + 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_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_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_user_wrote: "%{value} је напиÑао:" + text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредноÑти." text_enumeration_category_reassign_to: 'Додели их поново овој вредноÑти:' - text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/email.yml и покрените поново апликацију за њихово омогућавање." + text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/configuration.yml и покрените поново апликацију за њихово омогућавање." 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_destroy_question: "Ова Ñтраница има %{descendants} подређених Ñтраница и подÑтраница. Шта желите да урадите?" text_wiki_page_nullify_children: "Задржи подређене Ñтранице као корене Ñтранице" text_wiki_page_destroy_children: "Избриши подређене Ñтранице и Ñве њихове подÑтранице" text_wiki_page_reassign_children: "Додели поново подређене Ñтранице овој матичној Ñтраници" @@ -913,7 +918,7 @@ project_module_gantt: Гантов дијаграм project_module_calendar: Календар - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -924,8 +929,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/sv.yml --- a/config/locales/sv.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/sv.yml Thu Mar 03 12:11:53 2011 +0000 @@ -54,7 +54,7 @@ byte: one: "Byte" other: "Bytes" - kb: "KB" + kb: "kB" mb: "MB" gb: "GB" tb: "TB" @@ -65,44 +65,44 @@ half_a_minute: "en halv minut" less_than_x_seconds: one: "mindre än en sekund" - other: "mindre än {{count}} sekunder" + other: "mindre än %{count} sekunder" x_seconds: one: "en sekund" - other: "{{count}} sekunder" + other: "%{count} sekunder" less_than_x_minutes: one: "mindre än en minut" - other: "mindre än {{count}} minuter" + other: "mindre än %{count} minuter" x_minutes: one: "en minut" - other: "{{count}} minuter" + other: "%{count} minuter" about_x_hours: one: "ungefär en timme" - other: "ungefär {{count}} timmar" + other: "ungefär %{count} timmar" x_days: one: "en dag" - other: "{{count}} dagar" + other: "%{count} dagar" about_x_months: one: "ungefär en mÃ¥nad" - other: "ungefär {{count}} mÃ¥nader" + other: "ungefär %{count} mÃ¥nader" x_months: one: "en mÃ¥nad" - other: "{{count}} mÃ¥nader" + other: "%{count} mÃ¥nader" about_x_years: one: "ungefär ett Ã¥r" - other: "ungefär {{count}} Ã¥r" + other: "ungefär %{count} Ã¥r" over_x_years: one: "mer än ett Ã¥r" - other: "mer än {{count}} Ã¥r" + other: "mer än %{count} Ã¥r" almost_x_years: one: "nästan 1 Ã¥r" - other: "nästan {{count}} Ã¥r" + other: "nästan %{count} Ã¥r" activerecord: errors: template: header: - one: "Ett fel förhindrade denna {{model}} frÃ¥n att sparas" - other: "{{count}} fel förhindrade denna {{model}} frÃ¥n att sparas" + one: "Ett fel förhindrade denna %{model} frÃ¥n att sparas" + other: "%{count} fel förhindrade denna %{model} frÃ¥n att sparas" # The variable :count is also available body: "Det var problem med följande fält:" # The values :model, :attribute and :value are always available for interpolation @@ -115,16 +115,16 @@ accepted : "mÃ¥ste vara accepterad" empty: "fÃ¥r ej vara tom" blank: "mÃ¥ste anges" - too_long: "är för lÃ¥ng (maximum är {{count}} tecken)" - too_short: "är för kort (minimum är {{count}} tecken)" - wrong_length: "har fel längd (ska vara {{count}} tecken)" + too_long: "är för lÃ¥ng (maximum är %{count} tecken)" + too_short: "är för kort (minimum är %{count} tecken)" + wrong_length: "har fel längd (ska vara %{count} tecken)" taken: "har redan tagits" not_a_number: "är inte ett nummer" - greater_than: "mÃ¥ste vara större än {{count}}" - greater_than_or_equal_to: "mÃ¥ste vara större än eller lika med {{count}}" + greater_than: "mÃ¥ste vara större än %{count}" + greater_than_or_equal_to: "mÃ¥ste vara större än eller lika med %{count}" equal_to: "mÃ¥ste vara samma som" - less_than: "mÃ¥ste vara mindre än {{count}}" - less_than_or_equal_to: "mÃ¥ste vara mindre än eller lika med {{count}}" + less_than: "mÃ¥ste vara mindre än %{count}" + less_than_or_equal_to: "mÃ¥ste vara mindre än eller lika med %{count}" odd: "mÃ¥ste vara udda" even: "mÃ¥ste vara jämnt" greater_than_start_date: "mÃ¥ste vara senare än startdatumet" @@ -196,28 +196,29 @@ notice_locking_conflict: Data har uppdaterats av en annan användare. notice_not_authorized: Du saknar behörighet att komma Ã¥t den här sidan. notice_not_authorized_archived_project: Projektet du försöker komma Ã¥t har arkiverats. - notice_email_sent: "Ett mail skickades till {{value}}" - notice_email_error: "Ett fel inträffade när mail skickades ({{value}})" + notice_email_sent: "Ett mail skickades till %{value}" + notice_email_error: "Ett fel inträffade när mail skickades (%{value})" notice_feeds_access_key_reseted: Din RSS-nyckel Ã¥terställdes. notice_api_access_key_reseted: Din API-nyckel Ã¥terställdes. - notice_failed_to_save_issues: "Misslyckades med att spara {{count}} ärende(n) pÃ¥ {{total}} valt: {{ids}}." - notice_failed_to_save_members: "Misslyckades med att spara medlem(mar): {{errors}}." + notice_failed_to_save_issues: "Misslyckades med att spara %{count} ärende(n) pÃ¥ %{total} valt: %{ids}." + notice_failed_to_save_members: "Misslyckades med att spara medlem(mar): %{errors}." notice_no_issue_selected: "Inget ärende är markerat! Var vänlig, markera de ärenden du vill ändra." notice_account_pending: "Ditt konto skapades och avvaktar nu administratörens godkännande." 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_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}}" + error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}" error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv." - error_scm_command_failed: "Ett fel inträffade vid försök att nÃ¥ versionsarkivet: {{value}}" + error_scm_command_failed: "Ett fel inträffade vid försök att nÃ¥ versionsarkivet: %{value}" error_scm_annotate: "Inlägget existerar inte eller kan inte kommenteras." error_issue_not_found_in_project: 'Ärendet hittades inte eller sÃ¥ tillhör det inte detta projekt' error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.' error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (GÃ¥ till "Administration -> Ärendestatus").' error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält - error_can_not_delete_tracker: Det finns ärenden av denna typ och den är därför inte möjlig att ta bort. + error_can_not_delete_tracker: "Det finns ärenden av denna typ och den är därför inte möjlig att ta bort." error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort." error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas pÃ¥ nytt' error_can_not_archive_project: Detta projekt kan inte arkiveras @@ -225,27 +226,27 @@ error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll' error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mÃ¥l' error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort' - error_unable_to_connect: Kan inte ansluta ({{value}}) + error_unable_to_connect: "Kan inte ansluta (%{value})" - warning_attachments_not_saved: "{{count}} fil(er) kunde inte sparas." + warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas." - mail_subject_lost_password: "Ditt {{value}} lösenord" + mail_subject_lost_password: "Ditt %{value} lösenord" mail_body_lost_password: 'För att ändra ditt lösenord, klicka pÃ¥ följande länk:' - mail_subject_register: "Din {{value}} kontoaktivering" + mail_subject_register: "Din %{value} kontoaktivering" mail_body_register: 'För att aktivera ditt konto, klicka pÃ¥ följande länk:' - mail_body_account_information_external: "Du kan använda ditt {{value}}-konto för att logga in." + mail_body_account_information_external: "Du kan använda ditt %{value}-konto för att logga in." mail_body_account_information: Din kontoinformation - mail_subject_account_activation_request: "{{value}} begäran om kontoaktivering" - mail_body_account_activation_request: "En ny användare ({{value}}) har registrerat sig och avvaktar ditt godkännande:" - mail_subject_reminder: "{{count}} ärende(n) har deadline under de kommande {{days}} dagarna" - mail_body_reminder: "{{count}} ärende(n) som är tilldelat dig har deadline under de {{days}} dagarna:" - mail_subject_wiki_content_added: "'{{id}}' wikisida has lagts till" - mail_body_wiki_content_added: The '{{id}}' wikisida has lagts till av {{author}}. - mail_subject_wiki_content_updated: "'{{id}}' wikisida har uppdaterats" - mail_body_wiki_content_updated: The '{{id}}' wikisida har uppdaterats av {{author}}. + mail_subject_account_activation_request: "%{value} begäran om kontoaktivering" + mail_body_account_activation_request: "En ny användare (%{value}) har registrerat sig och avvaktar ditt godkännande:" + mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna" + mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:" + mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till" + mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}." + mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats" + mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}." gui_validation_error: 1 fel - gui_validation_error_plural: "{{count}} fel" + gui_validation_error_plural: "%{count} fel" field_name: Namn field_description: Beskrivning @@ -308,6 +309,7 @@ field_attr_lastname: Efternamnsattribut field_attr_mail: Mailattribut field_onthefly: Skapa användare on-the-fly + field_start_date: Startdatum field_done_ratio: % Klart field_auth_source: Autentiseringsläge field_hide_mail: Dölj min mailadress @@ -339,9 +341,10 @@ field_group_by: Gruppera resultat efter field_sharing: Delning field_parent_issue: Förälderaktivitet - field_member_of_group: Tilldelad användares grupp - field_assigned_to_role: Tilldelad användares roll + field_member_of_group: "Tilldelad användares grupp" + field_assigned_to_role: "Tilldelad användares roll" field_text: Textfält + field_visible: Synlig setting_app_title: Applikationsrubrik setting_app_subtitle: Applikationsunderrubrik @@ -351,14 +354,14 @@ setting_self_registration: Självregistrering setting_attachment_max_size: Maxstorlek pÃ¥ bilaga setting_issues_export_limit: Exportgräns för ärenden - setting_mail_from: Avsändare + setting_mail_from: Avsändaradress setting_bcc_recipients: Hemlig kopia (bcc) till mottagare setting_plain_text_mail: Oformaterad text i mail (ingen HTML) setting_host_name: Värddatornamn setting_text_formatting: Textformatering setting_wiki_compression: Komprimering av wikihistorik setting_feeds_limit: InnehÃ¥llsgräns för Feed - setting_default_projects_public: Nya projekt är publika som standard + setting_default_projects_public: Nya projekt är publika setting_autofetch_changesets: Automatisk hämtning av commits setting_sys_api_enabled: Aktivera WS för versionsarkivhantering setting_commit_ref_keywords: Referens-nyckelord @@ -370,14 +373,15 @@ 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 setting_per_page_options: Alternativ, objekt per sida setting_user_format: Visningsformat för användare setting_activity_days_default: Dagar som visas pÃ¥ projektaktivitet - setting_display_subprojects_issues: Visa ärenden frÃ¥n underprojekt i huvudprojekt som standard + setting_display_subprojects_issues: Visa ärenden frÃ¥n underprojekt i huvudprojekt setting_enabled_scm: Aktivera SCM - setting_mail_handler_body_delimiters: Trunkera mail efter en av följande rader + setting_mail_handler_body_delimiters: "Trunkera mail efter en av följande rader" setting_mail_handler_api_enabled: Aktivera WS för inkommande mail setting_mail_handler_api_key: API-nyckel setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt @@ -389,7 +393,7 @@ setting_openid: TillÃ¥t inloggning och registrering med OpenID setting_password_min_length: Minsta tillÃ¥tna lösenordslängd setting_new_project_user_role_id: Tilldelad roll för en icke-administratör som skapar ett projekt - setting_default_projects_modules: Standardaktiverade moduler för nya projekt + setting_default_projects_modules: Aktiverade moduler för nya projekt setting_issue_done_ratio: Beräkna % klart med setting_issue_done_ratio_issue_field: Använd ärendefältet setting_issue_done_ratio_issue_status: Använd ärendestatus @@ -397,6 +401,9 @@ setting_rest_api_enabled: Aktivera REST webbtjänst setting_cache_formatted_text: Cacha formaterad text setting_default_notification_option: Standard notifieringsalternativ + setting_commit_logtime_enabled: Aktivera tidloggning + setting_commit_logtime_activity_id: Aktivitet för loggad tid + setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat permission_add_project: Skapa projekt permission_add_subprojects: Skapa underprojekt @@ -475,14 +482,14 @@ label_x_projects: zero: inga projekt one: 1 projekt - other: "{{count}} projekt" + other: "%{count} projekt" label_project_all: Alla projekt label_project_latest: Senaste projekt label_issue: Ärende label_issue_new: Nytt ärende label_issue_plural: Ärenden label_issue_view_all: Visa alla ärenden - label_issues_by: "Ärenden {{value}}" + label_issues_by: "Ärenden %{value}" label_issue_added: Ärende tillagt label_issue_updated: Ärende uppdaterat label_document: Dokument @@ -533,7 +540,7 @@ label_registered_on: Registrerad label_activity: Aktivitet label_overall_activity: All aktivitet - label_user_activity: "Aktiviteter för {{value}}" + label_user_activity: "Aktiviteter för %{value}" label_new: Ny label_logged_as: Inloggad som label_environment: Miljö @@ -543,7 +550,7 @@ label_auth_source_plural: Autentiseringslägen label_subproject_plural: Underprojekt label_subproject_new: Nytt underprojekt - label_and_its_subprojects: "{{value}} och dess underprojekt" + label_and_its_subprojects: "%{value} och dess underprojekt" label_min_max_length: Min./Max.-längd label_list: Lista label_date: Datum @@ -554,8 +561,8 @@ label_text: LÃ¥ng text label_attribute: Attribut label_attribute_plural: Attribut - label_download: "{{count}} Nerladdning" - label_download_plural: "{{count}} Nerladdningar" + label_download: "%{count} Nerladdning" + label_download_plural: "%{count} Nerladdningar" label_no_data: Ingen data att visa label_change_status: Ändra status label_history: Historia @@ -579,7 +586,7 @@ label_version_plural: Versioner label_close_versions: Stäng klara versioner label_confirmation: Bekräftelse - label_export_to: Exportera till + label_export_to: 'Finns även som:' label_read: Läs... label_public_projects: Publika projekt label_open_issues: öppen @@ -587,17 +594,17 @@ label_closed_issues: stängd label_closed_issues_plural: stängda label_x_open_issues_abbr_on_total: - zero: 0 öppna av {{total}} - one: 1 öppen av {{total}} - other: "{{count}} öppna av {{total}}" + zero: 0 öppna av %{total} + one: 1 öppen av %{total} + other: "%{count} öppna av %{total}" label_x_open_issues_abbr: zero: 0 öppna one: 1 öppen - other: "{{count}} öppna" + other: "%{count} öppna" label_x_closed_issues_abbr: zero: 0 stängda one: 1 stängd - other: "{{count}} stängda" + other: "%{count} stängda" label_total: Total label_permissions: Behörigheter label_current_status: Nuvarande status @@ -615,7 +622,7 @@ label_months_from: mÃ¥nader frÃ¥n label_gantt: Gantt label_internal: Intern - label_last_changes: "senaste {{count}} ändringar" + label_last_changes: "senaste %{count} ändringar" label_change_view_all: Visa alla ändringar label_personalize_page: Anpassa denna sida label_comment: Kommentar @@ -623,7 +630,7 @@ label_x_comments: zero: inga kommentarer one: 1 kommentar - other: "{{count}} kommentarer" + other: "%{count} kommentarer" label_comment_add: Lägg till kommentar label_comment_added: Kommentar tillagd label_comment_delete: Ta bort kommentar @@ -644,7 +651,7 @@ label_yesterday: igÃ¥r label_this_week: denna vecka label_last_week: senaste veckan - label_last_n_days: "senaste {{count}} dagarna" + label_last_n_days: "senaste %{count} dagarna" label_this_month: denna mÃ¥nad label_last_month: senaste mÃ¥naden label_this_year: detta Ã¥ret @@ -658,13 +665,13 @@ label_repository: Versionsarkiv label_repository_plural: Versionsarkiv label_browse: Bläddra - label_modification: "{{count}} ändring" - label_modification_plural: "{{count}} ändringar" + label_modification: "%{count} ändring" + label_modification_plural: "%{count} ändringar" label_branch: Branch label_tag: Tag label_revision: Revision label_revision_plural: Revisioner - label_revision_id: Revision {{value}} + label_revision_id: "Revision %{value}" label_associated_revisions: Associerade revisioner label_added: tillagd label_modified: modifierad @@ -681,8 +688,8 @@ label_sort_lower: Flytta ner label_sort_lowest: Flytta till botten label_roadmap: Roadmap - label_roadmap_due_in: "Färdig om {{value}}" - label_roadmap_overdue: "{{value}} sen" + label_roadmap_due_in: "Färdig om %{value}" + label_roadmap_overdue: "%{value} sen" label_roadmap_no_issues: Inga ärenden för denna version label_search: Sök label_result_plural: Resultat @@ -701,8 +708,8 @@ label_issue_tracking: Ärendeuppföljning label_spent_time: Spenderad tid label_overall_spent_time: Total tid spenderad - label_f_hour: "{{value}} timme" - label_f_hour_plural: "{{value}} timmar" + label_f_hour: "%{value} timme" + label_f_hour_plural: "%{value} timmar" label_time_tracking: Tidsuppföljning label_change_plural: Ändringar label_statistics: Statistik @@ -753,15 +760,15 @@ label_date_from: FrÃ¥n label_date_to: Till label_language_based: SprÃ¥kbaserad - label_sort_by: "Sortera pÃ¥ {{value}}" + label_sort_by: "Sortera pÃ¥ %{value}" label_send_test_email: Skicka testmail label_feeds_access_key: RSS-nyckel label_missing_feeds_access_key: Saknar en RSS-nyckel - label_feeds_access_key_created_on: "RSS-nyckel skapad för {{value}} sedan" + label_feeds_access_key_created_on: "RSS-nyckel skapad för %{value} sedan" label_module_plural: Moduler - label_added_time_by: "Tillagd av {{author}} för {{age}} sedan" - label_updated_time_by: "Uppdaterad av {{author}} för {{age}} sedan" - label_updated_time: "Uppdaterad för {{value}} sedan" + label_added_time_by: "Tillagd av %{author} för %{age} sedan" + label_updated_time_by: "Uppdaterad av %{author} för %{age} sedan" + label_updated_time: "Uppdaterad för %{value} sedan" label_jump_to_a_project: GÃ¥ till projekt... label_file_plural: Filer label_changeset_plural: Changesets @@ -773,15 +780,15 @@ label_search_titles_only: Sök endast i titlar label_user_mail_option_all: "För alla händelser i mina projekt" label_user_mail_option_selected: "För alla händelser i markerade projekt..." - label_user_mail_option_none: Inga händelser - label_user_mail_option_only_my_events: Endast för saker jag bevakar eller är inblandad i - label_user_mail_option_only_assigned: Endast för saker jag är tilldelad - label_user_mail_option_only_owner: Endast för saker jag äger + label_user_mail_option_none: "Inga händelser" + label_user_mail_option_only_my_events: "Endast för saker jag bevakar eller är inblandad i" + label_user_mail_option_only_assigned: "Endast för saker jag är tilldelad" + label_user_mail_option_only_owner: "Endast för saker jag äger" label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort" label_registration_activation_by_email: kontoaktivering med mail label_registration_manual_activation: manuell kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering - label_display_per_page: "Per sida: {{value}}" + label_display_per_page: "Per sida: %{value}" label_age: Ã…lder label_change_properties: Ändra inställningar label_general: Allmänt @@ -804,7 +811,7 @@ label_sort: Sortera label_descending: Fallande label_ascending: Stigande - label_date_from_to: FrÃ¥n {{start}} till {{end}} + label_date_from_to: FrÃ¥n %{start} till %{end} label_wiki_content_added: Wikisida tillagd label_wiki_content_updated: Wikisida uppdaterad label_group: Grupp @@ -823,10 +830,12 @@ label_display_used_statuses_only: Visa endast status som används av denna ärendetyp label_api_access_key: API-nyckel label_missing_api_access_key: Saknar en API-nyckel - label_api_access_key_created_on: API-nyckel skapad för {{value}} sedan + label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan" label_profile: Profil label_subtask_plural: Underaktiviteter 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:" button_login: Logga in button_submit: Skicka @@ -838,7 +847,7 @@ button_create_and_continue: Skapa och fortsätt button_test: Testa button_edit: Ändra - button_edit_associated_wikipage: "Ändra associerad Wikisida: {{page_title}}" + button_edit_associated_wikipage: "Ändra associerad Wikisida: %{page_title}" button_add: Lägg till button_change: Ändra button_apply: Verkställ @@ -887,57 +896,58 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 betyder ingen gräns text_project_destroy_confirmation: Är du säker pÃ¥ att du vill ta bort detta projekt och all relaterad data? - text_subprojects_destroy_warning: "Alla underprojekt: {{value}} kommer ocksÃ¥ tas bort." + text_subprojects_destroy_warning: "Alla underprojekt: %{value} kommer ocksÃ¥ tas bort." text_workflow_edit: Välj en roll och en ärendetyp för att ändra arbetsflöde 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_set_to: "{{label}} satt till {{value}}" - text_journal_deleted: "{{label}} borttagen ({{old}})" - text_journal_added: "{{label}} {{value}} tillagd" - text_tip_issue_begin_day: arbetsuppgift som börjar denna dag - text_tip_issue_end_day: arbetsuppgift som slutar denna dag - text_tip_issue_begin_end_day: arbetsuppgift börjar och slutar denna dag + text_journal_changed: "%{label} ändrad frÃ¥n %{old} till %{new}" + text_journal_set_to: "%{label} satt till %{value}" + text_journal_deleted: "%{label} borttagen (%{old})" + text_journal_added: "%{label} %{value} tillagd" + text_tip_issue_begin_day: ärende som börjar denna dag + text_tip_issue_end_day: ärende som slutar denna dag + text_tip_issue_begin_end_day: ärende som börjar och slutar denna dag text_project_identifier_info: 'SmÃ¥ bokstäver (a-z), siffror och streck tillÃ¥tna.
    När den är sparad kan identifieraren inte ändras.' - text_caracters_maximum: "max {{count}} tecken." - text_caracters_minimum: "MÃ¥ste vara minst {{count}} tecken lÃ¥ng." - text_length_between: "Längd mellan {{min}} och {{max}} tecken." + text_caracters_maximum: "max %{count} tecken." + text_caracters_minimum: "MÃ¥ste vara minst %{count} tecken lÃ¥ng." + text_length_between: "Längd mellan %{min} och %{max} tecken." text_tracker_no_workflow: Inget arbetsflöde definerat för denna ärendetyp text_unallowed_characters: OtillÃ¥tna tecken text_comma_separated: Flera värden tillÃ¥tna (kommaseparerade). text_line_separated: Flera värden tillÃ¥tna (ett värde per rad). text_issues_ref_in_commit_messages: Referera och fixa ärenden i commit-meddelanden - text_issue_added: "Ärende {{id}} har rapporterats (av {{author}})." - text_issue_updated: "Ärende {{id}} har uppdaterats (av {{author}})." + text_issue_added: "Ärende %{id} har rapporterats (av %{author})." + text_issue_updated: "Ärende %{id} har uppdaterats (av %{author})." text_wiki_destroy_confirmation: Är du säker pÃ¥ att du vill ta bort denna wiki och allt dess innehÃ¥ll ? - text_issue_category_destroy_question: "NÃ¥gra ärenden ({{count}}) är tilldelade till denna kategori. Vad vill du göra ?" + text_issue_category_destroy_question: "NÃ¥gra ärenden (%{count}) är tilldelade till denna kategori. Vad vill du göra ?" text_issue_category_destroy_assignments: Ta bort kategoritilldelningar text_issue_category_reassign_to: Ã…tertilldela ärenden till denna kategori text_user_mail_option: "För omarkerade projekt kommer du bara bli underrättad om saker du bevakar eller är inblandad i (T.ex. ärenden du skapat eller tilldelats)." text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst." text_load_default_configuration: Läs in standardkonfiguration - text_status_changed_by_changeset: "Tilldelad i changeset {{value}}." + 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_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 text_plugin_assets_writable: Arkivet för plug-ins är skrivbart text_rmagick_available: RMagick tillgängligt (ej obligatoriskt) - text_destroy_time_entries_question: "{{hours}} timmar har rapporterats pÃ¥ ärendena du är pÃ¥ väg att ta bort. Vad vill du göra ?" + text_destroy_time_entries_question: "%{hours} timmar har rapporterats pÃ¥ ärendena du är pÃ¥ väg att ta bort. Vad vill du göra ?" text_destroy_time_entries: Ta bort rapporterade timmar text_assign_time_entries_to_project: Tilldela rapporterade timmar till projektet text_reassign_time_entries: 'Ã…tertilldela rapporterade timmar till detta ärende:' - text_user_wrote: "{{value}} skrev:" - text_enumeration_destroy_question: "{{count}} objekt är tilldelade till detta värde." + text_user_wrote: "%{value} skrev:" + text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde." text_enumeration_category_reassign_to: 'Ã…tertilldela till detta värde:' - text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/email.yml och starta om applikationen för att aktivera dem." - text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller emailadress i bÃ¥de Redmine och versionsarkivet mappas automatiskt." + text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/configuration.yml och starta om applikationen för att aktivera dem." + text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i bÃ¥de Redmine och versionsarkivet mappas automatiskt." text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.' text_custom_field_possible_values_info: 'Ett värde per rad' - text_wiki_page_destroy_question: Denna sida har {{descendants}} underliggande sidor. Vad vill du göra? - text_wiki_page_nullify_children: BehÃ¥ll undersidor som rotsidor - text_wiki_page_destroy_children: Ta bort alla underliggande sidor - text_wiki_page_reassign_children: Flytta undersidor till denna föräldersida + text_wiki_page_destroy_question: "Denna sida har %{descendants} underliggande sidor. Vad vill du göra?" + text_wiki_page_nullify_children: "BehÃ¥ll undersidor som rotsidor" + text_wiki_page_destroy_children: "Ta bort alla underliggande sidor" + text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida" 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 @@ -968,8 +978,7 @@ enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet - field_start_date: Start date - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/th.yml --- a/config/locales/th.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/th.yml Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ 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: "ถูà¸à¸ªà¸‡à¸§à¸™à¹„ว้" @@ -106,11 +110,11 @@ taken: "ถูà¸à¹ƒà¸Šà¹‰à¹„ปà¹à¸¥à¹‰à¸§" not_a_number: "ไม่ใช่ตัวเลข" not_a_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}}" + 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: "ต้องมาà¸à¸à¸§à¹ˆà¸²à¸§à¸±à¸™à¹€à¸£à¸´à¹ˆà¸¡" @@ -147,31 +151,31 @@ notice_file_not_found: หน้าที่คุณต้องà¸à¸²à¸£à¸”ูไม่มีอยู่จริง หรือถูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§. notice_locking_conflict: ข้อมูลถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹‚ดยผู้ใช้คนอื่น. notice_not_authorized: คุณไม่มีสิทธิเข้าถึงหน้านี้. - notice_email_sent: "อีเมล์ได้ถูà¸à¸ªà¹ˆà¸‡à¸–ึง {{value}}" - notice_email_error: "เà¸à¸´à¸”ความผิดพลาดขณะà¸à¸³à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥à¹Œ ({{value}})" + notice_email_sent: "อีเมล์ได้ถูà¸à¸ªà¹ˆà¸‡à¸–ึง %{value}" + notice_email_error: "เà¸à¸´à¸”ความผิดพลาดขณะà¸à¸³à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥à¹Œ (%{value})" notice_feeds_access_key_reseted: RSS access key ของคุณถูภreset à¹à¸¥à¹‰à¸§. - notice_failed_to_save_issues: "{{count}} ปัà¸à¸«à¸²à¸ˆà¸²à¸ {{total}} ปัà¸à¸«à¸²à¸—ี่ถูà¸à¹€à¸¥à¸·à¸­à¸à¹„ม่สามารถจัดเà¸à¹‡à¸š: {{ids}}." + notice_failed_to_save_issues: "%{count} ปัà¸à¸«à¸²à¸ˆà¸²à¸ %{total} ปัà¸à¸«à¸²à¸—ี่ถูà¸à¹€à¸¥à¸·à¸­à¸à¹„ม่สามารถจัดเà¸à¹‡à¸š: %{ids}." notice_no_issue_selected: "ไม่มีปัà¸à¸«à¸²à¸—ี่ถูà¸à¹€à¸¥à¸·à¸­à¸! à¸à¸£à¸¸à¸“าเลือà¸à¸›à¸±à¸à¸«à¸²à¸—ี่คุณต้องà¸à¸²à¸£à¹à¸à¹‰à¹„ข." notice_account_pending: "บัà¸à¸Šà¸µà¸‚องคุณสร้างเสร็จà¹à¸¥à¹‰à¸§ ขณะนี้รอà¸à¸²à¸£à¸­à¸™à¸¸à¸¡à¸±à¸•ิจาà¸à¸œà¸¹à¹‰à¸šà¸£à¸´à¸«à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£." notice_default_data_loaded: ค่าเริ่มต้นโหลดเสร็จà¹à¸¥à¹‰à¸§. - error_can_t_load_default_data: "ค่าเริ่มต้นโหลดไม่สำเร็จ: {{value}}" + error_can_t_load_default_data: "ค่าเริ่มต้นโหลดไม่สำเร็จ: %{value}" error_scm_not_found: "ไม่พบรุ่นที่ต้องà¸à¸²à¸£à¹ƒà¸™à¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ." - error_scm_command_failed: "เà¸à¸´à¸”ความผิดพลาดในà¸à¸²à¸£à¹€à¸‚้าถึงà¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ: {{value}}" + error_scm_command_failed: "เà¸à¸´à¸”ความผิดพลาดในà¸à¸²à¸£à¹€à¸‚้าถึงà¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ: %{value}" error_scm_annotate: "entry ไม่มีอยู่จริง หรือไม่สามารถเขียนหมายเหตุประà¸à¸­à¸š." error_issue_not_found_in_project: 'ไม่พบปัà¸à¸«à¸²à¸™à¸µà¹‰ หรือปัà¸à¸«à¸²à¹„ม่ได้อยู่ในโครงà¸à¸²à¸£à¸™à¸µà¹‰' - mail_subject_lost_password: "รหัสผ่าน {{value}} ของคุณ" + mail_subject_lost_password: "รหัสผ่าน %{value} ของคุณ" mail_body_lost_password: 'คลิ๊à¸à¸—ี่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:' - mail_subject_register: "เปิดบัà¸à¸Šà¸µ {{value}} ของคุณ" + mail_subject_register: "เปิดบัà¸à¸Šà¸µ %{value} ของคุณ" mail_body_register: 'คลิ๊à¸à¸—ี่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:' - mail_body_account_information_external: "คุณสามารถใช้บัà¸à¸Šà¸µ {{value}} เพื่อเข้าสู่ระบบ." + mail_body_account_information_external: "คุณสามารถใช้บัà¸à¸Šà¸µ %{value} เพื่อเข้าสู่ระบบ." mail_body_account_information: ข้อมูลบัà¸à¸Šà¸µà¸‚องคุณ - mail_subject_account_activation_request: "à¸à¸£à¸¸à¸“าเปิดบัà¸à¸Šà¸µ {{value}}" - mail_body_account_activation_request: "ผู้ใช้ใหม่ ({{value}}) ได้ลงทะเบียน. บัà¸à¸Šà¸µà¸‚องเขาà¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¸­à¸™à¸¸à¸¡à¸±à¸•ิ:" + mail_subject_account_activation_request: "à¸à¸£à¸¸à¸“าเปิดบัà¸à¸Šà¸µ %{value}" + mail_body_account_activation_request: "ผู้ใช้ใหม่ (%{value}) ได้ลงทะเบียน. บัà¸à¸Šà¸µà¸‚องเขาà¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¸­à¸™à¸¸à¸¡à¸±à¸•ิ:" gui_validation_error: 1 ข้อผิดพลาด - gui_validation_error_plural: "{{count}} ข้อผิดพลาด" + gui_validation_error_plural: "%{count} ข้อผิดพลาด" field_name: ชื่อ field_description: รายละเอียด @@ -233,6 +237,7 @@ field_attr_lastname: นามสà¸à¸¸à¸¥ attribute field_attr_mail: อีเมล์ attribute field_onthefly: สร้างผู้ใช้ทันที + field_start_date: เริ่ม field_done_ratio: % สำเร็จ field_auth_source: วิธีà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตน field_hide_mail: ซ่อนอีเมล์ของฉัน @@ -306,14 +311,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: โครงà¸à¸²à¸£à¸—ั้งหมด label_project_latest: โครงà¸à¸²à¸£à¸¥à¹ˆà¸²à¸ªà¸¸à¸” label_issue: ปัà¸à¸«à¸² 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: เอà¸à¸ªà¸²à¸£ @@ -382,8 +387,8 @@ label_text: ข้อความขนาดยาว label_attribute: คุณลัà¸à¸©à¸“ะ label_attribute_plural: คุณลัà¸à¸©à¸“ะ - label_download: "{{count}} ดาวน์โหลด" - label_download_plural: "{{count}} ดาวน์โหลด" + label_download: "%{count} ดาวน์โหลด" + label_download_plural: "%{count} ดาวน์โหลด" label_no_data: จำนวนข้อมูลที่à¹à¸ªà¸”ง label_change_status: เปลี่ยนสถานะ label_history: ประวัติ @@ -414,17 +419,17 @@ label_closed_issues: ปิด label_closed_issues_plural: ปิด label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: จำนวนรวม label_permissions: สิทธิ label_current_status: สถานะปัจจุบัน @@ -442,7 +447,7 @@ label_months_from: เดือนจาภlabel_gantt: Gantt label_internal: ภายใน - label_last_changes: "last {{count}} เปลี่ยนà¹à¸›à¸¥à¸‡" + label_last_changes: "last %{count} เปลี่ยนà¹à¸›à¸¥à¸‡" label_change_view_all: ดูà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ั้งหมด label_personalize_page: ปรับà¹à¸•่งหน้านี้ label_comment: ความเห็น @@ -450,7 +455,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: เพิ่มความเห็น label_comment_added: ความเห็นถูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_comment_delete: ลบความเห็น @@ -469,7 +474,7 @@ label_yesterday: เมื่อวาน 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: ปีนี้ @@ -483,8 +488,8 @@ label_repository: ที่เà¸à¹‡à¸šà¸•้นฉบับ label_repository_plural: ที่เà¸à¹‡à¸šà¸•้นฉบับ label_browse: เปิดหา - label_modification: "{{count}} เปลี่ยนà¹à¸›à¸¥à¸‡" - label_modification_plural: "{{count}} เปลี่ยนà¹à¸›à¸¥à¸‡" + label_modification: "%{count} เปลี่ยนà¹à¸›à¸¥à¸‡" + label_modification_plural: "%{count} เปลี่ยนà¹à¸›à¸¥à¸‡" label_revision: à¸à¸²à¸£à¹à¸à¹‰à¹„ข label_revision_plural: à¸à¸²à¸£à¹à¸à¹‰à¹„ข label_associated_revisions: à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง @@ -500,8 +505,8 @@ label_sort_lower: ย้ายลง label_sort_lowest: ย้ายไปล่างสุด label_roadmap: à¹à¸œà¸™à¸‡à¸²à¸™ - label_roadmap_due_in: "ถึงà¸à¸³à¸«à¸™à¸”ใน {{value}}" - label_roadmap_overdue: "{{value}} ช้าà¸à¸§à¹ˆà¸²à¸à¸³à¸«à¸™à¸”" + label_roadmap_due_in: "ถึงà¸à¸³à¸«à¸™à¸”ใน %{value}" + label_roadmap_overdue: "%{value} ช้าà¸à¸§à¹ˆà¸²à¸à¸³à¸«à¸™à¸”" label_roadmap_no_issues: ไม่มีปัà¸à¸«à¸²à¸ªà¸³à¸«à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¸™à¸µà¹‰ label_search: ค้นหา label_result_plural: ผลà¸à¸²à¸£à¸„้นหา @@ -519,8 +524,8 @@ label_changes_details: รายละเอียดà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ั้งหมด label_issue_tracking: ติดตามปัà¸à¸«à¸² label_spent_time: เวลาที่ใช้ - label_f_hour: "{{value}} ชั่วโมง" - label_f_hour_plural: "{{value}} ชั่วโมง" + label_f_hour: "%{value} ชั่วโมง" + label_f_hour_plural: "%{value} ชั่วโมง" label_time_tracking: ติดตามà¸à¸²à¸£à¹ƒà¸Šà¹‰à¹€à¸§à¸¥à¸² label_change_plural: เปลี่ยนà¹à¸›à¸¥à¸‡ label_statistics: สถิติ @@ -568,12 +573,12 @@ label_date_from: จาภlabel_date_to: ถึง label_language_based: ขึ้นอยู่à¸à¸±à¸šà¸ à¸²à¸©à¸²à¸‚องผู้ใช้ - label_sort_by: "เรียงโดย {{value}}" + label_sort_by: "เรียงโดย %{value}" label_send_test_email: ส่งจดหมายทดสอบ - label_feeds_access_key_created_on: "RSS access key สร้างเมื่อ {{value}} ที่ผ่านมา" + label_feeds_access_key_created_on: "RSS access key สร้างเมื่อ %{value} ที่ผ่านมา" label_module_plural: ส่วนประà¸à¸­à¸š - label_added_time_by: "เพิ่มโดย {{author}} {{age}} ที่ผ่านมา" - label_updated_time: "ปรับปรุง {{value}} ที่ผ่านมา" + label_added_time_by: "เพิ่มโดย %{author} %{age} ที่ผ่านมา" + label_updated_time: "ปรับปรุง %{value} ที่ผ่านมา" label_jump_to_a_project: ไปที่โครงà¸à¸²à¸£... label_file_plural: à¹à¸Ÿà¹‰à¸¡ label_changeset_plural: à¸à¸¥à¸¸à¹ˆà¸¡à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ @@ -589,7 +594,7 @@ label_registration_activation_by_email: เปิดบัà¸à¸Šà¸µà¸œà¹ˆà¸²à¸™à¸­à¸µà¹€à¸¡à¸¥à¹Œ label_registration_manual_activation: อนุมัติโดยผู้บริหารจัดà¸à¸²à¸£ label_registration_automatic_activation: เปิดบัà¸à¸Šà¸µà¸­à¸±à¸•โนมัติ - label_display_per_page: "ต่อหน้า: {{value}}" + label_display_per_page: "ต่อหน้า: %{value}" label_age: อายุ label_change_properties: เปลี่ยนคุณสมบัติ label_general: ทั่วๆ ไป @@ -651,36 +656,36 @@ 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_tip_issue_begin_day: งานที่เริ่มวันนี้ text_tip_issue_end_day: งานที่จบวันนี้ text_tip_issue_begin_end_day: งานที่เริ่มà¹à¸¥à¸°à¸ˆà¸šà¸§à¸±à¸™à¸™à¸µà¹‰ text_project_identifier_info: 'ภาษาอังà¸à¸¤à¸©à¸•ัวเล็à¸(a-z), ตัวเลข(0-9) à¹à¸¥à¸°à¸‚ีด (-) เท่านั้น.
    เมื่อจัดเà¸à¹‡à¸šà¹à¸¥à¹‰à¸§, ชื่อเฉพาะไม่สามารถเปลี่ยนà¹à¸›à¸¥à¸‡à¹„ด้' - text_caracters_maximum: "สูงสุด {{count}} ตัวอัà¸à¸©à¸£." - text_caracters_minimum: "ต้องยาวอย่างน้อย {{count}} ตัวอัà¸à¸©à¸£." - text_length_between: "ความยาวระหว่าง {{min}} ถึง {{max}} ตัวอัà¸à¸©à¸£." + text_caracters_maximum: "สูงสุด %{count} ตัวอัà¸à¸©à¸£." + text_caracters_minimum: "ต้องยาวอย่างน้อย %{count} ตัวอัà¸à¸©à¸£." + text_length_between: "ความยาวระหว่าง %{min} ถึง %{max} ตัวอัà¸à¸©à¸£." text_tracker_no_workflow: ไม่ได้บัà¸à¸à¸±à¸•ิลำดับงานสำหรับà¸à¸²à¸£à¸•ิดตามนี้ text_unallowed_characters: ตัวอัà¸à¸©à¸£à¸•้องห้าม text_comma_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_issue_added: "ปัà¸à¸«à¸² %{id} ถูà¸à¹à¸ˆà¹‰à¸‡à¹‚ดย %{author}." + text_issue_updated: "ปัà¸à¸«à¸² %{id} ถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹‚ดย %{author}." text_wiki_destroy_confirmation: คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸·à¸­à¸§à¹ˆà¸²à¸•้องà¸à¸²à¸£à¸¥à¸š wiki นี้พร้อมทั้งเนี้อหา? - text_issue_category_destroy_question: "บางปัà¸à¸«à¸² ({{count}}) อยู่ในประเภทนี้. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร ?" + 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_status_changed_by_changeset: "ประยุà¸à¸•์ใช้ในà¸à¸¥à¸¸à¹ˆà¸¡à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ %{value}." text_issues_destroy_confirmation: 'คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¹„หมว่าต้องà¸à¸²à¸£à¸¥à¸šà¸›à¸±à¸à¸«à¸²(ทั้งหลาย)ที่เลือà¸à¹„ว้?' text_select_project_modules: 'เลือà¸à¸ªà¹ˆà¸§à¸™à¸›à¸£à¸°à¸à¸­à¸šà¸—ี่ต้องà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸ªà¸³à¸«à¸£à¸±à¸šà¹‚ครงà¸à¸²à¸£à¸™à¸µà¹‰:' text_default_administrator_account_changed: ค่าเริ่มต้นของบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¸šà¸£à¸´à¸«à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¸–ูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ text_file_repository_writable: ที่เà¸à¹‡à¸šà¸•้นฉบับสามารถเขียนได้ text_rmagick_available: RMagick มีให้ใช้ (เป็นตัวเลือà¸) - text_destroy_time_entries_question: "{{hours}} ชั่วโมงที่ถูà¸à¹à¸ˆà¹‰à¸‡à¹ƒà¸™à¸›à¸±à¸à¸«à¸²à¸™à¸µà¹‰à¸ˆà¸°à¹‚ดนลบ. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร?" + text_destroy_time_entries_question: "%{hours} ชั่วโมงที่ถูà¸à¹à¸ˆà¹‰à¸‡à¹ƒà¸™à¸›à¸±à¸à¸«à¸²à¸™à¸µà¹‰à¸ˆà¸°à¹‚ดนลบ. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร?" text_destroy_time_entries: ลบเวลาที่รายงานไว้ text_assign_time_entries_to_project: ระบุเวลาที่ใช้ในโครงà¸à¸²à¸£à¸™à¸µà¹‰ text_reassign_time_entries: 'ระบุเวลาที่ใช้ในโครงà¸à¸²à¸£à¸™à¸µà¹ˆà¸­à¸µà¸à¸„รั้ง:' @@ -710,19 +715,19 @@ enumeration_issue_priorities: ความสำคัà¸à¸‚องปัà¸à¸«à¸² enumeration_doc_categories: ประเภทเอà¸à¸ªà¸²à¸£ enumeration_activities: à¸à¸´à¸ˆà¸à¸£à¸£à¸¡ (ใช้ในà¸à¸²à¸£à¸•ิดตามเวลา) - label_and_its_subprojects: "{{value}} and its subprojects" - mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:" - mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days" - text_user_wrote: "{{value}} wrote:" + label_and_its_subprojects: "%{value} and its subprojects" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + text_user_wrote: "%{value} wrote:" label_duplicated_by: duplicated by setting_enabled_scm: Enabled SCM text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_enumeration_destroy_question: "{{count}} objects are assigned to this value." + text_enumeration_destroy_question: "%{count} objects are assigned to this value." label_incoming_emails: Incoming emails label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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 @@ -783,12 +788,12 @@ 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" + 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." + 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 @@ -803,21 +808,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -825,14 +830,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -867,9 +872,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -896,12 +901,12 @@ 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_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}}." + 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. @@ -909,7 +914,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -920,8 +925,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/tr.yml --- a/config/locales/tr.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/tr.yml Thu Mar 03 12:11:53 2011 +0000 @@ -37,38 +37,38 @@ less_than_x_seconds: zero: '1 saniyeden az' one: '1 saniyeden az' - other: '{{count}} saniyeden az' + other: '%{count} saniyeden az' x_seconds: one: '1 saniye' - other: '{{count}} saniye' + other: '%{count} saniye' less_than_x_minutes: zero: '1 dakikadan az' one: '1 dakikadan az' - other: '{{count}} dakikadan az' + other: '%{count} dakikadan az' x_minutes: one: '1 dakika' - other: '{{count}} dakika' + other: '%{count} dakika' about_x_hours: one: '1 saat civarında' - other: '{{count}} saat civarında' + other: '%{count} saat civarında' x_days: one: '1 gün' - other: '{{count}} gün' + other: '%{count} gün' about_x_months: one: '1 ay civarında' - other: '{{count}} ay civarında' + other: '%{count} ay civarında' x_months: one: '1 ay' - other: '{{count}} ay' + other: '%{count} ay' about_x_years: one: '1 yıl civarında' - other: '{{count}} yıl civarında' + other: '%{count} yıl civarında' over_x_years: one: '1 yıldan fazla' - other: '{{count}} yıldan fazla' + other: '%{count} yıldan fazla' almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -116,8 +116,8 @@ errors: template: header: - one: "{{model}} giriÅŸi kaydedilemedi: 1 hata." - other: "{{model}} giriÅŸi kadedilemedi: {{count}} hata." + one: "%{model} giriÅŸi kaydedilemedi: 1 hata." + other: "%{model} giriÅŸi kadedilemedi: %{count} hata." body: "Lütfen aÅŸağıdaki hataları düzeltiniz:" messages: @@ -128,16 +128,16 @@ accepted: "kabul edilmeli" empty: "doldurulmalı" blank: "doldurulmalı" - too_long: "çok uzun (en fazla {{count}} karakter)" - too_short: "çok kısa (en az {{count}} karakter)" - wrong_length: "yanlış uzunlukta (tam olarak {{count}} karakter olmalı)" + too_long: "çok uzun (en fazla %{count} karakter)" + too_short: "çok kısa (en az %{count} karakter)" + wrong_length: "yanlış uzunlukta (tam olarak %{count} karakter olmalı)" taken: "hali hazırda kullanılmakta" not_a_number: "geçerli bir sayı deÄŸil" - greater_than: "{{count}} sayısından büyük olmalı" - greater_than_or_equal_to: "{{count}} sayısına eÅŸit veya büyük olmalı" - equal_to: "tam olarak {{count}} olmalı" - less_than: "{{count}} sayısından küçük olmalı" - less_than_or_equal_to: "{{count}} sayısına eÅŸit veya küçük olmalı" + greater_than: "%{count} sayısından büyük olmalı" + greater_than_or_equal_to: "%{count} sayısına eÅŸit veya büyük olmalı" + equal_to: "tam olarak %{count} olmalı" + less_than: "%{count} sayısından küçük olmalı" + less_than_or_equal_to: "%{count} sayısına eÅŸit veya küçük olmalı" odd: "tek olmalı" even: "çift olmalı" greater_than_start_date: "baÅŸlangıç tarihinden büyük olmalı" @@ -174,31 +174,31 @@ notice_file_not_found: EriÅŸmek istediÄŸiniz sayfa mevcut deÄŸil ya da kaldırılmış. notice_locking_conflict: Veri baÅŸka bir kullanıcı tarafından güncellendi. notice_not_authorized: Bu sayfaya eriÅŸme yetkiniz yok. - notice_email_sent: "E-posta gönderildi {{value}}" - notice_email_error: "E-posta gönderilirken bir hata oluÅŸtu ({{value}})" + notice_email_sent: "E-posta gönderildi %{value}" + 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_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_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_can_t_load_default_data: "Varsayılan konfigürasyon yüklenemedi: %{value}" error_scm_not_found: "Depoda, giriÅŸ ya da revizyon yok." - error_scm_command_failed: "Depoya eriÅŸmeye çalışırken bir hata meydana geldi: {{value}}" + 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' - mail_subject_lost_password: "Parolanız {{value}}" + 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: "Your %{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_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:" + 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" + gui_validation_error_plural: "%{count} hata" field_name: İsim field_description: Açıklama @@ -260,6 +260,7 @@ 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_auth_source: Kimlik Denetim Modu field_hide_mail: E-posta adresimi gizle @@ -333,14 +334,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" 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_issues_by: "%{value} tarafından gönderilmiÅŸ iletiler" label_issue_added: İleti eklendi label_issue_updated: İleti güncellendi label_document: Belge @@ -407,8 +408,8 @@ label_text: Uzun Metin label_attribute: Nitelik label_attribute_plural: Nitelikler - label_download: "{{count}} indirilen" - label_download_plural: "{{count}} indirilen" + label_download: "%{count} indirilen" + label_download_plural: "%{count} indirilen" label_no_data: Gösterilecek veri yok label_change_status: DeÄŸiÅŸim Durumu label_history: GeçmiÅŸ @@ -439,17 +440,17 @@ 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: 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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Toplam label_permissions: İzinler label_current_status: Mevcut Durum @@ -467,7 +468,7 @@ label_months_from: aylardan itibaren label_gantt: Gantt label_internal: Dahili - label_last_changes: "Son {{count}} deÄŸiÅŸiklik" + 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 @@ -475,7 +476,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Açıklama Ekle label_comment_added: Açıklama Eklendi label_comment_delete: Açıklamaları sil @@ -494,7 +495,7 @@ label_yesterday: Dün label_this_week: Bu hafta label_last_week: Geçen hafta - label_last_n_days: "Son {{count}} gün" + label_last_n_days: "Son %{count} gün" label_this_month: Bu ay label_last_month: Geçen ay label_this_year: Bu yıl @@ -508,8 +509,8 @@ label_repository: Depo label_repository_plural: Depolar label_browse: Tara - label_modification: "{{count}} deÄŸiÅŸim" - label_modification_plural: "{{count}} deÄŸiÅŸim" + 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 @@ -525,8 +526,8 @@ label_sort_lower: AÅŸağı taşı label_sort_lowest: Dibe taşı label_roadmap: Yol Haritası - label_roadmap_due_in: "Due in {{value}}" - label_roadmap_overdue: "{{value}} geç" + label_roadmap_due_in: "Due in %{value}" + label_roadmap_overdue: "%{value} geç" label_roadmap_no_issues: Bu versiyon için ileti yok label_search: Ara label_result_plural: Sonuçlar @@ -544,8 +545,8 @@ label_changes_details: Bütün deÄŸiÅŸikliklerin detayları label_issue_tracking: İleti Takibi label_spent_time: Harcanan zaman - label_f_hour: "{{value}} saat" - label_f_hour_plural: "{{value}} saat" + label_f_hour: "%{value} saat" + label_f_hour_plural: "%{value} saat" label_time_tracking: Zaman Takibi label_change_plural: DeÄŸiÅŸiklikler label_statistics: İstatistikler @@ -593,12 +594,12 @@ label_date_from: BaÅŸlangıç label_date_to: BitiÅŸ label_language_based: Kullanıcı diline istinaden - label_sort_by: "{{value}} göre sırala" + 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" + label_feeds_access_key_created_on: "RSS eriÅŸim anahtarı %{value} önce oluÅŸturuldu" label_module_plural: Modüller - label_added_time_by: "{{author}} tarafından {{age}} önce eklendi" - label_updated_time: "{{value}} önce güncellendi" + label_added_time_by: "%{author} tarafından %{age} önce eklendi" + label_updated_time: "%{value} önce güncellendi" label_jump_to_a_project: Projeye git... label_file_plural: Dosyalar label_changeset_plural: DeÄŸiÅŸiklik Listeleri @@ -614,7 +615,7 @@ label_registration_activation_by_email: e-posta ile hesap etkinleÅŸtirme label_registration_manual_activation: Elle hesap etkinleÅŸtirme label_registration_automatic_activation: Otomatik hesap etkinleÅŸtirme - label_display_per_page: "Sayfa başına: {{value}}" + label_display_per_page: "Sayfa başına: %{value}" label_age: YaÅŸ label_change_properties: Özellikleri deÄŸiÅŸtir label_general: Genel @@ -676,36 +677,36 @@ text_regexp_info: eg. ^[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_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_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 text_tip_issue_begin_end_day: Bugün baÅŸlayan ve sona eren görevler text_project_identifier_info: 'Küçük harfler (a-z), sayılar ve noktalar kabul edilir.
    Bir kere kaydedildiÄŸinde,tanımlayıcı deÄŸiÅŸtirilemez.' - 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_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_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_issue_added: "İleti %{id}, %{author} tarafından rapor edildi." + text_issue_updated: "İleti %{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ı iletiler (%{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_load_default_configuration: Varsayılan yapılandırmayı yükle - text_status_changed_by_changeset: "DeÄŸiÅŸiklik listesi {{value}} içinde uygulandı." + 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_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_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:' @@ -741,16 +742,16 @@ label_generate_key: Generate a key setting_sequential_project_identifiers: Generate sequential project identifiers field_parent_title: Parent page - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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:" + 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:" + 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" + 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 general_csv_decimal_separator: '.' @@ -809,12 +810,12 @@ 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" + 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." + 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 @@ -829,21 +830,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -855,10 +856,10 @@ 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" + 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 @@ -893,9 +894,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -922,12 +923,12 @@ 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_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}}." + 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. @@ -935,7 +936,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -946,8 +947,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/uk.yml --- a/config/locales/uk.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/uk.yml Thu Mar 03 12:11:53 2011 +0000 @@ -32,37 +32,37 @@ half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" - other: "less than {{count}} seconds" + other: "less than %{count} seconds" x_seconds: one: "1 second" - other: "{{count}} seconds" + other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" - other: "less than {{count}} minutes" + other: "less than %{count} minutes" x_minutes: one: "1 minute" - other: "{{count}} minutes" + other: "%{count} minutes" about_x_hours: one: "about 1 hour" - other: "about {{count}} hours" + other: "about %{count} hours" x_days: one: "1 day" - other: "{{count}} days" + other: "%{count} days" about_x_months: one: "about 1 month" - other: "about {{count}} months" + other: "about %{count} months" x_months: one: "1 month" - other: "{{count}} months" + other: "%{count} months" about_x_years: one: "about 1 year" - other: "about {{count}} years" + other: "about %{count} years" over_x_years: one: "over 1 year" - other: "over {{count}} years" + other: "over %{count} years" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" number: format: @@ -92,6 +92,10 @@ 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: "зарезервовано" @@ -106,11 +110,11 @@ taken: "вже викориÑтовуєтьÑÑ" not_a_number: "не Ñ” чиÑлом" not_a_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}}" + 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: "повинна бути пізніша за дату початку" @@ -148,24 +152,24 @@ notice_locking_conflict: Дані оновлено іншим кориÑтувачем. notice_scm_error: ЗапиÑу та/або Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” в репозиторії. notice_not_authorized: У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” прав Ð´Ð»Ñ Ð²Ñ–Ð´Ð²Ñ–Ð´Ð¸Ð½Ð¸ даної Ñторінки. - notice_email_sent: "Відправлено лиÑта {{value}}" - notice_email_error: "Під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ лиÑта відбулаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° ({{value}})" + notice_email_sent: "Відправлено лиÑта %{value}" + notice_email_error: "Під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ лиÑта відбулаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° (%{value})" notice_feeds_access_key_reseted: Ваш ключ доÑтупу RSS було Ñкинуто. - notice_failed_to_save_issues: "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ {{count}} пункт(ів) з {{total}} вибраних: {{ids}}." + notice_failed_to_save_issues: "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ %{count} пункт(ів) з %{total} вибраних: %{ids}." notice_no_issue_selected: "Ðе вибрано жодної задачі! Будь лаÑка, відзначте задачу, Ñку ви хочете відредагувати." notice_account_pending: "Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ñтворено Ñ– він чекає на Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратором." - mail_subject_lost_password: "Ваш {{value}} пароль" + mail_subject_lost_password: "Ваш %{value} пароль" mail_body_lost_password: 'Ð”Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ паролÑ, зайдіть за наÑтупним поÑиланнÑм:' - mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу {{value}}" + mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу %{value}" mail_body_register: 'Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— облікового запиÑу, зайдіть за наÑтупним поÑиланнÑм:' - mail_body_account_information_external: "Ви можете викориÑтовувати ваш {{value}} обліковий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ." + mail_body_account_information_external: "Ви можете викориÑтовувати ваш %{value} обліковий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ." mail_body_account_information: Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ð¾ Вашому обліковому запиÑу - mail_subject_account_activation_request: "Запит на активацію облікового запиÑу {{value}}" - mail_body_account_activation_request: "Ðовий кориÑтувач ({{value}}) зареєÑтрувавÑÑ. Його обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ‡ÐµÐºÐ°Ñ” на ваше підтвердженнÑ:" + mail_subject_account_activation_request: "Запит на активацію облікового запиÑу %{value}" + mail_body_account_activation_request: "Ðовий кориÑтувач (%{value}) зареєÑтрувавÑÑ. Його обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ‡ÐµÐºÐ°Ñ” на ваше підтвердженнÑ:" gui_validation_error: 1 помилка - gui_validation_error_plural: "{{count}} помилки(ок)" + gui_validation_error_plural: "%{count} помилки(ок)" field_name: Ім'Ñ field_description: ÐžÐ¿Ð¸Ñ @@ -227,6 +231,7 @@ field_attr_lastname: Ðтрибут Прізвище field_attr_mail: Ðтрибут Email field_onthefly: Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача на льоту + field_start_date: Початок field_done_ratio: % зроблено field_auth_source: Режим аутентифікації field_hide_mail: Приховувати мій email @@ -284,14 +289,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: УÑÑ– проекти label_project_latest: ОÑтанні проекти label_issue: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ label_issue_new: Ðові Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_issue_plural: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ label_issue_view_all: ПроглÑнути вÑÑ– Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ - label_issues_by: "ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° {{value}}" + label_issues_by: "ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° %{value}" label_document: Документ label_document_new: Ðовий документ label_document_plural: Документи @@ -354,8 +359,8 @@ label_text: Довгий текÑÑ‚ label_attribute: Ðтрибут label_attribute_plural: атрибути - label_download: "{{count}} Завантажено" - label_download_plural: "{{count}} Завантажень" + label_download: "%{count} Завантажено" + label_download_plural: "%{count} Завантажень" label_no_data: Ðемає даних Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ label_change_status: Змінити ÑÑ‚Ð°Ñ‚ÑƒÑ label_history: ІÑÑ‚Ð¾Ñ€Ñ–Ñ @@ -384,17 +389,17 @@ label_closed_issues: закрите label_closed_issues_plural: закриті label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Ð’Ñього label_permissions: Права доÑтупу label_current_status: Поточний ÑÑ‚Ð°Ñ‚ÑƒÑ @@ -412,7 +417,7 @@ label_months_from: міÑÑців(цÑ) з label_gantt: Діаграма Ганта label_internal: Внутрішній - label_last_changes: "оÑтанні {{count}} змін" + label_last_changes: "оÑтанні %{count} змін" label_change_view_all: ПроглÑнути вÑÑ– зміни label_personalize_page: ПерÑоналізувати цю Ñторінку label_comment: Коментувати @@ -420,7 +425,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Залишити коментар label_comment_added: Коментар додано label_comment_delete: Видалити коментарі @@ -444,8 +449,8 @@ label_day_plural: днів(Ñ) label_repository: Репозиторій label_browse: ПроглÑнути - label_modification: "{{count}} зміна" - label_modification_plural: "{{count}} змін" + label_modification: "%{count} зміна" + label_modification_plural: "%{count} змін" label_revision: ВерÑÑ–Ñ label_revision_plural: ВерÑій label_added: додано @@ -460,8 +465,8 @@ label_sort_lower: Вниз label_sort_lowest: У кінець label_roadmap: Оперативний план - label_roadmap_due_in: "Строк {{value}}" - label_roadmap_overdue: "{{value}} запізненнÑ" + label_roadmap_due_in: "Строк %{value}" + label_roadmap_overdue: "%{value} запізненнÑ" label_roadmap_no_issues: Ðемає питань Ð´Ð»Ñ Ð´Ð°Ð½Ð¾Ñ— верÑÑ–Ñ— label_search: Пошук label_result_plural: Результати @@ -479,8 +484,8 @@ label_changes_details: Подробиці по вÑÑ–Ñ… змінах label_issue_tracking: ÐšÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ†Ñ–Ñ Ð¿Ð¸Ñ‚Ð°Ð½ÑŒ label_spent_time: Витрачений Ñ‡Ð°Ñ - label_f_hour: "{{value}} година" - label_f_hour_plural: "{{value}} годин(и)" + label_f_hour: "%{value} година" + label_f_hour_plural: "%{value} годин(и)" label_time_tracking: Облік чаÑу label_change_plural: Зміни label_statistics: СтатиÑтика @@ -527,12 +532,12 @@ label_date_from: З label_date_to: Кому label_language_based: Ðа оÑнові мови кориÑтувача - label_sort_by: "Сортувати за {{value}}" + label_sort_by: "Сортувати за %{value}" label_send_test_email: ПоÑлати email Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ - label_feeds_access_key_created_on: "Ключ доÑтупу RSS Ñтворений {{value}} назад " + label_feeds_access_key_created_on: "Ключ доÑтупу RSS Ñтворений %{value} назад " label_module_plural: Модулі - label_added_time_by: "Доданий {{author}} {{age}} назад" - label_updated_time: "Оновлений {{value}} назад" + label_added_time_by: "Доданий %{author} %{age} назад" + label_updated_time: "Оновлений %{value} назад" label_jump_to_a_project: Перейти до проекту... label_file_plural: Файли label_changeset_plural: Ðабори змін @@ -600,17 +605,17 @@ text_tip_issue_end_day: день Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡Ñ– text_tip_issue_begin_end_day: початок задачі Ñ– Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ð´Ð½Ñ text_project_identifier_info: 'РÑдкові букви (a-z), допуÑтимі цифри Ñ– дефіÑ.
    Збережений ідентифікатор не може бути змінений.' - text_caracters_maximum: "{{count}} Ñимволів(а) макÑимум." - text_caracters_minimum: "Повинно мати Ñкнайменше {{count}} Ñимволів(а) у довжину." - text_length_between: "Довжина між {{min}} Ñ– {{max}} Ñимволів." + text_caracters_maximum: "%{count} Ñимволів(а) макÑимум." + text_caracters_minimum: "Повинно мати Ñкнайменше %{count} Ñимволів(а) у довжину." + text_length_between: "Довжина між %{min} Ñ– %{max} Ñимволів." text_tracker_no_workflow: Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ координатора поÑлідовніÑть дій не визначена text_unallowed_characters: Заборонені Ñимволи text_comma_separated: ДопуÑтимі декілька значень (розділені комою). text_issues_ref_in_commit_messages: ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ‚Ð° зміна питань у повідомленнÑÑ… до подавань - text_issue_added: "Issue {{id}} has been reported by {{author}}." - text_issue_updated: "Issue {{id}} has been updated by {{author}}." + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Ви впевнені, що хочете видалити цю wiki Ñ– веÑÑŒ зміÑÑ‚? - text_issue_category_destroy_question: "Декілька питань ({{count}}) призначено в цю категорію. Що ви хочете зробити?" + text_issue_category_destroy_question: "Декілька питань (%{count}) призначено в цю категорію. Що ви хочете зробити?" text_issue_category_destroy_assignments: Видалити Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ— text_issue_category_reassign_to: Перепризначити задачі до даної категорії text_user_mail_option: "Ð”Ð»Ñ Ð½ÐµÐ²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ñ… проектів ви отримуватимете Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ про те, що проглÑдаєте або в чому берете учаÑть (наприклад, Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¾Ð¼ Ñких ви Ñ” або Ñкі вам призначені)." @@ -640,8 +645,8 @@ enumeration_issue_priorities: Пріоритети питань enumeration_doc_categories: Категорії документів enumeration_activities: Дії (облік чаÑу) - text_status_changed_by_changeset: "Applied in changeset {{value}}." - label_display_per_page: "Per page: {{value}}" + text_status_changed_by_changeset: "Applied in changeset %{value}." + label_display_per_page: "Per page: %{value}" label_issue_added: Issue added label_issue_updated: Issue updated setting_per_page_options: Objects per page options @@ -651,7 +656,7 @@ label_document_added: Document added label_message_posted: Message added text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?' - error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}" + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" setting_user_format: Users display format label_age: Age label_file_added: File added @@ -667,7 +672,7 @@ 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." label_news_added: News added label_repository_plural: Repositories - error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}" + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" project_module_boards: Boards project_module_issue_tracking: Issue tracking project_module_wiki: Wiki @@ -684,7 +689,7 @@ label_ldap_authentication: LDAP authentication label_downloads_abbr: D/L label_this_month: this month - label_last_n_days: "last {{count}} days" + label_last_n_days: "last %{count} days" label_all_time: all time label_this_year: this year label_date_range: Date range @@ -693,7 +698,7 @@ label_last_month: last month label_add_another_file: Add another file label_optional_description: Optional description - 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 ?" error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' text_assign_time_entries_to_project: Assign reported hours to the project text_destroy_time_entries: Delete reported hours @@ -708,20 +713,20 @@ setting_default_projects_public: New projects are public by default error_scm_annotate: "The entry does not exist or can not be annotated." label_planning: Planning - text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted." - label_and_its_subprojects: "{{value}} and its subprojects" - mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:" - mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days" - text_user_wrote: "{{value}} wrote:" + text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." + label_and_its_subprojects: "%{value} and its subprojects" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + text_user_wrote: "%{value} wrote:" label_duplicated_by: duplicated by setting_enabled_scm: Enabled SCM text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_enumeration_destroy_question: "{{count}} objects are assigned to this value." + text_enumeration_destroy_question: "%{count} objects are assigned to this value." label_incoming_emails: Incoming emails label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + 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 @@ -782,12 +787,12 @@ 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" + 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." + 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 @@ -802,21 +807,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -824,14 +829,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -866,9 +871,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -895,12 +900,12 @@ 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_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}}." + 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. @@ -908,7 +913,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -919,8 +924,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/vi.yml --- a/config/locales/vi.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/vi.yml Thu Mar 03 12:11:53 2011 +0000 @@ -66,37 +66,37 @@ half_a_minute: "30 giây" less_than_x_seconds: one: "chưa tá»›i 1 giây" - other: "chưa tá»›i {{count}} giây" + other: "chưa tá»›i %{count} giây" x_seconds: one: "1 giây" - other: "{{count}} giây" + other: "%{count} giây" less_than_x_minutes: one: "chưa tá»›i 1 phút" - other: "chưa tá»›i {{count}} phút" + other: "chưa tá»›i %{count} phút" x_minutes: one: "1 phút" - other: "{{count}} phút" + other: "%{count} phút" about_x_hours: one: "khoảng 1 giá»" - other: "khoảng {{count}} giá»" + other: "khoảng %{count} giá»" x_days: one: "1 ngày" - other: "{{count}} ngày" + other: "%{count} ngày" about_x_months: one: "khoảng 1 tháng" - other: "khoảng {{count}} tháng" + other: "khoảng %{count} tháng" x_months: one: "1 tháng" - other: "{{count}} tháng" + other: "%{count} tháng" about_x_years: one: "khoảng 1 năm" - other: "khoảng {{count}} năm" + other: "khoảng %{count} năm" over_x_years: one: "hÆ¡n 1 năm" - other: "hÆ¡n {{count}} năm" + other: "hÆ¡n %{count} năm" almost_x_years: one: "almost 1 year" - other: "almost {{count}} years" + other: "almost %{count} years" prompts: year: "Năm" month: "Tháng" @@ -109,8 +109,8 @@ errors: template: header: - one: "1 lá»—i ngăn không cho lưu {{model}} này" - other: "{{count}} lá»—i ngăn không cho lưu {{model}} này" + one: "1 lá»—i ngăn không cho lưu %{model} này" + other: "%{count} lá»—i ngăn không cho lưu %{model} này" # The variable :count is also available body: "Có lá»—i vá»›i các mục sau:" @@ -124,16 +124,16 @@ accepted: "phải được đồng ý" empty: "không thể rá»—ng" blank: "không thể để trắng" - too_long: "quá dài (tối Ä‘a {{count}} ký tá»±)" - too_short: "quá ngắn (tối thiểu {{count}} ký tá»±)" - wrong_length: "độ dài không đúng (phải là {{count}} ký tá»±)" + too_long: "quá dài (tối Ä‘a %{count} ký tá»±)" + too_short: "quá ngắn (tối thiểu %{count} ký tá»±)" + wrong_length: "độ dài không đúng (phải là %{count} ký tá»±)" taken: "đã có" not_a_number: "không phải là số" - greater_than: "phải lá»›n hÆ¡n {{count}}" - greater_than_or_equal_to: "phải lá»›n hÆ¡n hoặc bằng {{count}}" - equal_to: "phải bằng {{count}}" - less_than: "phải nhá» hÆ¡n {{count}}" - less_than_or_equal_to: "phải nhá» hÆ¡n hoặc bằng {{count}}" + greater_than: "phải lá»›n hÆ¡n %{count}" + greater_than_or_equal_to: "phải lá»›n hÆ¡n hoặc bằng %{count}" + equal_to: "phải bằng %{count}" + less_than: "phải nhá» hÆ¡n %{count}" + less_than_or_equal_to: "phải nhá» hÆ¡n hoặc bằng %{count}" odd: "phải là số chẵn" even: "phải là số lẻ" greater_than_start_date: "phải Ä‘i sau ngày bắt đầu" @@ -205,34 +205,34 @@ notice_file_not_found: Trang bạn cố xem không tồn tại hoặc đã chuyển. notice_locking_conflict: Thông tin Ä‘ang được cập nhật bởi ngưá»i khác. Hãy chép ná»™i dung cập nhật cá»§a bạn vào clipboard. notice_not_authorized: Bạn không có quyá»n xem trang này. - notice_email_sent: "Email đã được gá»­i tá»›i {{value}}" - notice_email_error: "Lá»—i xảy ra khi gá»­i email ({{value}})" + notice_email_sent: "Email đã được gá»­i tá»›i %{value}" + notice_email_error: "Lá»—i xảy ra khi gá»­i email (%{value})" notice_feeds_access_key_reseted: Mã số chứng thá»±c RSS đã được tạo lại. - notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}." + 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: "Thông tin tài khoản đã được tạo ra và Ä‘ang chá» chứng thá»±c từ ban quản trị." notice_default_data_loaded: Äã nạp cấu hình mặc định. notice_unable_delete_version: Không thể xóa phiên bản. - error_can_t_load_default_data: "Không thể nạp cấu hình mặc định: {{value}}" + error_can_t_load_default_data: "Không thể nạp cấu hình mặc định: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "Lá»—i xảy ra khi truy cập vào kho lưu trữ: {{value}}" + error_scm_command_failed: "Lá»—i xảy ra khi truy cập vào kho lưu trữ: %{value}" error_scm_annotate: "The entry does not exist or can not be annotated." error_issue_not_found_in_project: 'Vấn đỠkhông tồn tại hoặc không thuá»™c dá»± án' - mail_subject_lost_password: "{{value}}: mật mã cá»§a bạn" + mail_subject_lost_password: "%{value}: mật mã cá»§a bạn" mail_body_lost_password: "Äể đổi mật mã, hãy click chuá»™t vào liên kết sau:" - mail_subject_register: "{{value}}: kích hoạt tài khoản" + mail_subject_register: "%{value}: kích hoạt tài khoản" mail_body_register: "Äể kích hoạt tài khoản, hãy click chuá»™t vào liên kết sau:" - mail_body_account_information_external: " Bạn có thể dùng tài khoản {{value}} để đăng nhập." + mail_body_account_information_external: " Bạn có thể dùng tài khoản %{value} để đăng nhập." mail_body_account_information: Thông tin vá» tài khoản - mail_subject_account_activation_request: "{{value}}: Yêu cầu chứng thá»±c tài khoản" - mail_body_account_activation_request: "Ngưá»i dùng ({{value}}) má»›i đăng ký và cần bạn xác nhận:" - mail_subject_reminder: "{{count}} vấn đỠhết hạn trong các {{days}} ngày tá»›i" - mail_body_reminder: "{{count}} vấn đỠgán cho bạn sẽ hết hạn trong {{days}} ngày tá»›i:" + mail_subject_account_activation_request: "%{value}: Yêu cầu chứng thá»±c tài khoản" + mail_body_account_activation_request: "Ngưá»i dùng (%{value}) má»›i đăng ký và cần bạn xác nhận:" + mail_subject_reminder: "%{count} vấn đỠhết hạn trong các %{days} ngày tá»›i" + mail_body_reminder: "%{count} vấn đỠgán cho bạn sẽ hết hạn trong %{days} ngày tá»›i:" gui_validation_error: 1 lá»—i - gui_validation_error_plural: "{{count}} lá»—i" + gui_validation_error_plural: "%{count} lá»—i" field_name: Tên field_description: Mô tả @@ -294,6 +294,7 @@ field_attr_lastname: Lastname attribute field_attr_mail: Email attribute field_onthefly: On-the-fly user creation + field_start_date: Bắt đầu field_done_ratio: Tiến độ field_auth_source: Authentication mode field_hide_mail: Không làm lá»™ email cá»§a bạn @@ -373,14 +374,14 @@ label_x_projects: zero: no projects one: 1 project - other: "{{count}} projects" + other: "%{count} projects" label_project_all: Má»i dá»± án label_project_latest: Dá»± án má»›i nhất label_issue: Vấn đỠlabel_issue_new: Tạo vấn đỠmá»›i label_issue_plural: Vấn đỠlabel_issue_view_all: Tất cả vấn đỠ- label_issues_by: "Vấn đỠcá»§a {{value}}" + label_issues_by: "Vấn đỠcá»§a %{value}" label_issue_added: Äã thêm vấn đỠlabel_issue_updated: Vấn đỠđược cập nhật label_document: Tài liệu @@ -437,7 +438,7 @@ label_auth_source_new: New authentication mode label_auth_source_plural: Authentication modes label_subproject_plural: Dá»± án con - label_and_its_subprojects: "{{value}} và dá»± án con" + label_and_its_subprojects: "%{value} và dá»± án con" label_min_max_length: Min - Max length label_list: List label_date: Ngày @@ -448,8 +449,8 @@ label_text: Long text label_attribute: Attribute label_attribute_plural: Attributes - label_download: "{{count}} lần tải" - label_download_plural: "{{count}} lần tải" + label_download: "%{count} lần tải" + label_download_plural: "%{count} lần tải" label_no_data: Chưa có thông tin gì label_change_status: Äổi trạng thái label_history: Lược sá»­ @@ -480,17 +481,17 @@ label_closed_issues: đóng label_closed_issues_plural: đóng label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{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" + other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed - other: "{{count}} closed" + other: "%{count} closed" label_total: Tổng cá»™ng label_permissions: Quyá»n label_current_status: Trạng thái hiện tại @@ -508,7 +509,7 @@ label_months_from: tháng từ label_gantt: Biểu đồ sá»± kiện label_internal: Ná»™i bá»™ - label_last_changes: "{{count}} thay đổi cuối" + label_last_changes: "%{count} thay đổi cuối" label_change_view_all: Xem má»i thay đổi label_personalize_page: Äiá»u chỉnh trang này label_comment: Bình luận @@ -516,7 +517,7 @@ label_x_comments: zero: no comments one: 1 comment - other: "{{count}} comments" + other: "%{count} comments" label_comment_add: Thêm bình luận label_comment_added: Äã thêm bình luận label_comment_delete: Xóa bình luận @@ -535,7 +536,7 @@ label_yesterday: hôm qua label_this_week: tuần này label_last_week: tuần trước - label_last_n_days: "{{count}} ngày cuối" + label_last_n_days: "%{count} ngày cuối" label_this_month: tháng này label_last_month: tháng cuối label_this_year: năm này @@ -549,8 +550,8 @@ label_repository: Kho lưu trữ label_repository_plural: Kho lưu trữ label_browse: Duyệt - label_modification: "{{count}} thay đổi" - label_modification_plural: "{{count}} thay đổi" + label_modification: "%{count} thay đổi" + label_modification_plural: "%{count} thay đổi" label_revision: Bản Ä‘iá»u chỉnh label_revision_plural: Bản Ä‘iá»u chỉnh label_associated_revisions: Associated revisions @@ -568,8 +569,8 @@ label_sort_lower: Dịch xuống label_sort_lowest: Xuống dưới cùng label_roadmap: Kế hoạch - label_roadmap_due_in: "Hết hạn trong {{value}}" - label_roadmap_overdue: "Trá»… {{value}}" + label_roadmap_due_in: "Hết hạn trong %{value}" + label_roadmap_overdue: "Trá»… %{value}" label_roadmap_no_issues: Không có vấn đỠcho phiên bản này label_search: Tìm label_result_plural: Kết quả @@ -587,8 +588,8 @@ label_changes_details: Chi tiết cá»§a má»i thay đổi label_issue_tracking: Vấn đỠlabel_spent_time: Thá»i gian - label_f_hour: "{{value}} giá»" - label_f_hour_plural: "{{value}} giá»" + label_f_hour: "%{value} giá»" + label_f_hour_plural: "%{value} giá»" label_time_tracking: Theo dõi thá»i gian label_change_plural: Thay đổi label_statistics: Thống kê @@ -637,12 +638,12 @@ label_date_from: Từ label_date_to: Äến label_language_based: Theo ngôn ngữ ngưá»i dùng - label_sort_by: "Sắp xếp theo {{value}}" + label_sort_by: "Sắp xếp theo %{value}" label_send_test_email: Send a test email - label_feeds_access_key_created_on: "Mã chứng thá»±c RSS được tạo ra cách đây {{value}}" + label_feeds_access_key_created_on: "Mã chứng thá»±c RSS được tạo ra cách đây %{value}" label_module_plural: Mô-Ä‘un - label_added_time_by: "thêm bởi {{author}} cách đây {{age}}" - label_updated_time: "Cập nhật cách đây {{value}}" + label_added_time_by: "thêm bởi %{author} cách đây %{age}" + label_updated_time: "Cập nhật cách đây %{value}" label_jump_to_a_project: Nhảy đến dá»± án... label_file_plural: Tập tin label_changeset_plural: Thay đổi @@ -658,7 +659,7 @@ 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: "má»—i trang: {{value}}" + label_display_per_page: "má»—i trang: %{value}" label_age: Age label_change_properties: Thay đổi thuá»™c tính label_general: Tổng quan @@ -724,43 +725,43 @@ text_regexp_info: eg. ^[A-Z0-9]+$ text_min_max_length_info: 0 để chỉ không hạn chế 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_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: Bạn chắc chứ? text_tip_issue_begin_day: ngày bắt đầu text_tip_issue_end_day: ngày kết thúc text_tip_issue_begin_end_day: bắt đầu và kết thúc cùng ngày text_project_identifier_info: 'Chỉ cho phép chữ cái thưá»ng (a-z), con số và dấu gạch ngang.
    Sau khi lưu, chỉ số ID không thể thay đổi.' - text_caracters_maximum: "Tối Ä‘a {{count}} ký tá»±." - text_caracters_minimum: "Phải gồm ít nhất {{count}} ký tá»±." - text_length_between: "Length between {{min}} and {{max}} characters." + text_caracters_maximum: "Tối Ä‘a %{count} ký tá»±." + text_caracters_minimum: "Phải gồm ít nhất %{count} ký tá»±." + text_length_between: "Length between %{min} and %{max} characters." text_tracker_no_workflow: No workflow defined for this tracker text_unallowed_characters: Ký tá»± không hợp lệ text_comma_separated: Multiple values allowed (comma separated). 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_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_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: "Vá»›i các dá»± án không được chá»n, bạn chỉ có thể nhận được thông báo vá» các vấn đỠbạn đăng ký theo dõi hoặc có liên quan đến bạn (chẳng hạn, vấn đỠđược gán cho bạn)." 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_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: 'Chá»n các mô-Ä‘un cho dá»± án:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: File repository 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:' - text_user_wrote: "{{value}} wrote:" - text_enumeration_destroy_question: "{{count}} objects are assigned to this value." + 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/email.yml and restart the application to enable them." + 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." default_role_manager: Äiá»u hành default_role_developer: Phát triển @@ -841,12 +842,12 @@ label_example: Ví dụ text_repository_usernames_mapping: "Chá»n hoặc cập nhật ánh xạ ngưá»i dùng hệ thống vá»›i ngưá»i dùng trong kho lưu trữ.\nNhững trưá»ng hợp trùng hợp vá» tên và email sẽ được tá»± động ánh xạ." permission_delete_own_messages: Delete own messages - label_user_activity: "{{value}}'s activity" - label_updated_time_by: "Updated by {{author}} {{age}} ago" + 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." + 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 @@ -861,21 +862,21 @@ label_descending: Descending label_sort: Sort label_ascending: Ascending - label_date_from_to: From {{start}} to {{end}} + label_date_from_to: From %{start} to %{end} 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_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" + 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}}. + 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}}. + 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 @@ -883,14 +884,14 @@ 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"). - 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_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" + text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers @@ -925,9 +926,9 @@ 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_revision_id: Revision %{value} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + 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 @@ -954,12 +955,12 @@ 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_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}}." + 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. @@ -967,7 +968,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -978,8 +979,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/locales/zh-TW.yml --- a/config/locales/zh-TW.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/zh-TW.yml Thu Mar 03 12:11:53 2011 +0000 @@ -104,37 +104,37 @@ half_a_minute: "åŠåˆ†é˜" less_than_x_seconds: one: "å°æ–¼ 1 ç§’" - other: "å°æ–¼ {{count}} ç§’" + other: "å°æ–¼ %{count} ç§’" x_seconds: one: "1 ç§’" - other: "{{count}} ç§’" + other: "%{count} ç§’" less_than_x_minutes: one: "å°æ–¼ 1 分é˜" - other: "å°æ–¼ {{count}} 分é˜" + other: "å°æ–¼ %{count} 分é˜" x_minutes: one: "1 分é˜" - other: "{{count}} 分é˜" + other: "%{count} 分é˜" about_x_hours: one: "ç´„ 1 å°æ™‚" - other: "ç´„ {{count}} å°æ™‚" + other: "ç´„ %{count} å°æ™‚" x_days: one: "1 天" - other: "{{count}} 天" + other: "%{count} 天" about_x_months: one: "ç´„ 1 個月" - other: "ç´„ {{count}} 個月" + other: "ç´„ %{count} 個月" x_months: one: "1 個月" - other: "{{count}} 個月" + other: "%{count} 個月" about_x_years: one: "ç´„ 1 å¹´" - other: "ç´„ {{count}} å¹´" + other: "ç´„ %{count} å¹´" over_x_years: one: "è¶…éŽ 1 å¹´" - other: "è¶…éŽ {{count}} å¹´" + other: "è¶…éŽ %{count} å¹´" almost_x_years: one: "將近 1 å¹´" - other: "將近 {{count}} å¹´" + other: "將近 %{count} å¹´" prompts: year: "å¹´" month: "月" @@ -147,8 +147,8 @@ errors: template: header: - one: "有 1 個錯誤發生使得「{{model}}ã€ç„¡æ³•被儲存。" - other: "有 {{count}} 個錯誤發生使得「{{model}}ã€ç„¡æ³•被儲存。" + one: "有 1 個錯誤發生使得「%{model}ã€ç„¡æ³•被儲存。" + other: "有 %{count} 個錯誤發生使得「%{model}ã€ç„¡æ³•被儲存。" # The variable :count is also available body: "䏋颿‰€åˆ—æ¬„ä½æœ‰å•題:" # The values :model, :attribute and :value are always available for interpolation @@ -161,16 +161,16 @@ accepted: "必须是å¯è¢«æŽ¥å—çš„" empty: "ä¸èƒ½ç•™ç©º" blank: "ä¸èƒ½æ˜¯ç©ºç™½å­—å…ƒ" - too_long: "éŽé•·ï¼ˆæœ€é•·æ˜¯ {{count}} 個字)" - too_short: "éŽçŸ­ï¼ˆæœ€çŸ­æ˜¯ {{count}} 個字)" - wrong_length: "字數錯誤(必須是 {{count}} 個字)" + too_long: "éŽé•·ï¼ˆæœ€é•·æ˜¯ %{count} 個字)" + too_short: "éŽçŸ­ï¼ˆæœ€çŸ­æ˜¯ %{count} 個字)" + wrong_length: "字數錯誤(必須是 %{count} 個字)" taken: "已經被使用" not_a_number: "䏿˜¯æ•¸å­—" - greater_than: "必須大於 {{count}}" - greater_than_or_equal_to: "必須大於或等於 {{count}}" - equal_to: "必須等於 {{count}}" - less_than: "å¿…é ˆå°æ–¼ {{count}}" - less_than_or_equal_to: "å¿…é ˆå°æ–¼æˆ–等於 {{count}}" + greater_than: "必須大於 %{count}" + greater_than_or_equal_to: "必須大於或等於 %{count}" + equal_to: "必須等於 %{count}" + less_than: "å¿…é ˆå°æ–¼ %{count}" + less_than_or_equal_to: "å¿…é ˆå°æ–¼æˆ–等於 %{count}" odd: "必須是奇數" even: "å¿…é ˆæ˜¯å¶æ•¸" # Append your own errors here or at the model/attributes scope. @@ -185,7 +185,7 @@ # For example, # models: # user: - # blank: "This is a custom blank message for {{model}}: {{attribute}}" + # blank: "This is a custom blank message for %{model}: %{attribute}" # attributes: # login: # blank: "This is a custom blank message for User login" @@ -236,22 +236,23 @@ notice_locking_conflict: 資料已被其他使用者更新。 notice_not_authorized: ä½ æœªè¢«æŽˆæ¬Šå­˜å–æ­¤é é¢ã€‚ notice_not_authorized_archived_project: 您欲存å–的專案已經被歸檔å°å­˜ã€‚ - notice_email_sent: "郵件已經æˆåŠŸå¯„é€è‡³ä»¥ä¸‹æ”¶ä»¶è€…: {{value}}" - notice_email_error: "寄é€éƒµä»¶çš„éŽç¨‹ä¸­ç™¼ç”ŸéŒ¯èª¤ ({{value}})" + 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_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: "由於項目數é‡è¶…éŽå¯é¡¯ç¤ºæ•¸é‡çš„æœ€å¤§å€¼ (%{max}),故此甘特圖尾部已被截斷" - error_can_t_load_default_data: "無法載入é è¨­çµ„態: {{value}}" + error_can_t_load_default_data: "無法載入é è¨­çµ„態: %{value}" error_scm_not_found: "在 SCM 儲存庫中找ä¸åˆ°é€™å€‹é …目或版次。" - error_scm_command_failed: "å˜—è©¦å­˜å– SCM 儲存庫時發生錯誤: {{value}}" + error_scm_command_failed: "å˜—è©¦å­˜å– SCM 儲存庫時發生錯誤: %{value}" error_scm_annotate: "SCM 儲存庫中無此項目或此項目無法被加註。" error_issue_not_found_in_project: '該項目ä¸å­˜åœ¨æˆ–ä¸å±¬æ–¼æ­¤å°ˆæ¡ˆ' error_no_tracker_in_project: '此專案尚未指定追蹤標籤。請檢查專案的設定資訊。' @@ -265,26 +266,26 @@ error_workflow_copy_source: 'è«‹é¸æ“‡ä¸€å€‹ä¾†æºé …目追蹤標籤或角色' error_workflow_copy_target: 'è«‹é¸æ“‡ä¸€å€‹ï¼ˆæˆ–多個)目的項目追蹤標籤或角色' error_unable_delete_issue_status: '無法刪除項目狀態' - error_unable_to_connect: "無法連線至({{value}})" - warning_attachments_not_saved: "{{count}} 個附加檔案無法被儲存。" + error_unable_to_connect: "無法連線至(%{value})" + warning_attachments_not_saved: "%{count} 個附加檔案無法被儲存。" mail_subject_lost_password: 您的 Redmine 網站密碼 mail_body_lost_password: '欲變更您的 Redmine 網站密碼, 請點é¸ä»¥ä¸‹éˆçµ:' mail_subject_register: 啟用您的 Redmine 帳號 mail_body_register: '欲啟用您的 Redmine 帳號, 請點é¸ä»¥ä¸‹éˆçµ:' - mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨ {{value}} 帳號登入 Redmine 網站。" + mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨ %{value} 帳號登入 Redmine 網站。" mail_body_account_information: 您的 Redmine 帳號資訊 mail_subject_account_activation_request: Redmine 帳號啟用需求通知 - mail_body_account_activation_request: "æœ‰ä½æ–°ç”¨æˆ¶ ({{value}}) 已經完æˆè¨»å†Šï¼Œæ­£ç­‰å€™æ‚¨çš„審核:" - mail_subject_reminder: "您有 {{count}} 個項目å³å°‡åˆ°æœŸ ({{days}})" - mail_body_reminder: "{{count}} 個指派給您的項目,將於 {{days}} 天之內到期:" - mail_subject_wiki_content_added: "'{{id}}' wiki é é¢å·²è¢«æ–°å¢ž" - mail_body_wiki_content_added: "The '{{id}}' wiki é é¢å·²è¢« {{author}} 新增。" - mail_subject_wiki_content_updated: "'{{id}}' wiki é é¢å·²è¢«æ›´æ–°" - mail_body_wiki_content_updated: "The '{{id}}' wiki é é¢å·²è¢« {{author}} 更新。" + mail_body_account_activation_request: "æœ‰ä½æ–°ç”¨æˆ¶ (%{value}) 已經完æˆè¨»å†Šï¼Œæ­£ç­‰å€™æ‚¨çš„審核:" + mail_subject_reminder: "您有 %{count} 個項目å³å°‡åˆ°æœŸ (%{days})" + 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_body_wiki_content_updated: "æ­¤ '%{id}' wiki é é¢å·²è¢« %{author} 更新。" gui_validation_error: 1 個錯誤 - gui_validation_error_plural: "{{count}} 個錯誤" + gui_validation_error_plural: "%{count} 個錯誤" field_name: å稱 field_description: 概述 @@ -383,6 +384,7 @@ field_member_of_group: "被指派者的群組" field_assigned_to_role: "被指派者的角色" field_text: 內容文字 + field_visible: å¯è¢«çœ‹è¦‹ setting_app_title: 標題 setting_app_subtitle: 副標題 @@ -411,6 +413,7 @@ setting_issue_list_default_columns: é è¨­é¡¯ç¤ºæ–¼é …ç›®æ¸…å–®çš„æ¬„ä½ setting_repositories_encodings: 版本庫編碼 setting_commit_logs_encoding: é€äº¤è¨Šæ¯ç·¨ç¢¼ + setting_emails_header: é›»å­éƒµä»¶å‰é ­èªªæ˜Ž setting_emails_footer: é›»å­éƒµä»¶é™„帶說明 setting_protocol: å”定 setting_per_page_options: æ¯é é¡¯ç¤ºå€‹æ•¸é¸é … @@ -438,6 +441,9 @@ 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: 建立å­å°ˆæ¡ˆ @@ -516,14 +522,14 @@ label_x_projects: zero: 無專案 one: 1 個專案 - other: "{{count}} 個專案" + 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_issues_by: "項目按 %{value} 分組顯示" label_issue_added: 項目已新增 label_issue_updated: 項目已更新 label_document: 文件 @@ -574,7 +580,7 @@ label_registered_on: 註冊於 label_activity: 活動 label_overall_activity: 整體活動 - label_user_activity: "{{value}} 的活動" + label_user_activity: "%{value} 的活動" label_new: 建立新的... label_logged_as: ç›®å‰ç™»å…¥ label_environment: 環境 @@ -584,7 +590,7 @@ label_auth_source_plural: èªè­‰æ¨¡å¼æ¸…å–® label_subproject_plural: å­å°ˆæ¡ˆ label_subproject_new: 建立å­å°ˆæ¡ˆ - label_and_its_subprojects: "{{value}} 與其å­å°ˆæ¡ˆ" + label_and_its_subprojects: "%{value} 與其å­å°ˆæ¡ˆ" label_min_max_length: æœ€å° - 最大 長度 label_list: 清單 label_date: 日期 @@ -595,8 +601,8 @@ label_text: 長文字 label_attribute: 屬性 label_attribute_plural: 屬性 - label_download: "{{count}} 個下載" - label_download_plural: "{{count}} 個下載" + label_download: "%{count} 個下載" + label_download_plural: "%{count} 個下載" label_no_data: 沒有任何資料å¯ä¾›é¡¯ç¤º label_change_status: 變更狀態 label_history: æ­·å² @@ -628,17 +634,17 @@ label_closed_issues: å·²çµæŸ label_closed_issues_plural: å·²çµæŸ label_x_open_issues_abbr_on_total: - zero: 0 進行中 / å…± {{total}} - one: 1 進行中 / å…± {{total}} - other: "{{count}} 進行中 / å…± {{total}}" + zero: 0 進行中 / å…± %{total} + one: 1 進行中 / å…± %{total} + other: "%{count} 進行中 / å…± %{total}" label_x_open_issues_abbr: zero: 0 進行中 one: 1 進行中 - other: "{{count}} 進行中" + other: "%{count} 進行中" label_x_closed_issues_abbr: zero: 0 å·²çµæŸ one: 1 å·²çµæŸ - other: "{{count}} å·²çµæŸ" + other: "%{count} å·²çµæŸ" label_total: 總計 label_permissions: æ¬Šé™ label_current_status: ç›®å‰ç‹€æ…‹ @@ -656,7 +662,7 @@ label_months_from: 個月, 開始月份 label_gantt: 甘特圖 label_internal: 內部 - label_last_changes: "最近 {{count}} 個變更" + label_last_changes: "最近 %{count} 個變更" label_change_view_all: 檢視全部的變更 label_personalize_page: è‡ªè¨‚ç‰ˆé¢ label_comment: 註解 @@ -664,7 +670,7 @@ label_x_comments: zero: 無註解 one: 1 個註解 - other: "{{count}} 個註解" + other: "%{count} 個註解" label_comment_add: 加入新註解 label_comment_added: 新註解已加入 label_comment_delete: 刪除註解 @@ -685,7 +691,7 @@ label_yesterday: 昨天 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: 今年 @@ -699,13 +705,13 @@ label_repository: 版本控管 label_repository_plural: 版本控管 label_browse: ç€è¦½ - label_modification: "{{count}} 變更" - label_modification_plural: "{{count}} 變更" + label_modification: "%{count} 變更" + label_modification_plural: "%{count} 變更" label_branch: 分支 label_tag: 標籤 label_revision: 版次 label_revision_plural: 版次清單 - label_revision_id: "版次 {{value}}" + label_revision_id: "版次 %{value}" label_associated_revisions: 相關版次 label_added: 已新增 label_modified: 已修改 @@ -722,8 +728,8 @@ label_sort_lower: 往下移動 label_sort_lowest: 移動至çµå°¾ label_roadmap: 版本è—圖 - label_roadmap_due_in: "剩餘 {{value}}" - label_roadmap_overdue: "逾期 {{value}}" + label_roadmap_due_in: "剩餘 %{value}" + label_roadmap_overdue: "逾期 %{value}" label_roadmap_no_issues: 此版本尚未包å«ä»»ä½•é …ç›® label_search: æœå°‹ label_result_plural: çµæžœ @@ -742,8 +748,8 @@ label_issue_tracking: 項目追蹤 label_spent_time: 耗用工時 label_overall_spent_time: 整體耗用工時 - label_f_hour: "{{value}} å°æ™‚" - label_f_hour_plural: "{{value}} å°æ™‚" + label_f_hour: "%{value} å°æ™‚" + label_f_hour_plural: "%{value} å°æ™‚" label_time_tracking: 工時追蹤 label_change_plural: 變更 label_statistics: 統計資訊 @@ -794,15 +800,15 @@ label_date_from: é–‹å§‹ label_date_to: çµæŸ label_language_based: ä¾ç”¨æˆ¶ä¹‹èªžç³»æ±ºå®š - label_sort_by: "按 {{value}} 排åº" + 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_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_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: 變更集清單 @@ -822,7 +828,7 @@ label_registration_activation_by_email: é€éŽé›»å­éƒµä»¶å•Ÿç”¨å¸³æˆ¶ label_registration_manual_activation: 手動啟用帳戶 label_registration_automatic_activation: 自動啟用帳戶 - label_display_per_page: "æ¯é é¡¯ç¤º: {{value}} 個" + label_display_per_page: "æ¯é é¡¯ç¤º: %{value} 個" label_age: 年齡 label_change_properties: 變更屬性 label_general: 一般 @@ -845,7 +851,7 @@ label_sort: æŽ’åº label_ascending: éžå¢žæŽ’åº label_descending: éžæ¸›æŽ’åº - label_date_from_to: èµ· {{start}} è¿„ {{end}} + label_date_from_to: èµ· %{start} è¿„ %{end} label_wiki_content_added: Wiki é é¢å·²æ–°å¢ž label_wiki_content_updated: Wiki é é¢å·²æ›´æ–° label_group: 群組 @@ -864,10 +870,12 @@ label_display_used_statuses_only: 僅顯示此追蹤標籤所使用之狀態 label_api_access_key: API å­˜å–金鑰 label_missing_api_access_key: 找ä¸åˆ° API å­˜å–金鑰 - label_api_access_key_created_on: "API å­˜å–金鑰建立於 {{value}} 之å‰" + 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: é€å‡º @@ -879,7 +887,7 @@ button_create_and_continue: 繼續建立 button_test: 測試 button_edit: 編輯 - button_edit_associated_wikipage: "編輯相關 Wiki é é¢: {{page_title}}" + button_edit_associated_wikipage: "編輯相關 Wiki é é¢: %{page_title}" button_add: 新增 button_change: 修改 button_apply: 套用 @@ -928,54 +936,55 @@ text_regexp_info: eg. ^[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: "確定刪除此工作項目åŠå…¶å­é …目?" - text_journal_changed: "{{label}} 從 {{old}} 變更為 {{new}}" - text_journal_set_to: "{{label}} 設定為 {{value}}" - text_journal_deleted: "{{label}} 已刪除 ({{old}})" - text_journal_added: "{{label}} {{value}} 已新增" + 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)ã€é˜¿æ‹‰ä¼¯æ•¸å­—與連字符號(-)。
    儲存後,代碼ä¸å¯å†è¢«æ›´æ”¹ã€‚' - text_caracters_maximum: "最多 {{count}} 個字元." - text_caracters_minimum: "長度必須大於 {{count}} 個字元." - text_length_between: "長度必須介於 {{min}} 至 {{max}} 個字元之間." + 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: å¯è¼¸å…¥å¤šå€‹å€¼ï¼ˆé ˆä»¥æ›è¡Œç¬¦è™Ÿåˆ†éš”ï¼Œå³æ¯åˆ—åªèƒ½è¼¸å…¥ä¸€å€‹å€¼ï¼‰ã€‚ text_issues_ref_in_commit_messages: é€äº¤è¨Šæ¯ä¸­åƒç…§(或修正)項目之關éµå­— - text_issue_added: "é …ç›® {{id}} 已被 {{author}} 通報。" - text_issue_updated: "é …ç›® {{id}} 已被 {{author}} 更新。" + text_issue_added: "é …ç›® %{id} 已被 %{author} 通報。" + text_issue_updated: "é …ç›® %{id} 已被 %{author} 更新。" text_wiki_destroy_confirmation: 您確定è¦åˆªé™¤é€™å€‹ wiki 和其中的所有內容? - text_issue_category_destroy_question: "有 ({{count}}) 個項目被指派到此分類. è«‹é¸æ“‡æ‚¨æƒ³è¦çš„動作?" + 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_status_changed_by_changeset: "已套用至變更集 %{value}." + text_time_logged_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_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_user_wrote: "%{value} å…ˆå‰æåˆ°:" + text_enumeration_destroy_question: "ç›®å‰æœ‰ %{count} 個物件使用此列舉值。" text_enumeration_category_reassign_to: '釿–°è¨­å®šå…¶åˆ—舉值為:' - text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/email.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" + text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/configuration.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" 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_destroy_question: "æ­¤é é¢åŒ…å« %{descendants} 個å­é é¢åŠå»¶ä¼¸é é¢ã€‚ è«‹é¸æ“‡æ‚¨æƒ³è¦çš„動作?" text_wiki_page_nullify_children: "ä¿ç•™æ‰€æœ‰å­é é¢ç•¶ä½œæ ¹é é¢" text_wiki_page_destroy_children: "刪除所有å­é é¢åŠå…¶å»¶ä¼¸é é¢" text_wiki_page_reassign_children: "釿–°æŒ‡å®šæ‰€æœ‰çš„å­é é¢ä¹‹çˆ¶é é¢è‡³æ­¤é é¢" @@ -1009,8 +1018,7 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 - - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header + 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 7cec015f07ce -r 73ff0e6a11b1 config/locales/zh.yml --- a/config/locales/zh.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/locales/zh.yml Thu Mar 03 12:11:53 2011 +0000 @@ -29,37 +29,37 @@ half_a_minute: "åŠåˆ†é’Ÿ" less_than_x_seconds: one: "一秒内" - other: "少于 {{count}} ç§’" + other: "少于 %{count} ç§’" x_seconds: one: "一秒" - other: "{{count}} ç§’" + other: "%{count} ç§’" less_than_x_minutes: one: "一分钟内" - other: "少于 {{count}} 分钟" + other: "少于 %{count} 分钟" x_minutes: one: "一分钟" - other: "{{count}} 分钟" + other: "%{count} 分钟" about_x_hours: one: "å¤§çº¦ä¸€å°æ—¶" - other: "大约 {{count}} å°æ—¶" + other: "大约 %{count} å°æ—¶" x_days: one: "一天" - other: "{{count}} 天" + other: "%{count} 天" about_x_months: one: "大约一个月" - other: "大约 {{count}} 个月" + other: "大约 %{count} 个月" x_months: one: "一个月" - other: "{{count}} 个月" + other: "%{count} 个月" about_x_years: one: "大约一年" - other: "大约 {{count}} å¹´" + other: "大约 %{count} å¹´" over_x_years: one: "一年以上" - other: "{{count}} 年以上" + other: "%{count} 年以上" almost_x_years: one: "将近 1 å¹´" - other: "将近 {{count}} å¹´" + other: "将近 %{count} å¹´" prompts: year: "å¹´" month: "月" @@ -111,8 +111,8 @@ errors: template: header: - one: "有 1 个错误å‘生导致「{{model}}ã€æ— æ³•被ä¿å­˜ã€‚" - other: "有 {{count}} 个错误å‘生导致「{{model}}ã€æ— æ³•被ä¿å­˜ã€‚" + one: "有 1 个错误å‘生导致「%{model}ã€æ— æ³•被ä¿å­˜ã€‚" + other: "有 %{count} 个错误å‘生导致「%{model}ã€æ— æ³•被ä¿å­˜ã€‚" body: "如下字段出现错误:" messages: inclusion: "ä¸åŒ…å«äºŽåˆ—表中" @@ -122,16 +122,16 @@ accepted: "必须是å¯è¢«æŽ¥å—çš„" empty: "ä¸èƒ½ç•™ç©º" blank: "ä¸èƒ½ä¸ºç©ºå­—符" - too_long: "过长(最长为 {{count}} 个字符)" - too_short: "过短(最短为 {{count}} 个字符)" - wrong_length: "é•¿åº¦éžæ³•(必须为 {{count}} 个字符)" + too_long: "过长(最长为 %{count} 个字符)" + too_short: "过短(最短为 %{count} 个字符)" + wrong_length: "é•¿åº¦éžæ³•(必须为 %{count} 个字符)" taken: "å·²ç»è¢«ä½¿ç”¨" not_a_number: "䏿˜¯æ•°å­—" - greater_than: "必须大于 {{count}}" - greater_than_or_equal_to: "必须大于或等于 {{count}}" - equal_to: "必须等于 {{count}}" - less_than: "å¿…é¡»å°äºŽ {{count}}" - less_than_or_equal_to: "å¿…é¡»å°äºŽæˆ–等于 {{count}}" + 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: "必须在起始日期之åŽ" @@ -168,20 +168,20 @@ notice_file_not_found: 您访问的页é¢ä¸å­˜åœ¨æˆ–已被删除。 notice_locking_conflict: æ•°æ®å·²è¢«å¦ä¸€ä½ç”¨æˆ·æ›´æ–° notice_not_authorized: 对ä¸èµ·ï¼Œæ‚¨æ— æƒè®¿é—®æ­¤é¡µé¢ã€‚ - notice_email_sent: "邮件已æˆåŠŸå‘é€åˆ° {{value}}" - notice_email_error: "å‘é€é‚®ä»¶æ—¶å‘生错误 ({{value}})" + 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_issues: "%{count} 个问题ä¿å­˜å¤±è´¥ï¼ˆå…±é€‰æ‹© %{total} 个问题):%{ids}." notice_no_issue_selected: "未选择任何问题ï¼è¯·é€‰æ‹©æ‚¨è¦ç¼–辑的问题。" notice_account_pending: "您的å¸å·å·²è¢«æˆåŠŸåˆ›å»ºï¼Œæ­£åœ¨ç­‰å¾…ç®¡ç†å‘˜çš„审核。" notice_default_data_loaded: æˆåŠŸè½½å…¥é»˜è®¤è®¾ç½®ã€‚ notice_unable_delete_version: 无法删除版本 notice_issue_done_ratios_updated: 问题完æˆåº¦å·²æ›´æ–°ã€‚ - error_can_t_load_default_data: "无法载入默认设置:{{value}}" + error_can_t_load_default_data: "无法载入默认设置:%{value}" error_scm_not_found: "版本库中ä¸å­˜åœ¨è¯¥æ¡ç›®å’Œï¼ˆæˆ–)其修订版本。" - error_scm_command_failed: "访问版本库时å‘生错误:{{value}}" + error_scm_command_failed: "访问版本库时å‘生错误:%{value}" error_scm_annotate: "该æ¡ç›®ä¸å­˜åœ¨æˆ–无法追溯。" error_issue_not_found_in_project: '问题ä¸å­˜åœ¨æˆ–ä¸å±žäºŽæ­¤é¡¹ç›®' error_no_tracker_in_project: 该项目未设定跟踪标签,请检查项目é…置。 @@ -192,25 +192,25 @@ error_workflow_copy_source: 请选择一个æºè·Ÿè¸ªæ ‡ç­¾æˆ–者角色 error_workflow_copy_target: 请选择目标跟踪标签和角色 - warning_attachments_not_saved: "{{count}} 个文件ä¿å­˜å¤±è´¥ã€‚" + warning_attachments_not_saved: "%{count} 个文件ä¿å­˜å¤±è´¥ã€‚" - mail_subject_lost_password: "您的 {{value}} 密ç " + mail_subject_lost_password: "您的 %{value} 密ç " mail_body_lost_password: '请点击以下链接æ¥ä¿®æ”¹æ‚¨çš„密ç ï¼š' - mail_subject_register: "{{value}}å¸å·æ¿€æ´»" + mail_subject_register: "%{value}å¸å·æ¿€æ´»" mail_body_register: 'è¯·ç‚¹å‡»ä»¥ä¸‹é“¾æŽ¥æ¥æ¿€æ´»æ‚¨çš„å¸å·ï¼š' - mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨æ‚¨çš„ {{value}} å¸å·æ¥ç™»å½•。" + 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页é¢å·²æ·»åŠ " - mail_body_wiki_content_added: "'{{id}}' wiki页é¢å·²ç”± {{author}} 添加。" - mail_subject_wiki_content_updated: "'{{id}}' wiki页é¢å·²æ›´æ–°" - mail_body_wiki_content_updated: "'{{id}}' wiki页é¢å·²ç”± {{author}} 更新。" + 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页é¢å·²æ·»åŠ " + mail_body_wiki_content_added: "'%{id}' wiki页é¢å·²ç”± %{author} 添加。" + mail_subject_wiki_content_updated: "'%{id}' wiki页é¢å·²æ›´æ–°" + mail_body_wiki_content_updated: "'%{id}' wiki页é¢å·²ç”± %{author} 更新。" gui_validation_error: 1 个错误 - gui_validation_error_plural: "{{count}} 个错误" + gui_validation_error_plural: "%{count} 个错误" field_name: åç§° field_description: æè¿° @@ -272,6 +272,7 @@ field_attr_lastname: å§“æ°å±žæ€§ field_attr_mail: 邮件属性 field_onthefly: 峿—¶ç”¨æˆ·ç”Ÿæˆ + field_start_date: 开始 field_done_ratio: 完æˆåº¦ field_auth_source: è®¤è¯æ¨¡å¼ field_hide_mail: éšè—æˆ‘çš„é‚®ä»¶åœ°å€ @@ -427,14 +428,14 @@ label_x_projects: zero: 无项目 one: 1 个项目 - other: "{{count}} 个项目" + 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_issues_by: "按 %{value} 分组显示问题" label_issue_added: 问题已添加 label_issue_updated: 问题已更新 label_document: 文档 @@ -484,7 +485,7 @@ label_registered_on: 注册于 label_activity: 活动 label_overall_activity: 全部活动 - label_user_activity: "{{value}} 的活动" + label_user_activity: "%{value} 的活动" label_new: 新建 label_logged_as: 登录为 label_environment: 环境 @@ -494,7 +495,7 @@ label_auth_source_plural: è®¤è¯æ¨¡å¼ label_subproject_plural: å­é¡¹ç›® label_subproject_new: 新建å­é¡¹ç›® - label_and_its_subprojects: "{{value}} åŠå…¶å­é¡¹ç›®" + label_and_its_subprojects: "%{value} åŠå…¶å­é¡¹ç›®" label_min_max_length: æœ€å° - 最大 长度 label_list: 列表 label_date: 日期 @@ -505,8 +506,8 @@ label_text: 文本 label_attribute: 属性 label_attribute_plural: 属性 - label_download: "{{count}} 次下载" - label_download_plural: "{{count}} 次下载" + label_download: "%{count} 次下载" + label_download_plural: "%{count} 次下载" label_no_data: 没有任何数æ®å¯ä¾›æ˜¾ç¤º label_change_status: å˜æ›´çŠ¶æ€ label_history: 历å²è®°å½• @@ -538,17 +539,17 @@ label_closed_issues: 已关闭 label_closed_issues_plural: 已关闭 label_x_open_issues_abbr_on_total: - zero: 0 打开 / {{total}} - one: 1 打开 / {{total}} - other: "{{count}} 打开 / {{total}}" + zero: 0 打开 / %{total} + one: 1 打开 / %{total} + other: "%{count} 打开 / %{total}" label_x_open_issues_abbr: zero: 0 打开 one: 1 打开 - other: "{{count}} 打开" + other: "%{count} 打开" label_x_closed_issues_abbr: zero: 0 关闭 one: 1 关闭 - other: "{{count}} 关闭" + other: "%{count} 关闭" label_total: åˆè®¡ label_permissions: æƒé™ label_current_status: 当å‰çŠ¶æ€ @@ -566,7 +567,7 @@ label_months_from: ä¸ªæœˆä»¥æ¥ label_gantt: 甘特图 label_internal: 内部 - label_last_changes: "最近的 {{count}} æ¬¡å˜æ›´" + label_last_changes: "最近的 %{count} æ¬¡å˜æ›´" label_change_view_all: æŸ¥çœ‹æ‰€æœ‰å˜æ›´ label_personalize_page: 个性化定制本页 label_comment: 评论 @@ -574,7 +575,7 @@ label_x_comments: zero: 无评论 one: 1 æ¡è¯„论 - other: "{{count}} æ¡è¯„论" + other: "%{count} æ¡è¯„论" label_comment_add: 添加评论 label_comment_added: 评论已添加 label_comment_delete: 删除评论 @@ -595,7 +596,7 @@ label_yesterday: 昨天 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: 今年 @@ -609,13 +610,13 @@ label_repository: 版本库 label_repository_plural: 版本库 label_browse: æµè§ˆ - label_modification: "{{count}} 个更新" - label_modification_plural: "{{count}} 个更新" + label_modification: "%{count} 个更新" + label_modification_plural: "%{count} 个更新" label_branch: 分支 label_tag: 标签 label_revision: 修订 label_revision_plural: 修订 - label_revision_id: 修订 {{value}} + label_revision_id: 修订 %{value} label_associated_revisions: 相关修订版本 label_added: 已添加 label_modified: 已修改 @@ -632,8 +633,8 @@ label_sort_lower: 下移 label_sort_lowest: 置底 label_roadmap: 路线图 - label_roadmap_due_in: "截止日期到 {{value}}" - label_roadmap_overdue: "{{value}} 延期" + label_roadmap_due_in: "截止日期到 %{value}" + label_roadmap_overdue: "%{value} 延期" label_roadmap_no_issues: 该版本没有问题 label_search: æœç´¢ label_result_plural: 结果 @@ -651,8 +652,8 @@ label_changes_details: æ‰€æœ‰å˜æ›´çš„详情 label_issue_tracking: 问题跟踪 label_spent_time: 耗时 - label_f_hour: "{{value}} å°æ—¶" - label_f_hour_plural: "{{value}} å°æ—¶" + label_f_hour: "%{value} å°æ—¶" + label_f_hour_plural: "%{value} å°æ—¶" label_time_tracking: 时间跟踪 label_change_plural: å˜æ›´ label_statistics: 统计 @@ -701,15 +702,15 @@ label_date_from: 从 label_date_to: 到 label_language_based: æ ¹æ®ç”¨æˆ·çš„语言 - label_sort_by: "æ ¹æ® {{value}} 排åº" + 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_feeds_access_key_created_on: "RSSå­˜å–键是在 %{value} 之å‰å»ºç«‹çš„" label_module_plural: æ¨¡å— - label_added_time_by: "ç”± {{author}} 在 {{age}} 之剿·»åŠ " - label_updated_time: " 更新于 {{value}} 之å‰" - label_updated_time_by: "ç”± {{author}} 更新于 {{age}} 之å‰" + label_added_time_by: "ç”± %{author} 在 %{age} 之剿·»åŠ " + label_updated_time: " 更新于 %{value} 之å‰" + label_updated_time_by: "ç”± %{author} 更新于 %{age} 之å‰" label_jump_to_a_project: 选择一个项目... label_file_plural: 文件 label_changeset_plural: å˜æ›´ @@ -725,7 +726,7 @@ label_registration_activation_by_email: é€šè¿‡é‚®ä»¶è®¤è¯æ¿€æ´»å¸å· label_registration_manual_activation: 手动激活å¸å· label_registration_automatic_activation: 自动激活å¸å· - label_display_per_page: "æ¯é¡µæ˜¾ç¤ºï¼š{{value}}" + label_display_per_page: "æ¯é¡µæ˜¾ç¤ºï¼š%{value}" label_age: 年龄 label_change_properties: 修改属性 label_general: 一般 @@ -748,7 +749,7 @@ label_sort: æŽ’åº label_ascending: å‡åº label_descending: é™åº - label_date_from_to: 从 {{start}} 到 {{end}} + label_date_from_to: 从 %{start} 到 %{end} label_wiki_content_added: Wiki 页é¢å·²æ·»åŠ  label_wiki_content_updated: Wiki 页é¢å·²æ›´æ–° label_group: 组 @@ -767,7 +768,7 @@ label_display_used_statuses_only: åªæ˜¾ç¤ºè¢«æ­¤è·Ÿè¸ªæ ‡ç­¾ä½¿ç”¨çš„çŠ¶æ€ label_api_access_key: API访问键 label_missing_api_access_key: 缺少API访问键 - label_api_access_key_created_on: API访问键是在 {{value}} 之å‰å»ºç«‹çš„ + label_api_access_key_created_on: API访问键是在 %{value} 之å‰å»ºç«‹çš„ button_login: 登录 button_submit: æäº¤ @@ -827,53 +828,53 @@ 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_journal_changed: "{{label}} 从 {{old}} å˜æ›´ä¸º {{new}}" - text_journal_set_to: "{{label}} 被设置为 {{value}}" - text_journal_deleted: "{{label}} 已删除 ({{old}})" - text_journal_added: "{{label}} {{value}} 已添加" + 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),数字和连字符(-)。
    请注æ„,标识符ä¿å­˜åŽå°†ä¸å¯ä¿®æ”¹ã€‚' - text_caracters_maximum: "最多 {{count}} 个字符。" - text_caracters_minimum: "è‡³å°‘éœ€è¦ {{count}} 个字符。" - text_length_between: "长度必须在 {{min}} 到 {{max}} 个字符之间。" + 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: å¯ä»¥ä½¿ç”¨å¤šä¸ªå€¼ï¼ˆæ¯è¡Œä¸€ä¸ªå€¼ï¼‰ã€‚ text_issues_ref_in_commit_messages: 在æäº¤ä¿¡æ¯ä¸­å¼•用和解决问题 - text_issue_added: "问题 {{id}} 已由 {{author}} æäº¤ã€‚" - text_issue_updated: "问题 {{id}} 已由 {{author}} 更新。" + text_issue_added: "问题 %{id} 已由 %{author} æäº¤ã€‚" + text_issue_updated: "问题 %{id} 已由 %{author} 更新。" text_wiki_destroy_confirmation: 您确定è¦åˆ é™¤è¿™ä¸ª wiki åŠå…¶æ‰€æœ‰å†…容å—? - text_issue_category_destroy_question: "有一些问题({{count}} ä¸ªï¼‰å±žäºŽæ­¤ç±»åˆ«ã€‚æ‚¨æƒ³è¿›è¡Œå“ªç§æ“作?" + 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_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_question: 您è¦åˆ é™¤çš„问题已ç»ä¸ŠæŠ¥äº† %{hours} å°æ—¶çš„工作é‡ã€‚æ‚¨æƒ³è¿›è¡Œé‚£ç§æ“作? text_destroy_time_entries: åˆ é™¤ä¸ŠæŠ¥çš„å·¥ä½œé‡ text_assign_time_entries_to_project: å°†å·²ä¸ŠæŠ¥çš„å·¥ä½œé‡æäº¤åˆ°é¡¹ç›®ä¸­ text_reassign_time_entries: 'å°†å·²ä¸ŠæŠ¥çš„å·¥ä½œé‡æŒ‡å®šåˆ°æ­¤é—®é¢˜ï¼š' - text_user_wrote: "{{value}} 写到:" + text_user_wrote: "%{value} 写到:" text_enumeration_category_reassign_to: '将它们关è”到新的枚举值:' - text_enumeration_destroy_question: "{{count}} 个对象被关è”到了这个枚举值。" - text_email_delivery_not_configured: "邮件傿•°å°šæœªé…置,因此邮件通知功能已被ç¦ç”¨ã€‚\n请在config/email.yml中é…置您的SMTPæœåŠ¡å™¨ä¿¡æ¯å¹¶é‡æ–°å¯åŠ¨ä»¥ä½¿å…¶ç”Ÿæ•ˆã€‚" + 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_destroy_question: æ­¤é¡µé¢æœ‰ %{descendants} 个å­é¡µé¢å’Œä¸‹çº§é¡µé¢ã€‚æ‚¨æƒ³è¿›è¡Œé‚£ç§æ“作? text_wiki_page_reassign_children: å°†å­é¡µé¢çš„上级页é¢è®¾ç½®ä¸º text_wiki_page_nullify_children: å°†å­é¡µé¢ä¿ç•™ä¸ºæ ¹é¡µé¢ text_wiki_page_destroy_children: 删除å­é¡µé¢åŠå…¶æ‰€æœ‰ä¸‹çº§é¡µé¢ @@ -917,12 +918,12 @@ label_subtask_plural: å­ä»»åŠ¡ label_project_copy_notifications: å¤åˆ¶é¡¹ç›®æ—¶å‘é€é‚®ä»¶é€šçŸ¥ error_can_not_delete_custom_field: ä¸èƒ½åˆ é™¤è‡ªå®šä¹‰å±žæ€§ - error_unable_to_connect: ä¸èƒ½è¿žæŽ¥åˆ° ({{value}}) + 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}}。" + notice_failed_to_save_members: "æˆå‘˜ä¿å­˜å¤±è´¥ï¼š%{errors}。" text_zoom_out: ç¼©å° text_zoom_in: 放大 notice_unable_delete_time_entry: 无法删除工时记录。 @@ -930,7 +931,7 @@ field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}" + 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 @@ -941,8 +942,16 @@ 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. - field_start_date: Start date 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" diff -r 7cec015f07ce -r 73ff0e6a11b1 config/routes.rb --- a/config/routes.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/config/routes.rb Thu Mar 03 12:11:53 2011 +0000 @@ -122,8 +122,7 @@ map.resources :users, :member => { :edit_membership => :post, :destroy_membership => :post - }, - :except => [:destroy] + } # For nice "roadmap" in the url for the index action map.connect 'projects/:project_id/roadmap', :controller => 'versions', :action => 'index' diff -r 7cec015f07ce -r 73ff0e6a11b1 config/settings.yml --- a/config/settings.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/config/settings.yml Thu Mar 03 12:11:53 2011 +0000 @@ -70,6 +70,9 @@ feeds_limit: format: int default: 15 +gantt_items_limit: + format: int + default: 500 # Maximum size of files that can be displayed # inline through the file viewer (in KB) file_max_size_displayed: @@ -102,6 +105,11 @@ default: 0 commit_fix_done_ratio: default: 100 +commit_logtime_enabled: + default: 0 +commit_logtime_activity_id: + format: int + default: 0 # autologin duration in days # 0 means autologin is disabled autologin: diff -r 7cec015f07ce -r 73ff0e6a11b1 db/.svn/all-wcprops --- a/db/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/db/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 27 -/svn/!svn/ver/4402/trunk/db +/svn/!svn/ver/4981/trunk/db END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/.svn/dir-prop-base --- a/db/.svn/dir-prop-base Tue Feb 22 16:48:15 2011 +0000 +++ b/db/.svn/dir-prop-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,8 +1,7 @@ K 10 svn:ignore -V 26 +V 20 schema.rb -demo.db -test.db +*.sqlite3 END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/.svn/entries --- a/db/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/db/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/db http://redmine.rubyforge.org/svn -2010-11-14T12:33:14.198318Z -4402 -jplang +2011-03-01T10:14:47.182368Z +4981 +tmaruyama has-props diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/all-wcprops --- a/db/migrate/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 35 -/svn/!svn/ver/4402/trunk/db/migrate +/svn/!svn/ver/4981/trunk/db/migrate END 20101107130441_add_custom_fields_visible.rb K 25 @@ -97,7 +97,7 @@ K 25 svn:wc:ra_dav:version-url V 94 -/svn/!svn/ver/4216/trunk/db/migrate/20100129193402_change_users_mail_notification_to_string.rb +/svn/!svn/ver/4413/trunk/db/migrate/20100129193402_change_users_mail_notification_to_string.rb END 008_create_user_preferences.rb K 25 @@ -105,18 +105,18 @@ 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 -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 20091220183727_add_index_to_settings_name.rb K 25 svn:wc:ra_dav:version-url @@ -153,11 +153,11 @@ V 71 /svn/!svn/ver/1814/trunk/db/migrate/096_add_commit_access_permission.rb END -024_add_roadmap_permission.rb +20090401221305_update_enumerations_to_sti.rb K 25 svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/674/trunk/db/migrate/024_add_roadmap_permission.rb +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 @@ -165,11 +165,11 @@ V 79 /svn/!svn/ver/1236/trunk/db/migrate/091_change_changesets_revision_to_string.rb END -20090401221305_update_enumerations_to_sti.rb +024_add_roadmap_permission.rb K 25 svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/2777/trunk/db/migrate/20090401221305_update_enumerations_to_sti.rb +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 @@ -177,17 +177,23 @@ 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 -072_add_enumerations_position.rb +20090614091200_fix_messages_sticky_null.rb K 25 svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/1623/trunk/db/migrate/072_add_enumerations_position.rb +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 @@ -195,12 +201,6 @@ V 68 /svn/!svn/ver/2440/trunk/db/migrate/108_add_identity_url_to_users.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 20091220184736_add_indexes_to_issue_status.rb K 25 svn:wc:ra_dav:version-url @@ -249,6 +249,12 @@ 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 @@ -273,6 +279,12 @@ 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 @@ -285,6 +297,12 @@ 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 @@ -363,18 +381,18 @@ 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 -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 20100313171051_add_index_on_issues_nested_set.rb K 25 svn:wc:ra_dav:version-url @@ -405,23 +423,23 @@ 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 -001_setup.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/1764/trunk/db/migrate/001_setup.rb -END 20100129193813_update_mail_notification_values.rb K 25 svn:wc:ra_dav:version-url V 85 -/svn/!svn/ver/4368/trunk/db/migrate/20100129193813_update_mail_notification_values.rb +/svn/!svn/ver/4413/trunk/db/migrate/20100129193813_update_mail_notification_values.rb END 20091017214611_add_missing_indexes_to_journals.rb K 25 @@ -429,17 +447,29 @@ 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 -041_rename_comment_to_comments.rb +089_add_attachments_description.rb K 25 svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/482/trunk/db/migrate/041_rename_comment_to_comments.rb +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 @@ -447,41 +477,41 @@ V 99 /svn/!svn/ver/2928/trunk/db/migrate/20091017214750_add_missing_indexes_to_custom_fields_trackers.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 -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 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 -093_add_wiki_pages_protected.rb +083_add_messages_sticky.rb K 25 svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/1415/trunk/db/migrate/093_add_wiki_pages_protected.rb +V 61 +/svn/!svn/ver/926/trunk/db/migrate/083_add_messages_sticky.rb END 060_change_changesets_committer_limit.rb K 25 @@ -489,12 +519,6 @@ V 76 /svn/!svn/ver/1222/trunk/db/migrate/060_change_changesets_committer_limit.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 069_add_issues_estimated_hours.rb K 25 svn:wc:ra_dav:version-url @@ -511,7 +535,7 @@ K 25 svn:wc:ra_dav:version-url V 81 -/svn/!svn/ver/4370/trunk/db/migrate/20101104182107_add_unique_index_on_members.rb +/svn/!svn/ver/4610/trunk/db/migrate/20101104182107_add_unique_index_on_members.rb END 20100313132032_add_issues_nested_sets_columns.rb K 25 @@ -561,18 +585,18 @@ 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 -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 013_create_queries.rb K 25 svn:wc:ra_dav:version-url @@ -585,18 +609,18 @@ 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 -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 085_add_role_tracker_old_status_index_to_workflows.rb K 25 svn:wc:ra_dav:version-url @@ -621,29 +645,35 @@ 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 -20091017212457_add_missing_indexes_to_custom_fields_projects.rb +097_add_view_wiki_edits_permission.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 -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 +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 @@ -651,11 +681,11 @@ V 65 /svn/!svn/ver/685/trunk/db/migrate/065_add_settings_updated_on.rb END -097_add_view_wiki_edits_permission.rb +20091017213716_add_missing_indexes_to_member_roles.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 +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 @@ -669,6 +699,12 @@ 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 @@ -681,17 +717,23 @@ 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 -20090503121505_populate_member_roles.rb +050_add_wiki_attachments_permissions.rb K 25 svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/2729/trunk/db/migrate/20090503121505_populate_member_roles.rb +V 74 +/svn/!svn/ver/674/trunk/db/migrate/050_add_wiki_attachments_permissions.rb END 062_insert_builtin_roles.rb K 25 @@ -699,11 +741,11 @@ V 62 /svn/!svn/ver/674/trunk/db/migrate/062_insert_builtin_roles.rb END -050_add_wiki_attachments_permissions.rb +104_add_projects_lft_and_rgt.rb K 25 svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/674/trunk/db/migrate/050_add_wiki_attachments_permissions.rb +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 @@ -711,12 +753,6 @@ V 62 /svn/!svn/ver/845/trunk/db/migrate/074_add_auth_sources_tls.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 20091114105931_add_view_issues_permission.rb K 25 svn:wc:ra_dav:version-url @@ -729,18 +765,18 @@ 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 -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 20091017213444_add_missing_indexes_to_tokens.rb K 25 svn:wc:ra_dav:version-url @@ -879,12 +915,24 @@ 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 @@ -1059,6 +1107,12 @@ 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 diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/entries --- a/db/migrate/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/db/migrate http://redmine.rubyforge.org/svn -2010-11-14T12:33:14.198318Z -4402 -jplang +2011-03-01T10:14:47.182368Z +4981 +tmaruyama @@ -32,7 +32,7 @@ -2010-11-19T13:04:50.884918Z +2011-03-03T11:05:12.000000Z 21dc29619a0cfd0f3aa12d77cc5cb132 2010-11-07T14:17:35.749175Z 4383 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z e1234fbaef167ddc0013ffe1d3bc67b9 2007-11-04T11:40:17.595469Z 881 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 0b2c38434ec4b25c41f50963a46a3bc6 2007-06-12T20:12:05.590809Z 559 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z dba48c03009eb5bcbd2f686a37c42147 2009-10-17T22:23:29.892475Z 2928 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z b17611805f3b447ec0f0b703ea8b6d10 2008-11-10T18:59:06.897210Z 2006 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 23ebbc94eb59590d0f0b200b4b38289b 2007-08-29T16:52:35.680643Z 674 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z ffabca1301a0ade41918ec9d6618fda0 2008-07-04T17:58:14.743502Z 1623 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z e6ff0ff9c004d9688e79b550991ec109 2007-08-29T16:52:35.680643Z 674 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 39c994e2469a6dfb97fa50cf595439e8 2007-04-25T15:06:20.062636Z 479 @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 828df977f9e16943bc74595c65774c62 2007-03-10T15:09:49.115269Z 323 @@ -372,7 +372,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z eea8e3f0a1fe28e8c686af190259a3d6 2009-09-12T08:36:46.650954Z 2869 @@ -406,7 +406,7 @@ -2010-11-19T13:04:50.884918Z +2011-03-03T11:05:12.000000Z be338f41292d95bb7ba3caa125999de0 2010-11-14T12:33:14.198318Z 4402 @@ -440,7 +440,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 06c8b504bcdd08c2f5dcf14a0b927420 2007-11-20T15:40:16.305800Z 919 @@ -474,7 +474,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 283fb200008f4dae98e0b3d46f0b97aa 2009-10-17T22:23:29.892475Z 2928 @@ -508,7 +508,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z da329a16de705c673418c18119f788d8 2007-08-29T16:52:35.680643Z 674 @@ -542,33 +542,33 @@ -2010-11-19T13:04:50.888959Z -7a99a8db186dc5ae3903ff470808fbd8 -2010-09-28T18:22:00.231301Z -4216 -edavis10 - - - - - - - - - - - - - - - - - - - - - -290 +2011-03-03T11:05:12.000000Z +627e34913535f16f767133cbdc5b57f0 +2010-11-20T09:55:06.580420Z +4413 +jplang + + + + + + + + + + + + + + + + + + + + + +1071 008_create_user_preferences.rb file @@ -576,7 +576,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 5bb1427a275abe1f2ec4b6b03a087cd8 2006-12-03T19:55:45.161980Z 62 @@ -610,7 +610,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 42937036f9c414f7d9b028f629b1ce20 2007-08-29T16:52:35.680643Z 674 @@ -644,7 +644,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z f4c10807bb47b69af35e9402966089f1 2007-02-04T09:18:40.598564Z 228 @@ -678,7 +678,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z c5d86ec3cda95998a3fb590c6f492b6b 2009-12-20T19:13:22.787652Z 3206 @@ -712,7 +712,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z b2f88560d10a9676bdb65e18f9a13d65 2009-10-17T22:23:29.892475Z 2928 @@ -746,7 +746,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z a269e98b11a4d0d865c82328d7af5663 2007-03-25T12:12:15.060977Z 377 @@ -780,7 +780,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 69a42a62536b1f435ce1080ceccb4c75 2009-01-17T11:18:04.652409Z 2276 @@ -814,7 +814,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 84bec26b6eaebc64c437c5a3b4784a94 2009-10-17T22:23:29.892475Z 2928 @@ -848,7 +848,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 53ee6af48c18534db0ffdd4fa5c5df7f 2008-09-13T16:31:11.005265Z 1814 @@ -876,39 +876,39 @@ 321 -024_add_roadmap_permission.rb -file - - - - -2010-09-23T14:37:44.883725Z -f1b96e04888c0a48bf29dd0556ba8027 -2007-08-29T16:52:35.680643Z -674 -jplang - - - - - - - - - - - - - - - - - - - - - -445 +20090401221305_update_enumerations_to_sti.rb +file + + + + +2011-03-03T11:05:12.000000Z +d343c3ba8f04d1cc71f20c9860d5907b +2009-05-30T23:30:36.923541Z +2777 +edavis10 + + + + + + + + + + + + + + + + + + + + + +329 091_change_changesets_revision_to_string.rb file @@ -916,7 +916,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 611baff063a1d909ba581aa98018cae7 2008-03-12T20:28:49.748698Z 1236 @@ -944,39 +944,39 @@ 245 -20090401221305_update_enumerations_to_sti.rb -file - - - - -2010-09-23T14:37:44.915753Z -d343c3ba8f04d1cc71f20c9860d5907b -2009-05-30T23:30:36.923541Z -2777 -edavis10 - - - - - - - - - - - - - - - - - - - - - -329 +024_add_roadmap_permission.rb +file + + + + +2011-03-03T11:05:12.000000Z +f1b96e04888c0a48bf29dd0556ba8027 +2007-08-29T16:52:35.680643Z +674 +jplang + + + + + + + + + + + + + + + + + + + + + +445 20091017214720_add_missing_indexes_to_wiki_redirects.rb file @@ -984,7 +984,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 72e8d36a80b63657037f175b368f2e2c 2009-10-17T22:23:29.892475Z 2928 @@ -1012,47 +1012,13 @@ 195 -034_create_changesets.rb -file - - - - -2010-09-23T14:37:44.883725Z -82595f307b6fe5053151a681b737f063 -2007-04-25T15:06:20.062636Z -479 -jplang - - - - - - - - - - - - - - - - - - - - - -515 - 072_add_enumerations_position.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 891f793e4f2ab50f57b8488c764ceff1 2008-07-04T17:58:14.743502Z 1623 @@ -1080,39 +1046,39 @@ 495 -108_add_identity_url_to_users.rb -file - - - - -2010-09-23T14:37:44.915753Z -b175e6c85c5faf4b5d2f092f65338b10 -2009-02-11T19:06:55.627694Z -2440 -edavis10 - - - - - - - - - - - - - - - - - - - - - -187 +034_create_changesets.rb +file + + + + +2011-03-03T11:05:12.000000Z +82595f307b6fe5053151a681b737f063 +2007-04-25T15:06:20.062636Z +479 +jplang + + + + + + + + + + + + + + + + + + + + + +515 20090614091200_fix_messages_sticky_null.rb file @@ -1120,7 +1086,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z c460bb38faa03667fc34a3b131ec40df 2009-06-14T09:19:20.900273Z 2787 @@ -1148,13 +1114,47 @@ 176 +108_add_identity_url_to_users.rb +file + + + + +2011-03-03T11:05:12.000000Z +b175e6c85c5faf4b5d2f092f65338b10 +2009-02-11T19:06:55.627694Z +2440 +edavis10 + + + + + + + + + + + + + + + + + + + + + +187 + 20091220184736_add_indexes_to_issue_status.rb file -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 7aa35de55587b897fea800e8044039a8 2009-12-20T19:13:22.787652Z 3206 @@ -1188,7 +1188,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z e4eff12465b879f063cac04a709438b9 2010-08-22T18:42:00.112555Z 4013 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 0492f13cf6f16f90603fdd82c388bace 2007-05-08T09:26:57.307537Z 518 @@ -1256,7 +1256,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 9a69054334fcbc6b72eb8b5ae9957129 2009-12-27T11:57:13.519273Z 3254 @@ -1290,7 +1290,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z b17259dfa6f46844e0f86b110577fbc6 2008-03-09T15:36:47.697904Z 1220 @@ -1324,7 +1324,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z e00a737604d0be6b94c92236e4f378eb 2009-05-10T10:54:31.775505Z 2726 @@ -1358,7 +1358,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 2fb7c5a95c8ed07756c3fbb917c98230 2007-10-22T21:07:13.432482Z 864 @@ -1392,7 +1392,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 1702102b56ee973066c86d659252a366 2007-08-29T16:52:35.680643Z 674 @@ -1420,13 +1420,47 @@ 751 +20110223180953_salt_user_passwords.rb +file + + + + +2011-03-03T11:40:18.000000Z +f72892b525076a1ffaf1f2548822d560 +2011-02-23T17:27:31.762248Z +4936 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +384 + 038_add_custom_field_is_filter.rb file -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 0c630c7ad4fbe9ccbb897363a422efa6 2007-04-17T10:53:20.697217Z 447 @@ -1460,7 +1494,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 6e9fdd6731ba51e864563938c05ed9da 2010-02-21T14:40:00.085842Z 3471 @@ -1494,7 +1528,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 8e58d8ec43e40266d62fd64b4b6a9a09 2007-05-13T17:09:56.765659Z 529 @@ -1528,7 +1562,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 6350cf7f18c7d61d54bf2bfa55e108d3 2009-12-25T17:13:58.090736Z 3240 @@ -1556,13 +1590,47 @@ 442 +20110220160626_add_workflows_assignee_and_author.rb +file + + + + +2011-03-03T11:40:18.000000Z +8e7a8d0f81e207e3d673703de33fdb69 +2011-02-20T15:38:07.840581Z +4895 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +495 + 030_add_projects_feeds_permissions.rb file -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 3216f04b6b84aaa6d29bc0f3e5d8c462 2007-08-29T16:52:35.680643Z 674 @@ -1596,7 +1664,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z fb852fdf1ab4266ab05a36ff105b7ceb 2007-10-22T21:07:13.432482Z 864 @@ -1624,13 +1692,47 @@ 607 +20110228000000_add_repositories_log_encoding.rb +file + + + + +2011-03-03T11:40:18.000000Z +dbe736040dcb44e3db78219ecfdb3d62 +2011-03-01T09:47:06.578325Z +4980 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +237 + 076_allow_null_position.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 9f0c1dd813015fc37cd47062fe15ef91 2008-02-12T21:11:16.312726Z 1140 @@ -1664,7 +1766,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z e08dfbd6aca488a1513bfe7c59e2da90 2009-10-17T22:23:29.892475Z 2928 @@ -1698,7 +1800,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 767d76b65ff41dd9860747d14bb24ee1 2009-12-20T19:13:22.787652Z 3206 @@ -1732,7 +1834,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 93159e216a0265b8f239566bfb91fd8e 2009-10-17T22:23:29.892475Z 2928 @@ -1766,7 +1868,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 5fa98acba6010a7450722133bfb66962 2010-07-24T00:19:32.307471Z 3860 @@ -1800,7 +1902,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z eeff80bd1cee52d49f1eb78fab035adf 2009-10-17T22:23:29.892475Z 2928 @@ -1834,7 +1936,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 09b6720db5ea81c8e22aff9dd89fc0bd 2009-10-17T22:23:29.892475Z 2928 @@ -1868,7 +1970,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z b392b3c84d6d7b8bba99011778f5b54e 2007-11-20T20:29:03.757553Z 920 @@ -1902,7 +2004,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 2ae2d679057fe2db7b7a8bdabc2cbf6d 2009-10-17T22:23:29.892475Z 2928 @@ -1936,7 +2038,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 01a97aa31f8b9917a84790f23e0e90d1 2009-10-21T22:34:34.183882Z 2947 @@ -1970,7 +2072,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z af4786659f25d96a43468cdc4bcfae44 2009-02-11T19:06:50.454280Z 2439 @@ -2004,7 +2106,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 82e35d32f60c71db17de62592693c737 2007-10-20T12:47:05.860183Z 855 @@ -2038,7 +2140,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 3ac5fb29973ffa0ca94ac90387c73b78 2007-08-29T16:52:35.680643Z 674 @@ -2066,13 +2168,47 @@ 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 -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z db7f5c6597e13933c96cb58cbbd1f0bd 2007-10-05T17:44:15.414646Z 803 @@ -2100,47 +2236,13 @@ 236 -037_add_project_identifier.rb -file - - - - -2010-09-23T14:37:44.887754Z -e61809aaf1ac8a2a290c4574ed598ff0 -2007-04-02T06:29:09.277122Z -397 -jplang - - - - - - - - - - - - - - - - - - - - - -202 - 20100313171051_add_index_on_issues_nested_set.rb file -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 243f136f05a508fff7ca52423f65c959 2010-03-13T17:17:10.453825Z 3578 @@ -2174,7 +2276,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z e5f0fe89be9a00fe1f8b246bde88fca1 2007-10-01T08:44:17.920088Z 782 @@ -2208,7 +2310,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z bb79c723b9d9fdabe49ed18ebb8a6caf 2009-12-11T18:48:34.197724Z 3151 @@ -2242,7 +2344,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z b8b7c422c3d666340afaec3a52c5d6a4 2007-10-22T21:07:13.432482Z 864 @@ -2270,47 +2372,13 @@ 275 -016_add_repositories_permissions.rb -file - - - - -2010-09-23T14:37:44.879727Z -e770aa6387bb4737804d5024e743cd25 -2007-08-29T16:52:35.680643Z -674 -jplang - - - - - - - - - - - - - - - - - - - - - -1658 - 20091010093521_fix_users_custom_values.rb file -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 55350d451c622488f9358f7bbe12d4de 2009-10-10T10:16:00.250819Z 2905 @@ -2344,7 +2412,7 @@ -2010-09-23T14:37:44.875728Z +2011-03-03T11:05:12.000000Z b740a77ff87e6390f7ad86eaf0710040 2008-08-25T16:35:20.899166Z 1764 @@ -2372,16 +2440,50 @@ 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 -2010-11-19T13:04:50.888959Z -d584696f16d190556dd796ab71ebe6f8 -2010-11-06T10:57:56.438344Z -4368 +2011-03-03T11:05:12.000000Z +d2251c92048ec4169e2c220f1510d803 +2010-11-20T09:55:06.580420Z +4413 jplang @@ -2404,7 +2506,7 @@ -583 +241 20091017214611_add_missing_indexes_to_journals.rb file @@ -2412,7 +2514,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 4cedb1faff3054d9be6250b589882b50 2009-10-17T22:23:29.892475Z 2928 @@ -2440,13 +2542,47 @@ 263 +041_rename_comment_to_comments.rb +file + + + + +2011-03-03T11:05:12.000000Z +4901b560613f6a0ae3e5df5bcf2dd11c +2007-04-25T16:48:01.299251Z +482 +jplang + + + + + + + + + + + + + + + + + + + + + +896 + 20091017214107_add_missing_indexes_to_custom_fields.rb file -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 0e1e45e51997617f8672e6d0d5ed8e51 2009-10-17T22:23:29.892475Z 2928 @@ -2474,73 +2610,39 @@ 211 -041_rename_comment_to_comments.rb -file - - - - -2010-09-23T14:37:44.887754Z -4901b560613f6a0ae3e5df5bcf2dd11c -2007-04-25T16:48:01.299251Z -482 +089_add_attachments_description.rb +file + + + + +2011-03-03T11:05:12.000000Z +f60a0c1f633a6ff65fb2734173b57fe4 +2008-02-29T19:46:58.834023Z +1180 jplang - - - - - - - - - - - - - - - - - - - - - -896 - -20091017214750_add_missing_indexes_to_custom_fields_trackers.rb -file - - - - -2010-09-23T14:37:44.927757Z -871a600c06a6965f52c63177a82fbe15 -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -275 +has-props + + + + + + + + + + + + + + + + + + + + +201 067_create_wiki_redirects.rb file @@ -2548,7 +2650,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 31acec69fd7efa0c26dec61f860b0c85 2007-09-09T17:05:38.846724Z 720 @@ -2576,39 +2678,39 @@ 441 -089_add_attachments_description.rb -file - - - - -2010-09-23T14:37:44.899726Z -f60a0c1f633a6ff65fb2734173b57fe4 -2008-02-29T19:46:58.834023Z -1180 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -201 +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 @@ -2616,7 +2718,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 320b459ced6ed78d09a3743ad60b3200 2009-01-18T10:54:08.545108Z 2279 @@ -2644,13 +2746,47 @@ 270 +20110226120132_change_auth_sources_account_password_limit.rb +file + + + + +2011-03-03T11:40:18.000000Z +fccbbb0aadf883abb7a337961c2199e4 +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +298 + 094_change_projects_homepage_limit.rb file -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z cf04e90903f0d068e4503cb465026ef7 2008-05-25T13:37:29.456358Z 1457 @@ -2678,47 +2814,13 @@ 264 -039_create_watchers.rb -file - - - - -2010-09-23T14:37:44.887754Z -07bf6636d0acf3ec84b38648bbe2c07a -2007-04-21T12:09:07.794422Z -454 -jplang - - - - - - - - - - - - - - - - - - - - - -337 - 093_add_wiki_pages_protected.rb file -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 5be8fe0eee7c90901f9ba49030412f40 2008-05-04T15:05:38.117137Z 1415 @@ -2746,16 +2848,16 @@ 227 -060_change_changesets_committer_limit.rb -file - - - - -2010-09-23T14:37:44.891758Z -0abbef63f1f391688df012906a94877b -2008-03-09T18:25:37.323226Z -1222 +039_create_watchers.rb +file + + + + +2011-03-03T11:05:12.000000Z +07bf6636d0acf3ec84b38648bbe2c07a +2007-04-21T12:09:07.794422Z +454 jplang @@ -2778,7 +2880,7 @@ -241 +337 083_add_messages_sticky.rb file @@ -2786,7 +2888,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z be494b64b18017ebe3ccdff9a34abdbd 2007-11-24T12:25:07.449637Z 926 @@ -2814,13 +2916,47 @@ 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 -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z a574e8a4f8f80a464ca2b8bcbd43287f 2007-09-15T14:54:15.583528Z 731 @@ -2854,7 +2990,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z cd7530e8030bf9e675ca5922c2494d83 2007-03-10T15:09:49.115269Z 323 @@ -2888,33 +3024,33 @@ -2010-11-19T13:04:50.888959Z -c682cee6b57ef16a410b2253213f9864 -2010-11-06T11:49:45.617666Z -4370 -jplang - - - - - - - - - - - - - - - - - - - - - -898 +2011-03-03T11:05:12.000000Z +7a04693ea608e342b463c73c461b2da0 +2011-01-01T23:08:49.766359Z +4610 +jbbarth + + + + + + + + + + + + + + + + + + + + + +949 20100313132032_add_issues_nested_sets_columns.rb file @@ -2922,7 +3058,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z d1a11dec6b93af060f84f9b2a1e36421 2010-03-13T14:56:49.379682Z 3573 @@ -2956,7 +3092,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z f1661157bd19c5fd4f7a4244745571bf 2007-08-29T16:52:35.680643Z 674 @@ -2990,7 +3126,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 8381c8e67d31387ec86e821025f5ae8b 2007-03-09T18:03:31.183366Z 319 @@ -3024,7 +3160,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z f8359b001e33e9508d158589c81f7bee 2007-02-03T12:57:33.179243Z 223 @@ -3058,7 +3194,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 63b0f6e295adf5f1d1eee803e4cc6287 2009-01-24T11:48:38.049684Z 2305 @@ -3092,7 +3228,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 668305a363cf6997eb9f2259d00cc26d 2009-03-19T00:01:24.358528Z 2599 @@ -3126,7 +3262,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z c8a6c8715446f22f6a3f4e2040dd873d 2007-11-19T22:28:43.818228Z 917 @@ -3160,7 +3296,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 7f2d97409681d462705d00de37e78476 2008-10-18T10:07:49.851665Z 1938 @@ -3188,47 +3324,13 @@ 339 -059_add_roles_assignable.rb -file - - - - -2010-09-23T14:37:44.891758Z -aa67262417630fc088eb57df8d2dd9d3 -2007-08-16T17:47:41.639068Z -649 -jplang - - - - - - - - - - - - - - - - - - - - - -199 - 098_set_topic_authors_as_watchers.rb file -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z d885a13afc268875b79c4cbf9524f3e8 2009-02-08T17:24:39.400993Z 2415 @@ -3256,13 +3358,47 @@ 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 -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 528b6095ca0376cecdd966ddd0b345c4 2006-12-16T13:37:32.633739Z 95 @@ -3296,7 +3432,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 2d559ef99ec458f472f5c22c0a8bf5f4 2007-08-29T16:52:35.680643Z 674 @@ -3324,13 +3460,47 @@ 418 +040_create_changesets_issues.rb +file + + + + +2011-03-03T11:05:12.000000Z +dc28d8674409819b866f6d878b33d288 +2007-04-24T13:57:27.960164Z +473 +jplang + + + + + + + + + + + + + + + + + + + + + +418 + 048_allow_null_version_effective_date.rb file -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z a7d8c7f023a76a8dbb0d0950797c08f8 2008-02-12T21:11:16.312726Z 1140 @@ -3358,47 +3528,13 @@ 225 -040_create_changesets_issues.rb -file - - - - -2010-09-23T14:37:44.887754Z -dc28d8674409819b866f6d878b33d288 -2007-04-24T13:57:27.960164Z -473 -jplang - - - - - - - - - - - - - - - - - - - - - -418 - 085_add_role_tracker_old_status_index_to_workflows.rb file -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z ba997a6179b5ab0f421b149c54725357 2008-01-15T20:40:59.035860Z 1069 @@ -3432,7 +3568,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z e256cf4a148fd48c409ea6983d569e7d 2009-10-17T22:23:29.892475Z 2928 @@ -3466,7 +3602,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 02bfb0be1b161bd757a75f69bfe79bc7 2008-03-09T18:25:37.323226Z 1222 @@ -3500,7 +3636,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z f77d77e81db6f6ac5bb3844255f8ab33 2008-03-12T20:28:49.748698Z 1236 @@ -3528,13 +3664,47 @@ 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 -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 5d4b3c5646cc6c136e706ac5d7e0b377 2009-02-14T19:06:44.812480Z 2466 @@ -3562,13 +3732,47 @@ 252 +20091017212457_add_missing_indexes_to_custom_fields_projects.rb +file + + + + +2011-03-03T11:05:12.000000Z +90bb42121a57db140491ecb2a0763d00 +2009-10-17T22:23:29.892475Z +2928 +edavis10 + + + + + + + + + + + + + + + + + + + + + +275 + 054_add_changesets_scmid.rb file -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z b61285ac64245c1571e536a8c7e05a94 2007-06-12T20:12:05.590809Z 559 @@ -3596,73 +3800,39 @@ 180 -20091017212457_add_missing_indexes_to_custom_fields_projects.rb -file - - - - -2010-09-23T14:37:44.919754Z -90bb42121a57db140491ecb2a0763d00 -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -275 - -20091017213716_add_missing_indexes_to_member_roles.rb -file - - - - -2010-09-23T14:37:44.923753Z -4bfd0623186217eee4346313f148ea7a -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -272 +097_add_view_wiki_edits_permission.rb +file + + + + +2011-03-03T11:05:12.000000Z +e00f8e7739afbb2d07a21decd1422a0a +2008-09-21T20:38:36.877257Z +1896 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +298 065_add_settings_updated_on.rb file @@ -3670,7 +3840,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 708c039fe82ad86e9930122cac4757b1 2007-08-31T17:45:32.784580Z 685 @@ -3698,39 +3868,39 @@ 248 -097_add_view_wiki_edits_permission.rb -file - - - - -2010-09-23T14:37:44.911755Z -e00f8e7739afbb2d07a21decd1422a0a -2008-09-21T20:38:36.877257Z -1896 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -298 +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 @@ -3738,7 +3908,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 71d997c1a32c4ba3dd4b31a34885fc7a 2009-12-29T14:53:29.047095Z 3259 @@ -3772,7 +3942,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z e8d897645c7176e7fd23f1578b882b5f 2009-10-17T22:23:29.892475Z 2928 @@ -3800,13 +3970,47 @@ 308 +20110228000100_copy_repositories_log_encoding.rb +file + + + + +2011-03-03T11:40:18.000000Z +22941cc81d233c2602be827d70670c10 +2011-03-01T10:14:47.182368Z +4981 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +497 + 063_add_roles_permissions.rb file -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 9ddb69b602d6d3ee5da01f8a9e9f78db 2007-08-29T16:52:35.680643Z 674 @@ -3840,7 +4044,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 055f00efdb87ff8934c36d5eb99b741f 2009-09-12T08:36:46.650954Z 2869 @@ -3868,47 +4072,13 @@ 155 -052_add_changes_revision.rb -file - - - - -2010-09-23T14:37:44.887754Z -3af07746c4eab3a1716744971ac26ffc -2007-06-12T20:12:05.590809Z -559 -jplang - - - - - - - - - - - - - - - - - - - - - -180 - 20090503121505_populate_member_roles.rb file -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 27279bf98b3155975ce59a359d0a29aa 2009-05-10T11:18:09.335765Z 2729 @@ -3936,13 +4106,81 @@ 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 -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 596f1acbdbc340c39d19f19f7b4cb6c6 2007-08-29T16:52:35.680643Z 674 @@ -3970,39 +4208,39 @@ 403 -050_add_wiki_attachments_permissions.rb -file - - - - -2010-09-23T14:37:44.887754Z -67d6e1898c150c8df560cb2ce8a2f2d7 -2007-08-29T16:52:35.680643Z -674 +104_add_projects_lft_and_rgt.rb +file + + + + +2011-03-03T11:05:12.000000Z +46effb13ff7d1a62b7b8c93afc7da9c8 +2009-01-24T11:31:15.122844Z +2304 jplang - - - - - - - - - - - - - - - - - - - - - -718 +has-props + + + + + + + + + + + + + + + + + + + + +250 074_add_auth_sources_tls.rb file @@ -4010,7 +4248,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z e7e163729c56cd9807450574d2beeda8 2007-10-16T19:19:10.481742Z 845 @@ -4038,47 +4276,13 @@ 215 -104_add_projects_lft_and_rgt.rb -file - - - - -2010-09-23T14:37:44.915753Z -46effb13ff7d1a62b7b8c93afc7da9c8 -2009-01-24T11:31:15.122844Z -2304 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -250 - 20091114105931_add_view_issues_permission.rb file -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 886411cb32a18ec492acc798194210af 2009-11-14T12:08:47.175978Z 3039 @@ -4106,81 +4310,13 @@ 262 -20091017214336_add_missing_indexes_to_users.rb -file - - - - -2010-09-23T14:37:44.927757Z -8251942eb30b7c709ac6e3dc1ab5eedb -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -267 - -20091017213113_add_missing_indexes_to_enumerations.rb -file - - - - -2010-09-23T14:37:44.919754Z -22e6afc0519b7befbae2c4a4433c20f5 -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -209 - 082_add_messages_locked.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 4ed0fffe6158eeda69a021c362f61157 2007-11-24T12:25:07.449637Z 926 @@ -4208,13 +4344,81 @@ 197 +20091017213113_add_missing_indexes_to_enumerations.rb +file + + + + +2011-03-03T11:05:12.000000Z +22e6afc0519b7befbae2c4a4433c20f5 +2009-10-17T22:23:29.892475Z +2928 +edavis10 + + + + + + + + + + + + + + + + + + + + + +209 + +20091017214336_add_missing_indexes_to_users.rb +file + + + + +2011-03-03T11:05:12.000000Z +8251942eb30b7c709ac6e3dc1ab5eedb +2009-10-17T22:23:29.892475Z +2928 +edavis10 + + + + + + + + + + + + + + + + + + + + + +267 + 20091017213444_add_missing_indexes_to_tokens.rb file -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 4c220f0316e1b04fa8350f0309698f24 2009-10-17T22:23:29.892475Z 2928 @@ -4248,7 +4452,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 16792ab92fda3a70516d55a011c01fce 2009-05-10T10:54:31.775505Z 2726 @@ -4282,7 +4486,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 6a4944f1162c00f2405200fb38773886 2007-06-14T18:26:27.748707Z 564 @@ -4316,7 +4520,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 0c0cee6df5f26eb3378c9b22a1162a5a 2009-05-30T23:30:36.923541Z 2777 @@ -4350,7 +4554,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 6e59569f25a79a0a75797fa4ebb60936 2007-08-29T16:52:35.680643Z 674 @@ -4384,7 +4588,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 00a100c0ca092df63e8542fc6d0bc78c 2007-03-18T15:48:05.787958Z 344 @@ -4418,7 +4622,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z ee71a22f869c9dbee6f322ad25f45934 2009-12-06T10:28:20.099964Z 3123 @@ -4452,7 +4656,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 21d40b6390e67409bad1d4525c26accb 2009-10-17T22:23:29.892475Z 2928 @@ -4486,7 +4690,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 1b013e3bbb624874d78eaf3332ccb3d5 2007-03-26T16:41:54.592250Z 383 @@ -4520,7 +4724,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z e658f4ed3c99264bf4c036b87b8cf39f 2007-05-27T17:42:04.537618Z 549 @@ -4554,7 +4758,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 4d0267b0a9d4cb2ec782d10247a4c33f 2009-01-24T11:31:15.122844Z 2304 @@ -4588,7 +4792,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z eef7b68156646d86ea515aed9aa525ed 2009-10-17T22:23:29.892475Z 2928 @@ -4622,7 +4826,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 1567606924d88ae66474e848de86577a 2009-10-21T22:34:28.905707Z 2946 @@ -4656,7 +4860,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z ccfd197b34214a0d74d952aa65dcd5a6 2008-03-09T18:25:37.323226Z 1222 @@ -4690,7 +4894,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z f5ae107f30300b547d535ddc5b1b999c 2009-09-12T08:36:46.650954Z 2869 @@ -4724,7 +4928,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 9cef93921160d49f5d3aa4968ecc4eb1 2007-10-22T21:07:13.432482Z 864 @@ -4758,7 +4962,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 6c70abafef3dc834c722ed7135d6a7df 2009-10-17T22:23:29.892475Z 2928 @@ -4792,7 +4996,7 @@ -2010-11-19T13:04:50.888959Z +2011-03-03T11:05:12.000000Z 0000368c453072e56da62defbc80441e 2010-11-14T12:33:14.198318Z 4402 @@ -4826,7 +5030,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z cf095d9afbc6429b8d759eb737a0781f 2009-10-21T22:34:34.183882Z 2947 @@ -4860,7 +5064,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 9aa91971db6c6f14ddd1ae768085b0a8 2009-10-17T22:23:29.892475Z 2928 @@ -4894,7 +5098,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 3e5f2220de578b306ce323997c495db6 2006-11-12T18:50:30.642587Z 44 @@ -4928,7 +5132,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 0fb07bc55cf61720437b40e4ae244e05 2006-12-03T20:51:17.306207Z 63 @@ -4962,7 +5166,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 417051f45603460a17909e4a5029c779 2007-08-29T16:52:35.680643Z 674 @@ -4990,13 +5194,47 @@ 443 +20110224000000_add_repositories_path_encoding.rb +file + + + + +2011-03-03T11:40:18.000000Z +7cd80bdf7897357500a46e87ed82b84b +2011-02-24T05:58:37.876075Z +4940 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +240 + 032_create_time_entries.rb file -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z a62243f0bc2f1b1b11a47da172d011a5 2007-04-25T15:06:20.062636Z 479 @@ -5024,13 +5262,47 @@ 966 +20110226120112_change_repositories_password_limit.rb +file + + + + +2011-03-03T11:40:18.000000Z +e809364786bdcce227961318e7428700 +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +276 + 068_create_enabled_modules.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 96962340557b9a1f70a215d88b07c2c1 2007-09-14T11:34:08.234701Z 725 @@ -5064,7 +5336,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 8ad3f0193d5e3b8d52293bbf2828c2d2 2009-10-17T22:23:29.892475Z 2928 @@ -5098,7 +5370,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z fd6ccbccc44ceccab8de7c3c48696ecc 2009-10-17T22:23:29.892475Z 2928 @@ -5132,7 +5404,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 1798d606a43c6a29029535c28b49beff 2007-09-04T22:07:44.613701Z 702 @@ -5166,7 +5438,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z d714e81a7a9c29b60e405233765cbd33 2007-08-29T16:52:35.680643Z 674 @@ -5200,7 +5472,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z a27ef00d6ec6b3f4dc63ad004181c10e 2008-01-20T23:38:55.025648Z 1091 @@ -5234,7 +5506,7 @@ -2010-09-23T14:37:44.875728Z +2011-03-03T11:05:12.000000Z 497529b269185b1833b959c98db3c1d1 2007-08-29T16:52:35.680643Z 674 @@ -5268,7 +5540,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z d39d0037e4f06dfb7db18d9082608832 2009-10-17T22:23:29.892475Z 2928 @@ -5302,7 +5574,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 79d11b147c1061901a888d89c3e5029b 2009-10-17T22:23:29.892475Z 2928 @@ -5336,7 +5608,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 1cbe32e981634898d5b0f80b2c63798b 2007-12-14T18:54:55.323993Z 994 @@ -5370,7 +5642,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 717687210dcbeeebff8337561a427e70 2007-05-05T13:22:27.245135Z 506 @@ -5404,7 +5676,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 05c7ea8c5dc45498164a324f7db2887a 2006-12-10T18:35:48.564790Z 81 @@ -5438,7 +5710,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z ce38342dea044adf8b277f6483f1a742 2009-03-12T18:06:54.054174Z 2572 @@ -5472,7 +5744,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z dbeea4ad5a501200711cb4195856597e 2009-10-17T22:23:29.892475Z 2928 @@ -5506,7 +5778,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 4c1203f40e8e7b568ddce15af4f3ad9b 2008-11-10T18:59:06.897210Z 2006 @@ -5540,7 +5812,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z c62ac2ca3e59bb91e5bb4e206abdaed1 2007-04-25T15:06:20.062636Z 479 @@ -5574,7 +5846,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 3bb4b5f081354ea7d943f0b7c6f07284 2007-08-29T16:52:35.680643Z 674 @@ -5608,7 +5880,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 3460b737f353524921cfd9ac4199fc44 2009-03-12T19:49:39.983871Z 2580 @@ -5642,7 +5914,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 560e67e7b88186a0e21a2f614b6d83c7 2007-08-29T16:52:35.680643Z 674 @@ -5676,7 +5948,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z c22348c101d1a03b2d808cb89b3175a5 2007-06-12T20:12:05.590809Z 559 @@ -5710,7 +5982,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 87d90f2ce2101811b7aaf0031a74e0c1 2009-10-25T16:56:46.187627Z 2981 @@ -5744,7 +6016,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 84fe06ac7cefc2eebba29ac872241d88 2007-06-29T17:21:37.739022Z 577 @@ -5778,7 +6050,7 @@ -2010-09-23T14:37:44.875728Z +2011-03-03T11:05:12.000000Z d7a9aad3796f37d70ac2ab4af9c80656 2007-08-29T16:52:35.680643Z 674 @@ -5812,7 +6084,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z defb118deb2deb23648d50da5cf71047 2006-12-24T13:38:45.881735Z 106 @@ -5846,7 +6118,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 89cbe3b06f14ba6d9a5cda47f4239f60 2009-04-26T13:09:14.221938Z 2696 @@ -5880,7 +6152,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z f2e06da76555942fd3017134d618bbac 2007-08-29T16:52:35.680643Z 674 @@ -5914,7 +6186,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 5ff56d564f2da50c289c1dfd90053a4b 2008-03-05T09:16:19.220849Z 1189 @@ -5948,7 +6220,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 0ae6a6924263cf5317b539c81b952f03 2009-10-17T22:23:29.892475Z 2928 @@ -5982,7 +6254,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 121548a48360a22daa537af42ee8902b 2007-01-21T11:50:22.864544Z 167 @@ -6010,13 +6282,47 @@ 284 +20110227125750_change_journal_details_values_to_text.rb +file + + + + +2011-03-03T11:40:18.000000Z +768603dc014def8d2fc0a0bb8d81ef79 +2011-02-27T13:34:41.060565Z +4954 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +324 + 095_add_wiki_pages_parent_id.rb file -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z e50cfa8ef5216f0f7d266dac1e38c9da 2008-07-26T11:46:24.917066Z 1698 diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/prop-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/prop-base/20110223180944_add_users_salt.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110223180944_add_users_salt.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/prop-base/20110223180953_salt_user_passwords.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110223180953_salt_user_passwords.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/prop-base/20110226120112_change_repositories_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110226120112_change_repositories_password_limit.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/prop-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/prop-base/20110227125750_change_journal_details_values_to_text.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110227125750_change_journal_details_values_to_text.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20100129193402_change_users_mail_notification_to_string.rb.svn-base --- a/db/migrate/.svn/text-base/20100129193402_change_users_mail_notification_to_string.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/.svn/text-base/20100129193402_change_users_mail_notification_to_string.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,9 +1,17 @@ class ChangeUsersMailNotificationToString < ActiveRecord::Migration def self.up - change_column :users, :mail_notification, :string, :default => '', :null => false + rename_column :users, :mail_notification, :mail_notification_bool + add_column :users, :mail_notification, :string, :default => '', :null => false + User.update_all("mail_notification = 'all'", "mail_notification_bool = #{connection.quoted_true}") + User.update_all("mail_notification = 'selected'", "EXISTS (SELECT 1 FROM #{Member.table_name} WHERE #{Member.table_name}.mail_notification = #{connection.quoted_true} AND #{Member.table_name}.user_id = #{User.table_name}.id)") + User.update_all("mail_notification = 'only_my_events'", "mail_notification NOT IN ('all', 'selected')") + remove_column :users, :mail_notification_bool end def self.down - change_column :users, :mail_notification, :boolean, :default => true, :null => false + rename_column :users, :mail_notification, :mail_notification_char + add_column :users, :mail_notification, :boolean, :default => true, :null => false + User.update_all("mail_notification = #{connection.quoted_false}", "mail_notification_char <> 'all'") + remove_column :users, :mail_notification_char end end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20100129193813_update_mail_notification_values.rb.svn-base --- a/db/migrate/.svn/text-base/20100129193813_update_mail_notification_values.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/.svn/text-base/20100129193813_update_mail_notification_values.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,9 +1,8 @@ # Patch the data from a boolean change. class UpdateMailNotificationValues < ActiveRecord::Migration def self.up - User.update_all("mail_notification = 'all'", "mail_notification IN ('1', 't')") - User.update_all("mail_notification = 'selected'", "EXISTS (SELECT 1 FROM #{Member.table_name} WHERE #{Member.table_name}.mail_notification = #{connection.quoted_true} AND #{Member.table_name}.user_id = #{User.table_name}.id)") - User.update_all("mail_notification = 'only_my_events'", "mail_notification NOT IN ('all', 'selected')") + # No-op + # See 20100129193402_change_users_mail_notification_to_string.rb end def self.down diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20101104182107_add_unique_index_on_members.rb.svn-base --- a/db/migrate/.svn/text-base/20101104182107_add_unique_index_on_members.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/.svn/text-base/20101104182107_add_unique_index_on_members.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -17,5 +17,6 @@ end def self.down + remove_index :members, [:user_id, :project_id] end end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +class AddWorkflowsAssigneeAndAuthor < ActiveRecord::Migration + def self.up + add_column :workflows, :assignee, :boolean, :null => false, :default => false + add_column :workflows, :author, :boolean, :null => false, :default => false + Workflow.update_all("assignee = #{Workflow.connection.quoted_false}") + Workflow.update_all("author = #{Workflow.connection.quoted_false}") + end + + def self.down + remove_column :workflows, :assignee + remove_column :workflows, :author + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110223180944_add_users_salt.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110223180944_add_users_salt.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class AddUsersSalt < ActiveRecord::Migration + def self.up + add_column :users, :salt, :string, :limit => 64 + end + + def self.down + remove_column :users, :salt + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110223180953_salt_user_passwords.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110223180953_salt_user_passwords.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +class SaltUserPasswords < ActiveRecord::Migration + + def self.up + say_with_time "Salting user passwords, this may take some time..." do + User.salt_unsalted_passwords! + end + end + + def self.down + # Unsalted passwords can not be restored + raise ActiveRecord::IrreversibleMigration, "Can't decypher salted passwords. This migration can not be rollback'ed." + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110224000000_add_repositories_path_encoding.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110224000000_add_repositories_path_encoding.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesPathEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :path_encoding + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110226120112_change_repositories_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110226120112_change_repositories_password_limit.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeRepositoriesPasswordLimit < ActiveRecord::Migration + def self.up + change_column :repositories, :password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :repositories, :password, :string, :limit => 60, :default => '' + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeAuthSourcesAccountPasswordLimit < ActiveRecord::Migration + def self.up + change_column :auth_sources, :account_password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :auth_sources, :account_password, :string, :limit => 60, :default => '' + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110227125750_change_journal_details_values_to_text.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110227125750_change_journal_details_values_to_text.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,11 @@ +class ChangeJournalDetailsValuesToText < ActiveRecord::Migration + def self.up + change_column :journal_details, :old_value, :text + change_column :journal_details, :value, :text + end + + def self.down + change_column :journal_details, :old_value, :string + change_column :journal_details, :value, :string + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110228000000_add_repositories_log_encoding.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110228000000_add_repositories_log_encoding.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :log_encoding + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/.svn/text-base/20110228000100_copy_repositories_log_encoding.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110228000100_copy_repositories_log_encoding.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,18 @@ +class CopyRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + encoding = Setting.commit_logs_encoding.to_s.strip + encoding = encoding.blank? ? 'UTF-8' : encoding + Repository.find(:all).each do |repo| + scm = repo.scm_name + case scm + when 'Subversion', 'Mercurial', 'Git', 'Filesystem' + repo.update_attribute(:log_encoding, nil) + else + repo.update_attribute(:log_encoding, encoding) + end + end + end + + def self.down + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20100129193402_change_users_mail_notification_to_string.rb --- a/db/migrate/20100129193402_change_users_mail_notification_to_string.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/20100129193402_change_users_mail_notification_to_string.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,9 +1,17 @@ class ChangeUsersMailNotificationToString < ActiveRecord::Migration def self.up - change_column :users, :mail_notification, :string, :default => '', :null => false + rename_column :users, :mail_notification, :mail_notification_bool + add_column :users, :mail_notification, :string, :default => '', :null => false + User.update_all("mail_notification = 'all'", "mail_notification_bool = #{connection.quoted_true}") + User.update_all("mail_notification = 'selected'", "EXISTS (SELECT 1 FROM #{Member.table_name} WHERE #{Member.table_name}.mail_notification = #{connection.quoted_true} AND #{Member.table_name}.user_id = #{User.table_name}.id)") + User.update_all("mail_notification = 'only_my_events'", "mail_notification NOT IN ('all', 'selected')") + remove_column :users, :mail_notification_bool end def self.down - change_column :users, :mail_notification, :boolean, :default => true, :null => false + rename_column :users, :mail_notification, :mail_notification_char + add_column :users, :mail_notification, :boolean, :default => true, :null => false + User.update_all("mail_notification = #{connection.quoted_false}", "mail_notification_char <> 'all'") + remove_column :users, :mail_notification_char end end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20100129193813_update_mail_notification_values.rb --- a/db/migrate/20100129193813_update_mail_notification_values.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/20100129193813_update_mail_notification_values.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,9 +1,8 @@ # Patch the data from a boolean change. class UpdateMailNotificationValues < ActiveRecord::Migration def self.up - User.update_all("mail_notification = 'all'", "mail_notification IN ('1', 't')") - User.update_all("mail_notification = 'selected'", "EXISTS (SELECT 1 FROM #{Member.table_name} WHERE #{Member.table_name}.mail_notification = #{connection.quoted_true} AND #{Member.table_name}.user_id = #{User.table_name}.id)") - User.update_all("mail_notification = 'only_my_events'", "mail_notification NOT IN ('all', 'selected')") + # No-op + # See 20100129193402_change_users_mail_notification_to_string.rb end def self.down diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20101104182107_add_unique_index_on_members.rb --- a/db/migrate/20101104182107_add_unique_index_on_members.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/db/migrate/20101104182107_add_unique_index_on_members.rb Thu Mar 03 12:11:53 2011 +0000 @@ -17,5 +17,6 @@ end def self.down + remove_index :members, [:user_id, :project_id] end end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110220160626_add_workflows_assignee_and_author.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110220160626_add_workflows_assignee_and_author.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +class AddWorkflowsAssigneeAndAuthor < ActiveRecord::Migration + def self.up + add_column :workflows, :assignee, :boolean, :null => false, :default => false + add_column :workflows, :author, :boolean, :null => false, :default => false + Workflow.update_all("assignee = #{Workflow.connection.quoted_false}") + Workflow.update_all("author = #{Workflow.connection.quoted_false}") + end + + def self.down + remove_column :workflows, :assignee + remove_column :workflows, :author + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110223180944_add_users_salt.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110223180944_add_users_salt.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class AddUsersSalt < ActiveRecord::Migration + def self.up + add_column :users, :salt, :string, :limit => 64 + end + + def self.down + remove_column :users, :salt + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110223180953_salt_user_passwords.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110223180953_salt_user_passwords.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +class SaltUserPasswords < ActiveRecord::Migration + + def self.up + say_with_time "Salting user passwords, this may take some time..." do + User.salt_unsalted_passwords! + end + end + + def self.down + # Unsalted passwords can not be restored + raise ActiveRecord::IrreversibleMigration, "Can't decypher salted passwords. This migration can not be rollback'ed." + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110224000000_add_repositories_path_encoding.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110224000000_add_repositories_path_encoding.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesPathEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :path_encoding + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110226120112_change_repositories_password_limit.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110226120112_change_repositories_password_limit.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeRepositoriesPasswordLimit < ActiveRecord::Migration + def self.up + change_column :repositories, :password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :repositories, :password, :string, :limit => 60, :default => '' + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110226120132_change_auth_sources_account_password_limit.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110226120132_change_auth_sources_account_password_limit.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeAuthSourcesAccountPasswordLimit < ActiveRecord::Migration + def self.up + change_column :auth_sources, :account_password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :auth_sources, :account_password, :string, :limit => 60, :default => '' + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110227125750_change_journal_details_values_to_text.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110227125750_change_journal_details_values_to_text.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,11 @@ +class ChangeJournalDetailsValuesToText < ActiveRecord::Migration + def self.up + change_column :journal_details, :old_value, :text + change_column :journal_details, :value, :text + end + + def self.down + change_column :journal_details, :old_value, :string + change_column :journal_details, :value, :string + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110228000000_add_repositories_log_encoding.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110228000000_add_repositories_log_encoding.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :log_encoding + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 db/migrate/20110228000100_copy_repositories_log_encoding.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110228000100_copy_repositories_log_encoding.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,18 @@ +class CopyRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + encoding = Setting.commit_logs_encoding.to_s.strip + encoding = encoding.blank? ? 'UTF-8' : encoding + Repository.find(:all).each do |repo| + scm = repo.scm_name + case scm + when 'Subversion', 'Mercurial', 'Git', 'Filesystem' + repo.update_attribute(:log_encoding, nil) + else + repo.update_attribute(:log_encoding, encoding) + end + end + end + + def self.down + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/.svn/all-wcprops --- a/doc/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/doc/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 28 -/svn/!svn/ver/4348/trunk/doc +/svn/!svn/ver/4784/trunk/doc END UPGRADING K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/3848/trunk/doc/UPGRADING +/svn/!svn/ver/4752/trunk/doc/UPGRADING END RUNNING_TESTS K 25 @@ -25,13 +25,13 @@ K 25 svn:wc:ra_dav:version-url V 36 -/svn/!svn/ver/3848/trunk/doc/INSTALL +/svn/!svn/ver/4752/trunk/doc/INSTALL END CHANGELOG K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/4348/trunk/doc/CHANGELOG +/svn/!svn/ver/4784/trunk/doc/CHANGELOG END COPYING K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/.svn/entries --- a/doc/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/doc/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/doc http://redmine.rubyforge.org/svn -2010-11-01T00:37:14.867836Z -4348 -edavis10 +2011-01-30T14:37:23.564601Z +4784 +jplang @@ -32,11 +32,11 @@ -2010-09-23T14:37:44.939791Z -b728be27d68a5bc46292d5e9d2ae5260 -2010-07-18T15:19:04.080578Z -3848 -edavis10 +2011-03-03T11:05:14.000000Z +c87e4b9ee82c334658b1c76106dfd469 +2011-01-23T10:22:00.456857Z +4752 +jplang has-props @@ -58,7 +58,7 @@ -1794 +1949 RUNNING_TESTS file @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.939791Z +2011-03-03T11:05:14.000000Z cc987c3ab1bf29e6ebe5313bef953b5b 2010-02-16T16:40:50.914879Z 3438 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.939791Z +2011-03-03T11:05:14.000000Z ba2ffee528eae310e20bf761619bc85f 2008-08-11T20:49:52.309238Z 1732 @@ -134,11 +134,11 @@ -2010-09-23T14:37:44.939791Z -cc24a3b3e2deae6410de710cd2eed893 -2010-07-18T15:19:04.080578Z -3848 -edavis10 +2011-03-03T11:05:14.000000Z +daf24adc36bb93a3d0e1c5a7e4b14fc5 +2011-01-23T10:22:00.456857Z +4752 +jplang has-props @@ -160,7 +160,7 @@ -2961 +3003 CHANGELOG file @@ -168,11 +168,11 @@ -2010-11-19T13:04:51.228963Z -c17df05456a8e8f311c61ea7825fe2aa -2010-11-01T00:37:14.867836Z -4348 -edavis10 +2011-03-03T11:05:14.000000Z +a6dd03cb1256e4bf125b81d353206416 +2011-01-30T14:37:23.564601Z +4784 +jplang has-props @@ -194,7 +194,7 @@ -77969 +85714 COPYING file @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.935786Z +2011-03-03T11:05:14.000000Z 751419260aa954499f7abaabaa882bbe 2007-11-04T13:19:42.552822Z 883 @@ -236,7 +236,7 @@ -2010-11-19T14:03:48.248927Z +2011-03-03T11:05:14.000000Z cc77650493d11d18eabb058fbdf7ac24 2010-10-22T17:18:11.628381Z 4273 diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/.svn/text-base/CHANGELOG.svn-base --- a/doc/.svn/text-base/CHANGELOG.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/doc/.svn/text-base/CHANGELOG.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,9 +1,142 @@ == Redmine changelog Redmine - project management software -Copyright (C) 2006-2010 Jean-Philippe Lang +Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ +== 2011-01-30 v1.1.1 + +* Defect #4899: Redmine fails to list files for darcs repository +* Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql +* Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades +* Defect #7258: Automatic spent time logging does not work properly with SQLite3 +* Defect #7259: Released 1.1.0 uses "devel" label inside admin information +* Defect #7265: "Loading..." icon does not disappear after add project member +* Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale +* Defect #7274: CSV value separator in dutch locale +* Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list +* Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0 +* Defect #7307: HTTP 500 error on query for empty revision +* Defect #7313: Label not translated in french in Settings/Email Notification tab +* Defect #7329: with long strings may hang server +* Defect #7337: My page french translation +* Defect #7348: French Translation of "Connection" +* Defect #7385: Error when viewing an issue which was related to a deleted subtask +* Defect #7386: NoMethodError on pdf export +* Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4 +* Defect #7421: no email sent with 'Notifiy for any event on the selected projects only' +* Feature #5344: Update to latest CodeRay 0.9.x + +== 2011-01-09 v1.1.0 + +* Defect #2038: Italics in wiki headers show-up wrong in the toc +* Defect #3449: Redmine Takes Too Long On Large Mercurial Repository +* Defect #3567: Sorting for changesets might go wrong on Mercurial repos +* Defect #3707: {{toc}} doesn't work with {{include}} +* Defect #5096: Redmine hangs up while browsing Git repository +* Defect #6000: Safe Attributes prevents plugin extension of Issue model... +* Defect #6064: Modules not assigned to projects created via API +* Defect #6110: MailHandler should allow updating Issue Priority and Custom fields +* Defect #6136: JSON API holds less information than XML API +* Defect #6345: xml used by rest API is invalid +* Defect #6348: Gantt chart PDF rendering errors +* Defect #6403: Updating an issue with custom fields fails +* Defect #6467: "Member of role", "Member of group" filter not work correctly +* Defect #6473: New gantt broken after clearing issue filters +* Defect #6541: Email notifications send to everybody +* Defect #6549: Notification settings not migrated properly +* Defect #6591: Acronyms must have a minimum of three characters +* Defect #6674: Delete time log broken after changes to REST +* Defect #6681: Mercurial, Bazaar and Darcs auto close issue text should be commit id instead of revision number +* Defect #6724: Wiki uploads does not work anymore (SVN 4266) +* Defect #6746: Wiki links are broken on Activity page +* Defect #6747: Wiki diff does not work since r4265 +* Defect #6763: New gantt charts: subject displayed twice on issues +* Defect #6826: Clicking "Add" twice creates duplicate member record +* Defect #6844: Unchecking status filter on the issue list has no effect +* Defect #6895: Wrong Polish translation of "blocks" +* Defect #6943: Migration from boolean to varchar fails on PostgreSQL 8.1 +* Defect #7064: Mercurial adapter does not recognize non alphabetic nor numeric in UTF-8 copied files +* Defect #7128: New gantt chart does not render subtasks under parent task +* Defect #7135: paging mechanism returns the same last page forever +* Defect #7188: Activity page not refreshed when changing language +* Defect #7195: Apply CLI-supplied defaults for incoming mail only to new issues not replies +* Defect #7197: Tracker reset to default when replying to an issue email +* Defect #7213: Copy project does not copy all roles and permissions +* Defect #7225: Project settings: Trackers & Custom fields only relevant if module Issue tracking is active +* Feature #630: Allow non-unique names for projects +* Feature #1738: Add a "Visible" flag to project/user custom fields +* Feature #2803: Support for Javascript in Themes +* Feature #2852: Clean Incoming Email of quoted text "----- Reply above this line ------" +* Feature #2995: Improve error message when trying to access an archived project +* Feature #3170: Autocomplete issue relations on subject +* Feature #3503: Administrator Be Able To Modify Email settings Of Users +* Feature #4155: Automatic spent time logging from commit messages +* Feature #5136: Parent select on Wiki rename page +* Feature #5338: Descendants (subtasks) should be available via REST API +* Feature #5494: Wiki TOC should display heading from level 4 +* Feature #5594: Improve MailHandler's keyword handling +* Feature #5622: Allow version to be set via incoming email +* Feature #5712: Reload themes +* Feature #5869: Issue filters by Group and Role +* Feature #6092: Truncate Git revision labels in Activity page/feed and allow configurable length +* Feature #6112: Accept localized keywords when receiving emails +* Feature #6140: REST issues response with issue count limit and offset +* Feature #6260: REST API for Users +* Feature #6276: Gantt Chart rewrite +* Feature #6446: Remove length limits on project identifier and name +* Feature #6628: Improvements in truncate email +* Feature #6779: Project JSON API +* Feature #6823: REST API for time tracker. +* Feature #7072: REST API for news +* Feature #7111: Expose more detail on journal entries +* Feature #7141: REST API: get information about current user +* Patch #4807: Allow to set the done_ratio field with the incoming mail system +* Patch #5441: Initialize TimeEntry attributes with params[:time_entry] +* Patch #6762: Use GET instead of POST to retrieve context_menu +* Patch #7160: French translation ofr "not_a_date" is missing +* Patch #7212: Missing remove_index in AddUniqueIndexOnMembers down migration + + +== 2010-12-23 v1.0.5 + +* #6656: Mercurial adapter loses seconds of commit times +* #6996: Migration trac(sqlite3) -> redmine(postgresql) doesnt escape ' char +* #7013: v-1.0.4 trunk - see {{count}} in page display rather than value +* #7016: redundant 'field_start_date' in ja.yml +* #7018: 'undefined method `reschedule_after' for nil:NilClass' on new issues +* #7024: E-mail notifications about Wiki changes. +* #7033: 'class' attribute of
     tag shouldn't be truncate
    +* #7035: CSV value separator in russian
    +* #7122: Issue-description Quote-button missing
    +* #7144: custom queries making use of deleted custom fields cause a 500 error
    +* #7162: Multiply defined label in french translation
    +
    +== 2010-11-28 v1.0.4
    +
    +* #5324: Git not working if color.ui is enabled
    +* #6447: Issues API doesn't allow full key auth for all actions
    +* #6457: Edit User group problem
    +* #6575: start date being filled with current date even when blank value is submitted
    +* #6740: Max attachment size, incorrect usage of 'KB'
    +* #6760: Select box sorted by ID instead of name in Issue Category
    +* #6766: Changing target version name can cause an internal error
    +* #6784: Redmine not working with i18n gem 0.4.2
    +* #6839: Hardcoded absolute links in my/page_layout
    +* #6841: Projects API doesn't allow full key auth for all actions
    +* #6860: svn: Write error: Broken pipe when browsing repository
    +* #6874: API should return XML description when creating a project
    +* #6932: submitting wrong parent task input creates a 500 error
    +* #6966: Records of Forums are remained, deleting project
    +* #6990: Layout problem in workflow overview
    +* #5117: mercurial_adapter should ensure the right LANG environment variable
    +* #6782: Traditional Chinese language file (to r4352)
    +* #6783: Swedish Translation for r4352
    +* #6804: Bugfix: spelling fixes
    +* #6814: Japanese Translation for r4362
    +* #6948: Bulgarian translation
    +* #6973: Update es.yml
    +
     == 2010-10-31 v1.0.3
     
     * #4065: Redmine.pm doesn't work with LDAPS and a non-standard port
    @@ -1112,7 +1245,7 @@
     * Search engines now supports pagination. Results are sorted in reverse chronological order
     * Added "Estimated hours" attribute on issues
     * A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category
    -* Forum notifications are now also sent to the authors of the thread, even if they don’t watch the board
    +* Forum notifications are now also sent to the authors of the thread, even if they don�t watch the board
     * Added an application setting to specify the application protocol (http or https) used to generate urls in emails
     * Gantt chart: now starts at the current month by default
     * Gantt chart: month count and zoom factor are automatically saved as user preferences
    @@ -1120,7 +1253,7 @@
     * Added wiki index by date
     * Added preview on add/edit issue form
     * Emails footer can now be customized from the admin interface (Admin -> Email notifications)
    -* Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that they’re properly displayed)
    +* Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that they�re properly displayed)
     * Calendar: first day of week can now be set in lang files
     * Automatic closing of duplicate issues
     * Added a cross-project issue list
    @@ -1132,7 +1265,7 @@
     * Added some accesskeys
     * Added "Float" as a custom field format
     * Added basic Theme support
    -* Added the ability to set the “done ratio” of issues fixed by commit (Nikolay Solakov)
    +* Added the ability to set the �done ratio� of issues fixed by commit (Nikolay Solakov)
     * Added custom fields in issue related mail notifications
     * Email notifications are now sent in plain text and html
     * Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed.
    @@ -1165,7 +1298,7 @@
     * Added Korean translation (Choi Jong Yoon)
     * Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations
     * Performance improvement on calendar and gantt
    -* Fixed: wiki preview doesn’t work on long entries
    +* Fixed: wiki preview doesn�t work on long entries
     * Fixed: queries with multiple custom fields return no result
     * Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters
     * Fixed: URL with ~ broken in wiki formatting
    @@ -1176,7 +1309,7 @@
     
     * per project forums added
     * added the ability to archive projects
    -* added “Watch” functionality on issues. It allows users to receive notifications about issue changes
    +* added �Watch� functionality on issues. It allows users to receive notifications about issue changes
     * custom fields for issues can now be used as filters on issue list
     * added per user custom queries
     * commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings)
    @@ -1217,7 +1350,7 @@
     * added swedish translation (Thomas Habets)
     * italian translation update (Alessio Spadaro)
     * japanese translation update (Satoru Kurashiki)
    -* fixed: error on history atom feed when there’s no notes on an issue change
    +* fixed: error on history atom feed when there�s no notes on an issue change
     * fixed: error in journalizing an issue with longtext custom fields (Postgresql)
     * fixed: creation of Oracle schema
     * fixed: last day of the month not included in project activity
    diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/.svn/text-base/INSTALL.svn-base
    --- a/doc/.svn/text-base/INSTALL.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/doc/.svn/text-base/INSTALL.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -9,14 +9,16 @@
     
     * Ruby 1.8.6 or 1.8.7
     
    +* RubyGems 1.3.1
    +
     * Ruby on Rails 2.3.5 (official downloadable Redmine releases are packaged with
       the appropriate Rails version)
     
    -* Rack 1.0.1
    +* Rack 1.0.1 gem
     
    -* RubyGems 1.3.1
    +* Rake 0.8.3 gem
     
    -* Rake 0.8.3
    +* I18n 0.4.2 gem
     
     * A database:
       * MySQL (tested with MySQL 5)
    @@ -78,8 +80,8 @@
     
     == SMTP server Configuration
     
    -Copy config/email.yml.example to config/email.yml and edit this file
    -to adjust your SMTP settings.
    +Copy config/configuration.yml.example to config/configuration.yml and
    +edit this file to adjust your SMTP settings.
     Do not forget to restart the application after any change to this file.
     
     Please do not enter your SMTP settings in environment.rb.
    diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/.svn/text-base/UPGRADING.svn-base
    --- a/doc/.svn/text-base/UPGRADING.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/doc/.svn/text-base/UPGRADING.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -10,8 +10,10 @@
     1. Uncompress the program archive in a new directory
     
     2. Copy your database settings (RAILS_ROOT/config/database.yml)
    -   and SMTP settings (RAILS_ROOT/config/email.yml) into the new
    -   config directory
    +   and your configuration file (RAILS_ROOT/config/configuration.yml)
    +   into the new config directory
    +   Note: before Redmine 1.2, SMTP configuration was stored in
    +   config/email.yml. It should now be stored in config/configuration.yml. 
     
     3. Copy the RAILS_ROOT/files directory content into your new installation
        This directory contains all the attached files.
    diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/CHANGELOG
    --- a/doc/CHANGELOG	Tue Feb 22 16:48:15 2011 +0000
    +++ b/doc/CHANGELOG	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,9 +1,142 @@
     == Redmine changelog
     
     Redmine - project management software
    -Copyright (C) 2006-2010  Jean-Philippe Lang
    +Copyright (C) 2006-2011  Jean-Philippe Lang
     http://www.redmine.org/
     
    +== 2011-01-30 v1.1.1
    +
    +* Defect #4899: Redmine fails to list files for darcs repository
    +* Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql
    +* Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades
    +* Defect #7258: Automatic spent time logging does not work properly with SQLite3
    +* Defect #7259: Released 1.1.0 uses "devel" label inside admin information
    +* Defect #7265: "Loading..." icon does not disappear after add project member
    +* Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale
    +* Defect #7274: CSV value separator in dutch locale
    +* Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list
    +* Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0
    +* Defect #7307: HTTP 500 error on query for empty revision
    +* Defect #7313: Label not translated in french in Settings/Email Notification tab
    +* Defect #7329:  with long strings may hang server
    +* Defect #7337: My page french translation
    +* Defect #7348: French Translation of "Connection"
    +* Defect #7385: Error when viewing an issue which was related to a deleted subtask
    +* Defect #7386: NoMethodError on pdf export
    +* Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4
    +* Defect #7421: no email sent with 'Notifiy for any event on the selected projects only'
    +* Feature #5344: Update to latest CodeRay 0.9.x
    +
    +== 2011-01-09 v1.1.0
    +
    +* Defect #2038: Italics in wiki headers show-up wrong in the toc
    +* Defect #3449: Redmine Takes Too Long On Large Mercurial Repository
    +* Defect #3567: Sorting for changesets might go wrong on Mercurial repos
    +* Defect #3707: {{toc}} doesn't work with {{include}}
    +* Defect #5096: Redmine hangs up while browsing Git repository
    +* Defect #6000: Safe Attributes prevents plugin extension of Issue model...
    +* Defect #6064: Modules not assigned to projects created via API
    +* Defect #6110: MailHandler should allow updating Issue Priority and Custom fields
    +* Defect #6136: JSON API holds less information than XML API
    +* Defect #6345: xml used by rest API is invalid
    +* Defect #6348: Gantt chart PDF rendering errors
    +* Defect #6403: Updating an issue with custom fields fails
    +* Defect #6467: "Member of role", "Member of group" filter not work correctly
    +* Defect #6473: New gantt broken after clearing issue filters
    +* Defect #6541: Email notifications send to everybody
    +* Defect #6549: Notification settings not migrated properly
    +* Defect #6591: Acronyms must have a minimum of three characters
    +* Defect #6674: Delete time log broken after changes to REST
    +* Defect #6681: Mercurial, Bazaar and Darcs auto close issue text should be commit id instead of revision number
    +* Defect #6724: Wiki uploads does not work anymore (SVN 4266)
    +* Defect #6746: Wiki links are broken on Activity page
    +* Defect #6747: Wiki diff does not work since r4265
    +* Defect #6763: New gantt charts: subject displayed twice on issues
    +* Defect #6826: Clicking "Add" twice creates duplicate member record
    +* Defect #6844: Unchecking status filter on the issue list has no effect
    +* Defect #6895: Wrong Polish translation of "blocks"
    +* Defect #6943: Migration from boolean to varchar fails on PostgreSQL 8.1
    +* Defect #7064: Mercurial adapter does not recognize non alphabetic nor numeric in UTF-8 copied files
    +* Defect #7128: New gantt chart does not render subtasks under parent task
    +* Defect #7135: paging mechanism returns the same last page forever
    +* Defect #7188: Activity page not refreshed when changing language
    +* Defect #7195: Apply CLI-supplied defaults for incoming mail only to new issues not replies
    +* Defect #7197: Tracker reset to default when replying to an issue email
    +* Defect #7213: Copy project does not copy all roles and permissions
    +* Defect #7225: Project settings: Trackers & Custom fields only relevant if module Issue tracking is active
    +* Feature #630: Allow non-unique names for projects
    +* Feature #1738: Add a "Visible" flag to project/user custom fields
    +* Feature #2803: Support for Javascript in Themes
    +* Feature #2852: Clean Incoming Email of quoted text "----- Reply above this line ------"
    +* Feature #2995: Improve error message when trying to access an archived project
    +* Feature #3170: Autocomplete issue relations on subject
    +* Feature #3503: Administrator Be Able To Modify Email settings Of Users
    +* Feature #4155: Automatic spent time logging from commit messages
    +* Feature #5136: Parent select on Wiki rename page
    +* Feature #5338: Descendants (subtasks) should be available via REST API
    +* Feature #5494: Wiki TOC should display heading from level 4
    +* Feature #5594: Improve MailHandler's keyword handling
    +* Feature #5622: Allow version to be set via incoming email
    +* Feature #5712: Reload themes
    +* Feature #5869: Issue filters by Group and Role
    +* Feature #6092: Truncate Git revision labels in Activity page/feed and allow configurable length
    +* Feature #6112: Accept localized keywords when receiving emails
    +* Feature #6140: REST issues response with issue count limit and offset
    +* Feature #6260: REST API for Users
    +* Feature #6276: Gantt Chart rewrite
    +* Feature #6446: Remove length limits on project identifier and name
    +* Feature #6628: Improvements in truncate email
    +* Feature #6779: Project JSON API
    +* Feature #6823: REST API for time tracker.
    +* Feature #7072: REST API for news
    +* Feature #7111: Expose more detail on journal entries
    +* Feature #7141: REST API: get information about current user
    +* Patch #4807: Allow to set the done_ratio field with the incoming mail system
    +* Patch #5441: Initialize TimeEntry attributes with params[:time_entry]
    +* Patch #6762: Use GET instead of POST to retrieve context_menu
    +* Patch #7160: French translation ofr "not_a_date" is missing
    +* Patch #7212: Missing remove_index in AddUniqueIndexOnMembers down migration
    +
    +
    +== 2010-12-23 v1.0.5
    +
    +* #6656: Mercurial adapter loses seconds of commit times
    +* #6996: Migration trac(sqlite3) -> redmine(postgresql) doesnt escape ' char
    +* #7013: v-1.0.4 trunk - see {{count}} in page display rather than value
    +* #7016: redundant 'field_start_date' in ja.yml
    +* #7018: 'undefined method `reschedule_after' for nil:NilClass' on new issues
    +* #7024: E-mail notifications about Wiki changes.
    +* #7033: 'class' attribute of 
     tag shouldn't be truncate
    +* #7035: CSV value separator in russian
    +* #7122: Issue-description Quote-button missing
    +* #7144: custom queries making use of deleted custom fields cause a 500 error
    +* #7162: Multiply defined label in french translation
    +
    +== 2010-11-28 v1.0.4
    +
    +* #5324: Git not working if color.ui is enabled
    +* #6447: Issues API doesn't allow full key auth for all actions
    +* #6457: Edit User group problem
    +* #6575: start date being filled with current date even when blank value is submitted
    +* #6740: Max attachment size, incorrect usage of 'KB'
    +* #6760: Select box sorted by ID instead of name in Issue Category
    +* #6766: Changing target version name can cause an internal error
    +* #6784: Redmine not working with i18n gem 0.4.2
    +* #6839: Hardcoded absolute links in my/page_layout
    +* #6841: Projects API doesn't allow full key auth for all actions
    +* #6860: svn: Write error: Broken pipe when browsing repository
    +* #6874: API should return XML description when creating a project
    +* #6932: submitting wrong parent task input creates a 500 error
    +* #6966: Records of Forums are remained, deleting project
    +* #6990: Layout problem in workflow overview
    +* #5117: mercurial_adapter should ensure the right LANG environment variable
    +* #6782: Traditional Chinese language file (to r4352)
    +* #6783: Swedish Translation for r4352
    +* #6804: Bugfix: spelling fixes
    +* #6814: Japanese Translation for r4362
    +* #6948: Bulgarian translation
    +* #6973: Update es.yml
    +
     == 2010-10-31 v1.0.3
     
     * #4065: Redmine.pm doesn't work with LDAPS and a non-standard port
    @@ -1112,7 +1245,7 @@
     * Search engines now supports pagination. Results are sorted in reverse chronological order
     * Added "Estimated hours" attribute on issues
     * A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category
    -* Forum notifications are now also sent to the authors of the thread, even if they don’t watch the board
    +* Forum notifications are now also sent to the authors of the thread, even if they don�t watch the board
     * Added an application setting to specify the application protocol (http or https) used to generate urls in emails
     * Gantt chart: now starts at the current month by default
     * Gantt chart: month count and zoom factor are automatically saved as user preferences
    @@ -1120,7 +1253,7 @@
     * Added wiki index by date
     * Added preview on add/edit issue form
     * Emails footer can now be customized from the admin interface (Admin -> Email notifications)
    -* Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that they’re properly displayed)
    +* Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that they�re properly displayed)
     * Calendar: first day of week can now be set in lang files
     * Automatic closing of duplicate issues
     * Added a cross-project issue list
    @@ -1132,7 +1265,7 @@
     * Added some accesskeys
     * Added "Float" as a custom field format
     * Added basic Theme support
    -* Added the ability to set the “done ratio” of issues fixed by commit (Nikolay Solakov)
    +* Added the ability to set the �done ratio� of issues fixed by commit (Nikolay Solakov)
     * Added custom fields in issue related mail notifications
     * Email notifications are now sent in plain text and html
     * Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed.
    @@ -1165,7 +1298,7 @@
     * Added Korean translation (Choi Jong Yoon)
     * Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations
     * Performance improvement on calendar and gantt
    -* Fixed: wiki preview doesn’t work on long entries
    +* Fixed: wiki preview doesn�t work on long entries
     * Fixed: queries with multiple custom fields return no result
     * Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters
     * Fixed: URL with ~ broken in wiki formatting
    @@ -1176,7 +1309,7 @@
     
     * per project forums added
     * added the ability to archive projects
    -* added “Watch” functionality on issues. It allows users to receive notifications about issue changes
    +* added �Watch� functionality on issues. It allows users to receive notifications about issue changes
     * custom fields for issues can now be used as filters on issue list
     * added per user custom queries
     * commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings)
    @@ -1217,7 +1350,7 @@
     * added swedish translation (Thomas Habets)
     * italian translation update (Alessio Spadaro)
     * japanese translation update (Satoru Kurashiki)
    -* fixed: error on history atom feed when there’s no notes on an issue change
    +* fixed: error on history atom feed when there�s no notes on an issue change
     * fixed: error in journalizing an issue with longtext custom fields (Postgresql)
     * fixed: creation of Oracle schema
     * fixed: last day of the month not included in project activity
    diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/INSTALL
    --- a/doc/INSTALL	Tue Feb 22 16:48:15 2011 +0000
    +++ b/doc/INSTALL	Thu Mar 03 12:11:53 2011 +0000
    @@ -9,14 +9,16 @@
     
     * Ruby 1.8.6 or 1.8.7
     
    +* RubyGems 1.3.1
    +
     * Ruby on Rails 2.3.5 (official downloadable Redmine releases are packaged with
       the appropriate Rails version)
     
    -* Rack 1.0.1
    +* Rack 1.0.1 gem
     
    -* RubyGems 1.3.1
    +* Rake 0.8.3 gem
     
    -* Rake 0.8.3
    +* I18n 0.4.2 gem
     
     * A database:
       * MySQL (tested with MySQL 5)
    @@ -78,8 +80,8 @@
     
     == SMTP server Configuration
     
    -Copy config/email.yml.example to config/email.yml and edit this file
    -to adjust your SMTP settings.
    +Copy config/configuration.yml.example to config/configuration.yml and
    +edit this file to adjust your SMTP settings.
     Do not forget to restart the application after any change to this file.
     
     Please do not enter your SMTP settings in environment.rb.
    diff -r 7cec015f07ce -r 73ff0e6a11b1 doc/UPGRADING
    --- a/doc/UPGRADING	Tue Feb 22 16:48:15 2011 +0000
    +++ b/doc/UPGRADING	Thu Mar 03 12:11:53 2011 +0000
    @@ -10,8 +10,10 @@
     1. Uncompress the program archive in a new directory
     
     2. Copy your database settings (RAILS_ROOT/config/database.yml)
    -   and SMTP settings (RAILS_ROOT/config/email.yml) into the new
    -   config directory
    +   and your configuration file (RAILS_ROOT/config/configuration.yml)
    +   into the new config directory
    +   Note: before Redmine 1.2, SMTP configuration was stored in
    +   config/email.yml. It should now be stored in config/configuration.yml. 
     
     3. Copy the RAILS_ROOT/files directory content into your new installation
        This directory contains all the attached files.
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/.svn/all-wcprops
    --- a/extra/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/.svn/all-wcprops	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,5 +1,5 @@
     K 25
     svn:wc:ra_dav:version-url
     V 30
    -/svn/!svn/ver/4309/trunk/extra
    +/svn/!svn/ver/4936/trunk/extra
     END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/.svn/entries
    --- a/extra/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,15 +1,15 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra
     http://redmine.rubyforge.org/svn
     
     
     
    -2010-10-29T22:55:50.222644Z
    -4309
    -jbbarth
    +2011-02-23T17:27:31.762248Z
    +4936
    +jplang
     
     
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/mail_handler/.svn/all-wcprops
    --- a/extra/mail_handler/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/mail_handler/.svn/all-wcprops	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,11 +1,11 @@
     K 25
     svn:wc:ra_dav:version-url
     V 43
    -/svn/!svn/ver/3195/trunk/extra/mail_handler
    +/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/3195/trunk/extra/mail_handler/rdm-mailhandler.rb
    +/svn/!svn/ver/4725/trunk/extra/mail_handler/rdm-mailhandler.rb
     END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/mail_handler/.svn/entries
    --- a/extra/mail_handler/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/mail_handler/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,14 +1,14 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/mail_handler
     http://redmine.rubyforge.org/svn
     
     
     
    -2009-12-19T14:08:48.825882Z
    -3195
    +2011-01-15T14:48:33.715032Z
    +4725
     jplang
     
     
    @@ -32,10 +32,10 @@
     
     
     
    -2010-09-23T14:37:44.939791Z
    -4529fffb032835fb9b9411c58d1c7d6b
    -2009-12-19T14:08:48.825882Z
    -3195
    +2011-03-03T11:05:11.000000Z
    +f3a0f406bd2e6d3caacb7e7c22079df0
    +2011-01-15T14:48:33.715032Z
    +4725
     jplang
     has-props
     
    @@ -58,5 +58,5 @@
     
     
     
    -5778
    +5915
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/mail_handler/.svn/text-base/rdm-mailhandler.rb.svn-base
    --- a/extra/mail_handler/.svn/text-base/rdm-mailhandler.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/mail_handler/.svn/text-base/rdm-mailhandler.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -57,10 +57,11 @@
     
     module Net
       class HTTPS < HTTP
    -    def self.post_form(url, params)
    +    def self.post_form(url, params, headers)
           request = Post.new(url.path)
           request.form_data = params
           request.basic_auth url.user, url.password if url.user
    +      request.initialize_http_header(headers)
           http = new(url.host, url.port)
           http.use_ssl = (url.scheme == 'https')
           http.start {|h| h.request(request) }
    @@ -121,6 +122,8 @@
       def submit(email)
         uri = url.gsub(%r{/*$}, '') + '/mail_handler'
         
    +    headers = { 'User-Agent' => "Redmine mail handler/#{VERSION}" }
    +    
         data = { 'key' => key, 'email' => email, 
                                'allow_override' => allow_override,
                                'unknown_user' => unknown_user,
    @@ -128,7 +131,7 @@
         issue_attributes.each { |attr, value| data["issue[#{attr}]"] = value }
                  
         debug "Posting to #{uri}..."
    -    response = Net::HTTPS.post_form(URI.parse(uri), data)
    +    response = Net::HTTPS.post_form(URI.parse(uri), data, headers)
         debug "Response received: #{response.code}"
         
         case response.code.to_i
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/mail_handler/rdm-mailhandler.rb
    --- a/extra/mail_handler/rdm-mailhandler.rb	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/mail_handler/rdm-mailhandler.rb	Thu Mar 03 12:11:53 2011 +0000
    @@ -57,10 +57,11 @@
     
     module Net
       class HTTPS < HTTP
    -    def self.post_form(url, params)
    +    def self.post_form(url, params, headers)
           request = Post.new(url.path)
           request.form_data = params
           request.basic_auth url.user, url.password if url.user
    +      request.initialize_http_header(headers)
           http = new(url.host, url.port)
           http.use_ssl = (url.scheme == 'https')
           http.start {|h| h.request(request) }
    @@ -121,6 +122,8 @@
       def submit(email)
         uri = url.gsub(%r{/*$}, '') + '/mail_handler'
         
    +    headers = { 'User-Agent' => "Redmine mail handler/#{VERSION}" }
    +    
         data = { 'key' => key, 'email' => email, 
                                'allow_override' => allow_override,
                                'unknown_user' => unknown_user,
    @@ -128,7 +131,7 @@
         issue_attributes.each { |attr, value| data["issue[#{attr}]"] = value }
                  
         debug "Posting to #{uri}..."
    -    response = Net::HTTPS.post_form(URI.parse(uri), data)
    +    response = Net::HTTPS.post_form(URI.parse(uri), data, headers)
         debug "Response received: #{response.code}"
         
         case response.code.to_i
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/.svn/all-wcprops
    --- a/extra/sample_plugin/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 44
    -/svn/!svn/ver/2798/trunk/extra/sample_plugin
    -END
    -init.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 52
    -/svn/!svn/ver/2798/trunk/extra/sample_plugin/init.rb
    -END
    -README
    -K 25
    -svn:wc:ra_dav:version-url
    -V 51
    -/svn/!svn/ver/2530/trunk/extra/sample_plugin/README
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/.svn/entries
    --- a/extra/sample_plugin/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin
     http://redmine.rubyforge.org/svn
     
    @@ -44,7 +44,7 @@
     
     
     
    -2010-09-23T14:37:44.963747Z
    +2011-03-03T11:05:12.000000Z
     cb8636f8b6659a091f3e1f018a64a2f5
     2009-07-02T18:40:06.298867Z
     2798
    @@ -78,7 +78,7 @@
     
     
     
    -2010-09-23T14:37:44.943755Z
    +2011-03-03T11:05:12.000000Z
     4d87ae4412bda3ec3b4c9a8bc17fafb6
     2009-02-26T16:37:48.671184Z
     2530
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/.svn/all-wcprops
    --- a/extra/sample_plugin/app/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 48
    -/svn/!svn/ver/2798/trunk/extra/sample_plugin/app
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/.svn/entries
    --- a/extra/sample_plugin/app/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/controllers/.svn/all-wcprops
    --- a/extra/sample_plugin/app/controllers/.svn/all-wcprops	Tue Feb 22 16:48:15 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 60
    -/svn/!svn/ver/2493/trunk/extra/sample_plugin/app/controllers
    -END
    -example_controller.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 82
    -/svn/!svn/ver/2493/trunk/extra/sample_plugin/app/controllers/example_controller.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/controllers/.svn/entries
    --- a/extra/sample_plugin/app/controllers/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/controllers/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/controllers
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.943755Z
    +2011-03-03T11:05:11.000000Z
     9e3b32d475f8b06df8d45b28a2732d76
     2009-02-21T11:04:50.579477Z
     2493
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/models/.svn/all-wcprops
    --- a/extra/sample_plugin/app/models/.svn/all-wcprops	Tue Feb 22 16:48:15 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 55
    -/svn/!svn/ver/1704/trunk/extra/sample_plugin/app/models
    -END
    -meeting.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 66
    -/svn/!svn/ver/1704/trunk/extra/sample_plugin/app/models/meeting.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/models/.svn/entries
    --- a/extra/sample_plugin/app/models/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/models/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/models
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.947762Z
    +2011-03-03T11:05:11.000000Z
     5161ccc668c61730638ef23bec50232f
     2008-07-27T19:18:35.954247Z
     1704
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/.svn/all-wcprops
    --- a/extra/sample_plugin/app/views/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 54
    -/svn/!svn/ver/2798/trunk/extra/sample_plugin/app/views
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/.svn/entries
    --- a/extra/sample_plugin/app/views/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/views/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/example/.svn/all-wcprops
    --- a/extra/sample_plugin/app/views/example/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 61
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/app/views/example
    -END
    -say_hello.rhtml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 77
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/app/views/example/say_hello.rhtml
    -END
    -say_goodbye.rhtml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 79
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/app/views/example/say_goodbye.rhtml
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/example/.svn/entries
    --- a/extra/sample_plugin/app/views/example/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/views/example/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/example
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.947762Z
    +2011-03-03T11:05:11.000000Z
     674cc3fb92754e41d7e7d5fb7ed0eda7
     2007-09-23T18:50:53.732551Z
     753
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.947762Z
    +2011-03-03T11:05:11.000000Z
     cf9e02439886339b70ee199313902c96
     2007-09-23T18:50:53.732551Z
     753
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/my/.svn/all-wcprops
    --- a/extra/sample_plugin/app/views/my/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 57
    -/svn/!svn/ver/2529/trunk/extra/sample_plugin/app/views/my
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/my/.svn/entries
    --- a/extra/sample_plugin/app/views/my/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/views/my/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/my/blocks/.svn/all-wcprops
    --- a/extra/sample_plugin/app/views/my/blocks/.svn/all-wcprops	Tue Feb 22 16:48:15 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 64
    -/svn/!svn/ver/2529/trunk/extra/sample_plugin/app/views/my/blocks
    -END
    -_sample_block.rhtml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 84
    -/svn/!svn/ver/2529/trunk/extra/sample_plugin/app/views/my/blocks/_sample_block.rhtml
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/my/blocks/.svn/entries
    --- a/extra/sample_plugin/app/views/my/blocks/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/views/my/blocks/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my/blocks
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.951756Z
    +2011-03-03T11:05:11.000000Z
     e2d729cf488b7b7411cffb259c10559a
     2009-02-26T16:36:56.835799Z
     2529
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/settings/.svn/all-wcprops
    --- a/extra/sample_plugin/app/views/settings/.svn/all-wcprops	Tue Feb 22 16:48:15 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 63
    -/svn/!svn/ver/2798/trunk/extra/sample_plugin/app/views/settings
    -END
    -_sample_plugin_settings.rhtml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 93
    -/svn/!svn/ver/2798/trunk/extra/sample_plugin/app/views/settings/_sample_plugin_settings.rhtml
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/app/views/settings/.svn/entries
    --- a/extra/sample_plugin/app/views/settings/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/app/views/settings/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/settings
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.951756Z
    +2011-03-03T11:05:11.000000Z
     065925dde040b66230ae06437114c77f
     2009-07-02T18:40:06.298867Z
     2798
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/assets/.svn/all-wcprops
    --- a/extra/sample_plugin/assets/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 50
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/assets
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/assets/.svn/entries
    --- a/extra/sample_plugin/assets/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/assets/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/assets/images/.svn/all-wcprops
    --- a/extra/sample_plugin/assets/images/.svn/all-wcprops	Tue Feb 22 16:48:15 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 57
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/assets/images
    -END
    -it_works.png
    -K 25
    -svn:wc:ra_dav:version-url
    -V 70
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/assets/images/it_works.png
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/assets/images/.svn/entries
    --- a/extra/sample_plugin/assets/images/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/assets/images/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/images
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.955797Z
    +2011-03-03T11:05:11.000000Z
     81bcc262c08473fa7cb05cc78176652f
     2007-09-23T18:50:53.732551Z
     753
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/assets/stylesheets/.svn/all-wcprops
    --- a/extra/sample_plugin/assets/stylesheets/.svn/all-wcprops	Tue Feb 22 16:48:15 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 62
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/assets/stylesheets
    -END
    -example.css
    -K 25
    -svn:wc:ra_dav:version-url
    -V 74
    -/svn/!svn/ver/753/trunk/extra/sample_plugin/assets/stylesheets/example.css
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/assets/stylesheets/.svn/entries
    --- a/extra/sample_plugin/assets/stylesheets/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/assets/stylesheets/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/stylesheets
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.955797Z
    +2011-03-03T11:05:11.000000Z
     ced97da84497db69b30e6e17a55c3fb9
     2007-09-23T18:50:53.732551Z
     753
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/config/.svn/all-wcprops
    --- a/extra/sample_plugin/config/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 51
    -/svn/!svn/ver/2493/trunk/extra/sample_plugin/config
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/config/.svn/entries
    --- a/extra/sample_plugin/config/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/config/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/config/locales/.svn/all-wcprops
    --- a/extra/sample_plugin/config/locales/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 59
    -/svn/!svn/ver/2493/trunk/extra/sample_plugin/config/locales
    -END
    -en.yml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 66
    -/svn/!svn/ver/2493/trunk/extra/sample_plugin/config/locales/en.yml
    -END
    -fr.yml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 66
    -/svn/!svn/ver/2493/trunk/extra/sample_plugin/config/locales/fr.yml
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/config/locales/.svn/entries
    --- a/extra/sample_plugin/config/locales/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/config/locales/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config/locales
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.959754Z
    +2011-03-03T11:05:11.000000Z
     c1dc7060239e61ce13e8840b305000c5
     2009-02-08T16:13:02.919112Z
     2413
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.959754Z
    +2011-03-03T11:05:11.000000Z
     989492284a42bf9777e2bd0d39b40254
     2009-02-08T16:13:02.919112Z
     2413
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/db/.svn/all-wcprops
    --- a/extra/sample_plugin/db/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 47
    -/svn/!svn/ver/1703/trunk/extra/sample_plugin/db
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/db/.svn/entries
    --- a/extra/sample_plugin/db/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/db/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/db/migrate/.svn/all-wcprops
    --- a/extra/sample_plugin/db/migrate/.svn/all-wcprops	Tue Feb 22 16:48:15 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 55
    -/svn/!svn/ver/1703/trunk/extra/sample_plugin/db/migrate
    -END
    -001_create_meetings.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 78
    -/svn/!svn/ver/1703/trunk/extra/sample_plugin/db/migrate/001_create_meetings.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/sample_plugin/db/migrate/.svn/entries
    --- a/extra/sample_plugin/db/migrate/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/sample_plugin/db/migrate/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db/migrate
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.963747Z
    +2011-03-03T11:05:11.000000Z
     2316ab57f3d60b7f04b4bdfdebf6fd8e
     2008-07-27T19:10:56.352148Z
     1703
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/svn/.svn/all-wcprops
    --- a/extra/svn/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/svn/.svn/all-wcprops	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     K 25
     svn:wc:ra_dav:version-url
     V 34
    -/svn/!svn/ver/4309/trunk/extra/svn
    +/svn/!svn/ver/4936/trunk/extra/svn
     END
     reposman.rb
     K 25
    @@ -19,7 +19,7 @@
     K 25
     svn:wc:ra_dav:version-url
     V 45
    -/svn/!svn/ver/4309/trunk/extra/svn/Redmine.pm
    +/svn/!svn/ver/4936/trunk/extra/svn/Redmine.pm
     END
     create_views.sql
     K 25
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/svn/.svn/entries
    --- a/extra/svn/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/svn/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,15 +1,15 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/extra/svn
     http://redmine.rubyforge.org/svn
     
     
     
    -2010-10-29T22:55:50.222644Z
    -4309
    -jbbarth
    +2011-02-23T17:27:31.762248Z
    +4936
    +jplang
     
     
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-11-19T13:04:50.864947Z
    +2011-03-03T11:05:12.000000Z
     a0d169b0fc20459335e531e4f3921ede
     2010-10-24T21:00:05.611798Z
     4288
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.967747Z
    +2011-03-03T11:05:12.000000Z
     f41d78e45e03554626edf5e4e6663d80
     2007-04-02T19:01:31.084001Z
     402
    @@ -100,11 +100,11 @@
     
     
     
    -2010-11-19T13:04:50.864947Z
    -5ed4546a59c9729cbd9b407ad0996b9b
    -2010-10-29T22:55:50.222644Z
    -4309
    -jbbarth
    +2011-03-03T11:40:18.000000Z
    +c3d331d6024a3d0f0c250fda387ce052
    +2011-02-23T17:27:31.762248Z
    +4936
    +jplang
     has-props
     
     
    @@ -126,7 +126,7 @@
     
     
     
    -10752
    +10843
     
     create_views.sql
     file
    @@ -134,7 +134,7 @@
     
     
     
    -2010-09-23T14:37:44.963747Z
    +2011-03-03T11:05:12.000000Z
     96fdfe0a7a4913dbbfc1b871d7abab02
     2007-04-01T19:43:59.029417Z
     396
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/svn/.svn/text-base/Redmine.pm.svn-base
    --- a/extra/svn/.svn/text-base/Redmine.pm.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/svn/.svn/text-base/Redmine.pm.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -148,7 +148,7 @@
       my ($self, $parms, $arg) = @_;
       $self->{RedmineDSN} = $arg;
       my $query = "SELECT 
    -                 hashed_password, auth_source_id, permissions
    +                 hashed_password, salt, auth_source_id, permissions
                   FROM members, projects, users, roles, member_roles
                   WHERE 
                     projects.id=members.project_id
    @@ -316,11 +316,12 @@
       $sth->execute($redmine_user, $project_id);
     
       my $ret;
    -  while (my ($hashed_password, $auth_source_id, $permissions) = $sth->fetchrow_array) {
    +  while (my ($hashed_password, $salt, $auth_source_id, $permissions) = $sth->fetchrow_array) {
     
           unless ($auth_source_id) {
    -	  my $method = $r->method;
    -          if ($hashed_password eq $pass_digest && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
    +	  			my $method = $r->method;
    +          my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest);
    +					if ($hashed_password eq $salted_password && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
                   $ret = 1;
                   last;
               }
    diff -r 7cec015f07ce -r 73ff0e6a11b1 extra/svn/Redmine.pm
    --- a/extra/svn/Redmine.pm	Tue Feb 22 16:48:15 2011 +0000
    +++ b/extra/svn/Redmine.pm	Thu Mar 03 12:11:53 2011 +0000
    @@ -148,7 +148,7 @@
       my ($self, $parms, $arg) = @_;
       $self->{RedmineDSN} = $arg;
       my $query = "SELECT 
    -                 hashed_password, auth_source_id, permissions
    +                 hashed_password, salt, auth_source_id, permissions
                   FROM members, projects, users, roles, member_roles
                   WHERE 
                     projects.id=members.project_id
    @@ -316,11 +316,12 @@
       $sth->execute($redmine_user, $project_id);
     
       my $ret;
    -  while (my ($hashed_password, $auth_source_id, $permissions) = $sth->fetchrow_array) {
    +  while (my ($hashed_password, $salt, $auth_source_id, $permissions) = $sth->fetchrow_array) {
     
           unless ($auth_source_id) {
    -	  my $method = $r->method;
    -          if ($hashed_password eq $pass_digest && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
    +	  			my $method = $r->method;
    +          my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest);
    +					if ($hashed_password eq $salted_password && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
                   $ret = 1;
                   last;
               }
    diff -r 7cec015f07ce -r 73ff0e6a11b1 files/.svn/all-wcprops
    --- a/files/.svn/all-wcprops	Tue Feb 22 16:48:15 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 28
    -/svn/!svn/ver/67/trunk/files
    -END
    -delete.me
    -K 25
    -svn:wc:ra_dav:version-url
    -V 38
    -/svn/!svn/ver/67/trunk/files/delete.me
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 files/.svn/entries
    --- a/files/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/files/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/files
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.967747Z
    +2011-03-03T11:05:13.000000Z
     ae0415159f2c4dba3fc1a559d4c0f9f5
     2006-06-28T18:11:03.549769Z
     4
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/.svn/all-wcprops
    --- a/lib/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/.svn/all-wcprops	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     K 25
     svn:wc:ra_dav:version-url
     V 28
    -/svn/!svn/ver/4406/trunk/lib
    +/svn/!svn/ver/4993/trunk/lib
     END
     faster_csv.rb
     K 25
    @@ -13,7 +13,7 @@
     K 25
     svn:wc:ra_dav:version-url
     V 39
    -/svn/!svn/ver/4388/trunk/lib/redmine.rb
    +/svn/!svn/ver/4954/trunk/lib/redmine.rb
     END
     tabular_form_builder.rb
     K 25
    @@ -25,7 +25,7 @@
     K 25
     svn:wc:ra_dav:version-url
     V 41
    -/svn/!svn/ver/4374/trunk/lib/redcloth3.rb
    +/svn/!svn/ver/4468/trunk/lib/redcloth3.rb
     END
     ar_condition.rb
     K 25
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/.svn/entries
    --- a/lib/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,15 +1,15 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib
     http://redmine.rubyforge.org/svn
     
     
     
    -2010-11-14T16:24:21.989522Z
    -4406
    -jplang
    +2011-03-03T05:51:46.224821Z
    +4993
    +tmaruyama
     
     
     
    @@ -38,7 +38,7 @@
     
     
     
    -2010-09-23T14:37:44.983792Z
    +2011-03-03T11:05:14.000000Z
     1657561b457dadfa5d004a393bdd1a2e
     2009-11-04T13:22:26.440808Z
     3007
    @@ -78,10 +78,10 @@
     
     
     
    -2010-11-19T13:04:51.440969Z
    -bdb16884474de1a2d37d4cc215f7f027
    -2010-11-07T22:38:10.728638Z
    -4388
    +2011-03-03T11:40:18.000000Z
    +931d36182ff7c72cf9e133581a6e1822
    +2011-02-27T13:34:41.060565Z
    +4954
     jplang
     has-props
     
    @@ -104,7 +104,7 @@
     
     
     
    -12745
    +12850
     
     tabular_form_builder.rb
     file
    @@ -112,7 +112,7 @@
     
     
     
    -2010-09-23T14:37:45.055767Z
    +2011-03-03T11:05:14.000000Z
     9d8fb5ede85fd780f018b74b36a83034
     2010-06-20T19:03:09.888571Z
     3804
    @@ -149,10 +149,10 @@
     
     
     
    -2010-11-19T13:04:51.440969Z
    -d1a99a7a8d34e675199eec76eea82129
    -2010-11-06T13:29:23.489999Z
    -4374
    +2011-03-03T11:05:14.000000Z
    +d76edcf3565b73d5e63e37d3e1c72512
    +2010-12-05T10:09:18.457497Z
    +4468
     jplang
     has-props
     
    @@ -175,7 +175,7 @@
     
     
     
    -38666
    +38680
     
     ar_condition.rb
     file
    @@ -183,7 +183,7 @@
     
     
     
    -2010-09-23T14:37:44.983792Z
    +2011-03-03T11:05:14.000000Z
     55e7cfa4fcb3619e9939d29336ecdf02
     2008-03-11T19:33:38.611682Z
     1227
    @@ -217,7 +217,7 @@
     
     
     
    -2010-09-23T14:37:44.983792Z
    +2011-03-03T11:05:14.000000Z
     1ecc6c4c4ae6aa3e75600673b4b78add
     2009-08-15T22:41:40.505056Z
     2840
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/.svn/text-base/redcloth3.rb.svn-base
    --- a/lib/.svn/text-base/redcloth3.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/.svn/text-base/redcloth3.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -1078,7 +1078,7 @@
                             line = ""
                             first.match(/<#{ OFFTAGS }([^>]*)>/)
                             tag = $1
    -                        $2.to_s.match(/(class\=\S+)/i)
    +                        $2.to_s.match(/(class\=("[^"]+"|'[^']+'))/i)
                             tag << " #{$1}" if $1
                             @pre_list << "<#{ tag }>#{ aftertag }"
                         end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/.svn/text-base/redmine.rb.svn-base
    --- a/lib/.svn/text-base/redmine.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/.svn/text-base/redmine.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -62,7 +62,7 @@
                                       :auto_complete => [:issues],
                                       :context_menus => [:issues],
                                       :versions => [:index, :show, :status_by],
    -                                  :journals => :index,
    +                                  :journals => [:index, :diff],
                                       :queries => :index,
                                       :reports => [:issue_report, :issue_report_details]}
         map.permission :add_issues, {:issues => [:new, :create, :update_form]}
    @@ -85,7 +85,7 @@
       
       map.project_module :time_tracking do |map|
         map.permission :log_time, {:timelog => [:new, :create, :edit, :update]}, :require => :loggedin
    -    map.permission :view_time_entries, :timelog => [:index], :time_entry_reports => [:report]
    +    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 :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
    @@ -229,3 +229,5 @@
     Redmine::WikiFormatting.map do |format|
       format.register :textile, Redmine::WikiFormatting::Textile::Formatter, Redmine::WikiFormatting::Textile::Helper
     end
    +
    +ActionView::Template.register_template_handler :rsb, Redmine::Views::ApiTemplateHandler
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/SVG/.svn/all-wcprops
    --- a/lib/SVG/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 32
    -/svn/!svn/ver/3017/trunk/lib/SVG
    -END
    -GPL.txt
    -K 25
    -svn:wc:ra_dav:version-url
    -V 39
    -/svn/!svn/ver/380/trunk/lib/SVG/GPL.txt
    -END
    -LICENSE.txt
    -K 25
    -svn:wc:ra_dav:version-url
    -V 43
    -/svn/!svn/ver/380/trunk/lib/SVG/LICENSE.txt
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/SVG/.svn/entries
    --- a/lib/SVG/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/SVG/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/SVG
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.975748Z
    +2011-03-03T11:05:14.000000Z
     393a5ca445f6965873eca0259a17f833
     2007-03-25T17:11:46.804742Z
     380
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     072cf60873854a186c6eba9b74dbe389
     2007-03-25T17:11:46.804742Z
     380
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/SVG/Graph/.svn/all-wcprops
    --- a/lib/SVG/Graph/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,59 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 38
    -/svn/!svn/ver/3017/trunk/lib/SVG/Graph
    -END
    -Pie.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 45
    -/svn/!svn/ver/2642/trunk/lib/SVG/Graph/Pie.rb
    -END
    -BarHorizontal.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 55
    -/svn/!svn/ver/2642/trunk/lib/SVG/Graph/BarHorizontal.rb
    -END
    -Plot.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 46
    -/svn/!svn/ver/2642/trunk/lib/SVG/Graph/Plot.rb
    -END
    -BarBase.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 49
    -/svn/!svn/ver/2642/trunk/lib/SVG/Graph/BarBase.rb
    -END
    -Graph.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 47
    -/svn/!svn/ver/3017/trunk/lib/SVG/Graph/Graph.rb
    -END
    -Bar.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 45
    -/svn/!svn/ver/2642/trunk/lib/SVG/Graph/Bar.rb
    -END
    -Line.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 45
    -/svn/!svn/ver/380/trunk/lib/SVG/Graph/Line.rb
    -END
    -TimeSeries.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 52
    -/svn/!svn/ver/2642/trunk/lib/SVG/Graph/TimeSeries.rb
    -END
    -Schedule.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 49
    -/svn/!svn/ver/380/trunk/lib/SVG/Graph/Schedule.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/SVG/Graph/.svn/entries
    --- a/lib/SVG/Graph/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/SVG/Graph/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/SVG/Graph
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     0a49ed37717b08c6bccdc843a03a333d
     2009-03-30T19:58:17.407192Z
     2642
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     55ff835de5a0fb0fd2d6a236b1c5c436
     2009-03-30T19:58:17.407192Z
     2642
    @@ -100,7 +100,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     a39e9963eaae7bb913b6d8d2dfe0506f
     2009-03-30T19:58:17.407192Z
     2642
    @@ -134,7 +134,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     184772c0f1732eadf12b0e8bc9e172f7
     2009-03-30T19:58:17.407192Z
     2642
    @@ -168,7 +168,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     fad5865539cbd7ba3433fd6d47b9d3f2
     2009-11-07T10:40:54.677820Z
     3017
    @@ -202,7 +202,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     cc9051d7617dfe6dd6cc47fe83fd6ec4
     2009-03-30T19:58:17.407192Z
     2642
    @@ -236,7 +236,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     f092a4b0f16876381bc9283058eeb48c
     2007-03-25T17:11:46.804742Z
     380
    @@ -270,7 +270,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     73dbcb4a1cba46b4e46a81881d24ff1a
     2009-03-30T19:58:17.407192Z
     2642
    @@ -304,7 +304,7 @@
     
     
     
    -2010-09-23T14:37:44.979747Z
    +2011-03-03T11:05:14.000000Z
     d8e95d0e507a02a74a5ac3435560d3bd
     2007-03-25T17:11:46.804742Z
     380
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/.svn/all-wcprops
    --- a/lib/generators/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 39
    -/svn/!svn/ver/3771/trunk/lib/generators
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/.svn/entries
    --- a/lib/generators/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/generators/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/generators
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin/.svn/all-wcprops
    --- a/lib/generators/redmine_plugin/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 54
    -/svn/!svn/ver/3771/trunk/lib/generators/redmine_plugin
    -END
    -USAGE
    -K 25
    -svn:wc:ra_dav:version-url
    -V 60
    -/svn/!svn/ver/2785/trunk/lib/generators/redmine_plugin/USAGE
    -END
    -redmine_plugin_generator.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 82
    -/svn/!svn/ver/2785/trunk/lib/generators/redmine_plugin/redmine_plugin_generator.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin/.svn/entries
    --- a/lib/generators/redmine_plugin/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/generators/redmine_plugin/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.987751Z
    +2011-03-03T11:05:14.000000Z
     334056a407de9091bb8774ba986c53f9
     2009-06-10T03:39:02.884087Z
     2785
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.987751Z
    +2011-03-03T11:05:14.000000Z
     be5d60ef31ac822cd5650ab976dcc543
     2009-06-10T03:39:02.884087Z
     2785
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin/templates/.svn/all-wcprops
    --- a/lib/generators/redmine_plugin/templates/.svn/all-wcprops	Tue Feb 22 16:48:15 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 64
    -/svn/!svn/ver/3771/trunk/lib/generators/redmine_plugin/templates
    -END
    -en.yml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 71
    -/svn/!svn/ver/1786/trunk/lib/generators/redmine_plugin/templates/en.yml
    -END
    -README.rdoc
    -K 25
    -svn:wc:ra_dav:version-url
    -V 76
    -/svn/!svn/ver/1949/trunk/lib/generators/redmine_plugin/templates/README.rdoc
    -END
    -test_helper.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 83
    -/svn/!svn/ver/1949/trunk/lib/generators/redmine_plugin/templates/test_helper.rb.erb
    -END
    -en_rails_i18n.yml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 82
    -/svn/!svn/ver/2785/trunk/lib/generators/redmine_plugin/templates/en_rails_i18n.yml
    -END
    -init.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 76
    -/svn/!svn/ver/3771/trunk/lib/generators/redmine_plugin/templates/init.rb.erb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin/templates/.svn/entries
    --- a/lib/generators/redmine_plugin/templates/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/generators/redmine_plugin/templates/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin/templates
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.987751Z
    +2011-03-03T11:05:14.000000Z
     2d39c559d341be440cb60911ef125dd9
     2008-09-05T10:31:06.632668Z
     1786
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.987751Z
    +2011-03-03T11:05:14.000000Z
     d97a21936cfb77543031f7d9a5d5131a
     2008-10-25T04:37:31.779636Z
     1949
    @@ -100,7 +100,7 @@
     
     
     
    -2010-09-23T14:37:44.991758Z
    +2011-03-03T11:05:14.000000Z
     d14592489e5b7d34b33d2487f4770b7d
     2008-10-25T04:37:31.779636Z
     1949
    @@ -134,7 +134,7 @@
     
     
     
    -2010-09-23T14:37:44.991758Z
    +2011-03-03T11:05:14.000000Z
     ab791ada26df5c9c1a13b771e988a36f
     2009-06-10T03:39:02.884087Z
     2785
    @@ -168,7 +168,7 @@
     
     
     
    -2010-09-23T14:37:44.991758Z
    +2011-03-03T11:05:14.000000Z
     39cb16a49db6c72cdd7a63447d5b188f
     2010-06-17T19:02:13.409991Z
     3771
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_controller/.svn/all-wcprops
    --- a/lib/generators/redmine_plugin_controller/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 65
    -/svn/!svn/ver/3770/trunk/lib/generators/redmine_plugin_controller
    -END
    -USAGE
    -K 25
    -svn:wc:ra_dav:version-url
    -V 71
    -/svn/!svn/ver/1786/trunk/lib/generators/redmine_plugin_controller/USAGE
    -END
    -redmine_plugin_controller_generator.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 104
    -/svn/!svn/ver/3514/trunk/lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_controller/.svn/entries
    --- a/lib/generators/redmine_plugin_controller/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/generators/redmine_plugin_controller/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.991758Z
    +2011-03-03T11:05:14.000000Z
     60c1792566a450d246dd66ff274ae06c
     2008-09-05T10:31:06.632668Z
     1786
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.991758Z
    +2011-03-03T11:05:14.000000Z
     23b15404071adb39cb140a6113057f15
     2010-02-28T12:15:47.320153Z
     3514
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_controller/templates/.svn/all-wcprops
    --- a/lib/generators/redmine_plugin_controller/templates/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,29 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 75
    -/svn/!svn/ver/3770/trunk/lib/generators/redmine_plugin_controller/templates
    -END
    -view.html.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 89
    -/svn/!svn/ver/1786/trunk/lib/generators/redmine_plugin_controller/templates/view.html.erb
    -END
    -helper.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 89
    -/svn/!svn/ver/1951/trunk/lib/generators/redmine_plugin_controller/templates/helper.rb.erb
    -END
    -functional_test.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 98
    -/svn/!svn/ver/1951/trunk/lib/generators/redmine_plugin_controller/templates/functional_test.rb.erb
    -END
    -controller.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 93
    -/svn/!svn/ver/3770/trunk/lib/generators/redmine_plugin_controller/templates/controller.rb.erb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_controller/templates/.svn/entries
    --- a/lib/generators/redmine_plugin_controller/templates/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/generators/redmine_plugin_controller/templates/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller/templates
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.995797Z
    +2011-03-03T11:05:14.000000Z
     0ae9d2e8e624fef815f60164d47b6464
     2008-09-05T10:31:06.632668Z
     1786
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.995797Z
    +2011-03-03T11:05:14.000000Z
     e8491aac2379dbba3d3ddadc30f6db07
     2008-10-25T09:35:51.426668Z
     1951
    @@ -100,7 +100,7 @@
     
     
     
    -2010-09-23T14:37:44.995797Z
    +2011-03-03T11:05:14.000000Z
     2fdd792e6b6825b4f1802ba4767e0435
     2008-10-25T09:35:51.426668Z
     1951
    @@ -134,7 +134,7 @@
     
     
     
    -2010-09-23T14:37:44.995797Z
    +2011-03-03T11:05:14.000000Z
     22e765f47aacc324789509219797d087
     2010-06-17T19:02:07.893033Z
     3770
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_model/.svn/all-wcprops
    --- a/lib/generators/redmine_plugin_model/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 60
    -/svn/!svn/ver/3770/trunk/lib/generators/redmine_plugin_model
    -END
    -USAGE
    -K 25
    -svn:wc:ra_dav:version-url
    -V 66
    -/svn/!svn/ver/1786/trunk/lib/generators/redmine_plugin_model/USAGE
    -END
    -redmine_plugin_model_generator.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 94
    -/svn/!svn/ver/3514/trunk/lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_model/.svn/entries
    --- a/lib/generators/redmine_plugin_model/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/generators/redmine_plugin_model/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:44.999760Z
    +2011-03-03T11:05:14.000000Z
     ca5ffbd9dfb099b2f38ca21c030ffea0
     2008-09-05T10:31:06.632668Z
     1786
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:44.999760Z
    +2011-03-03T11:05:14.000000Z
     ba0c0092c69cca4c21b1b26027f7472b
     2010-02-28T12:15:47.320153Z
     3514
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_model/templates/.svn/all-wcprops
    --- a/lib/generators/redmine_plugin_model/templates/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,29 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 70
    -/svn/!svn/ver/3770/trunk/lib/generators/redmine_plugin_model/templates
    -END
    -migration.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 87
    -/svn/!svn/ver/1951/trunk/lib/generators/redmine_plugin_model/templates/migration.rb.erb
    -END
    -unit_test.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 87
    -/svn/!svn/ver/2926/trunk/lib/generators/redmine_plugin_model/templates/unit_test.rb.erb
    -END
    -fixtures.yml
    -K 25
    -svn:wc:ra_dav:version-url
    -V 83
    -/svn/!svn/ver/1786/trunk/lib/generators/redmine_plugin_model/templates/fixtures.yml
    -END
    -model.rb.erb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 83
    -/svn/!svn/ver/3770/trunk/lib/generators/redmine_plugin_model/templates/model.rb.erb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/generators/redmine_plugin_model/templates/.svn/entries
    --- a/lib/generators/redmine_plugin_model/templates/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/generators/redmine_plugin_model/templates/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model/templates
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:45.003823Z
    +2011-03-03T11:05:14.000000Z
     ce0817700ec27f10f7d07f998bff6991
     2008-10-25T09:35:51.426668Z
     1951
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:45.003823Z
    +2011-03-03T11:05:14.000000Z
     a4081d31f6d22e7655b4f6e9fb894a03
     2009-10-17T21:08:33.644420Z
     2926
    @@ -100,7 +100,7 @@
     
     
     
    -2010-09-23T14:37:44.999760Z
    +2011-03-03T11:05:14.000000Z
     115e77dae670747c95b5ff22c01d4174
     2008-09-05T10:31:06.632668Z
     1786
    @@ -134,7 +134,7 @@
     
     
     
    -2010-09-23T14:37:45.003823Z
    +2011-03-03T11:05:14.000000Z
     3a783571ccc96a2f639329700dda677b
     2010-06-17T19:02:07.893033Z
     3770
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/plugins/.svn/all-wcprops
    --- a/lib/plugins/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,5 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 35
    -/svn/!svn/ver/774/trunk/lib/plugins
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/plugins/.svn/entries
    --- a/lib/plugins/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/plugins/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/plugins
     http://redmine.rubyforge.org/svn
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redcloth3.rb
    --- a/lib/redcloth3.rb	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redcloth3.rb	Thu Mar 03 12:11:53 2011 +0000
    @@ -1078,7 +1078,7 @@
                             line = ""
                             first.match(/<#{ OFFTAGS }([^>]*)>/)
                             tag = $1
    -                        $2.to_s.match(/(class\=\S+)/i)
    +                        $2.to_s.match(/(class\=("[^"]+"|'[^']+'))/i)
                             tag << " #{$1}" if $1
                             @pre_list << "<#{ tag }>#{ aftertag }"
                         end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine.rb
    --- a/lib/redmine.rb	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine.rb	Thu Mar 03 12:11:53 2011 +0000
    @@ -62,7 +62,7 @@
                                       :auto_complete => [:issues],
                                       :context_menus => [:issues],
                                       :versions => [:index, :show, :status_by],
    -                                  :journals => :index,
    +                                  :journals => [:index, :diff],
                                       :queries => :index,
                                       :reports => [:issue_report, :issue_report_details]}
         map.permission :add_issues, {:issues => [:new, :create, :update_form]}
    @@ -85,7 +85,7 @@
       
       map.project_module :time_tracking do |map|
         map.permission :log_time, {:timelog => [:new, :create, :edit, :update]}, :require => :loggedin
    -    map.permission :view_time_entries, :timelog => [:index], :time_entry_reports => [:report]
    +    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 :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
    @@ -229,3 +229,5 @@
     Redmine::WikiFormatting.map do |format|
       format.register :textile, Redmine::WikiFormatting::Textile::Formatter, Redmine::WikiFormatting::Textile::Helper
     end
    +
    +ActionView::Template.register_template_handler :rsb, Redmine::Views::ApiTemplateHandler
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/all-wcprops
    --- a/lib/redmine/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/.svn/all-wcprops	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,19 +1,25 @@
     K 25
     svn:wc:ra_dav:version-url
     V 36
    -/svn/!svn/ver/4406/trunk/lib/redmine
    +/svn/!svn/ver/4993/trunk/lib/redmine
     END
     i18n.rb
     K 25
     svn:wc:ra_dav:version-url
     V 44
    -/svn/!svn/ver/4183/trunk/lib/redmine/i18n.rb
    +/svn/!svn/ver/4894/trunk/lib/redmine/i18n.rb
     END
     pop3.rb
     K 25
     svn:wc:ra_dav:version-url
     V 44
    -/svn/!svn/ver/3330/trunk/lib/redmine/pop3.rb
    +/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
    @@ -31,13 +37,13 @@
     K 25
     svn:wc:ra_dav:version-url
     V 46
    -/svn/!svn/ver/3710/trunk/lib/redmine/themes.rb
    +/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/4349/trunk/lib/redmine/version.rb
    +/svn/!svn/ver/4784/trunk/lib/redmine/version.rb
     END
     imap.rb
     K 25
    @@ -57,36 +63,36 @@
     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
    -access_keys.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 51
    -/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.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
    -menu_manager.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 52
    -/svn/!svn/ver/4406/trunk/lib/redmine/menu_manager.rb
    -END
     utils.rb
     K 25
     svn:wc:ra_dav:version-url
    @@ -111,12 +117,24 @@
     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
    @@ -133,7 +151,7 @@
     K 25
     svn:wc:ra_dav:version-url
     V 52
    -/svn/!svn/ver/3028/trunk/lib/redmine/unified_diff.rb
    +/svn/!svn/ver/4929/trunk/lib/redmine/unified_diff.rb
     END
     notifiable.rb
     K 25
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/entries
    --- a/lib/redmine/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,15 +1,15 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/redmine
     http://redmine.rubyforge.org/svn
     
     
     
    -2010-11-14T16:24:21.989522Z
    -4406
    -jplang
    +2011-03-03T05:51:46.224821Z
    +4993
    +tmaruyama
     
     
     
    @@ -35,10 +35,10 @@
     
     
     
    -2010-09-23T14:37:45.031809Z
    -7905a0773e7d2f6b468fc5b9e107db4d
    -2010-01-17T13:53:13.544777Z
    -3330
    +2011-03-03T11:05:14.000000Z
    +85ff863202dfbf2a6e9447a3bcf7cc06
    +2011-01-22T12:09:07.652831Z
    +4737
     jplang
     has-props
     
    @@ -61,7 +61,7 @@
     
     
     
    -2173
    +2461
     
     themes.rb
     file
    @@ -69,10 +69,10 @@
     
     
     
    -2010-09-23T14:37:45.043748Z
    -209d3f63cbc76795042695c71f6230f1
    -2010-04-30T12:44:19.138265Z
    -3710
    +2011-03-03T11:05:14.000000Z
    +23fd3a13b8bcd6b3e2547e913d5fae18
    +2010-12-22T21:41:08.746858Z
    +4559
     jplang
     has-props
     
    @@ -95,7 +95,7 @@
     
     
     
    -2311
    +3420
     
     imap.rb
     file
    @@ -103,7 +103,7 @@
     
     
     
    -2010-09-23T14:37:45.031809Z
    +2011-03-03T11:05:14.000000Z
     caeedebd5c05aede1d232510d03ad136
     2008-12-31T14:56:30.439880Z
     2220
    @@ -140,7 +140,7 @@
     
     
     
    -2010-09-23T14:37:45.031809Z
    +2011-03-03T11:05:14.000000Z
     ddadcd03b97455adae2451a2140afbf6
     2009-05-30T23:00:22.602473Z
     2776
    @@ -174,7 +174,7 @@
     
     
     
    -2010-09-23T14:37:45.015759Z
    +2011-03-03T11:05:14.000000Z
     41c2852d003d94cb23c231f06be62d12
     2008-01-20T13:07:19.003764Z
     1081
    @@ -202,13 +202,16 @@
     
     1160
     
    +helpers
    +dir
    +
     utils.rb
     file
     
     
     
     
    -2010-09-23T14:37:45.047759Z
    +2011-03-03T11:05:14.000000Z
     d04b071ce8f05b44ca6993c56fea9b1f
     2009-01-04T17:09:25.896068Z
     2234
    @@ -236,16 +239,13 @@
     
     1466
     
    -helpers
    -dir
    -
     access_control.rb
     file
     
     
     
     
    -2010-09-23T14:37:45.015759Z
    +2011-03-03T11:05:14.000000Z
     e7e4c44515553e36bffa6e8f8960080b
     2008-09-25T18:51:03.022592Z
     1907
    @@ -279,7 +279,7 @@
     
     
     
    -2010-09-23T14:37:45.043748Z
    +2011-03-03T11:05:14.000000Z
     6f968bcc4f81562e9cbddb02ebc62601
     2010-02-17T20:05:51.124365Z
     3444
    @@ -310,13 +310,47 @@
     core_ext
     dir
     
    +configuration.rb
    +file
    +
    +
    +
    +
    +2011-03-03T11:40:18.000000Z
    +2f47dda69333c012a55496a3792c369e
    +2011-02-25T14:30:05.998365Z
    +4949
    +jplang
    +has-props
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +3639
    +
     about.rb
     file
     
     
     
     
    -2010-09-23T14:37:45.015759Z
    +2011-03-03T11:05:14.000000Z
     91ed592a8419f1bec48ba880c7a86e29
     2009-05-25T19:10:26.065563Z
     2766
    @@ -350,7 +384,7 @@
     
     
     
    -2010-09-23T14:37:45.043748Z
    +2011-03-03T11:05:14.000000Z
     4a40844a6cd11aa7409bc8f4e9a2c74e
     2010-03-28T11:30:48.135356Z
     3619
    @@ -384,7 +418,7 @@
     
     
     
    -2010-11-19T13:04:51.416932Z
    +2011-03-03T11:05:14.000000Z
     cfdd5556d40422dd9610d2124a2fefac
     2010-09-28T21:09:06.467392Z
     4222
    @@ -418,11 +452,11 @@
     
     
     
    -2010-11-19T13:04:51.412966Z
    -f1b6f1af024068879494612c2494e865
    -2010-09-26T17:13:52.794850Z
    -4183
    -edavis10
    +2011-03-03T11:40:18.000000Z
    +cc684405103aabd5f4aea0c21fd7c732
    +2011-02-20T14:56:37.399906Z
    +4894
    +jplang
     has-props
     
     
    @@ -444,18 +478,52 @@
     
     
     
    -2378
    +2255
     
     scm
     dir
     
    +safe_attributes.rb
    +file
    +
    +
    +
    +
    +2011-03-03T11:05:14.000000Z
    +7f659c02de1ea89806beda1772dc4d36
    +2010-12-12T13:11:53.259618Z
    +4491
    +jplang
    +has-props
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +2579
    +
     platform.rb
     file
     
     
     
     
    -2010-09-23T14:37:45.031809Z
    +2011-03-03T11:05:14.000000Z
     68165c83be56d3204c582958d933ff0a
     2008-08-25T11:01:37.715099Z
     1753
    @@ -483,13 +551,47 @@
     
     1009
     
    +version.rb
    +file
    +
    +
    +
    +
    +2011-03-03T11:05:14.000000Z
    +c6c19bce5ff3b4298316ffb112478868
    +2011-01-30T14:37:23.564601Z
    +4784
    +jplang
    +has-props
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +1056
    +
     custom_field_format.rb
     file
     
     
     
     
    -2010-09-23T14:37:45.023772Z
    +2011-03-03T11:05:14.000000Z
     7fd1fcfb204480b0e9903fd03c53a563
     2010-04-16T15:34:05.970144Z
     3675
    @@ -517,47 +619,13 @@
     
     2761
     
    -version.rb
    -file
    -
    -
    -
    -
    -2010-11-19T13:04:51.412966Z
    -8241f5642ac2d1aaa38fc1625f8816e6
    -2010-11-01T00:37:19.679270Z
    -4349
    -edavis10
    -has-props
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -1056
    -
     mime_type.rb
     file
     
     
     
     
    -2010-09-23T14:37:45.031809Z
    +2011-03-03T11:05:14.000000Z
     dbfad515b1d5c277d2f8e9d67233185e
     2009-12-29T13:28:30.604471Z
     3258
    @@ -585,10 +653,10 @@
     
     3498
     
    -views
    +wiki_formatting
     dir
     
    -wiki_formatting
    +views
     dir
     
     activity.rb
    @@ -597,7 +665,7 @@
     
     
     
    -2010-09-23T14:37:45.015759Z
    +2011-03-03T11:05:14.000000Z
     88435997a6d77548eab82526df38caf1
     2008-07-27T18:38:31.746909Z
     1702
    @@ -631,7 +699,7 @@
     
     
     
    -2010-09-23T14:37:45.047759Z
    +2011-03-03T11:05:14.000000Z
     648c40cc515e97d063d2c2f218cbbc23
     2010-02-17T20:47:50.603139Z
     3446
    @@ -665,7 +733,7 @@
     
     
     
    -2010-11-19T13:04:51.412966Z
    +2011-03-03T11:05:14.000000Z
     81bc46012d5a0067e18e08bada197d8c
     2010-10-25T23:32:01.793182Z
     4293
    @@ -699,7 +767,7 @@
     
     
     
    -2010-11-19T13:04:51.412966Z
    +2011-03-03T11:05:14.000000Z
     7f3739a749929e1f65efb292620d361b
     2010-11-14T16:24:21.989522Z
     4406
    @@ -733,7 +801,7 @@
     
     
     
    -2010-11-19T13:04:51.416932Z
    +2011-03-03T11:05:14.000000Z
     dfacee092edce74d74e8ea7d7a54aeba
     2010-11-14T16:24:21.989522Z
     4406
    @@ -767,7 +835,7 @@
     
     
     
    -2010-09-23T14:37:45.019747Z
    +2011-03-03T11:05:14.000000Z
     7632bcee464a923f5aa7c9eba29f8081
     2008-04-26T11:59:51.889210Z
     1361
    @@ -795,16 +863,16 @@
     
     77
     
    -unified_diff.rb
    +ciphering.rb
     file
     
     
     
     
    -2010-09-23T14:37:45.047759Z
    -69c22a4064f90e2ce460a0c9013c7cd0
    -2009-11-11T13:25:53.648186Z
    -3028
    +2011-03-03T11:40:18.000000Z
    +763ba2f765c62f378371f2472679c464
    +2011-02-26T13:09:25.657748Z
    +4950
     jplang
     has-props
     
    @@ -827,8 +895,42 @@
     
     
     
    -5259
    +2933
     
     default_data
     dir
     
    +unified_diff.rb
    +file
    +
    +
    +
    +
    +2011-03-03T11:40:18.000000Z
    +561d23da6665fb790120f9d59962fb78
    +2011-02-23T07:03:45.049119Z
    +4929
    +tmaruyama
    +has-props
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +5678
    +
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/prop-base/ciphering.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/.svn/prop-base/ciphering.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,5 @@
    +K 13
    +svn:eol-style
    +V 6
    +native
    +END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/prop-base/configuration.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/.svn/prop-base/configuration.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,5 @@
    +K 13
    +svn:eol-style
    +V 6
    +native
    +END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/prop-base/safe_attributes.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/.svn/prop-base/safe_attributes.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,5 @@
    +K 13
    +svn:eol-style
    +V 6
    +native
    +END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/ciphering.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/.svn/text-base/ciphering.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,95 @@
    +# 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 Redmine
    +  module Ciphering
    +    def self.included(base) 
    +      base.extend ClassMethods
    +    end
    +    
    +    class << self
    +      def encrypt_text(text)
    +        if cipher_key.blank?
    +          text
    +        else
    +          c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
    +          iv = c.random_iv
    +          c.encrypt
    +          c.key = cipher_key
    +          c.iv = iv
    +          e = c.update(text.to_s)
    +          e << c.final
    +          "aes-256-cbc:" + [e, iv].map {|v| Base64.encode64(v).strip}.join('--')
    +        end
    +      end
    +      
    +      def decrypt_text(text)
    +        if text && match = text.match(/\Aaes-256-cbc:(.+)\Z/)
    +          text = match[1]
    +          c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
    +          e, iv = text.split("--").map {|s| Base64.decode64(s)}
    +          c.decrypt
    +          c.key = cipher_key
    +          c.iv = iv
    +          d = c.update(e)
    +          d << c.final
    +        else
    +          text
    +        end
    +      end
    +      
    +      def cipher_key
    +        key = Redmine::Configuration['database_cipher_key'].to_s
    +        key.blank? ? nil : Digest::SHA256.hexdigest(key)
    +      end
    +    end
    +  
    +    module ClassMethods
    +      def encrypt_all(attribute)
    +        transaction do
    +          all.each do |object|
    +            clear = object.send(attribute)
    +            object.send "#{attribute}=", clear
    +            raise(ActiveRecord::Rollback) unless object.save(false)
    +          end
    +        end ? true : false
    +      end
    +      
    +      def decrypt_all(attribute)
    +        transaction do
    +          all.each do |object|
    +            clear = object.send(attribute)
    +            object.write_attribute attribute, clear
    +            raise(ActiveRecord::Rollback) unless object.save(false)
    +          end
    +        end
    +      end ? true : false
    +    end
    +    
    +    private
    +    
    +    # Returns the value of the given ciphered attribute
    +    def read_ciphered_attribute(attribute)
    +      Redmine::Ciphering.decrypt_text(read_attribute(attribute))
    +    end
    +    
    +    # Sets the value of the given ciphered attribute
    +    def write_ciphered_attribute(attribute, value)
    +      write_attribute(attribute, Redmine::Ciphering.encrypt_text(value))
    +    end
    +  end
    +end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/configuration.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/.svn/text-base/configuration.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,107 @@
    +# 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 Redmine
    +  module Configuration
    +    
    +    # Configuration default values
    +    @defaults = {
    +      'email_delivery' => nil
    +    }
    +    
    +    @config = nil
    +    
    +    class << self
    +      # Loads the Redmine configuration file
    +      # Valid options:
    +      # * :file: the configuration file to load (default: config/configuration.yml)
    +      # * :env: the environment to load the configuration for (default: Rails.env) 
    +      def load(options={})
    +        filename = options[:file] || File.join(Rails.root, 'config', 'configuration.yml')
    +        env = options[:env] || Rails.env
    +        
    +        @config = @defaults.dup
    +        
    +        load_deprecated_email_configuration(env)
    +        if File.file?(filename)
    +          @config.merge!(load_from_yaml(filename, env))
    +        end
    +        
    +        # Compatibility mode for those who copy email.yml over configuration.yml
    +        %w(delivery_method smtp_settings sendmail_settings).each do |key|
    +          if value = @config.delete(key)
    +            @config['email_delivery'] ||= {}
    +            @config['email_delivery'][key] = value
    +          end
    +        end
    +        
    +        if @config['email_delivery']
    +          ActionMailer::Base.perform_deliveries = true
    +          @config['email_delivery'].each do |k, v|
    +            v.symbolize_keys! if v.respond_to?(:symbolize_keys!)
    +            ActionMailer::Base.send("#{k}=", v)
    +          end
    +        end
    +          
    +        @config
    +      end
    +      
    +      # Returns a configuration setting
    +      def [](name)
    +        load unless @config
    +        @config[name]
    +      end
    +      
    +      # Yields a block with the specified hash configuration settings
    +      def with(settings)
    +        settings.stringify_keys!
    +        load unless @config
    +        was = settings.keys.inject({}) {|h,v| h[v] = @config[v]; h}
    +        @config.merge! settings
    +        yield if block_given?
    +        @config.merge! was
    +      end
    +      
    +      private
    +      
    +      def load_from_yaml(filename, env)
    +        yaml = YAML::load_file(filename)
    +        conf = {}
    +        if yaml.is_a?(Hash)
    +          if yaml['default']
    +            conf.merge!(yaml['default'])
    +          end
    +          if yaml[env]
    +            conf.merge!(yaml[env])
    +          end
    +        else
    +          $stderr.puts "#{filename} is not a valid Redmine configuration file"
    +          exit 1
    +        end
    +        conf
    +      end
    +      
    +      def load_deprecated_email_configuration(env)
    +        deprecated_email_conf = File.join(Rails.root, 'config', 'email.yml')
    +        if File.file?(deprecated_email_conf)
    +          warn "Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting."
    +          @config.merge!({'email_delivery' => load_from_yaml(deprecated_email_conf, env)})
    +        end
    +      end
    +    end
    +  end
    +end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/i18n.rb.svn-base
    --- a/lib/redmine/.svn/text-base/i18n.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/.svn/text-base/i18n.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -37,7 +37,7 @@
     
         def format_date(date)
           return nil unless date
    -      Setting.date_format.blank? ? ::I18n.l(date.to_date, :count => date.strftime('%d')) : date.strftime(Setting.date_format)
    +      Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format)
         end
         
         def format_time(time, include_date = true)
    @@ -45,8 +45,8 @@
           time = time.to_time if time.is_a?(String)
           zone = User.current.time_zone
           local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time)
    -      Setting.time_format.blank? ? ::I18n.l(local, :count => local.strftime('%d'), :format => (include_date ? :default : :time)) : 
    -                                   ((include_date ? "#{format_date(time)} " : "") + "#{local.strftime(Setting.time_format)}")
    +      (include_date ? "#{format_date(local)} " : "") +
    +        (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format))
         end
     
         def day_name(day)
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/pop3.rb.svn-base
    --- a/lib/redmine/.svn/text-base/pop3.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/.svn/text-base/pop3.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -27,30 +27,36 @@
             delete_unprocessed = (pop_options[:delete_unprocessed].to_s == '1')
     
             pop = Net::POP3.APOP(apop).new(host,port)
    -        puts "Connecting to #{host}..."
    +        logger.debug "Connecting to #{host}..." if logger && logger.debug?
             pop.start(pop_options[:username], pop_options[:password]) do |pop_session|
               if pop_session.mails.empty?
    -            puts "No email to process"
    +            logger.debug "No email to process" if logger && logger.debug?
               else
    -            puts "#{pop_session.mails.size} email(s) to process..."
    +            logger.debug "#{pop_session.mails.size} email(s) to process..." if logger && logger.debug?
                 pop_session.each_mail do |msg|
                   message = msg.pop
                   message_id = (message =~ /^Message-ID: (.*)/ ? $1 : '').strip
                   if MailHandler.receive(message, options)
                     msg.delete
    -                puts "--> Message #{message_id} processed and deleted from the server"
    +                logger.debug "--> Message #{message_id} processed and deleted from the server" if logger && logger.debug?
                   else
                     if delete_unprocessed
                       msg.delete
    -                  puts "--> Message #{message_id} NOT processed and deleted from the server"
    +                  logger.debug "--> Message #{message_id} NOT processed and deleted from the server" if logger && logger.debug?
                     else
    -                  puts "--> Message #{message_id} NOT processed and left on the server"
    +                  logger.debug "--> Message #{message_id} NOT processed and left on the server" if logger && logger.debug?
                     end
                   end
                 end
               end
             end
           end
    +      
    +      private
    +
    +      def logger
    +        RAILS_DEFAULT_LOGGER
    +      end
         end
       end
     end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/safe_attributes.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/.svn/text-base/safe_attributes.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,75 @@
    +# 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.
    +
    +module Redmine
    +  module SafeAttributes
    +    def self.included(base)
    +      base.extend(ClassMethods)
    +    end
    +    
    +    module ClassMethods
    +      # Declares safe attributes
    +      # An optional Proc can be given for conditional inclusion
    +      #
    +      # Example:
    +      #   safe_attributes 'title', 'pages'
    +      #   safe_attributes 'isbn', :if => {|book, user| book.author == user}
    +      def safe_attributes(*args)
    +        @safe_attributes ||= []
    +        if args.empty?
    +          @safe_attributes
    +        else
    +          options = args.last.is_a?(Hash) ? args.pop : {}
    +          @safe_attributes << [args, options]
    +        end
    +      end
    +    end
    +    
    +    # Returns an array that can be safely set by user or current user
    +    #
    +    # Example:
    +    #   book.safe_attributes # => ['title', 'pages']
    +    #   book.safe_attributes(book.author) # => ['title', 'pages', 'isbn']
    +    def safe_attribute_names(user=User.current)
    +      names = []
    +      self.class.safe_attributes.collect do |attrs, options|
    +        if options[:if].nil? || options[:if].call(self, user)
    +          names += attrs.collect(&:to_s)
    +        end
    +      end
    +      names.uniq
    +    end
    +    
    +    # Returns a hash with unsafe attributes removed
    +    # from the given attrs hash
    +    # 
    +    # Example:
    +    #   book.delete_unsafe_attributes({'title' => 'My book', 'foo' => 'bar'})
    +    #   # => {'title' => 'My book'}
    +    def delete_unsafe_attributes(attrs, user=User.current)
    +      safe = safe_attribute_names(user)
    +      attrs.dup.delete_if {|k,v| !safe.include?(k)}
    +    end
    +    
    +    # Sets attributes from attrs that are safe
    +    # attrs is a Hash with string keys
    +    def safe_attributes=(attrs, user=User.current)
    +      return unless attrs.is_a?(Hash)
    +      self.attributes = delete_unsafe_attributes(attrs, user)
    +    end
    +  end
    +end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/themes.rb.svn-base
    --- a/lib/redmine/.svn/text-base/themes.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/.svn/text-base/themes.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -29,30 +29,65 @@
         end
         
         # Return theme for given id, or nil if it's not found
    -    def self.theme(id)
    -      themes.find {|t| t.id == id}
    +    def self.theme(id, options={})
    +      return nil if id.blank?
    +      
    +      found = themes.find {|t| t.id == id}
    +      if found.nil? && options[:rescan] != false
    +        rescan
    +        found = theme(id, :rescan => false)
    +      end
    +      found
         end
       
         # Class used to represent a theme
         class Theme
    -      attr_reader :name, :dir, :stylesheets
    +      attr_reader :path, :name, :dir
           
           def initialize(path)
    +        @path = path
             @dir = File.basename(path)
             @name = @dir.humanize
    -        @stylesheets = Dir.glob("#{path}/stylesheets/*.css").collect {|f| File.basename(f).gsub(/\.css$/, '')}
    +        @stylesheets = nil
    +        @javascripts = nil
           end
           
           # Directory name used as the theme id
           def id; dir end
    -
    +      
    +      def ==(theme)
    +        theme.is_a?(Theme) && theme.dir == dir
    +      end
    +      
           def <=>(theme)
             name <=> theme.name
           end
    +      
    +      def stylesheets
    +        @stylesheets ||= assets("stylesheets", "css")
    +      end
    +      
    +      def javascripts
    +        @javascripts ||= assets("javascripts", "js")
    +      end
    +      
    +      def stylesheet_path(source)
    +        "/themes/#{dir}/stylesheets/#{source}"
    +      end
    +      
    +      def javascript_path(source)
    +        "/themes/#{dir}/javascripts/#{source}"
    +      end
    +      
    +      private
    +      
    +      def assets(dir, ext)
    +        Dir.glob("#{path}/#{dir}/*.#{ext}").collect {|f| File.basename(f).gsub(/\.#{ext}$/, '')}
    +      end
         end
         
         private
    -        
    +    
         def self.scan_themes
           dirs = Dir.glob("#{Rails.public_path}/themes/*").select do |f|
             # A theme should at least override application.css
    @@ -64,13 +99,29 @@
     end
     
     module ApplicationHelper
    +  def current_theme
    +    unless instance_variable_defined?(:@current_theme)
    +      @current_theme = Redmine::Themes.theme(Setting.ui_theme)
    +    end
    +    @current_theme
    +  end
    +  
       def stylesheet_path(source)
    -    @current_theme ||= Redmine::Themes.theme(Setting.ui_theme)
    -    super((@current_theme && @current_theme.stylesheets.include?(source)) ?
    -      "/themes/#{@current_theme.dir}/stylesheets/#{source}" : source)
    +    if current_theme && current_theme.stylesheets.include?(source)
    +      super current_theme.stylesheet_path(source)
    +    else
    +      super
    +    end
       end
       
       def path_to_stylesheet(source)
         stylesheet_path source
       end
    +  
    +  # Returns the header tags for the current theme
    +  def heads_for_theme
    +    if current_theme && current_theme.javascripts.include?('theme')
    +      javascript_include_tag current_theme.javascript_path('theme')
    +    end
    +  end
     end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/unified_diff.rb.svn-base
    --- a/lib/redmine/.svn/text-base/unified_diff.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/.svn/text-base/unified_diff.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -22,13 +22,21 @@
           options.assert_valid_keys(:type, :max_lines)
           diff = diff.split("\n") if diff.is_a?(String)
           diff_type = options[:type] || 'inline'
    -      
           lines = 0
           @truncated = false
           diff_table = DiffTable.new(diff_type)
           diff.each do |line|
    +        line_encoding = nil
    +        if line.respond_to?(:force_encoding)
    +          line_encoding = line.encoding
    +          # TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII
    +          #       In Japan, diffrence between file path encoding
    +          #       and file contents encoding is popular.
    +          line.force_encoding('ASCII-8BIT')
    +        end
             unless diff_table.add_line line
    -          self << diff_table if diff_table.length > 1
    +          line.force_encoding(line_encoding) if line_encoding
    +          self << diff_table if diff_table.length > 0
               diff_table = DiffTable.new(diff_type)
             end
             lines += 1
    @@ -40,7 +48,7 @@
           self << diff_table unless diff_table.empty?
           self
         end
    -    
    +
         def truncated?; @truncated; end
       end
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/.svn/text-base/version.rb.svn-base
    --- a/lib/redmine/.svn/text-base/version.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/.svn/text-base/version.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -3,14 +3,14 @@
     module Redmine
       module VERSION #:nodoc:
         MAJOR = 1
    -    MINOR = 0
    -    TINY  = 3
    +    MINOR = 1
    +    TINY  = 1
         
         # Branch values:
         # * official release: nil
         # * stable branch:    stable
         # * trunk:            devel
    -    BRANCH = 'devel'
    +    BRANCH = 'stable'
     
         def self.revision
           revision = nil
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/activity/.svn/all-wcprops
    --- a/lib/redmine/activity/.svn/all-wcprops	Tue Feb 22 16:48:15 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 45
    -/svn/!svn/ver/3829/trunk/lib/redmine/activity
    -END
    -fetcher.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 56
    -/svn/!svn/ver/3829/trunk/lib/redmine/activity/fetcher.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/activity/.svn/entries
    --- a/lib/redmine/activity/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/activity/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/redmine/activity
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:45.019747Z
    +2011-03-03T11:05:14.000000Z
     20597949bb74e98a3ffc97bc8a3ead7d
     2010-07-06T02:22:03.226147Z
     3829
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/ciphering.rb
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/ciphering.rb	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,95 @@
    +# 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 Redmine
    +  module Ciphering
    +    def self.included(base) 
    +      base.extend ClassMethods
    +    end
    +    
    +    class << self
    +      def encrypt_text(text)
    +        if cipher_key.blank?
    +          text
    +        else
    +          c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
    +          iv = c.random_iv
    +          c.encrypt
    +          c.key = cipher_key
    +          c.iv = iv
    +          e = c.update(text.to_s)
    +          e << c.final
    +          "aes-256-cbc:" + [e, iv].map {|v| Base64.encode64(v).strip}.join('--')
    +        end
    +      end
    +      
    +      def decrypt_text(text)
    +        if text && match = text.match(/\Aaes-256-cbc:(.+)\Z/)
    +          text = match[1]
    +          c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
    +          e, iv = text.split("--").map {|s| Base64.decode64(s)}
    +          c.decrypt
    +          c.key = cipher_key
    +          c.iv = iv
    +          d = c.update(e)
    +          d << c.final
    +        else
    +          text
    +        end
    +      end
    +      
    +      def cipher_key
    +        key = Redmine::Configuration['database_cipher_key'].to_s
    +        key.blank? ? nil : Digest::SHA256.hexdigest(key)
    +      end
    +    end
    +  
    +    module ClassMethods
    +      def encrypt_all(attribute)
    +        transaction do
    +          all.each do |object|
    +            clear = object.send(attribute)
    +            object.send "#{attribute}=", clear
    +            raise(ActiveRecord::Rollback) unless object.save(false)
    +          end
    +        end ? true : false
    +      end
    +      
    +      def decrypt_all(attribute)
    +        transaction do
    +          all.each do |object|
    +            clear = object.send(attribute)
    +            object.write_attribute attribute, clear
    +            raise(ActiveRecord::Rollback) unless object.save(false)
    +          end
    +        end
    +      end ? true : false
    +    end
    +    
    +    private
    +    
    +    # Returns the value of the given ciphered attribute
    +    def read_ciphered_attribute(attribute)
    +      Redmine::Ciphering.decrypt_text(read_attribute(attribute))
    +    end
    +    
    +    # Sets the value of the given ciphered attribute
    +    def write_ciphered_attribute(attribute, value)
    +      write_attribute(attribute, Redmine::Ciphering.encrypt_text(value))
    +    end
    +  end
    +end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/configuration.rb
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/configuration.rb	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,107 @@
    +# 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 Redmine
    +  module Configuration
    +    
    +    # Configuration default values
    +    @defaults = {
    +      'email_delivery' => nil
    +    }
    +    
    +    @config = nil
    +    
    +    class << self
    +      # Loads the Redmine configuration file
    +      # Valid options:
    +      # * :file: the configuration file to load (default: config/configuration.yml)
    +      # * :env: the environment to load the configuration for (default: Rails.env) 
    +      def load(options={})
    +        filename = options[:file] || File.join(Rails.root, 'config', 'configuration.yml')
    +        env = options[:env] || Rails.env
    +        
    +        @config = @defaults.dup
    +        
    +        load_deprecated_email_configuration(env)
    +        if File.file?(filename)
    +          @config.merge!(load_from_yaml(filename, env))
    +        end
    +        
    +        # Compatibility mode for those who copy email.yml over configuration.yml
    +        %w(delivery_method smtp_settings sendmail_settings).each do |key|
    +          if value = @config.delete(key)
    +            @config['email_delivery'] ||= {}
    +            @config['email_delivery'][key] = value
    +          end
    +        end
    +        
    +        if @config['email_delivery']
    +          ActionMailer::Base.perform_deliveries = true
    +          @config['email_delivery'].each do |k, v|
    +            v.symbolize_keys! if v.respond_to?(:symbolize_keys!)
    +            ActionMailer::Base.send("#{k}=", v)
    +          end
    +        end
    +          
    +        @config
    +      end
    +      
    +      # Returns a configuration setting
    +      def [](name)
    +        load unless @config
    +        @config[name]
    +      end
    +      
    +      # Yields a block with the specified hash configuration settings
    +      def with(settings)
    +        settings.stringify_keys!
    +        load unless @config
    +        was = settings.keys.inject({}) {|h,v| h[v] = @config[v]; h}
    +        @config.merge! settings
    +        yield if block_given?
    +        @config.merge! was
    +      end
    +      
    +      private
    +      
    +      def load_from_yaml(filename, env)
    +        yaml = YAML::load_file(filename)
    +        conf = {}
    +        if yaml.is_a?(Hash)
    +          if yaml['default']
    +            conf.merge!(yaml['default'])
    +          end
    +          if yaml[env]
    +            conf.merge!(yaml[env])
    +          end
    +        else
    +          $stderr.puts "#{filename} is not a valid Redmine configuration file"
    +          exit 1
    +        end
    +        conf
    +      end
    +      
    +      def load_deprecated_email_configuration(env)
    +        deprecated_email_conf = File.join(Rails.root, 'config', 'email.yml')
    +        if File.file?(deprecated_email_conf)
    +          warn "Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting."
    +          @config.merge!({'email_delivery' => load_from_yaml(deprecated_email_conf, env)})
    +        end
    +      end
    +    end
    +  end
    +end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/core_ext/.svn/all-wcprops
    --- a/lib/redmine/core_ext/.svn/all-wcprops	Tue Feb 22 16:48:15 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 45
    -/svn/!svn/ver/2912/trunk/lib/redmine/core_ext
    -END
    -string.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 55
    -/svn/!svn/ver/2844/trunk/lib/redmine/core_ext/string.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/core_ext/.svn/entries
    --- a/lib/redmine/core_ext/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/core_ext/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext
     http://redmine.rubyforge.org/svn
     
    @@ -35,7 +35,7 @@
     
     
     
    -2010-09-23T14:37:45.019747Z
    +2011-03-03T11:05:14.000000Z
     fcafa1cc4149d3a5de82816c61b7fa02
     2009-08-17T16:32:24.020380Z
     2844
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/core_ext/string/.svn/all-wcprops
    --- a/lib/redmine/core_ext/string/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    @@ -1,17 +0,0 @@
    -K 25
    -svn:wc:ra_dav:version-url
    -V 52
    -/svn/!svn/ver/2912/trunk/lib/redmine/core_ext/string
    -END
    -inflections.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 67
    -/svn/!svn/ver/2844/trunk/lib/redmine/core_ext/string/inflections.rb
    -END
    -conversions.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 67
    -/svn/!svn/ver/2912/trunk/lib/redmine/core_ext/string/conversions.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/core_ext/string/.svn/entries
    --- a/lib/redmine/core_ext/string/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/core_ext/string/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext/string
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:45.023772Z
    +2011-03-03T11:05:14.000000Z
     e614ecdb2fac85cd9f8808e7cff7f9de
     2009-08-17T16:32:24.020380Z
     2844
    @@ -66,7 +66,7 @@
     
     
     
    -2010-09-23T14:37:45.023772Z
    +2011-03-03T11:05:14.000000Z
     1cc26c5de967944da3a6b07331512637
     2009-10-10T15:09:19.510095Z
     2912
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/default_data/.svn/all-wcprops
    --- a/lib/redmine/default_data/.svn/all-wcprops	Tue Feb 22 16:48:15 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 49
    -/svn/!svn/ver/3820/trunk/lib/redmine/default_data
    -END
    -loader.rb
    -K 25
    -svn:wc:ra_dav:version-url
    -V 59
    -/svn/!svn/ver/3820/trunk/lib/redmine/default_data/loader.rb
    -END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/default_data/.svn/entries
    --- a/lib/redmine/default_data/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/default_data/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,7 +1,7 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/redmine/default_data
     http://redmine.rubyforge.org/svn
     
    @@ -32,7 +32,7 @@
     
     
     
    -2010-09-23T14:37:45.023772Z
    +2011-03-03T11:05:14.000000Z
     41958e843a8ba03548eed089e8002549
     2010-06-30T01:55:44.694582Z
     3820
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/export/.svn/all-wcprops
    --- a/lib/redmine/export/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/export/.svn/all-wcprops	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,11 +1,11 @@
     K 25
     svn:wc:ra_dav:version-url
     V 43
    -/svn/!svn/ver/4104/trunk/lib/redmine/export
    +/svn/!svn/ver/4736/trunk/lib/redmine/export
     END
     pdf.rb
     K 25
     svn:wc:ra_dav:version-url
     V 50
    -/svn/!svn/ver/4104/trunk/lib/redmine/export/pdf.rb
    +/svn/!svn/ver/4736/trunk/lib/redmine/export/pdf.rb
     END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/export/.svn/entries
    --- a/lib/redmine/export/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/export/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,15 +1,15 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/redmine/export
     http://redmine.rubyforge.org/svn
     
     
     
    -2010-09-20T02:55:20.180218Z
    -4104
    -edavis10
    +2011-01-22T11:57:02.732751Z
    +4736
    +jplang
     
     
     
    @@ -32,11 +32,11 @@
     
     
     
    -2010-09-24T12:48:29.791863Z
    -aa6093490555bdd119ba8f1d34cab080
    -2010-09-20T02:55:20.180218Z
    -4104
    -edavis10
    +2011-03-03T11:05:14.000000Z
    +b8bd24e9575d51f0c49f8245a5d593a2
    +2011-01-22T11:57:02.732751Z
    +4736
    +jplang
     has-props
     
     
    @@ -58,5 +58,5 @@
     
     
     
    -10771
    +10786
     
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/export/.svn/text-base/pdf.rb.svn-base
    --- a/lib/redmine/export/.svn/text-base/pdf.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/export/.svn/text-base/pdf.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -255,7 +255,7 @@
             pdf.SetFontStyle('B',9)
             pdf.Cell(35,5, l(:field_description) + ":")
             pdf.SetFontStyle('',9)
    -        pdf.MultiCell(155,5, issue.description,"BR")
    +        pdf.MultiCell(155,5, issue.description.to_s,"BR")
             
             pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
             pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
    @@ -271,7 +271,7 @@
                 pdf.Ln
                 unless changeset.comments.blank?
                   pdf.SetFontStyle('',8)
    -              pdf.MultiCell(190,5, changeset.comments)
    +              pdf.MultiCell(190,5, changeset.comments.to_s)
                 end   
                 pdf.Ln
               end
    @@ -291,7 +291,7 @@
               end
               if journal.notes?
                 pdf.SetFontStyle('',8)
    -            pdf.MultiCell(190,5, journal.notes)
    +            pdf.MultiCell(190,5, journal.notes.to_s)
               end   
               pdf.Ln
             end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/export/pdf.rb
    --- a/lib/redmine/export/pdf.rb	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/export/pdf.rb	Thu Mar 03 12:11:53 2011 +0000
    @@ -255,7 +255,7 @@
             pdf.SetFontStyle('B',9)
             pdf.Cell(35,5, l(:field_description) + ":")
             pdf.SetFontStyle('',9)
    -        pdf.MultiCell(155,5, issue.description,"BR")
    +        pdf.MultiCell(155,5, issue.description.to_s,"BR")
             
             pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
             pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
    @@ -271,7 +271,7 @@
                 pdf.Ln
                 unless changeset.comments.blank?
                   pdf.SetFontStyle('',8)
    -              pdf.MultiCell(190,5, changeset.comments)
    +              pdf.MultiCell(190,5, changeset.comments.to_s)
                 end   
                 pdf.Ln
               end
    @@ -291,7 +291,7 @@
               end
               if journal.notes?
                 pdf.SetFontStyle('',8)
    -            pdf.MultiCell(190,5, journal.notes)
    +            pdf.MultiCell(190,5, journal.notes.to_s)
               end   
               pdf.Ln
             end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/helpers/.svn/all-wcprops
    --- a/lib/redmine/helpers/.svn/all-wcprops	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/helpers/.svn/all-wcprops	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,13 +1,19 @@
     K 25
     svn:wc:ra_dav:version-url
     V 44
    -/svn/!svn/ver/4392/trunk/lib/redmine/helpers
    +/svn/!svn/ver/4968/trunk/lib/redmine/helpers
     END
     gantt.rb
     K 25
     svn:wc:ra_dav:version-url
     V 53
    -/svn/!svn/ver/4392/trunk/lib/redmine/helpers/gantt.rb
    +/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
     END
     calendar.rb
     K 25
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/helpers/.svn/entries
    --- a/lib/redmine/helpers/.svn/entries	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/helpers/.svn/entries	Thu Mar 03 12:11:53 2011 +0000
    @@ -1,14 +1,14 @@
     10
     
     dir
    -4411
    +4993
     http://redmine.rubyforge.org/svn/trunk/lib/redmine/helpers
     http://redmine.rubyforge.org/svn
     
     
     
    -2010-11-11T13:44:23.942520Z
    -4392
    +2011-02-28T20:23:28.847227Z
    +4968
     jplang
     
     
    @@ -32,10 +32,10 @@
     
     
     
    -2010-11-19T13:04:51.408930Z
    -3c093f4a7147fe4ebdbaed2749d602f1
    -2010-11-11T13:44:23.942520Z
    -4392
    +2011-03-03T11:40:18.000000Z
    +b06b1d003a56093679e3004b619b0e04
    +2011-02-28T20:23:28.847227Z
    +4968
     jplang
     has-props
     
    @@ -58,7 +58,41 @@
     
     
     
    -40744
    +32380
    +
    +diff.rb
    +file
    +
    +
    +
    +
    +2011-03-03T11:40:18.000000Z
    +a3487dfca2baab10aacea141b7c0fc5f
    +2011-02-27T12:50:47.369941Z
    +4953
    +jplang
    +has-props
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +2408
     
     calendar.rb
     file
    @@ -66,7 +100,7 @@
     
     
     
    -2010-09-23T14:37:45.027790Z
    +2011-03-03T11:05:14.000000Z
     0a7d81755cf7c1519d4b4c1d84712139
     2009-12-13T04:06:55.726600Z
     3166
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/helpers/.svn/prop-base/diff.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/helpers/.svn/prop-base/diff.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,5 @@
    +K 13
    +svn:eol-style
    +V 6
    +native
    +END
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/helpers/.svn/text-base/diff.rb.svn-base
    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    +++ b/lib/redmine/helpers/.svn/text-base/diff.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -0,0 +1,72 @@
    +# 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 Redmine
    +  module Helpers
    +    class Diff
    +      include ERB::Util
    +      include ActionView::Helpers::TagHelper
    +      include ActionView::Helpers::TextHelper
    +      attr_reader :diff, :words
    +      
    +      def initialize(content_to, content_from)
    +        @words = content_to.to_s.split(/(\s+)/)
    +        @words = @words.select {|word| word != ' '}
    +        words_from = content_from.to_s.split(/(\s+)/)
    +        words_from = words_from.select {|word| word != ' '}    
    +        @diff = words_from.diff @words
    +      end
    +  
    +      def to_html
    +        words = self.words.collect{|word| h(word)}
    +        words_add = 0
    +        words_del = 0
    +        dels = 0
    +        del_off = 0
    +        diff.diffs.each do |diff|
    +          add_at = nil
    +          add_to = nil
    +          del_at = nil
    +          deleted = ""      
    +          diff.each do |change|
    +            pos = change[1]
    +            if change[0] == "+"
    +              add_at = pos + dels unless add_at
    +              add_to = pos + dels
    +              words_add += 1
    +            else
    +              del_at = pos unless del_at
    +              deleted << ' ' + h(change[2])
    +              words_del  += 1
    +            end
    +          end
    +          if add_at
    +            words[add_at] = '' + words[add_at]
    +            words[add_to] = words[add_to] + ''
    +          end
    +          if del_at
    +            words.insert del_at - del_off + dels + words_add, '' + deleted + ''
    +            dels += 1
    +            del_off += words_del
    +            words_del = 0
    +          end
    +        end
    +        words.join(' ')
    +      end
    +    end
    +  end
    +end
    diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base
    --- a/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base	Tue Feb 22 16:48:15 2011 +0000
    +++ b/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base	Thu Mar 03 12:11:53 2011 +0000
    @@ -34,7 +34,7 @@
             end
           end
     
    -      attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months
    +      attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months, :truncated, :max_rows
           attr_accessor :query
           attr_accessor :project
           attr_accessor :view
    @@ -67,6 +67,19 @@
             
             @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]
    +        else
    +          @max_rows = Setting.gantt_items_limit.blank? ? nil : Setting.gantt_items_limit.to_i
    +        end
           end
     
           def common_params
    @@ -88,13 +101,17 @@
                 ### Extracted from the HTML view/helpers
           # Returns the number of rows that will be rendered on the Gantt chart
           def number_of_rows
    -        if @project
    -          return number_of_rows_on_project(@project)
    +        return @number_of_rows if @number_of_rows
    +        
    +        rows = if @project
    +          number_of_rows_on_project(@project)
             else
    -          Project.roots.inject(0) do |total, project|
    +          Project.roots.visible.has_module('issue_tracking').inject(0) do |total, project|
                 total += number_of_rows_on_project(project)
               end
             end
    +        
    +        rows > @max_rows ? @max_rows : rows
           end
     
           # Returns the number of rows that will be used to list a project on
    @@ -119,7 +136,7 @@
             end
     
             # Subprojects
    -        project.children.each do |subproject|
    +        project.children.visible.has_module('issue_tracking').each do |subproject|
               count += number_of_rows_on_project(subproject)
             end
     
    @@ -128,34 +145,36 @@
     
           # Renders the subjects of the Gantt chart, the left side.
           def subjects(options={})
    -        options = {:indent => 4, :render => :subject, :format => :html}.merge(options)
    -
    -        output = ''
    -        if @project
    -          output << render_project(@project, options)
    -        else
    -          Project.roots.each do |project|
    -            output << render_project(project, options)
    -          end
    -        end
    -
    -        output
    +        render(options.merge(:only => :subjects)) unless @subjects_rendered
    +        @subjects
           end
     
           # Renders the lines of the Gantt chart, the right side
           def lines(options={})
    -        options = {:indent => 4, :render => :line, :format => :html}.merge(options)
    -        output = ''
    -
    +        render(options.merge(:only => :lines)) unless @lines_rendered
    +        @lines
    +      end
    +      
    +      def render(options={})
    +        options = {:indent => 4, :render => :subject, :format => :html}.merge(options)
    +        
    +        @subjects = '' unless options[:only] == :lines
    +        @lines = '' unless options[:only] == :subjects
    +        @number_of_rows = 0
    +        
             if @project
    -          output << render_project(@project, options)
    +          render_project(@project, options)
             else
    -          Project.roots.each do |project|
    -            output << render_project(project, options)
    +          Project.roots.visible.has_module('issue_tracking').each do |project|
    +            render_project(project, options)
    +            break if abort?
               end
             end
             
    -        output
    +        @subjects_rendered = true unless options[:only] == :lines
    +        @lines_rendered = true unless options[:only] == :subjects
    +        
    +        render_end(options)
           end
     
           def render_project(project, options={})
    @@ -163,122 +182,96 @@
             options[:indent_increment] = 20 unless options.key? :indent_increment
             options[:top_increment] = 20 unless options.key? :top_increment
     
    -        output = ''
    -        # Project Header
    -        project_header = if options[:render] == :subject
    -                           subject_for_project(project, options)
    -                         else
    -                           # :line
    -                           line_for_project(project, options)
    -                         end
    -        output << project_header if options[:format] == :html
    +        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)
    +        issues = project.issues.for_gantt.without_version.with_query(@query).all(:limit => current_limit)
    +        sort_issues!(issues)
             if issues
    -          issue_rendering = render_issues(issues, options)
    -          output << issue_rendering if options[:format] == :html
    +          render_issues(issues, options)
    +          return if abort?
             end
     
             # Third, Versions
             project.versions.sort.each do |version|
    -          version_rendering = render_version(version, options)
    -          output << version_rendering if options[:format] == :html
    +          render_version(version, options)
    +          return if abort?
             end
     
             # Fourth, subprojects
    -        project.children.each do |project|
    -          subproject_rendering = render_project(project, options)
    -          output << subproject_rendering if options[:format] == :html
    -        end
    +        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]
    -        
    -        output
           end
     
           def render_issues(issues, options={})
    -        output = ''
    +        @issue_ancestors = []
    +        
             issues.each do |i|
    -          issue_rendering = if options[:render] == :subject
    -                              subject_for_issue(i, options)
    -                            else
    -                              # :line
    -                              line_for_issue(i, options)
    -                            end
    -          output << issue_rendering if options[:format] == :html
    +          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
    -        output
    +        
    +        options[:indent] -= (options[:indent_increment] * @issue_ancestors.size)
           end
     
           def render_version(version, options={})
    -        output = ''
             # Version header
    -        version_rendering = if options[:render] == :subject
    -                              subject_for_version(version, options)
    -                            else
    -                              # :line
    -                              line_for_version(version, options)
    -                            end
    -
    -        output << version_rendering if options[:format] == :html
    +        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)
    +        issues = version.fixed_issues.for_gantt.with_query(@query).all(:limit => current_limit)
             if issues
    +          sort_issues!(issues)
               # Indent issues
               options[:indent] += options[:indent_increment]
    -          output << render_issues(issues, options)
    +          render_issues(issues, options)
               options[:indent] -= options[:indent_increment]
             end
    -
    -        output
    +      end
    +      
    +      def render_end(options={})
    +        case options[:format]
    +        when :pdf        
    +          options[:pdf].Line(15, options[:top], PDF::TotalWidth, options[:top])
    +        end
           end
     
           def subject_for_project(project, options)
             case options[:format]
             when :html
    -          output = ''
    -
    -          output << "
    " - if project.is_a? Project - output << "" - output << view.link_to_project(project) - output << '' - else - ActiveRecord::Base.logger.debug "Gantt#subject_for_project was not given a project" - '' - end - output << "
    " - - output + subject = "" + subject << view.link_to_project(project) + subject << '' + html_subject(options, subject, :css => "project-name") when :image - - options[:image].fill('black') - options[:image].stroke('transparent') - options[:image].stroke_width(1) - options[:image].text(options[:indent], options[:top] + 2, project.name) + image_subject(options, project.name) when :pdf - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(15) - - char_limit = PDF::MaxCharactorsForSubject - options[:indent] - options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{project.name}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") - - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(options[:subject_width]) - options[:pdf].Cell(options[:g_width], 5, "", "LR") + pdf_new_page?(options) + pdf_subject(options, project.name) end end @@ -287,95 +280,17 @@ 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 - output = '' - i_left = ((project.start_date - self.date_from)*options[:zoom]).floor - - start_date = project.start_date - start_date ||= self.date_from - start_left = ((start_date - self.date_from)*options[:zoom]).floor - - i_end_date = ((project.due_date <= self.date_to) ? project.due_date : self.date_to ) - i_done_date = start_date + ((project.due_date - start_date+1)* project.completed_percent(:include_subprojects => true)/100).floor - i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date ) - i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if start_date < Date.today - i_end = ((i_end_date - self.date_from) * options[:zoom]).floor - - i_width = (i_end - i_left + 1).floor - 2 # total width of the issue (- 2 for left and right borders) - d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2 # done width - l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width - - # Bar graphic - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_end > 0 && i_left <= options[:g_width] - output << "
     
    " - end - - if l_width > 0 && i_left <= options[:g_width] - output << "
     
    " - end - if d_width > 0 && i_left <= options[:g_width] - output<< "
     
    " - end - - - # Starting diamond - if start_left <= options[:g_width] && start_left > 0 - output << "
     
    " - output << "
    " - output << "
    " - end - - # Ending diamond - # Don't show items too far ahead - if i_end <= options[:g_width] && i_end > 0 - output << "
     
    " - end - - # DIsplay the Project name and % - if i_end <= options[:g_width] - # Display the status even if it's floated off to the left - status_px = i_end + 12 # 12px for the diamond - status_px = 0 if status_px <= 0 - - output << "
    " - output << "#{h project } #{h project.completed_percent(:include_subprojects => true).to_i.to_s}%" - output << "
    " - end - - output + html_task(options, coords, :css => "project task", :label => label, :markers => true) when :image - options[:image].stroke('transparent') - i_left = options[:subject_width] + ((project.due_date - self.date_from)*options[:zoom]).floor - - # Make sure negative i_left doesn't overflow the subject - if i_left > options[:subject_width] - options[:image].fill('blue') - options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6) - options[:image].fill('black') - options[:image].text(i_left + 11, options[:top] + 1, project.name) - end + image_task(options, coords, :label => label, :markers => true, :height => 3) when :pdf - options[:pdf].SetY(options[:top]+1.5) - i_left = ((project.due_date - @date_from)*options[:zoom]) - - # Make sure negative i_left doesn't overflow the subject - if i_left > 0 - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(50,50,200) - options[:pdf].Cell(2, 2, "", 0, 0, "", 1) - - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left + 3) - options[:pdf].Cell(30, 2, "#{project.name}") - end + pdf_task(options, coords, :label => label, :markers => true, :height => 0.8) end else ActiveRecord::Base.logger.debug "Gantt#line_for_project was not given a project with a start_date" @@ -386,34 +301,15 @@ def subject_for_version(version, options) case options[:format] when :html - output = '' - output << "
    " - if version.is_a? Version - output << "" - output << view.link_to_version(version) - output << '' - else - ActiveRecord::Base.logger.debug "Gantt#subject_for_version was not given a version" - '' - end - output << "
    " - - output + subject = "" + subject << view.link_to_version(version) + subject << '' + html_subject(options, subject, :css => "version-name") when :image - options[:image].fill('black') - options[:image].stroke('transparent') - options[:image].stroke_width(1) - options[:image].text(options[:indent], options[:top] + 2, version.to_s_with_project) + image_subject(options, version.to_s_with_project) when :pdf - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(15) - - char_limit = PDF::MaxCharactorsForSubject - options[:indent] - options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{version.to_s_with_project}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") - - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(options[:subject_width]) - options[:pdf].Cell(options[:g_width], 5, "", "LR") + pdf_new_page?(options) + pdf_subject(options, version.to_s_with_project) end end @@ -422,95 +318,18 @@ 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 case options[:format] when :html - output = '' - i_left = ((version.start_date - self.date_from)*options[:zoom]).floor - # TODO: or version.fixed_issues.collect(&:start_date).min - start_date = version.fixed_issues.minimum('start_date') if version.fixed_issues.present? - start_date ||= self.date_from - start_left = ((start_date - self.date_from)*options[:zoom]).floor - - i_end_date = ((version.due_date <= self.date_to) ? version.due_date : self.date_to ) - i_done_date = start_date + ((version.due_date - start_date+1)* version.completed_pourcent/100).floor - i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date ) - i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if start_date < Date.today - - i_width = (i_left - start_left + 1).floor - 2 # total width of the issue (- 2 for left and right borders) - d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2 # done width - l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width - - i_end = ((i_end_date - self.date_from) * options[:zoom]).floor # Ending pixel - - # Bar graphic - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 && i_left <= options[:g_width] - output << "
     
    " - end - if l_width > 0 && i_left <= options[:g_width] - output << "
     
    " - end - if d_width > 0 && i_left <= options[:g_width] - output<< "
     
    " - end - - - # Starting diamond - if start_left <= options[:g_width] && start_left > 0 - output << "
     
    " - output << "
    " - output << "
    " - end - - # Ending diamond - # Don't show items too far ahead - if i_left <= options[:g_width] && i_end > 0 - output << "
     
    " - end - - # Display the Version name and % - if i_end <= options[:g_width] - # Display the status even if it's floated off to the left - status_px = i_end + 12 # 12px for the diamond - status_px = 0 if status_px <= 0 - - output << "
    " - output << h("#{version.project} -") unless @project && @project == version.project - output << "#{h version } #{h version.completed_pourcent.to_i.to_s}%" - output << "
    " - end - - output + html_task(options, coords, :css => "version task", :label => label, :markers => true) when :image - options[:image].stroke('transparent') - i_left = options[:subject_width] + ((version.start_date - @date_from)*options[:zoom]).floor - - # Make sure negative i_left doesn't overflow the subject - if i_left > options[:subject_width] - options[:image].fill('green') - options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6) - options[:image].fill('black') - options[:image].text(i_left + 11, options[:top] + 1, version.name) - end + image_task(options, coords, :label => label, :markers => true, :height => 3) when :pdf - options[:pdf].SetY(options[:top]+1.5) - i_left = ((version.start_date - @date_from)*options[:zoom]) - - # Make sure negative i_left doesn't overflow the subject - if i_left > 0 - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(50,200,50) - options[:pdf].Cell(2, 2, "", 0, 0, "", 1) - - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left + 3) - options[:pdf].Cell(30, 2, "#{version.name}") - end + pdf_task(options, coords, :label => label, :markers => true, :height => 0.8) end else ActiveRecord::Base.logger.debug "Gantt#line_for_version was not given a version with a start_date" @@ -519,206 +338,55 @@ end def subject_for_issue(issue, options) - case options[:format] + while @issue_ancestors.any? && !issue.is_descendant_of?(@issue_ancestors.last) + @issue_ancestors.pop + options[:indent] -= options[:indent_increment] + end + + output = case options[:format] when :html - output = '' - output << "
    " - output << "
    " - if issue.is_a? Issue - 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 + 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 + subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string).to_s + end + subject << view.link_to_issue(issue) + subject << '' + html_subject(options, subject, :css => "issue-subject", :title => issue.subject) + "\n" + when :image + image_subject(options, issue.subject) + when :pdf + pdf_new_page?(options) + pdf_subject(options, issue.subject) + end - if issue.assigned_to.present? - assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name - output << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string) - end - output << "" - output << view.link_to_issue(issue) - output << '' - else - ActiveRecord::Base.logger.debug "Gantt#subject_for_issue was not given an issue" - '' - end - output << "
    " - - # Tooltip - if issue.is_a? Issue - output << "" - output << view.render_issue_tooltip(issue) - output << "" - end - - output << "
    " - output - when :image - options[:image].fill('black') - options[:image].stroke('transparent') - options[:image].stroke_width(1) - options[:image].text(options[:indent], options[:top] + 2, issue.subject) - when :pdf - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(15) - - char_limit = PDF::MaxCharactorsForSubject - options[:indent] - options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{issue.tracker} #{issue.id}: #{issue.subject}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") + unless issue.leaf? + @issue_ancestors << issue + options[:indent] += options[:indent_increment] + end - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(options[:subject_width]) - options[:pdf].Cell(options[:g_width], 5, "", "LR") - end + output end def line_for_issue(issue, options) # Skip issues that don't have a due_before (due_date or version's due_date) 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 - output = '' - # Handle nil start_dates, rare but can happen. - i_start_date = if issue.start_date && issue.start_date >= self.date_from - issue.start_date - else - self.date_from - end - - i_end_date = ((issue.due_before && issue.due_before <= self.date_to) ? issue.due_before : self.date_to ) - i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor - i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date ) - i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today - - i_left = ((i_start_date - self.date_from)*options[:zoom]).floor - i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor - 2 # total width of the issue (- 2 for left and right borders) - d_width = ((i_done_date - i_start_date)*options[:zoom]).floor - 2 # done width - l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor - 2 : 0 # delay width - css = "task " + (issue.leaf? ? 'leaf' : 'parent') - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 - output << "
     
    " - end - if l_width > 0 - output << "
     
    " - end - if d_width > 0 - output<< "
     
    " - end - - # Display the status even if it's floated off to the left - status_px = i_left + i_width + 5 - status_px = 5 if status_px <= 0 - - output << "
    " - output << issue.status.name - output << ' ' - output << (issue.done_ratio).to_i.to_s - output << "%" - output << "
    " - - output << "
    " - output << '' - output << view.render_issue_tooltip(issue) - output << "
    " - output - + html_task(options, coords, :css => "task " + (issue.leaf? ? 'leaf' : 'parent'), :label => label, :issue => issue, :markers => !issue.leaf?) when :image - # Handle nil start_dates, rare but can happen. - i_start_date = if issue.start_date && issue.start_date >= @date_from - issue.start_date - else - @date_from - end - - i_end_date = (issue.due_before <= date_to ? issue.due_before : date_to ) - i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor - i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date ) - i_done_date = (i_done_date >= date_to ? date_to : i_done_date ) - i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today - - i_left = options[:subject_width] + ((i_start_date - @date_from)*options[:zoom]).floor - i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor # total width of the issue - d_width = ((i_done_date - i_start_date)*options[:zoom]).floor # done width - l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor : 0 # delay width - - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 - options[:image].fill('grey') - options[:image].rectangle(i_left, options[:top], i_left + i_width, options[:top] - 6) - options[:image].fill('red') - options[:image].rectangle(i_left, options[:top], i_left + l_width, options[:top] - 6) if l_width > 0 - options[:image].fill('blue') - options[:image].rectangle(i_left, options[:top], i_left + d_width, options[:top] - 6) if d_width > 0 - end - - # Show the status and % done next to the subject if it overflows - options[:image].fill('black') - if i_width > 0 - options[:image].text(i_left + i_width + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%") - else - options[:image].text(options[:subject_width] + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%") - end - + image_task(options, coords, :label => label) when :pdf - options[:pdf].SetY(options[:top]+1.5) - # Handle nil start_dates, rare but can happen. - i_start_date = if issue.start_date && issue.start_date >= @date_from - issue.start_date - else - @date_from - end - - i_end_date = (issue.due_before <= @date_to ? issue.due_before : @date_to ) - - i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor - i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date ) - i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today - - i_left = ((i_start_date - @date_from)*options[:zoom]) - i_width = ((i_end_date - i_start_date + 1)*options[:zoom]) - d_width = ((i_done_date - i_start_date)*options[:zoom]) - l_width = ((i_late_date - i_start_date+1)*options[:zoom]) if i_late_date - l_width ||= 0 - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(200,200,200) - options[:pdf].Cell(i_width, 2, "", 0, 0, "", 1) - end - - if l_width > 0 - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(255,100,100) - options[:pdf].Cell(l_width, 2, "", 0, 0, "", 1) - end - if d_width > 0 - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(100,100,255) - options[:pdf].Cell(d_width, 2, "", 0, 0, "", 1) - end - - options[:pdf].SetY(options[:top]+1.5) - - # Make sure that negative i_left and i_width don't - # overflow the subject - if (i_left + i_width) >= 0 - options[:pdf].SetX(options[:subject_width] + i_left + i_width) - else - options[:pdf].SetX(options[:subject_width]) - end - options[:pdf].Cell(30, 2, "#{issue.status} #{issue.done_ratio}%") - end + pdf_task(options, coords, :label => label) + end else ActiveRecord::Base.logger.debug "GanttHelper#line_for_issue was not given an issue with a due_before" '' @@ -746,6 +414,7 @@ gc = Magick::Draw.new # Subjects + gc.stroke('transparent') subjects(:image => gc, :top => (headers_heigth + 20), :indent => 4, :format => :image) # Months headers @@ -805,7 +474,7 @@ (date_to - @date_from + 1).to_i.times do width = zoom gc.fill(wday == 6 || wday == 7 ? '#eee' : 'white') - gc.stroke('grey') + gc.stroke('#ddd') gc.stroke_width(1) gc.rectangle(left, 2*header_heigth, left + width, 2*header_heigth + g_height-1) left = left + width @@ -824,7 +493,8 @@ # content top = headers_heigth + 20 - + + gc.stroke('transparent') lines(:image => gc, :top => top, :zoom => zoom, :subject_width => subject_width, :format => :image) # today red line @@ -936,39 +606,258 @@ # Tasks top = headers_heigth + y_start - pdf_subjects_and_lines(pdf, { - :top => top, - :zoom => zoom, - :subject_width => subject_width, - :g_width => g_width - }) - - - pdf.Line(15, top, subject_width+g_width, top) + options = { + :top => top, + :zoom => zoom, + :subject_width => subject_width, + :g_width => g_width, + :indent => 0, + :indent_increment => 5, + :top_increment => 5, + :format => :pdf, + :pdf => pdf + } + 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 + coords[:start] = start_date - self.date_from + coords[:bar_start] = start_date - self.date_from + else + coords[:bar_start] = 0 + end + if end_date < self.date_to + coords[:end] = end_date - self.date_from + coords[:bar_end] = end_date - self.date_from + 1 + 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) + 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 + 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 + if late_date < self.date_to + coords[:bar_late_end] = late_date - self.date_from + 1 + else + coords[:bar_late_end] = self.date_to - self.date_from + 1 + end + end + end + end + end + + # Transforms dates into pixels witdh + coords.keys.each do |key| + coords[key] = (coords[key] * zoom).floor + end + coords + end - # Renders both the subjects and lines of the Gantt chart for the - # PDF format - def pdf_subjects_and_lines(pdf, options = {}) - subject_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :subject, :format => :pdf, :pdf => pdf}.merge(options) - line_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :line, :format => :pdf, :pdf => pdf}.merge(options) - - if @project - render_project(@project, subject_options) - render_project(@project, line_options) + # Sorts a collection of issues by start_date, due_date, id for gantt rendering + 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 + x.lft <=> y.lft else - Project.roots.each do |project| - render_project(project, subject_options) - render_project(project, line_options) + x.root_id <=> y.root_id + end + end + + def current_limit + if @max_rows + @max_rows - @number_of_rows + else + 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]) + options[:pdf].AddPage("L") + options[:top] = 15 + 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].SetY(params[:top]) + params[:pdf].SetX(params[:subject_width]) + params[:pdf].Cell(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 + if coords[:bar_progress_end] + output << "
     
    " + end + end + # Renders the markers + if options[:markers] + if coords[:start] + output << "
     
    " + end + if coords[:end] + output << "
     
    " + end + end + # Renders the label on the right + if options[:label] + output << "
    " + output << options[:label] + output << "
    " + end + # Renders the tooltip + if options[:issue] && coords[:bar_start] && coords[:bar_end] + output << "
    " + output << '' + output << view.render_issue_tooltip(options[:issue]) + output << "
    " + end + @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) + + 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) + 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) + end + end + # Renders the markers + if options[:markers] + if coords[:start] + 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) + 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) + 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]) 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) + end + if coords[:bar_progress_end] + params[:image].fill('#00c600') + params[:image].rectangle(params[:subject_width] + coords[:bar_start], params[:top], params[:subject_width] + coords[:bar_progress_end], params[:top] - height) + end + end + # Renders the markers + if options[:markers] + if coords[:start] + x = params[:subject_width] + coords[:start] + y = params[:top] - height / 2 + params[:image].fill('blue') + params[:image].polygon(x-4, y, x, y-4, x+4, y, x, y+4) + end + if coords[:end] + x = params[:subject_width] + coords[:end] + params[:zoom] + y = params[:top] - height / 2 + params[:image].fill('blue') + params[:image].polygon(x-4, y, x, y-4, x+4, y, x, y+4) + end + end + # Renders the label on the right + if options[:label] + params[:image].fill('black') + params[:image].text(params[:subject_width] + (coords[:bar_end] || 0) + 5,params[:top] + 1, options[:label]) + end + end end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/helpers/diff.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/helpers/diff.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,72 @@ +# 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 Redmine + module Helpers + class Diff + include ERB::Util + include ActionView::Helpers::TagHelper + include ActionView::Helpers::TextHelper + attr_reader :diff, :words + + def initialize(content_to, content_from) + @words = content_to.to_s.split(/(\s+)/) + @words = @words.select {|word| word != ' '} + words_from = content_from.to_s.split(/(\s+)/) + words_from = words_from.select {|word| word != ' '} + @diff = words_from.diff @words + end + + def to_html + words = self.words.collect{|word| h(word)} + words_add = 0 + words_del = 0 + dels = 0 + del_off = 0 + diff.diffs.each do |diff| + add_at = nil + add_to = nil + del_at = nil + deleted = "" + diff.each do |change| + pos = change[1] + if change[0] == "+" + add_at = pos + dels unless add_at + add_to = pos + dels + words_add += 1 + else + del_at = pos unless del_at + deleted << ' ' + h(change[2]) + words_del += 1 + end + end + if add_at + words[add_at] = '' + words[add_at] + words[add_to] = words[add_to] + '' + end + if del_at + words.insert del_at - del_off + dels + words_add, '' + deleted + '' + dels += 1 + del_off += words_del + words_del = 0 + end + end + words.join(' ') + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/helpers/gantt.rb --- a/lib/redmine/helpers/gantt.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/helpers/gantt.rb Thu Mar 03 12:11:53 2011 +0000 @@ -34,7 +34,7 @@ end end - attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months + attr_reader :year_from, :month_from, :date_from, :date_to, :zoom, :months, :truncated, :max_rows attr_accessor :query attr_accessor :project attr_accessor :view @@ -67,6 +67,19 @@ @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] + else + @max_rows = Setting.gantt_items_limit.blank? ? nil : Setting.gantt_items_limit.to_i + end end def common_params @@ -88,13 +101,17 @@ ### Extracted from the HTML view/helpers # Returns the number of rows that will be rendered on the Gantt chart def number_of_rows - if @project - return number_of_rows_on_project(@project) + return @number_of_rows if @number_of_rows + + rows = if @project + number_of_rows_on_project(@project) else - Project.roots.inject(0) do |total, project| + Project.roots.visible.has_module('issue_tracking').inject(0) do |total, project| total += number_of_rows_on_project(project) end end + + rows > @max_rows ? @max_rows : rows end # Returns the number of rows that will be used to list a project on @@ -119,7 +136,7 @@ end # Subprojects - project.children.each do |subproject| + project.children.visible.has_module('issue_tracking').each do |subproject| count += number_of_rows_on_project(subproject) end @@ -128,34 +145,36 @@ # Renders the subjects of the Gantt chart, the left side. def subjects(options={}) - options = {:indent => 4, :render => :subject, :format => :html}.merge(options) - - output = '' - if @project - output << render_project(@project, options) - else - Project.roots.each do |project| - output << render_project(project, options) - end - end - - output + render(options.merge(:only => :subjects)) unless @subjects_rendered + @subjects end # Renders the lines of the Gantt chart, the right side def lines(options={}) - options = {:indent => 4, :render => :line, :format => :html}.merge(options) - output = '' - + render(options.merge(:only => :lines)) unless @lines_rendered + @lines + end + + def render(options={}) + options = {:indent => 4, :render => :subject, :format => :html}.merge(options) + + @subjects = '' unless options[:only] == :lines + @lines = '' unless options[:only] == :subjects + @number_of_rows = 0 + if @project - output << render_project(@project, options) + render_project(@project, options) else - Project.roots.each do |project| - output << render_project(project, options) + Project.roots.visible.has_module('issue_tracking').each do |project| + render_project(project, options) + break if abort? end end - output + @subjects_rendered = true unless options[:only] == :lines + @lines_rendered = true unless options[:only] == :subjects + + render_end(options) end def render_project(project, options={}) @@ -163,122 +182,96 @@ options[:indent_increment] = 20 unless options.key? :indent_increment options[:top_increment] = 20 unless options.key? :top_increment - output = '' - # Project Header - project_header = if options[:render] == :subject - subject_for_project(project, options) - else - # :line - line_for_project(project, options) - end - output << project_header if options[:format] == :html + 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) + issues = project.issues.for_gantt.without_version.with_query(@query).all(:limit => current_limit) + sort_issues!(issues) if issues - issue_rendering = render_issues(issues, options) - output << issue_rendering if options[:format] == :html + render_issues(issues, options) + return if abort? end # Third, Versions project.versions.sort.each do |version| - version_rendering = render_version(version, options) - output << version_rendering if options[:format] == :html + render_version(version, options) + return if abort? end # Fourth, subprojects - project.children.each do |project| - subproject_rendering = render_project(project, options) - output << subproject_rendering if options[:format] == :html - end + 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] - - output end def render_issues(issues, options={}) - output = '' + @issue_ancestors = [] + issues.each do |i| - issue_rendering = if options[:render] == :subject - subject_for_issue(i, options) - else - # :line - line_for_issue(i, options) - end - output << issue_rendering if options[:format] == :html + 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 - output + + options[:indent] -= (options[:indent_increment] * @issue_ancestors.size) end def render_version(version, options={}) - output = '' # Version header - version_rendering = if options[:render] == :subject - subject_for_version(version, options) - else - # :line - line_for_version(version, options) - end - - output << version_rendering if options[:format] == :html + 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) + issues = version.fixed_issues.for_gantt.with_query(@query).all(:limit => current_limit) if issues + sort_issues!(issues) # Indent issues options[:indent] += options[:indent_increment] - output << render_issues(issues, options) + render_issues(issues, options) options[:indent] -= options[:indent_increment] end - - output + end + + def render_end(options={}) + case options[:format] + when :pdf + options[:pdf].Line(15, options[:top], PDF::TotalWidth, options[:top]) + end end def subject_for_project(project, options) case options[:format] when :html - output = '' - - output << "
    " - if project.is_a? Project - output << "" - output << view.link_to_project(project) - output << '' - else - ActiveRecord::Base.logger.debug "Gantt#subject_for_project was not given a project" - '' - end - output << "
    " - - output + subject = "" + subject << view.link_to_project(project) + subject << '' + html_subject(options, subject, :css => "project-name") when :image - - options[:image].fill('black') - options[:image].stroke('transparent') - options[:image].stroke_width(1) - options[:image].text(options[:indent], options[:top] + 2, project.name) + image_subject(options, project.name) when :pdf - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(15) - - char_limit = PDF::MaxCharactorsForSubject - options[:indent] - options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{project.name}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") - - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(options[:subject_width]) - options[:pdf].Cell(options[:g_width], 5, "", "LR") + pdf_new_page?(options) + pdf_subject(options, project.name) end end @@ -287,95 +280,17 @@ 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 - output = '' - i_left = ((project.start_date - self.date_from)*options[:zoom]).floor - - start_date = project.start_date - start_date ||= self.date_from - start_left = ((start_date - self.date_from)*options[:zoom]).floor - - i_end_date = ((project.due_date <= self.date_to) ? project.due_date : self.date_to ) - i_done_date = start_date + ((project.due_date - start_date+1)* project.completed_percent(:include_subprojects => true)/100).floor - i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date ) - i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if start_date < Date.today - i_end = ((i_end_date - self.date_from) * options[:zoom]).floor - - i_width = (i_end - i_left + 1).floor - 2 # total width of the issue (- 2 for left and right borders) - d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2 # done width - l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width - - # Bar graphic - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_end > 0 && i_left <= options[:g_width] - output << "
     
    " - end - - if l_width > 0 && i_left <= options[:g_width] - output << "
     
    " - end - if d_width > 0 && i_left <= options[:g_width] - output<< "
     
    " - end - - - # Starting diamond - if start_left <= options[:g_width] && start_left > 0 - output << "
     
    " - output << "
    " - output << "
    " - end - - # Ending diamond - # Don't show items too far ahead - if i_end <= options[:g_width] && i_end > 0 - output << "
     
    " - end - - # DIsplay the Project name and % - if i_end <= options[:g_width] - # Display the status even if it's floated off to the left - status_px = i_end + 12 # 12px for the diamond - status_px = 0 if status_px <= 0 - - output << "
    " - output << "#{h project } #{h project.completed_percent(:include_subprojects => true).to_i.to_s}%" - output << "
    " - end - - output + html_task(options, coords, :css => "project task", :label => label, :markers => true) when :image - options[:image].stroke('transparent') - i_left = options[:subject_width] + ((project.due_date - self.date_from)*options[:zoom]).floor - - # Make sure negative i_left doesn't overflow the subject - if i_left > options[:subject_width] - options[:image].fill('blue') - options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6) - options[:image].fill('black') - options[:image].text(i_left + 11, options[:top] + 1, project.name) - end + image_task(options, coords, :label => label, :markers => true, :height => 3) when :pdf - options[:pdf].SetY(options[:top]+1.5) - i_left = ((project.due_date - @date_from)*options[:zoom]) - - # Make sure negative i_left doesn't overflow the subject - if i_left > 0 - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(50,50,200) - options[:pdf].Cell(2, 2, "", 0, 0, "", 1) - - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left + 3) - options[:pdf].Cell(30, 2, "#{project.name}") - end + pdf_task(options, coords, :label => label, :markers => true, :height => 0.8) end else ActiveRecord::Base.logger.debug "Gantt#line_for_project was not given a project with a start_date" @@ -386,34 +301,15 @@ def subject_for_version(version, options) case options[:format] when :html - output = '' - output << "
    " - if version.is_a? Version - output << "" - output << view.link_to_version(version) - output << '' - else - ActiveRecord::Base.logger.debug "Gantt#subject_for_version was not given a version" - '' - end - output << "
    " - - output + subject = "" + subject << view.link_to_version(version) + subject << '' + html_subject(options, subject, :css => "version-name") when :image - options[:image].fill('black') - options[:image].stroke('transparent') - options[:image].stroke_width(1) - options[:image].text(options[:indent], options[:top] + 2, version.to_s_with_project) + image_subject(options, version.to_s_with_project) when :pdf - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(15) - - char_limit = PDF::MaxCharactorsForSubject - options[:indent] - options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{version.to_s_with_project}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") - - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(options[:subject_width]) - options[:pdf].Cell(options[:g_width], 5, "", "LR") + pdf_new_page?(options) + pdf_subject(options, version.to_s_with_project) end end @@ -422,95 +318,18 @@ 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 case options[:format] when :html - output = '' - i_left = ((version.start_date - self.date_from)*options[:zoom]).floor - # TODO: or version.fixed_issues.collect(&:start_date).min - start_date = version.fixed_issues.minimum('start_date') if version.fixed_issues.present? - start_date ||= self.date_from - start_left = ((start_date - self.date_from)*options[:zoom]).floor - - i_end_date = ((version.due_date <= self.date_to) ? version.due_date : self.date_to ) - i_done_date = start_date + ((version.due_date - start_date+1)* version.completed_pourcent/100).floor - i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date ) - i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if start_date < Date.today - - i_width = (i_left - start_left + 1).floor - 2 # total width of the issue (- 2 for left and right borders) - d_width = ((i_done_date - start_date)*options[:zoom]).floor - 2 # done width - l_width = i_late_date ? ((i_late_date - start_date+1)*options[:zoom]).floor - 2 : 0 # delay width - - i_end = ((i_end_date - self.date_from) * options[:zoom]).floor # Ending pixel - - # Bar graphic - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 && i_left <= options[:g_width] - output << "
     
    " - end - if l_width > 0 && i_left <= options[:g_width] - output << "
     
    " - end - if d_width > 0 && i_left <= options[:g_width] - output<< "
     
    " - end - - - # Starting diamond - if start_left <= options[:g_width] && start_left > 0 - output << "
     
    " - output << "
    " - output << "
    " - end - - # Ending diamond - # Don't show items too far ahead - if i_left <= options[:g_width] && i_end > 0 - output << "
     
    " - end - - # Display the Version name and % - if i_end <= options[:g_width] - # Display the status even if it's floated off to the left - status_px = i_end + 12 # 12px for the diamond - status_px = 0 if status_px <= 0 - - output << "
    " - output << h("#{version.project} -") unless @project && @project == version.project - output << "#{h version } #{h version.completed_pourcent.to_i.to_s}%" - output << "
    " - end - - output + html_task(options, coords, :css => "version task", :label => label, :markers => true) when :image - options[:image].stroke('transparent') - i_left = options[:subject_width] + ((version.start_date - @date_from)*options[:zoom]).floor - - # Make sure negative i_left doesn't overflow the subject - if i_left > options[:subject_width] - options[:image].fill('green') - options[:image].rectangle(i_left, options[:top], i_left + 6, options[:top] - 6) - options[:image].fill('black') - options[:image].text(i_left + 11, options[:top] + 1, version.name) - end + image_task(options, coords, :label => label, :markers => true, :height => 3) when :pdf - options[:pdf].SetY(options[:top]+1.5) - i_left = ((version.start_date - @date_from)*options[:zoom]) - - # Make sure negative i_left doesn't overflow the subject - if i_left > 0 - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(50,200,50) - options[:pdf].Cell(2, 2, "", 0, 0, "", 1) - - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left + 3) - options[:pdf].Cell(30, 2, "#{version.name}") - end + pdf_task(options, coords, :label => label, :markers => true, :height => 0.8) end else ActiveRecord::Base.logger.debug "Gantt#line_for_version was not given a version with a start_date" @@ -519,206 +338,55 @@ end def subject_for_issue(issue, options) - case options[:format] + while @issue_ancestors.any? && !issue.is_descendant_of?(@issue_ancestors.last) + @issue_ancestors.pop + options[:indent] -= options[:indent_increment] + end + + output = case options[:format] when :html - output = '' - output << "
    " - output << "
    " - if issue.is_a? Issue - 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 + 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 + subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string).to_s + end + subject << view.link_to_issue(issue) + subject << '' + html_subject(options, subject, :css => "issue-subject", :title => issue.subject) + "\n" + when :image + image_subject(options, issue.subject) + when :pdf + pdf_new_page?(options) + pdf_subject(options, issue.subject) + end - if issue.assigned_to.present? - assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name - output << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string) - end - output << "" - output << view.link_to_issue(issue) - output << '' - else - ActiveRecord::Base.logger.debug "Gantt#subject_for_issue was not given an issue" - '' - end - output << "
    " - - # Tooltip - if issue.is_a? Issue - output << "" - output << view.render_issue_tooltip(issue) - output << "" - end - - output << "
    " - output - when :image - options[:image].fill('black') - options[:image].stroke('transparent') - options[:image].stroke_width(1) - options[:image].text(options[:indent], options[:top] + 2, issue.subject) - when :pdf - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(15) - - char_limit = PDF::MaxCharactorsForSubject - options[:indent] - options[:pdf].Cell(options[:subject_width]-15, 5, (" " * options[:indent]) +"#{issue.tracker} #{issue.id}: #{issue.subject}".sub(/^(.{#{char_limit}}[^\s]*\s).*$/, '\1 (...)'), "LR") + unless issue.leaf? + @issue_ancestors << issue + options[:indent] += options[:indent_increment] + end - options[:pdf].SetY(options[:top]) - options[:pdf].SetX(options[:subject_width]) - options[:pdf].Cell(options[:g_width], 5, "", "LR") - end + output end def line_for_issue(issue, options) # Skip issues that don't have a due_before (due_date or version's due_date) 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 - output = '' - # Handle nil start_dates, rare but can happen. - i_start_date = if issue.start_date && issue.start_date >= self.date_from - issue.start_date - else - self.date_from - end - - i_end_date = ((issue.due_before && issue.due_before <= self.date_to) ? issue.due_before : self.date_to ) - i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor - i_done_date = (i_done_date <= self.date_from ? self.date_from : i_done_date ) - i_done_date = (i_done_date >= self.date_to ? self.date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today - - i_left = ((i_start_date - self.date_from)*options[:zoom]).floor - i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor - 2 # total width of the issue (- 2 for left and right borders) - d_width = ((i_done_date - i_start_date)*options[:zoom]).floor - 2 # done width - l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor - 2 : 0 # delay width - css = "task " + (issue.leaf? ? 'leaf' : 'parent') - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 - output << "
     
    " - end - if l_width > 0 - output << "
     
    " - end - if d_width > 0 - output<< "
     
    " - end - - # Display the status even if it's floated off to the left - status_px = i_left + i_width + 5 - status_px = 5 if status_px <= 0 - - output << "
    " - output << issue.status.name - output << ' ' - output << (issue.done_ratio).to_i.to_s - output << "%" - output << "
    " - - output << "
    " - output << '' - output << view.render_issue_tooltip(issue) - output << "
    " - output - + html_task(options, coords, :css => "task " + (issue.leaf? ? 'leaf' : 'parent'), :label => label, :issue => issue, :markers => !issue.leaf?) when :image - # Handle nil start_dates, rare but can happen. - i_start_date = if issue.start_date && issue.start_date >= @date_from - issue.start_date - else - @date_from - end - - i_end_date = (issue.due_before <= date_to ? issue.due_before : date_to ) - i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor - i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date ) - i_done_date = (i_done_date >= date_to ? date_to : i_done_date ) - i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today - - i_left = options[:subject_width] + ((i_start_date - @date_from)*options[:zoom]).floor - i_width = ((i_end_date - i_start_date + 1)*options[:zoom]).floor # total width of the issue - d_width = ((i_done_date - i_start_date)*options[:zoom]).floor # done width - l_width = i_late_date ? ((i_late_date - i_start_date+1)*options[:zoom]).floor : 0 # delay width - - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 - options[:image].fill('grey') - options[:image].rectangle(i_left, options[:top], i_left + i_width, options[:top] - 6) - options[:image].fill('red') - options[:image].rectangle(i_left, options[:top], i_left + l_width, options[:top] - 6) if l_width > 0 - options[:image].fill('blue') - options[:image].rectangle(i_left, options[:top], i_left + d_width, options[:top] - 6) if d_width > 0 - end - - # Show the status and % done next to the subject if it overflows - options[:image].fill('black') - if i_width > 0 - options[:image].text(i_left + i_width + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%") - else - options[:image].text(options[:subject_width] + 5,options[:top] + 1, "#{issue.status.name} #{issue.done_ratio}%") - end - + image_task(options, coords, :label => label) when :pdf - options[:pdf].SetY(options[:top]+1.5) - # Handle nil start_dates, rare but can happen. - i_start_date = if issue.start_date && issue.start_date >= @date_from - issue.start_date - else - @date_from - end - - i_end_date = (issue.due_before <= @date_to ? issue.due_before : @date_to ) - - i_done_date = i_start_date + ((issue.due_before - i_start_date+1)*issue.done_ratio/100).floor - i_done_date = (i_done_date <= @date_from ? @date_from : i_done_date ) - i_done_date = (i_done_date >= @date_to ? @date_to : i_done_date ) - - i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today - - i_left = ((i_start_date - @date_from)*options[:zoom]) - i_width = ((i_end_date - i_start_date + 1)*options[:zoom]) - d_width = ((i_done_date - i_start_date)*options[:zoom]) - l_width = ((i_late_date - i_start_date+1)*options[:zoom]) if i_late_date - l_width ||= 0 - - # Make sure that negative i_left and i_width don't - # overflow the subject - if i_width > 0 - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(200,200,200) - options[:pdf].Cell(i_width, 2, "", 0, 0, "", 1) - end - - if l_width > 0 - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(255,100,100) - options[:pdf].Cell(l_width, 2, "", 0, 0, "", 1) - end - if d_width > 0 - options[:pdf].SetY(options[:top]+1.5) - options[:pdf].SetX(options[:subject_width] + i_left) - options[:pdf].SetFillColor(100,100,255) - options[:pdf].Cell(d_width, 2, "", 0, 0, "", 1) - end - - options[:pdf].SetY(options[:top]+1.5) - - # Make sure that negative i_left and i_width don't - # overflow the subject - if (i_left + i_width) >= 0 - options[:pdf].SetX(options[:subject_width] + i_left + i_width) - else - options[:pdf].SetX(options[:subject_width]) - end - options[:pdf].Cell(30, 2, "#{issue.status} #{issue.done_ratio}%") - end + pdf_task(options, coords, :label => label) + end else ActiveRecord::Base.logger.debug "GanttHelper#line_for_issue was not given an issue with a due_before" '' @@ -746,6 +414,7 @@ gc = Magick::Draw.new # Subjects + gc.stroke('transparent') subjects(:image => gc, :top => (headers_heigth + 20), :indent => 4, :format => :image) # Months headers @@ -805,7 +474,7 @@ (date_to - @date_from + 1).to_i.times do width = zoom gc.fill(wday == 6 || wday == 7 ? '#eee' : 'white') - gc.stroke('grey') + gc.stroke('#ddd') gc.stroke_width(1) gc.rectangle(left, 2*header_heigth, left + width, 2*header_heigth + g_height-1) left = left + width @@ -824,7 +493,8 @@ # content top = headers_heigth + 20 - + + gc.stroke('transparent') lines(:image => gc, :top => top, :zoom => zoom, :subject_width => subject_width, :format => :image) # today red line @@ -936,39 +606,258 @@ # Tasks top = headers_heigth + y_start - pdf_subjects_and_lines(pdf, { - :top => top, - :zoom => zoom, - :subject_width => subject_width, - :g_width => g_width - }) - - - pdf.Line(15, top, subject_width+g_width, top) + options = { + :top => top, + :zoom => zoom, + :subject_width => subject_width, + :g_width => g_width, + :indent => 0, + :indent_increment => 5, + :top_increment => 5, + :format => :pdf, + :pdf => pdf + } + 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 + coords[:start] = start_date - self.date_from + coords[:bar_start] = start_date - self.date_from + else + coords[:bar_start] = 0 + end + if end_date < self.date_to + coords[:end] = end_date - self.date_from + coords[:bar_end] = end_date - self.date_from + 1 + 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) + 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 + 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 + if late_date < self.date_to + coords[:bar_late_end] = late_date - self.date_from + 1 + else + coords[:bar_late_end] = self.date_to - self.date_from + 1 + end + end + end + end + end + + # Transforms dates into pixels witdh + coords.keys.each do |key| + coords[key] = (coords[key] * zoom).floor + end + coords + end - # Renders both the subjects and lines of the Gantt chart for the - # PDF format - def pdf_subjects_and_lines(pdf, options = {}) - subject_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :subject, :format => :pdf, :pdf => pdf}.merge(options) - line_options = {:indent => 0, :indent_increment => 5, :top_increment => 3, :render => :line, :format => :pdf, :pdf => pdf}.merge(options) - - if @project - render_project(@project, subject_options) - render_project(@project, line_options) + # Sorts a collection of issues by start_date, due_date, id for gantt rendering + 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 + x.lft <=> y.lft else - Project.roots.each do |project| - render_project(project, subject_options) - render_project(project, line_options) + x.root_id <=> y.root_id + end + end + + def current_limit + if @max_rows + @max_rows - @number_of_rows + else + 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]) + options[:pdf].AddPage("L") + options[:top] = 15 + 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].SetY(params[:top]) + params[:pdf].SetX(params[:subject_width]) + params[:pdf].Cell(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 + if coords[:bar_progress_end] + output << "
     
    " + end + end + # Renders the markers + if options[:markers] + if coords[:start] + output << "
     
    " + end + if coords[:end] + output << "
     
    " + end + end + # Renders the label on the right + if options[:label] + output << "
    " + output << options[:label] + output << "
    " + end + # Renders the tooltip + if options[:issue] && coords[:bar_start] && coords[:bar_end] + output << "
    " + output << '' + output << view.render_issue_tooltip(options[:issue]) + output << "
    " + end + @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) + + 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) + 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) + end + end + # Renders the markers + if options[:markers] + if coords[:start] + 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) + 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) + 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]) 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) + end + if coords[:bar_progress_end] + params[:image].fill('#00c600') + params[:image].rectangle(params[:subject_width] + coords[:bar_start], params[:top], params[:subject_width] + coords[:bar_progress_end], params[:top] - height) + end + end + # Renders the markers + if options[:markers] + if coords[:start] + x = params[:subject_width] + coords[:start] + y = params[:top] - height / 2 + params[:image].fill('blue') + params[:image].polygon(x-4, y, x, y-4, x+4, y, x, y+4) + end + if coords[:end] + x = params[:subject_width] + coords[:end] + params[:zoom] + y = params[:top] - height / 2 + params[:image].fill('blue') + params[:image].polygon(x-4, y, x, y-4, x+4, y, x, y+4) + end + end + # Renders the label on the right + if options[:label] + params[:image].fill('black') + params[:image].text(params[:subject_width] + (coords[:bar_end] || 0) + 5,params[:top] + 1, options[:label]) + end + end end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/i18n.rb --- a/lib/redmine/i18n.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/i18n.rb Thu Mar 03 12:11:53 2011 +0000 @@ -37,7 +37,7 @@ def format_date(date) return nil unless date - Setting.date_format.blank? ? ::I18n.l(date.to_date, :count => date.strftime('%d')) : date.strftime(Setting.date_format) + Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format) end def format_time(time, include_date = true) @@ -45,8 +45,8 @@ time = time.to_time if time.is_a?(String) zone = User.current.time_zone local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) - Setting.time_format.blank? ? ::I18n.l(local, :count => local.strftime('%d'), :format => (include_date ? :default : :time)) : - ((include_date ? "#{format_date(time)} " : "") + "#{local.strftime(Setting.time_format)}") + (include_date ? "#{format_date(local)} " : "") + + (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format)) end def day_name(day) diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/pop3.rb --- a/lib/redmine/pop3.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/pop3.rb Thu Mar 03 12:11:53 2011 +0000 @@ -27,30 +27,36 @@ delete_unprocessed = (pop_options[:delete_unprocessed].to_s == '1') pop = Net::POP3.APOP(apop).new(host,port) - puts "Connecting to #{host}..." + logger.debug "Connecting to #{host}..." if logger && logger.debug? pop.start(pop_options[:username], pop_options[:password]) do |pop_session| if pop_session.mails.empty? - puts "No email to process" + logger.debug "No email to process" if logger && logger.debug? else - puts "#{pop_session.mails.size} email(s) to process..." + logger.debug "#{pop_session.mails.size} email(s) to process..." if logger && logger.debug? pop_session.each_mail do |msg| message = msg.pop message_id = (message =~ /^Message-ID: (.*)/ ? $1 : '').strip if MailHandler.receive(message, options) msg.delete - puts "--> Message #{message_id} processed and deleted from the server" + logger.debug "--> Message #{message_id} processed and deleted from the server" if logger && logger.debug? else if delete_unprocessed msg.delete - puts "--> Message #{message_id} NOT processed and deleted from the server" + logger.debug "--> Message #{message_id} NOT processed and deleted from the server" if logger && logger.debug? else - puts "--> Message #{message_id} NOT processed and left on the server" + logger.debug "--> Message #{message_id} NOT processed and left on the server" if logger && logger.debug? end end end end end end + + private + + def logger + RAILS_DEFAULT_LOGGER + end end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/safe_attributes.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/safe_attributes.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,75 @@ +# 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. + +module Redmine + module SafeAttributes + def self.included(base) + base.extend(ClassMethods) + end + + module ClassMethods + # Declares safe attributes + # An optional Proc can be given for conditional inclusion + # + # Example: + # safe_attributes 'title', 'pages' + # safe_attributes 'isbn', :if => {|book, user| book.author == user} + def safe_attributes(*args) + @safe_attributes ||= [] + if args.empty? + @safe_attributes + else + options = args.last.is_a?(Hash) ? args.pop : {} + @safe_attributes << [args, options] + end + end + end + + # Returns an array that can be safely set by user or current user + # + # Example: + # book.safe_attributes # => ['title', 'pages'] + # book.safe_attributes(book.author) # => ['title', 'pages', 'isbn'] + def safe_attribute_names(user=User.current) + names = [] + self.class.safe_attributes.collect do |attrs, options| + if options[:if].nil? || options[:if].call(self, user) + names += attrs.collect(&:to_s) + end + end + names.uniq + end + + # Returns a hash with unsafe attributes removed + # from the given attrs hash + # + # Example: + # book.delete_unsafe_attributes({'title' => 'My book', 'foo' => 'bar'}) + # # => {'title' => 'My book'} + def delete_unsafe_attributes(attrs, user=User.current) + safe = safe_attribute_names(user) + attrs.dup.delete_if {|k,v| !safe.include?(k)} + end + + # Sets attributes from attrs that are safe + # attrs is a Hash with string keys + def safe_attributes=(attrs, user=User.current) + return unless attrs.is_a?(Hash) + self.attributes = delete_unsafe_attributes(attrs, user) + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/.svn/all-wcprops --- a/lib/redmine/scm/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4386/trunk/lib/redmine/scm +/svn/!svn/ver/4993/trunk/lib/redmine/scm END base.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/.svn/entries --- a/lib/redmine/scm/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm http://redmine.rubyforge.org/svn -2010-11-07T15:19:05.831621Z -4386 -jbbarth +2011-03-03T05:51:46.224821Z +4993 +tmaruyama @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.043748Z +2011-03-03T11:05:14.000000Z 3a053c03d210decd9105a24ff5e1aa8f 2010-02-16T22:41:59.625572Z 3440 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/.svn/all-wcprops --- a/lib/redmine/scm/adapters/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,53 +1,53 @@ K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4386/trunk/lib/redmine/scm/adapters +/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters END subversion_adapter.rb K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/3800/trunk/lib/redmine/scm/adapters/subversion_adapter.rb +/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/subversion_adapter.rb END bazaar_adapter.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/3723/trunk/lib/redmine/scm/adapters/bazaar_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/bazaar_adapter.rb END abstract_adapter.rb K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/3469/trunk/lib/redmine/scm/adapters/abstract_adapter.rb +/svn/!svn/ver/4959/trunk/lib/redmine/scm/adapters/abstract_adapter.rb END git_adapter.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4386/trunk/lib/redmine/scm/adapters/git_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/git_adapter.rb END mercurial_adapter.rb K 25 svn:wc:ra_dav:version-url V 70 -/svn/!svn/ver/3722/trunk/lib/redmine/scm/adapters/mercurial_adapter.rb +/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/mercurial_adapter.rb END filesystem_adapter.rb K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/1510/trunk/lib/redmine/scm/adapters/filesystem_adapter.rb +/svn/!svn/ver/4941/trunk/lib/redmine/scm/adapters/filesystem_adapter.rb END cvs_adapter.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/2135/trunk/lib/redmine/scm/adapters/cvs_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/cvs_adapter.rb END darcs_adapter.rb K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/2232/trunk/lib/redmine/scm/adapters/darcs_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/darcs_adapter.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/.svn/entries --- a/lib/redmine/scm/adapters/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters http://redmine.rubyforge.org/svn -2010-11-07T15:19:05.831621Z -4386 -jbbarth +2011-03-03T05:51:46.224821Z +4993 +tmaruyama @@ -32,11 +32,11 @@ -2010-09-23T14:37:45.043748Z -638ab1af3838c9e8d9f7688224ebf18b -2010-06-20T16:08:26.745839Z -3800 -edavis10 +2011-03-03T11:40:18.000000Z +7e0b7e8a12996f271854b48e2d7611e4 +2011-03-03T05:51:46.224821Z +4993 +tmaruyama @@ -58,7 +58,7 @@ -10736 +11535 bazaar_adapter.rb file @@ -66,11 +66,11 @@ -2010-09-23T14:37:45.039790Z -5a2dba12961234e4853397c87cef0b5e -2010-05-01T09:56:59.025016Z -3723 -jplang +2011-03-03T11:40:18.000000Z +2614557fb37905301939071ec226fe16 +2011-03-03T05:32:33.802461Z +4992 +tmaruyama has-props @@ -92,7 +92,7 @@ -7225 +8274 mercurial dir @@ -103,11 +103,11 @@ -2010-09-24T11:56:52.980004Z -b23f6bf941ce74af0650c41e1094ba8a -2010-02-21T14:38:34.467603Z -3469 -jplang +2011-03-03T11:40:18.000000Z +5cc0323dd42df9a3377099b0fdf9e95f +2011-02-28T04:46:42.639929Z +4959 +tmaruyama has-props @@ -129,7 +129,7 @@ -9610 +9832 git_adapter.rb file @@ -137,11 +137,11 @@ -2010-11-19T13:04:51.245032Z -6b1c25eff34500f43f3b7cf9c0a78bec -2010-11-07T15:19:05.831621Z -4386 -jbbarth +2011-03-03T11:40:18.000000Z +ba10ae64fed2363f2533aa558752be37 +2011-03-03T05:32:33.802461Z +4992 +tmaruyama has-props @@ -163,7 +163,7 @@ -9867 +11905 mercurial_adapter.rb file @@ -171,11 +171,11 @@ -2010-09-24T11:56:52.992085Z -c16d3e25388f47c99f1633eab2140ba7 -2010-05-01T09:55:40.597772Z -3722 -jplang +2011-03-03T11:40:18.000000Z +fe99380d7b29fe936554e10293751813 +2011-03-03T05:51:46.224821Z +4993 +tmaruyama has-props @@ -197,7 +197,7 @@ -8130 +11159 filesystem_adapter.rb file @@ -205,11 +205,11 @@ -2010-09-23T14:37:45.039790Z -5f311f051bcb17a87475757807f8a63e -2008-06-08T15:44:23.440995Z -1510 -jplang +2011-03-03T11:40:18.000000Z +4acd04cfa5dac0e54a35b8ef4a565217 +2011-02-24T05:58:59.661399Z +4941 +tmaruyama has-props @@ -231,7 +231,7 @@ -3509 +4266 cvs_adapter.rb file @@ -239,11 +239,11 @@ -2010-09-23T14:37:45.039790Z -19e0348377774a0c41b78a3f0a482284 -2008-12-14T15:57:13.349302Z -2135 -jplang +2011-03-03T11:40:18.000000Z +a3914eff33df4b5a05a108945137360b +2011-03-03T05:32:33.802461Z +4992 +tmaruyama has-props @@ -265,7 +265,7 @@ -13401 +14573 darcs_adapter.rb file @@ -273,11 +273,11 @@ -2010-09-23T14:37:45.039790Z -dc6df25045764c81cdfcdb441997823b -2009-01-04T13:27:48.560402Z -2232 -jplang +2011-03-03T11:40:18.000000Z +23725596dd2797f4dcdd5336e715c59a +2011-03-03T05:32:33.802461Z +4992 +tmaruyama has-props @@ -299,5 +299,5 @@ -7515 +8925 diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -19,25 +19,29 @@ module Redmine module Scm - module Adapters + module Adapters class CommandFailed < StandardError #:nodoc: end - + class AbstractAdapter #:nodoc: class << self + def client_command + "" + end + # Returns the version of the scm client # Eg: [1, 5, 0] or [] if unknown def client_version [] end - + # Returns the version string of the scm client # Eg: '1.5.0' or 'Unknown version' if unknown def client_version_string v = client_version || 'Unknown version' v.is_a?(Array) ? v.join('.') : v.to_s end - + # Returns true if the current client version is above # or equals the given one # If option is :unknown is set to true, it will return @@ -45,19 +49,32 @@ def client_version_above?(v, options={}) ((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown]) end + + def client_available + true + end + + def shell_quote(str) + if Redmine::Platform.mswin? + '"' + str.gsub(/"/, '\\"') + '"' + else + "'" + str.gsub(/'/, "'\"'\"'") + "'" + end + end end - - def initialize(url, root_url=nil, login=nil, password=nil) + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @root_url = root_url.blank? ? retrieve_root_url : root_url end - + def adapter_name 'Abstract' end - + def supports_cat? true end @@ -65,11 +82,11 @@ def supports_annotate? respond_to?('annotate') end - + def root_url @root_url end - + def url @url end @@ -138,7 +155,7 @@ path ||= '' (path[-1,1] == "/") ? path : "#{path}/" end - + def without_leading_slash(path) path ||= '' path.gsub(%r{^/+}, '') @@ -148,13 +165,9 @@ path ||= '' (path[-1,1] == "/") ? path[0..-2] : path end - + def shell_quote(str) - if Redmine::Platform.mswin? - '"' + str.gsub(/"/, '\\"') + '"' - else - "'" + str.gsub(/'/, "'\"'\"'") + "'" - end + self.class.shell_quote(str) end private @@ -168,19 +181,19 @@ base = path.match(/^\//) ? root_url : url shell_quote("#{base}/#{path}".gsub(/[?<>\*]/, '')) end - + def logger self.class.logger end - + def shellout(cmd, &block) self.class.shellout(cmd, &block) end - + def self.logger RAILS_DEFAULT_LOGGER end - + def self.shellout(cmd, &block) logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug? if Rails.env == 'development' @@ -188,7 +201,12 @@ cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log" end begin - IO.popen(cmd, "r+") do |io| + if RUBY_VERSION < '1.9' + mode = "r+" + else + mode = "r+:ASCII-8BIT" + end + IO.popen(cmd, mode) do |io| io.close_write block.call(io) if block_given? end @@ -198,8 +216,8 @@ logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}") raise CommandFailed.new(msg) end - end - + end + # Hides username/password in a given command def self.strip_credential(cmd) q = (Redmine::Platform.mswin? ? '"' : "'") @@ -209,8 +227,19 @@ def strip_credential(cmd) self.class.strip_credential(cmd) end + + def scm_iconv(to, from, str) + return nil if str.nil? + return str if to == from + begin + Iconv.conv(to, from, str) + rescue Iconv::Failure => err + logger.error("failed to convert from #{from} to #{to}. #{err}") + nil + end + end end - + class Entries < Array def sort_by_name sort {|x,y| @@ -219,7 +248,7 @@ else x.kind <=> y.kind end - } + } end def revisions @@ -271,7 +300,8 @@ end class Revision - attr_accessor :identifier, :scmid, :name, :author, :time, :message, :paths, :revision, :branch + attr_accessor :scmid, :name, :author, :time, :message, :paths, :revision, :branch + attr_writer :identifier def initialize(attributes={}) self.identifier = attributes[:identifier] @@ -285,28 +315,17 @@ self.branch = attributes[:branch] end - def save(repo) - Changeset.transaction do - changeset = Changeset.new( - :repository => repo, - :revision => identifier, - :scmid => scmid, - :committer => author, - :committed_on => time, - :comments => message) - - if changeset.save - paths.each do |file| - Change.create( - :changeset => changeset, - :action => file[:action], - :path => file[:path]) - end - end - end + # Returns the identifier of this revision; see also Changeset model + def identifier + (@identifier || revision).to_s + end + + # Returns the readable identifier. + def format_identifier + identifier end end - + class Annotate attr_reader :lines, :revisions diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -19,15 +19,47 @@ module Redmine module Scm - module Adapters + module Adapters class BazaarAdapter < AbstractAdapter - + # Bazaar executable name - BZR_BIN = "bzr" - + BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr" + + class << self + def client_command + @@bin ||= BZR_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(BZR_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_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 repository def info - cmd = "#{BZR_BIN} revno #{target('')}" + cmd = "#{self.class.sq_bin} revno #{target('')}" info = nil shellout(cmd) do |io| if io.read =~ %r{^(\d+)\r?$} @@ -43,13 +75,13 @@ 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 ||= '' entries = Entries.new - cmd = "#{BZR_BIN} ls -v --show-ids" + cmd = "#{self.class.sq_bin} ls -v --show-ids" identifier = -1 unless identifier && identifier.to_i > 0 cmd << " -r#{identifier.to_i}" cmd << " #{target(path)}" @@ -71,13 +103,13 @@ logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' - identifier_from = 'last:1' unless identifier_from and identifier_from.to_i > 0 - identifier_to = 1 unless identifier_to and identifier_to.to_i > 0 + identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : 'last:1' + identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1 revisions = Revisions.new - cmd = "#{BZR_BIN} log -v --show-ids -r#{identifier_to.to_i}..#{identifier_from} #{target(path)}" + cmd = "#{self.class.sq_bin} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}" shellout(cmd) do |io| revision = nil parsing = nil @@ -132,7 +164,7 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path ||= '' if identifier_to @@ -140,7 +172,10 @@ else identifier_to = identifier_from.to_i - 1 end - cmd = "#{BZR_BIN} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" + if identifier_from + identifier_from = identifier_from.to_i + end + cmd = "#{self.class.sq_bin} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -150,9 +185,9 @@ #return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{BZR_BIN} cat" + cmd = "#{self.class.sq_bin} cat" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" cat = nil @@ -163,9 +198,9 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) - cmd = "#{BZR_BIN} annotate --all" + cmd = "#{self.class.sq_bin} annotate --all" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" blame = Annotate.new diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -23,14 +23,47 @@ class CvsAdapter < AbstractAdapter # CVS executable name - CVS_BIN = "cvs" - + CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs" + + class << self + def client_command + @@bin ||= CVS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(CVS_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + client_version_above?([1, 12]) + end + + def scm_command_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) + 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 + # Guidelines for the input: # url -> the project-path, relative to the cvsroot (eg. module name) # root_url -> the good old, sometimes damned, CVSROOT # login -> unnecessary # password -> unnecessary too - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @@ -38,24 +71,24 @@ raise CommandFailed if root_url.blank? @root_url = root_url end - + def root_url @root_url end - + def url @url end - + def info logger.debug " info" Info.new({:root_url => @root_url, :lastrev => nil}) end - + def get_previous_revision(revision) CvsRevisionHelper.new(revision).prevRev end - + # 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) @@ -63,14 +96,14 @@ logger.debug " entries '#{path}' with identifier '#{identifier}'" path_with_project="#{url}#{with_leading_slash(path)}" entries = Entries.new - cmd = "#{CVS_BIN} -d #{root_url} rls -e" + 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) logger.debug(">>InspectLine #{fields.inspect}") - + if fields[0]!="D" entries << Entry.new({:name => fields[-5], #:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]), @@ -96,20 +129,20 @@ end return nil if $? && $?.exitstatus != 0 entries.sort_by_name - end + end STARTLOG="----------------------------" ENDLOG ="=============================================================================" - + # Returns all revisions found between identifier_from and identifier_to # 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 = "#{CVS_BIN} -d #{root_url} rlog" - cmd << " -d\">#{time_to_cvstime(identifier_from)}\"" if identifier_from + 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" @@ -123,7 +156,7 @@ file_state=nil branch_map=nil - io.each_line() do |line| + io.each_line() do |line| if state!="revision" && /^#{ENDLOG}/ =~ line commit_log=String.new @@ -162,9 +195,9 @@ end next elsif state=="revision" - if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line + if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line if revision - + revHelper=CvsRevisionHelper.new(revision) revBranch="HEAD" @@ -176,7 +209,7 @@ logger.debug("********** YIELD Revision #{revision}::#{revBranch}") - yield Revision.new({ + yield Revision.new({ :time => date, :author => author, :message=>commit_log.chomp, @@ -188,9 +221,9 @@ :kind=>'file', :action=>file_state }] - }) + }) end - + commit_log=String.new revision=nil @@ -199,7 +232,7 @@ end next end - + if /^branches: (.+)$/ =~ line #TODO: version.branch = $1 elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line @@ -216,20 +249,20 @@ # version.line_minus = linechanges[2] # else # version.line_plus = 0 - # version.line_minus = 0 - # end - else + # version.line_minus = 0 + # end + else commit_log << line unless line =~ /^\*\*\* empty log message \*\*\*/ - end - end + end + end end end - end - + 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 = "#{CVS_BIN} -d #{root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -238,28 +271,29 @@ end return nil if $? && $?.exitstatus != 0 diff - end - + 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 = "#{CVS_BIN} -d #{root_url} co" + 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}" cat = nil shellout(cmd) do |io| + io.binmode cat = io.read end return nil if $? && $?.exitstatus != 0 cat - end + end def annotate(path, identifier=nil) - identifier = (identifier) ? identifier : "HEAD" + identifier = (identifier) ? identifier.to_i : "HEAD" logger.debug " annotate path:'#{path}',identifier #{identifier}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" blame = Annotate.new shellout(cmd) do |io| io.each_line do |line| @@ -270,9 +304,9 @@ return nil if $? && $?.exitstatus != 0 blame end - + private - + # Returns the root url without the connexion string # :pserver:anonymous@foo.bar:/path => /path # :ext:cvsservername:/path => /path @@ -283,11 +317,19 @@ # convert a date/time into the CVS-format def time_to_cvstime(time) return nil if time.nil? + return Time.now if time == 'HEAD' + unless time.kind_of? Time time = Time.parse(time) end return time.strftime("%Y-%m-%d %H:%M:%S") end + + def time_to_cvstime_rlog(time) + return nil if time.nil? + t1 = time.clone.localtime + return t1.strftime("%Y-%m-%d %H:%M:%S") + end def normalize_cvs_path(path) normalize_path(path.gsub(/Attic\//,'')) @@ -337,7 +379,11 @@ private def buildRevision(rev) if rev== 0 - @base + if @branchid.nil? + @base+".0" + else + @base + end elsif @branchid.nil? @base+"."+rev.to_s else diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -20,31 +20,45 @@ module Redmine module Scm - module Adapters - class DarcsAdapter < AbstractAdapter + module Adapters + class DarcsAdapter < AbstractAdapter # Darcs executable name - DARCS_BIN = "darcs" - + DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs" + class << self + def client_command + @@bin ||= DARCS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(DARCS_BIN) + end + def client_version @@client_version ||= (darcs_binary_version || []) end - + + def client_available + !client_version.empty? + end + def darcs_binary_version - cmd = "#{DARCS_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read darcs version in first returned line - if m = io.gets.match(%r{((\d+\.)+\d+)}) - version = m[0].scan(%r{\d+}).collect(&:to_i) - end + darcsversion = darcs_binary_version_from_command_line.dup + if darcsversion.respond_to?(:force_encoding) + darcsversion.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def darcs_binary_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @root_url = url end @@ -59,14 +73,16 @@ rev = revisions(nil,nil,nil,{:limit => 1}) rev ? Info.new({:root_url => @url, :lastrev => rev.last}) : 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_prefix = (path.blank? ? '' : "#{path}/") - path = '.' if path.blank? - entries = Entries.new - cmd = "#{DARCS_BIN} annotate --repodir #{@url} --xml-output" + if path.blank? + path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' ) + end + entries = Entries.new + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --xml-output" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" shellout(cmd) do |io| @@ -86,11 +102,11 @@ return nil if $? && $?.exitstatus != 0 entries.compact.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path = '.' if path.blank? revisions = Revisions.new - cmd = "#{DARCS_BIN} changes --repodir #{@url} --xml-output" + cmd = "#{self.class.sq_bin} changes --repodir #{shell_quote @url} --xml-output" cmd << " --from-match #{shell_quote("hash #{identifier_from}")}" if identifier_from cmd << " --last #{options[:limit].to_i}" if options[:limit] shellout(cmd) do |io| @@ -113,10 +129,10 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path = '*' if path.blank? - cmd = "#{DARCS_BIN} diff --repodir #{@url}" + cmd = "#{self.class.sq_bin} diff --repodir #{shell_quote @url}" if identifier_to.nil? cmd << " --match #{shell_quote("hash #{identifier_from}")}" else @@ -133,9 +149,9 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{DARCS_BIN} show content --repodir #{@url}" + cmd = "#{self.class.sq_bin} show content --repodir #{shell_quote @url}" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" cat = nil @@ -148,7 +164,7 @@ end private - + # Returns an Entry from the given XML element # or nil if the entry was deleted def entry_from_xml(element, path_prefix) @@ -156,7 +172,7 @@ if modified_element.elements['modified_how'].text.match(/removed/) return nil end - + Entry.new({:name => element.attributes['name'], :path => path_prefix + element.attributes['name'], :kind => element.name == 'file' ? 'file' : 'dir', @@ -165,12 +181,41 @@ :identifier => nil, :scmid => modified_element.elements['patch'].attributes['hash'] }) - }) + }) end - + + def get_paths_for_patch(hash) + paths = get_paths_for_patch_raw(hash) + if self.class.client_version_above?([2, 4]) + orig_paths = paths + paths = [] + add_paths = [] + add_paths_name = [] + mod_paths = [] + other_paths = [] + orig_paths.each do |path| + if path[:action] == 'A' + add_paths << path + add_paths_name << path[:path] + elsif path[:action] == 'M' + mod_paths << path + else + other_paths << path + end + end + add_paths_name.each do |add_path| + mod_paths.delete_if { |m| m[:path] == add_path } + end + paths.concat add_paths + paths.concat mod_paths + paths.concat other_paths + end + paths + end + # Retrieve changed paths for a single patch - def get_paths_for_patch(hash) - cmd = "#{DARCS_BIN} annotate --repodir #{@url} --summary --xml-output" + def get_paths_for_patch_raw(hash) + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --summary --xml-output" cmd << " --match #{shell_quote("hash #{hash}")} " paths = [] shellout(cmd) do |io| diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -23,12 +23,19 @@ module Redmine module Scm - module Adapters + module Adapters class FilesystemAdapter < AbstractAdapter - - def initialize(url, root_url=nil, login=nil, password=nil) + class << self + def client_available + true + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = with_trailling_slash(url) + @path_encoding = path_encoding || 'UTF-8' end def format_path_ends(path, leading=true, trailling=true) @@ -46,47 +53,59 @@ rescue CommandFailed return nil end - + def entries(path="", identifier=nil) entries = Entries.new - Dir.new(target(path)).each do |e| - relative_path = format_path_ends((format_path_ends(path, - false, - true) + e), - false,false) - target = target(relative_path) - entries << - Entry.new({ :name => File.basename(e), + 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) + 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) + e1 = scm_iconv(@path_encoding, 'UTF-8', e_utf8) + if File.exist?(t1) and # paranoid test + %w{file directory}.include?(File.ftype(t1)) and # avoid special types + not File.basename(e1).match(/^\.+$/) # avoid . and .. + p1 = File.readable?(t1) ? relative_path : "" + utf_8_path = scm_iconv('UTF-8', @path_encoding, p1) + entries << + Entry.new({ :name => scm_iconv('UTF-8', @path_encoding, File.basename(e1)), # below : list unreadable files, but dont link them. - :path => File.readable?(target) ? relative_path : "", - :kind => (File.directory?(target) ? 'dir' : 'file'), - :size => (File.directory?(target) ? nil : [File.size(target)].pack('l').unpack('L').first), + :path => utf_8_path, + :kind => (File.directory?(t1) ? 'dir' : 'file'), + :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first), :lastrev => - Revision.new({:time => (File.mtime(target)).localtime, - }) - }) if File.exist?(target) and # paranoid test - %w{file directory}.include?(File.ftype(target)) and # avoid special types - not File.basename(e).match(/^\.+$/) # avoid . and .. + Revision.new({:time => (File.mtime(t1)) }) + }) + end end entries.sort_by_name + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end - + def cat(path, identifier=nil) - File.new(target(path), "rb").read + p = scm_iconv(@path_encoding, 'UTF-8', target(path)) + File.new(p, "rb").read + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end private - + # AbstractAdapter::target is implicitly made to quote paths. # Here we do not shell-out, so we do not want quotes. def target(path=nil) - #Prevent the use of .. + # Prevent the use of .. if path and !path.match(/(^|\/)\.\.(\/|$)/) return "#{self.url}#{without_leading_slash(path)}" end return self.url end - end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -19,10 +19,53 @@ module Redmine module Scm - module Adapters + module Adapters class GitAdapter < AbstractAdapter + + SCM_GIT_REPORT_LAST_COMMIT = true + # Git executable name - GIT_BIN = "git" + GIT_BIN = Redmine::Configuration['scm_git_command'] || "git" + + # raised if scm command exited with error, e.g. unknown revision. + class ScmCommandAborted < CommandFailed; end + + class << self + def client_command + @@bin ||= GIT_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(GIT_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_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 --no-color") { |io| io.read }.to_s + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT + end def info begin @@ -35,7 +78,7 @@ def branches return @branches if @branches @branches = [] - cmd = "#{GIT_BIN} --git-dir #{target('')} branch --no-color" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color" shellout(cmd) do |io| io.each_line do |line| @branches << line.match('\s*\*?\s*(.*)$')[1] @@ -46,20 +89,20 @@ def tags return @tags if @tags - cmd = "#{GIT_BIN} --git-dir #{target('')} tag" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag" shellout(cmd) do |io| @tags = io.readlines.sort!.map{|t| t.strip} end end def default_branch - branches.include?('master') ? 'master' : branches.first + branches.include?('master') ? 'master' : branches.first end - + def entries(path=nil, identifier=nil) path ||= '' entries = Entries.new - cmd = "#{GIT_BIN} --git-dir #{target('')} ls-tree -l " + 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| @@ -75,7 +118,7 @@ :path => full_path, :kind => (type == "tree") ? 'dir' : 'file', :size => (type == "tree") ? nil : size, - :lastrev => lastrev(full_path,identifier) + :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new }) unless entries.detect{|entry| entry.name == name} end end @@ -84,17 +127,17 @@ entries.sort_by_name end - def lastrev(path,rev) + def lastrev(path, rev) return nil if path.nil? - cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --date=iso --pretty=fuller --no-merges -n 1 " - cmd << " #{shell_quote rev} " if rev - cmd << "-- #{shell_quote path} " unless path.empty? - shellout(cmd) do |io| - begin - id = io.gets.split[1] - author = io.gets.match('Author:\s+(.*)$')[1] - 2.times { io.gets } - time = Time.parse(io.gets.match('CommitDate:\s+(.*)$')[1]).localtime + cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1| + cmd_args << rev if rev + cmd_args << "--" << path unless path.empty? + lines = [] + scm_cmd(*cmd_args) { |io| lines = io.readlines } + begin + id = lines[0].split[1] + author = lines[1].match('Author:\s+(.*)$')[1] + time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]) Revision.new({ :identifier => id, @@ -103,27 +146,29 @@ :time => time, :message => nil, :paths => nil - }) - rescue NoMethodError => e + }) + rescue NoMethodError => e logger.error("The revision '#{path}' has a wrong format") return nil - end end + rescue ScmCommandAborted + nil end def revisions(path, identifier_from, identifier_to, options={}) revisions = 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] + cmd_args << "-n" << "#{options[:limit].to_i}" if options[:limit] + from_to = "" + from_to << "#{identifier_from}.." if identifier_from + 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 = "#{GIT_BIN} --git-dir #{target('')} log --no-color --raw --date=iso --pretty=fuller " - cmd << " --reverse " if options[:reverse] - cmd << " --all " if options[:all] - cmd << " -n #{options[:limit]} " if options[:limit] - cmd << "#{shell_quote(identifier_from + '..')}" if identifier_from - cmd << "#{shell_quote identifier_to}" if identifier_to - cmd << " --since=#{shell_quote(options[:since].strftime("%Y-%m-%d %H:%M:%S"))}" if options[:since] - cmd << " -- #{shell_quote path}" if path && !path.empty? - - shellout(cmd) do |io| + scm_cmd *cmd_args do |io| files=[] changeset = {} parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files @@ -200,8 +245,8 @@ end end end - - return nil if $? && $?.exitstatus != 0 + revisions + rescue ScmCommandAborted revisions end @@ -209,9 +254,9 @@ path ||= '' if identifier_to - cmd = "#{GIT_BIN} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" else - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" end cmd << " -- #{shell_quote path}" unless path.empty? @@ -227,7 +272,7 @@ def annotate(path, identifier=nil) identifier = 'HEAD' if identifier.blank? - cmd = "#{GIT_BIN} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" blame = Annotate.new content = nil shellout(cmd) { |io| io.binmode; content = io.read } @@ -250,12 +295,12 @@ end blame end - + def cat(path, identifier=nil) if identifier.nil? identifier = 'HEAD' end - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" cat = nil shellout(cmd) do |io| io.binmode @@ -264,6 +309,25 @@ return nil if $? && $?.exitstatus != 0 cat end + + class Revision < Redmine::Scm::Adapters::Revision + # Returns the readable identifier + def format_identifier + identifier[0,8] + end + end + + def scm_cmd(*args, &block) + repo_path = root_url || url + full_args = [GIT_BIN, '--git-dir', repo_path] + full_args += args + ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :scm_cmd end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -16,189 +16,297 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/abstract_adapter' +require 'cgi' module Redmine module Scm - module Adapters + module Adapters class MercurialAdapter < AbstractAdapter - + # Mercurial executable name - HG_BIN = "hg" - TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial" + HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg" + HELPERS_DIR = File.dirname(__FILE__) + "/mercurial" + HG_HELPER_EXT = "#{HELPERS_DIR}/redminehelper.py" TEMPLATE_NAME = "hg-template" TEMPLATE_EXTENSION = "tmpl" - + + # raised if hg command exited with error, e.g. unknown revision. + class HgCommandAborted < CommandFailed; end + class << self + def client_command + @@bin ||= HG_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(HG_BIN) + end + def client_version @@client_version ||= (hgversion || []) end - - def hgversion + + def client_available + !client_version.empty? + end + + def hgversion # The hg version is expressed either as a # release number (eg 0.9.5 or 1.0) or as a revision # id composed of 12 hexa characters. - theversion = hgversion_from_command_line - if theversion.match(/^\d+(\.\d+)+/) - theversion.split(".").collect(&:to_i) + theversion = hgversion_from_command_line.dup + if theversion.respond_to?(:force_encoding) + theversion.force_encoding('ASCII-8BIT') + end + if m = theversion.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) end end - + def hgversion_from_command_line - %x{#{HG_BIN} --version}.match(/\(version (.*)\)/)[1] + shellout("#{sq_bin} --version") { |io| io.read }.to_s end - + def template_path @@template_path ||= template_path_for(client_version) end - + def template_path_for(version) if ((version <=> [0,9,5]) > 0) || version.empty? ver = "1.0" else ver = "0.9.5" end - "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" + "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" end end - + + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @path_encoding = path_encoding || 'UTF-8' + end + def info - cmd = "#{HG_BIN} -R #{target('')} root" - root_url = nil - shellout(cmd) do |io| - root_url = io.read + tip = summary['repository']['tip'] + Info.new(:root_url => CGI.unescape(summary['repository']['root']), + :lastrev => Revision.new(:revision => tip['revision'], + :scmid => tip['node'])) + end + + def tags + as_ary(summary['repository']['tag']).map { |e| e['name'] } + end + + # Returns map of {'tag' => 'nodeid', ...} + def tagmap + alist = as_ary(summary['repository']['tag']).map do |e| + e.values_at('name', 'node') end - return nil if $? && $?.exitstatus != 0 - info = Info.new({:root_url => root_url.chomp, - :lastrev => revisions(nil,nil,nil,{:limit => 1}).last - }) - info - rescue CommandFailed - return nil + Hash[*alist.flatten] end - - def entries(path=nil, identifier=nil) - path ||= '' - entries = Entries.new - cmd = "#{HG_BIN} -R #{target('')} --cwd #{target('')} locate" - cmd << " -r " + (identifier ? identifier.to_s : "tip") - cmd << " " + shell_quote("path:#{path}") unless path.empty? - shellout(cmd) do |io| - io.each_line do |line| - # HG uses antislashs as separator on Windows - line = line.gsub(/\\/, "/") - if path.empty? or e = line.gsub!(%r{^#{with_trailling_slash(path)}},'') - e ||= line - e = e.chomp.split(%r{[\/\\]}) - entries << Entry.new({:name => e.first, - :path => (path.nil? or path.empty? ? e.first : "#{with_trailling_slash(path)}#{e.first}"), - :kind => (e.size > 1 ? 'dir' : 'file'), - :lastrev => Revision.new - }) unless e.empty? || entries.detect{|entry| entry.name == e.first} - end + + def branches + as_ary(summary['repository']['branch']).map { |e| e['name'] } + end + + # Returns map of {'branch' => 'nodeid', ...} + def branchmap + alist = as_ary(summary['repository']['branch']).map do |e| + e.values_at('name', 'node') + end + Hash[*alist.flatten] + end + + def summary + return @summary if @summary + hg 'rhsummary' do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + @summary = ActiveSupport::XmlMini.parse(output)['rhsummary'] + rescue end end - return nil if $? && $?.exitstatus != 0 - entries.sort_by_name end - - # Fetch the revisions by using a template file that - # makes Mercurial produce a xml output. - def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) - revisions = Revisions.new - cmd = "#{HG_BIN} --debug --encoding utf8 -R #{target('')} log -C --style #{shell_quote self.class.template_path}" - if identifier_from && identifier_to - cmd << " -r #{identifier_from.to_i}:#{identifier_to.to_i}" - elsif identifier_from - cmd << " -r #{identifier_from.to_i}:" - end - cmd << " --limit #{options[:limit].to_i}" if options[:limit] - cmd << " #{path}" if path - shellout(cmd) do |io| + private :summary + + def entries(path=nil, identifier=nil) + 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| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin - # HG doesn't close the XML Document... - doc = REXML::Document.new(io.read << "") - doc.elements.each("log/logentry") do |logentry| - paths = [] - copies = logentry.get_elements('paths/path-copied') - logentry.elements.each("paths/path") do |path| - # Detect if the added file is a copy - if path.attributes['action'] == 'A' and c = copies.find{ |e| e.text == path.text } - from_path = c.attributes['copyfrom-path'] - from_rev = logentry.attributes['revision'] - end - paths << {:action => path.attributes['action'], - :path => "/#{path.text}", - :from_path => from_path ? "/#{from_path}" : nil, - :from_revision => from_rev ? from_rev : nil - } - end - paths.sort! { |x,y| x[:path] <=> y[:path] } - - revisions << Revision.new({:identifier => logentry.attributes['revision'], - :scmid => logentry.attributes['node'], - :author => (logentry.elements['author'] ? logentry.elements['author'].text : ""), - :time => Time.parse(logentry.elements['date'].text).localtime, - :message => logentry.elements['msg'].text, - :paths => paths - }) - end + ActiveSupport::XmlMini.parse(output)['rhmanifest']['repository']['manifest'] rescue - logger.debug($!) end end - return nil if $? && $?.exitstatus != 0 - revisions + path_prefix = path.blank? ? '' : with_trailling_slash(path) + + entries = Entries.new + as_ary(manifest['dir']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + entries << Entry.new(:name => n, :path => p, :kind => 'dir') + end + + as_ary(manifest['file']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + lr = Revision.new(:revision => e['revision'], :scmid => e['node'], + :identifier => e['node'], + :time => Time.at(e['time'].to_i)) + entries << Entry.new(:name => n, :path => p, :kind => 'file', + :size => e['size'].to_i, :lastrev => lr) + end + + entries + rescue HgCommandAborted + nil # means not found end - + + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) + revs = Revisions.new + each_revision(path, identifier_from, identifier_to, options) { |e| revs << e } + revs + end + + # Iterates the revisions by using a template file that + # makes Mercurial produce a xml output. + def each_revision(path=nil, identifier_from=nil, identifier_to=nil, options={}) + hg_args = ['log', '--debug', '-C', '--style', self.class.template_path] + hg_args << '-r' << "#{hgrev(identifier_from)}:#{hgrev(identifier_to)}" + hg_args << '--limit' << options[:limit] if options[:limit] + hg_args << hgtarget(path) unless path.blank? + log = hg(*hg_args) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + # Mercurial < 1.5 does not support footer template for '' + ActiveSupport::XmlMini.parse("#{output}")['log'] + 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) } + 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)} + 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) + end + self + end + def diff(path, identifier_from, identifier_to=nil) - path ||= '' + hg_args = %w|rhdiff| if identifier_to - identifier_to = identifier_to.to_i + hg_args << '-r' << hgrev(identifier_to) << '-r' << hgrev(identifier_from) else - identifier_to = identifier_from.to_i - 1 + hg_args << '-c' << hgrev(identifier_from) end - cmd = "#{HG_BIN} -R #{target('')} diff -r #{identifier_to} -r #{identifier_from} --nodates" - cmd << " -I #{target(path)}" unless path.empty? + unless path.blank? + p = scm_iconv(@path_encoding, 'UTF-8', path) + hg_args << CGI.escape(hgtarget(p)) + end diff = [] - shellout(cmd) do |io| + hg *hg_args do |io| io.each_line do |line| diff << line end end - return nil if $? && $?.exitstatus != 0 diff + rescue HgCommandAborted + nil # means not found end - + def cat(path, identifier=nil) - cmd = "#{HG_BIN} -R #{target('')} cat" - cmd << " -r " + (identifier ? identifier.to_s : "tip") - cmd << " #{target(path)}" - cat = nil - shellout(cmd) do |io| + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) + hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io| io.binmode - cat = io.read + io.read end - return nil if $? && $?.exitstatus != 0 - cat + rescue HgCommandAborted + nil # means not found end - + def annotate(path, identifier=nil) - path ||= '' - cmd = "#{HG_BIN} -R #{target('')}" - cmd << " annotate -n -u" - cmd << " -r " + (identifier ? identifier.to_s : "tip") - cmd << " -r #{identifier.to_i}" if identifier - cmd << " #{target(path)}" + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) blame = Annotate.new - shellout(cmd) do |io| + hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io| io.each_line do |line| - next unless line =~ %r{^([^:]+)\s(\d+):(.*)$} - blame.add_line($3.rstrip, Revision.new(:identifier => $2.to_i, :author => $1.strip)) + line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding) + next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$} + r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3, + :identifier => $3) + blame.add_line($4.rstrip, r) end end - return nil if $? && $?.exitstatus != 0 blame + rescue HgCommandAborted + nil # means not found or cannot be annotated end + + class Revision < Redmine::Scm::Adapters::Revision + # Returns the readable identifier + def format_identifier + "#{revision}:#{scmid}" + end + end + + # Runs 'hg' command with the given args + def hg(*args, &block) + repo_path = root_url || url + full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8'] + full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}" + full_args << '--config' << 'diff.git=false' + full_args += args + ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :hg + + # Returns correct revision identifier + def hgrev(identifier, sq=false) + rev = identifier.blank? ? 'tip' : identifier.to_s + rev = shell_quote(rev) if sq + rev + end + private :hgrev + + def hgtarget(path) + path ||= '' + root_url + '/' + without_leading_slash(path) + end + private :hgtarget + + def as_ary(o) + return [] unless o + o.is_a?(Array) ? o : Array[o] + end + private :as_ary end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 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 Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -20,38 +20,54 @@ module Redmine module Scm - module Adapters + module Adapters class SubversionAdapter < AbstractAdapter - + # SVN executable name - SVN_BIN = "svn" - + 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 - cmd = "#{SVN_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read svn version in first returned line - if m = io.gets.to_s.match(%r{((\d+\.)+\d+)}) - version = m[0].scan(%r{\d+}).collect(&:to_i) - end + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + 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 = "#{SVN_BIN} info --xml #{target}" + 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 @@ -70,17 +86,20 @@ 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 = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}" + 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| @@ -110,17 +129,20 @@ 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 = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}" + 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| @@ -132,19 +154,22 @@ return nil if $? && $?.exitstatus != 0 properties end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' - identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" - identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1 + 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 = "#{SVN_BIN} log --xml -r #{identifier_from}:#{identifier_to}" + 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| @@ -171,13 +196,14 @@ 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 = "#{SVN_BIN} diff -r " + + cmd = "#{self.class.sq_bin} diff -r " cmd << "#{identifier_to}:" cmd << "#{identifier_from}" cmd << " #{target(path)}@#{identifier_from}" @@ -191,10 +217,10 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} cat #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" cmd << credentials_string cat = nil shellout(cmd) do |io| @@ -204,10 +230,10 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} blame #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" cmd << credentials_string blame = Annotate.new shellout(cmd) do |io| diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/abstract_adapter.rb --- a/lib/redmine/scm/adapters/abstract_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/abstract_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -19,25 +19,29 @@ module Redmine module Scm - module Adapters + module Adapters class CommandFailed < StandardError #:nodoc: end - + class AbstractAdapter #:nodoc: class << self + def client_command + "" + end + # Returns the version of the scm client # Eg: [1, 5, 0] or [] if unknown def client_version [] end - + # Returns the version string of the scm client # Eg: '1.5.0' or 'Unknown version' if unknown def client_version_string v = client_version || 'Unknown version' v.is_a?(Array) ? v.join('.') : v.to_s end - + # Returns true if the current client version is above # or equals the given one # If option is :unknown is set to true, it will return @@ -45,19 +49,32 @@ def client_version_above?(v, options={}) ((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown]) end + + def client_available + true + end + + def shell_quote(str) + if Redmine::Platform.mswin? + '"' + str.gsub(/"/, '\\"') + '"' + else + "'" + str.gsub(/'/, "'\"'\"'") + "'" + end + end end - - def initialize(url, root_url=nil, login=nil, password=nil) + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @root_url = root_url.blank? ? retrieve_root_url : root_url end - + def adapter_name 'Abstract' end - + def supports_cat? true end @@ -65,11 +82,11 @@ def supports_annotate? respond_to?('annotate') end - + def root_url @root_url end - + def url @url end @@ -138,7 +155,7 @@ path ||= '' (path[-1,1] == "/") ? path : "#{path}/" end - + def without_leading_slash(path) path ||= '' path.gsub(%r{^/+}, '') @@ -148,13 +165,9 @@ path ||= '' (path[-1,1] == "/") ? path[0..-2] : path end - + def shell_quote(str) - if Redmine::Platform.mswin? - '"' + str.gsub(/"/, '\\"') + '"' - else - "'" + str.gsub(/'/, "'\"'\"'") + "'" - end + self.class.shell_quote(str) end private @@ -168,19 +181,19 @@ base = path.match(/^\//) ? root_url : url shell_quote("#{base}/#{path}".gsub(/[?<>\*]/, '')) end - + def logger self.class.logger end - + def shellout(cmd, &block) self.class.shellout(cmd, &block) end - + def self.logger RAILS_DEFAULT_LOGGER end - + def self.shellout(cmd, &block) logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug? if Rails.env == 'development' @@ -188,7 +201,12 @@ cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log" end begin - IO.popen(cmd, "r+") do |io| + if RUBY_VERSION < '1.9' + mode = "r+" + else + mode = "r+:ASCII-8BIT" + end + IO.popen(cmd, mode) do |io| io.close_write block.call(io) if block_given? end @@ -198,8 +216,8 @@ logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}") raise CommandFailed.new(msg) end - end - + end + # Hides username/password in a given command def self.strip_credential(cmd) q = (Redmine::Platform.mswin? ? '"' : "'") @@ -209,8 +227,19 @@ def strip_credential(cmd) self.class.strip_credential(cmd) end + + def scm_iconv(to, from, str) + return nil if str.nil? + return str if to == from + begin + Iconv.conv(to, from, str) + rescue Iconv::Failure => err + logger.error("failed to convert from #{from} to #{to}. #{err}") + nil + end + end end - + class Entries < Array def sort_by_name sort {|x,y| @@ -219,7 +248,7 @@ else x.kind <=> y.kind end - } + } end def revisions @@ -286,34 +315,17 @@ self.branch = attributes[:branch] end - # Returns the identifier of this revision. - # e.g. revision number for centralized system; hash id for DVCS + # Returns the identifier of this revision; see also Changeset model def identifier - @identifier || scmid || revision + (@identifier || revision).to_s end - def save(repo) - Changeset.transaction do - changeset = Changeset.new( - :repository => repo, - :revision => identifier, - :scmid => scmid, - :committer => author, - :committed_on => time, - :comments => message) - - if changeset.save - paths.each do |file| - Change.create( - :changeset => changeset, - :action => file[:action], - :path => file[:path]) - end - end - end + # Returns the readable identifier. + def format_identifier + identifier end end - + class Annotate attr_reader :lines, :revisions diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/bazaar_adapter.rb --- a/lib/redmine/scm/adapters/bazaar_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/bazaar_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -19,15 +19,47 @@ module Redmine module Scm - module Adapters + module Adapters class BazaarAdapter < AbstractAdapter - + # Bazaar executable name - BZR_BIN = "bzr" - + BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr" + + class << self + def client_command + @@bin ||= BZR_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(BZR_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_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 repository def info - cmd = "#{BZR_BIN} revno #{target('')}" + cmd = "#{self.class.sq_bin} revno #{target('')}" info = nil shellout(cmd) do |io| if io.read =~ %r{^(\d+)\r?$} @@ -43,13 +75,13 @@ 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 ||= '' entries = Entries.new - cmd = "#{BZR_BIN} ls -v --show-ids" + cmd = "#{self.class.sq_bin} ls -v --show-ids" identifier = -1 unless identifier && identifier.to_i > 0 cmd << " -r#{identifier.to_i}" cmd << " #{target(path)}" @@ -71,13 +103,13 @@ logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' - identifier_from = 'last:1' unless identifier_from and identifier_from.to_i > 0 - identifier_to = 1 unless identifier_to and identifier_to.to_i > 0 + identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : 'last:1' + identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1 revisions = Revisions.new - cmd = "#{BZR_BIN} log -v --show-ids -r#{identifier_to.to_i}..#{identifier_from} #{target(path)}" + cmd = "#{self.class.sq_bin} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}" shellout(cmd) do |io| revision = nil parsing = nil @@ -132,7 +164,7 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path ||= '' if identifier_to @@ -140,7 +172,10 @@ else identifier_to = identifier_from.to_i - 1 end - cmd = "#{BZR_BIN} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" + if identifier_from + identifier_from = identifier_from.to_i + end + cmd = "#{self.class.sq_bin} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -150,9 +185,9 @@ #return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{BZR_BIN} cat" + cmd = "#{self.class.sq_bin} cat" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" cat = nil @@ -163,9 +198,9 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) - cmd = "#{BZR_BIN} annotate --all" + cmd = "#{self.class.sq_bin} annotate --all" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" blame = Annotate.new diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/cvs_adapter.rb --- a/lib/redmine/scm/adapters/cvs_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/cvs_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -23,14 +23,47 @@ class CvsAdapter < AbstractAdapter # CVS executable name - CVS_BIN = "cvs" - + CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs" + + class << self + def client_command + @@bin ||= CVS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(CVS_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + client_version_above?([1, 12]) + end + + def scm_command_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) + 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 + # Guidelines for the input: # url -> the project-path, relative to the cvsroot (eg. module name) # root_url -> the good old, sometimes damned, CVSROOT # login -> unnecessary # password -> unnecessary too - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @@ -38,24 +71,24 @@ raise CommandFailed if root_url.blank? @root_url = root_url end - + def root_url @root_url end - + def url @url end - + def info logger.debug " info" Info.new({:root_url => @root_url, :lastrev => nil}) end - + def get_previous_revision(revision) CvsRevisionHelper.new(revision).prevRev end - + # 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) @@ -63,14 +96,14 @@ logger.debug " entries '#{path}' with identifier '#{identifier}'" path_with_project="#{url}#{with_leading_slash(path)}" entries = Entries.new - cmd = "#{CVS_BIN} -d #{root_url} rls -e" + 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) logger.debug(">>InspectLine #{fields.inspect}") - + if fields[0]!="D" entries << Entry.new({:name => fields[-5], #:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]), @@ -96,20 +129,20 @@ end return nil if $? && $?.exitstatus != 0 entries.sort_by_name - end + end STARTLOG="----------------------------" ENDLOG ="=============================================================================" - + # Returns all revisions found between identifier_from and identifier_to # 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 = "#{CVS_BIN} -d #{root_url} rlog" - cmd << " -d\">#{time_to_cvstime(identifier_from)}\"" if identifier_from + 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" @@ -123,7 +156,7 @@ file_state=nil branch_map=nil - io.each_line() do |line| + io.each_line() do |line| if state!="revision" && /^#{ENDLOG}/ =~ line commit_log=String.new @@ -162,9 +195,9 @@ end next elsif state=="revision" - if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line + if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line if revision - + revHelper=CvsRevisionHelper.new(revision) revBranch="HEAD" @@ -176,7 +209,7 @@ logger.debug("********** YIELD Revision #{revision}::#{revBranch}") - yield Revision.new({ + yield Revision.new({ :time => date, :author => author, :message=>commit_log.chomp, @@ -188,9 +221,9 @@ :kind=>'file', :action=>file_state }] - }) + }) end - + commit_log=String.new revision=nil @@ -199,7 +232,7 @@ end next end - + if /^branches: (.+)$/ =~ line #TODO: version.branch = $1 elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line @@ -216,20 +249,20 @@ # version.line_minus = linechanges[2] # else # version.line_plus = 0 - # version.line_minus = 0 - # end - else + # version.line_minus = 0 + # end + else commit_log << line unless line =~ /^\*\*\* empty log message \*\*\*/ - end - end + end + end end end - end - + 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 = "#{CVS_BIN} -d #{root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -238,28 +271,29 @@ end return nil if $? && $?.exitstatus != 0 diff - end - + 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 = "#{CVS_BIN} -d #{root_url} co" + 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}" cat = nil shellout(cmd) do |io| + io.binmode cat = io.read end return nil if $? && $?.exitstatus != 0 cat - end + end def annotate(path, identifier=nil) - identifier = (identifier) ? identifier : "HEAD" + identifier = (identifier) ? identifier.to_i : "HEAD" logger.debug " annotate path:'#{path}',identifier #{identifier}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" blame = Annotate.new shellout(cmd) do |io| io.each_line do |line| @@ -270,9 +304,9 @@ return nil if $? && $?.exitstatus != 0 blame end - + private - + # Returns the root url without the connexion string # :pserver:anonymous@foo.bar:/path => /path # :ext:cvsservername:/path => /path @@ -283,11 +317,19 @@ # convert a date/time into the CVS-format def time_to_cvstime(time) return nil if time.nil? + return Time.now if time == 'HEAD' + unless time.kind_of? Time time = Time.parse(time) end return time.strftime("%Y-%m-%d %H:%M:%S") end + + def time_to_cvstime_rlog(time) + return nil if time.nil? + t1 = time.clone.localtime + return t1.strftime("%Y-%m-%d %H:%M:%S") + end def normalize_cvs_path(path) normalize_path(path.gsub(/Attic\//,'')) @@ -337,7 +379,11 @@ private def buildRevision(rev) if rev== 0 - @base + if @branchid.nil? + @base+".0" + else + @base + end elsif @branchid.nil? @base+"."+rev.to_s else diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/darcs_adapter.rb --- a/lib/redmine/scm/adapters/darcs_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/darcs_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -20,31 +20,45 @@ module Redmine module Scm - module Adapters - class DarcsAdapter < AbstractAdapter + module Adapters + class DarcsAdapter < AbstractAdapter # Darcs executable name - DARCS_BIN = "darcs" - + DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs" + class << self + def client_command + @@bin ||= DARCS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(DARCS_BIN) + end + def client_version @@client_version ||= (darcs_binary_version || []) end - + + def client_available + !client_version.empty? + end + def darcs_binary_version - cmd = "#{DARCS_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read darcs version in first returned line - if m = io.gets.match(%r{((\d+\.)+\d+)}) - version = m[0].scan(%r{\d+}).collect(&:to_i) - end + darcsversion = darcs_binary_version_from_command_line.dup + if darcsversion.respond_to?(:force_encoding) + darcsversion.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def darcs_binary_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @root_url = url end @@ -59,14 +73,16 @@ rev = revisions(nil,nil,nil,{:limit => 1}) rev ? Info.new({:root_url => @url, :lastrev => rev.last}) : 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_prefix = (path.blank? ? '' : "#{path}/") - path = '.' if path.blank? - entries = Entries.new - cmd = "#{DARCS_BIN} annotate --repodir #{@url} --xml-output" + if path.blank? + path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' ) + end + entries = Entries.new + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --xml-output" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" shellout(cmd) do |io| @@ -86,11 +102,11 @@ return nil if $? && $?.exitstatus != 0 entries.compact.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path = '.' if path.blank? revisions = Revisions.new - cmd = "#{DARCS_BIN} changes --repodir #{@url} --xml-output" + cmd = "#{self.class.sq_bin} changes --repodir #{shell_quote @url} --xml-output" cmd << " --from-match #{shell_quote("hash #{identifier_from}")}" if identifier_from cmd << " --last #{options[:limit].to_i}" if options[:limit] shellout(cmd) do |io| @@ -113,10 +129,10 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path = '*' if path.blank? - cmd = "#{DARCS_BIN} diff --repodir #{@url}" + cmd = "#{self.class.sq_bin} diff --repodir #{shell_quote @url}" if identifier_to.nil? cmd << " --match #{shell_quote("hash #{identifier_from}")}" else @@ -133,9 +149,9 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{DARCS_BIN} show content --repodir #{@url}" + cmd = "#{self.class.sq_bin} show content --repodir #{shell_quote @url}" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" cat = nil @@ -148,7 +164,7 @@ end private - + # Returns an Entry from the given XML element # or nil if the entry was deleted def entry_from_xml(element, path_prefix) @@ -156,7 +172,7 @@ if modified_element.elements['modified_how'].text.match(/removed/) return nil end - + Entry.new({:name => element.attributes['name'], :path => path_prefix + element.attributes['name'], :kind => element.name == 'file' ? 'file' : 'dir', @@ -165,12 +181,41 @@ :identifier => nil, :scmid => modified_element.elements['patch'].attributes['hash'] }) - }) + }) end - + + def get_paths_for_patch(hash) + paths = get_paths_for_patch_raw(hash) + if self.class.client_version_above?([2, 4]) + orig_paths = paths + paths = [] + add_paths = [] + add_paths_name = [] + mod_paths = [] + other_paths = [] + orig_paths.each do |path| + if path[:action] == 'A' + add_paths << path + add_paths_name << path[:path] + elsif path[:action] == 'M' + mod_paths << path + else + other_paths << path + end + end + add_paths_name.each do |add_path| + mod_paths.delete_if { |m| m[:path] == add_path } + end + paths.concat add_paths + paths.concat mod_paths + paths.concat other_paths + end + paths + end + # Retrieve changed paths for a single patch - def get_paths_for_patch(hash) - cmd = "#{DARCS_BIN} annotate --repodir #{@url} --summary --xml-output" + def get_paths_for_patch_raw(hash) + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --summary --xml-output" cmd << " --match #{shell_quote("hash #{hash}")} " paths = [] shellout(cmd) do |io| diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/filesystem_adapter.rb --- a/lib/redmine/scm/adapters/filesystem_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/filesystem_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -23,12 +23,19 @@ module Redmine module Scm - module Adapters + module Adapters class FilesystemAdapter < AbstractAdapter - - def initialize(url, root_url=nil, login=nil, password=nil) + class << self + def client_available + true + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = with_trailling_slash(url) + @path_encoding = path_encoding || 'UTF-8' end def format_path_ends(path, leading=true, trailling=true) @@ -46,47 +53,59 @@ rescue CommandFailed return nil end - + def entries(path="", identifier=nil) entries = Entries.new - Dir.new(target(path)).each do |e| - relative_path = format_path_ends((format_path_ends(path, - false, - true) + e), - false,false) - target = target(relative_path) - entries << - Entry.new({ :name => File.basename(e), + 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) + 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) + e1 = scm_iconv(@path_encoding, 'UTF-8', e_utf8) + if File.exist?(t1) and # paranoid test + %w{file directory}.include?(File.ftype(t1)) and # avoid special types + not File.basename(e1).match(/^\.+$/) # avoid . and .. + p1 = File.readable?(t1) ? relative_path : "" + utf_8_path = scm_iconv('UTF-8', @path_encoding, p1) + entries << + Entry.new({ :name => scm_iconv('UTF-8', @path_encoding, File.basename(e1)), # below : list unreadable files, but dont link them. - :path => File.readable?(target) ? relative_path : "", - :kind => (File.directory?(target) ? 'dir' : 'file'), - :size => (File.directory?(target) ? nil : [File.size(target)].pack('l').unpack('L').first), + :path => utf_8_path, + :kind => (File.directory?(t1) ? 'dir' : 'file'), + :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first), :lastrev => - Revision.new({:time => (File.mtime(target)).localtime, - }) - }) if File.exist?(target) and # paranoid test - %w{file directory}.include?(File.ftype(target)) and # avoid special types - not File.basename(e).match(/^\.+$/) # avoid . and .. + Revision.new({:time => (File.mtime(t1)) }) + }) + end end entries.sort_by_name + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end - + def cat(path, identifier=nil) - File.new(target(path), "rb").read + p = scm_iconv(@path_encoding, 'UTF-8', target(path)) + File.new(p, "rb").read + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end private - + # AbstractAdapter::target is implicitly made to quote paths. # Here we do not shell-out, so we do not want quotes. def target(path=nil) - #Prevent the use of .. + # Prevent the use of .. if path and !path.match(/(^|\/)\.\.(\/|$)/) return "#{self.url}#{without_leading_slash(path)}" end return self.url end - end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/git_adapter.rb --- a/lib/redmine/scm/adapters/git_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/git_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -19,10 +19,53 @@ module Redmine module Scm - module Adapters + module Adapters class GitAdapter < AbstractAdapter + + SCM_GIT_REPORT_LAST_COMMIT = true + # Git executable name - GIT_BIN = "git" + GIT_BIN = Redmine::Configuration['scm_git_command'] || "git" + + # raised if scm command exited with error, e.g. unknown revision. + class ScmCommandAborted < CommandFailed; end + + class << self + def client_command + @@bin ||= GIT_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(GIT_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_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 --no-color") { |io| io.read }.to_s + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT + end def info begin @@ -35,7 +78,7 @@ def branches return @branches if @branches @branches = [] - cmd = "#{GIT_BIN} --git-dir #{target('')} branch --no-color" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color" shellout(cmd) do |io| io.each_line do |line| @branches << line.match('\s*\*?\s*(.*)$')[1] @@ -46,20 +89,20 @@ def tags return @tags if @tags - cmd = "#{GIT_BIN} --git-dir #{target('')} tag" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag" shellout(cmd) do |io| @tags = io.readlines.sort!.map{|t| t.strip} end end def default_branch - branches.include?('master') ? 'master' : branches.first + branches.include?('master') ? 'master' : branches.first end - + def entries(path=nil, identifier=nil) path ||= '' entries = Entries.new - cmd = "#{GIT_BIN} --git-dir #{target('')} ls-tree -l " + 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| @@ -75,7 +118,7 @@ :path => full_path, :kind => (type == "tree") ? 'dir' : 'file', :size => (type == "tree") ? nil : size, - :lastrev => lastrev(full_path,identifier) + :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new }) unless entries.detect{|entry| entry.name == name} end end @@ -84,17 +127,17 @@ entries.sort_by_name end - def lastrev(path,rev) + def lastrev(path, rev) return nil if path.nil? - cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --date=iso --pretty=fuller --no-merges -n 1 " - cmd << " #{shell_quote rev} " if rev - cmd << "-- #{shell_quote path} " unless path.empty? - shellout(cmd) do |io| - begin - id = io.gets.split[1] - author = io.gets.match('Author:\s+(.*)$')[1] - 2.times { io.gets } - time = Time.parse(io.gets.match('CommitDate:\s+(.*)$')[1]).localtime + cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1| + cmd_args << rev if rev + cmd_args << "--" << path unless path.empty? + lines = [] + scm_cmd(*cmd_args) { |io| lines = io.readlines } + begin + id = lines[0].split[1] + author = lines[1].match('Author:\s+(.*)$')[1] + time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]) Revision.new({ :identifier => id, @@ -103,27 +146,29 @@ :time => time, :message => nil, :paths => nil - }) - rescue NoMethodError => e + }) + rescue NoMethodError => e logger.error("The revision '#{path}' has a wrong format") return nil - end end + rescue ScmCommandAborted + nil end def revisions(path, identifier_from, identifier_to, options={}) revisions = 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] + cmd_args << "-n" << "#{options[:limit].to_i}" if options[:limit] + from_to = "" + from_to << "#{identifier_from}.." if identifier_from + 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 = "#{GIT_BIN} --git-dir #{target('')} log --no-color --raw --date=iso --pretty=fuller " - cmd << " --reverse " if options[:reverse] - cmd << " --all " if options[:all] - cmd << " -n #{options[:limit]} " if options[:limit] - cmd << "#{shell_quote(identifier_from + '..')}" if identifier_from - cmd << "#{shell_quote identifier_to}" if identifier_to - cmd << " --since=#{shell_quote(options[:since].strftime("%Y-%m-%d %H:%M:%S"))}" if options[:since] - cmd << " -- #{shell_quote path}" if path && !path.empty? - - shellout(cmd) do |io| + scm_cmd *cmd_args do |io| files=[] changeset = {} parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files @@ -200,8 +245,8 @@ end end end - - return nil if $? && $?.exitstatus != 0 + revisions + rescue ScmCommandAborted revisions end @@ -209,9 +254,9 @@ path ||= '' if identifier_to - cmd = "#{GIT_BIN} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" else - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" end cmd << " -- #{shell_quote path}" unless path.empty? @@ -227,7 +272,7 @@ def annotate(path, identifier=nil) identifier = 'HEAD' if identifier.blank? - cmd = "#{GIT_BIN} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" blame = Annotate.new content = nil shellout(cmd) { |io| io.binmode; content = io.read } @@ -250,12 +295,12 @@ end blame end - + def cat(path, identifier=nil) if identifier.nil? identifier = 'HEAD' end - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" cat = nil shellout(cmd) do |io| io.binmode @@ -264,6 +309,25 @@ return nil if $? && $?.exitstatus != 0 cat end + + class Revision < Redmine::Scm::Adapters::Revision + # Returns the readable identifier + def format_identifier + identifier[0,8] + end + end + + def scm_cmd(*args, &block) + repo_path = root_url || url + full_args = [GIT_BIN, '--git-dir', repo_path] + full_args += args + ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :scm_cmd end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/.svn/all-wcprops --- a/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,17 +1,23 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/1499/trunk/lib/redmine/scm/adapters/mercurial +/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/1499/trunk/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl +/svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl +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 END hg-template-1.0.tmpl K 25 svn:wc:ra_dav:version-url V 80 -/svn/!svn/ver/1499/trunk/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl +/svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/.svn/dir-prop-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/dir-prop-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,7 @@ +K 10 +svn:ignore +V 36 +redminehelper.pyc +redminehelper.pyo + +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/.svn/entries --- a/lib/redmine/scm/adapters/mercurial/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,16 +1,16 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters/mercurial http://redmine.rubyforge.org/svn -2008-06-07T09:19:50.659015Z -1499 -jplang - +2011-03-02T10:17:36.526269Z +4989 +tmaruyama +has-props @@ -32,11 +32,11 @@ -2010-09-24T11:56:52.980004Z -6ba619703ae315a3683836144d19773c -2008-06-07T09:19:50.659015Z -1499 -jplang +2011-03-03T11:05:14.000000Z +961af0eb6ab17203d985cdeac685937e +2011-01-05T15:02:24.961855Z +4633 +tmaruyama has-props @@ -58,7 +58,41 @@ -812 +824 + +redminehelper.py +file + + + + +2011-03-03T11:40:18.000000Z +5bf6790a201bf33c17cae96c6a9d75fc +2011-03-02T10:17:36.526269Z +4989 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +6270 hg-template-1.0.tmpl file @@ -66,11 +100,11 @@ -2010-09-24T11:56:52.992085Z -2cd7a2264dff3758a1d3340af87a615f -2008-06-07T09:19:50.659015Z -1499 -jplang +2011-03-03T11:05:14.000000Z +9d5de62ae8cdc141d3f8b970dbba07a0 +2011-01-05T15:02:24.961855Z +4633 +tmaruyama has-props @@ -92,5 +126,5 @@ -825 +840 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/.svn/text-base/hg-template-0.9.5.tmpl.svn-base --- a/lib/redmine/scm/adapters/mercurial/.svn/text-base/hg-template-0.9.5.tmpl.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/text-base/hg-template-0.9.5.tmpl.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -3,10 +3,10 @@ changeset_verbose = 'This template must be used with --debug option\n' changeset_debug = '\n{author|escape}\n{date|isodate}\n\n{files}{file_adds}{file_dels}{file_copies}\n{desc|escape}\n{tags}\n\n' -file = '{file|escape}\n' -file_add = '{file_add|escape}\n' -file_del = '{file_del|escape}\n' -file_copy = '{name|urlescape}\n' +file = '{file|urlescape}\n' +file_add = '{file_add|urlescape}\n' +file_del = '{file_del|urlescape}\n' +file_copy = '{name|urlescape}\n' tag = '{tag|escape}\n' header='\n\n\n' # footer="" \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/.svn/text-base/hg-template-1.0.tmpl.svn-base --- a/lib/redmine/scm/adapters/mercurial/.svn/text-base/hg-template-1.0.tmpl.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/text-base/hg-template-1.0.tmpl.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,12 +1,12 @@ changeset = 'This template must be used with --debug option\n' changeset_quiet = 'This template must be used with --debug option\n' changeset_verbose = 'This template must be used with --debug option\n' -changeset_debug = '\n{author|escape}\n{date|isodate}\n\n{file_mods}{file_adds}{file_dels}{file_copies}\n{desc|escape}\n{tags}\n\n' +changeset_debug = '\n{author|escape}\n{date|isodatesec}\n\n{file_mods}{file_adds}{file_dels}{file_copies}\n{desc|escape}\n{tags}\n\n' -file_mod = '{file_mod|escape}\n' -file_add = '{file_add|escape}\n' -file_del = '{file_del|escape}\n' -file_copy = '{name|urlescape}\n' +file_mod = '{file_mod|urlescape}\n' +file_add = '{file_add|urlescape}\n' +file_del = '{file_del|urlescape}\n' +file_copy = '{name|urlescape}\n' tag = '{tag|escape}\n' header='\n\n\n' # footer="" diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,183 @@ +# redminehelper: Redmine helper extension for Mercurial +# +# Copyright 2010 Alessio Franceschelli (alefranz.net) +# Copyright 2010-2011 Yuya Nishihara +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. +"""helper commands for Redmine to reduce the number of hg calls + +To test this extension, please try:: + + $ hg --config extensions.redminehelper=redminehelper.py rhsummary + +I/O encoding: + +:file path: urlencoded, raw string +:tag name: utf-8 +:branch name: utf-8 +:node: 12-digits (short) hex string + +Output example of rhsummary:: + + + + + + + + ... + + + +Output example of rhmanifest:: + + + + + + + ... +
    + ... + + + +""" +import re, time, cgi, urllib +from mercurial import cmdutil, commands, node, error + +_x = cgi.escape +_u = lambda s: cgi.escape(urllib.quote(s)) + +def _tip(ui, repo): + # see mercurial/commands.py:tip + def tiprev(): + try: + return len(repo) - 1 + except TypeError: # Mercurial < 1.1 + return repo.changelog.count() - 1 + tipctx = repo.changectx(tiprev()) + ui.write('\n' + % (tipctx.rev(), _x(node.short(tipctx.node())))) + +_SPECIAL_TAGS = ('tip',) + +def _tags(ui, repo): + # see mercurial/commands.py:tags + for t, n in reversed(repo.tagslist()): + if t in _SPECIAL_TAGS: + continue + try: + r = repo.changelog.rev(n) + except error.LookupError: + continue + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _branches(ui, repo): + # see mercurial/commands.py:branches + def iterbranches(): + for t, n in repo.branchtags().iteritems(): + yield t, n, repo.changelog.rev(n) + def branchheads(branch): + try: + return repo.branchheads(branch, closed=False) + except TypeError: # Mercurial < 1.2 + return repo.branchheads(branch) + for t, n, r in sorted(iterbranches(), key=lambda e: e[2], reverse=True): + if repo.lookup(r) in branchheads(t): + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _manifest(ui, repo, path, rev): + ctx = repo.changectx(rev) + ui.write('\n' + % (ctx.rev(), _u(path))) + + known = set() + pathprefix = (path.rstrip('/') + '/').lstrip('/') + for f, n in sorted(ctx.manifest().iteritems(), key=lambda e: e[0]): + if not f.startswith(pathprefix): + continue + name = re.sub(r'/.*', '/', f[len(pathprefix):]) + if name in known: + continue + known.add(name) + + if name.endswith('/'): + ui.write('\n' + % _x(urllib.quote(name[:-1]))) + else: + fctx = repo.filectx(f, fileid=n) + tm, tzoffset = fctx.date() + ui.write('\n' + % (_u(name), fctx.rev(), _x(node.short(fctx.node())), + tm, fctx.size(), )) + + ui.write('\n') + +def rhannotate(ui, repo, *pats, **opts): + return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts) + +def rhcat(ui, repo, file1, *pats, **opts): + return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts) + +def rhdiff(ui, repo, *pats, **opts): + """diff repository (or selected files)""" + change = opts.pop('change', None) + if change: # add -c option for Mercurial<1.1 + base = repo.changectx(change).parents()[0].rev() + opts['rev'] = [str(base), change] + opts['nodates'] = True + return commands.diff(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') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _manifest(ui, repo, urllib.unquote_plus(path), urllib.unquote_plus(opts.get('rev'))) + finally: + ui.write('\n') + ui.write('\n') + +def rhsummary(ui, repo, **opts): + """output the summary of the repository""" + ui.write('\n') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _tip(ui, repo) + _tags(ui, repo) + _branches(ui, repo) + # TODO: bookmarks in core (Mercurial>=1.8) + finally: + ui.write('\n') + ui.write('\n') + +# This extension should be compatible with Mercurial 0.9.5. +# Note that Mercurial 0.9.5 doesn't have extensions.wrapfunction(). +cmdtable = { + 'rhannotate': (rhannotate, + [('r', 'rev', '', 'revision'), + ('u', 'user', None, 'list the author (long with -v)'), + ('n', 'number', None, 'list the revision number (default)'), + ('c', 'changeset', None, 'list the changeset'), + ], + 'hg rhannotate [-r REV] [-u] [-n] [-c] FILE...'), + 'rhcat': (rhcat, + [('r', 'rev', '', 'revision')], + 'hg rhcat ([-r REV] ...) FILE...'), + 'rhdiff': (rhdiff, + [('r', 'rev', [], 'revision'), + ('c', 'change', '', 'change made by revision')], + 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'), + 'rhmanifest': (rhmanifest, + [('r', 'rev', '', 'show the specified revision')], + 'hg rhmanifest [-r REV] [PATH]'), + 'rhsummary': (rhsummary, [], 'hg rhsummary'), +} diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl --- a/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl Thu Mar 03 12:11:53 2011 +0000 @@ -3,10 +3,10 @@ changeset_verbose = 'This template must be used with --debug option\n' changeset_debug = '\n{author|escape}\n{date|isodate}\n\n{files}{file_adds}{file_dels}{file_copies}\n{desc|escape}\n{tags}\n\n' -file = '{file|escape}\n' -file_add = '{file_add|escape}\n' -file_del = '{file_del|escape}\n' -file_copy = '{name|urlescape}\n' +file = '{file|urlescape}\n' +file_add = '{file_add|urlescape}\n' +file_del = '{file_del|urlescape}\n' +file_copy = '{name|urlescape}\n' tag = '{tag|escape}\n' header='\n\n\n' footer='' diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl --- a/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl Thu Mar 03 12:11:53 2011 +0000 @@ -1,12 +1,12 @@ changeset = 'This template must be used with --debug option\n' changeset_quiet = 'This template must be used with --debug option\n' changeset_verbose = 'This template must be used with --debug option\n' -changeset_debug = '\n{author|escape}\n{date|isodate}\n\n{file_mods}{file_adds}{file_dels}{file_copies}\n{desc|escape}\n{tags}\n\n' +changeset_debug = '\n{author|escape}\n{date|isodatesec}\n\n{file_mods}{file_adds}{file_dels}{file_copies}\n{desc|escape}\n{tags}\n\n' -file_mod = '{file_mod|escape}\n' -file_add = '{file_add|escape}\n' -file_del = '{file_del|escape}\n' -file_copy = '{name|urlescape}\n' +file_mod = '{file_mod|urlescape}\n' +file_add = '{file_add|urlescape}\n' +file_del = '{file_del|urlescape}\n' +file_copy = '{name|urlescape}\n' tag = '{tag|escape}\n' header='\n\n\n' footer='' diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial/redminehelper.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/scm/adapters/mercurial/redminehelper.py Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,183 @@ +# redminehelper: Redmine helper extension for Mercurial +# +# Copyright 2010 Alessio Franceschelli (alefranz.net) +# Copyright 2010-2011 Yuya Nishihara +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. +"""helper commands for Redmine to reduce the number of hg calls + +To test this extension, please try:: + + $ hg --config extensions.redminehelper=redminehelper.py rhsummary + +I/O encoding: + +:file path: urlencoded, raw string +:tag name: utf-8 +:branch name: utf-8 +:node: 12-digits (short) hex string + +Output example of rhsummary:: + + + + + + + + ... + + + +Output example of rhmanifest:: + + + + + + + ... + + ... + + + +""" +import re, time, cgi, urllib +from mercurial import cmdutil, commands, node, error + +_x = cgi.escape +_u = lambda s: cgi.escape(urllib.quote(s)) + +def _tip(ui, repo): + # see mercurial/commands.py:tip + def tiprev(): + try: + return len(repo) - 1 + except TypeError: # Mercurial < 1.1 + return repo.changelog.count() - 1 + tipctx = repo.changectx(tiprev()) + ui.write('\n' + % (tipctx.rev(), _x(node.short(tipctx.node())))) + +_SPECIAL_TAGS = ('tip',) + +def _tags(ui, repo): + # see mercurial/commands.py:tags + for t, n in reversed(repo.tagslist()): + if t in _SPECIAL_TAGS: + continue + try: + r = repo.changelog.rev(n) + except error.LookupError: + continue + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _branches(ui, repo): + # see mercurial/commands.py:branches + def iterbranches(): + for t, n in repo.branchtags().iteritems(): + yield t, n, repo.changelog.rev(n) + def branchheads(branch): + try: + return repo.branchheads(branch, closed=False) + except TypeError: # Mercurial < 1.2 + return repo.branchheads(branch) + for t, n, r in sorted(iterbranches(), key=lambda e: e[2], reverse=True): + if repo.lookup(r) in branchheads(t): + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _manifest(ui, repo, path, rev): + ctx = repo.changectx(rev) + ui.write('\n' + % (ctx.rev(), _u(path))) + + known = set() + pathprefix = (path.rstrip('/') + '/').lstrip('/') + for f, n in sorted(ctx.manifest().iteritems(), key=lambda e: e[0]): + if not f.startswith(pathprefix): + continue + name = re.sub(r'/.*', '/', f[len(pathprefix):]) + if name in known: + continue + known.add(name) + + if name.endswith('/'): + ui.write('\n' + % _x(urllib.quote(name[:-1]))) + else: + fctx = repo.filectx(f, fileid=n) + tm, tzoffset = fctx.date() + ui.write('\n' + % (_u(name), fctx.rev(), _x(node.short(fctx.node())), + tm, fctx.size(), )) + + ui.write('\n') + +def rhannotate(ui, repo, *pats, **opts): + return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts) + +def rhcat(ui, repo, file1, *pats, **opts): + return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts) + +def rhdiff(ui, repo, *pats, **opts): + """diff repository (or selected files)""" + change = opts.pop('change', None) + if change: # add -c option for Mercurial<1.1 + base = repo.changectx(change).parents()[0].rev() + opts['rev'] = [str(base), change] + opts['nodates'] = True + return commands.diff(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') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _manifest(ui, repo, urllib.unquote_plus(path), urllib.unquote_plus(opts.get('rev'))) + finally: + ui.write('\n') + ui.write('\n') + +def rhsummary(ui, repo, **opts): + """output the summary of the repository""" + ui.write('\n') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _tip(ui, repo) + _tags(ui, repo) + _branches(ui, repo) + # TODO: bookmarks in core (Mercurial>=1.8) + finally: + ui.write('\n') + ui.write('\n') + +# This extension should be compatible with Mercurial 0.9.5. +# Note that Mercurial 0.9.5 doesn't have extensions.wrapfunction(). +cmdtable = { + 'rhannotate': (rhannotate, + [('r', 'rev', '', 'revision'), + ('u', 'user', None, 'list the author (long with -v)'), + ('n', 'number', None, 'list the revision number (default)'), + ('c', 'changeset', None, 'list the changeset'), + ], + 'hg rhannotate [-r REV] [-u] [-n] [-c] FILE...'), + 'rhcat': (rhcat, + [('r', 'rev', '', 'revision')], + 'hg rhcat ([-r REV] ...) FILE...'), + 'rhdiff': (rhdiff, + [('r', 'rev', [], 'revision'), + ('c', 'change', '', 'change made by revision')], + 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'), + 'rhmanifest': (rhmanifest, + [('r', 'rev', '', 'show the specified revision')], + 'hg rhmanifest [-r REV] [PATH]'), + 'rhsummary': (rhsummary, [], 'hg rhsummary'), +} diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/mercurial_adapter.rb --- a/lib/redmine/scm/adapters/mercurial_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -16,122 +16,163 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/abstract_adapter' -require 'rexml/document' +require 'cgi' module Redmine module Scm - module Adapters + module Adapters class MercurialAdapter < AbstractAdapter - + # Mercurial executable name - HG_BIN = "hg" - HG_HELPER_EXT = "#{RAILS_ROOT}/extra/mercurial/redminehelper.py" - TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial" + HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg" + HELPERS_DIR = File.dirname(__FILE__) + "/mercurial" + HG_HELPER_EXT = "#{HELPERS_DIR}/redminehelper.py" TEMPLATE_NAME = "hg-template" TEMPLATE_EXTENSION = "tmpl" - + # raised if hg command exited with error, e.g. unknown revision. class HgCommandAborted < CommandFailed; end class << self + def client_command + @@bin ||= HG_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(HG_BIN) + end + def client_version - @client_version ||= hgversion + @@client_version ||= (hgversion || []) end - - def hgversion + + def client_available + !client_version.empty? + end + + def hgversion # The hg version is expressed either as a # release number (eg 0.9.5 or 1.0) or as a revision # id composed of 12 hexa characters. - hgversion_str.to_s.split('.').map { |e| e.to_i } + theversion = hgversion_from_command_line.dup + if theversion.respond_to?(:force_encoding) + theversion.force_encoding('ASCII-8BIT') + end + if m = theversion.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end end - private :hgversion - - def hgversion_str - shellout("#{HG_BIN} --version") { |io| io.gets }.to_s[/\d+(\.\d+)+/] + + def hgversion_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s end - private :hgversion_str - + def template_path - template_path_for(client_version) + @@template_path ||= template_path_for(client_version) end - + def template_path_for(version) if ((version <=> [0,9,5]) > 0) || version.empty? ver = "1.0" else ver = "0.9.5" end - "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" + "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" end - private :template_path_for end - + + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @path_encoding = path_encoding || 'UTF-8' + end + def info - tip = summary['tip'].first - Info.new(:root_url => summary['root'].first['path'], - :lastrev => Revision.new(:identifier => tip['rev'].to_i, - :revision => tip['rev'], + tip = summary['repository']['tip'] + Info.new(:root_url => CGI.unescape(summary['repository']['root']), + :lastrev => Revision.new(:revision => tip['revision'], :scmid => tip['node'])) end def tags - summary['tags'].map { |e| e['name'] } + as_ary(summary['repository']['tag']).map { |e| e['name'] } end - + # Returns map of {'tag' => 'nodeid', ...} def tagmap - alist = summary['tags'].map { |e| e.values_at('name', 'node') } + alist = as_ary(summary['repository']['tag']).map do |e| + e.values_at('name', 'node') + end Hash[*alist.flatten] end - + def branches - summary['branches'].map { |e| e['name'] } + as_ary(summary['repository']['branch']).map { |e| e['name'] } end # Returns map of {'branch' => 'nodeid', ...} def branchmap - alist = summary['branches'].map { |e| e.values_at('name', 'node') } + alist = as_ary(summary['repository']['branch']).map do |e| + e.values_at('name', 'node') + end Hash[*alist.flatten] end - # NOTE: DO NOT IMPLEMENT default_branch !! - # It's used as the default revision by RepositoriesController. - def summary - @summary ||= fetchg 'rhsummary' + return @summary if @summary + hg 'rhsummary' do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + @summary = ActiveSupport::XmlMini.parse(output)['rhsummary'] + rescue + end + end end private :summary - + def entries(path=nil, identifier=nil) + 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| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + ActiveSupport::XmlMini.parse(output)['rhmanifest']['repository']['manifest'] + rescue + end + end + path_prefix = path.blank? ? '' : with_trailling_slash(path) + entries = Entries.new - fetched_entries = fetchg('rhentries', '-r', hgrev(identifier), - without_leading_slash(path.to_s)) - - fetched_entries['dirs'].each do |e| - entries << Entry.new(:name => e['name'], - :path => "#{with_trailling_slash(path)}#{e['name']}", - :kind => 'dir') + as_ary(manifest['dir']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + entries << Entry.new(:name => n, :path => p, :kind => 'dir') end - fetched_entries['files'].each do |e| - entries << Entry.new(:name => e['name'], - :path => "#{with_trailling_slash(path)}#{e['name']}", - :kind => 'file', - :size => e['size'].to_i, - :lastrev => Revision.new(:identifier => e['rev'].to_i, - :time => Time.at(e['time'].to_i))) + as_ary(manifest['file']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + lr = Revision.new(:revision => e['revision'], :scmid => e['node'], + :identifier => e['node'], + :time => Time.at(e['time'].to_i)) + entries << Entry.new(:name => n, :path => p, :kind => 'file', + :size => e['size'].to_i, :lastrev => lr) end entries rescue HgCommandAborted nil # means not found end - - # TODO: is this api necessary? + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) - revisions = Revisions.new - each_revision { |e| revisions << e } - revisions + revs = Revisions.new + each_revision(path, identifier_from, identifier_to, options) { |e| revs << e } + revs end # Iterates the revisions by using a template file that @@ -140,73 +181,83 @@ hg_args = ['log', '--debug', '-C', '--style', self.class.template_path] hg_args << '-r' << "#{hgrev(identifier_from)}:#{hgrev(identifier_to)}" hg_args << '--limit' << options[:limit] if options[:limit] - hg_args << without_leading_slash(path) unless path.blank? - doc = hg(*hg_args) { |io| REXML::Document.new(io.read) } - # TODO: ??? HG doesn't close the XML Document... + hg_args << hgtarget(path) unless path.blank? + log = hg(*hg_args) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + # Mercurial < 1.5 does not support footer template for '' + ActiveSupport::XmlMini.parse("#{output}")['log'] + rescue + end + end - doc.each_element('log/logentry') do |le| - cpalist = le.get_elements('paths/path-copied').map do |e| - [e.text, e.attributes['copyfrom-path']] + 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) } end cpmap = Hash[*cpalist.flatten] - paths = le.get_elements('paths/path').map do |e| - {:action => e.attributes['action'], :path => with_leading_slash(e.text), - :from_path => (cpmap.member?(e.text) ? with_leading_slash(cpmap[e.text]) : nil), - :from_revision => (cpmap.member?(e.text) ? le.attributes['revision'] : nil)} + 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)} end.sort { |a, b| a[:path] <=> b[:path] } - yield Revision.new(:identifier => le.attributes['revision'], - :revision => le.attributes['revision'], - :scmid => le.attributes['node'], - :author => (le.elements['author'].text rescue ''), - :time => Time.parse(le.elements['date'].text).localtime, - :message => le.elements['msg'].text, + 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) end self end - # Returns list of nodes in the specified branch - def nodes_in_branch(branch, path=nil, identifier_from=nil, identifier_to=nil, options={}) - hg_args = ['log', '--template', '{node|short}\n', '-b', branch] - hg_args << '-r' << "#{hgrev(identifier_from)}:#{hgrev(identifier_to)}" - hg_args << '--limit' << options[:limit] if options[:limit] - hg_args << without_leading_slash(path) unless path.blank? - hg(*hg_args) { |io| io.readlines.map { |e| e.chomp } } - end - def diff(path, identifier_from, identifier_to=nil) - hg_args = ['diff', '--nodates'] + hg_args = %w|rhdiff| if identifier_to hg_args << '-r' << hgrev(identifier_to) << '-r' << hgrev(identifier_from) else hg_args << '-c' << hgrev(identifier_from) end - hg_args << without_leading_slash(path) unless path.blank? - + unless path.blank? + p = scm_iconv(@path_encoding, 'UTF-8', path) + hg_args << CGI.escape(hgtarget(p)) + end + diff = [] hg *hg_args do |io| - io.collect + io.each_line do |line| + diff << line + end end + diff rescue HgCommandAborted nil # means not found end - + def cat(path, identifier=nil) - hg 'cat', '-r', hgrev(identifier), without_leading_slash(path) do |io| + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) + hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io| io.binmode io.read end rescue HgCommandAborted nil # means not found end - + def annotate(path, identifier=nil) + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) blame = Annotate.new - hg 'annotate', '-ncu', '-r', hgrev(identifier), without_leading_slash(path) do |io| - io.each do |line| - next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):(.*)$} - r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3) + hg 'rhannotate', '-ncu', '-r', 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(.*)$} + r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3, + :identifier => $3) blame.add_line($4.rstrip, r) end end @@ -215,10 +266,19 @@ nil # means not found or cannot be annotated end + class Revision < Redmine::Scm::Adapters::Revision + # Returns the readable identifier + def format_identifier + "#{revision}:#{scmid}" + end + end + # Runs 'hg' command with the given args def hg(*args, &block) - full_args = [HG_BIN, '--cwd', url] + repo_path = root_url || url + full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8'] full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}" + full_args << '--config' << 'diff.git=false' full_args += args ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) if $? && $?.exitstatus != 0 @@ -228,37 +288,25 @@ end private :hg - # Runs 'hg' helper, then parses output to return - def fetchg(*args) - # command output example: - # :tip: rev node - # 100 abcdef012345 - # :tags: rev node name - # 100 abcdef012345 tip - # ... - data = Hash.new { |h, k| h[k] = [] } - hg(*args) do |io| - key, attrs = nil, nil - io.each do |line| - next if line.chomp.empty? - if /^:(\w+): ([\w ]+)/ =~ line - key = $1 - attrs = $2.split(/ /) - elsif key - alist = attrs.zip(line.chomp.split(/ /, attrs.size)) - data[key] << Hash[*alist.flatten] - end - end - end - data - end - private :fetchg - # Returns correct revision identifier - def hgrev(identifier) - identifier.blank? ? 'tip' : identifier.to_s + def hgrev(identifier, sq=false) + rev = identifier.blank? ? 'tip' : identifier.to_s + rev = shell_quote(rev) if sq + rev end private :hgrev + + def hgtarget(path) + path ||= '' + root_url + '/' + without_leading_slash(path) + end + private :hgtarget + + def as_ary(o) + return [] unless o + o.is_a?(Array) ? o : Array[o] + end + private :as_ary end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/scm/adapters/subversion_adapter.rb --- a/lib/redmine/scm/adapters/subversion_adapter.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/scm/adapters/subversion_adapter.rb Thu Mar 03 12:11:53 2011 +0000 @@ -20,38 +20,54 @@ module Redmine module Scm - module Adapters + module Adapters class SubversionAdapter < AbstractAdapter - + # SVN executable name - SVN_BIN = "svn" - + 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 - cmd = "#{SVN_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read svn version in first returned line - if m = io.gets.to_s.match(%r{((\d+\.)+\d+)}) - version = m[0].scan(%r{\d+}).collect(&:to_i) - end + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + 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 = "#{SVN_BIN} info --xml #{target}" + 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 @@ -70,17 +86,20 @@ 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 = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}" + 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| @@ -110,17 +129,20 @@ 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 = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}" + 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| @@ -132,19 +154,22 @@ return nil if $? && $?.exitstatus != 0 properties end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' - identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" - identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1 + 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 = "#{SVN_BIN} log --xml -r #{identifier_from}:#{identifier_to}" + 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| @@ -171,13 +196,14 @@ 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 = "#{SVN_BIN} diff -r " + + cmd = "#{self.class.sq_bin} diff -r " cmd << "#{identifier_to}:" cmd << "#{identifier_from}" cmd << " #{target(path)}@#{identifier_from}" @@ -191,10 +217,10 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} cat #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" cmd << credentials_string cat = nil shellout(cmd) do |io| @@ -204,10 +230,10 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} blame #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" cmd << credentials_string blame = Annotate.new shellout(cmd) do |io| diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/themes.rb --- a/lib/redmine/themes.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/themes.rb Thu Mar 03 12:11:53 2011 +0000 @@ -29,30 +29,65 @@ end # Return theme for given id, or nil if it's not found - def self.theme(id) - themes.find {|t| t.id == id} + def self.theme(id, options={}) + return nil if id.blank? + + found = themes.find {|t| t.id == id} + if found.nil? && options[:rescan] != false + rescan + found = theme(id, :rescan => false) + end + found end # Class used to represent a theme class Theme - attr_reader :name, :dir, :stylesheets + attr_reader :path, :name, :dir def initialize(path) + @path = path @dir = File.basename(path) @name = @dir.humanize - @stylesheets = Dir.glob("#{path}/stylesheets/*.css").collect {|f| File.basename(f).gsub(/\.css$/, '')} + @stylesheets = nil + @javascripts = nil end # Directory name used as the theme id def id; dir end - + + def ==(theme) + theme.is_a?(Theme) && theme.dir == dir + end + def <=>(theme) name <=> theme.name end + + def stylesheets + @stylesheets ||= assets("stylesheets", "css") + end + + def javascripts + @javascripts ||= assets("javascripts", "js") + end + + def stylesheet_path(source) + "/themes/#{dir}/stylesheets/#{source}" + end + + def javascript_path(source) + "/themes/#{dir}/javascripts/#{source}" + end + + private + + def assets(dir, ext) + Dir.glob("#{path}/#{dir}/*.#{ext}").collect {|f| File.basename(f).gsub(/\.#{ext}$/, '')} + end end private - + def self.scan_themes dirs = Dir.glob("#{Rails.public_path}/themes/*").select do |f| # A theme should at least override application.css @@ -64,13 +99,29 @@ end module ApplicationHelper + def current_theme + unless instance_variable_defined?(:@current_theme) + @current_theme = Redmine::Themes.theme(Setting.ui_theme) + end + @current_theme + end + def stylesheet_path(source) - @current_theme ||= Redmine::Themes.theme(Setting.ui_theme) - super((@current_theme && @current_theme.stylesheets.include?(source)) ? - "/themes/#{@current_theme.dir}/stylesheets/#{source}" : source) + if current_theme && current_theme.stylesheets.include?(source) + super current_theme.stylesheet_path(source) + else + super + end end def path_to_stylesheet(source) stylesheet_path source end + + # Returns the header tags for the current theme + def heads_for_theme + if current_theme && current_theme.javascripts.include?('theme') + javascript_include_tag current_theme.javascript_path('theme') + end + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/unified_diff.rb --- a/lib/redmine/unified_diff.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/unified_diff.rb Thu Mar 03 12:11:53 2011 +0000 @@ -22,13 +22,21 @@ options.assert_valid_keys(:type, :max_lines) diff = diff.split("\n") if diff.is_a?(String) diff_type = options[:type] || 'inline' - lines = 0 @truncated = false diff_table = DiffTable.new(diff_type) diff.each do |line| + line_encoding = nil + if line.respond_to?(:force_encoding) + line_encoding = line.encoding + # TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII + # In Japan, diffrence between file path encoding + # and file contents encoding is popular. + line.force_encoding('ASCII-8BIT') + end unless diff_table.add_line line - self << diff_table if diff_table.length > 1 + line.force_encoding(line_encoding) if line_encoding + self << diff_table if diff_table.length > 0 diff_table = DiffTable.new(diff_type) end lines += 1 @@ -40,7 +48,7 @@ self << diff_table unless diff_table.empty? self end - + def truncated?; @truncated; end end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/version.rb --- a/lib/redmine/version.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/version.rb Thu Mar 03 12:11:53 2011 +0000 @@ -3,14 +3,14 @@ module Redmine module VERSION #:nodoc: MAJOR = 1 - MINOR = 0 - TINY = 3 + MINOR = 1 + TINY = 1 # Branch values: # * official release: nil # * stable branch: stable # * trunk: devel - BRANCH = 'devel' + BRANCH = 'stable' def self.revision revision = nil diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/.svn/all-wcprops --- a/lib/redmine/views/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/views/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/2659/trunk/lib/redmine/views +/svn/!svn/ver/4489/trunk/lib/redmine/views +END +api_template_handler.rb +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/4452/trunk/lib/redmine/views/api_template_handler.rb END other_formats_builder.rb K 25 @@ -9,3 +15,9 @@ V 67 /svn/!svn/ver/2334/trunk/lib/redmine/views/other_formats_builder.rb END +builders.rb +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/4452/trunk/lib/redmine/views/builders.rb +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/.svn/entries --- a/lib/redmine/views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/views http://redmine.rubyforge.org/svn -2009-04-05T13:33:54.194067Z -2659 +2010-12-11T13:13:49.013705Z +4489 jplang @@ -29,13 +29,47 @@ my_page dir +api_template_handler.rb +file + + + + +2011-03-03T11:05:14.000000Z +e0e38b713c41ea63221dd877c6939983 +2010-12-03T11:25:21.858858Z +4452 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1122 + other_formats_builder.rb file -2010-09-23T14:37:45.047759Z +2011-03-03T11:05:14.000000Z 849e9df27c041f540e690c6192939edf 2009-01-29T13:54:44.887081Z 2334 @@ -63,3 +97,40 @@ 1287 +builders +dir + +builders.rb +file + + + + +2011-03-03T11:05:14.000000Z +04feeced33ca55e9fb99099efe2fdcf6 +2010-12-03T11:25:21.858858Z +4452 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1195 + diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/.svn/prop-base/api_template_handler.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/.svn/prop-base/api_template_handler.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/.svn/prop-base/builders.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/.svn/prop-base/builders.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/.svn/text-base/api_template_handler.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/.svn/text-base/api_template_handler.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,28 @@ +# 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. + +module Redmine + module Views + class ApiTemplateHandler < ActionView::TemplateHandler + include ActionView::TemplateHandlers::Compilable + + def compile(template) + "Redmine::Views::Builders.for(params[:format]) do |api|; #{template.source}; self.output_buffer = api.output; end" + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/.svn/text-base/builders.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/.svn/text-base/builders.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,35 @@ +# 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. + +module Redmine + module Views + module Builders + def self.for(format, &block) + builder = case format + when 'xml', :xml; Builders::Xml.new + when 'json', :json; Builders::Json.new + else; raise "No builder for format #{format}" + end + if block + block.call(builder) + else + builder + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/api_template_handler.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/api_template_handler.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,28 @@ +# 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. + +module Redmine + module Views + class ApiTemplateHandler < ActionView::TemplateHandler + include ActionView::TemplateHandlers::Compilable + + def compile(template) + "Redmine::Views::Builders.for(params[:format]) do |api|; #{template.source}; self.output_buffer = api.output; end" + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,35 @@ +# 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. + +module Redmine + module Views + module Builders + def self.for(format, &block) + builder = case format + when 'xml', :xml; Builders::Xml.new + when 'json', :json; Builders::Json.new + else; raise "No builder for format #{format}" + end + if block + block.call(builder) + else + builder + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 51 +/svn/!svn/ver/4489/trunk/lib/redmine/views/builders +END +structure.rb +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/4489/trunk/lib/redmine/views/builders/structure.rb +END +xml.rb +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/4489/trunk/lib/redmine/views/builders/xml.rb +END +json.rb +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/!svn/ver/4452/trunk/lib/redmine/views/builders/json.rb +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,130 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/builders +http://redmine.rubyforge.org/svn + + + +2010-12-11T13:13:49.013705Z +4489 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +structure.rb +file + + + + +2011-03-03T11:05:14.000000Z +8816150c9264dfa6e639af165670cbb1 +2010-12-11T13:13:49.013705Z +4489 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2361 + +xml.rb +file + + + + +2011-03-03T11:05:14.000000Z +f9654f4bc43dbb5c01d5be2d6b045dd7 +2010-12-11T13:13:49.013705Z +4489 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1405 + +json.rb +file + + + + +2011-03-03T11:05:14.000000Z +4b47e2fa5030d1cdad48f3abb5ab7c44 +2010-12-03T11:25:21.858858Z +4452 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +989 + diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/prop-base/json.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/prop-base/json.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/prop-base/structure.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/prop-base/structure.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/prop-base/xml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/prop-base/xml.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/text-base/json.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/text-base/json.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,30 @@ +# 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 'blankslate' + +module Redmine + module Views + module Builders + class Json < Structure + def output + @struct.first.to_json + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/text-base/structure.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/text-base/structure.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,75 @@ +# 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 'blankslate' + +module Redmine + module Views + module Builders + class Structure < BlankSlate + def initialize + @struct = [{}] + end + + def array(tag, options={}, &block) + @struct << [] + block.call(self) + ret = @struct.pop + @struct.last[tag] = ret + @struct.last.merge!(options) if options + end + + def method_missing(sym, *args, &block) + if args.any? + if args.first.is_a?(Hash) + if @struct.last.is_a?(Array) + @struct.last << args.first unless block + else + @struct.last[sym] = args.first + end + else + if @struct.last.is_a?(Array) + @struct.last << (args.last || {}).merge(:value => args.first) + else + @struct.last[sym] = args.first + end + end + end + + if block + @struct << (args.first.is_a?(Hash) ? args.first : {}) + block.call(self) + ret = @struct.pop + if @struct.last.is_a?(Array) + @struct.last << ret + else + if @struct.last.has_key?(sym) && @struct.last[sym].is_a?(Hash) + @struct.last[sym].merge! ret + else + @struct.last[sym] = ret + end + end + end + end + + def output + raise "Need to implement #{self.class.name}#output" + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/.svn/text-base/xml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/.svn/text-base/xml.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,45 @@ +# 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. + +module Redmine + module Views + module Builders + class Xml < ::Builder::XmlMarkup + def initialize + super + instruct! + end + + def output + target! + end + + def method_missing(sym, *args, &block) + if args.size == 1 && args.first.is_a?(Time) + __send__ sym, args.first.xmlschema, &block + else + super + end + end + + def array(name, options={}, &block) + __send__ name, (options || {}).merge(:type => 'array'), &block + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/json.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/json.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,30 @@ +# 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 'blankslate' + +module Redmine + module Views + module Builders + class Json < Structure + def output + @struct.first.to_json + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/structure.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/structure.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,75 @@ +# 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 'blankslate' + +module Redmine + module Views + module Builders + class Structure < BlankSlate + def initialize + @struct = [{}] + end + + def array(tag, options={}, &block) + @struct << [] + block.call(self) + ret = @struct.pop + @struct.last[tag] = ret + @struct.last.merge!(options) if options + end + + def method_missing(sym, *args, &block) + if args.any? + if args.first.is_a?(Hash) + if @struct.last.is_a?(Array) + @struct.last << args.first unless block + else + @struct.last[sym] = args.first + end + else + if @struct.last.is_a?(Array) + @struct.last << (args.last || {}).merge(:value => args.first) + else + @struct.last[sym] = args.first + end + end + end + + if block + @struct << (args.first.is_a?(Hash) ? args.first : {}) + block.call(self) + ret = @struct.pop + if @struct.last.is_a?(Array) + @struct.last << ret + else + if @struct.last.has_key?(sym) && @struct.last[sym].is_a?(Hash) + @struct.last[sym].merge! ret + else + @struct.last[sym] = ret + end + end + end + end + + def output + raise "Need to implement #{self.class.name}#output" + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/builders/xml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/views/builders/xml.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,45 @@ +# 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. + +module Redmine + module Views + module Builders + class Xml < ::Builder::XmlMarkup + def initialize + super + instruct! + end + + def output + target! + end + + def method_missing(sym, *args, &block) + if args.size == 1 && args.first.is_a?(Time) + __send__ sym, args.first.xmlschema, &block + else + super + end + end + + def array(name, options={}, &block) + __send__ name, (options || {}).merge(:type => 'array'), &block + end + end + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/my_page/.svn/all-wcprops --- a/lib/redmine/views/my_page/.svn/all-wcprops Tue Feb 22 16:48:15 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 50 -/svn/!svn/ver/2659/trunk/lib/redmine/views/my_page -END -block.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/2659/trunk/lib/redmine/views/my_page/block.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/views/my_page/.svn/entries --- a/lib/redmine/views/my_page/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/views/my_page/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/my_page http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.047759Z +2011-03-03T11:05:14.000000Z b06dfe20a85191516f81de5874f37ec6 2009-04-05T13:33:54.194067Z 2659 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/wiki_formatting/.svn/all-wcprops --- a/lib/redmine/wiki_formatting/.svn/all-wcprops Tue Feb 22 16:48:15 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 52 -/svn/!svn/ver/4376/trunk/lib/redmine/wiki_formatting -END -macros.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4376/trunk/lib/redmine/wiki_formatting/macros.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/wiki_formatting/.svn/entries --- a/lib/redmine/wiki_formatting/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:51.401011Z +2011-03-03T11:05:14.000000Z 879f8ce24a6bb5e4f5ea3b6f798b7a63 2010-11-06T17:47:27.890964Z 4376 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/wiki_formatting/textile/.svn/all-wcprops --- a/lib/redmine/wiki_formatting/textile/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4376/trunk/lib/redmine/wiki_formatting/textile -END -helper.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/3025/trunk/lib/redmine/wiki_formatting/textile/helper.rb -END -formatter.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/4376/trunk/lib/redmine/wiki_formatting/textile/formatter.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/redmine/wiki_formatting/textile/.svn/entries --- a/lib/redmine/wiki_formatting/textile/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/redmine/wiki_formatting/textile/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting/textile http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.051779Z +2011-03-03T11:05:14.000000Z dec83b1d0d7f682d1ebf1f172fe3c90b 2009-11-11T10:55:19.574870Z 3025 @@ -66,7 +66,7 @@ -2010-11-19T13:04:51.401011Z +2011-03-03T11:05:14.000000Z b8052f700ecb0991fabdd3a5b684a412 2010-11-06T17:47:27.890964Z 4376 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/all-wcprops --- a/lib/tasks/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 34 -/svn/!svn/ver/4405/trunk/lib/tasks +/svn/!svn/ver/4950/trunk/lib/tasks END deprecated.rake K 25 @@ -27,17 +27,23 @@ 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 -metrics.rake +ciphering.rake K 25 svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/2825/trunk/lib/tasks/metrics.rake +V 49 +/svn/!svn/ver/4950/trunk/lib/tasks/ciphering.rake END permissions.rake K 25 @@ -55,7 +61,7 @@ K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/3060/trunk/lib/tasks/testing.rake +/svn/!svn/ver/4806/trunk/lib/tasks/testing.rake END watchers.rake K 25 @@ -63,35 +69,35 @@ 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 END -plugins.rake -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/1786/trunk/lib/tasks/plugins.rake -END locales.rake K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/4254/trunk/lib/tasks/locales.rake +/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/3517/trunk/lib/tasks/migrate_from_trac.rake +/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/4403/trunk/lib/tasks/migrate_from_mantis.rake +/svn/!svn/ver/4765/trunk/lib/tasks/migrate_from_mantis.rake END email.rake K 25 @@ -109,7 +115,7 @@ K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/3919/trunk/lib/tasks/ci.rake +/svn/!svn/ver/4643/trunk/lib/tasks/ci.rake END fetch_changesets.rake K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/entries --- a/lib/tasks/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/lib/tasks http://redmine.rubyforge.org/svn -2010-11-14T15:14:19.280754Z -4405 +2011-02-26T13:09:25.657748Z +4950 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 03301be8b264b5cb46d05896861dcc4d 2007-09-02T08:08:10.346505Z 691 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 2ee57ccc06c675e55c38a4153a27c7c3 2010-05-01T09:37:46.451305Z 3721 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 0c57af5536009680bb8c3c3302fc628d 2006-07-29T09:32:58.780216Z 12 @@ -134,7 +134,7 @@ -2010-09-24T12:48:29.799790Z +2011-03-03T11:05:14.000000Z 07fcf57752978d65a694eb57adcc0851 2010-09-20T23:17:51.402972Z 4167 @@ -162,13 +162,47 @@ 1606 +metrics.rake +file + + + + +2011-03-03T11:05:14.000000Z +0254f4ee916dee0a2572e63e947f8a1b +2009-07-27T00:55:43.057910Z +2825 +edavis10 + + + + + + + + + + + + + + + + + + + + + +113 + initializers.rake file -2010-11-19T13:04:51.424933Z +2011-03-03T11:05:14.000000Z c25b466de7654465538a91e5f5ab32b9 2010-11-14T15:14:19.280754Z 4405 @@ -196,17 +230,18 @@ 1343 -metrics.rake +ciphering.rake file -2010-09-23T14:37:45.063748Z -0254f4ee916dee0a2572e63e947f8a1b -2009-07-27T00:55:43.057910Z -2825 -edavis10 +2011-03-03T11:40:18.000000Z +b522c20249b1fad89c3276d10ccaaf6b +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props @@ -227,8 +262,7 @@ - -113 +1409 permissions.rake file @@ -236,7 +270,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 010fbb563237ff01803aa47736cf863e 2010-08-18T17:23:23.071766Z 3948 @@ -270,7 +304,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 984c757ee4c8fa78f649f8dd34b715cf 2009-03-15T10:03:56.604709Z 2592 @@ -304,11 +338,11 @@ -2010-09-23T14:37:45.067787Z -5d4cbb1125484cf9c8f3f693c53f8fd1 -2009-11-15T13:43:31.750664Z -3060 -jplang +2011-03-03T11:40:18.000000Z +ca73c8345daa839f0145c671ad94b91f +2011-02-11T15:30:45.959165Z +4806 +tmaruyama @@ -330,7 +364,7 @@ -1419 +3376 watchers.rake file @@ -338,7 +372,7 @@ -2010-09-23T14:37:45.067787Z +2011-03-03T11:05:14.000000Z 16eaf27a5959829a12961ff16e233600 2009-12-13T12:39:22.716082Z 3167 @@ -366,13 +400,47 @@ 180 +plugins.rake +file + + + + +2011-03-03T11:05:14.000000Z +f27a83cf3f04d7906ac2f3ca40d01a20 +2008-09-05T10:31:06.632668Z +1786 +jplang + + + + + + + + + + + + + + + + + + + + + +1256 + yardoc.rake file -2010-09-23T14:37:45.067787Z +2011-03-03T11:05:14.000000Z 5c9889bed6f4a4d18dbeb3d904855bb6 2010-08-07T15:11:26.667915Z 3922 @@ -400,51 +468,17 @@ 578 -plugins.rake -file - - - - -2010-09-23T14:37:45.067787Z -f27a83cf3f04d7906ac2f3ca40d01a20 -2008-09-05T10:31:06.632668Z -1786 -jplang - - - - - - - - - - - - - - - - - - - - - -1256 - locales.rake file -2010-11-19T13:04:51.424933Z -8cb19171aae8528b3149b7efa211fc50 -2010-10-15T22:41:47.658318Z -4254 -edavis10 +2011-03-03T11:40:18.000000Z +ceb44040708bb290ad5b62b5a366e823 +2011-02-23T18:03:33.945201Z +4937 +jplang has-props @@ -466,7 +500,7 @@ -3360 +4250 migrate_from_trac.rake file @@ -474,10 +508,10 @@ -2010-09-23T14:37:45.063748Z -6e8b343999b28febc71dd621a519ce9d -2010-02-28T16:51:36.195546Z -3517 +2011-03-03T11:05:14.000000Z +db60f05f7cd325cbdd984f0b6d7b42ea +2010-12-31T15:30:50.544770Z +4599 jplang has-props @@ -500,7 +534,7 @@ -30294 +30358 migrate_from_mantis.rake file @@ -508,10 +542,10 @@ -2010-11-19T13:04:51.424933Z -d58affc991ec64b615bcbf3f9a1bb176 -2010-11-14T13:16:39.968867Z -4403 +2011-03-03T11:05:14.000000Z +ba7db3c8df92c72d300288ec7276dbad +2011-01-28T19:45:09.952949Z +4765 jplang @@ -534,7 +568,7 @@ -19253 +19166 email.rake file @@ -542,7 +576,7 @@ -2010-11-19T13:04:51.424933Z +2011-03-03T11:05:14.000000Z 7875b7a15307c626a93c284f33757320 2010-10-15T22:50:33.240825Z 4256 @@ -576,7 +610,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 82e0901f7cbdda05ed63c12a764c3614 2007-09-23T17:19:27.414302Z 752 @@ -610,11 +644,11 @@ -2010-09-23T14:37:45.063748Z -ad1435c02c82525ceb302114492c28f8 -2010-08-06T20:46:44.980912Z -3919 -edavis10 +2011-03-03T11:05:14.000000Z +93f8964aea856c06fb2eaa62ca2023c2 +2011-01-06T18:52:37.169690Z +4643 +jplang @@ -636,7 +670,7 @@ -1077 +1118 fetch_changesets.rake file @@ -644,7 +678,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 320b77011663b1209247bb809bc43ecb 2008-02-16T16:25:58.204498Z 1155 diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/prop-base/ciphering.rake.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/tasks/.svn/prop-base/ciphering.rake.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/text-base/ci.rake.svn-base --- a/lib/tasks/.svn/text-base/ci.rake.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/.svn/text-base/ci.rake.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,7 @@ Rake::Task["db:create"].invoke Rake::Task["db:migrate"].invoke Rake::Task["db:schema:dump"].invoke + Rake::Task["test:scm:update"].invoke end desc "Build Redmine" diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/text-base/ciphering.rake.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/tasks/.svn/text-base/ciphering.rake.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,35 @@ +# 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. + + +namespace :db do + desc 'Encrypts SCM and LDAP passwords in the database.' + task :encrypt => :environment do + unless (Repository.encrypt_all(:password) && + AuthSource.encrypt_all(:account_password)) + raise "Some objects could not be saved after encryption, update was rollback'ed." + end + end + + desc 'Decrypts SCM and LDAP passwords in the database.' + task :decrypt => :environment do + unless (Repository.decrypt_all(:password) && + AuthSource.decrypt_all(:account_password)) + raise "Some objects could not be saved after decryption, update was rollback'ed." + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/text-base/locales.rake.svn-base --- a/lib/tasks/.svn/text-base/locales.rake.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/.svn/text-base/locales.rake.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,10 @@ +desc 'Updates and checks locales against en.yml' +task :locales do + %w(locales:update locales:check_interpolation).collect do |task| + Rake::Task[task].invoke + end +end + namespace :locales do desc 'Updates language files based on en.yml content (only works for new top level keys).' task :update do @@ -28,6 +35,26 @@ lang.close end end + + desc 'Checks interpolation arguments in locals against en.yml' + task :check_interpolation 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| + 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| + unless en_strings[key].nil? || en_strings[key].include?(match) + puts "#{file}: #{key} uses #{match} not found in en.yml" + end + end + end + end + end desc <<-END_DESC Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows). diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/text-base/migrate_from_mantis.rake.svn-base --- a/lib/tasks/.svn/text-base/migrate_from_mantis.rake.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/.svn/text-base/migrate_from_mantis.rake.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -88,13 +88,11 @@ def firstname @firstname = realname.blank? ? username : realname.split.first[0..29] - @firstname.gsub!(/[^\w\s\'\-]/i, '') @firstname end def lastname @lastname = realname.blank? ? '-' : realname.split[1..-1].join(' ')[0..29] - @lastname.gsub!(/[^\w\s\'\-]/i, '') @lastname = '-' if @lastname.blank? @lastname end @@ -224,7 +222,7 @@ end def name - read_attribute(:name)[0..29].gsub(/[^\w\s\'\-]/, '-') + read_attribute(:name)[0..29] end end @@ -289,7 +287,7 @@ project.versions.each do |version| v = Version.new :name => encode(version.version), :description => encode(version.description), - :effective_date => version.date_order.to_date + :effective_date => (version.date_order ? version.date_order.to_date : nil) v.project = p v.save versions_map[version.id] = v.id diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/text-base/migrate_from_trac.rake.svn-base --- a/lib/tasks/.svn/text-base/migrate_from_trac.rake.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/.svn/text-base/migrate_from_trac.rake.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -167,7 +167,7 @@ has_many :attachments, :class_name => "TracAttachment", :finder_sql => "SELECT DISTINCT attachment.* FROM #{TracMigrate::TracAttachment.table_name}" + " WHERE #{TracMigrate::TracAttachment.table_name}.type = 'ticket'" + - ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{id}\'' + ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{TracMigrate::TracAttachment.connection.quote_string(id.to_s)}\'' has_many :customs, :class_name => "TracTicketCustom", :foreign_key => :ticket def ticket_type @@ -207,7 +207,7 @@ has_many :attachments, :class_name => "TracAttachment", :finder_sql => "SELECT DISTINCT attachment.* FROM #{TracMigrate::TracAttachment.table_name}" + " WHERE #{TracMigrate::TracAttachment.table_name}.type = 'wiki'" + - ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{id}\'' + ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{TracMigrate::TracAttachment.connection.quote_string(id.to_s)}\'' def self.columns # Hides readonly Trac field to prevent clash with AR readonly? method (Rails 2.0) @@ -246,8 +246,8 @@ ln = ($2 || '-').strip u = User.new :mail => mail.gsub(/[^-@a-z0-9\.]/i, '-'), - :firstname => fn[0, limit_for(User, 'firstname')].gsub(/[^\w\s\'\-]/i, '-'), - :lastname => ln[0, limit_for(User, 'lastname')].gsub(/[^\w\s\'\-]/i, '-') + :firstname => fn[0, limit_for(User, 'firstname')], + :lastname => ln[0, limit_for(User, 'lastname')] u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-') u.password = 'trac' diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/.svn/text-base/testing.rake.svn-base --- a/lib/tasks/.svn/text-base/testing.rake.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/.svn/text-base/testing.rake.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,41 +1,91 @@ -### From http://svn.geekdaily.org/public/rails/plugins/generally_useful/tasks/coverage_via_rcov.rake - -namespace :test do - desc 'Measures test coverage' - task :coverage do - rm_f "coverage" - rm_f "coverage.data" - rcov = "rcov --rails --aggregate coverage.data --text-summary -Ilib --html" - files = Dir.glob("test/**/*_test.rb").join(" ") - system("#{rcov} #{files}") - system("open coverage/index.html") if PLATFORM['darwin'] - end - - namespace :scm do - namespace :setup do - desc "Creates directory for test repositories" - task :create_dir do - FileUtils.mkdir_p Rails.root + '/tmp/test' - end - - supported_scms = [:subversion, :cvs, :bazaar, :mercurial, :git, :darcs, :filesystem] - - desc "Creates a test subversion repository" - task :subversion => :create_dir do - repo_path = "tmp/test/subversion_repository" - system "svnadmin create #{repo_path}" - system "gunzip < test/fixtures/repositories/subversion_repository.dump.gz | svnadmin load #{repo_path}" - end - - (supported_scms - [:subversion]).each do |scm| - desc "Creates a test #{scm} repository" - task scm => :create_dir do - system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" - end - end - - desc "Creates all test repositories" - task :all => supported_scms - end - end -end +### From http://svn.geekdaily.org/public/rails/plugins/generally_useful/tasks/coverage_via_rcov.rake + +namespace :test do + desc 'Measures test coverage' + task :coverage do + rm_f "coverage" + rm_f "coverage.data" + rcov = "rcov --rails --aggregate coverage.data --text-summary -Ilib --html" + files = Dir.glob("test/**/*_test.rb").join(" ") + system("#{rcov} #{files}") + system("open coverage/index.html") if PLATFORM['darwin'] + end + + desc 'Run unit and functional scm tests' + task :scm do + errors = %w(test:scm:units test:scm:functionals).collect do |task| + begin + Rake::Task[task].invoke + nil + rescue => e + task + end + end.compact + abort "Errors running #{errors.to_sentence(:locale => :en)}!" if errors.any? + end + + namespace :scm do + namespace :setup do + desc "Creates directory for test repositories" + task :create_dir do + FileUtils.mkdir_p Rails.root + '/tmp/test' + end + + supported_scms = [:subversion, :cvs, :bazaar, :mercurial, :git, :darcs, :filesystem] + + desc "Creates a test subversion repository" + task :subversion => :create_dir do + repo_path = "tmp/test/subversion_repository" + system "svnadmin create #{repo_path}" + system "gunzip < test/fixtures/repositories/subversion_repository.dump.gz | svnadmin load #{repo_path}" + end + + desc "Creates a test mercurial repository" + task :mercurial => :create_dir do + repo_path = "tmp/test/mercurial_repository" + bundle_path = "test/fixtures/repositories/mercurial_repository.hg" + system "hg init #{repo_path}" + system "hg -R #{repo_path} pull #{bundle_path}" + end + + (supported_scms - [:subversion, :mercurial]).each do |scm| + desc "Creates a test #{scm} repository" + task scm => :create_dir do + # system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" + system "tar -xvz -C tmp/test -f test/fixtures/repositories/#{scm}_repository.tar.gz" + end + end + + desc "Creates all test repositories" + task :all => supported_scms + end + + desc "Updates installed test repositories" + task :update do + require 'fileutils' + Dir.glob("tmp/test/*_repository").each do |dir| + next unless File.basename(dir) =~ %r{^(.+)_repository$} && File.directory?(dir) + scm = $1 + next unless fixture = Dir.glob("test/fixtures/repositories/#{scm}_repository.*").first + next if File.stat(dir).ctime > File.stat(fixture).mtime + + FileUtils.rm_rf dir + Rake::Task["test:scm:setup:#{scm}"].execute + end + end + + Rake::TestTask.new(:units => "db:test:prepare") do |t| + t.libs << "test" + t.verbose = true + t.test_files = FileList['test/unit/repository*_test.rb'] + FileList['test/unit/lib/redmine/scm/**/*_test.rb'] + end + Rake::Task['test:scm:units'].comment = "Run the scm unit tests" + + Rake::TestTask.new(:functionals => "db:test:prepare") do |t| + t.libs << "test" + t.verbose = true + t.test_files = FileList['test/functional/repositories*_test.rb'] + end + Rake::Task['test:scm:functionals'].comment = "Run the scm functional tests" + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/ci.rake --- a/lib/tasks/ci.rake Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/ci.rake Thu Mar 03 12:11:53 2011 +0000 @@ -16,6 +16,7 @@ Rake::Task["db:create"].invoke Rake::Task["db:migrate"].invoke Rake::Task["db:schema:dump"].invoke + Rake::Task["test:scm:update"].invoke end desc "Build Redmine" diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/ciphering.rake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/tasks/ciphering.rake Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,35 @@ +# 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. + + +namespace :db do + desc 'Encrypts SCM and LDAP passwords in the database.' + task :encrypt => :environment do + unless (Repository.encrypt_all(:password) && + AuthSource.encrypt_all(:account_password)) + raise "Some objects could not be saved after encryption, update was rollback'ed." + end + end + + desc 'Decrypts SCM and LDAP passwords in the database.' + task :decrypt => :environment do + unless (Repository.decrypt_all(:password) && + AuthSource.decrypt_all(:account_password)) + raise "Some objects could not be saved after decryption, update was rollback'ed." + end + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/locales.rake --- a/lib/tasks/locales.rake Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/locales.rake Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,10 @@ +desc 'Updates and checks locales against en.yml' +task :locales do + %w(locales:update locales:check_interpolation).collect do |task| + Rake::Task[task].invoke + end +end + namespace :locales do desc 'Updates language files based on en.yml content (only works for new top level keys).' task :update do @@ -28,6 +35,26 @@ lang.close end end + + desc 'Checks interpolation arguments in locals against en.yml' + task :check_interpolation 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| + 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| + unless en_strings[key].nil? || en_strings[key].include?(match) + puts "#{file}: #{key} uses #{match} not found in en.yml" + end + end + end + end + end desc <<-END_DESC Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows). diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/migrate_from_mantis.rake --- a/lib/tasks/migrate_from_mantis.rake Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/migrate_from_mantis.rake Thu Mar 03 12:11:53 2011 +0000 @@ -88,13 +88,11 @@ def firstname @firstname = realname.blank? ? username : realname.split.first[0..29] - @firstname.gsub!(/[^\w\s\'\-]/i, '') @firstname end def lastname @lastname = realname.blank? ? '-' : realname.split[1..-1].join(' ')[0..29] - @lastname.gsub!(/[^\w\s\'\-]/i, '') @lastname = '-' if @lastname.blank? @lastname end @@ -224,7 +222,7 @@ end def name - read_attribute(:name)[0..29].gsub(/[^\w\s\'\-]/, '-') + read_attribute(:name)[0..29] end end @@ -289,7 +287,7 @@ project.versions.each do |version| v = Version.new :name => encode(version.version), :description => encode(version.description), - :effective_date => version.date_order.to_date + :effective_date => (version.date_order ? version.date_order.to_date : nil) v.project = p v.save versions_map[version.id] = v.id diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/migrate_from_trac.rake --- a/lib/tasks/migrate_from_trac.rake Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/migrate_from_trac.rake Thu Mar 03 12:11:53 2011 +0000 @@ -167,7 +167,7 @@ has_many :attachments, :class_name => "TracAttachment", :finder_sql => "SELECT DISTINCT attachment.* FROM #{TracMigrate::TracAttachment.table_name}" + " WHERE #{TracMigrate::TracAttachment.table_name}.type = 'ticket'" + - ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{id}\'' + ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{TracMigrate::TracAttachment.connection.quote_string(id.to_s)}\'' has_many :customs, :class_name => "TracTicketCustom", :foreign_key => :ticket def ticket_type @@ -207,7 +207,7 @@ has_many :attachments, :class_name => "TracAttachment", :finder_sql => "SELECT DISTINCT attachment.* FROM #{TracMigrate::TracAttachment.table_name}" + " WHERE #{TracMigrate::TracAttachment.table_name}.type = 'wiki'" + - ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{id}\'' + ' AND #{TracMigrate::TracAttachment.table_name}.id = \'#{TracMigrate::TracAttachment.connection.quote_string(id.to_s)}\'' def self.columns # Hides readonly Trac field to prevent clash with AR readonly? method (Rails 2.0) @@ -246,8 +246,8 @@ ln = ($2 || '-').strip u = User.new :mail => mail.gsub(/[^-@a-z0-9\.]/i, '-'), - :firstname => fn[0, limit_for(User, 'firstname')].gsub(/[^\w\s\'\-]/i, '-'), - :lastname => ln[0, limit_for(User, 'lastname')].gsub(/[^\w\s\'\-]/i, '-') + :firstname => fn[0, limit_for(User, 'firstname')], + :lastname => ln[0, limit_for(User, 'lastname')] u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-') u.password = 'trac' diff -r 7cec015f07ce -r 73ff0e6a11b1 lib/tasks/testing.rake --- a/lib/tasks/testing.rake Tue Feb 22 16:48:15 2011 +0000 +++ b/lib/tasks/testing.rake Thu Mar 03 12:11:53 2011 +0000 @@ -1,41 +1,91 @@ -### From http://svn.geekdaily.org/public/rails/plugins/generally_useful/tasks/coverage_via_rcov.rake - -namespace :test do - desc 'Measures test coverage' - task :coverage do - rm_f "coverage" - rm_f "coverage.data" - rcov = "rcov --rails --aggregate coverage.data --text-summary -Ilib --html" - files = Dir.glob("test/**/*_test.rb").join(" ") - system("#{rcov} #{files}") - system("open coverage/index.html") if PLATFORM['darwin'] - end - - namespace :scm do - namespace :setup do - desc "Creates directory for test repositories" - task :create_dir do - FileUtils.mkdir_p Rails.root + '/tmp/test' - end - - supported_scms = [:subversion, :cvs, :bazaar, :mercurial, :git, :darcs, :filesystem] - - desc "Creates a test subversion repository" - task :subversion => :create_dir do - repo_path = "tmp/test/subversion_repository" - system "svnadmin create #{repo_path}" - system "gunzip < test/fixtures/repositories/subversion_repository.dump.gz | svnadmin load #{repo_path}" - end - - (supported_scms - [:subversion]).each do |scm| - desc "Creates a test #{scm} repository" - task scm => :create_dir do - system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" - end - end - - desc "Creates all test repositories" - task :all => supported_scms - end - end -end +### From http://svn.geekdaily.org/public/rails/plugins/generally_useful/tasks/coverage_via_rcov.rake + +namespace :test do + desc 'Measures test coverage' + task :coverage do + rm_f "coverage" + rm_f "coverage.data" + rcov = "rcov --rails --aggregate coverage.data --text-summary -Ilib --html" + files = Dir.glob("test/**/*_test.rb").join(" ") + system("#{rcov} #{files}") + system("open coverage/index.html") if PLATFORM['darwin'] + end + + desc 'Run unit and functional scm tests' + task :scm do + errors = %w(test:scm:units test:scm:functionals).collect do |task| + begin + Rake::Task[task].invoke + nil + rescue => e + task + end + end.compact + abort "Errors running #{errors.to_sentence(:locale => :en)}!" if errors.any? + end + + namespace :scm do + namespace :setup do + desc "Creates directory for test repositories" + task :create_dir do + FileUtils.mkdir_p Rails.root + '/tmp/test' + end + + supported_scms = [:subversion, :cvs, :bazaar, :mercurial, :git, :darcs, :filesystem] + + desc "Creates a test subversion repository" + task :subversion => :create_dir do + repo_path = "tmp/test/subversion_repository" + system "svnadmin create #{repo_path}" + system "gunzip < test/fixtures/repositories/subversion_repository.dump.gz | svnadmin load #{repo_path}" + end + + desc "Creates a test mercurial repository" + task :mercurial => :create_dir do + repo_path = "tmp/test/mercurial_repository" + bundle_path = "test/fixtures/repositories/mercurial_repository.hg" + system "hg init #{repo_path}" + system "hg -R #{repo_path} pull #{bundle_path}" + end + + (supported_scms - [:subversion, :mercurial]).each do |scm| + desc "Creates a test #{scm} repository" + task scm => :create_dir do + # system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" + system "tar -xvz -C tmp/test -f test/fixtures/repositories/#{scm}_repository.tar.gz" + end + end + + desc "Creates all test repositories" + task :all => supported_scms + end + + desc "Updates installed test repositories" + task :update do + require 'fileutils' + Dir.glob("tmp/test/*_repository").each do |dir| + next unless File.basename(dir) =~ %r{^(.+)_repository$} && File.directory?(dir) + scm = $1 + next unless fixture = Dir.glob("test/fixtures/repositories/#{scm}_repository.*").first + next if File.stat(dir).ctime > File.stat(fixture).mtime + + FileUtils.rm_rf dir + Rake::Task["test:scm:setup:#{scm}"].execute + end + end + + Rake::TestTask.new(:units => "db:test:prepare") do |t| + t.libs << "test" + t.verbose = true + t.test_files = FileList['test/unit/repository*_test.rb'] + FileList['test/unit/lib/redmine/scm/**/*_test.rb'] + end + Rake::Task['test:scm:units'].comment = "Run the scm unit tests" + + Rake::TestTask.new(:functionals => "db:test:prepare") do |t| + t.libs << "test" + t.verbose = true + t.test_files = FileList['test/functional/repositories*_test.rb'] + end + Rake::Task['test:scm:functionals'].comment = "Run the scm functional tests" + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 log/.svn/all-wcprops --- a/log/.svn/all-wcprops Tue Feb 22 16:48:15 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 28 -/svn/!svn/ver/1283/trunk/log -END -delete.me -K 25 -svn:wc:ra_dav:version-url -V 36 -/svn/!svn/ver/67/trunk/log/delete.me -END diff -r 7cec015f07ce -r 73ff0e6a11b1 log/.svn/entries --- a/log/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/log/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/log http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.067787Z +2011-03-03T11:05:11.000000Z ae0415159f2c4dba3fc1a559d4c0f9f5 2006-10-15T09:00:05.847811Z 31 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/.htaccess --- a/public/.htaccess Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -# General Apache options - - AddHandler fastcgi-script .fcgi - - - AddHandler fcgid-script .fcgi - - - AddHandler cgi-script .cgi - -Options +FollowSymLinks +ExecCGI - -# If you don't want Rails to look in certain directories, -# use the following rewrite rules so that Apache won't rewrite certain requests -# -# Example: -# RewriteCond %{REQUEST_URI} ^/notrails.* -# RewriteRule .* - [L] - -# Redirect all requests not available on the filesystem to Rails -# By default the cgi dispatcher is used which is very slow -# -# For better performance replace the dispatcher with the fastcgi one -# -# Example: -# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] -RewriteEngine On - -# If your Rails application is accessed via an Alias directive, -# then you MUST also set the RewriteBase in this htaccess file. -# -# Example: -# Alias /myrailsapp /path/to/myrailsapp/public -# RewriteBase /myrailsapp - -RewriteRule ^$ index.html [QSA] -RewriteRule ^([^.]+)$ $1.html [QSA] -RewriteCond %{REQUEST_FILENAME} !-f - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.cgi [QSA,L] - - -# In case Rails experiences terminal errors -# Instead of displaying this message you can supply a file here which will be rendered instead -# -# Example: -# ErrorDocument 500 /500.html - -ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 public/.svn/all-wcprops --- a/public/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 31 -/svn/!svn/ver/4377/trunk/public +/svn/!svn/ver/4954/trunk/public END dispatch.fcgi.example K 25 @@ -27,12 +27,6 @@ V 52 /svn/!svn/ver/2017/trunk/public/dispatch.cgi.example END -.htaccess -K 25 -svn:wc:ra_dav:version-url -V 40 -/svn/!svn/ver/934/trunk/public/.htaccess -END dispatch.rb.example K 25 svn:wc:ra_dav:version-url @@ -45,3 +39,9 @@ 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 7cec015f07ce -r 73ff0e6a11b1 public/.svn/entries --- a/public/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public http://redmine.rubyforge.org/svn -2010-11-06T18:52:07.556711Z -4377 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.075747Z +2011-03-03T11:05:14.000000Z aeefa1552a4af651eadd16f4e0bb1323 2008-11-11T13:54:10.112610Z 2017 @@ -72,7 +72,7 @@ -2010-09-23T14:37:45.071747Z +2011-03-03T11:05:14.000000Z b78e2e9e0cd94c786bb9404516e062c4 2007-04-04T18:20:45.423396Z 419 @@ -112,7 +112,7 @@ -2010-09-23T14:37:45.071747Z +2011-03-03T11:05:14.000000Z 5acfd3818d5f470c26a1af577d06195e 2007-04-04T18:20:45.423396Z 419 @@ -146,7 +146,7 @@ -2010-09-23T14:37:45.071747Z +2011-03-03T11:05:14.000000Z 5a5128856eb14ac7b3f94099cb504775 2008-11-11T13:54:10.112610Z 2017 @@ -174,47 +174,13 @@ 477 -.htaccess -file - - - - -2010-09-23T14:37:45.067787Z -67c99c6ef23adb15d9efed92be959b6e -2007-11-27T17:20:57.329371Z -934 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1632 - dispatch.rb.example file -2010-09-23T14:37:45.075747Z +2011-03-03T11:05:14.000000Z 5a5128856eb14ac7b3f94099cb504775 2008-11-11T13:54:10.112610Z 2017 @@ -251,7 +217,7 @@ -2010-07-23T14:49:47.756104Z +2011-03-03T11:05:14.000000Z 6d85758acb4f4baa4d242ba451c91026 2010-07-16T03:45:50.104236Z 3845 @@ -279,3 +245,37 @@ 7886 +htaccess.fcgi.example +file + + + + +2011-03-03T11:05:14.000000Z +67c99c6ef23adb15d9efed92be959b6e +2011-01-30T06:31:28.038726Z +4775 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1632 + diff -r 7cec015f07ce -r 73ff0e6a11b1 public/.svn/prop-base/.htaccess.svn-base --- a/public/.svn/prop-base/.htaccess.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 9 -eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/.svn/prop-base/htaccess.fcgi.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/.svn/prop-base/htaccess.fcgi.example.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 9 +eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/.svn/text-base/.htaccess.svn-base --- a/public/.svn/text-base/.htaccess.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -# General Apache options - - AddHandler fastcgi-script .fcgi - - - AddHandler fcgid-script .fcgi - - - AddHandler cgi-script .cgi - -Options +FollowSymLinks +ExecCGI - -# If you don't want Rails to look in certain directories, -# use the following rewrite rules so that Apache won't rewrite certain requests -# -# Example: -# RewriteCond %{REQUEST_URI} ^/notrails.* -# RewriteRule .* - [L] - -# Redirect all requests not available on the filesystem to Rails -# By default the cgi dispatcher is used which is very slow -# -# For better performance replace the dispatcher with the fastcgi one -# -# Example: -# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] -RewriteEngine On - -# If your Rails application is accessed via an Alias directive, -# then you MUST also set the RewriteBase in this htaccess file. -# -# Example: -# Alias /myrailsapp /path/to/myrailsapp/public -# RewriteBase /myrailsapp - -RewriteRule ^$ index.html [QSA] -RewriteRule ^([^.]+)$ $1.html [QSA] -RewriteCond %{REQUEST_FILENAME} !-f - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.cgi [QSA,L] - - -# In case Rails experiences terminal errors -# Instead of displaying this message you can supply a file here which will be rendered instead -# -# Example: -# ErrorDocument 500 /500.html - -ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 public/.svn/text-base/htaccess.fcgi.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/.svn/text-base/htaccess.fcgi.example.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,55 @@ +# General Apache options + + AddHandler fastcgi-script .fcgi + + + AddHandler fcgid-script .fcgi + + + AddHandler cgi-script .cgi + +Options +FollowSymLinks +ExecCGI + +# If you don't want Rails to look in certain directories, +# use the following rewrite rules so that Apache won't rewrite certain requests +# +# Example: +# RewriteCond %{REQUEST_URI} ^/notrails.* +# RewriteRule .* - [L] + +# Redirect all requests not available on the filesystem to Rails +# By default the cgi dispatcher is used which is very slow +# +# For better performance replace the dispatcher with the fastcgi one +# +# Example: +# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] +RewriteEngine On + +# If your Rails application is accessed via an Alias directive, +# then you MUST also set the RewriteBase in this htaccess file. +# +# Example: +# Alias /myrailsapp /path/to/myrailsapp/public +# RewriteBase /myrailsapp + +RewriteRule ^$ index.html [QSA] +RewriteRule ^([^.]+)$ $1.html [QSA] +RewriteCond %{REQUEST_FILENAME} !-f + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.cgi [QSA,L] + + +# In case Rails experiences terminal errors +# Instead of displaying this message you can supply a file here which will be rendered instead +# +# Example: +# ErrorDocument 500 /500.html + +ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 public/favicon.ico Binary file public/favicon.ico has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 public/help/.svn/all-wcprops --- a/public/help/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/help/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 36 -/svn/!svn/ver/4308/trunk/public/help +/svn/!svn/ver/4758/trunk/public/help END wiki_syntax_detailed.html K 25 svn:wc:ra_dav:version-url V 62 -/svn/!svn/ver/4308/trunk/public/help/wiki_syntax_detailed.html +/svn/!svn/ver/4758/trunk/public/help/wiki_syntax_detailed.html END wiki_syntax.html K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/help/.svn/entries --- a/public/help/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/help/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/help http://redmine.rubyforge.org/svn -2010-10-29T22:48:59.506153Z -4308 -jbbarth +2011-01-23T16:12:38.944844Z +4758 +jplang @@ -32,11 +32,11 @@ -2010-11-19T13:04:51.444942Z -380699b753ffb01cba5c9504216ff64b -2010-10-29T22:48:59.506153Z -4308 -jbbarth +2011-03-03T11:05:14.000000Z +4e4c86877abc332b323cde0e35f235fa +2011-01-23T16:12:38.944844Z +4758 +jplang @@ -58,7 +58,7 @@ -11397 +12098 wiki_syntax.html file @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.075747Z +2011-03-03T11:05:14.000000Z f3c9e77ebd5a0c8e580df191a00bc01c 2008-09-13T09:45:07.868598Z 1803 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/help/.svn/text-base/wiki_syntax_detailed.html.svn-base --- a/public/help/.svn/text-base/wiki_syntax_detailed.html.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/public/help/.svn/text-base/wiki_syntax_detailed.html.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -46,7 +46,9 @@
    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to a changeset: r758 (displays r758)
    • -
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd). Added in r1236.
    • +
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd).
    • +
    • Link to a changeset of another project: sandbox:r758 (displays sanbox:r758)
    • +
    • Link to a changeset with a non-numeric hash: sandbox:c6f4d0fd (displays sandbox:c6f4d0fd).

    Wiki links:

    @@ -74,7 +76,7 @@
  • document#17 (link to document with id 17)
  • document:Greetings (link to the document with title "Greetings")
  • document:"Some document" (double quotes can be used when document title contains spaces)
  • -
  • document:some_project:"Some document" (link to a document with title "Some document" in other project "some_project") +
  • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
  • @@ -84,6 +86,7 @@
  • version#3 (link to version with id 3)
  • version:1.0.0 (link to version named "1.0.0")
  • version:"1.0 beta 2"
  • +
  • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
  • @@ -103,7 +106,9 @@
  • source:some/file#L120 (link to line 120 of the file)
  • source:some/file@52#L120 (link to line 120 of the file's revision 52)
  • source:"some file@52#L120" (use double quotes when the URL contains spaces
  • -
  • export:some/file (force the download of the file)
  • +
  • export:some/file (force the download of the file)
  • +
  • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
  • +
  • sandbox:export:some/file (force the download of the file)
  • diff -r 7cec015f07ce -r 73ff0e6a11b1 public/help/wiki_syntax_detailed.html --- a/public/help/wiki_syntax_detailed.html Tue Feb 22 16:48:15 2011 +0000 +++ b/public/help/wiki_syntax_detailed.html Thu Mar 03 12:11:53 2011 +0000 @@ -46,7 +46,9 @@
    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to a changeset: r758 (displays r758)
    • -
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd). Added in r1236.
    • +
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd).
    • +
    • Link to a changeset of another project: sandbox:r758 (displays sanbox:r758)
    • +
    • Link to a changeset with a non-numeric hash: sandbox:c6f4d0fd (displays sandbox:c6f4d0fd).

    Wiki links:

    @@ -74,7 +76,7 @@
  • document#17 (link to document with id 17)
  • document:Greetings (link to the document with title "Greetings")
  • document:"Some document" (double quotes can be used when document title contains spaces)
  • -
  • document:some_project:"Some document" (link to a document with title "Some document" in other project "some_project") +
  • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
  • @@ -84,6 +86,7 @@
  • version#3 (link to version with id 3)
  • version:1.0.0 (link to version named "1.0.0")
  • version:"1.0 beta 2"
  • +
  • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
  • @@ -103,7 +106,9 @@
  • source:some/file#L120 (link to line 120 of the file)
  • source:some/file@52#L120 (link to line 120 of the file's revision 52)
  • source:"some file@52#L120" (use double quotes when the URL contains spaces
  • -
  • export:some/file (force the download of the file)
  • +
  • export:some/file (force the download of the file)
  • +
  • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
  • +
  • sandbox:export:some/file (force the download of the file)
  • diff -r 7cec015f07ce -r 73ff0e6a11b1 public/htaccess.fcgi.example --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/htaccess.fcgi.example Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,55 @@ +# General Apache options + + AddHandler fastcgi-script .fcgi + + + AddHandler fcgid-script .fcgi + + + AddHandler cgi-script .cgi + +Options +FollowSymLinks +ExecCGI + +# If you don't want Rails to look in certain directories, +# use the following rewrite rules so that Apache won't rewrite certain requests +# +# Example: +# RewriteCond %{REQUEST_URI} ^/notrails.* +# RewriteRule .* - [L] + +# Redirect all requests not available on the filesystem to Rails +# By default the cgi dispatcher is used which is very slow +# +# For better performance replace the dispatcher with the fastcgi one +# +# Example: +# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] +RewriteEngine On + +# If your Rails application is accessed via an Alias directive, +# then you MUST also set the RewriteBase in this htaccess file. +# +# Example: +# Alias /myrailsapp /path/to/myrailsapp/public +# RewriteBase /myrailsapp + +RewriteRule ^$ index.html [QSA] +RewriteRule ^([^.]+)$ $1.html [QSA] +RewriteCond %{REQUEST_FILENAME} !-f + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.cgi [QSA,L] + + +# In case Rails experiences terminal errors +# Instead of displaying this message you can supply a file here which will be rendered instead +# +# Example: +# ErrorDocument 500 /500.html + +ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/.svn/all-wcprops --- a/public/images/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/images/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/4072/trunk/public/images +/svn/!svn/ver/4534/trunk/public/images END time.png K 25 @@ -13,7 +13,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/3573/trunk/public/images/task_parent_end.png +/svn/!svn/ver/4534/trunk/public/images/task_parent_end.png END arrow_expanded.png K 25 @@ -27,11 +27,11 @@ V 62 /svn/!svn/ver/3419/trunk/public/images/bullet_toggle_minus.png END -2downarrow.png +milestone_late.png K 25 svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3419/trunk/public/images/2downarrow.png +V 57 +/svn/!svn/ver/4072/trunk/public/images/milestone_late.png END folder_open_add.png K 25 @@ -39,11 +39,11 @@ V 58 /svn/!svn/ver/3419/trunk/public/images/folder_open_add.png END -milestone_late.png +2downarrow.png K 25 svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4072/trunk/public/images/milestone_late.png +V 53 +/svn/!svn/ver/3419/trunk/public/images/2downarrow.png END warning.png K 25 @@ -51,18 +51,18 @@ V 50 /svn/!svn/ver/3419/trunk/public/images/warning.png END +move.png +K 25 +svn:wc:ra_dav:version-url +V 47 +/svn/!svn/ver/3419/trunk/public/images/move.png +END fav_off.png K 25 svn:wc:ra_dav:version-url V 50 /svn/!svn/ver/3419/trunk/public/images/fav_off.png END -move.png -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/3419/trunk/public/images/move.png -END reload.png K 25 svn:wc:ra_dav:version-url @@ -81,18 +81,18 @@ V 54 /svn/!svn/ver/3419/trunk/public/images/ticket_note.png END +copy.png +K 25 +svn:wc:ra_dav:version-url +V 47 +/svn/!svn/ver/3419/trunk/public/images/copy.png +END zoom_in.png K 25 svn:wc:ra_dav:version-url V 50 /svn/!svn/ver/3419/trunk/public/images/zoom_in.png END -copy.png -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/3419/trunk/public/images/copy.png -END news.png K 25 svn:wc:ra_dav:version-url @@ -249,47 +249,53 @@ V 61 /svn/!svn/ver/3419/trunk/public/images/folder_open_orange.png END +attachment.png +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/3419/trunk/public/images/attachment.png +END textfield.png K 25 svn:wc:ra_dav:version-url V 52 /svn/!svn/ver/3419/trunk/public/images/textfield.png END -attachment.png -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3419/trunk/public/images/attachment.png -END false.png K 25 svn:wc:ra_dav:version-url V 48 /svn/!svn/ver/3419/trunk/public/images/false.png END +bullet_toggle_plus.png +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/3419/trunk/public/images/bullet_toggle_plus.png +END unlock.png K 25 svn:wc:ra_dav:version-url V 49 /svn/!svn/ver/3430/trunk/public/images/unlock.png END -bullet_toggle_plus.png -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3419/trunk/public/images/bullet_toggle_plus.png -END group.png K 25 svn:wc:ra_dav:version-url V 48 /svn/!svn/ver/3419/trunk/public/images/group.png END -save.png +plugin.png K 25 svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/3419/trunk/public/images/save.png +V 49 +/svn/!svn/ver/3419/trunk/public/images/plugin.png +END +loading.gif +K 25 +svn:wc:ra_dav:version-url +V 48 +/svn/!svn/ver/67/trunk/public/images/loading.gif END bullet_blue.png K 25 @@ -297,17 +303,11 @@ V 54 /svn/!svn/ver/3419/trunk/public/images/bullet_blue.png END -loading.gif +save.png K 25 svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/67/trunk/public/images/loading.gif -END -plugin.png -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/3419/trunk/public/images/plugin.png +V 47 +/svn/!svn/ver/3419/trunk/public/images/save.png END bullet_add.png K 25 @@ -321,29 +321,29 @@ V 48 /svn/!svn/ver/3419/trunk/public/images/draft.png END +milestone_done.png +K 25 +svn:wc:ra_dav:version-url +V 57 +/svn/!svn/ver/4072/trunk/public/images/milestone_done.png +END exclamation.png K 25 svn:wc:ra_dav:version-url V 54 /svn/!svn/ver/3419/trunk/public/images/exclamation.png END -milestone_done.png -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4072/trunk/public/images/milestone_done.png -END ticket_go.png K 25 svn:wc:ra_dav:version-url V 52 /svn/!svn/ver/3419/trunk/public/images/ticket_go.png END -zoom_out.png +folder.png K 25 svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/3419/trunk/public/images/zoom_out.png +V 49 +/svn/!svn/ver/3419/trunk/public/images/folder.png END report.png K 25 @@ -351,11 +351,11 @@ V 49 /svn/!svn/ver/3419/trunk/public/images/report.png END -folder.png +zoom_out.png K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/3419/trunk/public/images/folder.png +V 51 +/svn/!svn/ver/3419/trunk/public/images/zoom_out.png END fav.png K 25 @@ -363,36 +363,36 @@ V 46 /svn/!svn/ver/3419/trunk/public/images/fav.png END +document.png +K 25 +svn:wc:ra_dav:version-url +V 51 +/svn/!svn/ver/3419/trunk/public/images/document.png +END bullet_purple.png K 25 svn:wc:ra_dav:version-url V 56 /svn/!svn/ver/3419/trunk/public/images/bullet_purple.png END -document.png -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/3419/trunk/public/images/document.png -END true.png K 25 svn:wc:ra_dav:version-url V 47 /svn/!svn/ver/3419/trunk/public/images/true.png END +arrow_down.png +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/3419/trunk/public/images/arrow_down.png +END 2uparrow.png K 25 svn:wc:ra_dav:version-url V 51 /svn/!svn/ver/3419/trunk/public/images/2uparrow.png END -arrow_down.png -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3419/trunk/public/images/arrow_down.png -END cancel.png K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/.svn/entries --- a/public/images/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/images/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/images http://redmine.rubyforge.org/svn -2010-09-10T03:09:02.311267Z -4072 -edavis10 +2010-12-18T16:06:20.343240Z +4534 +jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 45d9f8f4b7723c5df684fd6785b40700 2010-02-13T09:08:12.698526Z 3419 @@ -66,10 +66,10 @@ -2010-09-23T14:37:45.159811Z -9016fc5be8e81d6a41a1fd6312b05f39 -2010-03-13T14:56:49.379682Z -3573 +2011-03-03T11:05:14.000000Z +7042481efe0084860d2a7b176086b306 +2010-12-18T16:06:20.343240Z +4534 jplang has-props @@ -92,7 +92,7 @@ -165 +224 arrow_expanded.png file @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 2455a62f4801926d7c69099f5134c867 2010-02-13T09:08:12.698526Z 3419 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z bc6f6e0d67aba9e7689e852dad4977f9 2010-02-13T09:08:12.698526Z 3419 @@ -168,7 +168,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z ecc1979ed435769c700725495428359f 2010-09-10T03:09:02.311267Z 4072 @@ -196,13 +196,47 @@ 160 +folder_open_add.png +file + + + + +2011-03-03T11:05:14.000000Z +8ae3a2d9ef884ed73a4157cd9c0465b8 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +375 + 2downarrow.png file -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 6730b4ea633194233bec98ee5f7a3977 2010-02-13T09:08:12.698526Z 3419 @@ -230,47 +264,13 @@ 282 -folder_open_add.png -file - - - - -2010-09-23T14:37:45.139758Z -8ae3a2d9ef884ed73a4157cd9c0465b8 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -375 - warning.png file -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z f1cdd6ad27b9211924dcd8a4c8133f1b 2010-02-13T09:08:12.698526Z 3419 @@ -298,13 +298,47 @@ 613 +move.png +file + + + + +2011-03-03T11:05:14.000000Z +0a2ceb01cbc3c01186fdcc25ced8eb0d +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +321 + fav_off.png file -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z ff96c02d8f18116bb3f005f2c8b86e91 2010-02-13T09:08:12.698526Z 3419 @@ -332,47 +366,13 @@ 211 -move.png -file - - - - -2010-09-23T14:37:45.155802Z -0a2ceb01cbc3c01186fdcc25ced8eb0d -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -321 - reload.png file -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z a20844852ce8909ed4a19ccb0f6c6518 2010-02-14T13:13:16.743297Z 3430 @@ -406,7 +406,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 94cfc6b14b69f8eb30909fa1a0d8721d 2010-09-10T03:09:02.311267Z 4072 @@ -440,7 +440,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 6a0f06b7f2b400d1d7b07180a909fed2 2010-02-13T09:08:12.698526Z 3419 @@ -474,7 +474,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 91b883d074b727f1a95cd0ce48510a3c 2010-02-13T09:08:12.698526Z 3419 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z acd6a5a422b44466803829ce8a12fd9a 2010-02-13T09:08:12.698526Z 3419 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 63c87d73f46ed17a4ebc2b5a7e6cd6f4 2010-02-13T09:08:12.698526Z 3419 @@ -576,7 +576,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 45e9710ba200afbac6ba55970bd9d625 2010-02-23T21:10:15.865943Z 3477 @@ -613,7 +613,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 7604387e10f9c0be473a497ee5f516b8 2010-02-13T09:08:12.698526Z 3419 @@ -647,7 +647,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 66da3813f290297bc39d289b859c3818 2010-02-13T09:08:12.698526Z 3419 @@ -681,7 +681,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 0c32351cd2f92465a51d8da771bd92cb 2010-02-13T09:08:12.698526Z 3419 @@ -715,7 +715,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 59894f5d5656b1f6e2af9c22187e6e86 2010-09-10T03:09:02.311267Z 4072 @@ -749,7 +749,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 30a7571b4822a789787f2a8b25ad4808 2010-02-13T09:08:12.698526Z 3419 @@ -783,7 +783,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 80f689a299e7e69fb2512482bca6f5d4 2010-02-13T09:08:12.698526Z 3419 @@ -817,7 +817,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z ce8f2e6769f9abc327609dea0ded14e5 2010-02-13T09:08:12.698526Z 3419 @@ -851,7 +851,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 242909ef391b4ebc83d53b13b4d90991 2010-02-13T09:08:12.698526Z 3419 @@ -885,7 +885,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z cf95da81d3626d67d5f49792341e396a 2010-02-13T09:08:12.698526Z 3419 @@ -919,7 +919,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 62d29dab3c8967d0ca404a25059c3dbd 2010-02-13T09:08:12.698526Z 3419 @@ -953,7 +953,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z eecb8adaaeabcff6c838886809c85f93 2010-02-13T09:08:12.698526Z 3419 @@ -987,7 +987,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 898a97e88d0cfc1dd41a6903d0a7cd72 2010-02-13T09:08:12.698526Z 3419 @@ -1021,7 +1021,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 3713155c5afcfeffaf877126d6b942aa 2010-02-13T09:08:12.698526Z 3419 @@ -1055,7 +1055,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 40c58172e0c52eee4deb5227ec37f0cf 2010-09-10T03:09:02.311267Z 4072 @@ -1089,7 +1089,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z fba036d7348ff28f7ab7dacbc52bc32a 2010-02-13T09:08:12.698526Z 3419 @@ -1123,7 +1123,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 01c137e009015642700b935edb321a89 2010-02-13T09:08:12.698526Z 3419 @@ -1157,7 +1157,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z ef1412a13d9113c5e5e85cfcd8300d9d 2010-02-13T09:08:12.698526Z 3419 @@ -1191,7 +1191,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z b2e4e10fb114db28b9245210a5505c44 2010-02-14T11:52:12.027647Z 3426 @@ -1225,7 +1225,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z e0d9ad958faa1c07b84c78c7b7e5ffae 2010-02-13T09:08:12.698526Z 3419 @@ -1259,7 +1259,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 3eb9e517f1a10430f7ec0ed7d30e05d8 2010-02-13T09:08:12.698526Z 3419 @@ -1293,7 +1293,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z e341b581fbbf8a5d038c8432409ceb5f 2010-02-23T21:10:15.865943Z 3477 @@ -1327,7 +1327,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 981a44ce8d3f71125a300dece0cc0f21 2010-02-13T09:08:12.698526Z 3419 @@ -1361,7 +1361,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z c4e01ea1c0ce5a1cd5154dfd2512fb21 2010-02-13T09:08:12.698526Z 3419 @@ -1395,7 +1395,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 944495c065d05a9161ad7da534703010 2010-02-13T09:08:12.698526Z 3419 @@ -1423,13 +1423,47 @@ 403 +attachment.png +file + + + + +2011-03-03T11:05:14.000000Z +0a35d4eaddb2292fed7062295ee0dcd8 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +939 + textfield.png file -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 985a1dadffeaa303ff1eef4ea53ec0f4 2010-02-13T09:08:12.698526Z 3419 @@ -1457,47 +1491,13 @@ 100 -attachment.png -file - - - - -2010-09-23T14:37:45.123788Z -0a35d4eaddb2292fed7062295ee0dcd8 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -939 - false.png file -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z f0c51de3ba403e552c8ab6e8084448a4 2010-02-13T09:08:12.698526Z 3419 @@ -1525,13 +1525,47 @@ 459 +bullet_toggle_plus.png +file + + + + +2011-03-03T11:05:14.000000Z +06cbf5da7daca348a87a6299a4112d71 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +217 + unlock.png file -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z fa1be48a747127ee34d4fae020b825d4 2010-02-14T13:13:16.743297Z 3430 @@ -1559,47 +1593,13 @@ 448 -bullet_toggle_plus.png -file - - - - -2010-09-23T14:37:45.127811Z -06cbf5da7daca348a87a6299a4112d71 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -217 - group.png file -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 8e1056421acf9e61af00f0dcb83fef12 2010-02-13T09:08:12.698526Z 3419 @@ -1627,13 +1627,115 @@ 700 +plugin.png +file + + + + +2011-03-03T11:05:14.000000Z +e019855b07d30f1ce1baf59b9df27125 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +538 + +loading.gif +file + + + + +2011-03-03T11:05:14.000000Z +03ce3dcc84af110e9da8699a841e5200 +2006-12-03T19:55:45.161980Z +62 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1553 + +bullet_blue.png +file + + + + +2011-03-03T11:05:14.000000Z +3363f60299360fb5539b769d089e145f +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +241 + save.png file -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 9e64db8f4905a17e3a6f68792cd5e199 2010-02-13T09:08:12.698526Z 3419 @@ -1661,115 +1763,13 @@ 440 -bullet_blue.png -file - - - - -2010-09-23T14:37:45.123788Z -3363f60299360fb5539b769d089e145f -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -241 - -loading.gif -file - - - - -2010-09-23T14:37:45.151760Z -03ce3dcc84af110e9da8699a841e5200 -2006-12-03T19:55:45.161980Z -62 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1553 - -plugin.png -file - - - - -2010-09-23T14:37:45.155802Z -e019855b07d30f1ce1baf59b9df27125 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -538 - bullet_add.png file -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 848b802c0ce8e051f98f086f6e31c8cd 2010-02-13T09:08:12.698526Z 3419 @@ -1803,7 +1803,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z eec8605f3797315b2d8397422df1aed3 2010-02-13T09:08:12.698526Z 3419 @@ -1837,7 +1837,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 40c58172e0c52eee4deb5227ec37f0cf 2010-09-10T03:09:02.311267Z 4072 @@ -1871,7 +1871,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 7b5dcbdd0de4541b39e1302b6277684d 2010-02-13T09:08:12.698526Z 3419 @@ -1905,7 +1905,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z dca02b582c10127fcdc8af47e94d4e4c 2010-02-13T09:08:12.698526Z 3419 @@ -1933,13 +1933,81 @@ 608 +folder.png +file + + + + +2011-03-03T11:05:14.000000Z +59f2dc025632f00403490176e7f42bfc +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +970 + +report.png +file + + + + +2011-03-03T11:05:14.000000Z +8d8ec49f5773997411ff708a82e40568 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1014 + zoom_out.png file -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 42b319d6ad0249fb20833a17d5f373a4 2010-02-13T09:08:12.698526Z 3419 @@ -1967,81 +2035,13 @@ 461 -report.png -file - - - - -2010-09-23T14:37:45.155802Z -8d8ec49f5773997411ff708a82e40568 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1014 - -folder.png -file - - - - -2010-09-23T14:37:45.139758Z -59f2dc025632f00403490176e7f42bfc -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -970 - fav.png file -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 29feed9e7b5c34854bf9f9f39681e06b 2010-02-13T09:08:12.698526Z 3419 @@ -2075,7 +2075,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z c4c76ce450e3e838afd6aa8f34a8d9a8 2010-02-13T09:08:12.698526Z 3419 @@ -2109,7 +2109,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 97c12039afee2ea9c5a13e74f6fa5c0c 2010-02-13T09:08:12.698526Z 3419 @@ -2143,7 +2143,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z a30b3000c7286879d10ca1fbff06f71d 2010-02-13T09:08:12.698526Z 3419 @@ -2171,13 +2171,47 @@ 248 +arrow_down.png +file + + + + +2011-03-03T11:05:14.000000Z +ed9b7ced8e3b6275c14d528dc6909691 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +115 + 2uparrow.png file -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z afef823014efb32adcd9606b69119562 2010-02-13T09:08:12.698526Z 3419 @@ -2205,47 +2239,13 @@ 292 -arrow_down.png -file - - - - -2010-09-23T14:37:45.123788Z -ed9b7ced8e3b6275c14d528dc6909691 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -115 - cancel.png file -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 812bdb688394ba6e2ed3cb7ceb4b7df0 2010-02-13T09:08:12.698526Z 3419 @@ -2279,7 +2279,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 7e62689a93d0a23cbd1cf2dd754653e2 2010-02-13T09:08:12.698526Z 3419 @@ -2313,7 +2313,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 9856446e5026c8d31704b84e836dc06e 2010-02-13T09:08:12.698526Z 3419 @@ -2347,7 +2347,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z f94f71deb205f49de993ad9521791ada 2010-02-13T09:08:12.698526Z 3419 @@ -2381,7 +2381,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 3ec32bbf3ad9e052833d05c0d41445f0 2010-02-13T09:08:12.698526Z 3419 @@ -2415,7 +2415,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 980dcfdb816ce626e4d2df5c2a308549 2010-02-13T09:08:12.698526Z 3419 @@ -2449,7 +2449,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 3e9542b5042e280bc2fc0ae98c81529f 2010-02-13T09:08:12.698526Z 3419 @@ -2483,7 +2483,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 9a911ac680f354452f13729921e80d21 2010-02-13T09:08:12.698526Z 3419 @@ -2517,7 +2517,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z ea73bd6514b7d5f1d7ea2bd336f9303a 2010-02-13T09:08:12.698526Z 3419 @@ -2551,7 +2551,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 3b0e537dabdfa5385e76ea465c4ea57b 2010-02-13T09:08:12.698526Z 3419 @@ -2585,7 +2585,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 82e11faddb62c05a1ef9701035919c00 2010-02-13T09:08:12.698526Z 3419 @@ -2619,7 +2619,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z cd3890ab38793e53a99227a180616a70 2010-02-13T09:08:12.698526Z 3419 @@ -2653,7 +2653,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 9a73430b658b4e16668b3e3cc7e241b4 2010-02-13T09:08:12.698526Z 3419 @@ -2687,7 +2687,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 558c616ebcfa38b1c7b298184e58eb91 2010-02-13T09:08:12.698526Z 3419 @@ -2721,7 +2721,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 2459e5967a6ddd78589ab52970574f3f 2010-02-13T09:08:12.698526Z 3419 @@ -2755,7 +2755,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 60f9166d90d7aeb71d0ec9ee337c3f5e 2010-02-13T09:08:12.698526Z 3419 @@ -2792,7 +2792,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z cd5b56dff1c089b4e1e3db29b2b7226e 2010-02-13T09:08:12.698526Z 3419 @@ -2826,7 +2826,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 6172a7483daa35983c4ea5a35bd8c64a 2010-07-20T23:50:15.173990Z 3859 @@ -2860,7 +2860,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 6b08128a1b67ecb4b1ed06c9c505ac63 2010-02-13T09:08:12.698526Z 3419 @@ -2894,7 +2894,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 980dcfdb816ce626e4d2df5c2a308549 2010-02-13T09:08:12.698526Z 3419 @@ -2928,7 +2928,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 035a9d73627fc55aeaa7b553ac82ae9e 2010-02-13T09:08:12.698526Z 3419 @@ -2962,7 +2962,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 06b4b4425c7439fd898cd68e97f75d0f 2010-02-13T09:08:12.698526Z 3419 @@ -2996,7 +2996,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z d8ae88af42e1b9d1a4f9397041b17cd8 2010-02-13T09:08:12.698526Z 3419 @@ -3030,7 +3030,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 85089bb401af7c5d7325ee317483ac70 2010-02-13T09:08:12.698526Z 3419 @@ -3064,7 +3064,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 11dc95a35460864fc1e81bd95121cbf4 2010-02-13T09:08:12.698526Z 3419 @@ -3098,7 +3098,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z d8720cf3644e6ae0511c1391fb2ecf07 2009-02-11T19:07:07.158826Z 2442 @@ -3132,7 +3132,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 8b706274d81243b3d26fdf06dfc9e533 2010-02-13T09:08:12.698526Z 3419 @@ -3166,7 +3166,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z f0626259c107cfa1d1e4cb9d9f6edd34 2010-09-10T03:09:02.311267Z 4072 @@ -3200,7 +3200,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 9265bd26d6ba3d780dcd6fe676352d93 2010-02-13T09:08:12.698526Z 3419 @@ -3234,7 +3234,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z e34a59e24637e7bf462f5a742dbe243f 2010-02-13T09:08:12.698526Z 3419 @@ -3268,7 +3268,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 11f086774137d85a5cc6590ec3335ead 2010-02-13T09:08:12.698526Z 3419 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/.svn/text-base/task_parent_end.png.svn-base Binary file public/images/.svn/text-base/task_parent_end.png.svn-base has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/files/.svn/all-wcprops --- a/public/images/files/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/3419/trunk/public/images/files -END -csharp.png -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/3419/trunk/public/images/files/csharp.png -END -xml.png -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3419/trunk/public/images/files/xml.png -END -ruby.png -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3419/trunk/public/images/files/ruby.png -END -c.png -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/3419/trunk/public/images/files/c.png -END -image.png -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3419/trunk/public/images/files/image.png -END -zip.png -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3419/trunk/public/images/files/zip.png -END -default.png -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3419/trunk/public/images/files/default.png -END -text.png -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3419/trunk/public/images/files/text.png -END -php.png -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3419/trunk/public/images/files/php.png -END -pdf.png -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/3419/trunk/public/images/files/pdf.png -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/files/.svn/entries --- a/public/images/files/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/images/files/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/images/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.135758Z +2011-03-03T11:05:14.000000Z 136af9d95025ca62a3091a261266e13f 2010-02-13T09:08:12.698526Z 3419 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z c801cf9aa0103de823e53e83459a1ff9 2010-02-13T09:08:12.698526Z 3419 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 1e51c81cb33d3d6746d440c1babfe0f5 2010-02-13T09:08:12.698526Z 3419 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.135758Z +2011-03-03T11:05:14.000000Z db0495227202385c9fce1b73f2d58ff0 2010-02-13T09:08:12.698526Z 3419 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 94db8424e52f54d7372a976574c4598e 2010-02-13T09:08:12.698526Z 3419 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z ad3ed8ec19bb2a3cca8c03e0ea1aa846 2010-02-13T09:08:12.698526Z 3419 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 8e05d64f0b9f45f076b41521a8d6a8d1 2010-02-13T09:08:12.698526Z 3419 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z ea9b5de5353e1cac630021dfed30dba4 2010-02-13T09:08:12.698526Z 3419 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 0790c67308754572014015fa90eef406 2010-02-13T09:08:12.698526Z 3419 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z e11f9ebff53e8088dce2a0028f0d5190 2010-02-13T09:08:12.698526Z 3419 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/jstoolbar/.svn/all-wcprops --- a/public/images/jstoolbar/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar -END -bt_h1.png -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_h1.png -END -bt_h2.png -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_h2.png -END -bt_ol.png -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_ol.png -END -bt_h3.png -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_h3.png -END -bt_code.png -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_code.png -END -bt_strong.png -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_strong.png -END -bt_img.png -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_img.png -END -bt_bq_remove.png -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_bq_remove.png -END -bt_ul.png -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_ul.png -END -bt_pre.png -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_pre.png -END -bt_ins.png -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_ins.png -END -bt_link.png -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_link.png -END -bt_em.png -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_em.png -END -bt_bq.png -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_bq.png -END -bt_del.png -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3419/trunk/public/images/jstoolbar/bt_del.png -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/jstoolbar/.svn/entries --- a/public/images/jstoolbar/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/images/jstoolbar/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/images/jstoolbar http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z c77264aa6d145362b791c99d18f53ace 2010-02-13T09:08:12.698526Z 3419 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z c19bfc8d9620c00cdd8ae322426bc07e 2010-02-13T09:08:12.698526Z 3419 @@ -94,13 +94,81 @@ 252 +bt_ol.png +file + + + + +2011-03-03T11:05:14.000000Z +5477ff20be77ab65aa6b75f47778234e +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +248 + +bt_h3.png +file + + + + +2011-03-03T11:05:14.000000Z +cb940b592da5ed0367305cb0514d5684 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +261 + bt_code.png file -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z ef6624df45946b54e3b23db2a0c6b77b 2010-02-13T09:08:12.698526Z 3419 @@ -128,14 +196,14 @@ 927 -bt_h3.png +bt_strong.png file -2010-09-23T14:37:45.151760Z -cb940b592da5ed0367305cb0514d5684 +2011-03-03T11:05:14.000000Z +f9d7446ceaa5142a5030e9430b3a2bb4 2010-02-13T09:08:12.698526Z 3419 jplang @@ -160,41 +228,7 @@ -261 - -bt_ol.png -file - - - - -2010-09-23T14:37:45.151760Z -5477ff20be77ab65aa6b75f47778234e -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -248 +244 bt_img.png file @@ -202,7 +236,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 04a0e86c9eec7d85d445e7627b5fc8ea 2010-02-13T09:08:12.698526Z 3419 @@ -230,47 +264,13 @@ 1027 -bt_strong.png -file - - - - -2010-09-23T14:37:45.151760Z -f9d7446ceaa5142a5030e9430b3a2bb4 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -244 - bt_bq_remove.png file -2010-09-23T14:37:45.147772Z +2011-03-03T11:05:14.000000Z 123b8289e1bd69a5944cf727a5e39bc9 2010-02-13T09:08:12.698526Z 3419 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 15d8f6c0fbf85718123fb7c7da782713 2010-02-13T09:08:12.698526Z 3419 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 5a29cb56451be0fd714b99d2b2649bf0 2010-02-13T09:08:12.698526Z 3419 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 07234419aecb827f11eef1ebd9b42482 2010-02-13T09:08:12.698526Z 3419 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 5042501ddf948fe938ded69a40ef1024 2010-02-13T09:08:12.698526Z 3419 @@ -440,7 +440,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 584fb45fd15d894adc19ff3cf626fae9 2010-02-13T09:08:12.698526Z 3419 @@ -474,7 +474,7 @@ -2010-09-23T14:37:45.147772Z +2011-03-03T11:05:14.000000Z 8448f92476ae933bacef7bc30ffd18fd 2010-02-13T09:08:12.698526Z 3419 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 38ee94bc0a44b9420854aceeccd2dd59 2010-02-13T09:08:12.698526Z 3419 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/images/task_parent_end.png Binary file public/images/task_parent_end.png has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/.svn/all-wcprops --- a/public/javascripts/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4222/trunk/public/javascripts +/svn/!svn/ver/4947/trunk/public/javascripts END prototype.js K 25 @@ -13,7 +13,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/3544/trunk/public/javascripts/context_menu.js +/svn/!svn/ver/4947/trunk/public/javascripts/context_menu.js END repository_navigation.js K 25 @@ -43,7 +43,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4222/trunk/public/javascripts/application.js +/svn/!svn/ver/4900/trunk/public/javascripts/application.js END controls.js K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/.svn/entries --- a/public/javascripts/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts http://redmine.rubyforge.org/svn -2010-09-28T21:09:06.467392Z -4222 -edavis10 +2011-02-24T17:56:17.648907Z +4947 +jplang @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.243754Z +2011-03-03T11:05:14.000000Z b5684120e496c310977713be34be4868 2009-02-21T11:04:50.579477Z 2493 @@ -69,10 +69,10 @@ -2010-09-23T14:37:45.207758Z -94d0e70a6ed4354a44ddb78ac6e15869 -2010-03-04T19:09:14.637225Z -3544 +2011-03-03T11:40:18.000000Z +3065b1a7ff2aca0c2d6fb394f4fef7fa +2011-02-24T17:56:17.648907Z +4947 jplang has-props @@ -95,7 +95,7 @@ -6999 +6852 calendar dir @@ -106,7 +106,7 @@ -2010-09-23T14:37:45.243754Z +2011-03-03T11:05:14.000000Z b868f888ccb92a2e7d3b955f0213078c 2009-08-15T22:41:40.505056Z 2840 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.207758Z +2011-03-03T11:05:14.000000Z a7d95dc040992701ba78fd5b97af950e 2009-02-21T11:04:50.579477Z 2493 @@ -174,7 +174,7 @@ -2010-09-23T14:37:45.243754Z +2011-03-03T11:05:14.000000Z d62b158eef2592fbe11ce104e118631c 2009-11-28T11:59:45.246623Z 3106 @@ -208,7 +208,7 @@ -2010-09-23T14:37:45.207758Z +2011-03-03T11:05:14.000000Z 3aa08ad9af21eb305a120e2e1a47d1af 2009-02-21T11:04:50.579477Z 2493 @@ -242,11 +242,11 @@ -2010-11-19T13:04:51.565792Z -cff005d7bada484046dc85e1caaeebe2 -2010-09-28T21:09:06.467392Z -4222 -edavis10 +2011-03-03T11:40:18.000000Z +312c6491eda00cbd741131ab1685a4b9 +2011-02-21T09:53:29.844413Z +4900 +jplang has-props @@ -268,7 +268,7 @@ -6581 +8869 controls.js file @@ -276,7 +276,7 @@ -2010-09-23T14:37:45.207758Z +2011-03-03T11:05:14.000000Z 136701e951925f3dcb84f9a231f9326e 2009-02-21T11:04:50.579477Z 2493 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/.svn/text-base/application.js.svn-base --- a/public/javascripts/.svn/text-base/application.js.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/.svn/text-base/application.js.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -46,6 +46,12 @@ Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2}); } +function hideFieldset(el) { + var fieldset = Element.up(el, 'fieldset'); + fieldset.toggleClassName('collapsed'); + fieldset.down('div').hide(); +} + var fileFieldCount = 1; function addFileField() { @@ -218,6 +224,81 @@ }}); } +function observeRelatedIssueField(url) { + new Ajax.Autocompleter('relation_issue_to_id', + 'related_issue_candidates', + url, + { minChars: 3, + frequency: 0.5, + paramName: 'q', + updateElement: function(value) { + document.getElementById('relation_issue_to_id').value = value.id; + }, + parameters: 'scope=all' + }); +} + +function setVisible(id, visible) { + var el = $(id); + if (el) {if (visible) {el.show();} else {el.hide();}} +} + +function observeProjectModules() { + var f = function() { + /* Hides trackers and issues custom fields on the new project form when issue_tracking module is disabled */ + var c = ($('project_enabled_module_names_issue_tracking').checked == true); + setVisible('project_trackers', c); + setVisible('project_issue_custom_fields', c); + }; + + Event.observe(window, 'load', f); + Event.observe('project_enabled_module_names_issue_tracking', 'change', f); +} + +/* + * Class used to warn user when leaving a page with unsaved textarea + * Author: mathias.fischer@berlinonline.de +*/ + +var WarnLeavingUnsaved = Class.create({ + observedForms: false, + observedElements: false, + changedForms: false, + message: null, + + initialize: function(message){ + this.observedForms = $$('form'); + this.observedElements = $$('textarea'); + this.message = message; + + this.observedElements.each(this.observeChange.bind(this)); + this.observedForms.each(this.submitAction.bind(this)); + + window.onbeforeunload = this.unload.bind(this); + }, + + unload: function(){ + if(this.changedForms) + return this.message; + }, + + setChanged: function(){ + this.changedForms = true; + }, + + setUnchanged: function(){ + this.changedForms = false; + }, + + observeChange: function(element){ + element.observe('change',this.setChanged.bindAsEventListener(this)); + }, + + submitAction: function(element){ + element.observe('submit',this.setUnchanged.bindAsEventListener(this)); + } +}); + /* shows and hides ajax indicator */ Ajax.Responders.register({ onCreate: function(){ diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/.svn/text-base/context_menu.js.svn-base --- a/public/javascripts/.svn/text-base/context_menu.js.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/.svn/text-base/context_menu.js.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -11,7 +11,7 @@ if (!observingContextMenuClick) { Event.observe(document, 'click', this.Click.bindAsEventListener(this)); - Event.observe(document, (window.opera ? 'click' : 'contextmenu'), this.RightClick.bindAsEventListener(this)); + Event.observe(document, 'contextmenu', this.RightClick.bindAsEventListener(this)); observingContextMenuClick = true; } @@ -23,8 +23,6 @@ this.hideMenu(); // do not show the context menu on links if (Event.element(e).tagName == 'A') { return; } - // right-click simulated by Alt+Click with Opera - if (window.opera && !e.altKey) { return; } var tr = Event.findElement(e, 'tr'); if (tr == document || tr == undefined || !tr.hasClassName('hascontextmenu')) { return; } Event.stop(e); @@ -39,7 +37,6 @@ Click: function(e) { this.hideMenu(); if (Event.element(e).tagName == 'A') { return; } - if (window.opera && e.altKey) { return; } if (Event.isLeftClick(e) || (navigator.appVersion.match(/\bMSIE\b/))) { var tr = Event.findElement(e, 'tr'); if (tr!=null && tr!=document && tr.hasClassName('hascontextmenu')) { @@ -121,6 +118,7 @@ new Ajax.Updater({success:'context-menu'}, this.url, {asynchronous:true, + method: 'get', evalScripts:true, parameters:Form.serialize(Event.findElement(e, 'form')), onComplete:function(request){ diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/application.js --- a/public/javascripts/application.js Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/application.js Thu Mar 03 12:11:53 2011 +0000 @@ -46,6 +46,12 @@ Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2}); } +function hideFieldset(el) { + var fieldset = Element.up(el, 'fieldset'); + fieldset.toggleClassName('collapsed'); + fieldset.down('div').hide(); +} + var fileFieldCount = 1; function addFileField() { @@ -218,6 +224,81 @@ }}); } +function observeRelatedIssueField(url) { + new Ajax.Autocompleter('relation_issue_to_id', + 'related_issue_candidates', + url, + { minChars: 3, + frequency: 0.5, + paramName: 'q', + updateElement: function(value) { + document.getElementById('relation_issue_to_id').value = value.id; + }, + parameters: 'scope=all' + }); +} + +function setVisible(id, visible) { + var el = $(id); + if (el) {if (visible) {el.show();} else {el.hide();}} +} + +function observeProjectModules() { + var f = function() { + /* Hides trackers and issues custom fields on the new project form when issue_tracking module is disabled */ + var c = ($('project_enabled_module_names_issue_tracking').checked == true); + setVisible('project_trackers', c); + setVisible('project_issue_custom_fields', c); + }; + + Event.observe(window, 'load', f); + Event.observe('project_enabled_module_names_issue_tracking', 'change', f); +} + +/* + * Class used to warn user when leaving a page with unsaved textarea + * Author: mathias.fischer@berlinonline.de +*/ + +var WarnLeavingUnsaved = Class.create({ + observedForms: false, + observedElements: false, + changedForms: false, + message: null, + + initialize: function(message){ + this.observedForms = $$('form'); + this.observedElements = $$('textarea'); + this.message = message; + + this.observedElements.each(this.observeChange.bind(this)); + this.observedForms.each(this.submitAction.bind(this)); + + window.onbeforeunload = this.unload.bind(this); + }, + + unload: function(){ + if(this.changedForms) + return this.message; + }, + + setChanged: function(){ + this.changedForms = true; + }, + + setUnchanged: function(){ + this.changedForms = false; + }, + + observeChange: function(element){ + element.observe('change',this.setChanged.bindAsEventListener(this)); + }, + + submitAction: function(element){ + element.observe('submit',this.setUnchanged.bindAsEventListener(this)); + } +}); + /* shows and hides ajax indicator */ Ajax.Responders.register({ onCreate: function(){ diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/calendar/.svn/all-wcprops --- a/public/javascripts/calendar/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/calendar/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/4060/trunk/public/javascripts/calendar +/svn/!svn/ver/4903/trunk/public/javascripts/calendar END calendar-setup.js K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/calendar/.svn/entries --- a/public/javascripts/calendar/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/calendar/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar http://redmine.rubyforge.org/svn -2010-09-05T11:33:08.614151Z -4060 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.171796Z +2011-03-03T11:05:14.000000Z e9be087e31b69f1e6a29ebd09b878486 2009-12-26T17:17:16.012737Z 3252 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.171796Z +2011-03-03T11:05:14.000000Z a2dccec0bd70984b17a54239caf0d5e0 2010-06-30T02:54:15.730933Z 3822 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/calendar/lang/.svn/all-wcprops --- a/public/javascripts/calendar/lang/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/calendar/lang/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4060/trunk/public/javascripts/calendar/lang +/svn/!svn/ver/4903/trunk/public/javascripts/calendar/lang END calendar-fi.js K 25 @@ -69,18 +69,18 @@ V 72 /svn/!svn/ver/2493/trunk/public/javascripts/calendar/lang/calendar-vi.js END +calendar-sr-yu.js +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4003/trunk/public/javascripts/calendar/lang/calendar-sr-yu.js +END calendar-uk.js K 25 svn:wc:ra_dav:version-url V 72 /svn/!svn/ver/1149/trunk/public/javascripts/calendar/lang/calendar-uk.js END -calendar-sr-yu.js -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/4003/trunk/public/javascripts/calendar/lang/calendar-sr-yu.js -END calendar-ro.js K 25 svn:wc:ra_dav:version-url @@ -219,6 +219,12 @@ V 72 /svn/!svn/ver/1817/trunk/public/javascripts/calendar/lang/calendar-tr.js END +calendar-fa.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/4903/trunk/public/javascripts/calendar/lang/calendar-fa.js +END calendar-bg.js K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/calendar/lang/.svn/entries --- a/public/javascripts/calendar/lang/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/calendar/lang/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar/lang http://redmine.rubyforge.org/svn -2010-09-05T11:33:08.614151Z -4060 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z d89a932075b18af4121f1941175d33d6 2008-03-05T08:54:26.865464Z 1186 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 1f10556f12619006e5cd99bf0e5061cc 2009-03-24T19:16:02.676125Z 2629 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 071917d0ae794b3cb057a0b354cd5105 2007-09-25T16:37:51.755262Z 764 @@ -134,7 +134,7 @@ -2010-09-24T12:48:29.835791Z +2011-03-03T11:05:14.000000Z 1044fe45dceaa0d72c32aca5c86eea4a 2010-08-29T12:54:04.302020Z 4049 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 5728a3665edb05faed6661f0f77c6eab 2007-04-04T18:20:45.423396Z 419 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 42ef87b559c68d2db63b109f3cb3f3ed 2008-12-24T15:48:59.830167Z 2182 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 3f9bda99497d5c8342d87b4ec6aa44ba 2010-01-25T15:25:46.560119Z 3338 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 4ae334472d40209252da8c69f07eabd5 2008-03-27T19:27:40.125888Z 1300 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 3c66093b97b7d0bb66f04dbc0be4afb3 2008-05-25T12:18:49.439996Z 1452 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z c161d1507fbd65ebddd7ada7c495eb89 2008-11-09T00:29:20.731069Z 1998 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z a85bbd596ff7e03e9434a286edd134fd 2009-02-21T11:04:50.579477Z 2493 @@ -400,13 +400,47 @@ 3978 +calendar-sr-yu.js +file + + + + +2011-03-03T11:05:14.000000Z +c48be791f5e8d236624752ce05cd3ed7 +2010-08-19T15:41:09.090282Z +4003 +winterheart + + + + + + + + + + + + + + + + + + + + + +3687 + calendar-uk.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 46811ee79796d2345bea2308475d1ec9 2008-02-15T17:47:19.829750Z 1149 @@ -434,47 +468,13 @@ 3600 -calendar-sr-yu.js -file - - - - -2010-09-23T14:37:45.203758Z -c48be791f5e8d236624752ce05cd3ed7 -2010-08-19T15:41:09.090282Z -4003 -winterheart - - - - - - - - - - - - - - - - - - - - - -3687 - calendar-ro.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 7e96487f7e089a48bd61d5e6e8785fe1 2009-03-24T19:20:53.296475Z 2630 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 8555f3d813ca70ecbd2aaecae826549f 2007-11-16T21:24:22.091853Z 907 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z f5a05a0d27c2d22fa8a7bf16be345250 2009-12-23T18:56:03.404741Z 3227 @@ -570,47 +570,13 @@ 3845 -calendar-gl.js -file - - - - -2010-09-23T14:37:45.195758Z -c4f74e36f6a3debcf8ec065bc6886f04 -2009-01-23T15:37:59.406714Z -2296 -winterheart - - - - - - - - - - - - - - - - - - - - - -3855 - calendar-en.js file -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 46811ee79796d2345bea2308475d1ec9 2007-04-04T18:20:45.423396Z 419 @@ -638,13 +604,47 @@ 3600 +calendar-gl.js +file + + + + +2011-03-03T11:05:14.000000Z +c4f74e36f6a3debcf8ec065bc6886f04 +2009-01-23T15:37:59.406714Z +2296 +winterheart + + + + + + + + + + + + + + + + + + + + + +3855 + calendar-fr.js file -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 0bfaa3ec0b265f9d5a815d9b9b348c96 2007-09-22T14:12:44.830265Z 748 @@ -672,13 +672,81 @@ 3870 +calendar-nl.js +file + + + + +2011-03-03T11:05:14.000000Z +c029bd9c4867bb39e86d1d6efada6d58 +2007-05-24T17:29:11.682821Z +539 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3701 + +calendar-hr.js +file + + + + +2011-03-03T11:05:14.000000Z +f8d0daa275cf612206c43d4c9be95d08 +2010-01-17T10:33:30.937961Z +3320 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3646 + calendar-zh-tw.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 0bed4c9c046772a12267b4118bf1504a 2008-06-07T09:03:20.687527Z 1498 @@ -706,81 +774,13 @@ 3841 -calendar-hr.js -file - - - - -2010-09-23T14:37:45.195758Z -f8d0daa275cf612206c43d4c9be95d08 -2010-01-17T10:33:30.937961Z -3320 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3646 - -calendar-nl.js -file - - - - -2010-09-23T14:37:45.199778Z -c029bd9c4867bb39e86d1d6efada6d58 -2007-05-24T17:29:11.682821Z -539 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3701 - calendar-mn.js file -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 307341352eee53b3ccd1fbec2a4b27f7 2010-04-03T10:49:16.109274Z 3626 @@ -808,13 +808,47 @@ 3904 +calendar-pl.js +file + + + + +2011-03-03T11:05:14.000000Z +eabf711c28d30bb9474f3f505766f286 +2007-09-22T14:56:09.057923Z +749 +jplang + + + + + + + + + + + + + + + + + + + + + +3974 + calendar-th.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z c8c19e66c3e1099c3e0ecae6462f68da 2008-04-30T08:47:14.770680Z 1383 @@ -842,47 +876,13 @@ 4417 -calendar-pl.js -file - - - - -2010-09-23T14:37:45.199778Z -eabf711c28d30bb9474f3f505766f286 -2007-09-22T14:56:09.057923Z -749 -jplang - - - - - - - - - - - - - - - - - - - - - -3974 - calendar-it.js file -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z d637b0156da2601e000e16f1ac178768 2010-08-19T15:41:09.090282Z 4003 @@ -916,7 +916,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z cbf1a5c6b271835c701031aacaeaa271 2009-01-31T12:02:37.933490Z 2340 @@ -950,7 +950,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 33bc41a153fc6fb2aa53069fb0f647d6 2008-02-15T17:47:19.829750Z 1149 @@ -978,13 +978,47 @@ 3909 +calendar-lv.js +file + + + + +2011-03-03T11:05:14.000000Z +b260d88c13c01ebf4e7c94b9cb022930 +2010-05-14T18:15:41.754813Z +3737 +winterheart + + + + + + + + + + + + + + + + + + + + + +3803 + calendar-zh.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 02222471f3e701ac1223096737fa5705 2008-06-07T09:03:20.687527Z 1498 @@ -1012,47 +1046,13 @@ 3600 -calendar-lv.js -file - - - - -2010-09-23T14:37:45.199778Z -b260d88c13c01ebf4e7c94b9cb022930 -2010-05-14T18:15:41.754813Z -3737 -winterheart - - - - - - - - - - - - - - - - - - - - - -3803 - calendar-ca.js file -2010-09-24T12:48:29.835791Z +2011-03-03T11:05:14.000000Z 2756627844089652700c203ee91ec6f3 2010-09-05T11:33:08.614151Z 4060 @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 67f2807b1ee731af4fe16f358a8d9096 2008-10-06T15:00:56.914741Z 1927 @@ -1120,7 +1120,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z c684331ae98de9a0e03db4de8f985e44 2008-05-25T12:42:56.738934Z 1453 @@ -1154,7 +1154,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 0d732eaa10604b943c7d600a15c8a651 2009-01-20T16:09:07.993954Z 2292 @@ -1188,7 +1188,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z a26f883ac70499ee0409af2c08156a84 2010-08-19T15:41:09.090282Z 4003 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 8cb3dced137544295b39ef836028433e 2008-09-13T17:25:01.876743Z 1817 @@ -1250,13 +1250,47 @@ 3776 +calendar-fa.js +file + + + + +2011-03-03T11:40:18.000000Z +79e745b797f9148ac63de8ce583e2282 +2011-02-21T10:08:59.720731Z +4903 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3977 + calendar-bg.js file -2010-09-23T14:37:45.191758Z +2011-03-03T11:05:14.000000Z df1a74fadb5ce5b1cc53aa70034f578b 2007-05-02T19:36:00.768529Z 502 @@ -1290,7 +1324,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z d508459192a856b332d75de94c8d5c6c 2007-04-04T18:20:45.423396Z 419 @@ -1324,7 +1358,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 66418d047f243e10172798af0fb4d927 2010-06-21T19:54:55.180393Z 3809 @@ -1358,7 +1392,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 7dc0f35efebbe8b0d078d2c847b43b7c 2009-01-20T15:45:34.332677Z 2290 @@ -1392,7 +1426,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z eb66ba69ac2233b24fe200060ec67ab7 2008-01-10T18:34:14.889747Z 1051 @@ -1426,7 +1460,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 0c77d7dafe8031971e69a7a57b3dc93e 2008-05-30T15:34:53.673854Z 1478 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/calendar/lang/.svn/prop-base/calendar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/lang/.svn/prop-base/calendar-fa.js.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/calendar/lang/.svn/text-base/calendar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/lang/.svn/text-base/calendar-fa.js.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar FA language +// Author: Behrang Noroozinia, behrangn at g mail +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("یک‌شنبه", + "دوشنبه", + "سه‌شنبه", + "چهارشنبه", + "پنج‌شنبه", + "آدینه", + "شنبه", + "یک‌شنبه"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("یک", + "دو", + "سه", + "چهار", + "پنج", + "آدینه", + "شنبه", + "یک"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 0; + +// full month names +Calendar._MN = new Array +("ژانویه", + "Ùوریه", + "مارس", + "آوریل", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپتامبر", + "اکتبر", + "نوامبر", + "دسامبر"); + +// short month names +Calendar._SMN = new Array +("ژان", + "Ùور", + "مار", + "آور", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپت", + "اکت", + "نوا", + "دسا"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "درباره گاهشمار"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + +"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"\n\n" + +"Date selection:\n" + +"- Use the \xab, \xbb buttons to select year\n" + +"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + +"- Hold mouse button on any of the above buttons for faster selection."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Time selection:\n" + +"- Click on any of the time parts to increase it\n" + +"- or Shift-click to decrease it\n" + +"- or click and drag for faster selection."; + +Calendar._TT["PREV_YEAR"] = "سال پیشین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["PREV_MONTH"] = "ماه پیشین ( برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["GO_TODAY"] = "برو به امروز"; +Calendar._TT["NEXT_MONTH"] = "ماه پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["NEXT_YEAR"] = "سال پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["SEL_DATE"] = "گزینش"; +Calendar._TT["DRAG_TO_MOVE"] = "برای جابجایی بکشید"; +Calendar._TT["PART_TODAY"] = " (امروز)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "آغاز Ù‡ÙØªÙ‡ از %s"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "4,5"; + +Calendar._TT["CLOSE"] = "بسته"; +Calendar._TT["TODAY"] = "امروز"; +Calendar._TT["TIME_PART"] = "زدن (با Shift) یا کشیدن برای ویرایش"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "Ù‡ÙØªÙ‡"; +Calendar._TT["TIME"] = "زمان:"; diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/calendar/lang/calendar-fa.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/lang/calendar-fa.js Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar FA language +// Author: Behrang Noroozinia, behrangn at g mail +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("یک‌شنبه", + "دوشنبه", + "سه‌شنبه", + "چهارشنبه", + "پنج‌شنبه", + "آدینه", + "شنبه", + "یک‌شنبه"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("یک", + "دو", + "سه", + "چهار", + "پنج", + "آدینه", + "شنبه", + "یک"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 0; + +// full month names +Calendar._MN = new Array +("ژانویه", + "Ùوریه", + "مارس", + "آوریل", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپتامبر", + "اکتبر", + "نوامبر", + "دسامبر"); + +// short month names +Calendar._SMN = new Array +("ژان", + "Ùور", + "مار", + "آور", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپت", + "اکت", + "نوا", + "دسا"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "درباره گاهشمار"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + +"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"\n\n" + +"Date selection:\n" + +"- Use the \xab, \xbb buttons to select year\n" + +"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + +"- Hold mouse button on any of the above buttons for faster selection."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Time selection:\n" + +"- Click on any of the time parts to increase it\n" + +"- or Shift-click to decrease it\n" + +"- or click and drag for faster selection."; + +Calendar._TT["PREV_YEAR"] = "سال پیشین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["PREV_MONTH"] = "ماه پیشین ( برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["GO_TODAY"] = "برو به امروز"; +Calendar._TT["NEXT_MONTH"] = "ماه پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["NEXT_YEAR"] = "سال پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["SEL_DATE"] = "گزینش"; +Calendar._TT["DRAG_TO_MOVE"] = "برای جابجایی بکشید"; +Calendar._TT["PART_TODAY"] = " (امروز)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "آغاز Ù‡ÙØªÙ‡ از %s"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "4,5"; + +Calendar._TT["CLOSE"] = "بسته"; +Calendar._TT["TODAY"] = "امروز"; +Calendar._TT["TIME_PART"] = "زدن (با Shift) یا کشیدن برای ویرایش"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "Ù‡ÙØªÙ‡"; +Calendar._TT["TIME"] = "زمان:"; diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/context_menu.js --- a/public/javascripts/context_menu.js Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/context_menu.js Thu Mar 03 12:11:53 2011 +0000 @@ -11,7 +11,7 @@ if (!observingContextMenuClick) { Event.observe(document, 'click', this.Click.bindAsEventListener(this)); - Event.observe(document, (window.opera ? 'click' : 'contextmenu'), this.RightClick.bindAsEventListener(this)); + Event.observe(document, 'contextmenu', this.RightClick.bindAsEventListener(this)); observingContextMenuClick = true; } @@ -23,8 +23,6 @@ this.hideMenu(); // do not show the context menu on links if (Event.element(e).tagName == 'A') { return; } - // right-click simulated by Alt+Click with Opera - if (window.opera && !e.altKey) { return; } var tr = Event.findElement(e, 'tr'); if (tr == document || tr == undefined || !tr.hasClassName('hascontextmenu')) { return; } Event.stop(e); @@ -39,7 +37,6 @@ Click: function(e) { this.hideMenu(); if (Event.element(e).tagName == 'A') { return; } - if (window.opera && e.altKey) { return; } if (Event.isLeftClick(e) || (navigator.appVersion.match(/\bMSIE\b/))) { var tr = Event.findElement(e, 'tr'); if (tr!=null && tr!=document && tr.hasClassName('hascontextmenu')) { @@ -121,6 +118,7 @@ new Ajax.Updater({success:'context-menu'}, this.url, {asynchronous:true, + method: 'get', evalScripts:true, parameters:Form.serialize(Event.findElement(e, 'form')), onComplete:function(request){ diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/jstoolbar/.svn/all-wcprops --- a/public/javascripts/jstoolbar/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/jstoolbar/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar +/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar END textile.js K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/jstoolbar/.svn/entries --- a/public/javascripts/jstoolbar/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/jstoolbar/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar http://redmine.rubyforge.org/svn -2010-08-29T12:54:04.302020Z -4049 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z 277ebc7c66d8c8280bbe729e6cb11529 2008-10-27T11:08:29.901011Z 1955 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.211758Z +2011-03-03T11:05:14.000000Z 2b77f98553b6d5e0d4c405195eebe664 2008-10-27T11:08:29.901011Z 1955 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/jstoolbar/lang/.svn/all-wcprops --- a/public/javascripts/jstoolbar/lang/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar/lang +/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar/lang END jstoolbar-mk.js K 25 @@ -51,18 +51,18 @@ V 74 /svn/!svn/ver/2493/trunk/public/javascripts/jstoolbar/lang/jstoolbar-vi.js END +jstoolbar-sr-yu.js +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js +END jstoolbar-uk.js K 25 svn:wc:ra_dav:version-url V 74 /svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-uk.js END -jstoolbar-sr-yu.js -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js -END jstoolbar-ro.js K 25 svn:wc:ra_dav:version-url @@ -177,6 +177,12 @@ V 74 /svn/!svn/ver/1865/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ca.js END +jstoolbar-pt-br.js +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt-br.js +END jstoolbar-da.js K 25 svn:wc:ra_dav:version-url @@ -189,18 +195,18 @@ V 74 /svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sr.js END -jstoolbar-pt-br.js -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt-br.js -END jstoolbar-tr.js K 25 svn:wc:ra_dav:version-url V 74 /svn/!svn/ver/1817/trunk/public/javascripts/jstoolbar/lang/jstoolbar-tr.js END +jstoolbar-fa.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar/lang/jstoolbar-fa.js +END jstoolbar-bg.js K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/jstoolbar/lang/.svn/entries --- a/public/javascripts/jstoolbar/lang/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar/lang http://redmine.rubyforge.org/svn -2010-08-29T12:54:04.302020Z -4049 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -32,7 +32,7 @@ -2010-09-24T12:48:29.827791Z +2011-03-03T11:05:14.000000Z 318952e82ec967a5474a8b8464b66c63 2010-08-29T12:54:04.302020Z 4049 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 21ca3fea9a77d127edb7d2e95b33b8f8 2008-11-14T15:18:13.107466Z 2033 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 7cbd6179e32e9b8ec12a884c820565ca 2008-12-29T18:27:27.433290Z 2202 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 73ba5f511744c07325bc0eae3dce14e6 2010-01-25T15:25:46.560119Z 3338 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z b1cfe765b72f2d904756bf60307c97b7 2008-06-15T09:49:16.794942Z 1540 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 83762b06ef0b9a9756f858357bf11361 2008-05-30T16:35:36.510811Z 1479 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z b27b3e83de7c68c7752703799c0a4cda 2008-11-08T22:34:41.558925Z 1997 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z 06a6efe1fa0092d534f1cc403529670b 2009-02-21T11:04:50.579477Z 2493 @@ -298,13 +298,47 @@ 783 +jstoolbar-sr-yu.js +file + + + + +2011-03-03T11:05:14.000000Z +bf8f49f26dc22319ff3da721c261c593 +2010-08-19T15:41:09.090282Z +4003 +winterheart + + + + + + + + + + + + + + + + + + + + + +761 + jstoolbar-uk.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -332,47 +366,13 @@ 722 -jstoolbar-sr-yu.js -file - - - - -2010-09-23T14:37:45.239756Z -bf8f49f26dc22319ff3da721c261c593 -2010-08-19T15:41:09.090282Z -4003 -winterheart - - - - - - - - - - - - - - - - - - - - - -761 - jstoolbar-ro.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z de3d5c4af91e93505e939ccb1ef6b27a 2009-03-24T19:20:53.296475Z 2630 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 9f461eb7e9ab4460155983bd005c3237 2009-09-24T15:03:23.893264Z 2901 @@ -440,7 +440,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z fd6a3f960f0d6e1ce7e6466d592453fe 2009-12-23T18:56:03.404741Z 3227 @@ -474,7 +474,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 1114856226e757ddfb08a99ab1cac3eb 2009-01-23T15:37:59.406714Z 2296 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 9b432fe2e801ed76abf312a10c643fb8 2008-05-30T16:35:36.510811Z 1479 @@ -570,13 +570,81 @@ 753 +jstoolbar-nl.js +file + + + + +2011-03-03T11:05:14.000000Z +b1bc7a04b7b466073845dd2c81bbbf23 +2009-01-20T15:53:09.750096Z +2291 +winterheart +has-props + + + + + + + + + + + + + + + + + + + + +753 + +jstoolbar-hr.js +file + + + + +2011-03-03T11:05:14.000000Z +f13f0553753c4b53bd96c294ca6ce15e +2010-01-17T10:33:30.937961Z +3320 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +721 + jstoolbar-zh-tw.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z be45a6e710f3a07e9fab41d795a64030 2008-06-07T09:03:20.687527Z 1498 @@ -604,81 +672,13 @@ 716 -jstoolbar-hr.js -file - - - - -2010-09-23T14:37:45.231813Z -f13f0553753c4b53bd96c294ca6ce15e -2010-01-17T10:33:30.937961Z -3320 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -721 - -jstoolbar-nl.js -file - - - - -2010-09-23T14:37:45.235815Z -b1bc7a04b7b466073845dd2c81bbbf23 -2009-01-20T15:53:09.750096Z -2291 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -753 - jstoolbar-mn.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z e7df0709db363c802a6a5a4913520ac5 2010-04-03T10:49:16.109274Z 3626 @@ -706,13 +706,47 @@ 916 +jstoolbar-pl.js +file + + + + +2011-03-03T11:05:14.000000Z +1d2b7d7c66953806ca428f91a95d2eaa +2008-10-07T17:41:16.515762Z +1928 +winterheart +has-props + + + + + + + + + + + + + + + + + + + + +851 + jstoolbar-th.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z 3f844a6495d4eebb122b5c7b21696282 2008-05-30T16:35:36.510811Z 1479 @@ -740,47 +774,13 @@ 931 -jstoolbar-pl.js -file - - - - -2010-09-23T14:37:45.235815Z -1d2b7d7c66953806ca428f91a95d2eaa -2008-10-07T17:41:16.515762Z -1928 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -851 - jstoolbar-it.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z c7198fe4acf23cf7df996603e68b492b 2010-08-19T15:41:09.090282Z 4003 @@ -814,7 +814,7 @@ -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z a85f4ab1ed887a855f03c2cc8efb0107 2009-01-31T12:02:37.933490Z 2340 @@ -848,7 +848,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 1fbcdee2a48a3d359fd766880b9b606f 2008-05-30T16:35:36.510811Z 1479 @@ -876,13 +876,47 @@ 754 +jstoolbar-lv.js +file + + + + +2011-03-03T11:05:14.000000Z +5a44b7a9bd5b7db86d0a7398ee5bc779 +2010-05-14T18:15:41.754813Z +3737 +winterheart + + + + + + + + + + + + + + + + + + + + + +836 + jstoolbar-zh.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z fa9b7d27a231a3c85c1a4632f2563ac4 2008-06-07T09:03:20.687527Z 1498 @@ -910,81 +944,13 @@ 722 -jstoolbar-lv.js -file - - - - -2010-09-23T14:37:45.235815Z -5a44b7a9bd5b7db86d0a7398ee5bc779 -2010-05-14T18:15:41.754813Z -3737 -winterheart - - - - - - - - - - - - - - - - - - - - - -836 - -jstoolbar-ca.js -file - - - - -2010-09-23T14:37:45.231813Z -6aacb53ed49e6e14831baf8c38096662 -2008-09-15T16:07:30.857601Z -1865 -winterheart - - - - - - - - - - - - - - - - - - - - - -763 - jstoolbar-pt.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 2479961837e503c00632ff7e6997b10d 2008-10-06T15:00:56.914741Z 1927 @@ -1012,13 +978,47 @@ 823 +jstoolbar-ca.js +file + + + + +2011-03-03T11:05:14.000000Z +6aacb53ed49e6e14831baf8c38096662 +2008-09-15T16:07:30.857601Z +1865 +winterheart + + + + + + + + + + + + + + + + + + + + + +763 + jstoolbar-da.js file -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 4061b38de5e085dac922f77f94bd254a 2009-10-11T09:24:45.635758Z 2921 @@ -1046,13 +1046,47 @@ 746 +jstoolbar-sr.js +file + + + + +2011-03-03T11:05:14.000000Z +fb00cc94dfc8f319dda707b957aae8a6 +2010-08-19T15:41:09.090282Z +4003 +winterheart +has-props + + + + + + + + + + + + + + + + + + + + +912 + jstoolbar-pt-br.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 37aed8a5fce8e7f2030ac37e3d635068 2008-05-30T16:35:36.510811Z 1479 @@ -1080,47 +1114,13 @@ 819 -jstoolbar-sr.js -file - - - - -2010-09-23T14:37:45.239756Z -fb00cc94dfc8f319dda707b957aae8a6 -2010-08-19T15:41:09.090282Z -4003 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -912 - jstoolbar-tr.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z c7333a1fd77fe1f7db31810175f8fe8f 2008-09-13T17:25:01.876743Z 1817 @@ -1148,13 +1148,47 @@ 662 +jstoolbar-fa.js +file + + + + +2011-03-03T11:40:18.000000Z +5fde8ac79f7084911ce37f5cdad2052e +2011-02-21T10:08:59.720731Z +4903 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +838 + jstoolbar-bg.js file -2010-09-23T14:37:45.227756Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -1188,7 +1222,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 7c5edef659f90a30330909bc13b0d6fb 2008-05-30T16:35:36.510811Z 1479 @@ -1222,7 +1256,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2010-06-21T19:54:55.180393Z 3809 @@ -1256,7 +1290,7 @@ -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z 7ec48cf15b3d65b2a0994b50b033b4b8 2009-01-23T15:46:22.446544Z 2298 @@ -1290,7 +1324,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 06245b4053c38d6bf3ae61d1bf4c7587 2009-09-24T15:03:23.893264Z 2901 @@ -1324,7 +1358,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -1358,7 +1392,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 0377fba91478a1df25844aa70609e204 2008-05-30T16:35:36.510811Z 1479 @@ -1392,7 +1426,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z da8e9ced2ea20fedc7bb3204082fc68a 2009-03-24T19:16:02.676125Z 2629 @@ -1426,7 +1460,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 8394af79dae7854d27ccdb8b72c3262c 2008-05-30T16:35:36.510811Z 1479 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/jstoolbar/lang/.svn/prop-base/jstoolbar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/prop-base/jstoolbar-fa.js.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-fa.js.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,16 @@ +jsToolBar.strings = {}; +jsToolBar.strings['Strong'] = 'پررنگ'; +jsToolBar.strings['Italic'] = 'کج'; +jsToolBar.strings['Underline'] = 'زیرخط'; +jsToolBar.strings['Deleted'] = 'برداشته شده'; +jsToolBar.strings['Code'] = 'کد درون خطی'; +jsToolBar.strings['Heading 1'] = 'سربرگ Û±'; +jsToolBar.strings['Heading 2'] = 'سربرگ Û²'; +jsToolBar.strings['Heading 3'] = 'سربرگ Û³'; +jsToolBar.strings['Unordered list'] = 'Ùهرست بدون شماره'; +jsToolBar.strings['Ordered list'] = 'Ùهرست با شماره'; +jsToolBar.strings['Quote'] = 'تو بردن'; +jsToolBar.strings['Unquote'] = 'بیرون آوردن'; +jsToolBar.strings['Preformatted text'] = 'نوشته قالب بندی شده'; +jsToolBar.strings['Wiki link'] = 'پیوند به برگ ویکی'; +jsToolBar.strings['Image'] = 'عکس'; diff -r 7cec015f07ce -r 73ff0e6a11b1 public/javascripts/jstoolbar/lang/jstoolbar-fa.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/lang/jstoolbar-fa.js Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,16 @@ +jsToolBar.strings = {}; +jsToolBar.strings['Strong'] = 'پررنگ'; +jsToolBar.strings['Italic'] = 'کج'; +jsToolBar.strings['Underline'] = 'زیرخط'; +jsToolBar.strings['Deleted'] = 'برداشته شده'; +jsToolBar.strings['Code'] = 'کد درون خطی'; +jsToolBar.strings['Heading 1'] = 'سربرگ Û±'; +jsToolBar.strings['Heading 2'] = 'سربرگ Û²'; +jsToolBar.strings['Heading 3'] = 'سربرگ Û³'; +jsToolBar.strings['Unordered list'] = 'Ùهرست بدون شماره'; +jsToolBar.strings['Ordered list'] = 'Ùهرست با شماره'; +jsToolBar.strings['Quote'] = 'تو بردن'; +jsToolBar.strings['Unquote'] = 'بیرون آوردن'; +jsToolBar.strings['Preformatted text'] = 'نوشته قالب بندی شده'; +jsToolBar.strings['Wiki link'] = 'پیوند به برگ ویکی'; +jsToolBar.strings['Image'] = 'عکس'; diff -r 7cec015f07ce -r 73ff0e6a11b1 public/stylesheets/.svn/all-wcprops --- a/public/stylesheets/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/public/stylesheets/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4377/trunk/public/stylesheets +/svn/!svn/ver/4954/trunk/public/stylesheets END context_menu.css K 25 @@ -49,5 +49,5 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4377/trunk/public/stylesheets/application.css +/svn/!svn/ver/4954/trunk/public/stylesheets/application.css END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/stylesheets/.svn/entries --- a/public/stylesheets/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/stylesheets/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/stylesheets http://redmine.rubyforge.org/svn -2010-11-06T18:52:07.556711Z -4377 +2011-02-27T13:34:41.060565Z +4954 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z d4e12d14040f9f048ddc696b1c0adf71 2010-05-01T11:54:40.545656Z 3725 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z ee22ead851abb7d0733ccd46315ccdc2 2010-08-19T01:13:50.846630Z 3950 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z c8ca83463f3cde626ce2e2c3dca08cb2 2010-08-22T19:12:21.015911Z 4014 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.251810Z +2011-03-03T11:05:14.000000Z d4a1902945bf7a0faa18be73960030c9 2008-09-17T17:18:05.938945Z 1872 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.251810Z +2011-03-03T11:05:14.000000Z cb7655798f97e931ea4992a9dd1afc4f 2010-08-22T19:12:21.015911Z 4014 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z 62cab819ebe98bd9fb95415ac7b52e12 2007-12-28T21:58:33.550772Z 1024 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.251810Z +2011-03-03T11:05:14.000000Z 360ffe5ea0cba43a286c7e42756b463f 2010-03-28T11:30:48.135356Z 3619 @@ -270,10 +270,31 @@ - -d7fddb955f6ccbe8119b5ba02b0fc466 -2010-11-06T18:52:07.556711Z -4377 +2011-03-03T11:40:18.000000Z +1c8f6eb0fe9e3708adf095c11bc824bf +2011-02-27T13:34:41.060565Z +4954 jplang has-props + + + + + + + + + + + + + + + + + + + + +35897 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/stylesheets/.svn/text-base/application.css.svn-base --- a/public/stylesheets/.svn/text-base/application.css.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/public/stylesheets/.svn/text-base/application.css.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,4 @@ +html {overflow-y:scroll;} body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; } h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;} @@ -178,6 +179,8 @@ tr.user.locked, tr.user.registered { color: #aaa; } tr.user.locked a, tr.user.registered a { color: #aaa; } +tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;} + tr.time-entry { text-align: center; white-space: nowrap; } tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; } td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } @@ -663,11 +666,19 @@ } #parent_issue_candidates ul li {width: 500px;} +#related_issue_candidates ul li {width: 500px;} /***** Diff *****/ .diff_out { background: #fcc; } .diff_in { background: #cfc; } +.text-diff { +padding: 1em; +background-color:#f6f6f6; +color:#505050; +border: 1px solid #e4e4e4; +} + /***** Wiki *****/ div.wiki table { border: 1px solid #505050; @@ -778,6 +789,9 @@ overflow: hidden; } +.gantt_subjects { font-size: 0.8em; } +.gantt_subjects div { line-height:1.2em;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; } + .task { position: absolute; height:8px; @@ -790,24 +804,26 @@ } .task.label {width:100%;} +.task.label.project, .task.label.version { font-weight: bold; } .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; } .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } -.task_todo.parent { background: #888; border: 1px solid #888; height: 6px;} +.task_todo.parent { background: #888; border: 1px solid #888; height: 3px;} .task_late.parent, .task_done.parent { height: 3px;} -.task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;} -.task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;} +.task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;} +.task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;} -.milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; } -.milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} -.project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; } -.project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } + +.project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;} .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;} @@ -833,7 +849,6 @@ .icon-folder { background-image: url(../images/folder.png); } .open .icon-folder { background-image: url(../images/folder_open.png); } .icon-package { background-image: url(../images/package.png); } -.icon-home { background-image: url(../images/home.png); } .icon-user { background-image: url(../images/user.png); } .icon-projects { background-image: url(../images/projects.png); } .icon-help { background-image: url(../images/help.png); } @@ -906,8 +921,8 @@ } td.username img.gravatar { - float: left; - margin: 0 1em 0 0; + margin: 0 0.5em 0 0; + vertical-align: top; } #activity dt img.gravatar { diff -r 7cec015f07ce -r 73ff0e6a11b1 public/stylesheets/.svn/tmp/application.css.tmp --- a/public/stylesheets/.svn/tmp/application.css.tmp Tue Feb 22 16:48:15 2011 +0000 +++ b/public/stylesheets/.svn/tmp/application.css.tmp Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,4 @@ +html {overflow-y:scroll;} body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; } h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;} @@ -113,7 +114,7 @@ tr.project td.name a { white-space:nowrap; } -tr.project.idnt td.name a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} +tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} tr.project.idnt-1 td.name {padding-left: 0.5em;} tr.project.idnt-2 td.name {padding-left: 2em;} tr.project.idnt-3 td.name {padding-left: 3.5em;} @@ -178,6 +179,8 @@ tr.user.locked, tr.user.registered { color: #aaa; } tr.user.locked a, tr.user.registered a { color: #aaa; } +tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;} + tr.time-entry { text-align: center; white-space: nowrap; } tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; } td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } @@ -419,6 +422,7 @@ .tabular.settings textarea { width: 99%; } fieldset.settings label { display: block; } +.parent { padding-left: 20px; } .required {color: #bb0000;} .summary {font-style: italic;} @@ -662,6 +666,7 @@ } #parent_issue_candidates ul li {width: 500px;} +#related_issue_candidates ul li {width: 500px;} /***** Diff *****/ .diff_out { background: #fcc; } @@ -714,9 +719,10 @@ div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; } div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; } -div.wiki ul.toc li { list-style-type:none;} -div.wiki ul.toc li.heading2 { margin-left: 6px; } -div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; } +div.wiki ul.toc ul { margin: 0; padding: 0; } +div.wiki ul.toc li { list-style-type:none; margin: 0;} +div.wiki ul.toc li li { margin-left: 1.5em; } +div.wiki ul.toc li li li { font-size: 0.8em; } div.wiki ul.toc a { font-size: 0.9em; @@ -776,6 +782,8 @@ overflow: hidden; } +.gantt_subjects { font-size: 0.8em; } + .task { position: absolute; height:8px; @@ -788,24 +796,26 @@ } .task.label {width:100%;} +.task.label.project, .task.label.version { font-weight: bold; } .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; } .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } -.task_todo.parent { background: #888; border: 1px solid #888; height: 6px;} +.task_todo.parent { background: #888; border: 1px solid #888; height: 3px;} .task_late.parent, .task_done.parent { height: 3px;} -.task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;} -.task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;} +.task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;} +.task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;} -.milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; } -.milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} -.project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; } -.project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } + +.project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;} .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;} @@ -831,7 +841,6 @@ .icon-folder { background-image: url(../images/folder.png); } .open .icon-folder { background-image: url(../images/folder_open.png); } .icon-package { background-image: url(../images/package.png); } -.icon-home { background-image: url(../images/home.png); } .icon-user { background-image: url(../images/user.png); } .icon-projects { background-image: url(../images/projects.png); } .icon-help { background-image: url(../images/help.png); } @@ -853,6 +862,8 @@ .icon-summary { background-image: url(../images/lightning.png); } .icon-server-authentication { background-image: url(../images/server_key.png); } .icon-issue { background-image: url(../images/ticket.png); } +.icon-zoom-in { background-image: url(../images/zoom_in.png); } +.icon-zoom-out { background-image: url(../images/zoom_out.png); } .icon-file { background-image: url(../images/files/default.png); } .icon-file.text-plain { background-image: url(../images/files/text.png); } @@ -902,8 +913,8 @@ } td.username img.gravatar { - float: left; - margin: 0 1em 0 0; + margin: 0 0.5em 0 0; + vertical-align: top; } #activity dt img.gravatar { diff -r 7cec015f07ce -r 73ff0e6a11b1 public/stylesheets/.svn/tmp/tempfile.tmp --- a/public/stylesheets/.svn/tmp/tempfile.tmp Tue Feb 22 16:48:15 2011 +0000 +++ b/public/stylesheets/.svn/tmp/tempfile.tmp Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,4 @@ +html {overflow-y:scroll;} body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; } h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;} @@ -113,7 +114,7 @@ tr.project td.name a { white-space:nowrap; } -tr.project.idnt td.name a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} +tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} tr.project.idnt-1 td.name {padding-left: 0.5em;} tr.project.idnt-2 td.name {padding-left: 2em;} tr.project.idnt-3 td.name {padding-left: 3.5em;} @@ -178,6 +179,8 @@ tr.user.locked, tr.user.registered { color: #aaa; } tr.user.locked a, tr.user.registered a { color: #aaa; } +tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;} + tr.time-entry { text-align: center; white-space: nowrap; } tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; } td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } @@ -419,6 +422,7 @@ .tabular.settings textarea { width: 99%; } fieldset.settings label { display: block; } +.parent { padding-left: 20px; } .required {color: #bb0000;} .summary {font-style: italic;} @@ -662,6 +666,7 @@ } #parent_issue_candidates ul li {width: 500px;} +#related_issue_candidates ul li {width: 500px;} /***** Diff *****/ .diff_out { background: #fcc; } @@ -714,9 +719,10 @@ div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; } div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; } -div.wiki ul.toc li { list-style-type:none;} -div.wiki ul.toc li.heading2 { margin-left: 6px; } -div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; } +div.wiki ul.toc ul { margin: 0; padding: 0; } +div.wiki ul.toc li { list-style-type:none; margin: 0;} +div.wiki ul.toc li li { margin-left: 1.5em; } +div.wiki ul.toc li li li { font-size: 0.8em; } div.wiki ul.toc a { font-size: 0.9em; @@ -776,6 +782,8 @@ overflow: hidden; } +.gantt_subjects { font-size: 0.8em; } + .task { position: absolute; height:8px; @@ -787,16 +795,30 @@ white-space:nowrap; } +.task.label {width:100%;} +.task.label.project, .task.label.version { font-weight: bold; } + .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } -.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; } +.task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; } .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } -.task_todo.parent { background: #888; border: 1px solid #888; height: 6px;} +.task_todo.parent { background: #888; border: 1px solid #888; height: 3px;} .task_late.parent, .task_done.parent { height: 3px;} -.task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;} -.task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;} +.task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;} +.task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;} -.milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; } +.version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } + +.project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } + +.version-behind-schedule a, .issue-behind-schedule a {color: #f66914;} +.version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;} /***** Icons *****/ .icon { @@ -819,7 +841,6 @@ .icon-folder { background-image: url(../images/folder.png); } .open .icon-folder { background-image: url(../images/folder_open.png); } .icon-package { background-image: url(../images/package.png); } -.icon-home { background-image: url(../images/home.png); } .icon-user { background-image: url(../images/user.png); } .icon-projects { background-image: url(../images/projects.png); } .icon-help { background-image: url(../images/help.png); } @@ -840,6 +861,9 @@ .icon-comment { background-image: url(../images/comment.png); } .icon-summary { background-image: url(../images/lightning.png); } .icon-server-authentication { background-image: url(../images/server_key.png); } +.icon-issue { background-image: url(../images/ticket.png); } +.icon-zoom-in { background-image: url(../images/zoom_in.png); } +.icon-zoom-out { background-image: url(../images/zoom_out.png); } .icon-file { background-image: url(../images/files/default.png); } .icon-file.text-plain { background-image: url(../images/files/text.png); } @@ -889,8 +913,8 @@ } td.username img.gravatar { - float: left; - margin: 0 1em 0 0; + margin: 0 0.5em 0 0; + vertical-align: top; } #activity dt img.gravatar { @@ -898,6 +922,12 @@ margin: 0 1em 1em 0; } +/* Used on 12px Gravatar img tags without the icon background */ +.icon-gravatar { + float: left; + margin-right: 4px; +} + #activity dt, .journal { clear: left; diff -r 7cec015f07ce -r 73ff0e6a11b1 public/stylesheets/application.css --- a/public/stylesheets/application.css Tue Feb 22 16:48:15 2011 +0000 +++ b/public/stylesheets/application.css Thu Mar 03 12:11:53 2011 +0000 @@ -1,3 +1,4 @@ +html {overflow-y:scroll;} body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; } h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;} @@ -180,6 +181,8 @@ tr.user.locked, tr.user.registered { color: #aaa; } tr.user.locked a, tr.user.registered a { color: #aaa; } +tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;} + tr.time-entry { text-align: center; white-space: nowrap; } tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; } td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } @@ -349,8 +352,8 @@ ul.projects ul.projects { border-left: 3px solid #e0e0e0; } ul.projects li.root { list-style-type:none; margin-bottom: 1em; } ul.projects li.child { list-style-type:none; margin-top: 1em;} -ul.projects div.root a.project { /* font-family: "Trebuchet MS", Verdana, sans-serif; */ font-weight: bold; font-size: 16px; margin: 0 0 10px 0; } -/* .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; } */ +ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; } +.my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; } #tracker_project_ids ul { margin: 0; padding-left: 1em; } #tracker_project_ids li { list-style-type:none; } @@ -665,11 +668,19 @@ } #parent_issue_candidates ul li {width: 500px;} +#related_issue_candidates ul li {width: 500px;} /***** Diff *****/ .diff_out { background: #fcc; } .diff_in { background: #cfc; } +.text-diff { +padding: 1em; +background-color:#f6f6f6; +color:#505050; +border: 1px solid #e4e4e4; +} + /***** Wiki *****/ div.wiki table { border: 1px solid #505050; @@ -780,6 +791,9 @@ overflow: hidden; } +.gantt_subjects { font-size: 0.8em; } +.gantt_subjects div { line-height:1.2em;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; } + .task { position: absolute; height:8px; @@ -792,24 +806,26 @@ } .task.label {width:100%;} +.task.label.project, .task.label.version { font-weight: bold; } .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; } .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } -.task_todo.parent { background: #888; border: 1px solid #888; height: 6px;} +.task_todo.parent { background: #888; border: 1px solid #888; height: 3px;} .task_late.parent, .task_done.parent { height: 3px;} -.task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;} -.task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;} +.task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;} +.task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;} -.milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; } -.milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} -.project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; } -.project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } + +.project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;} .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;} @@ -835,7 +851,6 @@ .icon-folder { background-image: url(../images/folder.png); } .open .icon-folder { background-image: url(../images/folder_open.png); } .icon-package { background-image: url(../images/package.png); } -.icon-home { background-image: url(../images/home.png); } .icon-user { background-image: url(../images/user.png); } .icon-projects { background-image: url(../images/projects.png); } .icon-help { background-image: url(../images/help.png); } @@ -908,8 +923,8 @@ } td.username img.gravatar { - float: left; - margin: 0 1em 0 0; + margin: 0 0.5em 0 0; + vertical-align: top; } #activity dt img.gravatar { diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/.svn/all-wcprops --- a/public/themes/.svn/all-wcprops Tue Feb 22 16:48:15 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 38 -/svn/!svn/ver/4005/trunk/public/themes -END -README -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/818/trunk/public/themes/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/.svn/entries --- a/public/themes/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/themes/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/themes http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-09-23T14:37:45.251810Z +2011-03-03T11:05:14.000000Z 5b7a0352b95a67871b90c5a90a226123 2007-10-10T17:17:37.630066Z 818 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/alternate/.svn/all-wcprops --- a/public/themes/alternate/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/3069/trunk/public/themes/alternate -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/alternate/.svn/entries --- a/public/themes/alternate/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/themes/alternate/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/themes/alternate http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/alternate/stylesheets/.svn/all-wcprops --- a/public/themes/alternate/stylesheets/.svn/all-wcprops Tue Feb 22 16:48:15 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 60 -/svn/!svn/ver/3069/trunk/public/themes/alternate/stylesheets -END -application.css -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/3069/trunk/public/themes/alternate/stylesheets/application.css -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/alternate/stylesheets/.svn/entries --- a/public/themes/alternate/stylesheets/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/themes/alternate/stylesheets/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/themes/alternate/stylesheets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.255767Z +2011-03-03T11:05:14.000000Z 8a47fb469dca292ea631422810927fe3 2009-11-15T21:15:31.339604Z 3069 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/classic/.svn/all-wcprops --- a/public/themes/classic/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/3183/trunk/public/themes/classic -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/classic/.svn/entries --- a/public/themes/classic/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/themes/classic/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/themes/classic http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/classic/images/.svn/all-wcprops --- a/public/themes/classic/images/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3183/trunk/public/themes/classic/images -END -wrench.png -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3183/trunk/public/themes/classic/images/wrench.png -END -home.png -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3183/trunk/public/themes/classic/images/home.png -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/classic/images/.svn/entries --- a/public/themes/classic/images/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/themes/classic/images/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/themes/classic/images http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.255767Z +2011-03-03T11:05:14.000000Z a137eb4441860564ce1655357af26de8 2009-12-18T14:10:26.630799Z 3183 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.255767Z +2011-03-03T11:05:14.000000Z 99bea32e1990e011e870f6c562e87a6a 2009-12-18T14:10:26.630799Z 3183 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/classic/stylesheets/.svn/all-wcprops --- a/public/themes/classic/stylesheets/.svn/all-wcprops Tue Feb 22 16:48:15 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 58 -/svn/!svn/ver/3183/trunk/public/themes/classic/stylesheets -END -application.css -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/3183/trunk/public/themes/classic/stylesheets/application.css -END diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/classic/stylesheets/.svn/entries --- a/public/themes/classic/stylesheets/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/public/themes/classic/stylesheets/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/public/themes/classic/stylesheets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.259756Z +2011-03-03T11:05:14.000000Z 1bfaedd3f6b62419367da41a7a9310b2 2009-12-18T14:10:26.630799Z 3183 diff -r 7cec015f07ce -r 73ff0e6a11b1 public/themes/soundsoftware/stylesheets/soundsoftware-logo-title-only-transparent-beta.xcf Binary file public/themes/soundsoftware/stylesheets/soundsoftware-logo-title-only-transparent-beta.xcf has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 script/.svn/all-wcprops --- a/script/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 31 -/svn/!svn/ver/4359/trunk/script -END -console -K 25 -svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4359/trunk/script/console -END -breakpointer -K 25 -svn:wc:ra_dav:version-url -V 44 -/svn/!svn/ver/4359/trunk/script/breakpointer -END -server -K 25 -svn:wc:ra_dav:version-url -V 38 -/svn/!svn/ver/4359/trunk/script/server -END -dbconsole -K 25 -svn:wc:ra_dav:version-url -V 41 -/svn/!svn/ver/4359/trunk/script/dbconsole -END -destroy -K 25 -svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4359/trunk/script/destroy -END -runner -K 25 -svn:wc:ra_dav:version-url -V 38 -/svn/!svn/ver/4359/trunk/script/runner -END -about -K 25 -svn:wc:ra_dav:version-url -V 37 -/svn/!svn/ver/4359/trunk/script/about -END -generate -K 25 -svn:wc:ra_dav:version-url -V 40 -/svn/!svn/ver/4359/trunk/script/generate -END -plugin -K 25 -svn:wc:ra_dav:version-url -V 38 -/svn/!svn/ver/4359/trunk/script/plugin -END diff -r 7cec015f07ce -r 73ff0e6a11b1 script/.svn/entries --- a/script/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/script/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/script http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z 623b2f8265970f73bdb3489872d00eb6 2010-11-02T00:20:21.419252Z 4359 @@ -69,7 +69,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z 2ac529bf7a654b9b91b2fea2275aa44e 2010-11-02T00:20:21.419252Z 4359 @@ -103,7 +103,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z ff97a702418dbc85fec089b97506281f 2010-11-02T00:20:21.419252Z 4359 @@ -137,7 +137,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z 1fd5fa2d4aeee5b4111a40f62ae85446 2010-11-02T00:20:21.419252Z 4359 @@ -171,7 +171,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z 95866cb3b894816b540afd282b952618 2010-11-02T00:20:21.419252Z 4359 @@ -205,7 +205,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z 0cccc4eabf129ebd7b571d3eceda8893 2010-11-02T00:20:21.419252Z 4359 @@ -239,7 +239,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z b0aeca2e257a2226502c570e671e1b76 2010-11-02T00:20:21.419252Z 4359 @@ -273,7 +273,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z fb51df9bca94c25a928f40468354700f 2010-11-02T00:20:21.419252Z 4359 @@ -310,7 +310,7 @@ -2010-11-19T13:04:51.017028Z +2011-03-03T11:05:13.000000Z db0dd437d39c21fe52e1fc05a0680163 2010-11-02T00:20:21.419252Z 4359 diff -r 7cec015f07ce -r 73ff0e6a11b1 script/performance/.svn/all-wcprops --- a/script/performance/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/4359/trunk/script/performance -END -benchmarker -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4359/trunk/script/performance/benchmarker -END -profiler -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4359/trunk/script/performance/profiler -END -request -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/4359/trunk/script/performance/request -END diff -r 7cec015f07ce -r 73ff0e6a11b1 script/performance/.svn/entries --- a/script/performance/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/script/performance/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/script/performance http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:50.988983Z +2011-03-03T11:05:13.000000Z 33063b7a3d4dbef12ac8bcb55a5e6e3e 2010-11-02T00:20:21.419252Z 4359 @@ -66,7 +66,7 @@ -2010-11-19T13:04:50.988983Z +2011-03-03T11:05:13.000000Z 9d3b872769337c49e648b9fe47e4e280 2010-11-02T00:20:21.419252Z 4359 @@ -100,7 +100,7 @@ -2010-11-19T13:04:50.988983Z +2011-03-03T11:05:13.000000Z b6500710f6029724e44cbd25f80eaaf1 2010-11-02T00:20:21.419252Z 4359 diff -r 7cec015f07ce -r 73ff0e6a11b1 script/process/.svn/all-wcprops --- a/script/process/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4359/trunk/script/process -END -spawner -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/4359/trunk/script/process/spawner -END -inspector -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/4359/trunk/script/process/inspector -END -reaper -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4359/trunk/script/process/reaper -END -spinner -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/4359/trunk/script/process/spinner -END diff -r 7cec015f07ce -r 73ff0e6a11b1 script/process/.svn/entries --- a/script/process/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/script/process/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/script/process http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:51.012938Z +2011-03-03T11:05:13.000000Z 47bf41d8d2c97d220d9f70916e94c651 2010-11-02T00:20:21.419252Z 4359 @@ -66,7 +66,7 @@ -2010-11-19T13:04:51.012938Z +2011-03-03T11:05:13.000000Z 9137857ebdaf61d57a3496f7e61fede3 2010-11-02T00:20:21.419252Z 4359 @@ -100,7 +100,7 @@ -2010-11-19T13:04:51.012938Z +2011-03-03T11:05:13.000000Z 99af2666610d48d13e2eeceacf487d16 2010-11-02T00:20:21.419252Z 4359 @@ -134,7 +134,7 @@ -2010-11-19T13:04:51.012938Z +2011-03-03T11:05:13.000000Z 64b5316e88e7555bf827ad04edbce4a6 2010-11-02T00:20:21.419252Z 4359 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/.svn/all-wcprops --- a/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 29 -/svn/!svn/ver/4411/trunk/test +/svn/!svn/ver/4991/trunk/test END object_daddy_helpers.rb K 25 @@ -13,7 +13,7 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4366/trunk/test/test_helper.rb +/svn/!svn/ver/4603/trunk/test/test_helper.rb END helper_testcase.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/.svn/entries --- a/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test http://redmine.rubyforge.org/svn -2010-11-17T18:27:38.712585Z -4411 -jplang +2011-03-03T03:35:13.139305Z +4991 +tmaruyama @@ -35,7 +35,7 @@ -2010-09-24T12:48:25.883734Z +2011-03-03T11:05:09.000000Z bec9d26a7ae75350529040e7bca36bfa 2010-09-10T19:44:45.405792Z 4078 @@ -72,11 +72,11 @@ -2010-11-19T13:04:46.868876Z -cc87df32bc2794f57f75ec6b0ed7e373 -2010-11-05T17:49:20.446583Z -4366 -edavis10 +2011-03-03T11:05:09.000000Z +07898564890be4ff9e6c039fa6aa9d41 +2011-01-01T12:24:18.924489Z +4603 +jplang has-props @@ -98,7 +98,7 @@ -16405 +16997 functional dir @@ -118,7 +118,7 @@ -2010-09-23T14:37:45.427769Z +2011-03-03T11:05:09.000000Z 29604d905b321f5bf19b86f7b9797394 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/.svn/text-base/test_helper.rb.svn-base --- a/test/.svn/text-base/test_helper.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/.svn/text-base/test_helper.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -59,7 +59,7 @@ end def uploaded_test_file(name, mime) - ActionController::TestUploadedFile.new(ActiveSupport::TestCase.fixture_path + "/files/#{name}", mime) + ActionController::TestUploadedFile.new(ActiveSupport::TestCase.fixture_path + "/files/#{name}", mime, true) end # Mock out a file @@ -115,7 +115,7 @@ end def assert_error_tag(options={}) - assert_tag({:tag => 'p', :attributes => { :id => 'errorExplanation' }}.merge(options)) + assert_tag({:attributes => { :id => 'errorExplanation' }}.merge(options)) end # Shoulda macros @@ -361,6 +361,20 @@ end end + context "should allow key based auth using X-Redmine-API-Key header for #{http_method} #{url}" do + setup do + @user = User.generate_with_protected!(:admin => true) + @token = Token.generate!(:user => @user, :action => 'api') + send(http_method, url, parameters, {'X-Redmine-API-Key' => @token.value.to_s}) + end + + should_respond_with success_code + should_respond_with_content_type_based_on_url(url) + should_be_a_valid_response_string_based_on_url(url) + should "login as the user" do + assert_equal @user, User.current + end + end end # Uses should_respond_with_content_type based on what's in the url: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/exemplars/.svn/all-wcprops --- a/test/exemplars/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,227 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 39 -/svn/!svn/ver/4406/trunk/test/exemplars -END -message_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3340/trunk/test/exemplars/message_exemplar.rb -END -wiki_redirect_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/3340/trunk/test/exemplars/wiki_redirect_exemplar.rb -END -change_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3340/trunk/test/exemplars/change_exemplar.rb -END -issue_category_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/3340/trunk/test/exemplars/issue_category_exemplar.rb -END -attachment_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4010/trunk/test/exemplars/attachment_exemplar.rb -END -issue_priority_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/3670/trunk/test/exemplars/issue_priority_exemplar.rb -END -group_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/3342/trunk/test/exemplars/group_exemplar.rb -END -watcher_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3340/trunk/test/exemplars/watcher_exemplar.rb -END -wiki_content_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3340/trunk/test/exemplars/wiki_content_exemplar.rb -END -enabled_module_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/3340/trunk/test/exemplars/enabled_module_exemplar.rb -END -wiki_page_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3340/trunk/test/exemplars/wiki_page_exemplar.rb -END -query_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2937/trunk/test/exemplars/query_exemplar.rb -END -project_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4406/trunk/test/exemplars/project_exemplar.rb -END -custom_value_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3342/trunk/test/exemplars/custom_value_exemplar.rb -END -member_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3342/trunk/test/exemplars/member_exemplar.rb -END -news_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3340/trunk/test/exemplars/news_exemplar.rb -END -custom_field_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/2930/trunk/test/exemplars/custom_field_exemplar.rb -END -document_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3340/trunk/test/exemplars/document_exemplar.rb -END -auth_source_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3342/trunk/test/exemplars/auth_source_exemplar.rb -END -version_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3123/trunk/test/exemplars/version_exemplar.rb -END -enumeration_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/2930/trunk/test/exemplars/enumeration_exemplar.rb -END -board_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/3340/trunk/test/exemplars/board_exemplar.rb -END -member_role_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3340/trunk/test/exemplars/member_role_exemplar.rb -END -issue_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/3398/trunk/test/exemplars/issue_exemplar.rb -END -tracker_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/2930/trunk/test/exemplars/tracker_exemplar.rb -END -issue_status_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/2930/trunk/test/exemplars/issue_status_exemplar.rb -END -time_entry_activity.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/2930/trunk/test/exemplars/time_entry_activity.rb -END -subversion_repository_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/3340/trunk/test/exemplars/subversion_repository_exemplar.rb -END -role_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2930/trunk/test/exemplars/role_exemplar.rb -END -changeset_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3340/trunk/test/exemplars/changeset_exemplar.rb -END -comment_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3342/trunk/test/exemplars/comment_exemplar.rb -END -wiki_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3340/trunk/test/exemplars/wiki_exemplar.rb -END -journal_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3342/trunk/test/exemplars/journal_exemplar.rb -END -document_category_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/3670/trunk/test/exemplars/document_category_exemplar.rb -END -user_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4218/trunk/test/exemplars/user_exemplar.rb -END -time_entry_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3340/trunk/test/exemplars/time_entry_exemplar.rb -END -repository_exemplar.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3340/trunk/test/exemplars/repository_exemplar.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/exemplars/.svn/entries --- a/test/exemplars/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/exemplars/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/exemplars http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 26c766235d2f79490fa33a7ec9c154ae 2010-01-27T18:29:03.119133Z 3340 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z 62261c71ec828fa443bd44e055602e3d 2010-01-27T18:29:03.119133Z 3340 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 0da51e5e074d641e056e5011545571b8 2010-01-27T18:29:03.119133Z 3340 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 5b8b8763d7419d535d1d14d7bfb4f343 2010-01-27T18:29:03.119133Z 3340 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 13a55da47c4b6a61a3dbfd73eea41049 2010-08-19T22:24:42.251508Z 4010 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 26c91af771947fc671b87a08282608b3 2010-04-13T05:57:27.803435Z 3670 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z acf3ae00213d45112f6e13ecce212af1 2010-01-28T19:05:21.831741Z 3342 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 662be883bd5a43d964b868caaf34b276 2010-01-27T18:29:03.119133Z 3340 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z 2dc494eb57aee9ee3c3ca5324f61e707 2010-01-27T18:29:03.119133Z 3340 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 06cec6b1adf323a00a75e5c008f73c57 2010-01-27T18:29:03.119133Z 3340 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z e51316252a08488be9aa2878c00c4959 2010-01-27T18:29:03.119133Z 3340 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z e5f24c612cf3bcc7b17aeeafeae0697d 2009-10-20T00:36:51.144135Z 2937 @@ -440,7 +440,7 @@ -2010-11-19T13:04:41.365641Z +2011-03-03T11:05:08.000000Z 9be3a10325013fa24b00903db30d1ca3 2010-11-14T16:24:21.989522Z 4406 @@ -474,7 +474,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 24d00671cf3c2137d957ee6dac273517 2010-01-28T19:05:21.831741Z 3342 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 1f7deb35b057dce8eb5dbc41d9a29019 2010-01-28T19:05:21.831741Z 3342 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 575c5f91f698576ec8f6cc88bbcd31d8 2010-01-27T18:29:03.119133Z 3340 @@ -576,7 +576,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z fd5cfe62b2a92441a7cdb5035c4c4897 2009-10-18T22:25:00.956502Z 2930 @@ -610,7 +610,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z faf4bf5a3a3662c361ce668c20c293a4 2010-01-27T18:29:03.119133Z 3340 @@ -644,7 +644,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 91f000c1e57fb0edc16bf90ea8efc6fa 2010-01-28T19:05:21.831741Z 3342 @@ -678,7 +678,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 3b871be1550b1a964324a18f868dabae 2009-12-06T10:28:20.099964Z 3123 @@ -712,7 +712,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z dfe8cbec2ef3bcffe6b9352e3a3d807c 2009-10-18T22:25:00.956502Z 2930 @@ -746,7 +746,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z a9ebd14814e0885fc096d0702745f30d 2010-01-27T18:29:03.119133Z 3340 @@ -774,13 +774,47 @@ 481 +member_role_exemplar.rb +file + + + + +2011-03-03T11:05:08.000000Z +d1bdf1810c216ecde56d0750f78bea10 +2010-01-27T18:29:03.119133Z +3340 +edavis10 + + + + + + + + + + + + + + + + + + + + + +250 + issue_exemplar.rb file -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 92ac53d6b3a2e00ae1a9e0e4bc5d548b 2010-02-08T18:53:12.750770Z 3398 @@ -808,16 +842,16 @@ 449 -member_role_exemplar.rb +tracker_exemplar.rb file -2010-09-23T14:37:45.291809Z -d1bdf1810c216ecde56d0750f78bea10 -2010-01-27T18:29:03.119133Z -3340 +2011-03-03T11:05:08.000000Z +94aed9cd40bd95ab8d8c2f51bfc097cf +2009-10-18T22:25:00.956502Z +2930 edavis10 @@ -840,7 +874,7 @@ -250 +179 issue_status_exemplar.rb file @@ -848,7 +882,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z d17dfd87c9c081965089712a4ce42a6d 2009-10-18T22:25:00.956502Z 2930 @@ -876,14 +910,14 @@ 182 -tracker_exemplar.rb +time_entry_activity.rb file -2010-09-23T14:37:45.291809Z -94aed9cd40bd95ab8d8c2f51bfc097cf +2011-03-03T11:05:08.000000Z +74f5207a054732dd9be1b3184340ca77 2009-10-18T22:25:00.956502Z 2930 edavis10 @@ -908,7 +942,7 @@ -179 +236 subversion_repository_exemplar.rb file @@ -916,7 +950,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 908d8689f3ff469978b8af8bb55084b4 2010-01-27T18:29:03.119133Z 3340 @@ -944,14 +978,14 @@ 235 -time_entry_activity.rb +role_exemplar.rb file -2010-09-23T14:37:45.291809Z -74f5207a054732dd9be1b3184340ca77 +2011-03-03T11:05:08.000000Z +9c97ca570fa9b00ab1ecebd226f52f66 2009-10-18T22:25:00.956502Z 2930 edavis10 @@ -976,7 +1010,7 @@ -236 +157 changeset_exemplar.rb file @@ -984,7 +1018,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z c01820cc719616bb5a0895cfddb40798 2010-01-27T18:29:03.119133Z 3340 @@ -1012,47 +1046,13 @@ 377 -role_exemplar.rb -file - - - - -2010-09-23T14:37:45.291809Z -9c97ca570fa9b00ab1ecebd226f52f66 -2009-10-18T22:25:00.956502Z -2930 -edavis10 - - - - - - - - - - - - - - - - - - - - - -157 - comment_exemplar.rb file -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 27218d998d6798365d0cc47ae8d8bb87 2010-01-28T19:05:21.831741Z 3342 @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z 0b05f7ce166d5bb3695d2fad7e56fc7f 2010-01-27T18:29:03.119133Z 3340 @@ -1120,7 +1120,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 2a6254ddbc381a97b49b17936c25ef78 2010-01-28T19:05:21.831741Z 3342 @@ -1154,7 +1154,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z d60529466c1df6db1edcdac71fa1a9d7 2010-04-13T05:57:27.803435Z 3670 @@ -1188,7 +1188,7 @@ -2010-11-19T13:04:41.365641Z +2011-03-03T11:05:08.000000Z 44278bb3b28eed2566aab063777becf7 2010-09-28T18:22:10.512346Z 4218 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 0a69ac358346b15717ccb6b0cddba4be 2010-01-27T18:29:03.119133Z 3340 @@ -1256,7 +1256,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 19471f6afbec20925ddd6824c1290526 2010-01-27T18:29:03.119133Z 3340 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/all-wcprops --- a/test/fixtures/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,31 +1,31 @@ K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/4404/trunk/test/fixtures +/svn/!svn/ver/4964/trunk/test/fixtures END journal_details.yml K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/3123/trunk/test/fixtures/journal_details.yml +/svn/!svn/ver/4954/trunk/test/fixtures/journal_details.yml END issue_statuses.yml K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/2895/trunk/test/fixtures/issue_statuses.yml +/svn/!svn/ver/4895/trunk/test/fixtures/issue_statuses.yml END changesets.yml K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/2898/trunk/test/fixtures/changesets.yml +/svn/!svn/ver/4470/trunk/test/fixtures/changesets.yml END roles.yml K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/3573/trunk/test/fixtures/roles.yml +/svn/!svn/ver/4645/trunk/test/fixtures/roles.yml END wikis.yml K 25 @@ -61,7 +61,7 @@ K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/4382/trunk/test/fixtures/custom_values.yml +/svn/!svn/ver/4488/trunk/test/fixtures/custom_values.yml END issue_categories.yml K 25 @@ -127,7 +127,7 @@ K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4186/trunk/test/fixtures/issues.yml +/svn/!svn/ver/4482/trunk/test/fixtures/issues.yml END queries.yml K 25 @@ -145,19 +145,19 @@ K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/3412/trunk/test/fixtures/wiki_contents.yml +/svn/!svn/ver/4681/trunk/test/fixtures/wiki_contents.yml END enabled_modules.yml K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4013/trunk/test/fixtures/enabled_modules.yml +/svn/!svn/ver/4505/trunk/test/fixtures/enabled_modules.yml END wiki_pages.yml K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/3412/trunk/test/fixtures/wiki_pages.yml +/svn/!svn/ver/4680/trunk/test/fixtures/wiki_pages.yml END wiki_content_versions.yml K 25 @@ -199,7 +199,7 @@ K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4216/trunk/test/fixtures/users.yml +/svn/!svn/ver/4936/trunk/test/fixtures/users.yml END auth_sources.yml K 25 @@ -235,13 +235,13 @@ K 25 svn:wc:ra_dav:version-url V 54 -/svn/!svn/ver/3123/trunk/test/fixtures/attachments.yml +/svn/!svn/ver/4604/trunk/test/fixtures/attachments.yml END news.yml K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/2895/trunk/test/fixtures/news.yml +/svn/!svn/ver/4505/trunk/test/fixtures/news.yml END trackers.yml K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/entries --- a/test/fixtures/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures http://redmine.rubyforge.org/svn -2010-11-14T13:48:01.671461Z -4404 -jplang +2011-02-28T14:12:47.115180Z +4964 +tmaruyama @@ -35,10 +35,10 @@ -2010-09-23T14:37:45.327799Z -7f7308fa24fe8015418b4bf81a265389 -2009-12-06T10:28:20.099964Z -3123 +2011-03-03T11:40:18.000000Z +c85ec633618360a62da10b17100bbf56 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -61,7 +61,7 @@ -359 +547 ldap dir @@ -72,10 +72,10 @@ -2010-09-23T14:37:45.327799Z -940bc0bea76bc76ba8ef1b224d744eee -2009-09-20T14:06:57.257282Z -2895 +2011-03-03T11:40:18.000000Z +2d31c6b69ca13da5466d1600bae9a2fd +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -98,7 +98,7 @@ -505 +589 changesets.yml file @@ -106,10 +106,10 @@ -2010-09-23T14:37:45.315821Z -1e9bc92faf43a6d556aea8f33ea974b0 -2009-09-20T15:20:22.385253Z -2898 +2011-03-03T11:05:09.000000Z +d3a777560e5a963bc848b30547a65d4b +2010-12-05T11:45:09.061840Z +4470 jplang has-props @@ -132,7 +132,7 @@ -2178 +2180 roles.yml file @@ -140,10 +140,10 @@ -2010-09-23T14:37:45.351765Z -5b2ffc98605c1c36dc346f3be44a9985 -2010-03-13T14:56:49.379682Z -3573 +2011-03-03T11:05:09.000000Z +15f318dd68723b4c4dab1e1ca66dd044 +2011-01-06T20:36:31.826591Z +4645 jplang has-props @@ -166,7 +166,7 @@ -3691 +3721 encoding dir @@ -177,7 +177,7 @@ -2010-09-23T14:37:45.355763Z +2011-03-03T11:05:09.000000Z a519d5e75a6d1ac1516064c882aa773c 2009-09-20T14:06:57.257282Z 2895 @@ -205,13 +205,47 @@ 165 +time_entries.yml +file + + + + +2011-03-03T11:05:09.000000Z +5259028ece10055ea04cb1baddadd334 +2009-10-21T22:34:52.412718Z +2950 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +1074 + projects_trackers.yml file -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z b7264b0f4d285dc38ba7139feaabafe2 2008-12-29T12:40:56.716698Z 2196 @@ -245,7 +279,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z e9853df4a04648bcb9389127748b24c4 2009-09-20T14:06:57.257282Z 2895 @@ -273,50 +307,16 @@ 428 -time_entries.yml -file - - - - -2010-09-23T14:37:45.351765Z -5259028ece10055ea04cb1baddadd334 -2009-10-21T22:34:52.412718Z -2950 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -1074 - custom_values.yml file -2010-11-19T13:04:46.864726Z -4d480d87e42663a5e874353649c86039 -2010-11-07T14:15:01.891476Z -4382 +2011-03-03T11:05:09.000000Z +342c09046e9942f00cced7e066066202 +2010-12-11T10:47:00.859736Z +4488 jplang has-props @@ -347,7 +347,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z b72e570a19a6a6297fd0e78a0c15d9a6 2009-09-20T14:06:57.257282Z 2895 @@ -381,7 +381,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z e6b2256ffe56fa2baa64e474f5c920d6 2009-09-20T14:06:57.257282Z 2895 @@ -415,7 +415,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z 7e42308ab41cac587386d54899cfcef5 2009-09-20T14:06:57.257282Z 2895 @@ -449,7 +449,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z ad513155b260eb8a8739d4d13c2823a8 2009-12-19T13:32:21.556847Z 3194 @@ -483,7 +483,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z 1cdfea6614ecba6cddecb3d4524c38ba 2009-12-26T16:14:55.591181Z 3250 @@ -517,7 +517,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z 159394b420966c9e2f5ab0e31cb93b41 2009-11-27T20:32:28.228739Z 3099 @@ -554,7 +554,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z e5a26332fd48dac7e33a963622f49994 2009-09-20T14:06:57.257282Z 2895 @@ -582,13 +582,16 @@ 293 +configuration +dir + changes.yml file -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z 909e55408711ba1774e1c071b162962f 2009-09-20T14:06:57.257282Z 2895 @@ -616,8 +619,39 @@ 377 -mailer -dir +custom_fields_projects.yml +file + + + + +2011-03-03T11:05:09.000000Z +c6789a99aba9f28cf1d31a36b36224c8 +2010-01-03T11:18:09.741250Z +3278 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +71 enumerations.yml file @@ -625,7 +659,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z bafbddc194242dbdcac1f2bfc550c27b 2010-03-13T14:56:49.379682Z 3573 @@ -653,73 +687,8 @@ 1391 -custom_fields_projects.yml -file - - - - -2010-09-23T14:37:45.319762Z -c6789a99aba9f28cf1d31a36b36224c8 -2010-01-03T11:18:09.741250Z -3278 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -71 - -issues.yml -file - - - - -2010-11-19T13:04:46.864726Z -6d21fa7811e1d7b4a1db0f4062fcba45 -2010-09-26T18:13:31.522853Z -4186 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -5661 +mailer +dir member_roles.yml file @@ -727,7 +696,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z 86387d627355e1debc04c364c29efe81 2009-12-26T16:14:55.591181Z 3250 @@ -755,13 +724,47 @@ 692 +issues.yml +file + + + + +2011-03-03T11:05:09.000000Z +a8c37ca171bb5f39ffbc6cd3ffcf0c52 +2010-12-10T11:06:21.419457Z +4482 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +5656 + queries.yml file -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z b5bafc332d23c9efcc2ef648a9a393b9 2009-11-16T18:07:30.910440Z 3071 @@ -795,10 +798,10 @@ -2010-09-23T14:37:45.355763Z -8e7549cddb3ed2eb4c5778e3506e3e0c -2010-02-11T19:30:53.136370Z -3412 +2011-03-03T11:05:09.000000Z +595d0f0964e3c3f8ce7edb4b07941ffa +2011-01-10T19:45:20.108166Z +4681 jplang has-props @@ -821,7 +824,7 @@ -1795 +1953 watchers.yml file @@ -829,7 +832,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 9dbcd982c4227d919ea750ce4fde79a7 2009-02-12T17:35:57.542817Z 2456 @@ -857,50 +860,50 @@ 219 +wiki_pages.yml +file + + + + +2011-03-03T11:05:09.000000Z +8d80a417fe13f7041cdec04f3206169e +2011-01-10T18:32:04.408692Z +4680 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1381 + enabled_modules.yml file -2010-09-23T14:37:45.319762Z -8a815e166641ad170ffddcf33646ca04 -2010-08-22T18:42:00.112555Z -4013 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -1539 - -wiki_pages.yml -file - - - - -2010-09-23T14:37:45.355763Z -f32671fee76259eb7dbe8f57ed503c99 -2010-02-11T19:30:53.136370Z -3412 +2011-03-03T11:05:09.000000Z +c1fe3d9f5bbcbf5cf73c684b744d0c7a +2010-12-12T17:00:52.100205Z +4505 jplang has-props @@ -923,7 +926,7 @@ -1227 +1600 comments.yml file @@ -931,7 +934,7 @@ -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z 0cb04e10717d1de94f328dd92f2e9f8c 2009-09-20T14:06:57.257282Z 2895 @@ -965,7 +968,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z fcf009196cf46bc9d64e947e8275e51f 2009-09-20T14:06:57.257282Z 2895 @@ -1002,7 +1005,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z a12098ae3dcc7df2fffdc5aabc036445 2009-12-26T16:14:55.591181Z 3250 @@ -1039,7 +1042,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z 0f791723030addfd84aeb8e8478b4373 2009-12-06T10:28:20.099964Z 3123 @@ -1073,7 +1076,7 @@ -2010-09-23T14:37:45.355763Z +2011-03-03T11:05:09.000000Z be9ed58ec8ae1a4d2e1608c712c480be 2009-09-20T14:06:57.257282Z 2895 @@ -1107,7 +1110,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z 28c83450d87eb6a49fe3d920f05e16b7 2010-01-14T20:00:17.463579Z 3313 @@ -1141,11 +1144,11 @@ -2010-11-19T13:04:46.864726Z -f590d477ec468a76d8d31d5ed99de0e6 -2010-09-28T18:22:00.231301Z -4216 -edavis10 +2011-03-03T11:40:18.000000Z +4bc8168f868eb01690365ddcb82e8841 +2011-02-23T17:27:31.762248Z +4936 +jplang has-props @@ -1167,7 +1170,7 @@ -3294 +3500 auth_sources.yml file @@ -1175,7 +1178,7 @@ -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z f299e9e4f8b4310d276f3cc0bd4573a2 2010-02-26T08:42:40.283735Z 3490 @@ -1209,7 +1212,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z f41152c0bbe67b30733fb44c847c0c28 2009-12-13T12:39:22.716082Z 3167 @@ -1243,7 +1246,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z 14b2db45f35ee3e6f8c2a8a05b94c82b 2009-11-07T08:44:56.035544Z 3013 @@ -1277,7 +1280,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 0670d0dee081a5f922aa2d3ff7af9764 2009-12-06T10:28:20.099964Z 3123 @@ -1311,7 +1314,7 @@ -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z c3c2ab815b9af7fb01ccafc5fc881f87 2009-10-25T11:23:46.266302Z 2976 @@ -1345,10 +1348,10 @@ -2010-09-23T14:37:45.315821Z -58f19425b758eec08d68749a9408b258 -2009-12-06T10:28:20.099964Z -3123 +2011-03-03T11:05:09.000000Z +c91798950ab5d71a04f10a60ad9e5259 +2011-01-01T13:40:36.520874Z +4604 jplang has-props @@ -1371,7 +1374,7 @@ -3692 +4320 news.yml file @@ -1379,10 +1382,10 @@ -2010-09-23T14:37:45.343799Z -f926570b0d32ca1702d16de3f57e0262 -2009-09-20T14:06:57.257282Z -2895 +2011-03-03T11:05:09.000000Z +3106fd060b768ea17e35b5ea975e0aca +2010-12-12T17:00:52.100205Z +4505 jplang has-props @@ -1405,7 +1408,7 @@ -558 +753 trackers.yml file @@ -1413,7 +1416,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 644bd85c22127195b9f31217cce0595e 2009-09-20T14:06:57.257282Z 2895 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/attachments.yml.svn-base --- a/test/fixtures/.svn/text-base/attachments.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/attachments.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -54,11 +54,11 @@ container_type: Issue container_id: 3 downloads: 0 - disk_filename: 060719210727_changeset.diff + disk_filename: 060719210727_changeset_iso8859-1.diff digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 id: 5 filesize: 687 - filename: changeset.diff + filename: changeset_iso8859-1.diff author_id: 2 content_type: text/x-diff attachments_006: @@ -145,3 +145,27 @@ filename: version_file.zip author_id: 2 content_type: application/octet-stream +attachments_013: + created_on: 2006-07-19 21:07:27 +02:00 + container_type: Message + container_id: 1 + downloads: 0 + disk_filename: 060719210727_foo.zip + digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 + id: 13 + filesize: 452 + filename: foo.zip + author_id: 2 + content_type: application/octet-stream +attachments_014: + created_on: 2006-07-19 21:07:27 +02:00 + container_type: Issue + container_id: 3 + downloads: 0 + disk_filename: 060719210727_changeset_utf8.diff + digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 + id: 14 + filesize: 687 + filename: changeset_utf8.diff + author_id: 2 + content_type: text/x-diff diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/changesets.yml.svn-base --- a/test/fixtures/.svn/text-base/changesets.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/changesets.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -24,7 +24,7 @@ id: 102 comments: |- A commit with wrong issue ids - IssueID 666 3 + IssueID #666 #3 repository_id: 10 committer: dlopper user_id: 3 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/custom_values.yml.svn-base --- a/test/fixtures/.svn/text-base/custom_values.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/custom_values.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -50,7 +50,7 @@ custom_values_009: customized_type: Issue custom_field_id: 2 - customized_id: 3 + customized_id: 7 id: 9 value: "this is a stringforcustomfield search" custom_values_010: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/enabled_modules.yml.svn-base --- a/test/fixtures/.svn/text-base/enabled_modules.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/enabled_modules.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -95,3 +95,7 @@ name: gantt project_id: 5 id: 24 +enabled_modules_025: + name: news + project_id: 2 + id: 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/issue_statuses.yml.svn-base --- a/test/fixtures/.svn/text-base/issue_statuses.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/issue_statuses.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,31 +1,37 @@ --- +issue_statuses_001: + id: 1 + name: New + is_default: true + is_closed: false + position: 1 +issue_statuses_002: + id: 2 + name: Assigned + is_default: false + is_closed: false + position: 2 +issue_statuses_003: + id: 3 + name: Resolved + is_default: false + is_closed: false + position: 3 +issue_statuses_004: + name: Feedback + id: 4 + is_default: false + is_closed: false + position: 4 +issue_statuses_005: + id: 5 + name: Closed + is_default: false + is_closed: true + position: 5 issue_statuses_006: + id: 6 name: Rejected is_default: false is_closed: true - id: 6 -issue_statuses_001: - name: New - is_default: true - is_closed: false - id: 1 -issue_statuses_002: - name: Assigned - is_default: false - is_closed: false - id: 2 -issue_statuses_003: - name: Resolved - is_default: false - is_closed: false - id: 3 -issue_statuses_004: - name: Feedback - is_default: false - is_closed: false - id: 4 -issue_statuses_005: - name: Closed - is_default: false - is_closed: true - id: 5 + position: 6 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/issues.yml.svn-base --- a/test/fixtures/.svn/text-base/issues.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/issues.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -53,8 +53,8 @@ assigned_to_id: 3 author_id: 2 status_id: 1 - start_date: <%= 1.day.from_now.to_date.to_s(:db) %> - due_date: <%= 40.day.ago.to_date.to_s(:db) %> + start_date: <%= 15.day.ago.to_date.to_s(:db) %> + due_date: <%= 5.day.ago.to_date.to_s(:db) %> root_id: 3 lft: 1 rgt: 2 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/journal_details.yml.svn-base --- a/test/fixtures/.svn/text-base/journal_details.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/journal_details.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -20,3 +20,10 @@ value: "6" prop_key: fixed_version_id journal_id: 4 +journal_details_004: + old_value: "This word was removed and an other was" + property: attr + id: 4 + value: "This word was and an other was added" + prop_key: description + journal_id: 3 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/news.yml.svn-base --- a/test/fixtures/.svn/text-base/news.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/news.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -20,3 +20,12 @@ summary: eCookbook 1.0 have downloaded 100,000 times author_id: 2 comments_count: 0 +news_003: + created_on: 2006-07-19 22:42:58 +02:00 + project_id: 2 + title: News on a private project + id: 3 + description: This is a private news + summary: + author_id: 2 + comments_count: 0 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/roles.yml.svn-base --- a/test/fixtures/.svn/text-base/roles.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/roles.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -7,6 +7,7 @@ --- - :add_project - :edit_project + - :select_project_modules - :manage_members - :manage_versions - :manage_categories diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/users.yml.svn-base --- a/test/fixtures/.svn/text-base/users.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/users.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -4,7 +4,9 @@ status: 1 last_login_on: language: en - hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608 + # password = foo + salt: 3126f764c3c5ac61cbfc103f25f934cf + hashed_password: 9e4dd7eeb172c12a0691a6d9d3a269f7e9fe671b updated_on: 2006-07-19 19:34:07 +02:00 admin: false mail: rhill@somenet.foo @@ -20,7 +22,9 @@ status: 1 last_login_on: 2006-07-19 22:57:52 +02:00 language: en - hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997 + # password = admin + salt: 82090c953c4a0000a7db253b0691a6b4 + hashed_password: b5b6ff9543bf1387374cdfa27a54c96d236a7150 updated_on: 2006-07-19 22:57:52 +02:00 admin: true mail: admin@somenet.foo @@ -36,7 +40,9 @@ status: 1 last_login_on: 2006-07-19 22:42:15 +02:00 language: en - hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d + # password = jsmith + salt: 67eb4732624d5a7753dcea7ce0bb7d7d + hashed_password: bfbe06043353a677d0215b26a5800d128d5413bc updated_on: 2006-07-19 22:42:15 +02:00 admin: false mail: jsmith@somenet.foo @@ -52,7 +58,9 @@ status: 1 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + # password = foo + salt: 7599f9963ec07b5a3b55b354407120c0 + hashed_password: 8f659c8d7c072f189374edacfa90d6abbc26d8ed updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper@somenet.foo @@ -70,7 +78,7 @@ status: 3 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + hashed_password: 1 updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper2@somenet.foo diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/wiki_contents.yml.svn-base --- a/test/fixtures/.svn/text-base/wiki_contents.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/wiki_contents.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -95,4 +95,12 @@ version: 1 author_id: 1 comments: +wiki_contents_010: + text: Page with cyrillic title + updated_on: 2007-03-08 00:18:07 +01:00 + page_id: 10 + id: 10 + version: 1 + author_id: 1 + comments: \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/.svn/text-base/wiki_pages.yml.svn-base --- a/test/fixtures/.svn/text-base/wiki_pages.yml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/.svn/text-base/wiki_pages.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -62,4 +62,10 @@ wiki_id: 2 protected: false parent_id: 8 - \ No newline at end of file +wiki_pages_010: + created_on: 2007-03-08 00:18:07 +01:00 + title: Этика_менеджмента + id: 10 + wiki_id: 1 + protected: false + parent_id: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/attachments.yml --- a/test/fixtures/attachments.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/attachments.yml Thu Mar 03 12:11:53 2011 +0000 @@ -54,11 +54,11 @@ container_type: Issue container_id: 3 downloads: 0 - disk_filename: 060719210727_changeset.diff + disk_filename: 060719210727_changeset_iso8859-1.diff digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 id: 5 filesize: 687 - filename: changeset.diff + filename: changeset_iso8859-1.diff author_id: 2 content_type: text/x-diff attachments_006: @@ -145,3 +145,27 @@ filename: version_file.zip author_id: 2 content_type: application/octet-stream +attachments_013: + created_on: 2006-07-19 21:07:27 +02:00 + container_type: Message + container_id: 1 + downloads: 0 + disk_filename: 060719210727_foo.zip + digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 + id: 13 + filesize: 452 + filename: foo.zip + author_id: 2 + content_type: application/octet-stream +attachments_014: + created_on: 2006-07-19 21:07:27 +02:00 + container_type: Issue + container_id: 3 + downloads: 0 + disk_filename: 060719210727_changeset_utf8.diff + digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 + id: 14 + filesize: 687 + filename: changeset_utf8.diff + author_id: 2 + content_type: text/x-diff diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/changesets.yml --- a/test/fixtures/changesets.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/changesets.yml Thu Mar 03 12:11:53 2011 +0000 @@ -24,7 +24,7 @@ id: 102 comments: |- A commit with wrong issue ids - IssueID 666 3 + IssueID #666 #3 repository_id: 10 committer: dlopper user_id: 3 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration +END +no_default.yml +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/no_default.yml +END +overrides.yml +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/overrides.yml +END +default.yml +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/default.yml +END +empty.yml +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/empty.yml +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,164 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/test/fixtures/configuration +http://redmine.rubyforge.org/svn + + + +2011-01-23T10:22:00.456857Z +4752 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +no_default.yml +file + + + + +2011-03-03T11:05:09.000000Z +3c3b944decf7592dd335fc1d536985e7 +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +64 + +overrides.yml +file + + + + +2011-03-03T11:05:09.000000Z +0b2286bdf8e49e063fb511553d63d73b +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +83 + +default.yml +file + + + + +2011-03-03T11:05:09.000000Z +8f9245a8cde919ad5693021c5eb8e67e +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +64 + +empty.yml +file + + + + +2011-03-03T11:05:09.000000Z +f807b10f3b740dafc7ebfd848048a587 +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +43 + diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/prop-base/default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/default.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/prop-base/empty.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/empty.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/prop-base/no_default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/no_default.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/prop-base/overrides.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/overrides.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/text-base/default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/default.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,8 @@ +default: + somesetting: foo + +production: + +development: + +test: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/text-base/empty.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/empty.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,7 @@ +default: + +production: + +development: + +test: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/text-base/no_default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/no_default.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,8 @@ +default: + +production: + +development: + +test: + somesetting: foo diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/.svn/text-base/overrides.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/overrides.yml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +default: + somesetting: foo + +production: + +development: + +test: + somesetting: bar diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/default.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/default.yml Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,8 @@ +default: + somesetting: foo + +production: + +development: + +test: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/empty.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/empty.yml Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,7 @@ +default: + +production: + +development: + +test: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/no_default.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/no_default.yml Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,8 @@ +default: + +production: + +development: + +test: + somesetting: foo diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/configuration/overrides.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/overrides.yml Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,9 @@ +default: + somesetting: foo + +production: + +development: + +test: + somesetting: bar diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/custom_values.yml --- a/test/fixtures/custom_values.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/custom_values.yml Thu Mar 03 12:11:53 2011 +0000 @@ -50,7 +50,7 @@ custom_values_009: customized_type: Issue custom_field_id: 2 - customized_id: 3 + customized_id: 7 id: 9 value: "this is a stringforcustomfield search" custom_values_010: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/diffs/.svn/all-wcprops --- a/test/fixtures/diffs/.svn/all-wcprops Tue Feb 22 16:48:15 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/2112/trunk/test/fixtures/diffs -END -subversion.diff -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/2112/trunk/test/fixtures/diffs/subversion.diff -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/diffs/.svn/entries --- a/test/fixtures/diffs/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/diffs/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/diffs http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z 64527b211202fbff696792d538e2b14e 2008-12-07T15:21:40.165860Z 2112 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/enabled_modules.yml --- a/test/fixtures/enabled_modules.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/enabled_modules.yml Thu Mar 03 12:11:53 2011 +0000 @@ -95,3 +95,7 @@ name: gantt project_id: 5 id: 24 +enabled_modules_025: + name: news + project_id: 2 + id: 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/encoding/.svn/all-wcprops --- a/test/fixtures/encoding/.svn/all-wcprops Tue Feb 22 16:48:15 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 47 -/svn/!svn/ver/3466/trunk/test/fixtures/encoding -END -iso-8859-1.txt -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3466/trunk/test/fixtures/encoding/iso-8859-1.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/encoding/.svn/entries --- a/test/fixtures/encoding/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/encoding/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/encoding http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z eee83cf374737071543358b83f85f75b 2010-02-20T11:24:41.988635Z 3466 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/.svn/all-wcprops --- a/test/fixtures/files/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/files/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,13 +1,19 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/2085/trunk/test/fixtures/files +/svn/!svn/ver/4604/trunk/test/fixtures/files END -060719210727_changeset.diff +060719210727_changeset_iso8859-1.diff K 25 svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/1520/trunk/test/fixtures/files/060719210727_changeset.diff +V 82 +/svn/!svn/ver/4604/trunk/test/fixtures/files/060719210727_changeset_iso8859-1.diff +END +060719210727_changeset_utf8.diff +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/4604/trunk/test/fixtures/files/060719210727_changeset_utf8.diff END 060719210727_archive.zip K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/.svn/entries --- a/test/fixtures/files/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/files/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/files http://redmine.rubyforge.org/svn -2008-12-02T17:57:13.240321Z -2085 +2011-01-01T13:40:36.520874Z +4604 jplang @@ -26,16 +26,16 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 -060719210727_changeset.diff +060719210727_changeset_iso8859-1.diff file -2010-09-23T14:37:45.323763Z -15a82d7463bda303b58595b5d05d8f05 -2008-06-09T18:40:59.518583Z -1520 +2011-03-03T11:05:09.000000Z +8ab69915b7f66c8199e6d137073d9ffe +2011-01-01T13:40:36.520874Z +4604 jplang has-props @@ -58,7 +58,41 @@ -687 +686 + +060719210727_changeset_utf8.diff +file + + + + +2011-03-03T11:05:09.000000Z +69b7e1bc8546406b1ddc3719d879254c +2011-01-01T13:40:36.520874Z +4604 +jplang + + + + + + + + + + + + + + + + + + + + + +704 060719210727_archive.zip file @@ -66,7 +100,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z 8b4167c6b87869174dd17db0694ef2e1 2008-06-09T18:40:59.518583Z 1520 @@ -100,7 +134,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z c72c8a9a0de99c39f9e6d712c13b7624 2008-06-09T18:40:59.518583Z 1520 @@ -134,7 +168,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z 1478adae0d4eb06d35897518540e25d6 2008-12-02T17:57:13.240321Z 2085 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/.svn/prop-base/060719210727_changeset.diff.svn-base --- a/test/fixtures/files/.svn/prop-base/060719210727_changeset.diff.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/.svn/prop-base/060719210727_changeset_iso8859-1.diff.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/.svn/prop-base/060719210727_changeset_iso8859-1.diff.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/.svn/text-base/060719210727_changeset.diff.svn-base --- a/test/fixtures/files/.svn/text-base/060719210727_changeset.diff.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -Index: trunk/app/controllers/issues_controller.rb -=================================================================== ---- trunk/app/controllers/issues_controller.rb (r‚vision 1483) -+++ trunk/app/controllers/issues_controller.rb (r‚vision 1484) -@@ -149,7 +149,7 @@ - attach_files(@issue, params[:attachments]) - flash[:notice] = l(:notice_successful_create) - Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') -- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project -+ redirect_to :controller => 'issues', :action => 'show', :id => @issue - return - end - end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/.svn/text-base/060719210727_changeset_iso8859-1.diff.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/.svn/text-base/060719210727_changeset_iso8859-1.diff.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/.svn/text-base/060719210727_changeset_utf8.diff.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/.svn/text-base/060719210727_changeset_utf8.diff.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/060719210727_changeset.diff --- a/test/fixtures/files/060719210727_changeset.diff Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -Index: trunk/app/controllers/issues_controller.rb -=================================================================== ---- trunk/app/controllers/issues_controller.rb (r‚vision 1483) -+++ trunk/app/controllers/issues_controller.rb (r‚vision 1484) -@@ -149,7 +149,7 @@ - attach_files(@issue, params[:attachments]) - flash[:notice] = l(:notice_successful_create) - Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') -- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project -+ redirect_to :controller => 'issues', :action => 'show', :id => @issue - return - end - end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/060719210727_changeset_iso8859-1.diff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/060719210727_changeset_iso8859-1.diff Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/files/060719210727_changeset_utf8.diff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/060719210727_changeset_utf8.diff Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/issue_statuses.yml --- a/test/fixtures/issue_statuses.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/issue_statuses.yml Thu Mar 03 12:11:53 2011 +0000 @@ -1,31 +1,37 @@ --- +issue_statuses_001: + id: 1 + name: New + is_default: true + is_closed: false + position: 1 +issue_statuses_002: + id: 2 + name: Assigned + is_default: false + is_closed: false + position: 2 +issue_statuses_003: + id: 3 + name: Resolved + is_default: false + is_closed: false + position: 3 +issue_statuses_004: + name: Feedback + id: 4 + is_default: false + is_closed: false + position: 4 +issue_statuses_005: + id: 5 + name: Closed + is_default: false + is_closed: true + position: 5 issue_statuses_006: + id: 6 name: Rejected is_default: false is_closed: true - id: 6 -issue_statuses_001: - name: New - is_default: true - is_closed: false - id: 1 -issue_statuses_002: - name: Assigned - is_default: false - is_closed: false - id: 2 -issue_statuses_003: - name: Resolved - is_default: false - is_closed: false - id: 3 -issue_statuses_004: - name: Feedback - is_default: false - is_closed: false - id: 4 -issue_statuses_005: - name: Closed - is_default: false - is_closed: true - id: 5 + position: 6 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/issues.yml --- a/test/fixtures/issues.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/issues.yml Thu Mar 03 12:11:53 2011 +0000 @@ -53,8 +53,8 @@ assigned_to_id: 3 author_id: 2 status_id: 1 - start_date: <%= 1.day.from_now.to_date.to_s(:db) %> - due_date: <%= 40.day.ago.to_date.to_s(:db) %> + start_date: <%= 15.day.ago.to_date.to_s(:db) %> + due_date: <%= 5.day.ago.to_date.to_s(:db) %> root_id: 3 lft: 1 rgt: 2 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/journal_details.yml --- a/test/fixtures/journal_details.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/journal_details.yml Thu Mar 03 12:11:53 2011 +0000 @@ -20,3 +20,10 @@ value: "6" prop_key: fixed_version_id journal_id: 4 +journal_details_004: + old_value: "This word was removed and an other was" + property: attr + id: 4 + value: "This word was and an other was added" + prop_key: description + journal_id: 3 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/ldap/.svn/all-wcprops --- a/test/fixtures/ldap/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/3489/trunk/test/fixtures/ldap -END -slapd.conf -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3489/trunk/test/fixtures/ldap/slapd.conf -END -test-ldap.ldif -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3489/trunk/test/fixtures/ldap/test-ldap.ldif -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/ldap/.svn/entries --- a/test/fixtures/ldap/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/ldap/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/ldap http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z acbef41cb6cf252c83489cc3344e2604 2010-02-26T08:31:36.418866Z 3489 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z f1b10e6d96dd658e563d4ba74d52e87b 2010-02-26T08:31:36.418866Z 3489 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/mail_handler/.svn/all-wcprops --- a/test/fixtures/mail_handler/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/mail_handler/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4404/trunk/test/fixtures/mail_handler +/svn/!svn/ver/4575/trunk/test/fixtures/mail_handler +END +ticket_html_only.eml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2136/trunk/test/fixtures/mail_handler/ticket_html_only.eml END message_reply_by_subject.eml K 25 @@ -9,30 +15,24 @@ V 80 /svn/!svn/ver/2294/trunk/test/fixtures/mail_handler/message_reply_by_subject.eml END -ticket_html_only.eml -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2136/trunk/test/fixtures/mail_handler/ticket_html_only.eml -END issue_update_with_multiple_quoted_reply_above.eml K 25 svn:wc:ra_dav:version-url V 101 /svn/!svn/ver/4361/trunk/test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml END +ticket_with_localized_attributes.eml +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/4395/trunk/test/fixtures/mail_handler/ticket_with_localized_attributes.eml +END ticket_with_spaces_between_attribute_and_separator.eml K 25 svn:wc:ra_dav:version-url V 106 /svn/!svn/ver/2838/trunk/test/fixtures/mail_handler/ticket_with_spaces_between_attribute_and_separator.eml END -ticket_with_localized_attributes.eml -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/4395/trunk/test/fixtures/mail_handler/ticket_with_localized_attributes.eml -END ticket_with_long_subject.eml K 25 svn:wc:ra_dav:version-url @@ -91,7 +91,7 @@ K 25 svn:wc:ra_dav:version-url V 80 -/svn/!svn/ver/4394/trunk/test/fixtures/mail_handler/ticket_reply_with_status.eml +/svn/!svn/ver/4575/trunk/test/fixtures/mail_handler/ticket_reply_with_status.eml END ticket_on_given_project.eml K 25 @@ -105,18 +105,18 @@ V 92 /svn/!svn/ver/4361/trunk/test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml END +ticket_with_custom_fields.eml +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/2211/trunk/test/fixtures/mail_handler/ticket_with_custom_fields.eml +END ticket_reply.eml K 25 svn:wc:ra_dav:version-url V 68 /svn/!svn/ver/2288/trunk/test/fixtures/mail_handler/ticket_reply.eml END -ticket_with_custom_fields.eml -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2211/trunk/test/fixtures/mail_handler/ticket_with_custom_fields.eml -END message_reply.eml K 25 svn:wc:ra_dav:version-url diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/mail_handler/.svn/entries --- a/test/fixtures/mail_handler/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/mail_handler/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/mail_handler http://redmine.rubyforge.org/svn -2010-11-14T13:48:01.671461Z -4404 +2010-12-29T17:36:01.998670Z +4575 jplang @@ -26,13 +26,47 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 +ticket_html_only.eml +file + + + + +2011-03-03T11:05:09.000000Z +5e24af78a4534798611158a3d81efb34 +2008-12-14T17:10:16.292262Z +2136 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +691 + message_reply_by_subject.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 09130a1100cb410ed07fdff5564b2993 2009-01-21T18:22:30.765588Z 2294 @@ -60,47 +94,13 @@ 410 -ticket_html_only.eml -file - - - - -2010-09-23T14:37:45.339796Z -5e24af78a4534798611158a3d81efb34 -2008-12-14T17:10:16.292262Z -2136 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -691 - issue_update_with_multiple_quoted_reply_above.eml file -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z ef4c0db9f76d81792292785d2ae9cb6a 2010-11-02T19:00:31.177706Z 4361 @@ -128,13 +128,47 @@ 2018 +ticket_with_localized_attributes.eml +file + + + + +2011-03-03T11:05:09.000000Z +8ac895d880e6f19fc21333c4003babaf +2010-11-12T12:29:35.878777Z +4395 +jplang + + + + + + + + + + + + + + + + + + + + + +1944 + ticket_with_spaces_between_attribute_and_separator.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 4fbec91f5454b84077ae1290fba0bc8e 2009-08-13T16:57:36.259313Z 2838 @@ -162,47 +196,13 @@ 1903 -ticket_with_localized_attributes.eml -file - - - - -2010-11-19T13:04:46.204713Z -8ac895d880e6f19fc21333c4003babaf -2010-11-12T12:29:35.878777Z -4395 -jplang - - - - - - - - - - - - - - - - - - - - - -1944 - ticket_with_long_subject.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z ed7adca07ce64c4d15f3e638a222e38d 2010-06-20T16:22:36.211973Z 3801 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 0c3b0545575d405416f585f8d5910bcb 2009-11-08T13:51:53.384956Z 3022 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 40927905de0187dc52a9adb3e4a2c252 2008-11-30T16:00:45.142894Z 2077 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z d276c2037b0bf277b66f921379695c35 2008-07-06T16:26:25.352975Z 1643 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.335799Z +2011-03-03T11:05:09.000000Z 1fc46fd2b0b8dcdaf67dfde24d0e8b89 2010-01-17T11:00:54.196987Z 3322 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 4d85674ea94930e7f1c8e288f03a57b8 2008-06-22T10:45:03.753412Z 1568 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 9dbf54ce4376f62447ef0696fe9b3a79 2010-06-19T19:24:17.380627Z 3783 @@ -440,7 +440,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 0979c01baf02b924bd8a6db3980c59c9 2009-06-14T14:48:34.287541Z 2789 @@ -474,7 +474,7 @@ -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z 605f28e31469b6897f33cf34bbc1ad0a 2010-11-14T13:48:01.671461Z 4404 @@ -508,10 +508,10 @@ -2010-11-19T13:04:46.204713Z -88a90b088de41d263e9135d1810cf58c -2010-11-12T11:34:53.754717Z -4394 +2011-03-03T11:05:09.000000Z +f1b76e664d73fd54d9e346c2329d94a9 +2010-12-29T17:36:01.998670Z +4575 jplang @@ -534,7 +534,7 @@ -2065 +2044 ticket_on_given_project.eml file @@ -542,7 +542,7 @@ -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z af7f3e5f9caddc2cad5fba0ba9d73882 2010-11-12T11:34:53.754717Z 4394 @@ -576,7 +576,7 @@ -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z 977375e727ce2d63ce878f877d692c62 2010-11-02T19:00:31.177706Z 4361 @@ -604,47 +604,13 @@ 1979 -ticket_reply.eml -file - - - - -2010-09-23T14:37:45.339796Z -4bd4decc00f83404fdd1a835809e4552 -2009-01-19T18:29:07.726757Z -2288 -jplang - - - - - - - - - - - - - - - - - - - - - -2012 - ticket_with_custom_fields.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 4ef77e6337f95c7a8362c4a51c09d0af 2008-12-30T14:57:33.008940Z 2211 @@ -672,13 +638,47 @@ 1887 +ticket_reply.eml +file + + + + +2011-03-03T11:05:09.000000Z +4bd4decc00f83404fdd1a835809e4552 +2009-01-19T18:29:07.726757Z +2288 +jplang + + + + + + + + + + + + + + + + + + + + + +2012 + message_reply.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z c174d0c5bbb339ef9361c45aab58b2bb 2009-01-19T19:03:53.393843Z 2289 @@ -712,7 +712,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z 7bc2d83ee5c078a264dd66ec75f35c77 2009-03-06T18:25:19.434505Z 2553 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/mail_handler/.svn/text-base/ticket_reply_with_status.eml.svn-base --- a/test/fixtures/mail_handler/.svn/text-base/ticket_reply_with_status.eml.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/mail_handler/.svn/text-base/ticket_reply_with_status.eml.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -29,7 +29,7 @@ due date: 2010-12-31 Start Date:2010-01-01 Assigned to: jsmith@somenet.foo -searchable field: Updated custom value +float field: 52.6 ------=_NextPart_000_0067_01C8D3CE.711F9CC0 Content-Type: text/html; diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/mail_handler/ticket_reply_with_status.eml --- a/test/fixtures/mail_handler/ticket_reply_with_status.eml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/mail_handler/ticket_reply_with_status.eml Thu Mar 03 12:11:53 2011 +0000 @@ -29,7 +29,7 @@ due date: 2010-12-31 Start Date:2010-01-01 Assigned to: jsmith@somenet.foo -searchable field: Updated custom value +float field: 52.6 ------=_NextPart_000_0067_01C8D3CE.711F9CC0 Content-Type: text/html; diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/mailer/.svn/all-wcprops --- a/test/fixtures/mailer/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 43 -/svn/!svn/ver/67/trunk/test/fixtures/mailer -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/mailer/.svn/entries --- a/test/fixtures/mailer/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/mailer/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/mailer http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/news.yml --- a/test/fixtures/news.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/news.yml Thu Mar 03 12:11:53 2011 +0000 @@ -20,3 +20,12 @@ summary: eCookbook 1.0 have downloaded 100,000 times author_id: 2 comments_count: 0 +news_003: + created_on: 2006-07-19 22:42:58 +02:00 + project_id: 2 + title: News on a private project + id: 3 + description: This is a private news + summary: + author_id: 2 + comments_count: 0 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/.svn/all-wcprops --- a/test/fixtures/repositories/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/repositories/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4310/trunk/test/fixtures/repositories +/svn/!svn/ver/4964/trunk/test/fixtures/repositories END darcs_repository.tar.gz K 25 @@ -9,6 +9,12 @@ V 75 /svn/!svn/ver/1236/trunk/test/fixtures/repositories/darcs_repository.tar.gz END +mercurial_repository.hg +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4676/trunk/test/fixtures/repositories/mercurial_repository.hg +END subversion_repository.dump.gz K 25 svn:wc:ra_dav:version-url @@ -25,13 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 73 -/svn/!svn/ver/4310/trunk/test/fixtures/repositories/git_repository.tar.gz -END -mercurial_repository.tar.gz -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/991/trunk/test/fixtures/repositories/mercurial_repository.tar.gz +/svn/!svn/ver/4964/trunk/test/fixtures/repositories/git_repository.tar.gz END filesystem_repository.tar.gz K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/.svn/entries --- a/test/fixtures/repositories/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/repositories/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/repositories http://redmine.rubyforge.org/svn -2010-10-29T23:21:57.240368Z -4310 -jbbarth +2011-02-28T14:12:47.115180Z +4964 +tmaruyama @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 0553391b55404e8ff509358b388f085b 2008-03-12T20:28:49.748698Z 1236 @@ -60,13 +60,47 @@ 8075 +mercurial_repository.hg +file + + + + +2011-03-03T11:05:09.000000Z +2436fc3d3aefeb07b291d5660396ca8d +2011-01-10T17:43:01.353336Z +4676 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +7104 + subversion_repository.dump.gz file -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z bd13c11517bf083e83846aeccff745f1 2010-06-20T16:08:26.745839Z 3800 @@ -100,7 +134,7 @@ -2010-09-23T14:37:45.347765Z +2011-03-03T11:05:09.000000Z fa70d4aeca5639d750d94281ad664957 2007-12-03T19:19:36.156779Z 951 @@ -134,11 +168,11 @@ -2010-11-19T13:04:46.860726Z -300e21b10239e2fa28df3111924b8328 -2010-10-29T23:21:57.240368Z -4310 -jbbarth +2011-03-03T11:40:18.000000Z +a520f027eaf4a4548dfbc85e8d7e71c5 +2011-02-28T14:12:47.115180Z +4964 +tmaruyama has-props @@ -160,41 +194,7 @@ -20730 - -mercurial_repository.tar.gz -file - - - - -2010-09-23T14:37:45.351765Z -48c6f19f8c3123c7e143e4516669f700 -2007-12-14T17:46:45.448946Z -991 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -7827 +15432 filesystem_repository.tar.gz file @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 9fbee7c5669de84f0767597eb41af9f7 2008-06-08T15:40:24.603157Z 1508 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 0c4730bd5eb192e094531f218b7a3119 2007-12-13T18:52:09.073829Z 987 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/.svn/prop-base/mercurial_repository.hg.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/repositories/.svn/prop-base/mercurial_repository.hg.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/.svn/prop-base/mercurial_repository.tar.gz.svn-base --- a/test/fixtures/repositories/.svn/prop-base/mercurial_repository.tar.gz.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/.svn/text-base/git_repository.tar.gz.svn-base Binary file test/fixtures/repositories/.svn/text-base/git_repository.tar.gz.svn-base has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/.svn/text-base/mercurial_repository.hg.svn-base Binary file test/fixtures/repositories/.svn/text-base/mercurial_repository.hg.svn-base has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/.svn/text-base/mercurial_repository.tar.gz.svn-base Binary file test/fixtures/repositories/.svn/text-base/mercurial_repository.tar.gz.svn-base has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/git_repository.tar.gz Binary file test/fixtures/repositories/git_repository.tar.gz has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/mercurial_repository.hg Binary file test/fixtures/repositories/mercurial_repository.hg has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/repositories/mercurial_repository.tar.gz Binary file test/fixtures/repositories/mercurial_repository.tar.gz has changed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/roles.yml --- a/test/fixtures/roles.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/roles.yml Thu Mar 03 12:11:53 2011 +0000 @@ -7,6 +7,7 @@ --- - :add_project - :edit_project + - :select_project_modules - :manage_members - :manage_versions - :manage_categories diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/users.yml --- a/test/fixtures/users.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/users.yml Thu Mar 03 12:11:53 2011 +0000 @@ -4,7 +4,9 @@ status: 1 last_login_on: language: en - hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608 + # password = foo + salt: 3126f764c3c5ac61cbfc103f25f934cf + hashed_password: 9e4dd7eeb172c12a0691a6d9d3a269f7e9fe671b updated_on: 2006-07-19 19:34:07 +02:00 admin: false mail: rhill@somenet.foo @@ -20,7 +22,9 @@ status: 1 last_login_on: 2006-07-19 22:57:52 +02:00 language: en - hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997 + # password = admin + salt: 82090c953c4a0000a7db253b0691a6b4 + hashed_password: b5b6ff9543bf1387374cdfa27a54c96d236a7150 updated_on: 2006-07-19 22:57:52 +02:00 admin: true mail: admin@somenet.foo @@ -36,7 +40,9 @@ status: 1 last_login_on: 2006-07-19 22:42:15 +02:00 language: en - hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d + # password = jsmith + salt: 67eb4732624d5a7753dcea7ce0bb7d7d + hashed_password: bfbe06043353a677d0215b26a5800d128d5413bc updated_on: 2006-07-19 22:42:15 +02:00 admin: false mail: jsmith@somenet.foo @@ -52,7 +58,9 @@ status: 1 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + # password = foo + salt: 7599f9963ec07b5a3b55b354407120c0 + hashed_password: 8f659c8d7c072f189374edacfa90d6abbc26d8ed updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper@somenet.foo @@ -70,7 +78,7 @@ status: 3 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + hashed_password: 1 updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper2@somenet.foo diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/wiki_contents.yml --- a/test/fixtures/wiki_contents.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/wiki_contents.yml Thu Mar 03 12:11:53 2011 +0000 @@ -95,4 +95,12 @@ version: 1 author_id: 1 comments: +wiki_contents_010: + text: Page with cyrillic title + updated_on: 2007-03-08 00:18:07 +01:00 + page_id: 10 + id: 10 + version: 1 + author_id: 1 + comments: \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 test/fixtures/wiki_pages.yml --- a/test/fixtures/wiki_pages.yml Tue Feb 22 16:48:15 2011 +0000 +++ b/test/fixtures/wiki_pages.yml Thu Mar 03 12:11:53 2011 +0000 @@ -62,4 +62,10 @@ wiki_id: 2 protected: false parent_id: 8 - \ No newline at end of file +wiki_pages_010: + created_on: 2007-03-08 00:18:07 +01:00 + title: Этика_менеджмента + id: 10 + wiki_id: 1 + protected: false + parent_id: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/all-wcprops --- a/test/functional/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,163 +1,157 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4411/trunk/test/functional +/svn/!svn/ver/4982/trunk/test/functional END issues_controller_test.rb K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/4411/trunk/test/functional/issues_controller_test.rb +/svn/!svn/ver/4530/trunk/test/functional/issues_controller_test.rb END news_controller_test.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4407/trunk/test/functional/news_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/news_controller_test.rb END queries_controller_test.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/2887/trunk/test/functional/queries_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/queries_controller_test.rb END trackers_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/3437/trunk/test/functional/trackers_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/trackers_controller_test.rb END mail_handler_controller_test.rb K 25 svn:wc:ra_dav:version-url V 72 -/svn/!svn/ver/2887/trunk/test/functional/mail_handler_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/mail_handler_controller_test.rb END auto_completes_controller_test.rb K 25 svn:wc:ra_dav:version-url V 74 -/svn/!svn/ver/3945/trunk/test/functional/auto_completes_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/auto_completes_controller_test.rb END roles_controller_test.rb K 25 svn:wc:ra_dav:version-url V 65 -/svn/!svn/ver/4407/trunk/test/functional/roles_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/roles_controller_test.rb END my_controller_test.rb K 25 svn:wc:ra_dav:version-url V 62 -/svn/!svn/ver/4407/trunk/test/functional/my_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/my_controller_test.rb END comments_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/4407/trunk/test/functional/comments_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/comments_controller_test.rb END wikis_controller_test.rb K 25 svn:wc:ra_dav:version-url V 65 -/svn/!svn/ver/3687/trunk/test/functional/wikis_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/wikis_controller_test.rb END admin_controller_test.rb K 25 svn:wc:ra_dav:version-url V 65 -/svn/!svn/ver/3799/trunk/test/functional/admin_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/admin_controller_test.rb +END +context_menus_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/4673/trunk/test/functional/context_menus_controller_test.rb END welcome_controller_test.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/3719/trunk/test/functional/welcome_controller_test.rb -END -context_menus_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/4242/trunk/test/functional/context_menus_controller_test.rb +/svn/!svn/ver/4900/trunk/test/functional/welcome_controller_test.rb END account_controller_test.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/4407/trunk/test/functional/account_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/account_controller_test.rb END calendars_controller_test.rb K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/4245/trunk/test/functional/calendars_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/calendars_controller_test.rb END journals_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/4034/trunk/test/functional/journals_controller_test.rb +/svn/!svn/ver/4954/trunk/test/functional/journals_controller_test.rb +END +time_entry_reports_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4509/trunk/test/functional/time_entry_reports_controller_test.rb END workflows_controller_test.rb K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/3188/trunk/test/functional/workflows_controller_test.rb -END -time_entry_reports_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/4232/trunk/test/functional/time_entry_reports_controller_test.rb +/svn/!svn/ver/4895/trunk/test/functional/workflows_controller_test.rb END project_enumerations_controller_test.rb K 25 svn:wc:ra_dav:version-url V 80 -/svn/!svn/ver/4407/trunk/test/functional/project_enumerations_controller_test.rb +/svn/!svn/ver/4600/trunk/test/functional/project_enumerations_controller_test.rb END gantts_controller_test.rb K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/4280/trunk/test/functional/gantts_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/gantts_controller_test.rb +END +issue_moves_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/4509/trunk/test/functional/issue_moves_controller_test.rb END users_controller_test.rb K 25 svn:wc:ra_dav:version-url V 65 -/svn/!svn/ver/4382/trunk/test/functional/users_controller_test.rb -END -issue_moves_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/4407/trunk/test/functional/issue_moves_controller_test.rb +/svn/!svn/ver/4729/trunk/test/functional/users_controller_test.rb END repositories_cvs_controller_test.rb K 25 svn:wc:ra_dav:version-url V 76 -/svn/!svn/ver/4289/trunk/test/functional/repositories_cvs_controller_test.rb +/svn/!svn/ver/4982/trunk/test/functional/repositories_cvs_controller_test.rb END application_controller_test.rb K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/2895/trunk/test/functional/application_controller_test.rb +/svn/!svn/ver/4571/trunk/test/functional/application_controller_test.rb END activities_controller_test.rb K 25 svn:wc:ra_dav:version-url V 70 -/svn/!svn/ver/4047/trunk/test/functional/activities_controller_test.rb -END -search_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/4407/trunk/test/functional/search_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/activities_controller_test.rb END ldap_auth_sources_controller.rb K 25 @@ -165,177 +159,183 @@ V 72 /svn/!svn/ver/3744/trunk/test/functional/ldap_auth_sources_controller.rb END +search_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/4509/trunk/test/functional/search_controller_test.rb +END messages_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/4407/trunk/test/functional/messages_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/messages_controller_test.rb END repositories_bazaar_controller_test.rb K 25 svn:wc:ra_dav:version-url V 79 -/svn/!svn/ver/2887/trunk/test/functional/repositories_bazaar_controller_test.rb +/svn/!svn/ver/4982/trunk/test/functional/repositories_bazaar_controller_test.rb END attachments_controller_test.rb K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/4407/trunk/test/functional/attachments_controller_test.rb +/svn/!svn/ver/4604/trunk/test/functional/attachments_controller_test.rb END sys_controller_test.rb K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/3201/trunk/test/functional/sys_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/sys_controller_test.rb END groups_controller_test.rb K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/4407/trunk/test/functional/groups_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/groups_controller_test.rb END issues_controller_transaction_test.rb K 25 svn:wc:ra_dav:version-url V 78 -/svn/!svn/ver/3701/trunk/test/functional/issues_controller_transaction_test.rb +/svn/!svn/ver/4509/trunk/test/functional/issues_controller_transaction_test.rb END watchers_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/3170/trunk/test/functional/watchers_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/watchers_controller_test.rb END issue_statuses_controller_test.rb K 25 svn:wc:ra_dav:version-url V 74 -/svn/!svn/ver/3415/trunk/test/functional/issue_statuses_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/issue_statuses_controller_test.rb END repositories_controller_test.rb K 25 svn:wc:ra_dav:version-url V 72 -/svn/!svn/ver/4407/trunk/test/functional/repositories_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/repositories_controller_test.rb END projects_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/4407/trunk/test/functional/projects_controller_test.rb +/svn/!svn/ver/4647/trunk/test/functional/projects_controller_test.rb +END +members_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/4509/trunk/test/functional/members_controller_test.rb END repositories_git_controller_test.rb K 25 svn:wc:ra_dav:version-url V 76 -/svn/!svn/ver/4289/trunk/test/functional/repositories_git_controller_test.rb -END -members_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/3749/trunk/test/functional/members_controller_test.rb +/svn/!svn/ver/4734/trunk/test/functional/repositories_git_controller_test.rb END repositories_mercurial_controller_test.rb K 25 svn:wc:ra_dav:version-url V 82 -/svn/!svn/ver/2887/trunk/test/functional/repositories_mercurial_controller_test.rb +/svn/!svn/ver/4855/trunk/test/functional/repositories_mercurial_controller_test.rb END issue_categories_controller_test.rb K 25 svn:wc:ra_dav:version-url V 76 -/svn/!svn/ver/3687/trunk/test/functional/issue_categories_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/issue_categories_controller_test.rb END reports_controller_test.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/3396/trunk/test/functional/reports_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/reports_controller_test.rb END custom_fields_controller_test.rb K 25 svn:wc:ra_dav:version-url V 73 -/svn/!svn/ver/2895/trunk/test/functional/custom_fields_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/custom_fields_controller_test.rb END settings_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/4407/trunk/test/functional/settings_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/settings_controller_test.rb END timelog_controller_test.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/4250/trunk/test/functional/timelog_controller_test.rb +/svn/!svn/ver/4511/trunk/test/functional/timelog_controller_test.rb END documents_controller_test.rb K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/4407/trunk/test/functional/documents_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/documents_controller_test.rb END files_controller_test.rb K 25 svn:wc:ra_dav:version-url V 65 -/svn/!svn/ver/4407/trunk/test/functional/files_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/files_controller_test.rb END repositories_darcs_controller_test.rb K 25 svn:wc:ra_dav:version-url V 78 -/svn/!svn/ver/2887/trunk/test/functional/repositories_darcs_controller_test.rb +/svn/!svn/ver/4982/trunk/test/functional/repositories_darcs_controller_test.rb END wiki_controller_test.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4375/trunk/test/functional/wiki_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/wiki_controller_test.rb +END +previews_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4509/trunk/test/functional/previews_controller_test.rb END auth_sources_controller_test.rb K 25 svn:wc:ra_dav:version-url V 72 -/svn/!svn/ver/3913/trunk/test/functional/auth_sources_controller_test.rb -END -previews_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/4174/trunk/test/functional/previews_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/auth_sources_controller_test.rb END repositories_subversion_controller_test.rb K 25 svn:wc:ra_dav:version-url V 83 -/svn/!svn/ver/4289/trunk/test/functional/repositories_subversion_controller_test.rb +/svn/!svn/ver/4896/trunk/test/functional/repositories_subversion_controller_test.rb END issue_relations_controller_test.rb K 25 svn:wc:ra_dav:version-url V 75 -/svn/!svn/ver/3687/trunk/test/functional/issue_relations_controller_test.rb +/svn/!svn/ver/4764/trunk/test/functional/issue_relations_controller_test.rb END versions_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 -/svn/!svn/ver/4354/trunk/test/functional/versions_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/versions_controller_test.rb END enumerations_controller_test.rb K 25 svn:wc:ra_dav:version-url V 72 -/svn/!svn/ver/2887/trunk/test/functional/enumerations_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/enumerations_controller_test.rb END boards_controller_test.rb K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/3687/trunk/test/functional/boards_controller_test.rb +/svn/!svn/ver/4509/trunk/test/functional/boards_controller_test.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/entries --- a/test/functional/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/functional http://redmine.rubyforge.org/svn -2010-11-17T18:27:38.712585Z -4411 -jplang +2011-03-01T10:27:30.170724Z +4982 +tmaruyama @@ -32,10 +32,10 @@ -2010-11-19T13:04:41.460658Z -63b42848e4b9c141f6081fb9b5187e91 -2010-11-17T18:27:38.712585Z -4411 +2011-03-03T11:05:08.000000Z +1831ada3aea1c4ecb568cb55a718eec9 +2010-12-18T13:40:50.641112Z +4530 jplang has-props @@ -58,7 +58,7 @@ -46917 +47451 news_controller_test.rb file @@ -66,11 +66,11 @@ -2010-11-19T13:04:41.460658Z -0673b926675d6ac108f0af70a8f609f4 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +b42af2a4997da321fbe322b3d4ef47da +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -92,7 +92,7 @@ -3948 +3953 queries_controller_test.rb file @@ -100,11 +100,11 @@ -2010-09-23T14:37:45.419982Z -2f589d132099d0c2c64ff100dee38e77 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +60c22807824b3989da92a03d4be0a1e6 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -126,7 +126,7 @@ -10563 +10568 trackers_controller_test.rb file @@ -134,11 +134,11 @@ -2010-09-23T14:37:45.423771Z -4086611a8939740adbcbf1ec5fe907e9 -2010-02-15T16:41:27.289923Z -3437 -edavis10 +2011-03-03T11:05:08.000000Z +f7c1328f2c586830c64233c2db054f0a +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -160,7 +160,7 @@ -4205 +4210 mail_handler_controller_test.rb file @@ -168,11 +168,11 @@ -2010-09-23T14:37:45.387766Z -c48a1796b2dc76ac1fa2eb64d663ceb3 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +e6efbfdb394b5a3d4c8f5430c202a5b0 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -194,7 +194,7 @@ -2033 +2038 auto_completes_controller_test.rb file @@ -202,33 +202,33 @@ -2010-09-23T14:37:45.383766Z -e41b4da40ff4371adb4245f59610b1f5 -2010-08-17T15:03:58.074505Z -3945 -edavis10 - - - - - - - - - - - - - - - - - - - - - -628 +2011-03-03T11:05:08.000000Z +145c16cdb388cc98a1223c6f6dd6fb17 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +1218 roles_controller_test.rb file @@ -236,11 +236,11 @@ -2010-11-19T13:04:41.460658Z -7258b2945e07b02349515daea0f85ce7 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +69809abf0a26741f5ca07db44aa223c0 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -262,7 +262,7 @@ -6089 +6094 my_controller_test.rb file @@ -270,11 +270,11 @@ -2010-11-19T13:04:41.464645Z -cbb9551bd925ce88a319d20ca2b127ab -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +cc837387e8b85884334a89e8bf935118 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -296,7 +296,7 @@ -6207 +6250 comments_controller_test.rb file @@ -304,33 +304,33 @@ -2010-11-19T13:04:41.464645Z -8a36a09743e192b6be46bb008ac7297e -2010-11-14T16:45:32.457767Z -4407 -jplang - - - - - - - - - - - - - - - - - - - - - -2030 +2011-03-03T11:05:08.000000Z +b68039337f934e7e49f4a06cda5e2b12 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +2035 wikis_controller_test.rb file @@ -338,11 +338,11 @@ -2010-09-23T14:37:45.427769Z -1ef7d2c3fc8722945322a7d5bb1cbcf4 -2010-04-21T16:02:55.125733Z -3687 -edavis10 +2011-03-03T11:05:08.000000Z +0798c1198c6db7754d04c79144c449c0 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -364,7 +364,7 @@ -2000 +2005 admin_controller_test.rb file @@ -372,11 +372,11 @@ -2010-09-23T14:37:45.383766Z -3615890cd8778917fbde968473a229bc -2010-06-20T16:08:20.636341Z -3799 -edavis10 +2011-03-03T11:05:08.000000Z +744fc8a1d2a4cdf6e8aa3ad0caa0fe4a +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -398,7 +398,41 @@ -4081 +4086 + +context_menus_controller_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +d3363951aa9a6c2a59c32d83d2483226 +2011-01-09T21:01:40.583303Z +4673 +jplang + + + + + + + + + + + + + + + + + + + + + +6411 welcome_controller_test.rb file @@ -406,10 +440,10 @@ -2010-09-23T14:37:45.427769Z -eeaeea8886e01297d20b839352a22fe2 -2010-04-30T18:08:40.324496Z -3719 +2011-03-03T11:40:17.000000Z +99cada623881a6be69cdf13119cc1de7 +2011-02-21T09:53:29.844413Z +4900 jplang has-props @@ -432,41 +466,7 @@ -2374 - -context_menus_controller_test.rb -file - - - - -2010-11-19T13:04:41.464645Z -96877cbbea85ba3fd99502907477340f -2010-10-08T03:09:51.863032Z -4242 -jbbarth - - - - - - - - - - - - - - - - - - - - - -6032 +3015 account_controller_test.rb file @@ -474,11 +474,11 @@ -2010-11-19T13:04:41.464645Z -a907569b5ac8764a0d6db597aa736851 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +f6ad0bbad8d30d8ea41eb0b7ecaf32b6 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -500,7 +500,7 @@ -7335 +7340 calendars_controller_test.rb file @@ -508,33 +508,101 @@ -2010-11-19T13:04:41.464645Z -ff8293f6d80647d3d03c66072bde5c98 -2010-10-10T21:17:10.784165Z -4245 -edavis10 - - - - - - - - - - - - - - - - - - - - - -2385 +2011-03-03T11:05:08.000000Z +a7eb2ff041caaed4c7c09ad8f9fe3719 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +2390 + +journals_controller_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +aa7254e0715b3701554945deb5d98998 +2011-02-27T13:34:41.060565Z +4954 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3099 + +time_entry_reports_controller_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +e21197e1c3590e65b300103bf8e16efe +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +5424 workflows_controller_test.rb file @@ -542,10 +610,10 @@ -2010-09-23T14:37:45.427769Z -be835c79372fac52c849870791d982ff -2009-12-18T15:41:32.828284Z -3188 +2011-03-03T11:40:17.000000Z +843e1eb3b5d05f3cb16580fe88d1baf5 +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -568,75 +636,7 @@ -6668 - -journals_controller_test.rb -file - - - - -2010-09-23T14:37:45.387766Z -6b5c1ff2e3aceda0f29c829b1137f8a3 -2010-08-23T15:04:36.844654Z -4034 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -2642 - -time_entry_reports_controller_test.rb -file - - - - -2010-11-19T13:04:41.464645Z -89c906bd5446b26ea9463b90cebaa807 -2010-10-05T16:07:17.015270Z -4232 -edavis10 - - - - - - - - - - - - - - - - - - - - - -5419 +7860 project_enumerations_controller_test.rb file @@ -644,10 +644,10 @@ -2010-11-19T13:04:41.464645Z -37775addcfb51a3ce3d8cddc3b1e907a -2010-11-14T16:45:32.457767Z -4407 +2011-03-03T11:05:08.000000Z +11b0d808c1b8f003db130d54022dbab0 +2010-12-31T15:45:35.200558Z +4600 jplang @@ -670,7 +670,7 @@ -9534 +9545 gantts_controller_test.rb file @@ -678,33 +678,33 @@ -2010-11-19T13:04:41.464645Z -3037031df4af4a9e2e77bd75083a4bcc -2010-10-22T22:13:39.617506Z -4280 -jplang - - - - - - - - - - - - - - - - - - - - - -2272 +2011-03-03T11:05:08.000000Z +b1aac6fc8fdaa84c3e3652849721bfa5 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +2663 issue_moves_controller_test.rb file @@ -712,33 +712,33 @@ -2010-11-19T13:04:41.464645Z -79f29b51a76072a1272e3ec50bec0e0f -2010-11-14T16:45:32.457767Z -4407 -jplang - - - - - - - - - - - - - - - - - - - - - -5098 +2011-03-03T11:05:08.000000Z +539d0852190ec556b2284bfe678e8523 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +5131 users_controller_test.rb file @@ -746,10 +746,10 @@ -2010-11-19T13:04:41.464645Z -79742c00eadbe609d9abb6317856022f -2010-11-07T14:15:01.891476Z -4382 +2011-03-03T11:05:08.000000Z +067fe08ee66949066dd0db8fa2741f5e +2011-01-16T15:23:11.666065Z +4729 jplang has-props @@ -772,7 +772,7 @@ -7363 +9068 repositories_cvs_controller_test.rb file @@ -780,11 +780,11 @@ -2010-11-19T13:04:41.468647Z -e01a04614a9b23c31bb216e61c81759d -2010-10-25T15:42:41.795656Z -4289 -edavis10 +2011-03-03T11:40:17.000000Z +1802113ecf354a24583d7c5a8db750b6 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -806,7 +806,7 @@ -6562 +8336 application_controller_test.rb file @@ -814,10 +814,10 @@ -2010-09-23T14:37:45.383766Z -3efeaca5179a579dcbdd89cab5f48e3f -2009-09-20T14:06:57.257282Z -2895 +2011-03-03T11:05:08.000000Z +278a104110d269c64def6c487219db07 +2010-12-23T13:33:01.454946Z +4571 jplang has-props @@ -840,7 +840,7 @@ -1656 +3502 activities_controller_test.rb file @@ -848,67 +848,33 @@ -2010-09-24T12:48:25.875739Z -48dce7788c0aa338add086c8cfd15618 -2010-08-27T14:05:54.014502Z -4047 -edavis10 - - - - - - - - - - - - - - - - - - - - - -2695 - -search_controller_test.rb -file - - - - -2010-11-19T13:04:41.468647Z -2e14f0628773a6ad6b3b59b3429d187d -2010-11-14T16:45:32.457767Z -4407 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4675 +2011-03-03T11:05:08.000000Z +10667cf5e4dc66eea96b196643c93a42 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +2700 ldap_auth_sources_controller.rb file @@ -916,7 +882,7 @@ -2010-09-23T14:37:45.387766Z +2011-03-03T11:05:08.000000Z d6759c42ae866d7210c7006911e82a42 2010-05-23T03:16:31.304135Z 3744 @@ -944,17 +910,51 @@ 491 +search_controller_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +ce03a18446664d9bc073791097735811 +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +4680 + messages_controller_test.rb file -2010-11-19T13:04:41.468647Z -4514c9f19bf7270410fbf05098128346 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +887437d272f8b8eba93dbf8bd5645868 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -976,7 +976,7 @@ -5042 +5047 repositories_bazaar_controller_test.rb file @@ -984,11 +984,11 @@ -2010-09-23T14:37:45.419982Z -0c80080549f9968528fce0326c4586e5 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:40:17.000000Z +138b8dc8d1e30b2a8f5eda76b0f905b6 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -1010,7 +1010,7 @@ -5054 +5177 attachments_controller_test.rb file @@ -1018,10 +1018,10 @@ -2010-11-19T13:04:41.468647Z -06a5a66df669f08e5f357931edb12db1 -2010-11-14T16:45:32.457767Z -4407 +2011-03-03T11:05:08.000000Z +00941bda584b7f5b7b636e48635d83dd +2011-01-01T13:40:36.520874Z +4604 jplang has-props @@ -1044,7 +1044,7 @@ -4245 +5027 sys_controller_test.rb file @@ -1052,11 +1052,11 @@ -2010-09-23T14:37:45.423771Z -c8d71d4092b4fd39bfada4e8c8ddb99d -2009-12-20T09:44:28.044710Z -3201 -jplang +2011-03-03T11:05:08.000000Z +893a5cfefe3652680d241de9a657652c +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1078,7 +1078,7 @@ -2971 +2976 groups_controller_test.rb file @@ -1086,11 +1086,11 @@ -2010-11-19T13:04:41.468647Z -708f3fdb0cee16797fdd197cc5de756e -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +39db66894beef1baa1696d6aee75f45d +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1112,7 +1112,7 @@ -3017 +3022 issues_controller_transaction_test.rb file @@ -1120,11 +1120,11 @@ -2010-09-23T14:37:45.387766Z -672253b026d9eb645162edff0625071d -2010-04-30T10:06:51.078244Z -3701 -jplang +2011-03-03T11:05:08.000000Z +c8fa245738b58d9f87afc40fc1b71f94 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1146,7 +1146,7 @@ -2819 +2824 watchers_controller_test.rb file @@ -1154,11 +1154,11 @@ -2010-09-23T14:37:45.423771Z -8dfee17a862ab3d8ec007dca2a6dbbe6 -2009-12-13T14:48:28.692743Z -3170 -jplang +2011-03-03T11:05:08.000000Z +d50a042e5cc7e5d43cbb9be02b82aaf6 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1180,7 +1180,7 @@ -4027 +4032 issue_statuses_controller_test.rb file @@ -1188,11 +1188,11 @@ -2010-09-23T14:37:45.387766Z -3cc86236a5979749a87f4459a6dcd435 -2010-02-12T19:15:33.815978Z -3415 -edavis10 +2011-03-03T11:05:08.000000Z +3ed28603b2a3697d060e06d90dd7b118 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1214,7 +1214,7 @@ -2551 +2556 repositories_controller_test.rb file @@ -1222,11 +1222,11 @@ -2010-11-19T13:04:41.468647Z -8e3650db9518fe44471fc80fbb6dbd21 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +f5552cd43c853f04daaadb5d6c7bf159 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1248,7 +1248,7 @@ -4570 +4575 projects_controller_test.rb file @@ -1256,10 +1256,10 @@ -2010-11-19T13:04:41.468647Z -c4b243a5a18c509cc65794be84ffd752 -2010-11-14T16:45:32.457767Z -4407 +2011-03-03T11:05:08.000000Z +dbbc4feeecbff202aa7569d4a17beaa1 +2011-01-06T20:57:17.003359Z +4647 jplang has-props @@ -1282,7 +1282,7 @@ -15977 +17590 members_controller_test.rb file @@ -1290,11 +1290,11 @@ -2010-09-23T14:37:45.387766Z -6a53b76f859d219bcf1289e818aec610 -2010-05-24T20:21:16.271499Z -3749 -edavis10 +2011-03-03T11:05:08.000000Z +7cdb2ab302fb93f982b33fb6460d48c3 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1316,7 +1316,7 @@ -3796 +3801 repositories_git_controller_test.rb file @@ -1324,11 +1324,11 @@ -2010-11-19T13:04:41.472627Z -f64a33705a8376f5a398502f116c0db4 -2010-10-25T15:42:41.795656Z -4289 -edavis10 +2011-03-03T11:05:08.000000Z +0852f4a59ed3301126f2b2a95fee40ef +2011-01-21T13:22:28.782688Z +4734 +tmaruyama has-props @@ -1350,7 +1350,7 @@ -6689 +8148 repositories_mercurial_controller_test.rb file @@ -1358,11 +1358,11 @@ -2010-09-23T14:37:45.423771Z -59ebfd6923ea8a7275a668f8168c9b3b -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:40:17.000000Z +c737d31340fe167746054c6975d86b18 +2011-02-16T11:18:18.909794Z +4855 +tmaruyama has-props @@ -1384,7 +1384,7 @@ -5113 +7919 issue_categories_controller_test.rb file @@ -1392,11 +1392,11 @@ -2010-09-23T14:37:45.383766Z -911b8361d2bf4ca21e1bc8270c957d17 -2010-04-21T16:02:55.125733Z -3687 -edavis10 +2011-03-03T11:05:08.000000Z +eff59ff8c4c616a1773223454b960363 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1418,7 +1418,7 @@ -3497 +3502 reports_controller_test.rb file @@ -1426,11 +1426,11 @@ -2010-09-23T14:37:45.419982Z -3ae997d09c86108692ceb438576171d7 -2010-02-08T17:53:58.327631Z -3396 -edavis10 +2011-03-03T11:05:08.000000Z +d91b8b56b5bd1fd602e96842dfabab72 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1452,7 +1452,7 @@ -2537 +2542 custom_fields_controller_test.rb file @@ -1460,11 +1460,11 @@ -2010-09-23T14:37:45.383766Z -663e111e99486095033d1f3d635cf2c8 -2009-09-20T14:06:57.257282Z -2895 -jplang +2011-03-03T11:05:08.000000Z +df6f548bb7fbdaeb235c5e8d3c1be576 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1486,7 +1486,7 @@ -2565 +2570 settings_controller_test.rb file @@ -1494,11 +1494,11 @@ -2010-11-19T13:04:41.472627Z -cc2bc5f554f121c21ba82c60216f01d5 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +f3101a3b1343baa274ce471911aa0e96 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1520,7 +1520,7 @@ -2122 +2127 timelog_controller_test.rb file @@ -1528,11 +1528,11 @@ -2010-11-19T13:04:41.472627Z -be5f7d864581bed744c8991964a97ae6 -2010-10-12T15:55:21.984670Z -4250 -edavis10 +2011-03-03T11:05:08.000000Z +00f79a248e4bf77814823526e38ee630 +2010-12-14T18:29:24.891563Z +4511 +jplang has-props @@ -1554,7 +1554,7 @@ -8487 +9325 documents_controller_test.rb file @@ -1562,11 +1562,11 @@ -2010-11-19T13:04:41.472627Z -e92d7b72633aaca649a4df81ea39305a -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +8c664ac03cac7930264318af932f46e0 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1588,7 +1588,7 @@ -4672 +4677 files_controller_test.rb file @@ -1596,33 +1596,33 @@ -2010-11-19T13:04:41.472627Z -1682b4116f36633c8816d1dff0d49cb5 -2010-11-14T16:45:32.457767Z -4407 -jplang - - - - - - - - - - - - - - - - - - - - - -2308 +2011-03-03T11:05:08.000000Z +190cbeea6f926cc615d6d2918a50e909 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +2313 repositories_darcs_controller_test.rb file @@ -1630,11 +1630,11 @@ -2010-09-23T14:37:45.423771Z -8c2b79df7a048945eb57f12ca4e804aa -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:40:17.000000Z +a05a557c98b400ffe59662be78e31270 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -1656,7 +1656,7 @@ -3839 +4268 wiki_controller_test.rb file @@ -1664,11 +1664,11 @@ -2010-11-19T13:04:41.472627Z -35fe09d5b7c9ad179df6c1aa5d09e25d -2010-11-06T14:30:32.528294Z -4375 -jplang +2011-03-03T11:05:08.000000Z +33e64585bc7591ba6089135bbadb817e +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1690,7 +1690,41 @@ -16321 +17903 + +previews_controller_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +c262b8203846b82045458a273da221fc +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +1106 auth_sources_controller_test.rb file @@ -1698,67 +1732,33 @@ -2010-09-23T14:37:45.383766Z -e649d3fb9fe2388f5e0c464529b2e42e -2010-08-04T15:04:30.993800Z -3913 -edavis10 - - - - - - - - - - - - - - - - - - - - - -1956 - -previews_controller_test.rb -file - - - - -2010-11-19T13:04:41.472627Z -055c4c3716d7eb1d123482c20d453a67 -2010-09-24T16:26:46.819682Z -4174 -edavis10 - - - - - - - - - - - - - - - - - - - - - -1101 +2011-03-03T11:05:08.000000Z +017010de8f7353d064e6b866e9dbb0c3 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +1961 repositories_subversion_controller_test.rb file @@ -1766,11 +1766,11 @@ -2010-11-19T13:04:41.472627Z -78fad597ea49ad0dfc7d71f2d33c381f -2010-10-25T15:42:41.795656Z -4289 -edavis10 +2011-03-03T11:40:17.000000Z +d6a450e274753a0903a76b51c16eae7b +2011-02-21T03:59:30.193463Z +4896 +tmaruyama has-props @@ -1792,7 +1792,7 @@ -8796 +11247 issue_relations_controller_test.rb file @@ -1800,11 +1800,11 @@ -2010-09-23T14:37:45.387766Z -fbfd116126fdb8c31552dbe76c070b5e -2010-04-21T16:02:55.125733Z -3687 -edavis10 +2011-03-03T11:05:08.000000Z +ac7b05267cda86408af77321975d9099 +2011-01-27T21:38:47.430923Z +4764 +jplang has-props @@ -1826,7 +1826,7 @@ -2160 +2998 versions_controller_test.rb file @@ -1834,11 +1834,11 @@ -2010-11-19T13:04:41.476627Z -dcafef0668ab2fa1356e11ec2651965e -2010-11-01T13:13:32.982466Z -4354 -jplang +2011-03-03T11:05:08.000000Z +2e73f89630c087f8170f62f3f79079c0 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1860,7 +1860,7 @@ -5338 +5343 enumerations_controller_test.rb file @@ -1868,11 +1868,11 @@ -2010-09-23T14:37:45.383766Z -a977083603a7f66240b9b9f93087bb13 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +4194cdc2f733e6e1a38bedb7a6af05c8 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1894,7 +1894,7 @@ -2170 +2175 boards_controller_test.rb file @@ -1902,11 +1902,11 @@ -2010-09-23T14:37:45.383766Z -5a2d553a517d649e9848805cb18abb4a -2010-04-21T16:02:55.125733Z -3687 -edavis10 +2011-03-03T11:05:08.000000Z +770100e7a7049e202c8a1ea476659a30 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1928,5 +1928,5 @@ -3257 +3262 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/account_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/account_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/account_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'account_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/activities_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/activities_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/activities_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ActivitiesControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/admin_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/admin_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/admin_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'admin_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/application_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/application_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/application_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'application_controller' # Re-raise errors caught by the controller. @@ -43,4 +43,61 @@ def test_call_hook_mixed_in assert @controller.respond_to?(:call_hook) end + + context "test_api_offset_and_limit" do + context "without params" do + should "return 0, 25" do + assert_equal [0, 25], @controller.api_offset_and_limit({}) + end + end + + context "with limit" do + should "return 0, limit" do + assert_equal [0, 30], @controller.api_offset_and_limit({:limit => 30}) + end + + should "not exceed 100" do + assert_equal [0, 100], @controller.api_offset_and_limit({:limit => 120}) + end + + should "not be negative" do + assert_equal [0, 25], @controller.api_offset_and_limit({:limit => -10}) + end + end + + context "with offset" do + should "return offset, 25" do + assert_equal [10, 25], @controller.api_offset_and_limit({:offset => 10}) + end + + should "not be negative" do + assert_equal [0, 25], @controller.api_offset_and_limit({:offset => -10}) + end + + context "and limit" do + should "return offset, limit" do + assert_equal [10, 50], @controller.api_offset_and_limit({:offset => 10, :limit => 50}) + end + end + end + + context "with page" do + should "return offset, 25" do + assert_equal [0, 25], @controller.api_offset_and_limit({:page => 1}) + assert_equal [50, 25], @controller.api_offset_and_limit({:page => 3}) + end + + should "not be negative" do + assert_equal [0, 25], @controller.api_offset_and_limit({:page => 0}) + assert_equal [0, 25], @controller.api_offset_and_limit({:page => -2}) + end + + context "and limit" do + should "return offset, limit" do + assert_equal [0, 100], @controller.api_offset_and_limit({:page => 1, :limit => 100}) + assert_equal [200, 100], @controller.api_offset_and_limit({:page => 3, :limit => 100}) + end + end + end + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/attachments_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/attachments_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/attachments_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,7 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# encoding: utf-8 +# +# 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 @@ -15,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'attachments_controller' # Re-raise errors caught by the controller. @@ -35,10 +37,31 @@ end def test_show_diff - get :show, :id => 5 + get :show, :id => 14 # 060719210727_changeset_utf8.diff assert_response :success assert_template 'diff' assert_equal 'text/html', @response.content_type + + assert_tag 'th', + :attributes => {:class => /filename/}, + :content => /issues_controller.rb\t\(révision 1484\)/ + assert_tag 'td', + :attributes => {:class => /line-code/}, + :content => /Demande créée avec succès/ + end + + def test_show_diff_should_strip_non_utf8_content + get :show, :id => 5 # 060719210727_changeset_iso8859-1.diff + assert_response :success + assert_template 'diff' + assert_equal 'text/html', @response.content_type + + assert_tag 'th', + :attributes => {:class => /filename/}, + :content => /issues_controller.rb\t\(rvision 1484\)/ + assert_tag 'td', + :attributes => {:class => /line-code/}, + :content => /Demande cre avec succs/ end def test_show_text_file diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/auth_sources_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/auth_sources_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/auth_sources_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AuthSourcesControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/auto_completes_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/auto_completes_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/auto_completes_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AutoCompletesControllerTest < ActionController::TestCase fixtures :all @@ -17,4 +17,18 @@ assert assigns(:issues).include?(Issue.find(13)) end + def test_auto_complete_with_scope_all_and_cross_project_relations + Setting.cross_project_issue_relations = '1' + get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all' + assert_response :success + assert_not_nil assigns(:issues) + assert assigns(:issues).include?(Issue.find(13)) + end + + def test_auto_complete_with_scope_all_without_cross_project_relations + Setting.cross_project_issue_relations = '0' + get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all' + assert_response :success + assert_equal [], assigns(:issues) + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/boards_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/boards_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/boards_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'boards_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/calendars_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/calendars_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/calendars_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CalendarsControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/comments_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/comments_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/comments_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CommentsControllerTest < ActionController::TestCase fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news, :comments diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/context_menus_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/context_menus_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/context_menus_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ContextMenusControllerTest < ActionController::TestCase fixtures :all @@ -56,26 +56,30 @@ get :issues, :ids => [1, 2] assert_response :success assert_template 'context_menu' + assert_not_nil assigns(:issues) + assert_equal [1, 2], assigns(:issues).map(&:id).sort + + ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&') assert_tag :tag => 'a', :content => 'Edit', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/bulk_edit?#{ids}", :class => 'icon-edit' } assert_tag :tag => 'a', :content => 'Closed', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bstatus_id%5D=5', + :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bstatus_id%5D=5", :class => '' } assert_tag :tag => 'a', :content => 'Immediate', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bpriority_id%5D=8', + :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bpriority_id%5D=8", :class => '' } assert_tag :tag => 'a', :content => 'Dave Lopper', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bassigned_to_id%5D=3', + :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bassigned_to_id%5D=3", :class => '' } assert_tag :tag => 'a', :content => 'Copy', - :attributes => { :href => '/issues/move/new?copy_options%5Bcopy%5D=t&ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/move/new?copy_options%5Bcopy%5D=t&#{ids}", :class => 'icon-copy' } assert_tag :tag => 'a', :content => 'Move', - :attributes => { :href => '/issues/move/new?ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/move/new?#{ids}", :class => 'icon-move' } assert_tag :tag => 'a', :content => 'Delete', - :attributes => { :href => '/issues/destroy?ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/destroy?#{ids}", :class => 'icon-del' } end @@ -84,7 +88,10 @@ get :issues, :ids => [1, 2, 6] assert_response :success assert_template 'context_menu' - ids = "ids%5B%5D=1&ids%5B%5D=2&ids%5B%5D=6" + assert_not_nil assigns(:issues) + assert_equal [1, 2, 6], assigns(:issues).map(&:id).sort + + ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&') assert_tag :tag => 'a', :content => 'Edit', :attributes => { :href => "/issues/bulk_edit?#{ids}", :class => 'icon-edit' } @@ -102,4 +109,10 @@ :class => 'icon-del' } end + def test_context_menu_issue_visibility + get :issues, :ids => [1, 4] + assert_response :success + assert_template 'context_menu' + assert_equal [1], assigns(:issues).collect(&:id) + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/custom_fields_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/custom_fields_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/custom_fields_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'custom_fields_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/documents_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/documents_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/documents_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'documents_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/enumerations_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/enumerations_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/enumerations_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'enumerations_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/files_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/files_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/files_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class FilesControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/gantts_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/gantts_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/gantts_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class GanttsControllerTest < ActionController::TestCase fixtures :all @@ -49,6 +49,18 @@ assert_nil assigns(:gantt).project end + should "not disclose private projects" do + get :show + assert_response :success + assert_template 'show.html.erb' + + assert_tag 'a', :content => /eCookbook/ + # Root private project + assert_no_tag 'a', {:content => /OnlineStore/} + # Private children of a public project + assert_no_tag 'a', :content => /Private child of eCookbook/ + end + should "export to pdf" do get :show, :project_id => 1, :format => 'pdf' assert_response :success diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/groups_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/groups_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/groups_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'groups_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/issue_categories_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/issue_categories_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/issue_categories_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issue_categories_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/issue_moves_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/issue_moves_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/issue_moves_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssueMovesControllerTest < ActionController::TestCase fixtures :all @@ -58,8 +58,8 @@ post :create, :ids => [1, 2], :notes => 'Moving two issues' assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook' - assert_equal 'Moving two issues', Issue.find(1).journals.last.notes - assert_equal 'Moving two issues', Issue.find(2).journals.last.notes + assert_equal 'Moving two issues', Issue.find(1).journals.sort_by(&:id).last.notes + assert_equal 'Moving two issues', Issue.find(2).journals.sort_by(&:id).last.notes end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/issue_relations_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/issue_relations_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/issue_relations_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issue_relations_controller' # Re-raise errors caught by the controller. @@ -33,6 +33,19 @@ end end + def test_new_xhr + assert_difference 'IssueRelation.count' do + @request.session[:user_id] = 3 + xhr :post, :new, + :issue_id => 3, + :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 2 # relations + end + end + end + def test_new_should_accept_id_with_hash assert_difference 'IssueRelation.count' do @request.session[:user_id] = 3 @@ -68,4 +81,20 @@ post :destroy, :id => '2', :issue_id => '3' end end + + def test_destroy_xhr + IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r| + r.issue_from_id = 3 + r.issue_to_id = 1 + end + + assert_difference 'IssueRelation.count', -1 do + @request.session[:user_id] = 3 + xhr :post, :destroy, :id => '2', :issue_id => '3' + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 1 # relation left + end + end + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/issue_statuses_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/issue_statuses_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/issue_statuses_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issue_statuses_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/issues_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/issues_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/issues_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issues_controller' # Re-raise errors caught by the controller. @@ -281,6 +281,9 @@ get :show, :id => 1 assert_response :success + assert_tag :tag => 'a', + :content => /Quote/ + assert_tag :tag => 'form', :descendant => { :tag => 'fieldset', :child => { :tag => 'legend', @@ -525,6 +528,20 @@ assert_not_nil issue assert_equal Issue.find(2), issue.parent end + + def test_post_create_subissue_with_non_numeric_parent_id + @request.session[:user_id] = 2 + + assert_difference 'Issue.count' do + post :create, :project_id => 1, + :issue => {:tracker_id => 1, + :subject => 'This is a child issue', + :parent_issue_id => 'ABC'} + end + issue = Issue.find_by_subject('This is a child issue') + assert_not_nil issue + assert_nil issue.parent + end def test_post_create_should_send_a_notification ActionMailer::Base.deliveries.clear diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/issues_controller_transaction_test.rb.svn-base --- a/test/functional/.svn/text-base/issues_controller_transaction_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/issues_controller_transaction_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issues_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/journals_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/journals_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/journals_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'journals_controller' # Re-raise errors caught by the controller. @@ -38,16 +38,35 @@ assert_equal 'application/atom+xml', @response.content_type end + def test_diff + get :diff, :id => 3, :detail_id => 4 + assert_response :success + assert_template 'diff' + + assert_tag 'span', + :attributes => {:class => 'diff_out'}, + :content => /removed/ + assert_tag 'span', + :attributes => {:class => 'diff_in'}, + :content => /added/ + end + def test_reply_to_issue @request.session[:user_id] = 2 - get :new, :id => 1 + get :new, :id => 6 assert_response :success assert_select_rjs :show, "update" end + + def test_reply_to_issue_without_permission + @request.session[:user_id] = 7 + get :new, :id => 6 + assert_response 403 + end def test_reply_to_note @request.session[:user_id] = 2 - get :new, :id => 1, :journal_id => 2 + get :new, :id => 6, :journal_id => 4 assert_response :success assert_select_rjs :show, "update" end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/mail_handler_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/mail_handler_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/mail_handler_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'mail_handler_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/members_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/members_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/members_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'members_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/messages_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/messages_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/messages_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'messages_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/my_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/my_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/my_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'my_controller' # Re-raise errors caught by the controller. @@ -64,17 +64,24 @@ end def test_update_account - post :account, :user => {:firstname => "Joe", - :login => "root", - :admin => 1, - :custom_field_values => {"4" => "0100562500"}} + post :account, + :user => { + :firstname => "Joe", + :login => "root", + :admin => 1, + :group_ids => ['10'], + :custom_field_values => {"4" => "0100562500"} + } + assert_redirected_to '/my/account' user = User.find(2) assert_equal user, assigns(:user) assert_equal "Joe", user.firstname assert_equal "jsmith", user.login assert_equal "0100562500", user.custom_value_for(4).value + # ignored assert !user.admin? + assert user.groups.empty? end def test_change_password diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/news_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/news_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/news_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'news_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/previews_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/previews_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/previews_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class PreviewsControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/project_enumerations_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/project_enumerations_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/project_enumerations_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ProjectEnumerationsControllerTest < ActionController::TestCase fixtures :all @@ -175,7 +175,7 @@ }) assert project_activity.save assert TimeEntry.update_all("activity_id = '#{project_activity.id}'", ["project_id = ? AND activity_id = ?", 1, 9]) - assert 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size + assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size delete :destroy, :project_id => 1 assert_response :redirect diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/projects_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/projects_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/projects_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'projects_controller' # Re-raise errors caught by the controller. @@ -144,19 +144,32 @@ end should "create a new project" do - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' } - } + post :create, + :project => { + :name => "blog", + :description => "weblog", + :homepage => 'http://weblog', + :identifier => "blog", + :is_public => 1, + :custom_field_values => { '3' => 'Beta' }, + :tracker_ids => ['1', '3'], + # an issue custom field that is not for all project + :issue_custom_field_ids => ['9'], + :enabled_module_names => ['issue_tracking', 'news', 'repository'] + } assert_redirected_to '/projects/blog/settings' project = Project.find_by_name('blog') assert_kind_of Project, project + assert project.active? assert_equal 'weblog', project.description + assert_equal 'http://weblog', project.homepage assert_equal true, project.is_public? assert_nil project.parent + assert_equal 'Beta', project.custom_value_for(3).value + assert_equal [1, 3], project.trackers.map(&:id).sort + assert_equal ['issue_tracking', 'news', 'repository'], project.enabled_module_names.sort + assert project.issue_custom_fields.include?(IssueCustomField.find(9)) end should "create a new subproject" do @@ -186,7 +199,9 @@ :description => "weblog", :identifier => "blog", :is_public => 1, - :custom_field_values => { '3' => 'Beta' } + :custom_field_values => { '3' => 'Beta' }, + :tracker_ids => ['1', '3'], + :enabled_module_names => ['issue_tracking', 'news', 'repository'] } assert_redirected_to '/projects/blog/settings' @@ -195,6 +210,8 @@ assert_kind_of Project, project assert_equal 'weblog', project.description assert_equal true, project.is_public? + assert_equal [1, 3], project.trackers.map(&:id).sort + assert_equal ['issue_tracking', 'news', 'repository'], project.enabled_module_names.sort # User should be added as a project member assert User.find(9).member_of?(project) @@ -271,6 +288,12 @@ end end + def test_create_should_not_accept_get + @request.session[:user_id] = 1 + get :create + assert_response :method_not_allowed + end + def test_show_by_id get :show, :id => 1 assert_response :success @@ -348,6 +371,21 @@ project = Project.find(1) assert_equal 'Test changed name', project.name end + + def test_modules + @request.session[:user_id] = 2 + Project.find(1).enabled_module_names = ['issue_tracking', 'news'] + + post :modules, :id => 1, :enabled_module_names => ['issue_tracking', 'repository', 'documents'] + assert_redirected_to '/projects/ecookbook/settings/modules' + assert_equal ['documents', 'issue_tracking', 'repository'], Project.find(1).enabled_module_names.sort + end + + def test_modules_should_not_allow_get + @request.session[:user_id] = 1 + get :modules, :id => 1 + assert_response :method_not_allowed + end def test_get_destroy @request.session[:user_id] = 1 # admin @@ -418,7 +456,7 @@ @request.session[:user_id] = 1 # admin post :copy, :id => 1, :project => {:name => 'Copy', :identifier => 'unique-copy'} assert_response :redirect - assert_redirected_to :controller => 'projects', :action => 'settings' + assert_redirected_to :controller => 'projects', :action => 'settings', :id => 'unique-copy' end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/queries_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/queries_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/queries_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'queries_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/reports_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/reports_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/reports_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'reports_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -32,9 +32,13 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Bazaar.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Bazaar.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -43,7 +47,7 @@ assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root get :show, :id => 3 assert_response :success @@ -53,7 +57,7 @@ assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'} end - + def test_browse_directory get :show, :id => 3, :path => ['directory'] assert_response :success diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/repositories_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,20 +15,22 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. class RepositoriesController; def rescue_action(e) raise e end; end class RepositoriesCvsControllerTest < ActionController::TestCase + fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository' REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? # CVS module MODULE_NAME = 'test' - + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @@ -36,14 +38,19 @@ Setting.default_language = 'en' User.current = nil - @project = Project.find(1) - @project.repository = Repository::Cvs.create(:root_url => REPOSITORY_PATH, - :url => MODULE_NAME) + @project = Project.find(PRJ_ID) + @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID), + :root_url => REPOSITORY_PATH, + :url => MODULE_NAME, + :log_encoding => 'UTF-8') + assert @repository end if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -51,7 +58,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -65,7 +74,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -77,8 +88,9 @@ end def test_browse_at_given_revision - Project.find(1).repository.fetch_changesets - get :show, :id => 1, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -86,7 +98,9 @@ end def test_entry - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'entry' assert_no_tag :tag => 'td', :attributes => { :class => /line-code/}, @@ -95,8 +109,9 @@ def test_entry_at_given_revision # changesets must be loaded - Project.find(1).repository.fetch_changesets - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 @@ -105,18 +120,24 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['sources', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' assert_response :success end def test_directory_entry - get :entry, :id => 1, :path => ['sources'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) @@ -124,8 +145,9 @@ end def test_diff - Project.find(1).repository.fetch_changesets - get :diff, :id => 1, :rev => 3, :type => 'inline' + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3, :type => 'inline' assert_response :success assert_template 'diff' assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' }, @@ -133,10 +155,29 @@ assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, :content => /watched.remove_all_watcher/ end + + def test_diff_new_files + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline' + assert_response :success + assert_template 'diff' + assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, + :content => /watched.remove_watcher/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/README/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/delete.png / + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/edit.png/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/sources\/watchers_controller.rb/ + end def test_annotate - Project.find(1).repository.fetch_changesets - get :annotate, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'annotate' # 1.1 line diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -26,26 +26,35 @@ # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' + PRJ_ID = 3 def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Darcs.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(PRJ_ID) + @repository = Repository::Darcs.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -54,9 +63,11 @@ assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} end - + def test_browse_directory - get :show, :id => 3, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -66,27 +77,31 @@ assert_equal 'file', entry.kind assert_equal 'images/edit.png', entry.path end - + def test_browse_at_given_revision - Project.find(3).repository.fetch_changesets - get :show, :id => 3, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_equal ['delete.png'], assigns(:entries).collect(&:name) end - + def test_changes - get :changes, :id => 3, :path => ['images', 'edit.png'] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['images', 'edit.png'] assert_response :success assert_template 'changes' assert_tag :tag => 'h2', :content => 'edit.png' end - + def test_diff - Project.find(3).repository.fetch_changesets + @repository.fetch_changesets + @repository.reload # Full diff of changeset 5 - get :diff, :id => 3, :rev => 5 + get :diff, :id => PRJ_ID, :rev => 5 assert_response :success assert_template 'diff' # Line 22 removed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/repositories_git_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_git_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_git_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -33,9 +33,10 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Git.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @repository = Repository::Git.create(:project => Project.find(3), :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -126,8 +127,11 @@ assert_not_nil assigns(:entry) assert_equal 'sources', assigns(:entry).name end - + def test_diff + @repository.fetch_changesets + @repository.reload + # Full diff of changeset 2f9c0091 get :diff, :id => 3, :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' assert_response :success @@ -138,6 +142,21 @@ :sibling => { :tag => 'td', :attributes => { :class => /diff_out/ }, :content => /def remove/ } + assert_tag :tag => 'h2', :content => /2f9c0091/ + end + + def test_diff_two_revs + @repository.fetch_changesets + @repository.reload + + get :diff, :id => 3, :rev => '61b685fbe55ab05b5ac68402d5720c1a6ac973d1', + :rev_to => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + assert_response :success + assert_template 'diff' + + diff = assigns(:diff) + assert_not_nil diff + assert_tag :tag => 'h2', :content => /2f9c0091:61b685fb/ end def test_annotate @@ -150,13 +169,42 @@ :sibling => { :tag => 'td', :content => /jsmith/ }, :sibling => { :tag => 'td', :content => /watcher =/ } end - + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => 3, :rev => 'deff7', :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ deff712f/ + end + def test_annotate_binary_file get :annotate, :id => 3, :path => ['images', 'edit.png'] assert_response 500 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /can not be annotated/ end + + def test_revision + @repository.fetch_changesets + @repository.reload + ['61b685fbe55ab05b5ac68402d5720c1a6ac973d1', '61b685f'].each do |r| + get :revision, :id => 3, :rev => r + assert_response :success + assert_template 'revision' + end + end + + def test_empty_revision + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + get :revision, :id => 3, :rev => r + assert_response 404 + assert_error_tag :content => /was not found/ + end + end else puts "Git test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -32,9 +32,11 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + assert @repository + @diff_c_support = true end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -43,18 +45,18 @@ assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_show_root get :show, :id => 3 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) - assert_equal 3, assigns(:entries).size - assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'} + assert_equal 4, assigns(:entries).size + assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'} - assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} + assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} end - + def test_show_directory get :show, :id => 3, :path => ['images'] assert_response :success @@ -66,15 +68,33 @@ assert_equal 'file', entry.kind assert_equal 'images/edit.png', entry.path end - + def test_show_at_given_revision - get :show, :id => 3, :path => ['images'], :rev => 0 - assert_response :success - assert_template 'show' - assert_not_nil assigns(:entries) - assert_equal ['delete.png'], assigns(:entries).collect(&:name) + [0, '0', '0885933ad4f6'].each do |r1| + get :show, :id => 3, :path => ['images'], :rev => r1 + assert_response :success + assert_template 'show' + assert_not_nil assigns(:entries) + assert_equal ['delete.png'], assigns(:entries).collect(&:name) + end end - + + def test_show_directory_sql_escape_percent + [13, '13', '3a330eb32958'].each do |r1| + get :show, :id => 3, :path => ['sql_escape', 'percent%dir'], :rev => r1 + assert_response :success + assert_template 'show' + + assert_not_nil assigns(:entries) + assert_equal ['percent%file1.txt', 'percentfile1.txt'], assigns(:entries).collect(&:name) + changesets = assigns(:changesets) + + ## This is not yet implemented. + # assert_not_nil changesets + # assert_equal %w(13 11 10 9), changesets.collect(&:revision) + end + end + def test_changes get :changes, :id => 3, :path => ['images', 'edit.png'] assert_response :success @@ -86,10 +106,10 @@ get :entry, :id => 3, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'entry' - # Line 19 + # Line 10 assert_tag :tag => 'th', - :content => /10/, - :attributes => { :class => /line-num/ }, + :content => '10', + :attributes => { :class => 'line-num' }, :sibling => { :tag => 'td', :content => /WITHOUT ANY WARRANTY/ } end @@ -109,28 +129,94 @@ end def test_diff - # Full diff of changeset 4 - get :diff, :id => 3, :rev => 4 - assert_response :success - assert_template 'diff' - # Line 22 removed - assert_tag :tag => 'th', - :content => /22/, - :sibling => { :tag => 'td', - :attributes => { :class => /diff_out/ }, - :content => /def remove/ } + @repository.fetch_changesets + @repository.reload + + [4, '4', 'def6d2f1254a'].each do |r1| + # Full diff of changeset 4 + get :diff, :id => 3, :rev => r1 + assert_response :success + assert_template 'diff' + + if @diff_c_support + # Line 22 removed + assert_tag :tag => 'th', + :content => '22', + :sibling => { :tag => 'td', + :attributes => { :class => /diff_out/ }, + :content => /def remove/ } + assert_tag :tag => 'h2', :content => /4:def6d2f1254a/ + end + end end - + + def test_diff_two_revs + @repository.fetch_changesets + @repository.reload + + [2, '400bb8672109', '400', 400].each do |r1| + [4, 'def6d2f1254a'].each do |r2| + get :diff, :id => 3, :rev => r1, + :rev_to => r2 + assert_response :success + assert_template 'diff' + + diff = assigns(:diff) + assert_not_nil diff + assert_tag :tag => 'h2', :content => /4:def6d2f1254a 2:400bb8672109/ + end + end + end + def test_annotate get :annotate, :id => 3, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'annotate' - # Line 23, revision 4 - assert_tag :tag => 'th', :content => /23/, - :sibling => { :tag => 'td', :child => { :tag => 'a', :content => /4/ } }, - :sibling => { :tag => 'td', :content => /jsmith/ }, + # Line 23, revision 4:def6d2f1254a + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, + :sibling => + { + :tag => 'td', + :attributes => { :class => 'revision' }, + :child => { :tag => 'a', :content => '4:def6d2f1254a' } + } + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, + :sibling => + { + :tag => 'td' , + :content => 'jsmith' , + :attributes => { :class => 'author' }, + } + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, :sibling => { :tag => 'td', :content => /watcher =/ } end + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + [2, '400bb8672109', '400', 400].each do |r1| + get :annotate, :id => 3, :rev => r1, :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/ + end + end + + def test_empty_revision + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + get :revision, :id => 3, :rev => r + assert_response 404 + assert_error_tag :content => /was not found/ + end + end else puts "Mercurial test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -26,17 +26,26 @@ :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new Setting.default_language = 'en' User.current = nil + + @project = Project.find(PRJ_ID) + @repository = Repository::Subversion.create(:project => @project, + :url => "file://#{self.class.repository_path('subversion')}") + assert @repository end if repository_configured?('subversion') def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -44,7 +53,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -53,7 +64,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['subversion_test'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -65,7 +78,9 @@ end def test_browse_at_given_revision - get :show, :id => 1, :path => ['subversion_test'], :rev => 4 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -73,7 +88,9 @@ end def test_file_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ] assert_response :success assert_template 'changes' @@ -93,7 +110,9 @@ end def test_directory_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ] assert_response :success assert_template 'changes' @@ -103,15 +122,19 @@ end def test_entry - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'entry' end def test_entry_should_send_if_too_big + @repository.fetch_changesets + @repository.reload # no files in the test repo is larger than 1KB... with_settings :file_max_size_displayed => 0 do - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] @@ -119,7 +142,9 @@ end def test_entry_at_given_revision - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 and file was moved in r6 @@ -128,27 +153,36 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['subversion_test', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] end def test_directory_entry - get :entry, :id => 1, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) assert_equal 'folder', assigns(:entry).name end + # TODO: this test needs fixtures. def test_revision + @repository.fetch_changesets + @repository.reload get :revision, :id => 1, :rev => 2 assert_response :success assert_template 'revision' @@ -166,6 +200,31 @@ } end + def test_invalid_revision + @repository.fetch_changesets + @repository.reload + get :revision, :id => PRJ_ID, :rev => 'something_weird' + assert_response 404 + assert_error_tag :content => /was not found/ + end + + def test_invalid_revision_diff + get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird' + assert_response 404 + assert_error_tag :content => /was not found/ + end + + def test_empty_revision + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + get :revision, :id => PRJ_ID, :rev => r + assert_response 404 + assert_error_tag :content => /was not found/ + end + end + + # TODO: this test needs fixtures. def test_revision_with_repository_pointing_to_a_subdirectory r = Project.find(1).repository # Changes repository url to a subdirectory @@ -189,13 +248,19 @@ end def test_revision_diff - get :diff, :id => 1, :rev => 3 + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3 assert_response :success assert_template 'diff' + + assert_tag :tag => 'h2', :content => /3/ end def test_directory_diff - get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'diff' @@ -203,13 +268,26 @@ assert_not_nil diff # 2 files modified assert_equal 2, Redmine::UnifiedDiff.new(diff).size + + assert_tag :tag => 'h2', :content => /2:6/ end def test_annotate - get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'annotate' end + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 8/ + end else puts "Subversion test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/roles_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/roles_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/roles_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'roles_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/search_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/search_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/search_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'search_controller' # Re-raise errors caught by the controller. @@ -83,7 +83,7 @@ results = assigns(:results) assert_not_nil results assert_equal 1, results.size - assert results.include?(Issue.find(3)) + assert results.include?(Issue.find(7)) end def test_search_all_words diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/settings_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/settings_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/settings_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'settings_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/sys_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/sys_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/sys_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'sys_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/time_entry_reports_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/time_entry_reports_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/time_entry_reports_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class TimeEntryReportsControllerTest < ActionController::TestCase fixtures :projects, :enabled_modules, :roles, :members, :member_roles, :issues, :time_entries, :users, :trackers, :enumerations, :issue_statuses, :custom_fields, :custom_values diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/timelog_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/timelog_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/timelog_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -16,7 +16,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'timelog_controller' # Re-raise errors caught by the controller. @@ -94,6 +94,26 @@ assert_equal i, t.issue assert_equal i.project, t.project end + + def test_post_create_with_blank_issue + # TODO: should POST to issues’ time log instead of project. change form + # and routing + @request.session[:user_id] = 3 + post :create, :project_id => 1, + :time_entry => {:comments => 'Some work on TimelogControllerTest', + # Not the default activity + :activity_id => '11', + :issue_id => '', + :spent_on => '2008-03-14', + :hours => '7.3'} + assert_redirected_to :action => 'index', :project_id => 'ecookbook' + + t = TimeEntry.find_by_comments('Some work on TimelogControllerTest') + assert_not_nil t + assert_equal 11, t.activity_id + assert_equal 7.3, t.hours + assert_equal 3, t.user_id + end def test_update entry = TimeEntry.find(1) diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/trackers_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/trackers_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/trackers_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'trackers_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/users_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/users_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/users_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'users_controller' # Re-raise errors caught by the controller. @@ -119,64 +119,108 @@ project_ids = memberships.map(&:project_id) assert project_ids.include?(2) #private project admin can see end - - context "GET :new" do - setup do - get :new + + def test_show_current_should_require_authentication + @request.session[:user_id] = nil + get :show, :id => 'current' + assert_response 302 + end + + def test_show_current + @request.session[:user_id] = 2 + get :show, :id => 'current' + assert_response :success + assert_template 'show' + assert_equal User.find(2), assigns(:user) + end + + def test_new + get :new + + assert_response :success + assert_template :new + assert assigns(:user) + end + + def test_create + Setting.bcc_recipients = '1' + + assert_difference 'User.count' do + assert_difference 'ActionMailer::Base.deliveries.size' do + post :create, + :user => { + :firstname => 'John', + :lastname => 'Doe', + :login => 'jdoe', + :password => 'secret', + :password_confirmation => 'secret', + :mail => 'jdoe@gmail.com', + :mail_notification => 'none' + }, + :send_information => '1' + end end - - should_assign_to :user - should_respond_with :success - should_render_template :new + + user = User.first(:order => 'id DESC') + assert_redirected_to :controller => 'users', :action => 'edit', :id => user.id + + assert_equal 'John', user.firstname + assert_equal 'Doe', user.lastname + assert_equal 'jdoe', user.login + assert_equal 'jdoe@gmail.com', user.mail + assert_equal 'none', user.mail_notification + assert user.check_password?('secret') + + mail = ActionMailer::Base.deliveries.last + assert_not_nil mail + assert_equal [user.mail], mail.bcc + assert mail.body.include?('secret') + end + + def test_create_with_failure + assert_no_difference 'User.count' do + post :create, :user => {} + end + + assert_response :success + assert_template 'new' end - context "POST :create" do - context "when successful" do - setup do - post :create, :user => { - :firstname => 'John', - :lastname => 'Doe', - :login => 'jdoe', - :password => 'test', - :password_confirmation => 'test', - :mail => 'jdoe@gmail.com' - }, - :notification_option => 'none' - end - - should_assign_to :user - should_respond_with :redirect - should_redirect_to('user edit') { {:controller => 'users', :action => 'edit', :id => User.find_by_login('jdoe')}} - - should 'set the users mail notification' do - user = User.last - assert_equal 'none', user.mail_notification - end - end - - context "when unsuccessful" do - setup do - post :create, :user => {} - end - - should_assign_to :user - should_respond_with :success - should_render_template :new - end - + def test_edit + get :edit, :id => 2 + + assert_response :success + assert_template 'edit' + assert_equal User.find(2), assigns(:user) end def test_update ActionMailer::Base.deliveries.clear - put :update, :id => 2, :user => {:firstname => 'Changed'}, :notification_option => 'all', :pref => {:hide_mail => '1', :comments_sorting => 'desc'} + put :update, :id => 2, :user => {:firstname => 'Changed', :mail_notification => 'only_assigned'}, :pref => {:hide_mail => '1', :comments_sorting => 'desc'} user = User.find(2) assert_equal 'Changed', user.firstname - assert_equal 'all', user.mail_notification + assert_equal 'only_assigned', user.mail_notification assert_equal true, user.pref[:hide_mail] assert_equal 'desc', user.pref[:comments_sorting] assert ActionMailer::Base.deliveries.empty? end + + def test_update_with_failure + assert_no_difference 'User.count' do + put :update, :id => 2, :user => {:firstname => ''} + end + + assert_response :success + assert_template 'edit' + end + + def test_update_with_group_ids_should_assign_groups + put :update, :id => 2, :user => {:group_ids => ['10']} + + user = User.find(2) + assert_equal [10], user.group_ids + end def test_update_with_activation_should_send_a_notification u = User.new(:firstname => 'Foo', :lastname => 'Bar', :mail => 'foo.bar@somenet.foo', :language => 'fr') @@ -194,13 +238,13 @@ assert mail.body.include?(ll('fr', :notice_account_activated)) end - def test_updat_with_password_change_should_send_a_notification + def test_update_with_password_change_should_send_a_notification ActionMailer::Base.deliveries.clear Setting.bcc_recipients = '1' + put :update, :id => 2, :user => {:password => 'newpass', :password_confirmation => 'newpass'}, :send_information => '1' u = User.find(2) - put :update, :id => u.id, :user => {}, :password => 'newpass', :password_confirmation => 'newpass', :send_information => '1' - assert_equal User.hash_password('newpass'), u.reload.hashed_password + assert u.check_password?('newpass') mail = ActionMailer::Base.deliveries.last assert_not_nil mail @@ -214,10 +258,34 @@ u.auth_source = AuthSource.find(1) u.save! - put :update, :id => u.id, :user => {:auth_source_id => ''}, :password => 'newpass', :password_confirmation => 'newpass' + put :update, :id => u.id, :user => {:auth_source_id => '', :password => 'newpass'}, :password_confirmation => 'newpass' assert_equal nil, u.reload.auth_source - assert_equal User.hash_password('newpass'), u.reload.hashed_password + assert u.check_password?('newpass') + end + + def test_destroy + assert_difference 'User.count', -1 do + delete :destroy, :id => 2 + end + assert_redirected_to '/users' + assert_nil User.find_by_id(2) + end + + def test_destroy_should_not_accept_get_requests + assert_no_difference 'User.count' do + get :destroy, :id => 2 + end + assert_response 405 + end + + def test_destroy_should_be_denied_for_non_admin_users + @request.session[:user_id] = 3 + + assert_no_difference 'User.count' do + get :destroy, :id => 2 + end + assert_response 403 end def test_edit_membership diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/versions_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/versions_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/versions_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'versions_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/watchers_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/watchers_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/watchers_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'watchers_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/welcome_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/welcome_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/welcome_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'welcome_controller' # Re-raise errors caught by the controller. @@ -67,4 +67,28 @@ assert_equal 'text/plain', @response.content_type assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$}) end + + def test_warn_on_leaving_unsaved_turn_on + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '1' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end + + def test_warn_on_leaving_unsaved_turn_off + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '0' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_no_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/wiki_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/wiki_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/wiki_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'wiki_controller' # Re-raise errors caught by the controller. @@ -108,6 +108,52 @@ assert_equal 1, page.attachments.count assert_equal 'testfile.txt', page.attachments.first.filename end + + def test_update_page + @request.session[:user_id] = 2 + assert_no_difference 'WikiPage.count' do + assert_no_difference 'WikiContent.count' do + assert_difference 'WikiContent::Version.count' do + put :update, :project_id => 1, + :id => 'Another_page', + :content => { + :comments => "my comments", + :text => "edited", + :version => 1 + } + end + end + end + assert_redirected_to '/projects/ecookbook/wiki/Another_page' + + page = Wiki.find(1).pages.find_by_title('Another_page') + assert_equal "edited", page.content.text + assert_equal 2, page.content.version + assert_equal "my comments", page.content.comments + end + + def test_update_page_with_failure + @request.session[:user_id] = 2 + assert_no_difference 'WikiPage.count' do + assert_no_difference 'WikiContent.count' do + assert_no_difference 'WikiContent::Version.count' do + put :update, :project_id => 1, + :id => 'Another_page', + :content => { + :comments => 'a' * 300, # failure here, comment is too long + :text => 'edited', + :version => 1 + } + end + end + end + assert_response :success + assert_template 'edit' + + assert_error_tag :descendant => {:content => /Comment is too long/} + assert_tag :tag => 'textarea', :attributes => {:id => 'content_text'}, :content => 'edited' + assert_tag :tag => 'input', :attributes => {:id => 'content_version', :value => '1'} + end def test_preview @request.session[:user_id] = 2 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/wikis_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/wikis_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/wikis_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'wikis_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/.svn/text-base/workflows_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/workflows_controller_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/.svn/text-base/workflows_controller_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'workflows_controller' # Re-raise errors caught by the controller. @@ -65,17 +65,17 @@ # allowed transitions assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '5', + :name => 'issue_status[3][5][]', + :value => 'always', :checked => 'checked' } # not allowed assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '2', + :name => 'issue_status[3][2][]', + :value => 'always', :checked => nil } # unused assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[4][]' } + :name => 'issue_status[1][1][]' } end def test_get_edit_with_role_and_tracker_and_all_statuses @@ -89,13 +89,17 @@ assert_equal IssueStatus.count, assigns(:statuses).size assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[1][]', - :value => '1', + :name => 'issue_status[1][1][]', + :value => 'always', :checked => nil } end def test_post_edit - post :edit, :role_id => 2, :tracker_id => 1, :issue_status => {'4' => ['5'], '3' => ['1', '2']} + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['always'], '2' => ['always']} + } assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' assert_equal 3, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) @@ -103,6 +107,30 @@ assert_nil Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4}) end + def test_post_edit_with_additional_transitions + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee']} + } + assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' + + assert_equal 4, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) + + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 4, :new_status_id => 5}) + assert ! w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 1}) + assert w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2}) + assert ! w.author + assert w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 4}) + assert w.author + assert w.assignee + end + def test_clear_workflow assert Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) > 0 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/account_controller_test.rb --- a/test/functional/account_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/account_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'account_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/activities_controller_test.rb --- a/test/functional/activities_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/activities_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ActivitiesControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/admin_controller_test.rb --- a/test/functional/admin_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/admin_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'admin_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/application_controller_test.rb --- a/test/functional/application_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/application_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'application_controller' # Re-raise errors caught by the controller. @@ -43,4 +43,61 @@ def test_call_hook_mixed_in assert @controller.respond_to?(:call_hook) end + + context "test_api_offset_and_limit" do + context "without params" do + should "return 0, 25" do + assert_equal [0, 25], @controller.api_offset_and_limit({}) + end + end + + context "with limit" do + should "return 0, limit" do + assert_equal [0, 30], @controller.api_offset_and_limit({:limit => 30}) + end + + should "not exceed 100" do + assert_equal [0, 100], @controller.api_offset_and_limit({:limit => 120}) + end + + should "not be negative" do + assert_equal [0, 25], @controller.api_offset_and_limit({:limit => -10}) + end + end + + context "with offset" do + should "return offset, 25" do + assert_equal [10, 25], @controller.api_offset_and_limit({:offset => 10}) + end + + should "not be negative" do + assert_equal [0, 25], @controller.api_offset_and_limit({:offset => -10}) + end + + context "and limit" do + should "return offset, limit" do + assert_equal [10, 50], @controller.api_offset_and_limit({:offset => 10, :limit => 50}) + end + end + end + + context "with page" do + should "return offset, 25" do + assert_equal [0, 25], @controller.api_offset_and_limit({:page => 1}) + assert_equal [50, 25], @controller.api_offset_and_limit({:page => 3}) + end + + should "not be negative" do + assert_equal [0, 25], @controller.api_offset_and_limit({:page => 0}) + assert_equal [0, 25], @controller.api_offset_and_limit({:page => -2}) + end + + context "and limit" do + should "return offset, limit" do + assert_equal [0, 100], @controller.api_offset_and_limit({:page => 1, :limit => 100}) + assert_equal [200, 100], @controller.api_offset_and_limit({:page => 3, :limit => 100}) + end + end + end + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/attachments_controller_test.rb --- a/test/functional/attachments_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/attachments_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,7 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# encoding: utf-8 +# +# 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 @@ -15,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'attachments_controller' # Re-raise errors caught by the controller. @@ -35,10 +37,31 @@ end def test_show_diff - get :show, :id => 5 + get :show, :id => 14 # 060719210727_changeset_utf8.diff assert_response :success assert_template 'diff' assert_equal 'text/html', @response.content_type + + assert_tag 'th', + :attributes => {:class => /filename/}, + :content => /issues_controller.rb\t\(révision 1484\)/ + assert_tag 'td', + :attributes => {:class => /line-code/}, + :content => /Demande créée avec succès/ + end + + def test_show_diff_should_strip_non_utf8_content + get :show, :id => 5 # 060719210727_changeset_iso8859-1.diff + assert_response :success + assert_template 'diff' + assert_equal 'text/html', @response.content_type + + assert_tag 'th', + :attributes => {:class => /filename/}, + :content => /issues_controller.rb\t\(rvision 1484\)/ + assert_tag 'td', + :attributes => {:class => /line-code/}, + :content => /Demande cre avec succs/ end def test_show_text_file diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/auth_sources_controller_test.rb --- a/test/functional/auth_sources_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/auth_sources_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AuthSourcesControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/auto_completes_controller_test.rb --- a/test/functional/auto_completes_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/auto_completes_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AutoCompletesControllerTest < ActionController::TestCase fixtures :all @@ -17,4 +17,18 @@ assert assigns(:issues).include?(Issue.find(13)) end + def test_auto_complete_with_scope_all_and_cross_project_relations + Setting.cross_project_issue_relations = '1' + get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all' + assert_response :success + assert_not_nil assigns(:issues) + assert assigns(:issues).include?(Issue.find(13)) + end + + def test_auto_complete_with_scope_all_without_cross_project_relations + Setting.cross_project_issue_relations = '0' + get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all' + assert_response :success + assert_equal [], assigns(:issues) + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/boards_controller_test.rb --- a/test/functional/boards_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/boards_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'boards_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/calendars_controller_test.rb --- a/test/functional/calendars_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/calendars_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CalendarsControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/comments_controller_test.rb --- a/test/functional/comments_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/comments_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CommentsControllerTest < ActionController::TestCase fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news, :comments diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/context_menus_controller_test.rb --- a/test/functional/context_menus_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/context_menus_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ContextMenusControllerTest < ActionController::TestCase fixtures :all @@ -56,26 +56,30 @@ get :issues, :ids => [1, 2] assert_response :success assert_template 'context_menu' + assert_not_nil assigns(:issues) + assert_equal [1, 2], assigns(:issues).map(&:id).sort + + ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&') assert_tag :tag => 'a', :content => 'Edit', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/bulk_edit?#{ids}", :class => 'icon-edit' } assert_tag :tag => 'a', :content => 'Closed', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bstatus_id%5D=5', + :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bstatus_id%5D=5", :class => '' } assert_tag :tag => 'a', :content => 'Immediate', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bpriority_id%5D=8', + :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bpriority_id%5D=8", :class => '' } assert_tag :tag => 'a', :content => 'Dave Lopper', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bassigned_to_id%5D=3', + :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bassigned_to_id%5D=3", :class => '' } assert_tag :tag => 'a', :content => 'Copy', - :attributes => { :href => '/issues/move/new?copy_options%5Bcopy%5D=t&ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/move/new?copy_options%5Bcopy%5D=t&#{ids}", :class => 'icon-copy' } assert_tag :tag => 'a', :content => 'Move', - :attributes => { :href => '/issues/move/new?ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/move/new?#{ids}", :class => 'icon-move' } assert_tag :tag => 'a', :content => 'Delete', - :attributes => { :href => '/issues/destroy?ids%5B%5D=1&ids%5B%5D=2', + :attributes => { :href => "/issues/destroy?#{ids}", :class => 'icon-del' } end @@ -84,7 +88,10 @@ get :issues, :ids => [1, 2, 6] assert_response :success assert_template 'context_menu' - ids = "ids%5B%5D=1&ids%5B%5D=2&ids%5B%5D=6" + assert_not_nil assigns(:issues) + assert_equal [1, 2, 6], assigns(:issues).map(&:id).sort + + ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&') assert_tag :tag => 'a', :content => 'Edit', :attributes => { :href => "/issues/bulk_edit?#{ids}", :class => 'icon-edit' } @@ -102,4 +109,10 @@ :class => 'icon-del' } end + def test_context_menu_issue_visibility + get :issues, :ids => [1, 4] + assert_response :success + assert_template 'context_menu' + assert_equal [1], assigns(:issues).collect(&:id) + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/custom_fields_controller_test.rb --- a/test/functional/custom_fields_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/custom_fields_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'custom_fields_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/documents_controller_test.rb --- a/test/functional/documents_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/documents_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'documents_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/enumerations_controller_test.rb --- a/test/functional/enumerations_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/enumerations_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'enumerations_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/files_controller_test.rb --- a/test/functional/files_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/files_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class FilesControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/gantts_controller_test.rb --- a/test/functional/gantts_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/gantts_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class GanttsControllerTest < ActionController::TestCase fixtures :all @@ -49,6 +49,18 @@ assert_nil assigns(:gantt).project end + should "not disclose private projects" do + get :show + assert_response :success + assert_template 'show.html.erb' + + assert_tag 'a', :content => /eCookbook/ + # Root private project + assert_no_tag 'a', {:content => /OnlineStore/} + # Private children of a public project + assert_no_tag 'a', :content => /Private child of eCookbook/ + end + should "export to pdf" do get :show, :project_id => 1, :format => 'pdf' assert_response :success diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/groups_controller_test.rb --- a/test/functional/groups_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/groups_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'groups_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/issue_categories_controller_test.rb --- a/test/functional/issue_categories_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/issue_categories_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issue_categories_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/issue_moves_controller_test.rb --- a/test/functional/issue_moves_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/issue_moves_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssueMovesControllerTest < ActionController::TestCase fixtures :all @@ -58,8 +58,8 @@ post :create, :ids => [1, 2], :notes => 'Moving two issues' assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook' - assert_equal 'Moving two issues', Issue.find(1).journals.last.notes - assert_equal 'Moving two issues', Issue.find(2).journals.last.notes + assert_equal 'Moving two issues', Issue.find(1).journals.sort_by(&:id).last.notes + assert_equal 'Moving two issues', Issue.find(2).journals.sort_by(&:id).last.notes end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/issue_relations_controller_test.rb --- a/test/functional/issue_relations_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/issue_relations_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issue_relations_controller' # Re-raise errors caught by the controller. @@ -33,6 +33,19 @@ end end + def test_new_xhr + assert_difference 'IssueRelation.count' do + @request.session[:user_id] = 3 + xhr :post, :new, + :issue_id => 3, + :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 2 # relations + end + end + end + def test_new_should_accept_id_with_hash assert_difference 'IssueRelation.count' do @request.session[:user_id] = 3 @@ -68,4 +81,20 @@ post :destroy, :id => '2', :issue_id => '3' end end + + def test_destroy_xhr + IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r| + r.issue_from_id = 3 + r.issue_to_id = 1 + end + + assert_difference 'IssueRelation.count', -1 do + @request.session[:user_id] = 3 + xhr :post, :destroy, :id => '2', :issue_id => '3' + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 1 # relation left + end + end + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/issue_statuses_controller_test.rb --- a/test/functional/issue_statuses_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/issue_statuses_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issue_statuses_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/issues_controller_test.rb --- a/test/functional/issues_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/issues_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issues_controller' # Re-raise errors caught by the controller. @@ -281,6 +281,9 @@ get :show, :id => 1 assert_response :success + assert_tag :tag => 'a', + :content => /Quote/ + assert_tag :tag => 'form', :descendant => { :tag => 'fieldset', :child => { :tag => 'legend', @@ -525,6 +528,20 @@ assert_not_nil issue assert_equal Issue.find(2), issue.parent end + + def test_post_create_subissue_with_non_numeric_parent_id + @request.session[:user_id] = 2 + + assert_difference 'Issue.count' do + post :create, :project_id => 1, + :issue => {:tracker_id => 1, + :subject => 'This is a child issue', + :parent_issue_id => 'ABC'} + end + issue = Issue.find_by_subject('This is a child issue') + assert_not_nil issue + assert_nil issue.parent + end def test_post_create_should_send_a_notification ActionMailer::Base.deliveries.clear diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/issues_controller_transaction_test.rb --- a/test/functional/issues_controller_transaction_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/issues_controller_transaction_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'issues_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/journals_controller_test.rb --- a/test/functional/journals_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/journals_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'journals_controller' # Re-raise errors caught by the controller. @@ -38,16 +38,35 @@ assert_equal 'application/atom+xml', @response.content_type end + def test_diff + get :diff, :id => 3, :detail_id => 4 + assert_response :success + assert_template 'diff' + + assert_tag 'span', + :attributes => {:class => 'diff_out'}, + :content => /removed/ + assert_tag 'span', + :attributes => {:class => 'diff_in'}, + :content => /added/ + end + def test_reply_to_issue @request.session[:user_id] = 2 - get :new, :id => 1 + get :new, :id => 6 assert_response :success assert_select_rjs :show, "update" end + + def test_reply_to_issue_without_permission + @request.session[:user_id] = 7 + get :new, :id => 6 + assert_response 403 + end def test_reply_to_note @request.session[:user_id] = 2 - get :new, :id => 1, :journal_id => 2 + get :new, :id => 6, :journal_id => 4 assert_response :success assert_select_rjs :show, "update" end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/mail_handler_controller_test.rb --- a/test/functional/mail_handler_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/mail_handler_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'mail_handler_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/members_controller_test.rb --- a/test/functional/members_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/members_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'members_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/messages_controller_test.rb --- a/test/functional/messages_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/messages_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'messages_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/my_controller_test.rb --- a/test/functional/my_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/my_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'my_controller' # Re-raise errors caught by the controller. @@ -64,17 +64,24 @@ end def test_update_account - post :account, :user => {:firstname => "Joe", - :login => "root", - :admin => 1, - :custom_field_values => {"4" => "0100562500"}} + post :account, + :user => { + :firstname => "Joe", + :login => "root", + :admin => 1, + :group_ids => ['10'], + :custom_field_values => {"4" => "0100562500"} + } + assert_redirected_to '/my/account' user = User.find(2) assert_equal user, assigns(:user) assert_equal "Joe", user.firstname assert_equal "jsmith", user.login assert_equal "0100562500", user.custom_value_for(4).value + # ignored assert !user.admin? + assert user.groups.empty? end def test_change_password diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/news_controller_test.rb --- a/test/functional/news_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/news_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'news_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/previews_controller_test.rb --- a/test/functional/previews_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/previews_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class PreviewsControllerTest < ActionController::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/project_enumerations_controller_test.rb --- a/test/functional/project_enumerations_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/project_enumerations_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ProjectEnumerationsControllerTest < ActionController::TestCase fixtures :all @@ -175,7 +175,7 @@ }) assert project_activity.save assert TimeEntry.update_all("activity_id = '#{project_activity.id}'", ["project_id = ? AND activity_id = ?", 1, 9]) - assert 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size + assert_equal 3, TimeEntry.find_all_by_activity_id_and_project_id(project_activity.id, 1).size delete :destroy, :project_id => 1 assert_response :redirect diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/projects_controller_test.rb --- a/test/functional/projects_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/projects_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'projects_controller' # Re-raise errors caught by the controller. @@ -144,19 +144,32 @@ end should "create a new project" do - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' } - } + post :create, + :project => { + :name => "blog", + :description => "weblog", + :homepage => 'http://weblog', + :identifier => "blog", + :is_public => 1, + :custom_field_values => { '3' => 'Beta' }, + :tracker_ids => ['1', '3'], + # an issue custom field that is not for all project + :issue_custom_field_ids => ['9'], + :enabled_module_names => ['issue_tracking', 'news', 'repository'] + } assert_redirected_to '/projects/blog/settings' project = Project.find_by_name('blog') assert_kind_of Project, project + assert project.active? assert_equal 'weblog', project.description + assert_equal 'http://weblog', project.homepage assert_equal true, project.is_public? assert_nil project.parent + assert_equal 'Beta', project.custom_value_for(3).value + assert_equal [1, 3], project.trackers.map(&:id).sort + assert_equal ['issue_tracking', 'news', 'repository'], project.enabled_module_names.sort + assert project.issue_custom_fields.include?(IssueCustomField.find(9)) end should "create a new subproject" do @@ -186,7 +199,9 @@ :description => "weblog", :identifier => "blog", :is_public => 1, - :custom_field_values => { '3' => 'Beta' } + :custom_field_values => { '3' => 'Beta' }, + :tracker_ids => ['1', '3'], + :enabled_module_names => ['issue_tracking', 'news', 'repository'] } assert_redirected_to '/projects/blog/settings' @@ -195,6 +210,8 @@ assert_kind_of Project, project assert_equal 'weblog', project.description assert_equal true, project.is_public? + assert_equal [1, 3], project.trackers.map(&:id).sort + assert_equal ['issue_tracking', 'news', 'repository'], project.enabled_module_names.sort # User should be added as a project member assert User.find(9).member_of?(project) @@ -271,6 +288,12 @@ end end + def test_create_should_not_accept_get + @request.session[:user_id] = 1 + get :create + assert_response :method_not_allowed + end + def test_show_by_id get :show, :id => 1 assert_response :success @@ -348,6 +371,21 @@ project = Project.find(1) assert_equal 'Test changed name', project.name end + + def test_modules + @request.session[:user_id] = 2 + Project.find(1).enabled_module_names = ['issue_tracking', 'news'] + + post :modules, :id => 1, :enabled_module_names => ['issue_tracking', 'repository', 'documents'] + assert_redirected_to '/projects/ecookbook/settings/modules' + assert_equal ['documents', 'issue_tracking', 'repository'], Project.find(1).enabled_module_names.sort + end + + def test_modules_should_not_allow_get + @request.session[:user_id] = 1 + get :modules, :id => 1 + assert_response :method_not_allowed + end def test_get_destroy @request.session[:user_id] = 1 # admin @@ -418,7 +456,7 @@ @request.session[:user_id] = 1 # admin post :copy, :id => 1, :project => {:name => 'Copy', :identifier => 'unique-copy'} assert_response :redirect - assert_redirected_to :controller => 'projects', :action => 'settings' + assert_redirected_to :controller => 'projects', :action => 'settings', :id => 'unique-copy' end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/queries_controller_test.rb --- a/test/functional/queries_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/queries_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'queries_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/reports_controller_test.rb --- a/test/functional/reports_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/reports_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'reports_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/repositories_bazaar_controller_test.rb --- a/test/functional/repositories_bazaar_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/repositories_bazaar_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -32,9 +32,13 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Bazaar.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Bazaar.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -43,7 +47,7 @@ assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root get :show, :id => 3 assert_response :success @@ -53,7 +57,7 @@ assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'} end - + def test_browse_directory get :show, :id => 3, :path => ['directory'] assert_response :success diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/repositories_controller_test.rb --- a/test/functional/repositories_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/repositories_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/repositories_cvs_controller_test.rb --- a/test/functional/repositories_cvs_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/repositories_cvs_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,20 +15,22 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. class RepositoriesController; def rescue_action(e) raise e end; end class RepositoriesCvsControllerTest < ActionController::TestCase + fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository' REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? # CVS module MODULE_NAME = 'test' - + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @@ -36,14 +38,19 @@ Setting.default_language = 'en' User.current = nil - @project = Project.find(1) - @project.repository = Repository::Cvs.create(:root_url => REPOSITORY_PATH, - :url => MODULE_NAME) + @project = Project.find(PRJ_ID) + @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID), + :root_url => REPOSITORY_PATH, + :url => MODULE_NAME, + :log_encoding => 'UTF-8') + assert @repository end if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -51,7 +58,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -65,7 +74,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -77,8 +88,9 @@ end def test_browse_at_given_revision - Project.find(1).repository.fetch_changesets - get :show, :id => 1, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -86,7 +98,9 @@ end def test_entry - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'entry' assert_no_tag :tag => 'td', :attributes => { :class => /line-code/}, @@ -95,8 +109,9 @@ def test_entry_at_given_revision # changesets must be loaded - Project.find(1).repository.fetch_changesets - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 @@ -105,18 +120,24 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['sources', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' assert_response :success end def test_directory_entry - get :entry, :id => 1, :path => ['sources'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) @@ -124,8 +145,9 @@ end def test_diff - Project.find(1).repository.fetch_changesets - get :diff, :id => 1, :rev => 3, :type => 'inline' + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3, :type => 'inline' assert_response :success assert_template 'diff' assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' }, @@ -133,10 +155,29 @@ assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, :content => /watched.remove_all_watcher/ end + + def test_diff_new_files + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline' + assert_response :success + assert_template 'diff' + assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, + :content => /watched.remove_watcher/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/README/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/delete.png / + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/edit.png/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/sources\/watchers_controller.rb/ + end def test_annotate - Project.find(1).repository.fetch_changesets - get :annotate, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'annotate' # 1.1 line diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/repositories_darcs_controller_test.rb --- a/test/functional/repositories_darcs_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/repositories_darcs_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -26,26 +26,35 @@ # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' + PRJ_ID = 3 def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Darcs.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(PRJ_ID) + @repository = Repository::Darcs.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -54,9 +63,11 @@ assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} end - + def test_browse_directory - get :show, :id => 3, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -66,27 +77,31 @@ assert_equal 'file', entry.kind assert_equal 'images/edit.png', entry.path end - + def test_browse_at_given_revision - Project.find(3).repository.fetch_changesets - get :show, :id => 3, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_equal ['delete.png'], assigns(:entries).collect(&:name) end - + def test_changes - get :changes, :id => 3, :path => ['images', 'edit.png'] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['images', 'edit.png'] assert_response :success assert_template 'changes' assert_tag :tag => 'h2', :content => 'edit.png' end - + def test_diff - Project.find(3).repository.fetch_changesets + @repository.fetch_changesets + @repository.reload # Full diff of changeset 5 - get :diff, :id => 3, :rev => 5 + get :diff, :id => PRJ_ID, :rev => 5 assert_response :success assert_template 'diff' # Line 22 removed diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/repositories_git_controller_test.rb --- a/test/functional/repositories_git_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/repositories_git_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -33,9 +33,10 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Git.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @repository = Repository::Git.create(:project => Project.find(3), :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -126,8 +127,11 @@ assert_not_nil assigns(:entry) assert_equal 'sources', assigns(:entry).name end - + def test_diff + @repository.fetch_changesets + @repository.reload + # Full diff of changeset 2f9c0091 get :diff, :id => 3, :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' assert_response :success @@ -138,6 +142,21 @@ :sibling => { :tag => 'td', :attributes => { :class => /diff_out/ }, :content => /def remove/ } + assert_tag :tag => 'h2', :content => /2f9c0091/ + end + + def test_diff_two_revs + @repository.fetch_changesets + @repository.reload + + get :diff, :id => 3, :rev => '61b685fbe55ab05b5ac68402d5720c1a6ac973d1', + :rev_to => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + assert_response :success + assert_template 'diff' + + diff = assigns(:diff) + assert_not_nil diff + assert_tag :tag => 'h2', :content => /2f9c0091:61b685fb/ end def test_annotate @@ -150,13 +169,42 @@ :sibling => { :tag => 'td', :content => /jsmith/ }, :sibling => { :tag => 'td', :content => /watcher =/ } end - + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => 3, :rev => 'deff7', :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ deff712f/ + end + def test_annotate_binary_file get :annotate, :id => 3, :path => ['images', 'edit.png'] assert_response 500 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /can not be annotated/ end + + def test_revision + @repository.fetch_changesets + @repository.reload + ['61b685fbe55ab05b5ac68402d5720c1a6ac973d1', '61b685f'].each do |r| + get :revision, :id => 3, :rev => r + assert_response :success + assert_template 'revision' + end + end + + def test_empty_revision + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + get :revision, :id => 3, :rev => r + assert_response 404 + assert_error_tag :content => /was not found/ + end + end else puts "Git test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/repositories_mercurial_controller_test.rb --- a/test/functional/repositories_mercurial_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/repositories_mercurial_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -32,9 +32,11 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + assert @repository + @diff_c_support = true end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -43,18 +45,18 @@ assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_show_root get :show, :id => 3 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) - assert_equal 3, assigns(:entries).size - assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'} + assert_equal 4, assigns(:entries).size + assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'} - assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} + assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} end - + def test_show_directory get :show, :id => 3, :path => ['images'] assert_response :success @@ -66,15 +68,33 @@ assert_equal 'file', entry.kind assert_equal 'images/edit.png', entry.path end - + def test_show_at_given_revision - get :show, :id => 3, :path => ['images'], :rev => 0 - assert_response :success - assert_template 'show' - assert_not_nil assigns(:entries) - assert_equal ['delete.png'], assigns(:entries).collect(&:name) + [0, '0', '0885933ad4f6'].each do |r1| + get :show, :id => 3, :path => ['images'], :rev => r1 + assert_response :success + assert_template 'show' + assert_not_nil assigns(:entries) + assert_equal ['delete.png'], assigns(:entries).collect(&:name) + end end - + + def test_show_directory_sql_escape_percent + [13, '13', '3a330eb32958'].each do |r1| + get :show, :id => 3, :path => ['sql_escape', 'percent%dir'], :rev => r1 + assert_response :success + assert_template 'show' + + assert_not_nil assigns(:entries) + assert_equal ['percent%file1.txt', 'percentfile1.txt'], assigns(:entries).collect(&:name) + changesets = assigns(:changesets) + + ## This is not yet implemented. + # assert_not_nil changesets + # assert_equal %w(13 11 10 9), changesets.collect(&:revision) + end + end + def test_changes get :changes, :id => 3, :path => ['images', 'edit.png'] assert_response :success @@ -86,10 +106,10 @@ get :entry, :id => 3, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'entry' - # Line 19 + # Line 10 assert_tag :tag => 'th', - :content => /10/, - :attributes => { :class => /line-num/ }, + :content => '10', + :attributes => { :class => 'line-num' }, :sibling => { :tag => 'td', :content => /WITHOUT ANY WARRANTY/ } end @@ -109,28 +129,94 @@ end def test_diff - # Full diff of changeset 4 - get :diff, :id => 3, :rev => 4 - assert_response :success - assert_template 'diff' - # Line 22 removed - assert_tag :tag => 'th', - :content => /22/, - :sibling => { :tag => 'td', - :attributes => { :class => /diff_out/ }, - :content => /def remove/ } + @repository.fetch_changesets + @repository.reload + + [4, '4', 'def6d2f1254a'].each do |r1| + # Full diff of changeset 4 + get :diff, :id => 3, :rev => r1 + assert_response :success + assert_template 'diff' + + if @diff_c_support + # Line 22 removed + assert_tag :tag => 'th', + :content => '22', + :sibling => { :tag => 'td', + :attributes => { :class => /diff_out/ }, + :content => /def remove/ } + assert_tag :tag => 'h2', :content => /4:def6d2f1254a/ + end + end end - + + def test_diff_two_revs + @repository.fetch_changesets + @repository.reload + + [2, '400bb8672109', '400', 400].each do |r1| + [4, 'def6d2f1254a'].each do |r2| + get :diff, :id => 3, :rev => r1, + :rev_to => r2 + assert_response :success + assert_template 'diff' + + diff = assigns(:diff) + assert_not_nil diff + assert_tag :tag => 'h2', :content => /4:def6d2f1254a 2:400bb8672109/ + end + end + end + def test_annotate get :annotate, :id => 3, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'annotate' - # Line 23, revision 4 - assert_tag :tag => 'th', :content => /23/, - :sibling => { :tag => 'td', :child => { :tag => 'a', :content => /4/ } }, - :sibling => { :tag => 'td', :content => /jsmith/ }, + # Line 23, revision 4:def6d2f1254a + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, + :sibling => + { + :tag => 'td', + :attributes => { :class => 'revision' }, + :child => { :tag => 'a', :content => '4:def6d2f1254a' } + } + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, + :sibling => + { + :tag => 'td' , + :content => 'jsmith' , + :attributes => { :class => 'author' }, + } + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, :sibling => { :tag => 'td', :content => /watcher =/ } end + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + [2, '400bb8672109', '400', 400].each do |r1| + get :annotate, :id => 3, :rev => r1, :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/ + end + end + + def test_empty_revision + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + get :revision, :id => 3, :rev => r + assert_response 404 + assert_error_tag :content => /was not found/ + end + end else puts "Mercurial test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/repositories_subversion_controller_test.rb --- a/test/functional/repositories_subversion_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/repositories_subversion_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -26,17 +26,26 @@ :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new Setting.default_language = 'en' User.current = nil + + @project = Project.find(PRJ_ID) + @repository = Repository::Subversion.create(:project => @project, + :url => "file://#{self.class.repository_path('subversion')}") + assert @repository end if repository_configured?('subversion') def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -44,7 +53,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -53,7 +64,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['subversion_test'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -65,7 +78,9 @@ end def test_browse_at_given_revision - get :show, :id => 1, :path => ['subversion_test'], :rev => 4 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -73,7 +88,9 @@ end def test_file_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ] assert_response :success assert_template 'changes' @@ -93,7 +110,9 @@ end def test_directory_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ] assert_response :success assert_template 'changes' @@ -103,15 +122,19 @@ end def test_entry - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'entry' end def test_entry_should_send_if_too_big + @repository.fetch_changesets + @repository.reload # no files in the test repo is larger than 1KB... with_settings :file_max_size_displayed => 0 do - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] @@ -119,7 +142,9 @@ end def test_entry_at_given_revision - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 and file was moved in r6 @@ -128,27 +153,36 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['subversion_test', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] end def test_directory_entry - get :entry, :id => 1, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) assert_equal 'folder', assigns(:entry).name end + # TODO: this test needs fixtures. def test_revision + @repository.fetch_changesets + @repository.reload get :revision, :id => 1, :rev => 2 assert_response :success assert_template 'revision' @@ -166,6 +200,31 @@ } end + def test_invalid_revision + @repository.fetch_changesets + @repository.reload + get :revision, :id => PRJ_ID, :rev => 'something_weird' + assert_response 404 + assert_error_tag :content => /was not found/ + end + + def test_invalid_revision_diff + get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird' + assert_response 404 + assert_error_tag :content => /was not found/ + end + + def test_empty_revision + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + get :revision, :id => PRJ_ID, :rev => r + assert_response 404 + assert_error_tag :content => /was not found/ + end + end + + # TODO: this test needs fixtures. def test_revision_with_repository_pointing_to_a_subdirectory r = Project.find(1).repository # Changes repository url to a subdirectory @@ -189,13 +248,19 @@ end def test_revision_diff - get :diff, :id => 1, :rev => 3 + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3 assert_response :success assert_template 'diff' + + assert_tag :tag => 'h2', :content => /3/ end def test_directory_diff - get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'diff' @@ -203,13 +268,26 @@ assert_not_nil diff # 2 files modified assert_equal 2, Redmine::UnifiedDiff.new(diff).size + + assert_tag :tag => 'h2', :content => /2:6/ end def test_annotate - get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'annotate' end + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 8/ + end else puts "Subversion test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/roles_controller_test.rb --- a/test/functional/roles_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/roles_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'roles_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/search_controller_test.rb --- a/test/functional/search_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/search_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'search_controller' # Re-raise errors caught by the controller. @@ -83,7 +83,7 @@ results = assigns(:results) assert_not_nil results assert_equal 1, results.size - assert results.include?(Issue.find(3)) + assert results.include?(Issue.find(7)) end def test_search_all_words diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/settings_controller_test.rb --- a/test/functional/settings_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/settings_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'settings_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/sys_controller_test.rb --- a/test/functional/sys_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/sys_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'sys_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/time_entry_reports_controller_test.rb --- a/test/functional/time_entry_reports_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/time_entry_reports_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class TimeEntryReportsControllerTest < ActionController::TestCase fixtures :projects, :enabled_modules, :roles, :members, :member_roles, :issues, :time_entries, :users, :trackers, :enumerations, :issue_statuses, :custom_fields, :custom_values diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/timelog_controller_test.rb --- a/test/functional/timelog_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/timelog_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -16,7 +16,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'timelog_controller' # Re-raise errors caught by the controller. @@ -94,6 +94,26 @@ assert_equal i, t.issue assert_equal i.project, t.project end + + def test_post_create_with_blank_issue + # TODO: should POST to issues’ time log instead of project. change form + # and routing + @request.session[:user_id] = 3 + post :create, :project_id => 1, + :time_entry => {:comments => 'Some work on TimelogControllerTest', + # Not the default activity + :activity_id => '11', + :issue_id => '', + :spent_on => '2008-03-14', + :hours => '7.3'} + assert_redirected_to :action => 'index', :project_id => 'ecookbook' + + t = TimeEntry.find_by_comments('Some work on TimelogControllerTest') + assert_not_nil t + assert_equal 11, t.activity_id + assert_equal 7.3, t.hours + assert_equal 3, t.user_id + end def test_update entry = TimeEntry.find(1) diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/trackers_controller_test.rb --- a/test/functional/trackers_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/trackers_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'trackers_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/users_controller_test.rb --- a/test/functional/users_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/users_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'users_controller' # Re-raise errors caught by the controller. @@ -119,64 +119,108 @@ project_ids = memberships.map(&:project_id) assert project_ids.include?(2) #private project admin can see end - - context "GET :new" do - setup do - get :new + + def test_show_current_should_require_authentication + @request.session[:user_id] = nil + get :show, :id => 'current' + assert_response 302 + end + + def test_show_current + @request.session[:user_id] = 2 + get :show, :id => 'current' + assert_response :success + assert_template 'show' + assert_equal User.find(2), assigns(:user) + end + + def test_new + get :new + + assert_response :success + assert_template :new + assert assigns(:user) + end + + def test_create + Setting.bcc_recipients = '1' + + assert_difference 'User.count' do + assert_difference 'ActionMailer::Base.deliveries.size' do + post :create, + :user => { + :firstname => 'John', + :lastname => 'Doe', + :login => 'jdoe', + :password => 'secret', + :password_confirmation => 'secret', + :mail => 'jdoe@gmail.com', + :mail_notification => 'none' + }, + :send_information => '1' + end end - - should_assign_to :user - should_respond_with :success - should_render_template :new + + user = User.first(:order => 'id DESC') + assert_redirected_to :controller => 'users', :action => 'edit', :id => user.id + + assert_equal 'John', user.firstname + assert_equal 'Doe', user.lastname + assert_equal 'jdoe', user.login + assert_equal 'jdoe@gmail.com', user.mail + assert_equal 'none', user.mail_notification + assert user.check_password?('secret') + + mail = ActionMailer::Base.deliveries.last + assert_not_nil mail + assert_equal [user.mail], mail.bcc + assert mail.body.include?('secret') + end + + def test_create_with_failure + assert_no_difference 'User.count' do + post :create, :user => {} + end + + assert_response :success + assert_template 'new' end - context "POST :create" do - context "when successful" do - setup do - post :create, :user => { - :firstname => 'John', - :lastname => 'Doe', - :login => 'jdoe', - :password => 'test', - :password_confirmation => 'test', - :mail => 'jdoe@gmail.com' - }, - :notification_option => 'none' - end - - should_assign_to :user - should_respond_with :redirect - should_redirect_to('user edit') { {:controller => 'users', :action => 'edit', :id => User.find_by_login('jdoe')}} - - should 'set the users mail notification' do - user = User.last - assert_equal 'none', user.mail_notification - end - end - - context "when unsuccessful" do - setup do - post :create, :user => {} - end - - should_assign_to :user - should_respond_with :success - should_render_template :new - end - + def test_edit + get :edit, :id => 2 + + assert_response :success + assert_template 'edit' + assert_equal User.find(2), assigns(:user) end def test_update ActionMailer::Base.deliveries.clear - put :update, :id => 2, :user => {:firstname => 'Changed'}, :notification_option => 'all', :pref => {:hide_mail => '1', :comments_sorting => 'desc'} + put :update, :id => 2, :user => {:firstname => 'Changed', :mail_notification => 'only_assigned'}, :pref => {:hide_mail => '1', :comments_sorting => 'desc'} user = User.find(2) assert_equal 'Changed', user.firstname - assert_equal 'all', user.mail_notification + assert_equal 'only_assigned', user.mail_notification assert_equal true, user.pref[:hide_mail] assert_equal 'desc', user.pref[:comments_sorting] assert ActionMailer::Base.deliveries.empty? end + + def test_update_with_failure + assert_no_difference 'User.count' do + put :update, :id => 2, :user => {:firstname => ''} + end + + assert_response :success + assert_template 'edit' + end + + def test_update_with_group_ids_should_assign_groups + put :update, :id => 2, :user => {:group_ids => ['10']} + + user = User.find(2) + assert_equal [10], user.group_ids + end def test_update_with_activation_should_send_a_notification u = User.new(:firstname => 'Foo', :lastname => 'Bar', :mail => 'foo.bar@somenet.foo', :language => 'fr') @@ -194,13 +238,13 @@ assert mail.body.include?(ll('fr', :notice_account_activated)) end - def test_updat_with_password_change_should_send_a_notification + def test_update_with_password_change_should_send_a_notification ActionMailer::Base.deliveries.clear Setting.bcc_recipients = '1' + put :update, :id => 2, :user => {:password => 'newpass', :password_confirmation => 'newpass'}, :send_information => '1' u = User.find(2) - put :update, :id => u.id, :user => {}, :password => 'newpass', :password_confirmation => 'newpass', :send_information => '1' - assert_equal User.hash_password('newpass'), u.reload.hashed_password + assert u.check_password?('newpass') mail = ActionMailer::Base.deliveries.last assert_not_nil mail @@ -214,10 +258,34 @@ u.auth_source = AuthSource.find(1) u.save! - put :update, :id => u.id, :user => {:auth_source_id => ''}, :password => 'newpass', :password_confirmation => 'newpass' + put :update, :id => u.id, :user => {:auth_source_id => '', :password => 'newpass'}, :password_confirmation => 'newpass' assert_equal nil, u.reload.auth_source - assert_equal User.hash_password('newpass'), u.reload.hashed_password + assert u.check_password?('newpass') + end + + def test_destroy + assert_difference 'User.count', -1 do + delete :destroy, :id => 2 + end + assert_redirected_to '/users' + assert_nil User.find_by_id(2) + end + + def test_destroy_should_not_accept_get_requests + assert_no_difference 'User.count' do + get :destroy, :id => 2 + end + assert_response 405 + end + + def test_destroy_should_be_denied_for_non_admin_users + @request.session[:user_id] = 3 + + assert_no_difference 'User.count' do + get :destroy, :id => 2 + end + assert_response 403 end def test_edit_membership diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/versions_controller_test.rb --- a/test/functional/versions_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/versions_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'versions_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/watchers_controller_test.rb --- a/test/functional/watchers_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/watchers_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'watchers_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/welcome_controller_test.rb --- a/test/functional/welcome_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/welcome_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'welcome_controller' # Re-raise errors caught by the controller. @@ -67,4 +67,28 @@ assert_equal 'text/plain', @response.content_type assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$}) end + + def test_warn_on_leaving_unsaved_turn_on + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '1' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end + + def test_warn_on_leaving_unsaved_turn_off + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '0' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_no_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/wiki_controller_test.rb --- a/test/functional/wiki_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/wiki_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'wiki_controller' # Re-raise errors caught by the controller. @@ -108,6 +108,52 @@ assert_equal 1, page.attachments.count assert_equal 'testfile.txt', page.attachments.first.filename end + + def test_update_page + @request.session[:user_id] = 2 + assert_no_difference 'WikiPage.count' do + assert_no_difference 'WikiContent.count' do + assert_difference 'WikiContent::Version.count' do + put :update, :project_id => 1, + :id => 'Another_page', + :content => { + :comments => "my comments", + :text => "edited", + :version => 1 + } + end + end + end + assert_redirected_to '/projects/ecookbook/wiki/Another_page' + + page = Wiki.find(1).pages.find_by_title('Another_page') + assert_equal "edited", page.content.text + assert_equal 2, page.content.version + assert_equal "my comments", page.content.comments + end + + def test_update_page_with_failure + @request.session[:user_id] = 2 + assert_no_difference 'WikiPage.count' do + assert_no_difference 'WikiContent.count' do + assert_no_difference 'WikiContent::Version.count' do + put :update, :project_id => 1, + :id => 'Another_page', + :content => { + :comments => 'a' * 300, # failure here, comment is too long + :text => 'edited', + :version => 1 + } + end + end + end + assert_response :success + assert_template 'edit' + + assert_error_tag :descendant => {:content => /Comment is too long/} + assert_tag :tag => 'textarea', :attributes => {:id => 'content_text'}, :content => 'edited' + assert_tag :tag => 'input', :attributes => {:id => 'content_version', :value => '1'} + end def test_preview @request.session[:user_id] = 2 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/wikis_controller_test.rb --- a/test/functional/wikis_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/wikis_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'wikis_controller' # Re-raise errors caught by the controller. diff -r 7cec015f07ce -r 73ff0e6a11b1 test/functional/workflows_controller_test.rb --- a/test/functional/workflows_controller_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/functional/workflows_controller_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'workflows_controller' # Re-raise errors caught by the controller. @@ -65,17 +65,17 @@ # allowed transitions assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '5', + :name => 'issue_status[3][5][]', + :value => 'always', :checked => 'checked' } # not allowed assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '2', + :name => 'issue_status[3][2][]', + :value => 'always', :checked => nil } # unused assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[4][]' } + :name => 'issue_status[1][1][]' } end def test_get_edit_with_role_and_tracker_and_all_statuses @@ -89,13 +89,17 @@ assert_equal IssueStatus.count, assigns(:statuses).size assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[1][]', - :value => '1', + :name => 'issue_status[1][1][]', + :value => 'always', :checked => nil } end def test_post_edit - post :edit, :role_id => 2, :tracker_id => 1, :issue_status => {'4' => ['5'], '3' => ['1', '2']} + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['always'], '2' => ['always']} + } assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' assert_equal 3, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) @@ -103,6 +107,30 @@ assert_nil Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4}) end + def test_post_edit_with_additional_transitions + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee']} + } + assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' + + assert_equal 4, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) + + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 4, :new_status_id => 5}) + assert ! w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 1}) + assert w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2}) + assert ! w.author + assert w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 4}) + assert w.author + assert w.assignee + end + def test_clear_workflow assert Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) > 0 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/all-wcprops --- a/test/integration/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,47 +1,47 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4407/trunk/test/integration +/svn/!svn/ver/4729/trunk/test/integration END application_test.rb K 25 svn:wc:ra_dav:version-url V 61 -/svn/!svn/ver/2779/trunk/test/integration/application_test.rb +/svn/!svn/ver/4509/trunk/test/integration/application_test.rb END routing_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4372/trunk/test/integration/routing_test.rb +/svn/!svn/ver/4729/trunk/test/integration/routing_test.rb END admin_test.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4231/trunk/test/integration/admin_test.rb +/svn/!svn/ver/4509/trunk/test/integration/admin_test.rb END projects_test.rb K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4407/trunk/test/integration/projects_test.rb +/svn/!svn/ver/4509/trunk/test/integration/projects_test.rb END issues_test.rb K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/4407/trunk/test/integration/issues_test.rb +/svn/!svn/ver/4509/trunk/test/integration/issues_test.rb END account_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4407/trunk/test/integration/account_test.rb +/svn/!svn/ver/4509/trunk/test/integration/account_test.rb END layout_test.rb K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/3951/trunk/test/integration/layout_test.rb +/svn/!svn/ver/4509/trunk/test/integration/layout_test.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/entries --- a/test/integration/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/integration http://redmine.rubyforge.org/svn -2010-11-14T16:45:32.457767Z -4407 +2011-01-16T15:23:11.666065Z +4729 jplang @@ -32,11 +32,11 @@ -2010-09-23T14:37:45.435782Z -8d01b406d4574360e2fc0ca763e457d1 -2009-06-06T10:20:27.327287Z -2779 -jplang +2011-03-03T11:05:08.000000Z +b828e87474858f965d2048f5f15f8e4b +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -58,21 +58,24 @@ -1967 +1972 lib dir +api_test +dir + routing_test.rb file -2010-11-19T13:04:46.192843Z -badebe423de738346d93306b99e49615 -2010-11-06T13:22:23.662480Z -4372 +2011-03-03T11:05:08.000000Z +7e4b62197ce8e1dfe456477ae9ee384f +2011-01-16T15:23:11.666065Z +4729 jplang @@ -95,10 +98,7 @@ -27995 - -api_test -dir +28869 admin_test.rb file @@ -106,11 +106,11 @@ -2010-11-19T13:04:46.192843Z -9d09badb144b1e0700cd7996b6582064 -2010-10-04T15:36:16.880272Z -4231 -edavis10 +2011-03-03T11:05:08.000000Z +fbd4d2a8c15f4ec209250f3395903604 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -132,7 +132,7 @@ -2097 +2102 projects_test.rb file @@ -140,11 +140,11 @@ -2010-11-19T13:04:46.192843Z -c93f89c5c055ea2c9f60c8b845b3dc18 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +4b83660bc635b651f2e1d2d8ee50b84b +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -166,7 +166,7 @@ -1555 +1560 issues_test.rb file @@ -174,11 +174,11 @@ -2010-11-19T13:04:46.196712Z -d074b40a90cba528fe661e18a6e69f23 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +09fa9e6798468c9b7fda21b438e16c5e +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -200,7 +200,7 @@ -4796 +4801 account_test.rb file @@ -208,11 +208,11 @@ -2010-11-19T13:04:46.196712Z -8241ee2ac85e8c0bd227d80e120c2112 -2010-11-14T16:45:32.457767Z -4407 -jplang +2011-03-03T11:05:08.000000Z +5cdf08841a7442b774036772bb1fc1a7 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -234,7 +234,7 @@ -7134 +7139 layout_test.rb file @@ -242,11 +242,11 @@ -2010-09-23T14:37:45.435782Z -b7820d068018240701ff34e9ff0a00d9 -2010-08-19T01:28:33.455566Z -3951 -edavis10 +2011-03-03T11:05:08.000000Z +ff949103a3bdac892a3372cfb71047f0 +2010-12-12T23:24:34.194336Z +4509 +jbbarth @@ -268,5 +268,5 @@ -621 +626 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/text-base/account_test.rb.svn-base --- a/test/integration/.svn/text-base/account_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/text-base/account_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) begin require 'mocha' diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/text-base/admin_test.rb.svn-base --- a/test/integration/.svn/text-base/admin_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/text-base/admin_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class AdminTest < ActionController::IntegrationTest fixtures :all @@ -25,7 +25,7 @@ get "/users/new" assert_response :success assert_template "users/new" - post "/users/create", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en" }, :password => "psmith09", :password_confirmation => "psmith09" + post "/users/create", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en", :password => "psmith09", :password_confirmation => "psmith09" } user = User.find_by_login("psmith") assert_kind_of User, user diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/text-base/application_test.rb.svn-base --- a/test/integration/.svn/text-base/application_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/text-base/application_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class ApplicationTest < ActionController::IntegrationTest include Redmine::I18n diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/text-base/issues_test.rb.svn-base --- a/test/integration/.svn/text-base/issues_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/text-base/issues_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class IssuesTest < ActionController::IntegrationTest fixtures :projects, diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/text-base/layout_test.rb.svn-base --- a/test/integration/.svn/text-base/layout_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/text-base/layout_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class LayoutTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/text-base/projects_test.rb.svn-base --- a/test/integration/.svn/text-base/projects_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/text-base/projects_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class ProjectsTest < ActionController::IntegrationTest fixtures :projects, :users, :members diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/.svn/text-base/routing_test.rb.svn-base --- a/test/integration/.svn/text-base/routing_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/.svn/text-base/routing_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class RoutingTest < ActionController::IntegrationTest context "activities" do @@ -285,17 +285,26 @@ context "users" do should_route :get, "/users", :controller => 'users', :action => 'index' + should_route :get, "/users.xml", :controller => 'users', :action => 'index', :format => 'xml' should_route :get, "/users/44", :controller => 'users', :action => 'show', :id => '44' + should_route :get, "/users/44.xml", :controller => 'users', :action => 'show', :id => '44', :format => 'xml' + should_route :get, "/users/current", :controller => 'users', :action => 'show', :id => 'current' + should_route :get, "/users/current.xml", :controller => 'users', :action => 'show', :id => 'current', :format => 'xml' should_route :get, "/users/new", :controller => 'users', :action => 'new' should_route :get, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444' should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership' should_route :post, "/users", :controller => 'users', :action => 'create' + should_route :post, "/users.xml", :controller => 'users', :action => 'create', :format => 'xml' should_route :post, "/users/123/memberships", :controller => 'users', :action => 'edit_membership', :id => '123' should_route :post, "/users/123/memberships/55", :controller => 'users', :action => 'edit_membership', :id => '123', :membership_id => '55' should_route :post, "/users/567/memberships/12/destroy", :controller => 'users', :action => 'destroy_membership', :id => '567', :membership_id => '12' should_route :put, "/users/444", :controller => 'users', :action => 'update', :id => '444' + should_route :put, "/users/444.xml", :controller => 'users', :action => 'update', :id => '444', :format => 'xml' + + should_route :delete, "/users/44", :controller => 'users', :action => 'destroy', :id => '44' + should_route :delete, "/users/44.xml", :controller => 'users', :action => 'destroy', :id => '44', :format => 'xml' end # TODO: should they all be scoped under /projects/:project_id ? diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/account_test.rb --- a/test/integration/account_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/account_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) begin require 'mocha' diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/admin_test.rb --- a/test/integration/admin_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/admin_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class AdminTest < ActionController::IntegrationTest fixtures :all @@ -25,7 +25,7 @@ get "/users/new" assert_response :success assert_template "users/new" - post "/users/create", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en" }, :password => "psmith09", :password_confirmation => "psmith09" + post "/users/create", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en", :password => "psmith09", :password_confirmation => "psmith09" } user = User.find_by_login("psmith") assert_kind_of User, user diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/all-wcprops --- a/test/integration/api_test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,41 +1,59 @@ K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/4397/trunk/test/integration/api_test +/svn/!svn/ver/4729/trunk/test/integration/api_test END token_authentication_test.rb K 25 svn:wc:ra_dav:version-url V 79 -/svn/!svn/ver/4358/trunk/test/integration/api_test/token_authentication_test.rb +/svn/!svn/ver/4509/trunk/test/integration/api_test/token_authentication_test.rb +END +users_test.rb +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/4729/trunk/test/integration/api_test/users_test.rb +END +time_entries_test.rb +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/4509/trunk/test/integration/api_test/time_entries_test.rb END http_basic_login_test.rb K 25 svn:wc:ra_dav:version-url V 75 -/svn/!svn/ver/4360/trunk/test/integration/api_test/http_basic_login_test.rb +/svn/!svn/ver/4509/trunk/test/integration/api_test/http_basic_login_test.rb END projects_test.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/4397/trunk/test/integration/api_test/projects_test.rb +/svn/!svn/ver/4645/trunk/test/integration/api_test/projects_test.rb END issues_test.rb K 25 svn:wc:ra_dav:version-url V 65 -/svn/!svn/ver/4397/trunk/test/integration/api_test/issues_test.rb +/svn/!svn/ver/4509/trunk/test/integration/api_test/issues_test.rb END http_basic_login_with_api_token_test.rb K 25 svn:wc:ra_dav:version-url V 90 -/svn/!svn/ver/4363/trunk/test/integration/api_test/http_basic_login_with_api_token_test.rb +/svn/!svn/ver/4509/trunk/test/integration/api_test/http_basic_login_with_api_token_test.rb +END +news_test.rb +K 25 +svn:wc:ra_dav:version-url +V 63 +/svn/!svn/ver/4509/trunk/test/integration/api_test/news_test.rb END disabled_rest_api_test.rb K 25 svn:wc:ra_dav:version-url V 76 -/svn/!svn/ver/4357/trunk/test/integration/api_test/disabled_rest_api_test.rb +/svn/!svn/ver/4509/trunk/test/integration/api_test/disabled_rest_api_test.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/entries --- a/test/integration/api_test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/integration/api_test http://redmine.rubyforge.org/svn -2010-11-13T10:05:43.644565Z -4397 +2011-01-16T15:23:11.666065Z +4729 jplang @@ -32,11 +32,11 @@ -2010-11-19T13:04:46.164708Z -65fbddeb3566ca683746b74e4cbbcedd -2010-11-01T15:45:03.207475Z -4358 -edavis10 +2011-03-03T11:05:08.000000Z +7d38bb393dfe949c081c7e9ee2ea0caa +2010-12-12T23:24:34.194336Z +4509 +jbbarth @@ -58,7 +58,75 @@ -606 +611 + +users_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +5cca5d3e833a26e12978491298f55859 +2011-01-16T15:23:11.666065Z +4729 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +9688 + +time_entries_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +1704d0f93701094c0ebf95183e078b5f +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +5254 http_basic_login_test.rb file @@ -66,11 +134,11 @@ -2010-11-19T13:04:46.164708Z -c8145f134a31604365baa69990b0233f -2010-11-02T15:52:06.649052Z -4360 -edavis10 +2011-03-03T11:05:08.000000Z +92abe10e190b64c60afc90866336aa7c +2010-12-12T23:24:34.194336Z +4509 +jbbarth @@ -92,7 +160,7 @@ -830 +835 projects_test.rb file @@ -100,10 +168,10 @@ -2010-11-19T13:04:46.164708Z -925aa948a6a6bcf558ea5270731a93e5 -2010-11-13T10:05:43.644565Z -4397 +2011-03-03T11:05:08.000000Z +31d08ba85b57fcdb41e06c1f367de87e +2011-01-06T20:36:31.826591Z +4645 jplang has-props @@ -126,7 +194,7 @@ -4223 +9611 issues_test.rb file @@ -134,11 +202,11 @@ -2010-11-19T13:04:46.164708Z -4d1156dc608214ea129768309dd61963 -2010-11-13T10:05:43.644565Z -4397 -jplang +2011-03-03T11:05:08.000000Z +a4c38f734c93d99d52de27d41a380756 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -160,7 +228,7 @@ -11171 +16817 http_basic_login_with_api_token_test.rb file @@ -168,11 +236,11 @@ -2010-11-19T13:04:46.164708Z -48bd13d41a1e011f9bdde27bc8cf034c -2010-11-03T16:48:23.980579Z -4363 -edavis10 +2011-03-03T11:05:08.000000Z +445e18c4a9d648b99d948eac4e750480 +2010-12-12T23:24:34.194336Z +4509 +jbbarth @@ -194,7 +262,41 @@ -634 +639 + +news_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +bee85bcaab5d8fb5f90a64ad4ac32e3c +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +2799 disabled_rest_api_test.rb file @@ -202,11 +304,11 @@ -2010-11-19T13:04:46.164708Z -5294c8d805e67e246bb1535b4fe769d4 -2010-11-01T15:26:05.436106Z -4357 -edavis10 +2011-03-03T11:05:08.000000Z +24e8e5b1544016befedeea49b8fb5cb5 +2010-12-12T23:24:34.194336Z +4509 +jbbarth @@ -228,5 +330,5 @@ -3835 +3840 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/prop-base/news_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/.svn/prop-base/news_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/prop-base/time_entries_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/.svn/prop-base/time_entries_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/prop-base/users_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/.svn/prop-base/users_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/disabled_rest_api_test.rb.svn-base --- a/test/integration/api_test/.svn/text-base/disabled_rest_api_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/text-base/disabled_rest_api_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::DisabledRestApiTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/http_basic_login_test.rb.svn-base --- a/test/integration/api_test/.svn/text-base/http_basic_login_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/text-base/http_basic_login_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::HttpBasicLoginTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/http_basic_login_with_api_token_test.rb.svn-base --- a/test/integration/api_test/.svn/text-base/http_basic_login_with_api_token_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/text-base/http_basic_login_with_api_token_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::HttpBasicLoginWithApiTokenTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/issues_test.rb.svn-base --- a/test/integration/api_test/.svn/text-base/issues_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/text-base/issues_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::IssuesTest < ActionController::IntegrationTest fixtures :projects, @@ -46,10 +46,60 @@ Setting.rest_api_enabled = '1' end - # Use a private project to make sure auth is really working and not just - # only showing public issues. context "/index.xml" do + # Use a private project to make sure auth is really working and not just + # only showing public issues. should_allow_api_authentication(:get, "/projects/private-child/issues.xml") + + should "contain metadata" do + get '/issues.xml' + + assert_tag :tag => 'issues', + :attributes => { + :type => 'array', + :total_count => assigns(:issue_count), + :limit => 25, + :offset => 0 + } + end + + context "with offset and limit" do + should "use the params" do + get '/issues.xml?offset=2&limit=3' + + assert_equal 3, assigns(:limit) + assert_equal 2, assigns(:offset) + assert_tag :tag => 'issues', :children => {:count => 3, :only => {:tag => 'issue'}} + end + end + + context "with nometa param" do + should "not contain metadata" do + get '/issues.xml?nometa=1' + + assert_tag :tag => 'issues', + :attributes => { + :type => 'array', + :total_count => nil, + :limit => nil, + :offset => nil + } + end + end + + context "with nometa header" do + should "not contain metadata" do + get '/issues.xml', {}, {'X-Redmine-Nometa' => '1'} + + assert_tag :tag => 'issues', + :attributes => { + :type => 'array', + :total_count => nil, + :limit => nil, + :offset => nil + } + end + end end context "/index.json" do @@ -74,7 +124,7 @@ get '/issues.json?status_id=5' json = ActiveSupport::JSON.decode(response.body) - status_ids_used = json.collect {|j| j['status_id'] } + status_ids_used = json['issues'].collect {|j| j['status']['id'] } assert_equal 3, status_ids_used.length assert status_ids_used.all? {|id| id == 5 } end @@ -89,6 +139,120 @@ context "/issues/6.json" do should_allow_api_authentication(:get, "/issues/6.json") end + + context "GET /issues/:id" do + context "with journals" do + context ".xml" do + should "display journals" do + get '/issues/1.xml?include=journals' + + assert_tag :tag => 'issue', + :child => { + :tag => 'journals', + :attributes => { :type => 'array' }, + :child => { + :tag => 'journal', + :attributes => { :id => '1'}, + :child => { + :tag => 'details', + :attributes => { :type => 'array' }, + :child => { + :tag => 'detail', + :attributes => { :name => 'status_id' }, + :child => { + :tag => 'old_value', + :content => '1', + :sibling => { + :tag => 'new_value', + :content => '2' + } + } + } + } + } + } + end + end + end + + context "with custom fields" do + context ".xml" do + should "display custom fields" do + get '/issues/3.xml' + + assert_tag :tag => 'issue', + :child => { + :tag => 'custom_fields', + :attributes => { :type => 'array' }, + :child => { + :tag => 'custom_field', + :attributes => { :id => '1'}, + :child => { + :tag => 'value', + :content => 'MySQL' + } + } + } + + assert_nothing_raised do + Hash.from_xml(response.body).to_xml + end + end + end + end + + context "with subtasks" do + setup do + @c1 = Issue.generate!(:status_id => 1, :subject => "child c1", :tracker_id => 1, :project_id => 1, :parent_issue_id => 1) + @c2 = Issue.generate!(:status_id => 1, :subject => "child c2", :tracker_id => 1, :project_id => 1, :parent_issue_id => 1) + @c3 = Issue.generate!(:status_id => 1, :subject => "child c3", :tracker_id => 1, :project_id => 1, :parent_issue_id => @c1.id) + end + + context ".xml" do + should "display children" do + get '/issues/1.xml?include=children' + + assert_tag :tag => 'issue', + :child => { + :tag => 'children', + :children => {:count => 2}, + :child => { + :tag => 'issue', + :attributes => {:id => @c1.id.to_s}, + :child => { + :tag => 'subject', + :content => 'child c1', + :sibling => { + :tag => 'children', + :children => {:count => 1}, + :child => { + :tag => 'issue', + :attributes => {:id => @c3.id.to_s} + } + } + } + } + } + end + + context ".json" do + should "display children" do + get '/issues/1.json?include=children' + + json = ActiveSupport::JSON.decode(response.body) + assert_equal([ + { + 'id' => @c1.id, 'subject' => 'child c1', 'tracker' => {'id' => 1, 'name' => 'Bug'}, + 'children' => [{ 'id' => @c3.id, 'subject' => 'child c3', 'tracker' => {'id' => 1, 'name' => 'Bug'} }] + }, + { 'id' => @c2.id, 'subject' => 'child c2', 'tracker' => {'id' => 1, 'name' => 'Bug'} } + ], + json['issue']['children']) + end + end + end + end + end context "POST /issues.xml" do should_allow_api_authentication(:post, @@ -160,7 +324,7 @@ end json = ActiveSupport::JSON.decode(response.body) - assert_equal "can't be blank", json.first['subject'] + assert json['errors'].include?(['subject', "can't be blank"]) end end @@ -204,6 +368,23 @@ end + context "PUT /issues/3.xml with custom fields" do + setup do + @parameters = {:issue => {:custom_fields => [{'id' => '1', 'value' => 'PostgreSQL' }, {'id' => '2', 'value' => '150'}]}} + @headers = { :authorization => credentials('jsmith') } + end + + should "update custom fields" do + assert_no_difference('Issue.count') do + put '/issues/3.xml', @parameters, @headers + end + + issue = Issue.find(3) + assert_equal '150', issue.custom_value_for(2).value + assert_equal 'PostgreSQL', issue.custom_value_for(1).value + end + end + context "PUT /issues/6.xml with failed update" do setup do @parameters = {:issue => {:subject => ''}} @@ -300,7 +481,7 @@ put '/issues/6.json', @parameters, @headers json = ActiveSupport::JSON.decode(response.body) - assert_equal "can't be blank", json.first['subject'] + assert json['errors'].include?(['subject', "can't be blank"]) end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/news_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/.svn/text-base/news_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,94 @@ +# 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 File.expand_path('../../../test_helper', __FILE__) +require 'pp' +class ApiTest::NewsTest < ActionController::IntegrationTest + fixtures :all + + def setup + Setting.rest_api_enabled = '1' + end + + context "GET /news" do + context ".xml" do + should "return news" do + get '/news.xml' + + assert_tag :tag => 'news', + :attributes => {:type => 'array'}, + :child => { + :tag => 'news', + :child => { + :tag => 'id', + :content => '2' + } + } + end + end + + context ".json" do + should "return news" do + get '/news.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['news'] + assert_kind_of Hash, json['news'].first + assert_equal 2, json['news'].first['id'] + end + end + end + + context "GET /projects/:project_id/news" do + context ".xml" do + should_allow_api_authentication(:get, "/projects/onlinestore/news.xml") + + should "return news" do + get '/projects/ecookbook/news.xml' + + assert_tag :tag => 'news', + :attributes => {:type => 'array'}, + :child => { + :tag => 'news', + :child => { + :tag => 'id', + :content => '2' + } + } + end + end + + context ".json" do + should_allow_api_authentication(:get, "/projects/onlinestore/news.json") + + should "return news" do + get '/projects/ecookbook/news.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['news'] + assert_kind_of Hash, json['news'].first + assert_equal 2, json['news'].first['id'] + end + end + end + + def credentials(user, password=nil) + ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user) + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/projects_test.rb.svn-base --- a/test/integration/api_test/.svn/text-base/projects_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/text-base/projects_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::ProjectsTest < ActionController::IntegrationTest fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details, @@ -25,84 +25,234 @@ def setup Setting.rest_api_enabled = '1' end - - def test_index - get '/projects.xml' - assert_response :success - assert_equal 'application/xml', @response.content_type - end - - def test_show - get '/projects/1.xml' - assert_response :success - assert_equal 'application/xml', @response.content_type - assert_tag 'custom_field', :attributes => {:name => 'Development status'}, :content => 'Stable' - end - - def test_show_should_not_display_hidden_custom_fields - ProjectCustomField.find_by_name('Development status').update_attribute :visible, false - get '/projects/1.xml' - assert_response :success - assert_equal 'application/xml', @response.content_type - assert_no_tag 'custom_field', :attributes => {:name => 'Development status'} - end - - def test_create - attributes = {:name => 'API test', :identifier => 'api-test'} - assert_difference 'Project.count' do - post '/projects.xml', {:project => attributes}, :authorization => credentials('admin') - end - - project = Project.first(:order => 'id DESC') - attributes.each do |attribute, value| - assert_equal value, project.send(attribute) + + context "GET /projects" do + context ".xml" do + should "return projects" do + get '/projects.xml' + assert_response :success + assert_equal 'application/xml', @response.content_type + + assert_tag :tag => 'projects', + :child => {:tag => 'project', :child => {:tag => 'id', :content => '1'}} + end end - assert_response :created - assert_equal 'application/xml', @response.content_type - assert_tag 'project', :child => {:tag => 'id', :content => project.id.to_s} - end - - def test_create_failure - attributes = {:name => 'API test'} - assert_no_difference 'Project.count' do - post '/projects.xml', {:project => attributes}, :authorization => credentials('admin') - end - assert_response :unprocessable_entity - assert_equal 'application/xml', @response.content_type - assert_tag :errors, :child => {:tag => 'error', :content => "Identifier can't be blank"} - end - - def test_update - attributes = {:name => 'API update'} - assert_no_difference 'Project.count' do - put '/projects/1.xml', {:project => attributes}, :authorization => credentials('jsmith') - end - assert_response :ok - assert_equal 'application/xml', @response.content_type - project = Project.find(1) - attributes.each do |attribute, value| - assert_equal value, project.send(attribute) + context ".json" do + should "return projects" do + get '/projects.json' + assert_response :success + assert_equal 'application/json', @response.content_type + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['projects'] + assert_kind_of Hash, json['projects'].first + assert json['projects'].first.has_key?('id') + end end end - def test_update_failure - attributes = {:name => ''} - assert_no_difference 'Project.count' do - put '/projects/1.xml', {:project => attributes}, :authorization => credentials('jsmith') + context "GET /projects/:id" do + context ".xml" do + # TODO: A private project is needed because should_allow_api_authentication + # actually tests that authentication is *required*, not just allowed + should_allow_api_authentication(:get, "/projects/2.xml") + + should "return requested project" do + get '/projects/1.xml' + assert_response :success + assert_equal 'application/xml', @response.content_type + + assert_tag :tag => 'project', + :child => {:tag => 'id', :content => '1'} + assert_tag :tag => 'custom_field', + :attributes => {:name => 'Development status'}, :content => 'Stable' + end + + context "with hidden custom fields" do + setup do + ProjectCustomField.find_by_name('Development status').update_attribute :visible, false + end + + should "not display hidden custom fields" do + get '/projects/1.xml' + assert_response :success + assert_equal 'application/xml', @response.content_type + + assert_no_tag 'custom_field', + :attributes => {:name => 'Development status'} + end + end end - assert_response :unprocessable_entity - assert_equal 'application/xml', @response.content_type - assert_tag :errors, :child => {:tag => 'error', :content => "Name can't be blank"} + + context ".json" do + should_allow_api_authentication(:get, "/projects/2.json") + + should "return requested project" do + get '/projects/1.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Hash, json['project'] + assert_equal 1, json['project']['id'] + end + end + end + + context "POST /projects" do + context "with valid parameters" do + setup do + Setting.default_projects_modules = ['issue_tracking', 'repository'] + @parameters = {:project => {:name => 'API test', :identifier => 'api-test'}} + end + + context ".xml" do + should_allow_api_authentication(:post, + '/projects.xml', + {:project => {:name => 'API test', :identifier => 'api-test'}}, + {:success_code => :created}) + + + should "create a project with the attributes" do + assert_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + project = Project.first(:order => 'id DESC') + assert_equal 'API test', project.name + assert_equal 'api-test', project.identifier + assert_equal ['issue_tracking', 'repository'], project.enabled_module_names.sort + assert_equal Tracker.all.size, project.trackers.size + + assert_response :created + assert_equal 'application/xml', @response.content_type + assert_tag 'project', :child => {:tag => 'id', :content => project.id.to_s} + end + + should "accept enabled_module_names attribute" do + @parameters[:project].merge!({:enabled_module_names => ['issue_tracking', 'news', 'time_tracking']}) + + assert_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + project = Project.first(:order => 'id DESC') + assert_equal ['issue_tracking', 'news', 'time_tracking'], project.enabled_module_names.sort + end + + should "accept tracker_ids attribute" do + @parameters[:project].merge!({:tracker_ids => [1, 3]}) + + assert_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + project = Project.first(:order => 'id DESC') + assert_equal [1, 3], project.trackers.map(&:id).sort + end + end + end + + context "with invalid parameters" do + setup do + @parameters = {:project => {:name => 'API test'}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Identifier can't be blank"} + end + end + end end - def test_destroy - assert_difference 'Project.count', -1 do - delete '/projects/2.xml', {}, :authorization => credentials('admin') + context "PUT /projects/:id" do + context "with valid parameters" do + setup do + @parameters = {:project => {:name => 'API update'}} + end + + context ".xml" do + should_allow_api_authentication(:put, + '/projects/2.xml', + {:project => {:name => 'API update'}}, + {:success_code => :ok}) + + should "update the project" do + assert_no_difference 'Project.count' do + put '/projects/2.xml', @parameters, :authorization => credentials('jsmith') + end + assert_response :ok + assert_equal 'application/xml', @response.content_type + project = Project.find(2) + assert_equal 'API update', project.name + end + + should "accept enabled_module_names attribute" do + @parameters[:project].merge!({:enabled_module_names => ['issue_tracking', 'news', 'time_tracking']}) + + assert_no_difference 'Project.count' do + put '/projects/2.xml', @parameters, :authorization => credentials('admin') + end + assert_response :ok + project = Project.find(2) + assert_equal ['issue_tracking', 'news', 'time_tracking'], project.enabled_module_names.sort + end + + should "accept tracker_ids attribute" do + @parameters[:project].merge!({:tracker_ids => [1, 3]}) + + assert_no_difference 'Project.count' do + put '/projects/2.xml', @parameters, :authorization => credentials('admin') + end + assert_response :ok + project = Project.find(2) + assert_equal [1, 3], project.trackers.map(&:id).sort + end + end end - assert_response :ok - assert_equal 'application/xml', @response.content_type - assert_nil Project.find_by_id(2) + + context "with invalid parameters" do + setup do + @parameters = {:project => {:name => ''}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('Project.count') do + put '/projects/2.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Name can't be blank"} + end + end + end + end + + context "DELETE /projects/:id" do + context ".xml" do + should_allow_api_authentication(:delete, + '/projects/2.xml', + {}, + {:success_code => :ok}) + + should "delete the project" do + assert_difference('Project.count',-1) do + delete '/projects/2.xml', {}, :authorization => credentials('admin') + end + assert_response :ok + assert_nil Project.find_by_id(2) + end + end end def credentials(user, password=nil) diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/time_entries_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/.svn/text-base/time_entries_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,134 @@ +# 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 File.expand_path('../../../test_helper', __FILE__) + +class ApiTest::TimeEntriesTest < ActionController::IntegrationTest + fixtures :all + + def setup + Setting.rest_api_enabled = '1' + end + + context "GET /time_entries.xml" do + should "return time entries" do + get '/time_entries.xml', {}, :authorization => credentials('jsmith') + assert_response :success + assert_equal 'application/xml', @response.content_type + assert_tag :tag => 'time_entries', + :child => {:tag => 'time_entry', :child => {:tag => 'id', :content => '2'}} + end + end + + context "GET /time_entries/2.xml" do + should "return requested time entry" do + get '/time_entries/2.xml', {}, :authorization => credentials('jsmith') + assert_response :success + assert_equal 'application/xml', @response.content_type + assert_tag :tag => 'time_entry', + :child => {:tag => 'id', :content => '2'} + end + end + + context "POST /time_entries.xml" do + context "with issue_id" do + should "return create time entry" do + assert_difference 'TimeEntry.count' do + post '/time_entries.xml', {:time_entry => {:issue_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith') + end + assert_response :created + assert_equal 'application/xml', @response.content_type + + entry = TimeEntry.first(:order => 'id DESC') + assert_equal 'jsmith', entry.user.login + assert_equal Issue.find(1), entry.issue + assert_equal Project.find(1), entry.project + assert_equal Date.parse('2010-12-02'), entry.spent_on + assert_equal 3.5, entry.hours + assert_equal TimeEntryActivity.find(11), entry.activity + end + end + + context "with project_id" do + should "return create time entry" do + assert_difference 'TimeEntry.count' do + post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith') + end + assert_response :created + assert_equal 'application/xml', @response.content_type + + entry = TimeEntry.first(:order => 'id DESC') + assert_equal 'jsmith', entry.user.login + assert_nil entry.issue + assert_equal Project.find(1), entry.project + assert_equal Date.parse('2010-12-02'), entry.spent_on + assert_equal 3.5, entry.hours + assert_equal TimeEntryActivity.find(11), entry.activity + end + end + + context "with invalid parameters" do + should "return errors" do + assert_no_difference 'TimeEntry.count' do + post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :activity_id => '11'}}, :authorization => credentials('jsmith') + end + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + + assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"} + end + end + end + + context "PUT /time_entries/2.xml" do + context "with valid parameters" do + should "update time entry" do + assert_no_difference 'TimeEntry.count' do + put '/time_entries/2.xml', {:time_entry => {:comments => 'API Update'}}, :authorization => credentials('jsmith') + end + assert_response :ok + assert_equal 'API Update', TimeEntry.find(2).comments + end + end + + context "with invalid parameters" do + should "return errors" do + assert_no_difference 'TimeEntry.count' do + put '/time_entries/2.xml', {:time_entry => {:hours => '', :comments => 'API Update'}}, :authorization => credentials('jsmith') + end + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + + assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"} + end + end + end + + context "DELETE /time_entries/2.xml" do + should "destroy time entry" do + assert_difference 'TimeEntry.count', -1 do + delete '/time_entries/2.xml', {}, :authorization => credentials('jsmith') + end + assert_response :ok + assert_nil TimeEntry.find_by_id(2) + end + end + + def credentials(user, password=nil) + ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user) + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/token_authentication_test.rb.svn-base --- a/test/integration/api_test/.svn/text-base/token_authentication_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/.svn/text-base/token_authentication_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::TokenAuthenticationTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/.svn/text-base/users_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/.svn/text-base/users_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,285 @@ +# 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 File.expand_path('../../../test_helper', __FILE__) +require 'pp' +class ApiTest::UsersTest < ActionController::IntegrationTest + fixtures :users + + def setup + Setting.rest_api_enabled = '1' + end + + context "GET /users" do + should_allow_api_authentication(:get, "/users.xml") + should_allow_api_authentication(:get, "/users.json") + end + + context "GET /users/2" do + context ".xml" do + should "return requested user" do + get '/users/2.xml' + + assert_tag :tag => 'user', + :child => {:tag => 'id', :content => '2'} + end + end + + context ".json" do + should "return requested user" do + get '/users/2.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Hash, json['user'] + assert_equal 2, json['user']['id'] + end + end + end + + context "GET /users/current" do + context ".xml" do + should "require authentication" do + get '/users/current.xml' + + assert_response 401 + end + + should "return current user" do + get '/users/current.xml', {}, :authorization => credentials('jsmith') + + assert_tag :tag => 'user', + :child => {:tag => 'id', :content => '2'} + end + end + end + + context "POST /users" do + context "with valid parameters" do + setup do + @parameters = {:user => {:login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname', :mail => 'foo@example.net', :password => 'secret', :mail_notification => 'only_assigned'}} + end + + context ".xml" do + should_allow_api_authentication(:post, + '/users.xml', + {:user => {:login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname', :mail => 'foo@example.net', :password => 'secret'}}, + {:success_code => :created}) + + should "create a user with the attributes" do + assert_difference('User.count') do + post '/users.xml', @parameters, :authorization => credentials('admin') + end + + user = User.first(:order => 'id DESC') + assert_equal 'foo', user.login + assert_equal 'Firstname', user.firstname + assert_equal 'Lastname', user.lastname + assert_equal 'foo@example.net', user.mail + assert_equal 'only_assigned', user.mail_notification + assert !user.admin? + assert user.check_password?('secret') + + assert_response :created + assert_equal 'application/xml', @response.content_type + assert_tag 'user', :child => {:tag => 'id', :content => user.id.to_s} + end + end + + context ".json" do + should_allow_api_authentication(:post, + '/users.json', + {:user => {:login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname', :mail => 'foo@example.net'}}, + {:success_code => :created}) + + should "create a user with the attributes" do + assert_difference('User.count') do + post '/users.json', @parameters, :authorization => credentials('admin') + end + + user = User.first(:order => 'id DESC') + assert_equal 'foo', user.login + assert_equal 'Firstname', user.firstname + assert_equal 'Lastname', user.lastname + assert_equal 'foo@example.net', user.mail + assert !user.admin? + + assert_response :created + assert_equal 'application/json', @response.content_type + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Hash, json['user'] + assert_equal user.id, json['user']['id'] + end + end + end + + context "with invalid parameters" do + setup do + @parameters = {:user => {:login => 'foo', :lastname => 'Lastname', :mail => 'foo'}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('User.count') do + post '/users.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Firstname can't be blank"} + end + end + + context ".json" do + should "return errors" do + assert_no_difference('User.count') do + post '/users.json', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/json', @response.content_type + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert json.has_key?('errors') + assert_kind_of Array, json['errors'] + end + end + end + end + + context "PUT /users/2" do + context "with valid parameters" do + setup do + @parameters = {:user => {:login => 'jsmith', :firstname => 'John', :lastname => 'Renamed', :mail => 'jsmith@somenet.foo'}} + end + + context ".xml" do + should_allow_api_authentication(:put, + '/users/2.xml', + {:user => {:login => 'jsmith', :firstname => 'John', :lastname => 'Renamed', :mail => 'jsmith@somenet.foo'}}, + {:success_code => :ok}) + + should "update user with the attributes" do + assert_no_difference('User.count') do + put '/users/2.xml', @parameters, :authorization => credentials('admin') + end + + user = User.find(2) + assert_equal 'jsmith', user.login + assert_equal 'John', user.firstname + assert_equal 'Renamed', user.lastname + assert_equal 'jsmith@somenet.foo', user.mail + assert !user.admin? + + assert_response :ok + end + end + + context ".json" do + should_allow_api_authentication(:put, + '/users/2.json', + {:user => {:login => 'jsmith', :firstname => 'John', :lastname => 'Renamed', :mail => 'jsmith@somenet.foo'}}, + {:success_code => :ok}) + + should "update user with the attributes" do + assert_no_difference('User.count') do + put '/users/2.json', @parameters, :authorization => credentials('admin') + end + + user = User.find(2) + assert_equal 'jsmith', user.login + assert_equal 'John', user.firstname + assert_equal 'Renamed', user.lastname + assert_equal 'jsmith@somenet.foo', user.mail + assert !user.admin? + + assert_response :ok + end + end + end + + context "with invalid parameters" do + setup do + @parameters = {:user => {:login => 'jsmith', :firstname => '', :lastname => 'Lastname', :mail => 'foo'}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('User.count') do + put '/users/2.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Firstname can't be blank"} + end + end + + context ".json" do + should "return errors" do + assert_no_difference('User.count') do + put '/users/2.json', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/json', @response.content_type + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert json.has_key?('errors') + assert_kind_of Array, json['errors'] + end + end + end + end + + context "DELETE /users/2" do + context ".xml" do + should_allow_api_authentication(:delete, + '/users/2.xml', + {}, + {:success_code => :ok}) + + should "delete user" do + assert_difference('User.count', -1) do + delete '/users/2.xml', {}, :authorization => credentials('admin') + end + + assert_response :ok + end + end + + context ".json" do + should_allow_api_authentication(:delete, + '/users/2.xml', + {}, + {:success_code => :ok}) + + should "delete user" do + assert_difference('User.count', -1) do + delete '/users/2.json', {}, :authorization => credentials('admin') + end + + assert_response :ok + end + end + end + + def credentials(user, password=nil) + ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user) + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/disabled_rest_api_test.rb --- a/test/integration/api_test/disabled_rest_api_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/disabled_rest_api_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::DisabledRestApiTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/http_basic_login_test.rb --- a/test/integration/api_test/http_basic_login_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/http_basic_login_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::HttpBasicLoginTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/http_basic_login_with_api_token_test.rb --- a/test/integration/api_test/http_basic_login_with_api_token_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/http_basic_login_with_api_token_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::HttpBasicLoginWithApiTokenTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/issues_test.rb --- a/test/integration/api_test/issues_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/issues_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::IssuesTest < ActionController::IntegrationTest fixtures :projects, @@ -46,10 +46,60 @@ Setting.rest_api_enabled = '1' end - # Use a private project to make sure auth is really working and not just - # only showing public issues. context "/index.xml" do + # Use a private project to make sure auth is really working and not just + # only showing public issues. should_allow_api_authentication(:get, "/projects/private-child/issues.xml") + + should "contain metadata" do + get '/issues.xml' + + assert_tag :tag => 'issues', + :attributes => { + :type => 'array', + :total_count => assigns(:issue_count), + :limit => 25, + :offset => 0 + } + end + + context "with offset and limit" do + should "use the params" do + get '/issues.xml?offset=2&limit=3' + + assert_equal 3, assigns(:limit) + assert_equal 2, assigns(:offset) + assert_tag :tag => 'issues', :children => {:count => 3, :only => {:tag => 'issue'}} + end + end + + context "with nometa param" do + should "not contain metadata" do + get '/issues.xml?nometa=1' + + assert_tag :tag => 'issues', + :attributes => { + :type => 'array', + :total_count => nil, + :limit => nil, + :offset => nil + } + end + end + + context "with nometa header" do + should "not contain metadata" do + get '/issues.xml', {}, {'X-Redmine-Nometa' => '1'} + + assert_tag :tag => 'issues', + :attributes => { + :type => 'array', + :total_count => nil, + :limit => nil, + :offset => nil + } + end + end end context "/index.json" do @@ -74,7 +124,7 @@ get '/issues.json?status_id=5' json = ActiveSupport::JSON.decode(response.body) - status_ids_used = json.collect {|j| j['status_id'] } + status_ids_used = json['issues'].collect {|j| j['status']['id'] } assert_equal 3, status_ids_used.length assert status_ids_used.all? {|id| id == 5 } end @@ -89,6 +139,120 @@ context "/issues/6.json" do should_allow_api_authentication(:get, "/issues/6.json") end + + context "GET /issues/:id" do + context "with journals" do + context ".xml" do + should "display journals" do + get '/issues/1.xml?include=journals' + + assert_tag :tag => 'issue', + :child => { + :tag => 'journals', + :attributes => { :type => 'array' }, + :child => { + :tag => 'journal', + :attributes => { :id => '1'}, + :child => { + :tag => 'details', + :attributes => { :type => 'array' }, + :child => { + :tag => 'detail', + :attributes => { :name => 'status_id' }, + :child => { + :tag => 'old_value', + :content => '1', + :sibling => { + :tag => 'new_value', + :content => '2' + } + } + } + } + } + } + end + end + end + + context "with custom fields" do + context ".xml" do + should "display custom fields" do + get '/issues/3.xml' + + assert_tag :tag => 'issue', + :child => { + :tag => 'custom_fields', + :attributes => { :type => 'array' }, + :child => { + :tag => 'custom_field', + :attributes => { :id => '1'}, + :child => { + :tag => 'value', + :content => 'MySQL' + } + } + } + + assert_nothing_raised do + Hash.from_xml(response.body).to_xml + end + end + end + end + + context "with subtasks" do + setup do + @c1 = Issue.generate!(:status_id => 1, :subject => "child c1", :tracker_id => 1, :project_id => 1, :parent_issue_id => 1) + @c2 = Issue.generate!(:status_id => 1, :subject => "child c2", :tracker_id => 1, :project_id => 1, :parent_issue_id => 1) + @c3 = Issue.generate!(:status_id => 1, :subject => "child c3", :tracker_id => 1, :project_id => 1, :parent_issue_id => @c1.id) + end + + context ".xml" do + should "display children" do + get '/issues/1.xml?include=children' + + assert_tag :tag => 'issue', + :child => { + :tag => 'children', + :children => {:count => 2}, + :child => { + :tag => 'issue', + :attributes => {:id => @c1.id.to_s}, + :child => { + :tag => 'subject', + :content => 'child c1', + :sibling => { + :tag => 'children', + :children => {:count => 1}, + :child => { + :tag => 'issue', + :attributes => {:id => @c3.id.to_s} + } + } + } + } + } + end + + context ".json" do + should "display children" do + get '/issues/1.json?include=children' + + json = ActiveSupport::JSON.decode(response.body) + assert_equal([ + { + 'id' => @c1.id, 'subject' => 'child c1', 'tracker' => {'id' => 1, 'name' => 'Bug'}, + 'children' => [{ 'id' => @c3.id, 'subject' => 'child c3', 'tracker' => {'id' => 1, 'name' => 'Bug'} }] + }, + { 'id' => @c2.id, 'subject' => 'child c2', 'tracker' => {'id' => 1, 'name' => 'Bug'} } + ], + json['issue']['children']) + end + end + end + end + end context "POST /issues.xml" do should_allow_api_authentication(:post, @@ -160,7 +324,7 @@ end json = ActiveSupport::JSON.decode(response.body) - assert_equal "can't be blank", json.first['subject'] + assert json['errors'].include?(['subject', "can't be blank"]) end end @@ -204,6 +368,23 @@ end + context "PUT /issues/3.xml with custom fields" do + setup do + @parameters = {:issue => {:custom_fields => [{'id' => '1', 'value' => 'PostgreSQL' }, {'id' => '2', 'value' => '150'}]}} + @headers = { :authorization => credentials('jsmith') } + end + + should "update custom fields" do + assert_no_difference('Issue.count') do + put '/issues/3.xml', @parameters, @headers + end + + issue = Issue.find(3) + assert_equal '150', issue.custom_value_for(2).value + assert_equal 'PostgreSQL', issue.custom_value_for(1).value + end + end + context "PUT /issues/6.xml with failed update" do setup do @parameters = {:issue => {:subject => ''}} @@ -300,7 +481,7 @@ put '/issues/6.json', @parameters, @headers json = ActiveSupport::JSON.decode(response.body) - assert_equal "can't be blank", json.first['subject'] + assert json['errors'].include?(['subject', "can't be blank"]) end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/news_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/news_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,94 @@ +# 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 File.expand_path('../../../test_helper', __FILE__) +require 'pp' +class ApiTest::NewsTest < ActionController::IntegrationTest + fixtures :all + + def setup + Setting.rest_api_enabled = '1' + end + + context "GET /news" do + context ".xml" do + should "return news" do + get '/news.xml' + + assert_tag :tag => 'news', + :attributes => {:type => 'array'}, + :child => { + :tag => 'news', + :child => { + :tag => 'id', + :content => '2' + } + } + end + end + + context ".json" do + should "return news" do + get '/news.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['news'] + assert_kind_of Hash, json['news'].first + assert_equal 2, json['news'].first['id'] + end + end + end + + context "GET /projects/:project_id/news" do + context ".xml" do + should_allow_api_authentication(:get, "/projects/onlinestore/news.xml") + + should "return news" do + get '/projects/ecookbook/news.xml' + + assert_tag :tag => 'news', + :attributes => {:type => 'array'}, + :child => { + :tag => 'news', + :child => { + :tag => 'id', + :content => '2' + } + } + end + end + + context ".json" do + should_allow_api_authentication(:get, "/projects/onlinestore/news.json") + + should "return news" do + get '/projects/ecookbook/news.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['news'] + assert_kind_of Hash, json['news'].first + assert_equal 2, json['news'].first['id'] + end + end + end + + def credentials(user, password=nil) + ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user) + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/projects_test.rb --- a/test/integration/api_test/projects_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/projects_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::ProjectsTest < ActionController::IntegrationTest fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details, @@ -25,84 +25,234 @@ def setup Setting.rest_api_enabled = '1' end - - def test_index - get '/projects.xml' - assert_response :success - assert_equal 'application/xml', @response.content_type - end - - def test_show - get '/projects/1.xml' - assert_response :success - assert_equal 'application/xml', @response.content_type - assert_tag 'custom_field', :attributes => {:name => 'Development status'}, :content => 'Stable' - end - - def test_show_should_not_display_hidden_custom_fields - ProjectCustomField.find_by_name('Development status').update_attribute :visible, false - get '/projects/1.xml' - assert_response :success - assert_equal 'application/xml', @response.content_type - assert_no_tag 'custom_field', :attributes => {:name => 'Development status'} - end - - def test_create - attributes = {:name => 'API test', :identifier => 'api-test'} - assert_difference 'Project.count' do - post '/projects.xml', {:project => attributes}, :authorization => credentials('admin') - end - - project = Project.first(:order => 'id DESC') - attributes.each do |attribute, value| - assert_equal value, project.send(attribute) + + context "GET /projects" do + context ".xml" do + should "return projects" do + get '/projects.xml' + assert_response :success + assert_equal 'application/xml', @response.content_type + + assert_tag :tag => 'projects', + :child => {:tag => 'project', :child => {:tag => 'id', :content => '1'}} + end end - assert_response :created - assert_equal 'application/xml', @response.content_type - assert_tag 'project', :child => {:tag => 'id', :content => project.id.to_s} - end - - def test_create_failure - attributes = {:name => 'API test'} - assert_no_difference 'Project.count' do - post '/projects.xml', {:project => attributes}, :authorization => credentials('admin') - end - assert_response :unprocessable_entity - assert_equal 'application/xml', @response.content_type - assert_tag :errors, :child => {:tag => 'error', :content => "Identifier can't be blank"} - end - - def test_update - attributes = {:name => 'API update'} - assert_no_difference 'Project.count' do - put '/projects/1.xml', {:project => attributes}, :authorization => credentials('jsmith') - end - assert_response :ok - assert_equal 'application/xml', @response.content_type - project = Project.find(1) - attributes.each do |attribute, value| - assert_equal value, project.send(attribute) + context ".json" do + should "return projects" do + get '/projects.json' + assert_response :success + assert_equal 'application/json', @response.content_type + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['projects'] + assert_kind_of Hash, json['projects'].first + assert json['projects'].first.has_key?('id') + end end end - def test_update_failure - attributes = {:name => ''} - assert_no_difference 'Project.count' do - put '/projects/1.xml', {:project => attributes}, :authorization => credentials('jsmith') + context "GET /projects/:id" do + context ".xml" do + # TODO: A private project is needed because should_allow_api_authentication + # actually tests that authentication is *required*, not just allowed + should_allow_api_authentication(:get, "/projects/2.xml") + + should "return requested project" do + get '/projects/1.xml' + assert_response :success + assert_equal 'application/xml', @response.content_type + + assert_tag :tag => 'project', + :child => {:tag => 'id', :content => '1'} + assert_tag :tag => 'custom_field', + :attributes => {:name => 'Development status'}, :content => 'Stable' + end + + context "with hidden custom fields" do + setup do + ProjectCustomField.find_by_name('Development status').update_attribute :visible, false + end + + should "not display hidden custom fields" do + get '/projects/1.xml' + assert_response :success + assert_equal 'application/xml', @response.content_type + + assert_no_tag 'custom_field', + :attributes => {:name => 'Development status'} + end + end end - assert_response :unprocessable_entity - assert_equal 'application/xml', @response.content_type - assert_tag :errors, :child => {:tag => 'error', :content => "Name can't be blank"} + + context ".json" do + should_allow_api_authentication(:get, "/projects/2.json") + + should "return requested project" do + get '/projects/1.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Hash, json['project'] + assert_equal 1, json['project']['id'] + end + end + end + + context "POST /projects" do + context "with valid parameters" do + setup do + Setting.default_projects_modules = ['issue_tracking', 'repository'] + @parameters = {:project => {:name => 'API test', :identifier => 'api-test'}} + end + + context ".xml" do + should_allow_api_authentication(:post, + '/projects.xml', + {:project => {:name => 'API test', :identifier => 'api-test'}}, + {:success_code => :created}) + + + should "create a project with the attributes" do + assert_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + project = Project.first(:order => 'id DESC') + assert_equal 'API test', project.name + assert_equal 'api-test', project.identifier + assert_equal ['issue_tracking', 'repository'], project.enabled_module_names.sort + assert_equal Tracker.all.size, project.trackers.size + + assert_response :created + assert_equal 'application/xml', @response.content_type + assert_tag 'project', :child => {:tag => 'id', :content => project.id.to_s} + end + + should "accept enabled_module_names attribute" do + @parameters[:project].merge!({:enabled_module_names => ['issue_tracking', 'news', 'time_tracking']}) + + assert_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + project = Project.first(:order => 'id DESC') + assert_equal ['issue_tracking', 'news', 'time_tracking'], project.enabled_module_names.sort + end + + should "accept tracker_ids attribute" do + @parameters[:project].merge!({:tracker_ids => [1, 3]}) + + assert_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + project = Project.first(:order => 'id DESC') + assert_equal [1, 3], project.trackers.map(&:id).sort + end + end + end + + context "with invalid parameters" do + setup do + @parameters = {:project => {:name => 'API test'}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('Project.count') do + post '/projects.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Identifier can't be blank"} + end + end + end end - def test_destroy - assert_difference 'Project.count', -1 do - delete '/projects/2.xml', {}, :authorization => credentials('admin') + context "PUT /projects/:id" do + context "with valid parameters" do + setup do + @parameters = {:project => {:name => 'API update'}} + end + + context ".xml" do + should_allow_api_authentication(:put, + '/projects/2.xml', + {:project => {:name => 'API update'}}, + {:success_code => :ok}) + + should "update the project" do + assert_no_difference 'Project.count' do + put '/projects/2.xml', @parameters, :authorization => credentials('jsmith') + end + assert_response :ok + assert_equal 'application/xml', @response.content_type + project = Project.find(2) + assert_equal 'API update', project.name + end + + should "accept enabled_module_names attribute" do + @parameters[:project].merge!({:enabled_module_names => ['issue_tracking', 'news', 'time_tracking']}) + + assert_no_difference 'Project.count' do + put '/projects/2.xml', @parameters, :authorization => credentials('admin') + end + assert_response :ok + project = Project.find(2) + assert_equal ['issue_tracking', 'news', 'time_tracking'], project.enabled_module_names.sort + end + + should "accept tracker_ids attribute" do + @parameters[:project].merge!({:tracker_ids => [1, 3]}) + + assert_no_difference 'Project.count' do + put '/projects/2.xml', @parameters, :authorization => credentials('admin') + end + assert_response :ok + project = Project.find(2) + assert_equal [1, 3], project.trackers.map(&:id).sort + end + end end - assert_response :ok - assert_equal 'application/xml', @response.content_type - assert_nil Project.find_by_id(2) + + context "with invalid parameters" do + setup do + @parameters = {:project => {:name => ''}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('Project.count') do + put '/projects/2.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Name can't be blank"} + end + end + end + end + + context "DELETE /projects/:id" do + context ".xml" do + should_allow_api_authentication(:delete, + '/projects/2.xml', + {}, + {:success_code => :ok}) + + should "delete the project" do + assert_difference('Project.count',-1) do + delete '/projects/2.xml', {}, :authorization => credentials('admin') + end + assert_response :ok + assert_nil Project.find_by_id(2) + end + end end def credentials(user, password=nil) diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/time_entries_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/time_entries_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,134 @@ +# 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 File.expand_path('../../../test_helper', __FILE__) + +class ApiTest::TimeEntriesTest < ActionController::IntegrationTest + fixtures :all + + def setup + Setting.rest_api_enabled = '1' + end + + context "GET /time_entries.xml" do + should "return time entries" do + get '/time_entries.xml', {}, :authorization => credentials('jsmith') + assert_response :success + assert_equal 'application/xml', @response.content_type + assert_tag :tag => 'time_entries', + :child => {:tag => 'time_entry', :child => {:tag => 'id', :content => '2'}} + end + end + + context "GET /time_entries/2.xml" do + should "return requested time entry" do + get '/time_entries/2.xml', {}, :authorization => credentials('jsmith') + assert_response :success + assert_equal 'application/xml', @response.content_type + assert_tag :tag => 'time_entry', + :child => {:tag => 'id', :content => '2'} + end + end + + context "POST /time_entries.xml" do + context "with issue_id" do + should "return create time entry" do + assert_difference 'TimeEntry.count' do + post '/time_entries.xml', {:time_entry => {:issue_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith') + end + assert_response :created + assert_equal 'application/xml', @response.content_type + + entry = TimeEntry.first(:order => 'id DESC') + assert_equal 'jsmith', entry.user.login + assert_equal Issue.find(1), entry.issue + assert_equal Project.find(1), entry.project + assert_equal Date.parse('2010-12-02'), entry.spent_on + assert_equal 3.5, entry.hours + assert_equal TimeEntryActivity.find(11), entry.activity + end + end + + context "with project_id" do + should "return create time entry" do + assert_difference 'TimeEntry.count' do + post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith') + end + assert_response :created + assert_equal 'application/xml', @response.content_type + + entry = TimeEntry.first(:order => 'id DESC') + assert_equal 'jsmith', entry.user.login + assert_nil entry.issue + assert_equal Project.find(1), entry.project + assert_equal Date.parse('2010-12-02'), entry.spent_on + assert_equal 3.5, entry.hours + assert_equal TimeEntryActivity.find(11), entry.activity + end + end + + context "with invalid parameters" do + should "return errors" do + assert_no_difference 'TimeEntry.count' do + post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :activity_id => '11'}}, :authorization => credentials('jsmith') + end + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + + assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"} + end + end + end + + context "PUT /time_entries/2.xml" do + context "with valid parameters" do + should "update time entry" do + assert_no_difference 'TimeEntry.count' do + put '/time_entries/2.xml', {:time_entry => {:comments => 'API Update'}}, :authorization => credentials('jsmith') + end + assert_response :ok + assert_equal 'API Update', TimeEntry.find(2).comments + end + end + + context "with invalid parameters" do + should "return errors" do + assert_no_difference 'TimeEntry.count' do + put '/time_entries/2.xml', {:time_entry => {:hours => '', :comments => 'API Update'}}, :authorization => credentials('jsmith') + end + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + + assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"} + end + end + end + + context "DELETE /time_entries/2.xml" do + should "destroy time entry" do + assert_difference 'TimeEntry.count', -1 do + delete '/time_entries/2.xml', {}, :authorization => credentials('jsmith') + end + assert_response :ok + assert_nil TimeEntry.find_by_id(2) + end + end + + def credentials(user, password=nil) + ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user) + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/token_authentication_test.rb --- a/test/integration/api_test/token_authentication_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/api_test/token_authentication_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../../test_helper" +require File.expand_path('../../../test_helper', __FILE__) class ApiTest::TokenAuthenticationTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/api_test/users_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/api_test/users_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,285 @@ +# 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 File.expand_path('../../../test_helper', __FILE__) +require 'pp' +class ApiTest::UsersTest < ActionController::IntegrationTest + fixtures :users + + def setup + Setting.rest_api_enabled = '1' + end + + context "GET /users" do + should_allow_api_authentication(:get, "/users.xml") + should_allow_api_authentication(:get, "/users.json") + end + + context "GET /users/2" do + context ".xml" do + should "return requested user" do + get '/users/2.xml' + + assert_tag :tag => 'user', + :child => {:tag => 'id', :content => '2'} + end + end + + context ".json" do + should "return requested user" do + get '/users/2.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Hash, json['user'] + assert_equal 2, json['user']['id'] + end + end + end + + context "GET /users/current" do + context ".xml" do + should "require authentication" do + get '/users/current.xml' + + assert_response 401 + end + + should "return current user" do + get '/users/current.xml', {}, :authorization => credentials('jsmith') + + assert_tag :tag => 'user', + :child => {:tag => 'id', :content => '2'} + end + end + end + + context "POST /users" do + context "with valid parameters" do + setup do + @parameters = {:user => {:login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname', :mail => 'foo@example.net', :password => 'secret', :mail_notification => 'only_assigned'}} + end + + context ".xml" do + should_allow_api_authentication(:post, + '/users.xml', + {:user => {:login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname', :mail => 'foo@example.net', :password => 'secret'}}, + {:success_code => :created}) + + should "create a user with the attributes" do + assert_difference('User.count') do + post '/users.xml', @parameters, :authorization => credentials('admin') + end + + user = User.first(:order => 'id DESC') + assert_equal 'foo', user.login + assert_equal 'Firstname', user.firstname + assert_equal 'Lastname', user.lastname + assert_equal 'foo@example.net', user.mail + assert_equal 'only_assigned', user.mail_notification + assert !user.admin? + assert user.check_password?('secret') + + assert_response :created + assert_equal 'application/xml', @response.content_type + assert_tag 'user', :child => {:tag => 'id', :content => user.id.to_s} + end + end + + context ".json" do + should_allow_api_authentication(:post, + '/users.json', + {:user => {:login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname', :mail => 'foo@example.net'}}, + {:success_code => :created}) + + should "create a user with the attributes" do + assert_difference('User.count') do + post '/users.json', @parameters, :authorization => credentials('admin') + end + + user = User.first(:order => 'id DESC') + assert_equal 'foo', user.login + assert_equal 'Firstname', user.firstname + assert_equal 'Lastname', user.lastname + assert_equal 'foo@example.net', user.mail + assert !user.admin? + + assert_response :created + assert_equal 'application/json', @response.content_type + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Hash, json['user'] + assert_equal user.id, json['user']['id'] + end + end + end + + context "with invalid parameters" do + setup do + @parameters = {:user => {:login => 'foo', :lastname => 'Lastname', :mail => 'foo'}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('User.count') do + post '/users.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Firstname can't be blank"} + end + end + + context ".json" do + should "return errors" do + assert_no_difference('User.count') do + post '/users.json', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/json', @response.content_type + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert json.has_key?('errors') + assert_kind_of Array, json['errors'] + end + end + end + end + + context "PUT /users/2" do + context "with valid parameters" do + setup do + @parameters = {:user => {:login => 'jsmith', :firstname => 'John', :lastname => 'Renamed', :mail => 'jsmith@somenet.foo'}} + end + + context ".xml" do + should_allow_api_authentication(:put, + '/users/2.xml', + {:user => {:login => 'jsmith', :firstname => 'John', :lastname => 'Renamed', :mail => 'jsmith@somenet.foo'}}, + {:success_code => :ok}) + + should "update user with the attributes" do + assert_no_difference('User.count') do + put '/users/2.xml', @parameters, :authorization => credentials('admin') + end + + user = User.find(2) + assert_equal 'jsmith', user.login + assert_equal 'John', user.firstname + assert_equal 'Renamed', user.lastname + assert_equal 'jsmith@somenet.foo', user.mail + assert !user.admin? + + assert_response :ok + end + end + + context ".json" do + should_allow_api_authentication(:put, + '/users/2.json', + {:user => {:login => 'jsmith', :firstname => 'John', :lastname => 'Renamed', :mail => 'jsmith@somenet.foo'}}, + {:success_code => :ok}) + + should "update user with the attributes" do + assert_no_difference('User.count') do + put '/users/2.json', @parameters, :authorization => credentials('admin') + end + + user = User.find(2) + assert_equal 'jsmith', user.login + assert_equal 'John', user.firstname + assert_equal 'Renamed', user.lastname + assert_equal 'jsmith@somenet.foo', user.mail + assert !user.admin? + + assert_response :ok + end + end + end + + context "with invalid parameters" do + setup do + @parameters = {:user => {:login => 'jsmith', :firstname => '', :lastname => 'Lastname', :mail => 'foo'}} + end + + context ".xml" do + should "return errors" do + assert_no_difference('User.count') do + put '/users/2.xml', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Firstname can't be blank"} + end + end + + context ".json" do + should "return errors" do + assert_no_difference('User.count') do + put '/users/2.json', @parameters, :authorization => credentials('admin') + end + + assert_response :unprocessable_entity + assert_equal 'application/json', @response.content_type + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert json.has_key?('errors') + assert_kind_of Array, json['errors'] + end + end + end + end + + context "DELETE /users/2" do + context ".xml" do + should_allow_api_authentication(:delete, + '/users/2.xml', + {}, + {:success_code => :ok}) + + should "delete user" do + assert_difference('User.count', -1) do + delete '/users/2.xml', {}, :authorization => credentials('admin') + end + + assert_response :ok + end + end + + context ".json" do + should_allow_api_authentication(:delete, + '/users/2.xml', + {}, + {:success_code => :ok}) + + should "delete user" do + assert_difference('User.count', -1) do + delete '/users/2.json', {}, :authorization => credentials('admin') + end + + assert_response :ok + end + end + end + + def credentials(user, password=nil) + ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user) + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/application_test.rb --- a/test/integration/application_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/application_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class ApplicationTest < ActionController::IntegrationTest include Redmine::I18n diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/issues_test.rb --- a/test/integration/issues_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/issues_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class IssuesTest < ActionController::IntegrationTest fixtures :projects, diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/layout_test.rb --- a/test/integration/layout_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/layout_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,4 +1,4 @@ -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class LayoutTest < ActionController::IntegrationTest fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/.svn/all-wcprops --- a/test/integration/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/lib/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 45 -/svn/!svn/ver/2855/trunk/test/integration/lib +/svn/!svn/ver/4560/trunk/test/integration/lib END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/.svn/entries --- a/test/integration/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/integration/lib http://redmine.rubyforge.org/svn -2009-09-04T03:24:20.372895Z -2855 -edavis10 +2010-12-23T09:42:33.439630Z +4560 +jplang diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/redmine/.svn/all-wcprops --- a/test/integration/lib/redmine/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/lib/redmine/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,17 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/2855/trunk/test/integration/lib/redmine +/svn/!svn/ver/4560/trunk/test/integration/lib/redmine END menu_manager_test.rb K 25 svn:wc:ra_dav:version-url V 74 -/svn/!svn/ver/2855/trunk/test/integration/lib/redmine/menu_manager_test.rb +/svn/!svn/ver/4509/trunk/test/integration/lib/redmine/menu_manager_test.rb END +themes_test.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4560/trunk/test/integration/lib/redmine/themes_test.rb +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/redmine/.svn/entries --- a/test/integration/lib/redmine/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/lib/redmine/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/integration/lib/redmine http://redmine.rubyforge.org/svn -2009-09-04T03:24:20.372895Z -2855 -edavis10 +2010-12-23T09:42:33.439630Z +4560 +jplang @@ -32,11 +32,11 @@ -2010-09-23T14:37:45.439778Z -2a5952348b30cbae983b5e3137b48ff0 -2009-09-04T03:24:20.372895Z -2855 -edavis10 +2011-03-03T11:05:08.000000Z +302d4ea0c07530cc9d48b971849df66d +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -58,5 +58,39 @@ -3892 +3897 +themes_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +782f5d377a79dea8a580dcd902121b37 +2010-12-23T09:42:33.439630Z +4560 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2236 + diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/redmine/.svn/prop-base/themes_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/lib/redmine/.svn/prop-base/themes_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/redmine/.svn/text-base/menu_manager_test.rb.svn-base --- a/test/integration/lib/redmine/.svn/text-base/menu_manager_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/lib/redmine/.svn/text-base/menu_manager_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../../../test_helper" +require File.expand_path('../../../../test_helper', __FILE__) class MenuManagerTest < ActionController::IntegrationTest include Redmine::I18n diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/redmine/.svn/text-base/themes_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/lib/redmine/.svn/text-base/themes_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,75 @@ +# 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 File.expand_path('../../../../test_helper', __FILE__) + +class ThemesTest < ActionController::IntegrationTest + fixtures :all + + def setup + @theme = Redmine::Themes.themes.last + Setting.ui_theme = @theme.id + end + + def teardown + Setting.ui_theme = '' + end + + def test_application_css + get '/' + + assert_response :success + assert_tag :tag => 'link', + :attributes => {:href => %r{^/themes/#{@theme.dir}/stylesheets/application.css}} + end + + def test_without_theme_js + get '/' + + assert_response :success + assert_no_tag :tag => 'script', + :attributes => {:src => %r{^/themes/#{@theme.dir}/javascripts/theme.js}} + end + + def test_with_theme_js + # Simulates a theme.js + @theme.javascripts << 'theme' + get '/' + + assert_response :success + assert_tag :tag => 'script', + :attributes => {:src => %r{^/themes/#{@theme.dir}/javascripts/theme.js}} + + ensure + @theme.javascripts.delete 'theme' + end + + def test_with_sub_uri + Redmine::Utils.relative_url_root = '/foo' + @theme.javascripts << 'theme' + get '/' + + assert_response :success + assert_tag :tag => 'link', + :attributes => {:href => %r{^/foo/themes/#{@theme.dir}/stylesheets/application.css}} + assert_tag :tag => 'script', + :attributes => {:src => %r{^/foo/themes/#{@theme.dir}/javascripts/theme.js}} + + ensure + Redmine::Utils.relative_url_root = '' + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/redmine/menu_manager_test.rb --- a/test/integration/lib/redmine/menu_manager_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/lib/redmine/menu_manager_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../../../test_helper" +require File.expand_path('../../../../test_helper', __FILE__) class MenuManagerTest < ActionController::IntegrationTest include Redmine::I18n diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/lib/redmine/themes_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/integration/lib/redmine/themes_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,75 @@ +# 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 File.expand_path('../../../../test_helper', __FILE__) + +class ThemesTest < ActionController::IntegrationTest + fixtures :all + + def setup + @theme = Redmine::Themes.themes.last + Setting.ui_theme = @theme.id + end + + def teardown + Setting.ui_theme = '' + end + + def test_application_css + get '/' + + assert_response :success + assert_tag :tag => 'link', + :attributes => {:href => %r{^/themes/#{@theme.dir}/stylesheets/application.css}} + end + + def test_without_theme_js + get '/' + + assert_response :success + assert_no_tag :tag => 'script', + :attributes => {:src => %r{^/themes/#{@theme.dir}/javascripts/theme.js}} + end + + def test_with_theme_js + # Simulates a theme.js + @theme.javascripts << 'theme' + get '/' + + assert_response :success + assert_tag :tag => 'script', + :attributes => {:src => %r{^/themes/#{@theme.dir}/javascripts/theme.js}} + + ensure + @theme.javascripts.delete 'theme' + end + + def test_with_sub_uri + Redmine::Utils.relative_url_root = '/foo' + @theme.javascripts << 'theme' + get '/' + + assert_response :success + assert_tag :tag => 'link', + :attributes => {:href => %r{^/foo/themes/#{@theme.dir}/stylesheets/application.css}} + assert_tag :tag => 'script', + :attributes => {:src => %r{^/foo/themes/#{@theme.dir}/javascripts/theme.js}} + + ensure + Redmine::Utils.relative_url_root = '' + end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/projects_test.rb --- a/test/integration/projects_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/projects_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class ProjectsTest < ActionController::IntegrationTest fixtures :projects, :users, :members diff -r 7cec015f07ce -r 73ff0e6a11b1 test/integration/routing_test.rb --- a/test/integration/routing_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/integration/routing_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require "#{File.dirname(__FILE__)}/../test_helper" +require File.expand_path('../../test_helper', __FILE__) class RoutingTest < ActionController::IntegrationTest context "activities" do @@ -285,17 +285,26 @@ context "users" do should_route :get, "/users", :controller => 'users', :action => 'index' + should_route :get, "/users.xml", :controller => 'users', :action => 'index', :format => 'xml' should_route :get, "/users/44", :controller => 'users', :action => 'show', :id => '44' + should_route :get, "/users/44.xml", :controller => 'users', :action => 'show', :id => '44', :format => 'xml' + should_route :get, "/users/current", :controller => 'users', :action => 'show', :id => 'current' + should_route :get, "/users/current.xml", :controller => 'users', :action => 'show', :id => 'current', :format => 'xml' should_route :get, "/users/new", :controller => 'users', :action => 'new' should_route :get, "/users/444/edit", :controller => 'users', :action => 'edit', :id => '444' should_route :get, "/users/222/edit/membership", :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership' should_route :post, "/users", :controller => 'users', :action => 'create' + should_route :post, "/users.xml", :controller => 'users', :action => 'create', :format => 'xml' should_route :post, "/users/123/memberships", :controller => 'users', :action => 'edit_membership', :id => '123' should_route :post, "/users/123/memberships/55", :controller => 'users', :action => 'edit_membership', :id => '123', :membership_id => '55' should_route :post, "/users/567/memberships/12/destroy", :controller => 'users', :action => 'destroy_membership', :id => '567', :membership_id => '12' should_route :put, "/users/444", :controller => 'users', :action => 'update', :id => '444' + should_route :put, "/users/444.xml", :controller => 'users', :action => 'update', :id => '444', :format => 'xml' + + should_route :delete, "/users/44", :controller => 'users', :action => 'destroy', :id => '44' + should_route :delete, "/users/44.xml", :controller => 'users', :action => 'destroy', :id => '44', :format => 'xml' end # TODO: should they all be scoped under /projects/:project_id ? diff -r 7cec015f07ce -r 73ff0e6a11b1 test/mocks/.svn/all-wcprops --- a/test/mocks/.svn/all-wcprops Tue Feb 22 16:48:15 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 35 -/svn/!svn/ver/2895/trunk/test/mocks -END -open_id_authentication_mock.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/2895/trunk/test/mocks/open_id_authentication_mock.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/mocks/.svn/entries --- a/test/mocks/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/mocks/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/mocks http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-09-23T14:37:45.439778Z +2011-03-03T11:05:09.000000Z c73745cf74166bf38552d6469b74b190 2009-09-20T14:06:57.257282Z 2895 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/mocks/development/.svn/all-wcprops --- a/test/mocks/development/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/67/trunk/test/mocks/development -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/mocks/development/.svn/entries --- a/test/mocks/development/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/mocks/development/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/mocks/development http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 test/mocks/test/.svn/all-wcprops --- a/test/mocks/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 38 -/svn/!svn/ver/67/trunk/test/mocks/test -END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/mocks/test/.svn/entries --- a/test/mocks/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/mocks/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/mocks/test http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 test/test_helper.rb --- a/test/test_helper.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/test_helper.rb Thu Mar 03 12:11:53 2011 +0000 @@ -59,7 +59,7 @@ end def uploaded_test_file(name, mime) - ActionController::TestUploadedFile.new(ActiveSupport::TestCase.fixture_path + "/files/#{name}", mime) + ActionController::TestUploadedFile.new(ActiveSupport::TestCase.fixture_path + "/files/#{name}", mime, true) end # Mock out a file @@ -115,7 +115,7 @@ end def assert_error_tag(options={}) - assert_tag({:tag => 'p', :attributes => { :id => 'errorExplanation' }}.merge(options)) + assert_tag({:attributes => { :id => 'errorExplanation' }}.merge(options)) end # Shoulda macros @@ -361,6 +361,20 @@ end end + context "should allow key based auth using X-Redmine-API-Key header for #{http_method} #{url}" do + setup do + @user = User.generate_with_protected!(:admin => true) + @token = Token.generate!(:user => @user, :action => 'api') + send(http_method, url, parameters, {'X-Redmine-API-Key' => @token.value.to_s}) + end + + should_respond_with success_code + should_respond_with_content_type_based_on_url(url) + should_be_a_valid_response_string_based_on_url(url) + should "login as the user" do + assert_equal @user, User.current + end + end end # Uses should_respond_with_content_type based on what's in the url: diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/all-wcprops --- a/test/unit/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,341 +1,341 @@ K 25 svn:wc:ra_dav:version-url V 34 -/svn/!svn/ver/4408/trunk/test/unit +/svn/!svn/ver/4991/trunk/test/unit END document_test.rb K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/3095/trunk/test/unit/document_test.rb +/svn/!svn/ver/4509/trunk/test/unit/document_test.rb END token_test.rb K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/2895/trunk/test/unit/token_test.rb +/svn/!svn/ver/4509/trunk/test/unit/token_test.rb END repository_git_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4189/trunk/test/unit/repository_git_test.rb +/svn/!svn/ver/4986/trunk/test/unit/repository_git_test.rb END repository_mercurial_test.rb K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/2887/trunk/test/unit/repository_mercurial_test.rb +/svn/!svn/ver/4991/trunk/test/unit/repository_mercurial_test.rb END issue_relation_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/3729/trunk/test/unit/issue_relation_test.rb +/svn/!svn/ver/4721/trunk/test/unit/issue_relation_test.rb END version_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/4072/trunk/test/unit/version_test.rb +/svn/!svn/ver/4597/trunk/test/unit/version_test.rb END enumeration_test.rb K 25 svn:wc:ra_dav:version-url V 54 -/svn/!svn/ver/3123/trunk/test/unit/enumeration_test.rb +/svn/!svn/ver/4509/trunk/test/unit/enumeration_test.rb END board_test.rb K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/2887/trunk/test/unit/board_test.rb +/svn/!svn/ver/4509/trunk/test/unit/board_test.rb END issue_test.rb K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4408/trunk/test/unit/issue_test.rb +/svn/!svn/ver/4958/trunk/test/unit/issue_test.rb END issue_status_test.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3881/trunk/test/unit/issue_status_test.rb +/svn/!svn/ver/4895/trunk/test/unit/issue_status_test.rb END time_entry_activity_test.rb K 25 svn:wc:ra_dav:version-url V 62 -/svn/!svn/ver/2945/trunk/test/unit/time_entry_activity_test.rb +/svn/!svn/ver/4509/trunk/test/unit/time_entry_activity_test.rb END tracker_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/3188/trunk/test/unit/tracker_test.rb +/svn/!svn/ver/4509/trunk/test/unit/tracker_test.rb END repository_subversion_test.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/3800/trunk/test/unit/repository_subversion_test.rb +/svn/!svn/ver/4987/trunk/test/unit/repository_subversion_test.rb END repository_bazaar_test.rb K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/2887/trunk/test/unit/repository_bazaar_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_bazaar_test.rb END role_test.rb K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/3363/trunk/test/unit/role_test.rb +/svn/!svn/ver/4509/trunk/test/unit/role_test.rb END changeset_test.rb K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/3466/trunk/test/unit/changeset_test.rb +/svn/!svn/ver/4984/trunk/test/unit/changeset_test.rb END comment_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/2895/trunk/test/unit/comment_test.rb +/svn/!svn/ver/4509/trunk/test/unit/comment_test.rb END wiki_test.rb K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/3632/trunk/test/unit/wiki_test.rb +/svn/!svn/ver/4680/trunk/test/unit/wiki_test.rb END calendar_test.rb K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/2887/trunk/test/unit/calendar_test.rb +/svn/!svn/ver/4509/trunk/test/unit/calendar_test.rb END journal_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/2887/trunk/test/unit/journal_test.rb +/svn/!svn/ver/4509/trunk/test/unit/journal_test.rb END document_category_test.rb K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/3100/trunk/test/unit/document_category_test.rb +/svn/!svn/ver/4509/trunk/test/unit/document_category_test.rb END default_data_test.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/2887/trunk/test/unit/default_data_test.rb +/svn/!svn/ver/4509/trunk/test/unit/default_data_test.rb END user_test.rb K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/4233/trunk/test/unit/user_test.rb +/svn/!svn/ver/4936/trunk/test/unit/user_test.rb END mail_handler_test.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4404/trunk/test/unit/mail_handler_test.rb +/svn/!svn/ver/4576/trunk/test/unit/mail_handler_test.rb END repository_test.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4221/trunk/test/unit/repository_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_test.rb END time_entry_test.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4087/trunk/test/unit/time_entry_test.rb +/svn/!svn/ver/4709/trunk/test/unit/time_entry_test.rb END principal_test.rb K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/3152/trunk/test/unit/principal_test.rb +/svn/!svn/ver/4509/trunk/test/unit/principal_test.rb +END +journal_observer_test.rb +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/!svn/ver/4509/trunk/test/unit/journal_observer_test.rb END auth_source_ldap_test.rb K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/3492/trunk/test/unit/auth_source_ldap_test.rb +/svn/!svn/ver/4509/trunk/test/unit/auth_source_ldap_test.rb END -journal_observer_test.rb +repository_filesystem_test.rb K 25 svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4221/trunk/test/unit/journal_observer_test.rb +V 64 +/svn/!svn/ver/4509/trunk/test/unit/repository_filesystem_test.rb END project_nested_set_test.rb K 25 svn:wc:ra_dav:version-url V 61 -/svn/!svn/ver/3354/trunk/test/unit/project_nested_set_test.rb +/svn/!svn/ver/4650/trunk/test/unit/project_nested_set_test.rb END -repository_filesystem_test.rb +message_test.rb K 25 svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/2887/trunk/test/unit/repository_filesystem_test.rb +V 50 +/svn/!svn/ver/4509/trunk/test/unit/message_test.rb END wiki_redirect_test.rb K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/2887/trunk/test/unit/wiki_redirect_test.rb -END -message_test.rb -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/2887/trunk/test/unit/message_test.rb +/svn/!svn/ver/4509/trunk/test/unit/wiki_redirect_test.rb END issue_category_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/2887/trunk/test/unit/issue_category_test.rb +/svn/!svn/ver/4509/trunk/test/unit/issue_category_test.rb END attachment_test.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/3773/trunk/test/unit/attachment_test.rb +/svn/!svn/ver/4598/trunk/test/unit/attachment_test.rb END issue_priority_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/3123/trunk/test/unit/issue_priority_test.rb +/svn/!svn/ver/4509/trunk/test/unit/issue_priority_test.rb END repository_cvs_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/2887/trunk/test/unit/repository_cvs_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_cvs_test.rb END repository_darcs_test.rb K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/2887/trunk/test/unit/repository_darcs_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_darcs_test.rb END activity_test.rb K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/2887/trunk/test/unit/activity_test.rb +/svn/!svn/ver/4509/trunk/test/unit/activity_test.rb END group_test.rb K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/2887/trunk/test/unit/group_test.rb +/svn/!svn/ver/4509/trunk/test/unit/group_test.rb END watcher_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/3705/trunk/test/unit/watcher_test.rb +/svn/!svn/ver/4509/trunk/test/unit/watcher_test.rb END wiki_content_test.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3254/trunk/test/unit/wiki_content_test.rb +/svn/!svn/ver/4509/trunk/test/unit/wiki_content_test.rb END enabled_module_test.rb K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/2887/trunk/test/unit/enabled_module_test.rb +/svn/!svn/ver/4509/trunk/test/unit/enabled_module_test.rb END wiki_page_test.rb K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/3632/trunk/test/unit/wiki_page_test.rb +/svn/!svn/ver/4509/trunk/test/unit/wiki_page_test.rb END issue_nested_set_test.rb K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/3821/trunk/test/unit/issue_nested_set_test.rb +/svn/!svn/ver/4735/trunk/test/unit/issue_nested_set_test.rb END query_test.rb K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4260/trunk/test/unit/query_test.rb +/svn/!svn/ver/4888/trunk/test/unit/query_test.rb END search_test.rb K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/2887/trunk/test/unit/search_test.rb +/svn/!svn/ver/4509/trunk/test/unit/search_test.rb +END +custom_value_test.rb +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/4509/trunk/test/unit/custom_value_test.rb END project_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/4391/trunk/test/unit/project_test.rb -END -custom_value_test.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/2905/trunk/test/unit/custom_value_test.rb +/svn/!svn/ver/4615/trunk/test/unit/project_test.rb END member_test.rb K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/3700/trunk/test/unit/member_test.rb +/svn/!svn/ver/4509/trunk/test/unit/member_test.rb END mailer_test.rb K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4362/trunk/test/unit/mailer_test.rb +/svn/!svn/ver/4509/trunk/test/unit/mailer_test.rb END news_test.rb K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/2887/trunk/test/unit/news_test.rb +/svn/!svn/ver/4509/trunk/test/unit/news_test.rb END user_preference_test.rb K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/2895/trunk/test/unit/user_preference_test.rb +/svn/!svn/ver/4509/trunk/test/unit/user_preference_test.rb END custom_field_test.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/2887/trunk/test/unit/custom_field_test.rb +/svn/!svn/ver/4509/trunk/test/unit/custom_field_test.rb END setting_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/2895/trunk/test/unit/setting_test.rb +/svn/!svn/ver/4509/trunk/test/unit/setting_test.rb END testing_test.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/2930/trunk/test/unit/testing_test.rb +/svn/!svn/ver/4509/trunk/test/unit/testing_test.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/entries --- a/test/unit/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit http://redmine.rubyforge.org/svn -2010-11-14T16:51:10.651861Z -4408 -jplang +2011-03-03T03:35:13.139305Z +4991 +tmaruyama @@ -32,11 +32,11 @@ -2010-09-23T14:37:45.475805Z -050f600e502bb49c47e831975074cb3e -2009-11-26T20:12:20.779591Z -3095 -jplang +2011-03-03T11:05:08.000000Z +31100b89782bb9004a5f162375b5192b +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -58,7 +58,7 @@ -2145 +2150 token_test.rb file @@ -66,11 +66,11 @@ -2010-09-23T14:37:45.511762Z -3ba1709e8893abeaa88fb00febcadc05 -2009-09-20T14:06:57.257282Z -2895 -jplang +2011-03-03T11:05:08.000000Z +e89c6342d99d8e32ca9c9d3399641b96 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -92,7 +92,7 @@ -1352 +1357 repository_git_test.rb file @@ -100,11 +100,11 @@ -2010-11-19T13:04:41.337562Z -7c656f1b1b7984259ebf4d29bdc629a5 -2010-09-26T21:54:52.929683Z -4189 -edavis10 +2011-03-03T11:40:17.000000Z +47242b5b6c39be0674556191a42a70ff +2011-03-02T05:12:39.499704Z +4986 +tmaruyama has-props @@ -126,7 +126,7 @@ -2877 +5437 repository_mercurial_test.rb file @@ -134,11 +134,11 @@ -2010-09-23T14:37:45.507762Z -09835c4db0f8cf952808da70c56f4efd -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:40:17.000000Z +df5148d6503c41188684ca42c8fb1563 +2011-03-03T03:35:13.139305Z +4991 +tmaruyama has-props @@ -160,7 +160,7 @@ -2740 +7231 issue_relation_test.rb file @@ -168,10 +168,10 @@ -2010-09-23T14:37:45.483825Z -229c99b63f05b560d8db3d2dbcb9e8b8 -2010-05-01T14:07:36.553776Z -3729 +2011-03-03T11:05:08.000000Z +c121bfc1afd3428c1c63ffc8e4c9441e +2011-01-15T14:03:39.071238Z +4721 jplang has-props @@ -194,7 +194,7 @@ -2565 +3525 version_test.rb file @@ -202,11 +202,11 @@ -2010-09-24T12:48:25.787400Z -81bfed065f741b348305d4d050df10af -2010-09-10T03:09:02.311267Z -4072 -edavis10 +2011-03-03T11:05:08.000000Z +9aa8e8e5f5ef4c0c74c9fcdaba7ada60 +2010-12-31T11:16:03.020751Z +4597 +jplang has-props @@ -228,7 +228,7 @@ -9748 +9758 enumeration_test.rb file @@ -236,11 +236,11 @@ -2010-09-23T14:37:45.475805Z -c3eca121e6f2d6794e4eeecfa9f165a0 -2009-12-06T10:28:20.099964Z -3123 -jplang +2011-03-03T11:05:08.000000Z +01227adbe16fcf333a7e99f9a7bcc0f6 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -262,7 +262,7 @@ -3380 +3385 board_test.rb file @@ -270,11 +270,11 @@ -2010-09-23T14:37:45.471762Z -9a7c54f1a9af6217095062f77d08f10e -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +afdfda5a2d9285920afb8815085ad0ee +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -296,7 +296,7 @@ -899 +1052 issue_test.rb file @@ -304,10 +304,10 @@ -2010-11-19T13:04:41.337562Z -b66aaf32f10148354e6319cd7ae7ca27 -2010-11-14T16:51:10.651861Z -4408 +2011-03-03T11:40:17.000000Z +103def744f4a7e87035c40962f5f4b9f +2011-02-27T15:51:10.736814Z +4958 jplang has-props @@ -330,7 +330,7 @@ -29577 +32944 issue_status_test.rb file @@ -338,10 +338,10 @@ -2010-09-23T14:37:45.483825Z -2c2ecec9fc2708d6aacff16c5aa29b87 -2010-07-25T10:48:27.199057Z -3881 +2011-03-03T11:40:17.000000Z +927e020ce867263e6cf5af443bfaecd8 +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -364,7 +364,7 @@ -3231 +4757 time_entry_activity_test.rb file @@ -372,11 +372,11 @@ -2010-09-23T14:37:45.511762Z -773260be3210a157ed033c4d9097572c -2009-10-21T22:34:22.740755Z -2945 -edavis10 +2011-03-03T11:05:08.000000Z +41183297c9b098b67d368c45289eb47f +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -398,7 +398,7 @@ -2982 +2987 tracker_test.rb file @@ -406,11 +406,11 @@ -2010-09-23T14:37:45.511762Z -f1aa4fc274b7ab94762c0dbc533a15fb -2009-12-18T15:41:32.828284Z -3188 -jplang +2011-03-03T11:05:08.000000Z +32e8c8fd522283c8008b2dac1de383dd +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -432,7 +432,7 @@ -1831 +1836 repository_subversion_test.rb file @@ -440,11 +440,11 @@ -2010-09-23T14:37:45.507762Z -0d3c13d5aab904f2bb8f1a1750219a81 -2010-06-20T16:08:26.745839Z -3800 -edavis10 +2011-03-03T11:40:17.000000Z +428e976e05c3c4bffbc9885ef1272fc7 +2011-03-02T07:10:39.633104Z +4987 +tmaruyama has-props @@ -466,7 +466,7 @@ -3814 +7066 repository_bazaar_test.rb file @@ -474,11 +474,11 @@ -2010-09-23T14:37:45.507762Z -5334a637f05540a25a9769683dec3fca -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:40:17.000000Z +562f1297bf47e2199e1f04ccd1733f49 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -500,90 +500,90 @@ -3118 +2704 + +changeset_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +ee5c9c8f3cf4814a73673fe693faf697 +2011-03-01T15:35:27.747088Z +4984 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +10123 + +role_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +54e0d5b5ac94a5a9a0649b2af1b030e4 +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +3054 helpers dir -role_test.rb -file - - - - -2010-09-23T14:37:45.507762Z -01913aeac402c002ff86c6497513c795 -2010-02-03T17:47:47.868223Z -3363 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -3049 - -changeset_test.rb -file - - - - -2010-09-23T14:37:45.475805Z -b30a5968570e514baa53fccba66babd6 -2010-02-20T11:24:41.988635Z -3466 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4805 - comment_test.rb file -2010-09-23T14:37:45.475805Z -6bc5dfa26b0c2afd52f79678106a1247 -2009-09-20T14:06:57.257282Z -2895 -jplang +2011-03-03T11:05:08.000000Z +d279aa9cdae195412ec42a41d76bc999 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -605,7 +605,7 @@ -1491 +1496 wiki_test.rb file @@ -613,10 +613,10 @@ -2010-09-23T14:37:45.511762Z -0187a399b60b9c512b74aa8e2eacbe31 -2010-04-11T12:56:18.077630Z -3632 +2011-03-03T11:05:08.000000Z +fe66a05a1301e78c21ab94a101fda6af +2011-01-10T18:32:04.408692Z +4680 jplang has-props @@ -639,7 +639,7 @@ -2029 +2392 lib dir @@ -650,11 +650,11 @@ -2010-09-23T14:37:45.475805Z -4e8fc1d75ed786b954e18d8bac093daf -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +fadeda4795465dbbbf5873729ddba30a +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -676,7 +676,7 @@ -1772 +1777 journal_test.rb file @@ -684,11 +684,11 @@ -2010-09-23T14:37:45.483825Z -dd19b3a0292fa879e0e4b3de171c4e16 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +93378a65c9f444ca160b6681b7435610 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -710,7 +710,7 @@ -1584 +1589 document_category_test.rb file @@ -718,11 +718,11 @@ -2010-09-23T14:37:45.475805Z -1457b47330c1f1cc47c0005509687cfa -2009-11-27T20:49:08.242340Z -3100 -jplang +2011-03-03T11:05:08.000000Z +621cee22436f207cb82915edfe609d42 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -744,7 +744,7 @@ -1366 +1371 default_data_test.rb file @@ -752,11 +752,11 @@ -2010-09-23T14:37:45.475805Z -31716c010951f7a1b2d23cc481341cab -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +f1290324d506f8535d74ccf3f878c24f +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -778,7 +778,7 @@ -1713 +1718 user_test.rb file @@ -786,11 +786,11 @@ -2010-11-19T13:04:41.341624Z -59e73a45159ae21d5dc53098f8e1b637 -2010-10-06T05:08:31.041293Z -4233 -jbbarth +2011-03-03T11:40:17.000000Z +93a08b69d91fdc8222483cbb6d20563d +2011-02-23T17:27:31.762248Z +4936 +jplang has-props @@ -812,7 +812,75 @@ -17550 +26161 + +mail_handler_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +ccd63941c3776cd520a713f27ed01d08 +2010-12-29T17:38:57.772516Z +4576 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +18979 + +repository_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +71ee0e9aa37fb046390f5774895ef623 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +6540 time_entry_test.rb file @@ -820,78 +888,10 @@ -2010-09-24T12:48:25.791803Z -461828d317588aef0b8ee8f85f11c62c -2010-09-14T19:02:25.847894Z -4087 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -3574 - -repository_test.rb -file - - - - -2010-11-19T13:04:41.341624Z -61d46cec13bffa4dce694de6c0fb0c93 -2010-09-28T20:20:00.843023Z -4221 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -6469 - -mail_handler_test.rb -file - - - - -2010-11-19T13:04:41.341624Z -b5e8191d182e090ce55ccd46b3cc3954 -2010-11-14T13:48:01.671461Z -4404 +2011-03-03T11:05:08.000000Z +ab1c1db4414427c710071842f98a5685 +2011-01-14T18:45:28.811697Z +4709 jplang has-props @@ -914,7 +914,75 @@ -17912 +4317 + +principal_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +69e70ceb20c56bbb25155e8120146aa3 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +2078 + +journal_observer_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +0a054ecc047ebca7e0cb9fe8aadf51eb +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +3959 auth_source_ldap_test.rb file @@ -922,10 +990,44 @@ -2010-09-23T14:37:45.471762Z -a39d14a44a0576b6ec4bca546bded4f8 -2010-02-26T09:13:12.187275Z -3492 +2011-03-03T11:05:08.000000Z +4de167441793151c86bc376e671cc3c1 +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +2793 + +project_nested_set_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +47282cfa59c0817a7936d60b0ac3e16c +2011-01-06T21:17:08.355137Z +4650 jplang has-props @@ -948,75 +1050,7 @@ -2788 - -principal_test.rb -file - - - - -2010-09-23T14:37:45.503764Z -f36cb1e2cd1746903fbd8d269179f177 -2009-12-12T06:18:40.500267Z -3152 -edavis10 - - - - - - - - - - - - - - - - - - - - - -2073 - -journal_observer_test.rb -file - - - - -2010-11-19T13:04:41.341624Z -b8ca46992b1064fd7f35c44663a40358 -2010-09-28T20:20:00.843023Z -4221 -edavis10 - - - - - - - - - - - - - - - - - - - - - -3954 +4027 repository_filesystem_test.rb file @@ -1024,11 +1058,11 @@ -2010-09-23T14:37:45.507762Z -abb72953856c404a15739803efb36f1e -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +8d990ac10b1aeee25c74ee1f5cdc9d18 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1050,41 +1084,7 @@ -1935 - -project_nested_set_test.rb -file - - - - -2010-09-23T14:37:45.503764Z -2113efe7d95f20d9eeaffdc988f35894 -2010-01-31T10:39:42.608434Z -3354 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2070 +1940 message_test.rb file @@ -1092,11 +1092,11 @@ -2010-09-23T14:37:45.503764Z -20812440391bc42bd1e4b87f2bb3dbc9 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +6b620c2638af1111d237a35ecba5107d +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1118,7 +1118,7 @@ -4937 +4942 wiki_redirect_test.rb file @@ -1126,11 +1126,11 @@ -2010-09-23T14:37:45.511762Z -bb58e8be92cdf18494b20d79275f4c65 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +f4be42a1985df0fc471331477246eea7 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1152,7 +1152,7 @@ -2724 +2787 issue_category_test.rb file @@ -1160,11 +1160,11 @@ -2010-09-23T14:37:45.483825Z -3356be5d35b57347f74d7efcfca2ea4b -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +fb1799532feba53a1df0355271636ce7 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1186,7 +1186,7 @@ -1421 +1426 attachment_test.rb file @@ -1194,11 +1194,11 @@ -2010-09-23T14:37:45.471762Z -e1a50ba850106db6963584c8b99fd74c -2010-06-19T03:54:23.298445Z -3773 -edavis10 +2011-03-03T11:05:08.000000Z +e8fef8d0f3de527136fabe2c2195be9e +2010-12-31T15:24:42.140175Z +4598 +jplang has-props @@ -1220,7 +1220,7 @@ -3656 +3619 issue_priority_test.rb file @@ -1228,11 +1228,11 @@ -2010-09-23T14:37:45.483825Z -8dd5e3817f0e2e9e8c8a8a88e03fd090 -2009-12-06T10:28:20.099964Z -3123 -jplang +2011-03-03T11:05:08.000000Z +23d11bc7cfedc1a4d419928eb81d5c64 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1254,7 +1254,7 @@ -1324 +1329 repository_cvs_test.rb file @@ -1262,11 +1262,11 @@ -2010-09-23T14:37:45.507762Z -68dda2425484afbc3289b19b0af6c11b -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:40:17.000000Z +a2d7bc3feefa89da466f5ead9e4da18d +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -1288,7 +1288,7 @@ -2537 +3909 repository_darcs_test.rb file @@ -1296,11 +1296,11 @@ -2010-09-23T14:37:45.507762Z -d7f9177ff34693e1a7cfecd0cbe54a4d -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:40:17.000000Z +44a11577927a86290e2887c1e0c0dd24 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -1322,7 +1322,7 @@ -2538 +2723 activity_test.rb file @@ -1330,11 +1330,11 @@ -2010-09-23T14:37:45.471762Z -3f0d1a0fc3ebcd10386f704f30411caa -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +f2227b773374d5366d6ee7e26f7f977e +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1356,7 +1356,7 @@ -3259 +3264 group_test.rb file @@ -1364,11 +1364,11 @@ -2010-09-23T14:37:45.475805Z -68e58d510faac50d9e774a3b231e6bd0 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +50cc3fd88223d69f74e1b11991989bbc +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1390,7 +1390,7 @@ -2593 +2598 watcher_test.rb file @@ -1398,11 +1398,11 @@ -2010-09-23T14:37:45.511762Z -ea14acc0bf5df9331263c24aa933a721 -2010-04-30T11:02:27.973988Z -3705 -jplang +2011-03-03T11:05:08.000000Z +3665052c1291d40753ee1ab4c61cd237 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1424,7 +1424,7 @@ -3415 +3420 wiki_content_test.rb file @@ -1432,11 +1432,11 @@ -2010-09-23T14:37:45.511762Z -8aa3dd069d03e45cf6a40befaf3ac91f -2009-12-27T11:57:13.519273Z -3254 -jplang +2011-03-03T11:05:08.000000Z +5f0c8e09595f6c8f6a95def9d4ff3833 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1458,7 +1458,7 @@ -3104 +3109 enabled_module_test.rb file @@ -1466,11 +1466,11 @@ -2010-09-23T14:37:45.475805Z -530c6c79db914598316f923400031643 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +870052407719f2a360e8e95f0498130f +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1492,7 +1492,7 @@ -1589 +1594 wiki_page_test.rb file @@ -1500,11 +1500,11 @@ -2010-09-23T14:37:45.511762Z -e2e9a2270cda1fc763b02ca60e6758a3 -2010-04-11T12:56:18.077630Z -3632 -jplang +2011-03-03T11:05:08.000000Z +2b51ebfe6e4e23011d9b29f08028d832 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1526,7 +1526,7 @@ -3898 +3903 issue_nested_set_test.rb file @@ -1534,11 +1534,11 @@ -2010-09-23T14:37:45.483825Z -5985280247858f77d45d21b26e65c846 -2010-06-30T02:45:34.835470Z -3821 -edavis10 +2011-03-03T11:05:08.000000Z +a9a2a1d3497b65464c17a71858f15278 +2011-01-22T11:46:15.415880Z +4735 +jplang has-props @@ -1560,7 +1560,7 @@ -13657 +14804 query_test.rb file @@ -1568,11 +1568,11 @@ -2010-11-19T13:04:41.341624Z -e84894671a39a3e44cd69ad6e4d6f9d9 -2010-10-16T00:00:23.359489Z -4260 -edavis10 +2011-03-03T11:40:17.000000Z +1cf7133fc93cd35e36b828afe1abdd35 +2011-02-20T13:03:32.835478Z +4888 +jplang has-props @@ -1594,7 +1594,7 @@ -20090 +21925 search_test.rb file @@ -1602,11 +1602,11 @@ -2010-09-23T14:37:45.507762Z -32ca2cd3b7eedfa62d9b87754e4273ca -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +7c10ed0c6e700b4bfe67499ced7f9129 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1628,7 +1628,41 @@ -4656 +4661 + +custom_value_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +e012f89814e1a9ddec5e1fd550c6b5e1 +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +3677 project_test.rb file @@ -1636,10 +1670,10 @@ -2010-11-19T13:04:41.341624Z -5cb6742ca68637e837794c7a912a1c71 -2010-11-11T13:39:14.764400Z -4391 +2011-03-03T11:05:08.000000Z +d50e8af60d440f2f3c60a31031b79830 +2011-01-02T11:38:35.152085Z +4615 jplang has-props @@ -1662,41 +1696,7 @@ -37951 - -custom_value_test.rb -file - - - - -2010-09-23T14:37:45.475805Z -e08bf636b0f3ecc54432d0bb395c2a5d -2009-10-10T10:16:00.250819Z -2905 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3672 +39071 member_test.rb file @@ -1704,11 +1704,11 @@ -2010-09-23T14:37:45.503764Z -ed7eec76d8a869dfce4215fc249607bf -2010-04-30T09:57:58.536766Z -3700 -jplang +2011-03-03T11:05:08.000000Z +ef906b6b6bdeaa8d627ff66390dd31ab +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1730,7 +1730,7 @@ -4178 +4183 mailer_test.rb file @@ -1738,11 +1738,11 @@ -2010-11-19T13:04:41.341624Z -59e4140b58e03b066b15f7213c23fc6d -2010-11-02T19:00:36.834304Z -4362 -edavis10 +2011-03-03T11:05:08.000000Z +2f98e8acd7868617728cd08702411096 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1764,7 +1764,7 @@ -13954 +14555 news_test.rb file @@ -1772,11 +1772,11 @@ -2010-09-23T14:37:45.503764Z -6b43ef906ed80cc6a8e878c03d52ff53 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +759e3cea9ff889147937b83bcc137e4b +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1798,7 +1798,7 @@ -2925 +2742 user_preference_test.rb file @@ -1806,11 +1806,11 @@ -2010-09-23T14:37:45.511762Z -7bcef4f9729fe09696f6ef878c6989dd -2009-09-20T14:06:57.257282Z -2895 -jplang +2011-03-03T11:05:08.000000Z +eab02ac34d43f18f1bc929dd62d6ee9a +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1832,7 +1832,7 @@ -1522 +1527 custom_field_test.rb file @@ -1840,11 +1840,11 @@ -2010-09-23T14:37:45.475805Z -c2e6042c8a03b41f1b6efe0e0b1c8df1 -2009-09-13T17:14:35.707881Z -2887 -edavis10 +2011-03-03T11:05:08.000000Z +59b08ad686160723b5b83df2cb5f8ee1 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1866,7 +1866,7 @@ -1753 +1758 setting_test.rb file @@ -1874,11 +1874,11 @@ -2010-09-23T14:37:45.507762Z -b53999e1c089a0c5bbc8dfedb77cf761 -2009-09-20T14:06:57.257282Z -2895 -jplang +2011-03-03T11:05:08.000000Z +8a4fd1977e88faed5d7ebca9ac40d037 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -1900,7 +1900,7 @@ -1812 +1817 testing_test.rb file @@ -1908,31 +1908,31 @@ -2010-09-23T14:37:45.507762Z -27440b61f82014e00e991b4f00595ae5 -2009-10-18T22:25:00.956502Z -2930 -edavis10 - - - - - - - - - - - - - - - - - - - - - -1349 +2011-03-03T11:05:08.000000Z +8f6032e2276c7077ad1716c67634c17e +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +1354 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/activity_test.rb.svn-base --- a/test/unit/.svn/text-base/activity_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/activity_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ActivityTest < ActiveSupport::TestCase fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details, diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/attachment_test.rb.svn-base --- a/test/unit/.svn/text-base/attachment_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/attachment_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AttachmentTest < ActiveSupport::TestCase fixtures :issues, :users @@ -34,7 +34,7 @@ assert_equal 59, a.filesize assert_equal 'text/plain', a.content_type assert_equal 0, a.downloads - assert_equal Digest::MD5.hexdigest(uploaded_test_file("testfile.txt", "text/plain").read), a.digest + assert_equal '1478adae0d4eb06d35897518540e25d6', a.digest assert File.exist?(a.diskfile) end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/auth_source_ldap_test.rb.svn-base --- a/test/unit/.svn/text-base/auth_source_ldap_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/auth_source_ldap_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AuthSourceLdapTest < ActiveSupport::TestCase fixtures :auth_sources diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/board_test.rb.svn-base --- a/test/unit/.svn/text-base/board_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/board_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class BoardTest < ActiveSupport::TestCase - fixtures :projects, :boards, :messages + fixtures :projects, :boards, :messages, :attachments, :watchers def setup @project = Project.find(1) @@ -23,8 +23,13 @@ def test_destroy board = Board.find(1) - assert board.destroy - # make sure that the associated messages are removed + assert_difference 'Message.count', -6 do + assert_difference 'Attachment.count', -1 do + assert_difference 'Watcher.count', -1 do + assert board.destroy + end + end + end assert_equal 0, Message.count(:conditions => {:board_id => 1}) end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/calendar_test.rb.svn-base --- a/test/unit/.svn/text-base/calendar_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/calendar_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CalendarTest < ActiveSupport::TestCase diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/changeset_test.rb.svn-base --- a/test/unit/.svn/text-base/changeset_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/changeset_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ChangesetTest < ActiveSupport::TestCase fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :users, :members, :member_roles, :trackers @@ -44,6 +44,92 @@ assert_equal 1, ActionMailer::Base.deliveries.size end + def test_ref_keywords + Setting.commit_ref_keywords = 'refs' + Setting.commit_fix_keywords = '' + + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => Time.now, + :comments => 'Ignores #2. Refs #1') + c.scan_comment_for_issue_ids + + assert_equal [1], c.issue_ids.sort + end + + def test_ref_keywords_any_only + Setting.commit_ref_keywords = '*' + Setting.commit_fix_keywords = '' + + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => Time.now, + :comments => 'Ignores #2. Refs #1') + c.scan_comment_for_issue_ids + + assert_equal [1, 2], c.issue_ids.sort + end + + def test_ref_keywords_any_with_timelog + Setting.commit_ref_keywords = '*' + Setting.commit_logtime_enabled = '1' + + { + '2' => 2.0, + '2h' => 2.0, + '2hours' => 2.0, + '15m' => 0.25, + '15min' => 0.25, + '3h15' => 3.25, + '3h15m' => 3.25, + '3h15min' => 3.25, + '3:15' => 3.25, + '3.25' => 3.25, + '3.25h' => 3.25, + '3,25' => 3.25, + '3,25h' => 3.25, + }.each do |syntax, expected_hours| + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => 24.hours.ago, + :comments => "Worked on this issue #1 @#{syntax}", + :revision => '520', + :user => User.find(2)) + assert_difference 'TimeEntry.count' do + c.scan_comment_for_issue_ids + end + assert_equal [1], c.issue_ids.sort + + time = TimeEntry.first(:order => 'id desc') + assert_equal 1, time.issue_id + assert_equal 1, time.project_id + assert_equal 2, time.user_id + assert_equal expected_hours, time.hours, "@#{syntax} should be logged as #{expected_hours} hours but was #{time.hours}" + assert_equal Date.yesterday, time.spent_on + assert time.activity.is_default? + assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}" + end + end + + def test_ref_keywords_closing_with_timelog + Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id + Setting.commit_ref_keywords = '*' + Setting.commit_fix_keywords = 'fixes , closes' + Setting.commit_logtime_enabled = '1' + + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => Time.now, + :comments => 'This is a comment. Fixes #1 @4.5, #2 @1', + :user => User.find(2)) + assert_difference 'TimeEntry.count', 2 do + c.scan_comment_for_issue_ids + end + + assert_equal [1, 2], c.issue_ids.sort + assert Issue.find(1).closed? + assert Issue.find(2).closed? + + times = TimeEntry.all(:order => 'id desc', :limit => 2) + assert_equal [1, 2], times.collect(&:issue_id).sort + end + def test_ref_keywords_any_line_start Setting.commit_ref_keywords = '*' @@ -100,6 +186,21 @@ assert c.issues.first.project != c.project end + def test_text_tag_revision + c = Changeset.new(:revision => '520') + assert_equal 'r520', c.text_tag + end + + def test_text_tag_hash + c = Changeset.new(:scmid => '7234cb2750b63f47bff735edc50a1c0a433c2518', :revision => '7234cb2750b63f47bff735edc50a1c0a433c2518') + assert_equal 'commit:7234cb2750b63f47bff735edc50a1c0a433c2518', c.text_tag + end + + def test_text_tag_hash_all_number + c = Changeset.new(:scmid => '0123456789', :revision => '0123456789') + assert_equal 'commit:0123456789', c.text_tag + end + def test_previous changeset = Changeset.find_by_revision('3') assert_equal Changeset.find_by_revision('2'), changeset.previous @@ -119,18 +220,71 @@ changeset = Changeset.find_by_revision('10') assert_nil changeset.next end - + def test_comments_should_be_converted_to_utf8 - with_settings :commit_logs_encoding => 'ISO-8859-1' do - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) assert_equal "Texte encodé en ISO-8859-1.", c.comments - end end - + def test_invalid_utf8_sequences_in_comments_should_be_stripped - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") - assert_equal "Texte encod en ISO-8859-1.", c.comments + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'UTF-8' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) + if str.respond_to?(:force_encoding) + assert_equal "Texte encod? en ISO-8859-1.", c.comments + else + assert_equal "Texte encod en ISO-8859-1.", c.comments + end + end + + def test_comments_should_be_converted_all_latin1_to_utf8 + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + proj = Project.find(3) + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => s1) + assert( c.save ) + assert_equal s2, c.comments + end + + def test_identifier + c = Changeset.find_by_revision('1') + assert_equal c.revision, c.identifier end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/comment_test.rb.svn-base --- a/test/unit/.svn/text-base/comment_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/comment_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CommentTest < ActiveSupport::TestCase fixtures :users, :news, :comments diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/custom_field_test.rb.svn-base --- a/test/unit/.svn/text-base/custom_field_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/custom_field_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CustomFieldTest < ActiveSupport::TestCase fixtures :custom_fields diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/custom_value_test.rb.svn-base --- a/test/unit/.svn/text-base/custom_value_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/custom_value_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CustomValueTest < ActiveSupport::TestCase fixtures :custom_fields, :custom_values, :users diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/default_data_test.rb.svn-base --- a/test/unit/.svn/text-base/default_data_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/default_data_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class DefaultDataTest < ActiveSupport::TestCase include Redmine::I18n diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/document_category_test.rb.svn-base --- a/test/unit/.svn/text-base/document_category_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/document_category_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class DocumentCategoryTest < ActiveSupport::TestCase fixtures :enumerations, :documents, :issues diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/document_test.rb.svn-base --- a/test/unit/.svn/text-base/document_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/document_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class DocumentTest < ActiveSupport::TestCase fixtures :projects, :enumerations, :documents, :attachments diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/enabled_module_test.rb.svn-base --- a/test/unit/.svn/text-base/enabled_module_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/enabled_module_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class EnabledModuleTest < ActiveSupport::TestCase fixtures :projects, :wikis diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/enumeration_test.rb.svn-base --- a/test/unit/.svn/text-base/enumeration_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/enumeration_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class EnumerationTest < ActiveSupport::TestCase fixtures :enumerations, :issues, :custom_fields, :custom_values diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/group_test.rb.svn-base --- a/test/unit/.svn/text-base/group_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/group_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class GroupTest < ActiveSupport::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/issue_category_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_category_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/issue_category_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssueCategoryTest < ActiveSupport::TestCase fixtures :issue_categories, :issues diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/issue_nested_set_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_nested_set_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/issue_nested_set_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssueNestedSetTest < ActiveSupport::TestCase fixtures :projects, :users, :members, :member_roles, :roles, @@ -202,7 +202,19 @@ issue2 = create_issue! issue3 = create_issue!(:parent_issue_id => issue2.id) issue4 = create_issue!(:parent_issue_id => issue1.id) - issue2.reload.destroy + + issue3.init_journal(User.find(2)) + issue3.subject = 'child with journal' + issue3.save! + + assert_difference 'Issue.count', -2 do + assert_difference 'Journal.count', -1 do + assert_difference 'JournalDetail.count', -1 do + Issue.find(issue2.id).destroy + end + end + end + issue1.reload issue4.reload assert !Issue.exists?(issue2.id) @@ -211,6 +223,26 @@ assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt] end + def test_destroy_child_issue_with_children + root = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'root') + child = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'child', :parent_issue_id => root.id) + leaf = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'leaf', :parent_issue_id => child.id) + leaf.init_journal(User.find(2)) + leaf.subject = 'leaf with journal' + leaf.save! + + assert_difference 'Issue.count', -2 do + assert_difference 'Journal.count', -1 do + assert_difference 'JournalDetail.count', -1 do + Issue.find(child.id).destroy + end + end + end + + root = Issue.find(root.id) + assert root.leaf?, "Root issue is not a leaf (lft: #{root.lft}, rgt: #{root.rgt})" + end + def test_parent_priority_should_be_the_highest_child_priority parent = create_issue!(:priority => IssuePriority.find_by_name('Normal')) # Create children diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/issue_priority_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_priority_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/issue_priority_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssuePriorityTest < ActiveSupport::TestCase fixtures :enumerations, :issues diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/issue_relation_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_relation_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/issue_relation_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssueRelationTest < ActiveSupport::TestCase fixtures :issue_relations, :issues @@ -63,4 +63,23 @@ assert_equal IssueRelation::TYPE_PRECEDES, relation.relation_type_for(from) assert_equal IssueRelation::TYPE_FOLLOWS, relation.relation_type_for(to) end + + def test_set_issue_to_dates_without_issue_to + r = IssueRelation.new(:issue_from => Issue.new(:start_date => Date.today), :relation_type => IssueRelation::TYPE_PRECEDES, :delay => 1) + assert_nil r.set_issue_to_dates + end + + def test_set_issue_to_dates_without_issues + r = IssueRelation.new(:relation_type => IssueRelation::TYPE_PRECEDES, :delay => 1) + assert_nil r.set_issue_to_dates + end + + def test_validates_circular_dependency + IssueRelation.delete_all + assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_PRECEDES) + assert IssueRelation.create!(:issue_from => Issue.find(2), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_PRECEDES) + r = IssueRelation.new(:issue_from => Issue.find(3), :issue_to => Issue.find(1), :relation_type => IssueRelation::TYPE_PRECEDES) + assert !r.save + assert_not_nil r.errors.on(:base) + end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/issue_status_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_status_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/issue_status_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,10 +15,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssueStatusTest < ActiveSupport::TestCase - fixtures :issue_statuses, :issues + fixtures :issue_statuses, :issues, :roles, :trackers def test_create status = IssueStatus.new :name => "Assigned" @@ -68,6 +68,30 @@ status.reload assert status.is_default? end + + def test_new_statuses_allowed_to + Workflow.delete_all + + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true) + status = IssueStatus.find(1) + role = Role.find(1) + tracker = Tracker.find(1) + + assert_equal [2], status.new_statuses_allowed_to([role], tracker, false, false).map(&:id) + assert_equal [2], status.find_new_statuses_allowed_to([role], tracker, false, false).map(&:id) + + assert_equal [2, 3], status.new_statuses_allowed_to([role], tracker, true, false).map(&:id) + assert_equal [2, 3], status.find_new_statuses_allowed_to([role], tracker, true, false).map(&:id) + + assert_equal [2, 4], status.new_statuses_allowed_to([role], tracker, false, true).map(&:id) + assert_equal [2, 4], status.find_new_statuses_allowed_to([role], tracker, false, true).map(&:id) + + assert_equal [2, 3, 4, 5], status.new_statuses_allowed_to([role], tracker, true, true).map(&:id) + assert_equal [2, 3, 4, 5], status.find_new_statuses_allowed_to([role], tracker, true, true).map(&:id) + end context "#update_done_ratios" do setup do diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/issue_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/issue_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class IssueTest < ActiveSupport::TestCase fixtures :projects, :users, :members, :member_roles, :roles, @@ -210,6 +210,33 @@ assert_equal IssueCategory.find(1).assigned_to, issue.assigned_to end + + + def test_new_statuses_allowed_to + Workflow.delete_all + + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true) + status = IssueStatus.find(1) + role = Role.find(1) + tracker = Tracker.find(1) + user = User.find(2) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1) + assert_equal [1, 2], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user) + assert_equal [1, 2, 3], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :assigned_to => user) + assert_equal [1, 2, 4], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user, :assigned_to => user) + assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) + end + def test_copy issue = Issue.new.copy_from(1) assert issue.save @@ -594,6 +621,29 @@ assert ActionMailer::Base.deliveries.empty? end + def test_journalized_description + IssueCustomField.delete_all + + i = Issue.first + old_description = i.description + new_description = "This is the new description" + + i.init_journal(User.find(2)) + i.description = new_description + assert_difference 'Journal.count', 1 do + assert_difference 'JournalDetail.count', 1 do + i.save! + end + end + + detail = JournalDetail.first(:order => 'id DESC') + assert_equal i, detail.journal.journalized + assert_equal 'attr', detail.property + assert_equal 'description', detail.prop_key + assert_equal old_description, detail.old_value + assert_equal new_description, detail.value + end + def test_saving_twice_should_not_duplicate_journal_details i = Issue.find(:first) i.init_journal(User.find(2), 'Some notes') @@ -618,6 +668,25 @@ end end + def test_all_dependent_issues + IssueRelation.delete_all + assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_PRECEDES) + assert IssueRelation.create!(:issue_from => Issue.find(2), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_PRECEDES) + assert IssueRelation.create!(:issue_from => Issue.find(3), :issue_to => Issue.find(8), :relation_type => IssueRelation::TYPE_PRECEDES) + + assert_equal [2, 3, 8], Issue.find(1).all_dependent_issues.collect(&:id).sort + end + + def test_all_dependent_issues_with_persistent_circular_dependency + IssueRelation.delete_all + assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_PRECEDES) + assert IssueRelation.create!(:issue_from => Issue.find(2), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_PRECEDES) + # Validation skipping + assert IssueRelation.new(:issue_from => Issue.find(3), :issue_to => Issue.find(1), :relation_type => IssueRelation::TYPE_PRECEDES).save(false) + + assert_equal [2, 3], Issue.find(1).all_dependent_issues.collect(&:id).sort + end + context "#done_ratio" do setup do @issue = Issue.find(1) diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/journal_observer_test.rb.svn-base --- a/test/unit/.svn/text-base/journal_observer_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/journal_observer_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class JournalObserverTest < ActiveSupport::TestCase fixtures :issues, :issue_statuses, :journals, :journal_details diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/journal_test.rb.svn-base --- a/test/unit/.svn/text-base/journal_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/journal_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class JournalTest < ActiveSupport::TestCase fixtures :issues, :issue_statuses, :journals, :journal_details diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/mail_handler_test.rb.svn-base --- a/test/unit/.svn/text-base/mail_handler_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/mail_handler_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class MailHandlerTest < ActiveSupport::TestCase fixtures :users, :projects, @@ -36,6 +36,7 @@ :issue_categories, :custom_fields, :custom_fields_trackers, + :custom_fields_projects, :boards, :messages @@ -53,9 +54,10 @@ assert issue.is_a?(Issue) assert !issue.new_record? issue.reload + assert_equal Project.find(2), issue.project + assert_equal issue.project.trackers.first, issue.tracker assert_equal 'New ticket on a given project', issue.subject assert_equal User.find_by_login('jsmith'), issue.author - assert_equal Project.find(2), issue.project assert_equal IssueStatus.find_by_name('Resolved'), issue.status assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') assert_equal '2010-01-01', issue.start_date.to_s @@ -64,6 +66,7 @@ assert_equal Version.find_by_name('alpha'), issue.fixed_version assert_equal 2.5, issue.estimated_hours assert_equal 30, issue.done_ratio + assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt] # keywords should be removed from the email body assert !issue.description.match(/^Project:/i) assert !issue.description.match(/^Status:/i) @@ -72,6 +75,15 @@ assert_not_nil mail assert mail.subject.include?('New ticket on a given project') end + + def test_add_issue_with_default_tracker + # This email contains: 'Project: onlinestore' + issue = submit_email('ticket_on_given_project.eml', :issue => {:tracker => 'Support request'}) + assert issue.is_a?(Issue) + assert !issue.new_record? + issue.reload + assert_equal 'Support request', issue.tracker.name + end def test_add_issue_with_status # This email contains: 'Project: onlinestore' and 'Status: Resolved' @@ -201,6 +213,7 @@ assert issue.is_a?(Issue) assert issue.author.anonymous? assert !issue.project.is_public? + assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt] end end end @@ -288,6 +301,7 @@ assert_equal User.find_by_login('jsmith'), journal.user assert_equal Issue.find(2), journal.journalized assert_match /This is reply/, journal.notes + assert_equal 'Feature request', journal.issue.tracker.name end def test_add_issue_note_with_attribute_changes @@ -298,11 +312,12 @@ assert_equal User.find_by_login('jsmith'), journal.user assert_equal Issue.find(2), journal.journalized assert_match /This is reply/, journal.notes + assert_equal 'Feature request', journal.issue.tracker.name assert_equal IssueStatus.find_by_name("Resolved"), issue.status assert_equal '2010-01-01', issue.start_date.to_s assert_equal '2010-12-31', issue.due_date.to_s assert_equal User.find_by_login('jsmith'), issue.assigned_to - assert_equal 'Updated custom value', issue.custom_value_for(CustomField.find_by_name('Searchable field')).value + assert_equal "52.6", issue.custom_value_for(CustomField.find_by_name('Float field')).value end def test_add_issue_note_should_send_email_notification @@ -312,6 +327,14 @@ assert_equal 1, ActionMailer::Base.deliveries.size end + def test_add_issue_note_should_not_set_defaults + journal = submit_email('ticket_reply.eml', :issue => {:tracker => 'Support request', :priority => 'High'}) + assert journal.is_a?(Journal) + assert_match /This is reply/, journal.notes + assert_equal 'Feature request', journal.issue.tracker.name + assert_equal 'Normal', journal.issue.priority.name + end + def test_reply_to_a_message m = submit_email('message_reply.eml') assert m.is_a?(Message) diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/mailer_test.rb.svn-base --- a/test/unit/.svn/text-base/mailer_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/mailer_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class MailerTest < ActiveSupport::TestCase include Redmine::I18n @@ -305,6 +305,26 @@ end end + def test_wiki_content_added + content = WikiContent.find(:first) + valid_languages.each do |lang| + Setting.default_language = lang.to_s + assert_difference 'ActionMailer::Base.deliveries.size' do + assert Mailer.deliver_wiki_content_added(content) + end + end + end + + def test_wiki_content_updated + content = WikiContent.find(:first) + valid_languages.each do |lang| + Setting.default_language = lang.to_s + assert_difference 'ActionMailer::Base.deliveries.size' do + assert Mailer.deliver_wiki_content_updated(content) + end + end + end + def test_account_information user = User.find(2) valid_languages.each do |lang| diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/member_test.rb.svn-base --- a/test/unit/.svn/text-base/member_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/member_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class MemberTest < ActiveSupport::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/message_test.rb.svn-base --- a/test/unit/.svn/text-base/message_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/message_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class MessageTest < ActiveSupport::TestCase fixtures :projects, :roles, :members, :member_roles, :boards, :messages, :users, :watchers diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/news_test.rb.svn-base --- a/test/unit/.svn/text-base/news_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/news_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class NewsTest < ActiveSupport::TestCase fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news @@ -46,9 +46,8 @@ end def test_should_not_include_news_for_projects_with_news_disabled - # The projects_002 (OnlineStore) doesn't have the news module enabled, use that project for this test - project = projects(:projects_002) - assert ! project.enabled_modules.any?{ |em| em.name == 'news' } + EnabledModule.delete_all(["project_id = ? AND name = ?", 2, 'news']) + project = Project.find(2) # Add a piece of news to the project news = project.news.create(valid_news) @@ -58,8 +57,7 @@ end def test_should_only_include_news_from_projects_visibly_to_the_user - # users_001 has no memberships so can only get news from public project - assert News.latest(users(:users_001)).all? { |news| news.project.is_public? } + assert News.latest(User.anonymous).all? { |news| news.project.is_public? } end def test_should_limit_the_amount_of_returned_news diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/principal_test.rb.svn-base --- a/test/unit/.svn/text-base/principal_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/principal_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class PrincipalTest < ActiveSupport::TestCase diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/project_nested_set_test.rb.svn-base --- a/test/unit/.svn/text-base/project_nested_set_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/project_nested_set_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,44 +15,104 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ProjectNestedSetTest < ActiveSupport::TestCase - def setup - Project.delete_all + context "nested set" do + setup do + Project.delete_all + + @a = Project.create!(:name => 'Project A', :identifier => 'projecta') + @a1 = Project.create!(:name => 'Project A1', :identifier => 'projecta1') + @a1.set_parent!(@a) + @a2 = Project.create!(:name => 'Project A2', :identifier => 'projecta2') + @a2.set_parent!(@a) + + @b = Project.create!(:name => 'Project B', :identifier => 'projectb') + @b1 = Project.create!(:name => 'Project B1', :identifier => 'projectb1') + @b1.set_parent!(@b) + @b11 = Project.create!(:name => 'Project B11', :identifier => 'projectb11') + @b11.set_parent!(@b1) + @b2 = Project.create!(:name => 'Project B2', :identifier => 'projectb2') + @b2.set_parent!(@b) + + @c = Project.create!(:name => 'Project C', :identifier => 'projectc') + @c1 = Project.create!(:name => 'Project C1', :identifier => 'projectc1') + @c1.set_parent!(@c) + + [@a, @a1, @a2, @b, @b1, @b11, @b2, @c, @c1].each(&:reload) + end + + context "#create" do + should "build valid tree" do + assert_nested_set_values({ + @a => [nil, 1, 6], + @a1 => [@a.id, 2, 3], + @a2 => [@a.id, 4, 5], + @b => [nil, 7, 14], + @b1 => [@b.id, 8, 11], + @b11 => [@b1.id,9, 10], + @b2 => [@b.id,12, 13], + @c => [nil, 15, 18], + @c1 => [@c.id,16, 17] + }) + end + end + + context "#set_parent!" do + should "keep valid tree" do + assert_no_difference 'Project.count' do + Project.find_by_name('Project B1').set_parent!(Project.find_by_name('Project A2')) + end + assert_nested_set_values({ + @a => [nil, 1, 10], + @a2 => [@a.id, 4, 9], + @b1 => [@a2.id,5, 8], + @b11 => [@b1.id,6, 7], + @b => [nil, 11, 14], + @c => [nil, 15, 18] + }) + end + end + + context "#destroy" do + context "a root with children" do + should "not mess up the tree" do + assert_difference 'Project.count', -4 do + Project.find_by_name('Project B').destroy + end + assert_nested_set_values({ + @a => [nil, 1, 6], + @a1 => [@a.id, 2, 3], + @a2 => [@a.id, 4, 5], + @c => [nil, 7, 10], + @c1 => [@c.id, 8, 9] + }) + end + end + + context "a child with children" do + should "not mess up the tree" do + assert_difference 'Project.count', -2 do + Project.find_by_name('Project B1').destroy + end + assert_nested_set_values({ + @a => [nil, 1, 6], + @b => [nil, 7, 10], + @b2 => [@b.id, 8, 9], + @c => [nil, 11, 14] + }) + end + end + end end - def test_destroy_root_and_chldren_should_not_mess_up_the_tree - a = Project.create!(:name => 'Project A', :identifier => 'projecta') - a1 = Project.create!(:name => 'Project A1', :identifier => 'projecta1') - a2 = Project.create!(:name => 'Project A2', :identifier => 'projecta2') - a1.set_parent!(a) - a2.set_parent!(a) - b = Project.create!(:name => 'Project B', :identifier => 'projectb') - b1 = Project.create!(:name => 'Project B1', :identifier => 'projectb1') - b1.set_parent!(b) - - a.reload - a1.reload - a2.reload - b.reload - b1.reload - - assert_equal [nil, 1, 6], [a.parent_id, a.lft, a.rgt] - assert_equal [a.id, 2, 3], [a1.parent_id, a1.lft, a1.rgt] - assert_equal [a.id, 4, 5], [a2.parent_id, a2.lft, a2.rgt] - assert_equal [nil, 7, 10], [b.parent_id, b.lft, b.rgt] - assert_equal [b.id, 8, 9], [b1.parent_id, b1.lft, b1.rgt] - - assert_difference 'Project.count', -3 do - a.destroy + def assert_nested_set_values(h) + assert Project.valid? + h.each do |project, expected| + project.reload + assert_equal expected, [project.parent_id, project.lft, project.rgt], "Unexpected nested set values for #{project.name}" end - - b.reload - b1.reload - - assert_equal [nil, 1, 4], [b.parent_id, b.lft, b.rgt] - assert_equal [b.id, 2, 3], [b1.parent_id, b1.lft, b1.rgt] end -end \ No newline at end of file +end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/project_test.rb.svn-base --- a/test/unit/.svn/text-base/project_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/project_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ProjectTest < ActiveSupport::TestCase fixtures :all @@ -60,6 +60,35 @@ assert_equal "eCookbook", @ecookbook.name end + def test_default_attributes + with_settings :default_projects_public => '1' do + assert_equal true, Project.new.is_public + assert_equal false, Project.new(:is_public => false).is_public + end + + with_settings :default_projects_public => '0' do + assert_equal false, Project.new.is_public + assert_equal true, Project.new(:is_public => true).is_public + end + + with_settings :sequential_project_identifiers => '1' do + assert !Project.new.identifier.blank? + assert Project.new(:identifier => '').identifier.blank? + end + + with_settings :sequential_project_identifiers => '0' do + assert Project.new.identifier.blank? + assert !Project.new(:identifier => 'test').blank? + end + + with_settings :default_projects_modules => ['issue_tracking', 'repository'] do + assert_equal ['issue_tracking', 'repository'], Project.new.enabled_module_names + end + + assert_equal Tracker.all, Project.new.trackers + assert_equal Tracker.find(1, 3), Project.new(:tracker_ids => [1, 3]).trackers + end + def test_update assert_equal "eCookbook", @ecookbook.name @ecookbook.name = "eCook" @@ -741,6 +770,22 @@ assert_equal @project, membership.project end end + + should "copy memberships with groups and additional roles" do + group = Group.create!(:lastname => "Copy group") + user = User.find(7) + group.users << user + # group role + Member.create!(:project_id => @source_project.id, :principal => group, :role_ids => [2]) + member = Member.find_by_user_id_and_project_id(user.id, @source_project.id) + # additional role + member.role_ids = [1] + + assert @project.copy(@source_project) + member = Member.find_by_user_id_and_project_id(user.id, @project.id) + assert_not_nil member + assert_equal [1, 2], member.role_ids.sort + end should "copy project specific queries" do assert @project.valid? @@ -853,14 +898,6 @@ should "be nil if there are no issues on the project" do assert_nil @project.start_date end - - should "be nil if issue tracking is disabled" do - Issue.generate_for_project!(@project, :start_date => Date.today) - @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy} - @project.reload - - assert_nil @project.start_date - end should "be tested when issues have no start date" @@ -884,14 +921,6 @@ should "be nil if there are no issues on the project" do assert_nil @project.due_date end - - should "be nil if issue tracking is disabled" do - Issue.generate_for_project!(@project, :due_date => Date.today) - @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy} - @project.reload - - assert_nil @project.due_date - end should "be tested when issues have no due date" diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/query_test.rb.svn-base --- a/test/unit/.svn/text-base/query_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/query_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class QueryTest < ActiveSupport::TestCase fixtures :projects, :enabled_modules, :users, :members, :member_roles, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :watchers, :custom_fields, :custom_values, :versions, :queries @@ -235,6 +235,22 @@ q = Query.new assert q.groupable_columns.detect {|c| c.is_a? QueryCustomFieldColumn} end + + def test_grouped_with_valid_column + q = Query.new(:group_by => 'status') + assert q.grouped? + assert_not_nil q.group_by_column + assert_equal :status, q.group_by_column.name + assert_not_nil q.group_by_statement + assert_equal 'status', q.group_by_statement + end + + def test_grouped_with_invalid_column + q = Query.new(:group_by => 'foo') + assert !q.grouped? + assert_nil q.group_by_column + assert_nil q.group_by_statement + end def test_default_sort q = Query.new @@ -382,6 +398,12 @@ assert users[:values].map{|u|u[1]}.include?("3") end + should "include visible projects in cross-project view" do + projects = @query.available_filters["project_id"] + assert_not_nil projects + assert projects[:values].map{|u|u[1]}.include?("1") + end + context "'member_of_group' filter" do should "be present" do assert @query.available_filters.keys.include?("member_of_group") @@ -462,7 +484,6 @@ # Users not in a group assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" assert_find_issues_with_query_is_successful @query - end should "search assigned to any group member (all)" do @@ -472,7 +493,22 @@ # Only users in a group assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" assert_find_issues_with_query_is_successful @query - + end + + should "return an empty set with = empty group" do + @empty_group = Group.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '=', [@empty_group.id.to_s]) + + assert_equal [], find_issues_with_query(@query) + end + + should "return issues with ! empty group" do + @empty_group = Group.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '!', [@empty_group.id.to_s]) + + assert_find_issues_with_query_is_successful @query end end @@ -518,6 +554,22 @@ assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')" assert_find_issues_with_query_is_successful @query end + + should "return an empty set with empty role" do + @empty_role = Role.generate! + @query = Query.new(:name => '_') + @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s]) + + assert_equal [], find_issues_with_query(@query) + end + + should "return issues with ! empty role" do + @empty_role = Role.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '!', [@empty_role.id.to_s]) + + assert_find_issues_with_query_is_successful @query + end end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,20 +15,23 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositoryBazaarTest < ActiveSupport::TestCase fixtures :projects - + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository' REPOSITORY_PATH.gsub!(/\/+/, '/') def setup - @project = Project.find(1) - assert @repository = Repository::Bazaar.create(:project => @project, :url => "file:///#{REPOSITORY_PATH}") + @project = Project.find(3) + @repository = Repository::Bazaar.create( + :project => @project, :url => "file:///#{REPOSITORY_PATH}", + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @@ -38,7 +41,7 @@ assert_equal 9, @repository.changes.count assert_equal 'Initial import', @repository.changesets.find_by_revision('1').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 5 @@ -49,7 +52,7 @@ @repository.fetch_changesets assert_equal 4, @repository.changesets.count end - + def test_entries entries = @repository.entries assert_equal 2, entries.size @@ -68,19 +71,6 @@ assert_equal 'file', entries.last.kind assert_equal 'edit.png', entries.last.name end - - def test_cat - cat = @repository.scm.cat('directory/document.txt') - assert cat =~ /Write the contents of a file as of a given revision to standard output/ - end - - def test_annotate - annotate = @repository.scm.annotate('doc-mkdir.txt') - assert_equal 17, annotate.lines.size - assert_equal 1, annotate.revisions[0].identifier - assert_equal 'jsmith@', annotate.revisions[0].author - assert_equal 'mkdir', annotate.lines[0] - end else puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_cvs_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_cvs_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_cvs_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) require 'pp' class RepositoryCvsTest < ActiveSupport::TestCase fixtures :projects @@ -27,34 +27,64 @@ MODULE_NAME = 'test' def setup - @project = Project.find(1) - assert @repository = Repository::Cvs.create(:project => @project, - :root_url => REPOSITORY_PATH, - :url => MODULE_NAME) + @project = Project.find(3) + @repository = Repository::Cvs.create(:project => @project, + :root_url => REPOSITORY_PATH, + :url => MODULE_NAME, + :log_encoding => 'UTF-8') + assert @repository end if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch + assert_equal 0, @repository.changesets.count @repository.fetch_changesets @repository.reload assert_equal 5, @repository.changesets.count assert_equal 14, @repository.changes.count assert_not_nil @repository.changesets.find_by_comments('Two files changed') + + r2 = @repository.changesets.find_by_revision('2') + assert_equal 'v1-20071213-162510', r2.scmid end def test_fetch_changesets_incremental + assert_equal 0, @repository.changesets.count @repository.fetch_changesets - # Remove the 3 latest changesets - @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy) + # Remove changesets with revision > 3 + @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3} @repository.reload - assert_equal 2, @repository.changesets.count - + assert_equal 3, @repository.changesets.count + assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision) + + rev3_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal '3', rev3_commit.revision + # 2007-12-14 01:27:22 +0900 + rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) + assert_equal 'HEAD-20071213-162722', rev3_commit.scmid + assert_equal rev3_committed_on, rev3_commit.committed_on + latest_rev = @repository.latest_changeset + assert_equal rev3_committed_on, latest_rev.committed_on + @repository.fetch_changesets + @repository.reload assert_equal 5, @repository.changesets.count + + assert_equal %w|5 4 3 2 1|, @repository.changesets.collect(&:revision) + rev5_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal 'HEAD-20071213-163001', rev5_commit.scmid + # 2007-12-14 01:30:01 +0900 + rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1) + assert_equal rev5_committed_on, rev5_commit.committed_on end def test_deleted_files_should_not_be_listed + assert_equal 0, @repository.changesets.count + @repository.fetch_changesets + @repository.reload + assert_equal 5, @repository.changesets.count + entries = @repository.entries('sources') assert entries.detect {|e| e.name == 'watchers_controller.rb'} assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_darcs_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_darcs_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_darcs_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,29 +15,32 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositoryDarcsTest < ActiveSupport::TestCase fixtures :projects - + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' - + def setup - @project = Project.find(1) - assert @repository = Repository::Darcs.create(:project => @project, :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Darcs.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - + assert_equal 6, @repository.changesets.count assert_equal 13, @repository.changes.count assert_equal "Initial commit.", @repository.changesets.find_by_revision('1').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 3 @@ -48,18 +51,22 @@ @repository.fetch_changesets assert_equal 6, @repository.changesets.count end - + def test_deleted_files_should_not_be_listed + @repository.fetch_changesets + @repository.reload entries = @repository.entries('sources') assert entries.detect {|e| e.name == 'watchers_controller.rb'} assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} end - + def test_cat - @repository.fetch_changesets - cat = @repository.cat("sources/welcome_controller.rb", 2) - assert_not_nil cat - assert cat.include?('class WelcomeController < ApplicationController') + if @repository.scm.supports_cat? + @repository.fetch_changesets + cat = @repository.cat("sources/welcome_controller.rb", 2) + assert_not_nil cat + assert cat.include?('class WelcomeController < ApplicationController') + end end else puts "Darcs test repository NOT FOUND. Skipping unit tests !!!" diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_filesystem_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_filesystem_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_filesystem_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositoryFilesystemTest < ActiveSupport::TestCase fixtures :projects diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_git_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_git_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_git_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,28 +15,32 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositoryGitTest < ActiveSupport::TestCase - fixtures :projects - + fixtures :projects, :repositories, :enabled_modules, :users, :roles + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository' REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? - + + FELIX_HEX = "Felix Sch\xC3\xA4fer" + def setup - @project = Project.find(1) - assert @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH) + Setting.commit_logs_encoding = 'UTF-8' + @project = Project.find(3) + @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - - assert_equal 15, @repository.changesets.count - assert_equal 24, @repository.changes.count - + + assert_equal 16, @repository.changesets.count + assert_equal 25, @repository.changes.count + commit = @repository.changesets.find(:first, :order => 'committed_on ASC') assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments assert_equal "jsmith ", commit.committer @@ -57,10 +61,72 @@ # Remove the 3 latest changesets @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy) @repository.reload - assert_equal 12, @repository.changesets.count - + cs1 = @repository.changesets + assert_equal 13, cs1.count + + rev_a_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.revision + # Mon Jul 5 22:34:26 2010 +0200 + rev_a_committed_on = Time.gm(2010, 7, 5, 20, 34, 26) + assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.scmid + assert_equal rev_a_committed_on, rev_a_commit.committed_on + latest_rev = @repository.latest_changeset + assert_equal rev_a_committed_on, latest_rev.committed_on + @repository.fetch_changesets - assert_equal 15, @repository.changesets.count + assert_equal 16, @repository.changesets.count + end + + def test_find_changeset_by_name + @repository.fetch_changesets + @repository.reload + ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r| + assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', + @repository.find_changeset_by_name(r).revision + end + end + + def test_find_changeset_by_empty_name + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + assert_nil @repository.find_changeset_by_name(r) + end + end + + def test_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('7234cb2750b63f47bff735edc50a1c0a433c2518') + assert_equal c.scmid, c.identifier + end + + def test_format_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('7234cb2750b63f47bff735edc50a1c0a433c2518') + assert_equal '7234cb27', c.format_identifier + end + + def test_activities + c = Changeset.new(:repository => @repository, + :committed_on => Time.now, + :revision => 'abc7234cb2750b63f47bff735edc50a1c0a433c2', + :scmid => 'abc7234cb2750b63f47bff735edc50a1c0a433c2', + :comments => 'test') + assert c.event_title.include?('abc7234c:') + assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev] + end + + def test_log_utf8 + @repository.fetch_changesets + @repository.reload + str_felix_hex = FELIX_HEX + if str_felix_hex.respond_to?(:force_encoding) + str_felix_hex.force_encoding('UTF-8') + end + c = @repository.changesets.find_by_revision('ed5bb786bbda2dee66a2d50faf51429dbc043a7b') + assert_equal "#{str_felix_hex} ", c.committer end else puts "Git test repository NOT FOUND. Skipping unit tests !!!" diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,29 +15,30 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositoryMercurialTest < ActiveSupport::TestCase fixtures :projects # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository' - + def setup - @project = Project.find(1) - assert @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - - assert_equal 6, @repository.changesets.count - assert_equal 11, @repository.changes.count - assert_equal "Initial import.\nThe repository contains 3 files.", @repository.changesets.find_by_revision('0').comments + assert_equal 17, @repository.changesets.count + assert_equal 25, @repository.changes.count + assert_equal "Initial import.\nThe repository contains 3 files.", + @repository.changesets.find_by_revision('0').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 2 @@ -46,28 +47,154 @@ assert_equal 3, @repository.changesets.count @repository.fetch_changesets - assert_equal 6, @repository.changesets.count - end - - def test_entries - assert_equal 2, @repository.entries("sources", 2).size - assert_equal 1, @repository.entries("sources", 3).size + assert_equal 17, @repository.changesets.count end - def test_locate_on_outdated_repository - # Change the working dir state - %x{hg -R #{REPOSITORY_PATH} up -r 0} - assert_equal 1, @repository.entries("images", 0).size - assert_equal 2, @repository.entries("images").size - assert_equal 2, @repository.entries("images", 2).size + def test_isodatesec + # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher + if @repository.scm.class.client_version_above?([1, 0]) + @repository.fetch_changesets + @repository.reload + rev0_committed_on = Time.gm(2007, 12, 14, 9, 22, 52) + assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on + end end + def test_changeset_order_by_revision + @repository.fetch_changesets + @repository.reload - def test_cat - assert @repository.scm.cat("sources/welcome_controller.rb", 2) - assert_nil @repository.scm.cat("sources/welcome_controller.rb") + c0 = @repository.latest_changeset + c1 = @repository.changesets.find_by_revision('0') + # sorted by revision (id), not by date + assert c0.revision.to_i > c1.revision.to_i + assert c0.committed_on < c1.committed_on end + def test_latest_changesets + @repository.fetch_changesets + @repository.reload + + # with_limit + changesets = @repository.latest_changesets('', nil, 2) + assert_equal @repository.latest_changesets('', nil)[0, 2], changesets + + # with_filepath + changesets = @repository.latest_changesets('/sql_escape/percent%dir/percent%file1.txt', nil) + assert_equal %w|11 10 9|, changesets.collect(&:revision) + + changesets = @repository.latest_changesets('/sql_escape/underscore_dir/understrike_file.txt', nil) + assert_equal %w|12 9|, changesets.collect(&:revision) + end + + def test_copied_files + @repository.fetch_changesets + @repository.reload + + cs1 = @repository.changesets.find_by_revision('13') + assert_not_nil cs1 + c1 = cs1.changes.sort_by(&:path) + assert_equal 2, c1.size + + assert_equal 'A', c1[0].action + assert_equal '/sql_escape/percent%dir/percentfile1.txt', c1[0].path + assert_equal '/sql_escape/percent%dir/percent%file1.txt', c1[0].from_path + + assert_equal 'A', c1[1].action + assert_equal '/sql_escape/underscore_dir/understrike-file.txt', c1[1].path + assert_equal '/sql_escape/underscore_dir/understrike_file.txt', c1[1].from_path + + cs2 = @repository.changesets.find_by_revision('15') + c2 = cs2.changes + assert_equal 1, c2.size + + assert_equal 'A', c2[0].action + assert_equal '/README (1)[2]&,%.-3_4', c2[0].path + assert_equal '/README', c2[0].from_path + end + + def test_find_changeset_by_name + @repository.fetch_changesets + @repository.reload + %w|2 400bb8672109 400|.each do |r| + assert_equal '2', @repository.find_changeset_by_name(r).revision + end + end + + def test_find_changeset_by_invalid_name + @repository.fetch_changesets + @repository.reload + assert_nil @repository.find_changeset_by_name('100000') + end + + def test_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('2') + assert_equal c.scmid, c.identifier + end + + def test_format_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('2') + assert_equal '2:400bb8672109', c.format_identifier + end + + def test_find_changeset_by_empty_name + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + assert_nil @repository.find_changeset_by_name(r) + end + end + + def test_activities + c = Changeset.new(:repository => @repository, + :committed_on => Time.now, + :revision => '123', + :scmid => 'abc400bb8672', + :comments => 'test') + assert c.event_title.include?('123:abc400bb8672:') + assert_equal 'abc400bb8672', c.event_url[:rev] + end + + def test_latest_changesets_with_limit + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('', nil, 2) + assert_equal @repository.latest_changesets('', nil)[0, 2], changesets + end + + def test_latest_changesets_with_filepath + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('README', nil) + assert_equal %w|8 6 1 0|, changesets.collect(&:revision) + + path = 'sql_escape/percent%dir/percent%file1.txt' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|11 10 9|, changesets.collect(&:revision) + + path = 'sql_escape/underscore_dir/understrike_file.txt' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|12 9|, changesets.collect(&:revision) + end + + def test_latest_changesets_with_dirpath + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('images', nil) + assert_equal %w|1 0|, changesets.collect(&:revision) + + path = 'sql_escape/percent%dir' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|13 11 10 9|, changesets.collect(&:revision) + + path = 'sql_escape/underscore_dir' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|13 12 9|, changesets.collect(&:revision) + end else puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_subversion_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_subversion_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_subversion_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,14 +15,15 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositorySubversionTest < ActiveSupport::TestCase - fixtures :projects, :repositories + fixtures :projects, :repositories, :enabled_modules, :users, :roles def setup - @project = Project.find(1) - assert @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}") + @project = Project.find(3) + assert @repository = Repository::Subversion.create(:project => @project, + :url => "file://#{self.class.repository_path('subversion')}") end if repository_configured?('subversion') @@ -74,7 +75,7 @@ end def test_directory_listing_with_square_brackets_in_base - @project = Project.find(1) + @project = Project.find(3) @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]") @repository.fetch_changesets @@ -88,6 +89,104 @@ assert_equal 1, entries.size, 'Expect a single entry' assert_equal 'README.txt', entries.first.name end + + def test_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('1') + assert_equal c.revision, c.identifier + end + + def test_find_changeset_by_empty_name + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + assert_nil @repository.find_changeset_by_name(r) + end + end + + def test_identifier_nine_digit + c = Changeset.new(:repository => @repository, :committed_on => Time.now, + :revision => '123456789', :comments => 'test') + assert_equal c.identifier, c.revision + end + + def test_format_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('1') + assert_equal c.format_identifier, c.revision + end + + def test_format_identifier_nine_digit + c = Changeset.new(:repository => @repository, :committed_on => Time.now, + :revision => '123456789', :comments => 'test') + assert_equal c.format_identifier, c.revision + end + + def test_activities + c = Changeset.new(:repository => @repository, :committed_on => Time.now, + :revision => '1', :comments => 'test') + assert c.event_title.include?('1:') + assert_equal '1', c.event_url[:rev] + end + + def test_activities_nine_digit + c = Changeset.new(:repository => @repository, :committed_on => Time.now, + :revision => '123456789', :comments => 'test') + assert c.event_title.include?('123456789:') + assert_equal '123456789', c.event_url[:rev] + end + + def test_log_encoding_ignore_setting + with_settings :commit_logs_encoding => 'windows-1252' do + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + c = Changeset.new(:repository => @repository, + :comments=>s2, + :revision=>'123', + :committed_on => Time.now) + assert c.save + assert_equal s2, c.comments + end + end + + def test_previous + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('3') + assert_equal @repository.find_changeset_by_name('2'), changeset.previous + end + + def test_previous_nil + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('1') + assert_nil changeset.previous + end + + def test_next + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('2') + assert_equal @repository.find_changeset_by_name('3'), changeset.next + end + + def test_next_nil + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('11') + assert_nil changeset.next + end else puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/repository_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/repository_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,18 +15,23 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositoryTest < ActiveSupport::TestCase fixtures :projects, :trackers, :projects_trackers, + :enabled_modules, :repositories, :issues, :issue_statuses, + :issue_categories, :changesets, :changes, :users, + :members, + :member_roles, + :roles, :enumerations def setup @@ -57,12 +62,11 @@ def test_should_not_create_with_disabled_scm # disable Subversion - Setting.enabled_scm = ['Darcs', 'Git'] - repository = Repository::Subversion.new(:project => Project.find(3), :url => "svn://localhost") - assert !repository.save - assert_equal I18n.translate('activerecord.errors.messages.invalid'), repository.errors.on(:type) - # re-enable Subversion for following tests - Setting.delete_all + with_settings :enabled_scm => ['Darcs', 'Git'] do + repository = Repository::Subversion.new(:project => Project.find(3), :url => "svn://localhost") + assert !repository.save + assert_equal I18n.translate('activerecord.errors.messages.invalid'), repository.errors.on(:type) + end end def test_scan_changesets_for_issue_ids @@ -121,16 +125,19 @@ assert_not_equal( comment, changeset.comments ) assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments ) end - + def test_for_urls_strip - repository = Repository::Cvs.create(:project => Project.find(4), :url => ' :pserver:login:password@host:/path/to/the/repository', - :root_url => 'foo ') + repository = Repository::Cvs.create( + :project => Project.find(4), + :url => ' :pserver:login:password@host:/path/to/the/repository', + :root_url => 'foo ', + :log_encoding => 'UTF-8') assert repository.save repository.reload assert_equal ':pserver:login:password@host:/path/to/the/repository', repository.url assert_equal 'foo', repository.root_url end - + def test_manual_user_mapping assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do c = Changeset.create!(:repository => @repository, :committer => 'foo', :committed_on => Time.now, :revision => 100, :comments => 'Committed by foo.') diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/role_test.rb.svn-base --- a/test/unit/.svn/text-base/role_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/role_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RoleTest < ActiveSupport::TestCase fixtures :roles, :workflows diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/search_test.rb.svn-base --- a/test/unit/.svn/text-base/search_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/search_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class SearchTest < ActiveSupport::TestCase fixtures :users, diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/setting_test.rb.svn-base --- a/test/unit/.svn/text-base/setting_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/setting_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class SettingTest < ActiveSupport::TestCase diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/testing_test.rb.svn-base --- a/test/unit/.svn/text-base/testing_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/testing_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) # Test case that checks that the testing infrastructure is setup correctly. class TestingTest < ActiveSupport::TestCase diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/time_entry_activity_test.rb.svn-base --- a/test/unit/.svn/text-base/time_entry_activity_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/time_entry_activity_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class TimeEntryActivityTest < ActiveSupport::TestCase fixtures :enumerations, :time_entries diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/time_entry_test.rb.svn-base --- a/test/unit/.svn/text-base/time_entry_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/time_entry_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class TimeEntryTest < ActiveSupport::TestCase fixtures :issues, :projects, :users, :time_entries @@ -48,6 +48,42 @@ def test_hours_should_default_to_nil assert_nil TimeEntry.new.hours end + + def test_spent_on_with_blank + c = TimeEntry.new + c.spent_on = '' + assert_nil c.spent_on + end + + def test_spent_on_with_nil + c = TimeEntry.new + c.spent_on = nil + assert_nil c.spent_on + end + + def test_spent_on_with_string + c = TimeEntry.new + c.spent_on = "2011-01-14" + assert_equal Date.parse("2011-01-14"), c.spent_on + end + + def test_spent_on_with_invalid_string + c = TimeEntry.new + c.spent_on = "foo" + assert_nil c.spent_on + end + + def test_spent_on_with_date + c = TimeEntry.new + c.spent_on = Date.today + assert_equal Date.today, c.spent_on + end + + def test_spent_on_with_time + c = TimeEntry.new + c.spent_on = Time.now + assert_equal Date.today, c.spent_on + end context "#earilest_date_for_project" do setup do diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/token_test.rb.svn-base --- a/test/unit/.svn/text-base/token_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/token_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class TokenTest < ActiveSupport::TestCase fixtures :tokens diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/tracker_test.rb.svn-base --- a/test/unit/.svn/text-base/tracker_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/tracker_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class TrackerTest < ActiveSupport::TestCase fixtures :trackers, :workflows, :issue_statuses, :roles diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/user_preference_test.rb.svn-base --- a/test/unit/.svn/text-base/user_preference_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/user_preference_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class UserPreferenceTest < ActiveSupport::TestCase fixtures :users, :user_preferences diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/user_test.rb.svn-base --- a/test/unit/.svn/text-base/user_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/user_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -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 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class UserTest < ActiveSupport::TestCase fixtures :users, :members, :projects, :roles, :member_roles, :auth_sources @@ -109,18 +109,229 @@ assert_equal "john", @admin.login end - def test_destroy - User.find(2).destroy + def test_destroy_should_delete_members_and_roles + members = Member.find_all_by_user_id(2) + ms = members.size + rs = members.collect(&:roles).flatten.size + + assert_difference 'Member.count', - ms do + assert_difference 'MemberRole.count', - rs do + User.find(2).destroy + end + end + assert_nil User.find_by_id(2) assert Member.find_all_by_user_id(2).empty? end - def test_validate + def test_destroy_should_update_attachments + attachment = Attachment.create!(:container => Project.find(1), + :file => uploaded_test_file("testfile.txt", "text/plain"), + :author_id => 2) + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, attachment.reload.author + end + + def test_destroy_should_update_comments + comment = Comment.create!( + :commented => News.create!(:project_id => 1, :author_id => 1, :title => 'foo', :description => 'foo'), + :author => User.find(2), + :comments => 'foo' + ) + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, comment.reload.author + end + + def test_destroy_should_update_issues + issue = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'foo') + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, issue.reload.author + end + + def test_destroy_should_unassign_issues + issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo', :assigned_to_id => 2) + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_nil issue.reload.assigned_to + end + + def test_destroy_should_update_journals + issue = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'foo') + issue.init_journal(User.find(2), "update") + issue.save! + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, issue.journals.first.reload.user + end + + def test_destroy_should_update_journal_details_old_value + issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo', :assigned_to_id => 2) + issue.init_journal(User.find(1), "update") + issue.assigned_to_id = nil + assert_difference 'JournalDetail.count' do + issue.save! + end + journal_detail = JournalDetail.first(:order => 'id DESC') + assert_equal '2', journal_detail.old_value + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous.id.to_s, journal_detail.reload.old_value + end + + def test_destroy_should_update_journal_details_value + issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo') + issue.init_journal(User.find(1), "update") + issue.assigned_to_id = 2 + assert_difference 'JournalDetail.count' do + issue.save! + end + journal_detail = JournalDetail.first(:order => 'id DESC') + assert_equal '2', journal_detail.value + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous.id.to_s, journal_detail.reload.value + end + + def test_destroy_should_update_messages + board = Board.create!(:project_id => 1, :name => 'Board', :description => 'Board') + message = Message.create!(:board_id => board.id, :author_id => 2, :subject => 'foo', :content => 'foo') + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, message.reload.author + end + + def test_destroy_should_update_news + news = News.create!(:project_id => 1, :author_id => 2, :title => 'foo', :description => 'foo') + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, news.reload.author + end + + def test_destroy_should_delete_private_queries + query = Query.new(:name => 'foo', :is_public => false) + query.project_id = 1 + query.user_id = 2 + query.save! + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_nil Query.find_by_id(query.id) + end + + def test_destroy_should_update_public_queries + query = Query.new(:name => 'foo', :is_public => true) + query.project_id = 1 + query.user_id = 2 + query.save! + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, query.reload.user + end + + def test_destroy_should_update_time_entries + entry = TimeEntry.new(:hours => '2', :spent_on => Date.today, :activity => TimeEntryActivity.create!(:name => 'foo')) + entry.project_id = 1 + entry.user_id = 2 + entry.save! + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, entry.reload.user + end + + def test_destroy_should_delete_tokens + token = Token.create!(:user_id => 2, :value => 'foo') + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_nil Token.find_by_id(token.id) + end + + def test_destroy_should_delete_watchers + issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo') + watcher = Watcher.create!(:user_id => 2, :watchable => issue) + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_nil Watcher.find_by_id(watcher.id) + end + + def test_destroy_should_update_wiki_contents + wiki_content = WikiContent.create!( + :text => 'foo', + :author_id => 2, + :page => WikiPage.create!(:title => 'Foo', :wiki => Wiki.create!(:project_id => 1, :start_page => 'Start')) + ) + wiki_content.text = 'bar' + assert_difference 'WikiContent::Version.count' do + wiki_content.save! + end + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_equal User.anonymous, wiki_content.reload.author + wiki_content.versions.each do |version| + assert_equal User.anonymous, version.reload.author + end + end + + def test_destroy_should_nullify_issue_categories + category = IssueCategory.create!(:project_id => 1, :assigned_to_id => 2, :name => 'foo') + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_nil category.reload.assigned_to_id + end + + def test_destroy_should_nullify_changesets + changeset = Changeset.create!( + :repository => Repository::Subversion.create!( + :project_id => 1, + :url => 'file:///var/svn' + ), + :revision => '12', + :committed_on => Time.now, + :committer => 'jsmith' + ) + assert_equal 2, changeset.user_id + + User.find(2).destroy + assert_nil User.find_by_id(2) + assert_nil changeset.reload.user_id + end + + def test_anonymous_user_should_not_be_destroyable + assert_no_difference 'User.count' do + assert_equal false, User.anonymous.destroy + end + end + + def test_validate_login_presence @admin.login = "" assert !@admin.save assert_equal 1, @admin.errors.count end + def test_validate_mail_notification_inclusion + u = User.new + u.mail_notification = 'foo' + u.save + assert_not_nil u.errors.on(:mail_notification) + end + context "User#try_to_login" do should "fall-back to case-insensitive if user login is not found as-typed." do user = User.try_to_login("AdMin", "admin") @@ -150,7 +361,6 @@ user = User.try_to_login("admin", "hello") assert_kind_of User, user assert_equal "admin", user.login - assert_equal User.hash_password("hello"), user.hashed_password end def test_name_format @@ -172,6 +382,22 @@ assert_equal nil, user end + context ".try_to_login" do + context "with good credentials" do + should "return the user" do + user = User.try_to_login("admin", "admin") + assert_kind_of User, user + assert_equal "admin", user.login + end + end + + context "with wrong credentials" do + should "return nil" do + assert_nil User.try_to_login("admin", "foo") + end + end + end + if ldap_configured? context "#try_to_login using LDAP" do context "with failed connection to the LDAP server" do @@ -296,6 +522,19 @@ assert_nil @dlopper.roles_for_project(Project.find(2)).detect {|role| role.member?} end + def test_valid_notification_options + # without memberships + assert_equal 5, User.find(7).valid_notification_options.size + # with memberships + assert_equal 6, User.find(2).valid_notification_options.size + end + + def test_valid_notification_options_class_method + assert_equal 5, User.valid_notification_options.size + assert_equal 5, User.valid_notification_options(User.find(7)).size + assert_equal 6, User.valid_notification_options(User.find(2)).size + end + def test_mail_notification_all @jsmith.mail_notification = 'all' @jsmith.notified_project_ids = [] @@ -437,61 +676,89 @@ end should "be true for a user with :all" do - @author.update_attribute(:mail_notification, :all) + @author.update_attribute(:mail_notification, 'all') assert @author.notify_about?(@issue) end should "be false for a user with :none" do - @author.update_attribute(:mail_notification, :none) + @author.update_attribute(:mail_notification, 'none') assert ! @author.notify_about?(@issue) end should "be false for a user with :only_my_events and isn't an author, creator, or assignee" do - @user = User.generate_with_protected!(:mail_notification => :only_my_events) + @user = User.generate_with_protected!(:mail_notification => 'only_my_events') + Member.create!(:user => @user, :project => @project, :role_ids => [1]) assert ! @user.notify_about?(@issue) end should "be true for a user with :only_my_events and is the author" do - @author.update_attribute(:mail_notification, :only_my_events) + @author.update_attribute(:mail_notification, 'only_my_events') assert @author.notify_about?(@issue) end should "be true for a user with :only_my_events and is the assignee" do - @assignee.update_attribute(:mail_notification, :only_my_events) + @assignee.update_attribute(:mail_notification, 'only_my_events') assert @assignee.notify_about?(@issue) end should "be true for a user with :only_assigned and is the assignee" do - @assignee.update_attribute(:mail_notification, :only_assigned) + @assignee.update_attribute(:mail_notification, 'only_assigned') assert @assignee.notify_about?(@issue) end should "be false for a user with :only_assigned and is not the assignee" do - @author.update_attribute(:mail_notification, :only_assigned) + @author.update_attribute(:mail_notification, 'only_assigned') assert ! @author.notify_about?(@issue) end should "be true for a user with :only_owner and is the author" do - @author.update_attribute(:mail_notification, :only_owner) + @author.update_attribute(:mail_notification, 'only_owner') assert @author.notify_about?(@issue) end should "be false for a user with :only_owner and is not the author" do - @assignee.update_attribute(:mail_notification, :only_owner) + @assignee.update_attribute(:mail_notification, 'only_owner') assert ! @assignee.notify_about?(@issue) end - should "be false if the mail_notification is anything else" do - @assignee.update_attribute(:mail_notification, :somthing_else) - assert ! @assignee.notify_about?(@issue) + should "be true for a user with :selected and is the author" do + @author.update_attribute(:mail_notification, 'selected') + assert @author.notify_about?(@issue) end + should "be true for a user with :selected and is the assignee" do + @assignee.update_attribute(:mail_notification, 'selected') + assert @assignee.notify_about?(@issue) + end + + should "be false for a user with :selected and is not the author or assignee" do + @user = User.generate_with_protected!(:mail_notification => 'selected') + Member.create!(:user => @user, :project => @project, :role_ids => [1]) + assert ! @user.notify_about?(@issue) + end end context "other events" do should 'be added and tested' end end + + def test_salt_unsalted_passwords + # Restore a user with an unsalted password + user = User.find(1) + user.salt = nil + user.hashed_password = User.hash_password("unsalted") + user.save! + + User.salt_unsalted_passwords! + + user.reload + # Salt added + assert !user.salt.blank? + # Password still valid + assert user.check_password?("unsalted") + assert_equal user, User.try_to_login(user.login, "unsalted") + end if Object.const_defined?(:OpenID) diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/version_test.rb.svn-base --- a/test/unit/.svn/text-base/version_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/version_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class VersionTest < ActiveSupport::TestCase fixtures :projects, :users, :issues, :issue_statuses, :trackers, :enumerations, :versions @@ -190,7 +190,7 @@ # Separate hierarchy project_1_issue = Issue.find(1) project_1_issue.fixed_version = @version - assert project_1_issue.save, project_1_issue.errors.full_messages + assert project_1_issue.save, project_1_issue.errors.full_messages.to_s project_5_issue = Issue.find(6) project_5_issue.fixed_version = @version diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/watcher_test.rb.svn-base --- a/test/unit/.svn/text-base/watcher_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/watcher_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class WatcherTest < ActiveSupport::TestCase fixtures :projects, :users, :members, :member_roles, :roles, :enabled_modules, diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/wiki_content_test.rb.svn-base --- a/test/unit/.svn/text-base/wiki_content_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/wiki_content_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class WikiContentTest < ActiveSupport::TestCase fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :users diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/wiki_page_test.rb.svn-base --- a/test/unit/.svn/text-base/wiki_page_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/wiki_page_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class WikiPageTest < ActiveSupport::TestCase fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/wiki_redirect_test.rb.svn-base --- a/test/unit/.svn/text-base/wiki_redirect_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/wiki_redirect_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,10 +15,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class WikiRedirectTest < ActiveSupport::TestCase - fixtures :projects, :wikis + fixtures :projects, :wikis, :wiki_pages def setup @wiki = Wiki.find(1) @@ -33,6 +33,7 @@ assert_equal 'New_title', @original.title assert @wiki.redirects.find_by_title('Original_title') assert @wiki.find_page('Original title') + assert @wiki.find_page('ORIGINAL title') end def test_update_redirect diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/.svn/text-base/wiki_test.rb.svn-base --- a/test/unit/.svn/text-base/wiki_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/.svn/text-base/wiki_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class WikiTest < ActiveSupport::TestCase fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions @@ -39,6 +39,18 @@ assert_equal "Another start page", @wiki.start_page end + def test_find_page + wiki = Wiki.find(1) + page = WikiPage.find(2) + + assert_equal page, wiki.find_page('Another_page') + assert_equal page, wiki.find_page('Another page') + assert_equal page, wiki.find_page('ANOTHER page') + + page = WikiPage.find(10) + assert_equal page, wiki.find_page('Этика_менеджмента') + end + def test_titleize assert_equal 'Page_title_with_CAPITALES', Wiki.titleize('page title with CAPITALES') assert_equal 'テスト', Wiki.titleize('テスト') diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/activity_test.rb --- a/test/unit/activity_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/activity_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ActivityTest < ActiveSupport::TestCase fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details, diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/attachment_test.rb --- a/test/unit/attachment_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/attachment_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AttachmentTest < ActiveSupport::TestCase fixtures :issues, :users @@ -34,7 +34,7 @@ assert_equal 59, a.filesize assert_equal 'text/plain', a.content_type assert_equal 0, a.downloads - assert_equal Digest::MD5.hexdigest(uploaded_test_file("testfile.txt", "text/plain").read), a.digest + assert_equal '1478adae0d4eb06d35897518540e25d6', a.digest assert File.exist?(a.diskfile) end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/auth_source_ldap_test.rb --- a/test/unit/auth_source_ldap_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/auth_source_ldap_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class AuthSourceLdapTest < ActiveSupport::TestCase fixtures :auth_sources diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/board_test.rb --- a/test/unit/board_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/board_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class BoardTest < ActiveSupport::TestCase - fixtures :projects, :boards, :messages + fixtures :projects, :boards, :messages, :attachments, :watchers def setup @project = Project.find(1) @@ -23,8 +23,13 @@ def test_destroy board = Board.find(1) - assert board.destroy - # make sure that the associated messages are removed + assert_difference 'Message.count', -6 do + assert_difference 'Attachment.count', -1 do + assert_difference 'Watcher.count', -1 do + assert board.destroy + end + end + end assert_equal 0, Message.count(:conditions => {:board_id => 1}) end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/calendar_test.rb --- a/test/unit/calendar_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/calendar_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CalendarTest < ActiveSupport::TestCase diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/changeset_test.rb --- a/test/unit/changeset_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/changeset_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class ChangesetTest < ActiveSupport::TestCase fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :users, :members, :member_roles, :trackers @@ -44,6 +44,92 @@ assert_equal 1, ActionMailer::Base.deliveries.size end + def test_ref_keywords + Setting.commit_ref_keywords = 'refs' + Setting.commit_fix_keywords = '' + + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => Time.now, + :comments => 'Ignores #2. Refs #1') + c.scan_comment_for_issue_ids + + assert_equal [1], c.issue_ids.sort + end + + def test_ref_keywords_any_only + Setting.commit_ref_keywords = '*' + Setting.commit_fix_keywords = '' + + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => Time.now, + :comments => 'Ignores #2. Refs #1') + c.scan_comment_for_issue_ids + + assert_equal [1, 2], c.issue_ids.sort + end + + def test_ref_keywords_any_with_timelog + Setting.commit_ref_keywords = '*' + Setting.commit_logtime_enabled = '1' + + { + '2' => 2.0, + '2h' => 2.0, + '2hours' => 2.0, + '15m' => 0.25, + '15min' => 0.25, + '3h15' => 3.25, + '3h15m' => 3.25, + '3h15min' => 3.25, + '3:15' => 3.25, + '3.25' => 3.25, + '3.25h' => 3.25, + '3,25' => 3.25, + '3,25h' => 3.25, + }.each do |syntax, expected_hours| + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => 24.hours.ago, + :comments => "Worked on this issue #1 @#{syntax}", + :revision => '520', + :user => User.find(2)) + assert_difference 'TimeEntry.count' do + c.scan_comment_for_issue_ids + end + assert_equal [1], c.issue_ids.sort + + time = TimeEntry.first(:order => 'id desc') + assert_equal 1, time.issue_id + assert_equal 1, time.project_id + assert_equal 2, time.user_id + assert_equal expected_hours, time.hours, "@#{syntax} should be logged as #{expected_hours} hours but was #{time.hours}" + assert_equal Date.yesterday, time.spent_on + assert time.activity.is_default? + assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}" + end + end + + def test_ref_keywords_closing_with_timelog + Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id + Setting.commit_ref_keywords = '*' + Setting.commit_fix_keywords = 'fixes , closes' + Setting.commit_logtime_enabled = '1' + + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => Time.now, + :comments => 'This is a comment. Fixes #1 @4.5, #2 @1', + :user => User.find(2)) + assert_difference 'TimeEntry.count', 2 do + c.scan_comment_for_issue_ids + end + + assert_equal [1, 2], c.issue_ids.sort + assert Issue.find(1).closed? + assert Issue.find(2).closed? + + times = TimeEntry.all(:order => 'id desc', :limit => 2) + assert_equal [1, 2], times.collect(&:issue_id).sort + end + def test_ref_keywords_any_line_start Setting.commit_ref_keywords = '*' @@ -100,6 +186,21 @@ assert c.issues.first.project != c.project end + def test_text_tag_revision + c = Changeset.new(:revision => '520') + assert_equal 'r520', c.text_tag + end + + def test_text_tag_hash + c = Changeset.new(:scmid => '7234cb2750b63f47bff735edc50a1c0a433c2518', :revision => '7234cb2750b63f47bff735edc50a1c0a433c2518') + assert_equal 'commit:7234cb2750b63f47bff735edc50a1c0a433c2518', c.text_tag + end + + def test_text_tag_hash_all_number + c = Changeset.new(:scmid => '0123456789', :revision => '0123456789') + assert_equal 'commit:0123456789', c.text_tag + end + def test_previous changeset = Changeset.find_by_revision('3') assert_equal Changeset.find_by_revision('2'), changeset.previous @@ -119,18 +220,71 @@ changeset = Changeset.find_by_revision('10') assert_nil changeset.next end - + def test_comments_should_be_converted_to_utf8 - with_settings :commit_logs_encoding => 'ISO-8859-1' do - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) assert_equal "Texte encodé en ISO-8859-1.", c.comments - end end - + def test_invalid_utf8_sequences_in_comments_should_be_stripped - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") - assert_equal "Texte encod en ISO-8859-1.", c.comments + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'UTF-8' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) + if str.respond_to?(:force_encoding) + assert_equal "Texte encod? en ISO-8859-1.", c.comments + else + assert_equal "Texte encod en ISO-8859-1.", c.comments + end + end + + def test_comments_should_be_converted_all_latin1_to_utf8 + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + proj = Project.find(3) + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => s1) + assert( c.save ) + assert_equal s2, c.comments + end + + def test_identifier + c = Changeset.find_by_revision('1') + assert_equal c.revision, c.identifier end end diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/comment_test.rb --- a/test/unit/comment_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/comment_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CommentTest < ActiveSupport::TestCase fixtures :users, :news, :comments diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/custom_field_test.rb --- a/test/unit/custom_field_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/custom_field_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CustomFieldTest < ActiveSupport::TestCase fixtures :custom_fields diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/custom_value_test.rb --- a/test/unit/custom_value_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/custom_value_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class CustomValueTest < ActiveSupport::TestCase fixtures :custom_fields, :custom_values, :users diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/default_data_test.rb --- a/test/unit/default_data_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/default_data_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class DefaultDataTest < ActiveSupport::TestCase include Redmine::I18n diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/document_category_test.rb --- a/test/unit/document_category_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/document_category_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class DocumentCategoryTest < ActiveSupport::TestCase fixtures :enumerations, :documents, :issues diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/document_test.rb --- a/test/unit/document_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/document_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class DocumentTest < ActiveSupport::TestCase fixtures :projects, :enumerations, :documents, :attachments diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/enabled_module_test.rb --- a/test/unit/enabled_module_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/enabled_module_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class EnabledModuleTest < ActiveSupport::TestCase fixtures :projects, :wikis diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/enumeration_test.rb --- a/test/unit/enumeration_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/enumeration_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class EnumerationTest < ActiveSupport::TestCase fixtures :enumerations, :issues, :custom_fields, :custom_values diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/group_test.rb --- a/test/unit/group_test.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/group_test.rb Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class GroupTest < ActiveSupport::TestCase fixtures :all diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/helpers/.svn/all-wcprops --- a/test/unit/helpers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/helpers/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,19 +1,25 @@ K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/4377/trunk/test/unit/helpers +/svn/!svn/ver/4982/trunk/test/unit/helpers +END +repository_helper_test.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4932/trunk/test/unit/helpers/repository_helper_test.rb END custom_fields_helper_test.rb K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/2541/trunk/test/unit/helpers/custom_fields_helper_test.rb +/svn/!svn/ver/4509/trunk/test/unit/helpers/custom_fields_helper_test.rb END timelog_helper_test.rb K 25 svn:wc:ra_dav:version-url V 65 -/svn/!svn/ver/2948/trunk/test/unit/helpers/timelog_helper_test.rb +/svn/!svn/ver/4509/trunk/test/unit/helpers/timelog_helper_test.rb END issue_moves_helper_test.rb K 25 @@ -25,29 +31,29 @@ K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/4377/trunk/test/unit/helpers/application_helper_test.rb +/svn/!svn/ver/4982/trunk/test/unit/helpers/application_helper_test.rb END search_helper_test.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/2910/trunk/test/unit/helpers/search_helper_test.rb +/svn/!svn/ver/4509/trunk/test/unit/helpers/search_helper_test.rb END sort_helper_test.rb K 25 svn:wc:ra_dav:version-url V 62 -/svn/!svn/ver/2895/trunk/test/unit/helpers/sort_helper_test.rb +/svn/!svn/ver/4509/trunk/test/unit/helpers/sort_helper_test.rb END projects_helper_test.rb K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/3140/trunk/test/unit/helpers/projects_helper_test.rb +/svn/!svn/ver/4509/trunk/test/unit/helpers/projects_helper_test.rb END issues_helper_test.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/3552/trunk/test/unit/helpers/issues_helper_test.rb +/svn/!svn/ver/4509/trunk/test/unit/helpers/issues_helper_test.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/helpers/.svn/entries --- a/test/unit/helpers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/helpers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/helpers http://redmine.rubyforge.org/svn -2010-11-06T18:52:07.556711Z -4377 -jplang +2011-03-01T10:27:30.170724Z +4982 +tmaruyama @@ -26,17 +26,51 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 +repository_helper_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +657e0f9ae00af3978571139525631dcc +2011-02-23T07:04:52.071012Z +4932 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +2288 + custom_fields_helper_test.rb file -2010-09-23T14:37:45.483825Z -2539cee92860ac8ec7abe2016b90b951 -2009-03-01T10:00:52.175090Z -2541 -jplang +2011-03-03T11:05:08.000000Z +0091346b4a944910faf5733e2ed88a76 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -58,7 +92,7 @@ -1118 +1123 timelog_helper_test.rb file @@ -66,11 +100,11 @@ -2010-09-23T14:37:45.483825Z -f0de9a2559bb9dcfdf3c35436c737ee8 -2009-10-21T22:34:39.509319Z -2948 -edavis10 +2011-03-03T11:05:08.000000Z +ac087c4ae8e6354c77ef7189351ce220 +2010-12-12T23:24:34.194336Z +4509 +jbbarth @@ -92,7 +126,7 @@ -2451 +2456 issue_moves_helper_test.rb file @@ -100,7 +134,7 @@ -2010-09-23T14:37:45.483825Z +2011-03-03T11:05:08.000000Z 2c72db60f744a7dec4600df692c40766 2010-08-11T14:42:10.119704Z 3936 @@ -134,11 +168,11 @@ -2010-11-19T13:04:41.233647Z -93e1fbbe347fd0b1526df779b0244489 -2010-11-06T18:52:07.556711Z -4377 -jplang +2011-03-03T11:40:17.000000Z +1f311492ce81d8708bef3193e684f98d +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -160,7 +194,7 @@ -29154 +35024 search_helper_test.rb file @@ -168,11 +202,11 @@ -2010-09-23T14:37:45.483825Z -09734417b458d837868bbd714ae2e011 -2009-10-10T15:00:28.619200Z -2910 -jplang +2011-03-03T11:05:08.000000Z +9eb29557d249537fed237c15e1b1b65b +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -194,7 +228,7 @@ -1954 +1959 sort_helper_test.rb file @@ -202,11 +236,11 @@ -2010-09-23T14:37:45.483825Z -204d96fe44cd80c7a1e4cbbd9de39cea -2009-09-20T14:06:57.257282Z -2895 -jplang +2011-03-03T11:05:08.000000Z +fd65c7c018eb59b2d8697ebeb6b7ba71 +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -228,7 +262,7 @@ -2650 +2655 projects_helper_test.rb file @@ -236,11 +270,11 @@ -2010-09-23T14:37:45.483825Z -576e6ed0c8e4b7e69440c1f99b0b91a4 -2009-12-09T09:22:16.985172Z -3140 -jplang +2011-03-03T11:05:08.000000Z +93f6f6ca679f5c32988254776b6d09ae +2010-12-12T23:24:34.194336Z +4509 +jbbarth has-props @@ -262,7 +296,7 @@ -2286 +2291 issues_helper_test.rb file @@ -270,11 +304,11 @@ -2010-09-23T14:37:45.483825Z -8ef7e3dfba1c93a07802c7fa579b6013 -2010-03-08T16:47:47.660186Z -3552 -edavis10 +2011-03-03T11:05:08.000000Z +b26d2e82551d9f01c0394400ffd85136 +2010-12-12T23:24:34.194336Z +4509 +jbbarth @@ -296,5 +330,5 @@ -5777 +5782 diff -r 7cec015f07ce -r 73ff0e6a11b1 test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base --- a/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../../test_helper' +require File.expand_path('../../../test_helper', __FILE__) class ApplicationHelperTest < ActionView::TestCase @@ -147,7 +147,7 @@ } to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text) } end - + def test_redmine_links issue_link = link_to('#3', {:controller => 'issues', :action => 'show', :id => 3}, :class => 'issue status-1 priority-1 overdue', :title => 'Error 281 when updating a recipe (New)') @@ -200,7 +200,7 @@ 'export:/some/file' => link_to('export:/some/file', source_url.merge(:format => 'raw'), :class => 'source download'), # message 'message#4' => link_to('Post 2', message_url, :class => 'message'), - 'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5'), :class => 'message'), + 'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5', :r => 5), :class => 'message'), # project 'project#3' => link_to('eCookbook Subproject 1', project_url, :class => 'project'), 'project:subproject1' => link_to('eCookbook Subproject 1', project_url, :class => 'project'), @@ -225,6 +225,119 @@ to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text), "#{text} failed" } end + def test_cross_project_redmine_links + source_link = link_to('ecookbook:source:/some/file', {:controller => 'repositories', :action => 'entry', :id => 'ecookbook', :path => ['some', 'file']}, + :class => 'source') + + changeset_link = link_to('ecookbook:r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2}, + :class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3') + + to_test = { + # documents + 'document:"Test document"' => 'document:"Test document"', + 'ecookbook:document:"Test document"' => 'Test document', + 'invalid:document:"Test document"' => 'invalid:document:"Test document"', + # versions + 'version:"1.0"' => 'version:"1.0"', + 'ecookbook:version:"1.0"' => '1.0', + 'invalid:version:"1.0"' => 'invalid:version:"1.0"', + # changeset + 'r2' => 'r2', + 'ecookbook:r2' => changeset_link, + 'invalid:r2' => 'invalid:r2', + # source + 'source:/some/file' => 'source:/some/file', + 'ecookbook:source:/some/file' => source_link, + 'invalid:source:/some/file' => 'invalid:source:/some/file', + } + @project = Project.find(3) + to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text), "#{text} failed" } + end + + def test_redmine_links_git_commit + changeset_link = link_to('abcd', + { + :controller => 'repositories', + :action => 'revision', + :id => 'subproject1', + :rev => 'abcd', + }, + :class => 'changeset', :title => 'test commit') + to_test = { + 'commit:abcd' => changeset_link, + } + @project = Project.find(3) + r = Repository::Git.create!(:project => @project, :url => '/tmp/test/git') + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => 'abcd', + :scmid => 'abcd', + :comments => 'test commit') + assert( c.save ) + to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text) } + end + + # TODO: Bazaar commit id contains mail address, so it contains '@' and '_'. + def test_redmine_links_darcs_commit + changeset_link = link_to('20080308225258-98289-abcd456efg.gz', + { + :controller => 'repositories', + :action => 'revision', + :id => 'subproject1', + :rev => '123', + }, + :class => 'changeset', :title => 'test commit') + to_test = { + 'commit:20080308225258-98289-abcd456efg.gz' => changeset_link, + } + @project = Project.find(3) + r = Repository::Darcs.create!( + :project => @project, :url => '/tmp/test/darcs', + :log_encoding => 'UTF-8') + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '20080308225258-98289-abcd456efg.gz', + :comments => 'test commit') + assert( c.save ) + to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text) } + end + + def test_redmine_links_mercurial_commit + changeset_link_rev = link_to('r123', + { + :controller => 'repositories', + :action => 'revision', + :id => 'subproject1', + :rev => '123' , + }, + :class => 'changeset', :title => 'test commit') + changeset_link_commit = link_to('abcd', + { + :controller => 'repositories', + :action => 'revision', + :id => 'subproject1', + :rev => 'abcd' , + }, + :class => 'changeset', :title => 'test commit') + to_test = { + 'r123' => changeset_link_rev, + 'commit:abcd' => changeset_link_commit, + } + @project = Project.find(3) + r = Repository::Mercurial.create!(:project => @project, :url => '/tmp/test') + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => 'abcd', + :comments => 'test commit') + assert( c.save ) + to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text) } + end + def test_attachment_links attachment_link = link_to('error281.txt', {:controller => 'attachments', :action => 'download', :id => '1'}, :class => 'attachment') to_test = { @@ -275,7 +388,13 @@ "/m) + kind = :comment + elsif scan(//m) + kind = :doctype + elsif scan(/<\?xml.*?\?>/m) + kind = :preprocessor + elsif scan(/<\?.*?\?>|<%.*?%>/m) + kind = :comment + elsif scan(/<\/[-\w.:]*>/m) + kind = :tag + elsif match = scan(/<[-\w.:]+>?/m) + kind = :tag + state = :attribute unless match[-1] == ?> + elsif scan(/[^<>&]+/) + kind = :plain + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/[<>&]/) + kind = :error + else + raise_inspect '[BUG] else-case reached with state %p' % [state], tokens + end + + when :attribute + if scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + state = :attribute_equal + else + kind = :error + getch + end + + when :attribute_equal + if scan(/=/) + kind = :operator + state = :attribute_value + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/./) + kind = :error + state = :attribute + end + + when :attribute_value + if scan(/#{ATTR_VALUE_UNQUOTED}/o) + kind = :attribute_value + state = :attribute + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :attribute_value_string + plain_string_content = PLAIN_STRING_CONTENT[match] + kind = :delimiter + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + else + kind = :error + getch + end + + when :attribute_value_string + if scan(plain_string_content) + kind = :content + elsif scan(/['"]/) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :attribute + next + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/&/) + kind = :content + elsif scan(/[\n>]/) + tokens << [:close, :string] + kind = :error + state = :initial + end + + else + raise_inspect 'Unknown state: %p' % [state], tokens + + end + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + end + + if options[:keep_state] + @state = state + @plain_string_content = plain_string_content + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,176 @@ +module CodeRay +module Scanners + + class Java < Scanner + + include Streamable + register_for :java + helper :builtin_types + + # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html + KEYWORDS = %w[ + assert break case catch continue default do else + finally for if instanceof import new package + return switch throw try typeof while + debugger export + ] + RESERVED = %w[ const goto ] + CONSTANTS = %w[ false null true ] + MAGIC_VARIABLES = %w[ this super ] + TYPES = %w[ + boolean byte char class double enum float int interface long + short void + ] << '[]' # because int[] should be highlighted as a type + DIRECTIVES = %w[ + abstract extends final implements native private protected public + static strictfp synchronized throws transient volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(RESERVED, :reserved). + add(CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(TYPES, :type). + add(BuiltinTypes::List, :pre_type). + add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). + add(DIRECTIVES, :directive) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + import_clause = class_name_follows = last_token_dot = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + tokens << [match, :comment] + next + + elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) + kind = :include + + elsif match = scan(/ #{IDENT} | \[\] /ox) + kind = IDENT_KIND[match] + if last_token_dot + kind = :ident + elsif class_name_follows + kind = :class + class_name_follows = false + else + import_clause = true if match == 'import' + class_name_follows = true if match == 'class' || match == 'interface' + end + + elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) + kind = :operator + + elsif scan(/;/) + import_clause = false + kind = :operator + + elsif scan(/\{/) + class_name_follows = false + kind = :operator + + elsif check(/[\d.]/) + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) + kind = :float + elsif scan(/\d+[lL]?/) + kind = :integer + end + + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :string + string_delimiter = match + kind = :delimiter + + elsif scan(/ @ #{IDENT} /ox) + kind = :annotation + + else + getch + kind = :error + + end + + when :string + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + tokens << [:close, state] + string_delimiter = nil + state = :initial + next + elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script-0.9.6.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script-0.9.6.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, + '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / (?> [^\\']* (?: \\. [^\\']* )* ) ' \s* : /mx, + '"' => / (?> [^\\"]* (?: \\. [^\\"]* )* ) " \s* : /mx, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/json.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/json.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,108 @@ +module CodeRay +module Scanners + + class JSON < Scanner + + include Streamable + + register_for :json + file_extension 'json' + + KINDS_NOT_LOC = [ + :float, :char, :content, :delimiter, + :error, :integer, :operator, :value, + ] + + ESCAPE = / [bfnrt\\"\/] /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x + + def scan_tokens tokens, options + + state = :initial + stack = [] + key_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + elsif match = scan(/ [:,\[{\]}] /x) + kind = :operator + case match + when '{' then stack << :object; key_expected = true + when '[' then stack << :array + when ':' then key_expected = false + when ',' then key_expected = true if stack.last == :object + when '}', ']' then stack.pop # no error recovery, but works for valid JSON + end + elsif match = scan(/ true | false | null /x) + kind = :value + elsif match = scan(/-?(?:0|[1-9]\d*)/) + kind = :integer + if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) + match << matched + kind = :float + end + elsif match = scan(/"/) + state = key_expected ? :key : :string + tokens << [:open, state] + kind = :delimiter + else + getch + kind = :error + end + + when :string, :key + if scan(/[^\\"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, state] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :key].include? state + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,136 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # Nitro XHTML Scanner + class NitroXHTML < Scanner + + include Streamable + register_for :nitro_xhtml + file_extension :xhtml + title 'Nitro XHTML' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + NITRO_RUBY_BLOCK = / + <\?r + (?> + [^\?]* + (?> \?(?!>) [^\?]* )* + ) + (?: \?> )? + | + + (?> + [^<]* + (?> <(?!\/ruby>) [^<]* )* + ) + (?: <\/ruby> )? + | + <% + (?> + [^%]* + (?> %(?!>) [^%]* )* + ) + (?: %> )? + /mx + + NITRO_VALUE_BLOCK = / + \# + (?: + \{ + [^{}]* + (?> + \{ [^}]* \} + (?> [^{}]* ) + )* + \}? + | \| [^|]* \|? + | \( [^)]* \)? + | \[ [^\]]* \]? + | \\ [^\\]* \\? + ) + /x + + NITRO_ENTITY = / + % (?: \#\d+ | \w+ ) ; + / + + START_OF_RUBY = / + (?=[<\#%]) + < (?: \?r | % | ruby> ) + | \# [{(|] + | % (?: \#\d+ | \w+ ) ; + /x + + CLOSING_PAREN = Hash.new do |h, p| + h[p] = p + end.update( { + '(' => ')', + '[' => ']', + '{' => '}', + } ) + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) + start_tag = match[0,2] + delimiter = CLOSING_PAREN[start_tag[1,1]] + end_tag = match[-1,1] == delimiter ? delimiter : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) + start_tag = '' ? '?>' : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -(end_tag.size)-1] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif entity = scan(/#{NITRO_ENTITY}/o) + tokens << [entity, :entity] + + elsif scan(/%/) + tokens << [matched, :error] + + else + raise_inspect 'else-case reached!', tokens + + end + + end + + tokens + + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/php.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/php.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,533 @@ +module CodeRay +module Scanners + + load :html + + # Original by Stefan Walk. + class PHP < Scanner + + register_for :php + file_extension 'php' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + def setup + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + module Words + + # according to http://www.php.net/manual/en/reserved.keywords.php + KEYWORDS = %w[ + abstract and array as break case catch class clone const continue declare default do else elseif + enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global + goto if implements interface instanceof namespace new or private protected public static switch + throw try use var while xor + cfunction old_function + ] + + TYPES = %w[ int integer float double bool boolean string array object resource ] + + LANGUAGE_CONSTRUCTS = %w[ + die echo empty exit eval include include_once isset list + require require_once return print unset + ] + + CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] + + # according to http://php.net/quickref.php on 2009-04-21; + # all functions with _ excluded (module functions) and selected additional functions + BUILTIN_FUNCTIONS = %w[ + abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 + atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec + bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite + calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog + compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex + decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each + ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract + fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner + fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv + fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate + getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid + getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext + gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate + gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell + gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate + implode include intval ip2long iptcembed iptcparse isset + jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp + juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log + log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort + natsort next ngettext nl2br nthmac octdec opendir openlog + ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow + prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile + readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir + serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget + snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat + strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen + strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn + strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam + textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack + unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap + array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc + array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip + array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey + array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad + array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift + array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect + array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk + array_walk_recursive + assert_options base_convert base64_decode base64_encode + chunk_split class_exists class_implements class_parents + count_chars debug_backtrace debug_print_backtrace debug_zval_dump + error_get_last error_log error_reporting extension_loaded + file_exists file_get_contents file_put_contents load_file + func_get_arg func_get_args func_num_args function_exists + get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars + get_current_user get_declared_classes get_declared_interfaces get_defined_constants + get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table + get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime + get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type + gc_collect_cycles gc_disable gc_enable gc_enabled + halt_compiler headers_list headers_sent highlight_file highlight_string + html_entity_decode htmlspecialchars_decode + in_array include_once inclued_get_data + is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite + is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable + is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file + is_writable is_writeable + locale_get_default locale_set_default + number_format override_function parse_str parse_url + php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name + php_strip_whitespace php_uname + preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace + preg_replace_callback preg_split print_r + require_once register_shutdown_function register_tick_function + set_error_handler set_exception_handler set_file_buffer set_include_path + set_magic_quotes_runtime set_time_limit shell_exec + str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count + strip_tags substr_compare substr_count substr_replace + time_nanosleep time_sleep_until + token_get_all token_name trigger_error + unregister_tick_function use_soap_error_handler user_error + utf8_decode utf8_encode var_dump var_export + version_compare + zend_logo_guid zend_thread_id zend_version + create_function call_user_func_array + posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid + posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups + posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid + posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid + posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod + posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid + posix_setuid posix_strerror posix_times posix_ttyname posix_uname + pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority + pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait + pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited + pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig + ] + # TODO: more built-in PHP functions? + + EXCEPTIONS = %w[ + E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING + E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT + ] + + CONSTANTS = %w[ + null true false self parent + __LINE__ __DIR__ __FILE__ __LINE__ + __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ + PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS + PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH + PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR + PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX + PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END + __COMPILER_HALT_OFFSET__ + EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS + EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL + COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED + CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 + M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES + CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB + HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS + INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP + CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT + STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX + LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 + ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 + ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 + MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT + ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING + POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES + N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR + YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN + LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 + LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY + LOG_NDELAY LOG_NOWAIT LOG_PERROR + ] + + PREDEFINED = %w[ + $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV + $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header + $argc $argv + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(KEYWORDS, :reserved). + add(TYPES, :pre_type). + add(LANGUAGE_CONSTRUCTS, :reserved). + add(BUILTIN_FUNCTIONS, :predefined). + add(CLASSES, :pre_constant). + add(EXCEPTIONS, :exception). + add(CONSTANTS, :pre_constant) + + VARIABLE_KIND = WordList.new(:local_variable). + add(PREDEFINED, :predefined) + end + + module RE + + PHP_START = / + ]*?language\s*=\s*"php"[^>]*?> | + ]*?language\s*=\s*'php'[^>]*?> | + <\?php\d? | + <\?(?!xml) + /xi + + PHP_END = %r! + | + \?> + !xi + + HTML_INDICATOR = / ]/i + + IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i + VARIABLE = /\$#{IDENTIFIER}/ + + OPERATOR = / + \.(?!\d)=? | # dot that is not decimal point, string concatenation + && | \|\| | # logic + :: | -> | => | # scope, member, dictionary + \\(?!\n) | # namespace + \+\+ | -- | # increment, decrement + [,;?:()\[\]{}] | # simple delimiters + [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts + [~$] | # whatever + =& | # reference assignment + [=!]=?=? | <> | # comparison and assignment + <<=? | >>=? | [<>]=? # comparison and shift + /x + + end + + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::ASCII_8BIT + self.string = string.encode Encoding::ASCII_8BIT, + :invalid => :replace, :undef => :replace, :replace => '?' + end + end + + if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) + tokens << [:open, :inline] + tokens << [match, :local_variable] + tokens << [scan(/->/), :operator] + tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] + tokens << [:close, :inline] + next + elsif check(/->/) + match << scan(/->/) + kind = :error + end + elsif match = scan(/\{/) + if check(/\$/) + kind = :delimiter + states[-1] = [states.last, delimiter] + delimiter = nil + states.push :php + tokens << [:open, :inline] + else + kind = :string + end + elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) + kind = :local_variable + elsif scan(/\$/) + kind = :content + end + + when :class_expected + if scan(/\s+/) + kind = :space + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :class + states.pop + else + states.pop + next + end + + when :function_expected + if scan(/\s+/) + kind = :space + elsif scan(/&/) + kind = :operator + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :function + states.pop + else + states.pop + next + end + + else + raise_inspect 'Unknown state!', tokens, states + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, states + end + raise_inspect 'Empty token', tokens, states unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,21 @@ +module CodeRay +module Scanners + + class Plaintext < Scanner + + register_for :plaintext, :plain + title 'Plain text' + + include Streamable + + KINDS_NOT_LOC = [:plain] + + def scan_tokens tokens, options + text = (scan_until(/\z/) || '') + tokens << [text, :plain] + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/python.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/python.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,285 @@ +module CodeRay +module Scanners + + # Bases on pygments' PythonLexer, see + # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. + class Python < Scanner + + include Streamable + + register_for :python + file_extension 'py' + + KEYWORDS = [ + 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', + 'del', 'elif', 'else', 'except', 'finally', 'for', + 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', + 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', + 'nonlocal', # new in Python 3 + ] + + OLD_KEYWORDS = [ + 'exec', 'print', # gone in Python 3 + ] + + PREDEFINED_METHODS_AND_TYPES = %w[ + __import__ abs all any apply basestring bin bool buffer + bytearray bytes callable chr classmethod cmp coerce compile + complex delattr dict dir divmod enumerate eval execfile exit + file filter float frozenset getattr globals hasattr hash hex id + input int intern isinstance issubclass iter len list locals + long map max min next object oct open ord pow property range + raw_input reduce reload repr reversed round set setattr slice + sorted staticmethod str sum super tuple type unichr unicode + vars xrange zip + ] + + PREDEFINED_EXCEPTIONS = %w[ + ArithmeticError AssertionError AttributeError + BaseException DeprecationWarning EOFError EnvironmentError + Exception FloatingPointError FutureWarning GeneratorExit IOError + ImportError ImportWarning IndentationError IndexError KeyError + KeyboardInterrupt LookupError MemoryError NameError + NotImplemented NotImplementedError OSError OverflowError + OverflowWarning PendingDeprecationWarning ReferenceError + RuntimeError RuntimeWarning StandardError StopIteration + SyntaxError SyntaxWarning SystemError SystemExit TabError + TypeError UnboundLocalError UnicodeDecodeError + UnicodeEncodeError UnicodeError UnicodeTranslateError + UnicodeWarning UserWarning ValueError Warning ZeroDivisionError + ] + + PREDEFINED_VARIABLES_AND_CONSTANTS = [ + 'False', 'True', 'None', # "keywords" since Python 3 + 'self', 'Ellipsis', 'NotImplemented', + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(OLD_KEYWORDS, :old_keyword). + add(PREDEFINED_METHODS_AND_TYPES, :predefined). + add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). + add(PREDEFINED_EXCEPTIONS, :exception) + + NAME = / [^\W\d] \w* /x + ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x + + OPERATOR = / + \.\.\. | # ellipsis + \.(?!\d) | # dot but not decimal point + [,;:()\[\]{}] | # simple delimiters + \/\/=? | \*\*=? | # special math + [-+*\/%&|^]=? | # ordinary math and binary logic + [~`] | # binary complement and inspection + <<=? | >>=? | [<>=]=? | != # comparison and assignment + /x + + STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = Regexp.union delimiter + end + + STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x + end + + DEF_NEW_STATE = WordList.new(:initial). + add(%w(def), :def_expected). + add(%w(import from), :include_expected). + add(%w(class), :class_expected) + + DESCRIPTOR = / + #{NAME} + (?: \. #{NAME} )* + | \* + /x + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + string_raw = false + import_clause = class_name_follows = last_token_dot = false + unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' + from_import_state = [] + + until eos? + + kind = nil + match = nil + + if state == :string + if scan(STRING_DELIMITER_REGEXP[string_delimiter]) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif string_delimiter.size == 3 && scan(/\n/) + kind = :content + elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) + kind = :content + elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) + kind = :char + elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) + kind = :char + elsif scan(/ \\ . /x) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state + end + + elsif match = scan(/ [ \t]+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(/\n/) + tokens << [match, :space] + state = :initial if state == :include_expected + next + + elsif match = scan(/ \# [^\n]* /mx) + tokens << [match, :comment] + next + + elsif state == :initial + + if scan(/#{OPERATOR}/o) + kind = :operator + + elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) + tokens << [:open, :string] + string_delimiter = self[2] + string_raw = false + modifiers = self[1] + unless modifiers.empty? + string_raw = !!modifiers.index(?r) + tokens << [modifiers, :modifier] + match = string_delimiter + end + state = :string + kind = :delimiter + + # TODO: backticks + + elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = IDENT_KIND[match] + # TODO: keyword arguments + kind = :ident if last_token_dot + if kind == :old_keyword + kind = check(/\(/) ? :ident : :keyword + elsif kind == :predefined && check(/ *=/) + kind = :ident + elsif kind == :keyword + state = DEF_NEW_STATE[match] + from_import_state << match.to_sym if state == :include_expected + end + + elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) + kind = :decorator + + elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) + kind = :hex + + elsif scan(/0[bB][01]+[lL]?/) + kind = :bin + + elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + if scan(/[jJ]/) + match << matched + kind = :imaginary + end + + elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) + kind = :oct + + elsif match = scan(/\d+([lL])?/) + kind = :integer + if self[1] == nil && scan(/[jJ]/) + match << matched + kind = :imaginary + end + + else + getch + kind = :error + + end + + elsif state == :def_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :method + else + next + end + + elsif state == :class_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :class + else + next + end + + elsif state == :include_expected + if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) + kind = :include + if match == 'as' + kind = :keyword + from_import_state << :as + elsif from_import_state.first == :from && match == 'import' + kind = :keyword + from_import_state << :import + elsif from_import_state.last == :as + # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method + kind = :ident + from_import_state.pop + elsif IDENT_KIND[match] == :keyword + unscan + match = nil + state = :initial + next + end + elsif match = scan(/,/) + from_import_state.pop if from_import_state.last == :as + kind = :operator + else + from_import_state = [] + state = :initial + next + end + + else + raise_inspect 'Unknown state', tokens, state + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens, state unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,78 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # RHTML Scanner + class RHTML < Scanner + + include Streamable + register_for :rhtml + title 'HTML ERB Template' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + ERB_RUBY_BLOCK = / + <%(?!%)[=-]? + (?> + [^\-%]* # normal* + (?> # special + (?: %(?!>) | -(?!%>) ) + [^\-%]* # normal* + )* + ) + (?: -?%> )? + /x + + START_OF_ERB = / + <%(?!%) + /x + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{ERB_RUBY_BLOCK}/o) + start_tag = match[/\A<%[-=#]?/] + end_tag = match[/-?%?>?\z/] + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + if start_tag == '<%#' + tokens << [code, :comment] + else + @ruby_scanner.tokenize code + end + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + else + raise_inspect 'else-case reached!', tokens + end + + end + + tokens + + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,444 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + # This scanner is really complex, since Ruby _is_ a complex language! + # + # It tries to highlight 100% of all common code, + # and 90% of strange codes. + # + # It is optimized for HTML highlighting, and is not very useful for + # parsing or pretty printing. + # + # For now, I think it's better than the scanners in VIM or Syntax, or + # any highlighter I was able to find, except Caleb's RubyLexer. + # + # I hope it's also better than the rdoc/irb lexer. + class Ruby < Scanner + + include Streamable + + register_for :ruby + file_extension 'rb' + + helper :patterns + + if not defined? EncodingError + EncodingError = Class.new Exception + end + + private + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::UTF_8 + self.string = string.encode Encoding::UTF_8, + :invalid => :replace, :undef => :replace, :replace => '?' + end + unicode = false + else + unicode = exist?(/[^\x00-\x7f]/) + end + + last_token_dot = false + value_expected = true + heredocs = nil + last_state = nil + state = :initial + depth = nil + inline_block_stack = [] + + + patterns = Patterns # avoid constant lookup + + until eos? + match = nil + kind = nil + + if state.instance_of? patterns::StringState +# {{{ + match = scan_until(state.pattern) || scan_until(/\z/) + tokens << [match, :content] unless match.empty? + break if eos? + + if state.heredoc and self[1] # end of heredoc + match = getch.to_s + match << scan_until(/$/) unless eos? + tokens << [match, :delimiter] + tokens << [:close, state.type] + state = state.next_state + next + end + + case match = getch + + when state.delim + if state.paren + state.paren_depth -= 1 + if state.paren_depth > 0 + tokens << [match, :nesting_delimiter] + next + end + end + tokens << [match, :delimiter] + if state.type == :regexp and not eos? + modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) + tokens << [modifiers, :modifier] unless modifiers.empty? + end + tokens << [:close, state.type] + value_expected = false + state = state.next_state + + when '\\' + if state.interpreted + if esc = scan(/ #{patterns::ESCAPE} /ox) + tokens << [match + esc, :char] + else + tokens << [match, :error] + end + else + case m = getch + when state.delim, '\\' + tokens << [match + m, :char] + when nil + tokens << [match, :error] + else + tokens << [match + m, :content] + end + end + + when '#' + case peek(1) + when '{' + inline_block_stack << [state, depth, heredocs] + value_expected = true + state = :initial + depth = 1 + tokens << [:open, :inline] + tokens << [match + getch, :inline_delimiter] + when '$', '@' + tokens << [match, :escape] + last_state = state # scan one token as normal code, then return here + state = :initial + else + raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens + end + + when state.paren + state.paren_depth += 1 + tokens << [match, :nesting_delimiter] + + when /#{patterns::REGEXP_SYMBOLS}/ox + tokens << [match, :function] + + else + raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens + + end + next +# }}} + else +# {{{ + if match = scan(/[ \t\f]+/) + kind = :space + match << scan(/\s*/) unless eos? || heredocs + value_expected = true if match.index(?\n) + tokens << [match, kind] + next + + elsif match = scan(/\\?\n/) + kind = :space + if match == "\n" + value_expected = true + state = :initial if state == :undef_comma_expected + end + if heredocs + unscan # heredoc scanning needs \n at start + state = heredocs.shift + tokens << [:open, state.type] + heredocs = nil if heredocs.empty? + next + else + match << scan(/\s*/) unless eos? + end + tokens << [match, kind] + next + + elsif bol? && match = scan(/\#!.*/) + tokens << [match, :doctype] + next + + elsif match = scan(/\#.*/) or + ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) + kind = :comment + tokens << [match, kind] + next + + elsif state == :initial + + # IDENTS # + if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : + /#{patterns::METHOD_NAME}/o) + if last_token_dot + kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end + else + if value_expected != :expect_colon && scan(/:(?= )/) + tokens << [match, :key] + match = ':' + kind = :operator + else + kind = patterns::IDENT_KIND[match] + if kind == :ident + if match[/\A[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) + kind = :constant + end + elsif kind == :reserved + state = patterns::DEF_NEW_STATE[match] + value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] + end + end + end + value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) + + elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) + kind = :ident + value_expected = :set if check(unicode ? /#{patterns::VALUE_FOLLOWS}/uo : + /#{patterns::VALUE_FOLLOWS}/o) + + # OPERATORS # + elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) + if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ + value_expected = :set + end + last_token_dot = :set if self[1] + kind = :operator + unless inline_block_stack.empty? + case match + when '{' + depth += 1 + when '}' + depth -= 1 + if depth == 0 # closing brace of inline block reached + state, depth, heredocs = inline_block_stack.pop + heredocs = nil if heredocs && heredocs.empty? + tokens << [match, :inline_delimiter] + kind = :inline + match = :close + end + end + end + + elsif match = scan(/ ['"] /mx) + tokens << [:open, :string] + kind = :delimiter + state = patterns::StringState.new :string, match == '"', match # important for streaming + + elsif match = scan(unicode ? /#{patterns::INSTANCE_VARIABLE}/uo : + /#{patterns::INSTANCE_VARIABLE}/o) + kind = :instance_variable + + elsif value_expected and match = scan(/\//) + tokens << [:open, :regexp] + kind = :delimiter + interpreted = true + state = patterns::StringState.new :regexp, interpreted, match + + # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) + elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) + kind = self[1] ? :float : :integer + + elsif match = scan(unicode ? /#{patterns::SYMBOL}/uo : + /#{patterns::SYMBOL}/o) + case delim = match[1] + when ?', ?" + tokens << [:open, :symbol] + tokens << [':', :symbol] + match = delim.chr + kind = :delimiter + state = patterns::StringState.new :symbol, delim == ?", match + else + kind = :symbol + end + + elsif match = scan(/ -[>=]? | [+!~^]=? | [*|&]{1,2}=? | >>? /x) + value_expected = :set + kind = :operator + + elsif value_expected and match = scan(unicode ? /#{patterns::HEREDOC_OPEN}/uo : + /#{patterns::HEREDOC_OPEN}/o) + indented = self[1] == '-' + quote = self[3] + delim = self[quote ? 4 : 2] + kind = patterns::QUOTE_TO_TYPE[quote] + tokens << [:open, kind] + tokens << [match, :delimiter] + match = :close + heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) + heredocs ||= [] # create heredocs if empty + heredocs << heredoc + + elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) + kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do + raise_inspect 'Unknown fancy string: %%%p' % k, tokens + end + tokens << [:open, kind] + state = patterns::StringState.new kind, interpreted, self[2] + kind = :delimiter + + elsif value_expected and match = scan(unicode ? /#{patterns::CHARACTER}/uo : + /#{patterns::CHARACTER}/o) + kind = :integer + + elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) + value_expected = :set + kind = :operator + + elsif match = scan(/`/) + if last_token_dot + kind = :operator + else + tokens << [:open, :shell] + kind = :delimiter + state = patterns::StringState.new :shell, true, match + end + + elsif match = scan(unicode ? /#{patterns::GLOBAL_VARIABLE}/uo : + /#{patterns::GLOBAL_VARIABLE}/o) + kind = :global_variable + + elsif match = scan(unicode ? /#{patterns::CLASS_VARIABLE}/uo : + /#{patterns::CLASS_VARIABLE}/o) + kind = :class_variable + + else + if !unicode && !string.respond_to?(:encoding) + # check for unicode + debug, $DEBUG = $DEBUG, false + begin + if check(/./mu).size > 1 + # seems like we should try again with unicode + unicode = true + end + rescue + # bad unicode char; use getch + ensure + $DEBUG = debug + end + next if unicode + end + kind = :error + match = scan(unicode ? /./mu : /./m) + + end + + elsif state == :def_expected + state = :initial + if scan(/self\./) + tokens << ['self', :pre_constant] + tokens << ['.', :operator] + end + if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : + /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) + kind = :method + else + next + end + + elsif state == :module_expected + if match = scan(/< 1 + state = this_block.first + tokens << [:close, state.type] + end + + tokens + end + + end + +end +end + +# vim:fdm=marker diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,145 @@ +module CodeRay + module Scanners + + # Scheme scanner for CodeRay (by closure). + # Thanks to murphy for putting CodeRay into public. + class Scheme < Scanner + + # TODO: function defs + # TODO: built-in functions + + register_for :scheme + file_extension 'scm' + + CORE_FORMS = %w[ + lambda let let* letrec syntax-case define-syntax let-syntax + letrec-syntax begin define quote if or and cond case do delay + quasiquote set! cons force call-with-current-continuation call/cc + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(CORE_FORMS, :reserved) + + #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i + #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ + #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ + IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ + DIGIT = /\d/ + DIGIT10 = DIGIT + DIGIT16 = /[0-9a-f]/i + DIGIT8 = /[0-7]/ + DIGIT2 = /[01]/ + RADIX16 = /\#x/i + RADIX8 = /\#o/i + RADIX2 = /\#b/i + RADIX10 = /\#d/i + EXACTNESS = /#i|#e/i + SIGN = /[\+-]?/ + EXP_MARK = /[esfdl]/i + EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ + SUFFIX = /#{EXP}?/ + PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ + PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ + PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ + PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ + UINT10 = /#{DIGIT10}+#*/ + UINT16 = /#{DIGIT16}+#*/ + UINT8 = /#{DIGIT8}+#*/ + UINT2 = /#{DIGIT2}+#*/ + DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ + UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ + UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ + UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ + UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ + REAL10 = /#{SIGN}#{UREAL10}/ + REAL16 = /#{SIGN}#{UREAL16}/ + REAL8 = /#{SIGN}#{UREAL8}/ + REAL2 = /#{SIGN}#{UREAL2}/ + IMAG10 = /i|#{UREAL10}i/ + IMAG16 = /i|#{UREAL16}i/ + IMAG8 = /i|#{UREAL8}i/ + IMAG2 = /i|#{UREAL2}i/ + COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ + COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ + COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ + COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ + NUM10 = /#{PREFIX10}?#{COMPLEX10}/ + NUM16 = /#{PREFIX16}#{COMPLEX16}/ + NUM8 = /#{PREFIX8}#{COMPLEX8}/ + NUM2 = /#{PREFIX2}#{COMPLEX2}/ + NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ + + private + def scan_tokens tokens,options + + state = :initial + ident_kind = IDENT_KIND + + until eos? + kind = match = nil + + case state + when :initial + if scan(/ \s+ | \\\n /x) + kind = :space + elsif scan(/['\(\[\)\]]|#\(/) + kind = :operator_fat + elsif scan(/;.*/) + kind = :comment + elsif scan(/#\\(?:newline|space|.?)/) + kind = :char + elsif scan(/#[ft]/) + kind = :pre_constant + elsif scan(/#{IDENTIFIER}/o) + kind = ident_kind[matched] + elsif scan(/\./) + kind = :operator + elsif scan(/"/) + tokens << [:open, :string] + state = :string + tokens << ['"', :delimiter] + next + elsif scan(/#{NUM}/o) and not matched.empty? + kind = :integer + elsif getch + kind = :error + end + + when :string + if scan(/[^"\\]+/) or scan(/\\.?/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + else + raise_inspect "else case \" reached; %p not handled." % peek(1), + tokens, state + end + + else + raise "else case reached" + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens, state unless match + + tokens << [match, kind] + + end # until eos + + if state == :string + tokens << [:close, :string] + end + + tokens + + end #scan_tokens + end #class + end #module scanners +end #module coderay \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,162 @@ +module CodeRay module Scanners + + # by Josh Goebel + class SQL < Scanner + + register_for :sql + + RESERVED_WORDS = %w( + create database table index trigger drop primary key set select + insert update delete replace into + on from values before and or if exists case when + then else as group order by avg where + join inner outer union engine not + like end using collate show columns begin + ) + + PREDEFINED_TYPES = %w( + char varchar enum binary text tinytext mediumtext + longtext blob tinyblob mediumblob longblob timestamp + date time datetime year double decimal float int + integer tinyint mediumint bigint smallint unsigned bit + bool boolean hex bin oct + ) + + PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) + + DIRECTIVES = %w( auto_increment unique default charset ) + + PREDEFINED_CONSTANTS = %w( null true false ) + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(PREDEFINED_FUNCTIONS, :predefined). + add(DIRECTIVES, :directive) + + ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + STRING_PREFIXES = /[xnb]|_\w+/i + + def scan_tokens tokens, options + + state = :initial + string_type = nil + string_content = '' + + until eos? + + kind = nil + match = nil + + if state == :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/(?:--\s?|#).*/) + kind = :comment + + elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) + kind = :operator + + elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) + prefix = self[1] + string_type = self[2] + tokens << [:open, :string] + tokens << [prefix, :modifier] if prefix + match = string_type + state = :string + kind = :delimiter + + elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) + kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] + + elsif scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + + elsif scan(/0[0-7]+(?![89.eEfF])/) + kind = :oct + + elsif scan(/(?>\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + + else + getch + kind = :error + + end + + elsif state == :string + if match = scan(/[^\\"'`]+/) + string_content << match + next + elsif match = scan(/["'`]/) + if string_type == match + if peek(1) == string_type # doubling means escape + string_content << string_type << getch + next + end + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + string_type = nil + next + else + string_content << match + end + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :char + elsif match = scan(/ \\ . /mox) + string_content << match + next + elsif scan(/ \\ | $ /x) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :error + state = :initial + else + raise "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise 'else-case reached', tokens + + end + + match ||= matched + unless kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + tokens + + end + + end + +end end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,17 @@ +module CodeRay +module Scanners + + load :html + + # XML Scanner + # + # Currently this is the same scanner as Scanners::HTML. + class XML < HTML + + register_for :xml + file_extension 'xml' + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,140 @@ +module CodeRay +module Scanners + + # YAML Scanner + # + # Based on the YAML scanner from Syntax by Jamis Buck. + class YAML < Scanner + + register_for :yaml + file_extension 'yml' + + KINDS_NOT_LOC = :all + + def scan_tokens tokens, options + + value_expected = nil + state = :initial + key_indent = indent = 0 + + until eos? + + kind = nil + match = nil + key_indent = nil if bol? + + if match = scan(/ +[\t ]*/) + kind = :space + + elsif match = scan(/\n+/) + kind = :space + state = :initial if match.index(?\n) + + elsif match = scan(/#.*/) + kind = :comment + + elsif bol? and case + when match = scan(/---|\.\.\./) + tokens << [:open, :head] + tokens << [match, :head] + tokens << [:close, :head] + next + when match = scan(/%.*/) + tokens << [match, :doctype] + next + end + + elsif state == :value and case + when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) + tokens << [:open, :string] + tokens << [matched, :delimiter] + tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) + tokens << [matched, :delimiter] if scan(/"/) + tokens << [:close, :string] + next + when match = scan(/[|>][-+]?/) + tokens << [:open, :string] + tokens << [match, :delimiter] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + tokens << [:close, :string] + next + when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) + tokens << [match, :string] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + next + end + + elsif case + when match = scan(/[-:](?= |$)/) + state = :value if state == :colon && (match == ':' || match == '-') + state = :value if state == :initial && match == '-' + kind = :operator + when match = scan(/[,{}\[\]]/) + kind = :operator + when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) + kind = :key + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) + tokens << [:open, :key] + tokens << [match[0,1], :delimiter] + tokens << [match[1..-2], :content] + tokens << [match[-1,1], :delimiter] + tokens << [:close, :key] + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + next + when scan(/(![\w\/]+)(:([\w:]+))?/) + tokens << [self[1], :type] + if self[2] + tokens << [':', :operator] + tokens << [self[3], :class] + end + next + when scan(/&\S+/) + kind = :variable + when scan(/\*\w+/) + kind = :global_variable + when scan(/< :c, + :cplusplus => :cpp, + :'c++' => :cpp, + :ecma => :java_script, + :ecmascript => :java_script, + :ecma_script => :java_script, + :irb => :ruby, + :javascript => :java_script, + :js => :java_script, + :nitro => :nitro_xhtml, + :pascal => :delphi, + :plain => :plaintext, + :xhtml => :html, + :yml => :yaml + + default :plain + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/c.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/c.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,203 @@ +module CodeRay +module Scanners + + class C < Scanner + + include Streamable + + register_for :c + file_extension 'c' + + RESERVED_WORDS = [ + 'asm', 'break', 'case', 'continue', 'default', 'do', + 'else', 'enum', 'for', 'goto', 'if', 'return', + 'sizeof', 'struct', 'switch', 'typedef', 'union', 'while', + 'restrict', # added in C99 + ] + + PREDEFINED_TYPES = [ + 'int', 'long', 'short', 'char', + 'signed', 'unsigned', 'float', 'double', + 'bool', 'complex', # added in C99 + ] + + PREDEFINED_CONSTANTS = [ + 'EOF', 'NULL', + 'true', 'false', # added in C99 + ] + DIRECTIVES = [ + 'auto', 'extern', 'register', 'static', 'void', + 'const', 'volatile', # added in C89 + 'inline', # added in C99 + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(DIRECTIVES, :directive). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + label_expected = true + case_expected = false + label_expected_before_preproc_line = nil + in_preproc_line = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + if in_preproc_line && match != "\\\n" && match.index(?\n) + in_preproc_line = false + label_expected = label_expected_before_preproc_line + end + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif match = scan(/ \# \s* if \s* 0 /x) + match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? + kind = :comment + + elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) + label_expected = match =~ /[;\{\}]/ + if case_expected + label_expected = true if match == ':' + case_expected = false + end + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match] + if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) + kind = :label + match << matched + else + label_expected = false + if kind == :reserved + case match + when 'case', 'default' + case_expected = true + end + end + end + + elsif scan(/\$/) + kind = :ident + + elsif match = scan(/L?"/) + tokens << [:open, :string] + if match[0] == ?L + tokens << ['L', :modifier] + match = '"' + end + state = :string + kind = :delimiter + + elsif scan(/#[ \t]*(\w*)/) + kind = :preprocessor + in_preproc_line = true + label_expected_before_preproc_line = label_expected + state = :include_expected if self[1] == 'include' + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + label_expected = false + kind = :char + + elsif scan(/0[xX][0-9A-Fa-f]+/) + label_expected = false + kind = :hex + + elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) + label_expected = false + kind = :oct + + elsif scan(/(?:\d+)(?![.eEfF])L?L?/) + label_expected = false + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + label_expected = false + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\\n"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + label_expected = false + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + label_expected = false + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + when :include_expected + if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) + kind = :include + state = :initial + + elsif match = scan(/\s+/) + kind = :space + state = :initial if match.index ?\n + + else + state = :initial + next + + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/cpp.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/cpp.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,228 @@ +module CodeRay +module Scanners + + class CPlusPlus < Scanner + + include Streamable + + register_for :cpp + file_extension 'cpp' + title 'C++' + + # http://www.cppreference.com/wiki/keywords/start + RESERVED_WORDS = [ + 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'break', + 'case', 'catch', 'class', 'compl', 'const_cast', + 'continue', 'default', 'delete', 'do', 'dynamic_cast', 'else', + 'enum', 'export', 'for', 'goto', 'if', 'namespace', 'new', + 'not', 'not_eq', 'or', 'or_eq', 'reinterpret_cast', 'return', + 'sizeof', 'static_cast', 'struct', 'switch', 'template', + 'throw', 'try', 'typedef', 'typeid', 'typename', 'union', + 'while', 'xor', 'xor_eq' + ] + + PREDEFINED_TYPES = [ + 'bool', 'char', 'double', 'float', 'int', 'long', + 'short', 'signed', 'unsigned', 'wchar_t', 'string' + ] + PREDEFINED_CONSTANTS = [ + 'false', 'true', + 'EOF', 'NULL', + ] + PREDEFINED_VARIABLES = [ + 'this' + ] + DIRECTIVES = [ + 'auto', 'const', 'explicit', 'extern', 'friend', 'inline', 'mutable', 'operator', + 'private', 'protected', 'public', 'register', 'static', 'using', 'virtual', 'void', + 'volatile' + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_VARIABLES, :local_variable). + add(DIRECTIVES, :directive). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + label_expected = true + case_expected = false + label_expected_before_preproc_line = nil + in_preproc_line = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + if in_preproc_line && match != "\\\n" && match.index(?\n) + in_preproc_line = false + label_expected = label_expected_before_preproc_line + end + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif match = scan(/ \# \s* if \s* 0 /x) + match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? + kind = :comment + + elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) + label_expected = match =~ /[;\{\}]/ + if case_expected + label_expected = true if match == ':' + case_expected = false + end + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match] + if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) + kind = :label + match << matched + else + label_expected = false + if kind == :reserved + case match + when 'class' + state = :class_name_expected + when 'case', 'default' + case_expected = true + end + end + end + + elsif scan(/\$/) + kind = :ident + + elsif match = scan(/L?"/) + tokens << [:open, :string] + if match[0] == ?L + tokens << ['L', :modifier] + match = '"' + end + state = :string + kind = :delimiter + + elsif scan(/#[ \t]*(\w*)/) + kind = :preprocessor + in_preproc_line = true + label_expected_before_preproc_line = label_expected + state = :include_expected if self[1] == 'include' + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + label_expected = false + kind = :char + + elsif scan(/0[xX][0-9A-Fa-f]+/) + label_expected = false + kind = :hex + + elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) + label_expected = false + kind = :oct + + elsif scan(/(?:\d+)(?![.eEfF])L?L?/) + label_expected = false + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + label_expected = false + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + label_expected = false + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + label_expected = false + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + when :include_expected + if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) + kind = :include + state = :initial + + elsif match = scan(/\s+/) + kind = :space + state = :initial if match.index ?\n + + else + state = :initial + next + + end + + when :class_name_expected + if scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = :class + state = :initial + + elsif match = scan(/\s+/) + kind = :space + + else + getch + kind = :error + state = :initial + + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/css.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/css.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,209 @@ +module CodeRay +module Scanners + + class CSS < Scanner + + register_for :css + + KINDS_NOT_LOC = [ + :comment, + :class, :pseudo_class, :type, + :constant, :directive, + :key, :value, :operator, :color, :float, + :error, :important, + ] + + module RE + Hex = /[0-9a-fA-F]/ + Unicode = /\\#{Hex}{1,6}(?:\r\n|\s)?/ # differs from standard because it allows uppercase hex too + Escape = /#{Unicode}|\\[^\r\n\f0-9a-fA-F]/ + NMChar = /[-_a-zA-Z0-9]|#{Escape}/ + NMStart = /[_a-zA-Z]|#{Escape}/ + NL = /\r\n|\r|\n|\f/ + String1 = /"(?:[^\n\r\f\\"]|\\#{NL}|#{Escape})*"?/ # FIXME: buggy regexp + String2 = /'(?:[^\n\r\f\\']|\\#{NL}|#{Escape})*'?/ # FIXME: buggy regexp + String = /#{String1}|#{String2}/ + + HexColor = /#(?:#{Hex}{6}|#{Hex}{3})/ + Color = /#{HexColor}/ + + Num = /-?(?:[0-9]+|[0-9]*\.[0-9]+)/ + Name = /#{NMChar}+/ + Ident = /-?#{NMStart}#{NMChar}*/ + AtKeyword = /@#{Ident}/ + Percentage = /#{Num}%/ + + reldimensions = %w[em ex px] + absdimensions = %w[in cm mm pt pc] + Unit = Regexp.union(*(reldimensions + absdimensions)) + + Dimension = /#{Num}#{Unit}/ + + Comment = %r! /\* (?: .*? \*/ | .* ) !mx + Function = /(?:url|alpha)\((?:[^)\n\r\f]|\\\))*\)?/ + + Id = /##{Name}/ + Class = /\.#{Name}/ + PseudoClass = /:#{Name}/ + AttributeSelector = /\[[^\]]*\]?/ + + end + + def scan_tokens tokens, options + + value_expected = nil + states = [:initial] + + until eos? + + kind = nil + match = nil + + if scan(/\s+/) + kind = :space + + elsif case states.last + when :initial, :media + if scan(/(?>#{RE::Ident})(?!\()|\*/ox) + kind = :type + elsif scan RE::Class + kind = :class + elsif scan RE::Id + kind = :constant + elsif scan RE::PseudoClass + kind = :pseudo_class + elsif match = scan(RE::AttributeSelector) + # TODO: Improve highlighting inside of attribute selectors. + tokens << [:open, :string] + tokens << [match[0,1], :delimiter] + tokens << [match[1..-2], :content] if match.size > 2 + tokens << [match[-1,1], :delimiter] if match[-1] == ?] + tokens << [:close, :string] + next + elsif match = scan(/@media/) + kind = :directive + states.push :media_before_name + end + + when :block + if scan(/(?>#{RE::Ident})(?!\()/ox) + if value_expected + kind = :value + else + kind = :key + end + end + + when :media_before_name + if scan RE::Ident + kind = :type + states[-1] = :media_after_name + end + + when :media_after_name + if scan(/\{/) + kind = :operator + states[-1] = :media + end + + when :comment + if scan(/(?:[^*\s]|\*(?!\/))+/) + kind = :comment + elsif scan(/\*\//) + kind = :comment + states.pop + elsif scan(/\s+/) + kind = :space + end + + else + raise_inspect 'Unknown state', tokens + + end + + elsif scan(/\/\*/) + kind = :comment + states.push :comment + + elsif scan(/\{/) + value_expected = false + kind = :operator + states.push :block + + elsif scan(/\}/) + value_expected = false + if states.last == :block || states.last == :media + kind = :operator + states.pop + else + kind = :error + end + + elsif match = scan(/#{RE::String}/o) + tokens << [:open, :string] + tokens << [match[0, 1], :delimiter] + tokens << [match[1..-2], :content] if match.size > 2 + tokens << [match[-1, 1], :delimiter] if match.size >= 2 + tokens << [:close, :string] + next + + elsif match = scan(/#{RE::Function}/o) + tokens << [:open, :string] + start = match[/^\w+\(/] + tokens << [start, :delimiter] + if match[-1] == ?) + tokens << [match[start.size..-2], :content] + tokens << [')', :delimiter] + else + tokens << [match[start.size..-1], :content] + end + tokens << [:close, :string] + next + + elsif scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox) + kind = :float + + elsif scan(/#{RE::Color}/o) + kind = :color + + elsif scan(/! *important/) + kind = :important + + elsif scan(/rgb\([^()\n]*\)?/) + kind = :color + + elsif scan(/#{RE::AtKeyword}/o) + kind = :directive + + elsif match = scan(/ [+>:;,.=()\/] /x) + if match == ':' + value_expected = true + elsif match == ';' + value_expected = false + end + kind = :operator + + else + getch + kind = :error + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/debug.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/debug.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,62 @@ +module CodeRay +module Scanners + + # = Debug Scanner + class Debug < Scanner + + include Streamable + register_for :debug + file_extension 'raydebug' + title 'CodeRay Token Dump' + + protected + def scan_tokens tokens, options + + opened_tokens = [] + + until eos? + + kind = nil + match = nil + + if scan(/\s+/) + tokens << [matched, :space] + next + + elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) + kind = self[1].to_sym + match = self[2].gsub(/\\(.)/, '\1') + + elsif scan(/ (\w+) < /x) + kind = self[1].to_sym + opened_tokens << kind + match = :open + + elsif !opened_tokens.empty? && scan(/ > /x) + kind = opened_tokens.pop || :error + match = :close + + else + kind = :error + getch + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/delphi.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/delphi.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,150 @@ +module CodeRay +module Scanners + + class Delphi < Scanner + + register_for :delphi + file_extension 'pas' + + RESERVED_WORDS = [ + 'and', 'array', 'as', 'at', 'asm', 'at', 'begin', 'case', 'class', + 'const', 'constructor', 'destructor', 'dispinterface', 'div', 'do', + 'downto', 'else', 'end', 'except', 'exports', 'file', 'finalization', + 'finally', 'for', 'function', 'goto', 'if', 'implementation', 'in', + 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', + 'library', 'mod', 'nil', 'not', 'object', 'of', 'or', 'out', 'packed', + 'procedure', 'program', 'property', 'raise', 'record', 'repeat', + 'resourcestring', 'set', 'shl', 'shr', 'string', 'then', 'threadvar', + 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', 'while', 'with', + 'xor', 'on' + ] + + DIRECTIVES = [ + 'absolute', 'abstract', 'assembler', 'at', 'automated', 'cdecl', + 'contains', 'deprecated', 'dispid', 'dynamic', 'export', + 'external', 'far', 'forward', 'implements', 'local', + 'near', 'nodefault', 'on', 'overload', 'override', + 'package', 'pascal', 'platform', 'private', 'protected', 'public', + 'published', 'read', 'readonly', 'register', 'reintroduce', + 'requires', 'resident', 'safecall', 'stdcall', 'stored', 'varargs', + 'virtual', 'write', 'writeonly' + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(DIRECTIVES, :directive) + + NAME_FOLLOWS = CaseIgnoringWordList.new(false). + add(%w(procedure function .)) + + private + def scan_tokens tokens, options + + state = :initial + last_token = '' + + until eos? + + kind = nil + match = nil + + if state == :initial + + if scan(/ \s+ /x) + tokens << [matched, :space] + next + + elsif scan(%r! \{ \$ [^}]* \}? | \(\* \$ (?: .*? \*\) | .* ) !mx) + tokens << [matched, :preprocessor] + next + + elsif scan(%r! // [^\n]* | \{ [^}]* \}? | \(\* (?: .*? \*\) | .* ) !mx) + tokens << [matched, :comment] + next + + elsif match = scan(/ <[>=]? | >=? | :=? | [-+=*\/;,@\^|\(\)\[\]] | \.\. /x) + kind = :operator + + elsif match = scan(/\./) + kind = :operator + if last_token == 'end' + tokens << [match, kind] + next + end + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = NAME_FOLLOWS[last_token] ? :ident : IDENT_KIND[match] + + elsif match = scan(/ ' ( [^\n']|'' ) (?:'|$) /x) + tokens << [:open, :char] + tokens << ["'", :delimiter] + tokens << [self[1], :content] + tokens << ["'", :delimiter] + tokens << [:close, :char] + next + + elsif match = scan(/ ' /x) + tokens << [:open, :string] + state = :string + kind = :delimiter + + elsif scan(/ \# (?: \d+ | \$[0-9A-Fa-f]+ ) /x) + kind = :char + + elsif scan(/ \$ [0-9A-Fa-f]+ /x) + kind = :hex + + elsif scan(/ (?: \d+ ) (?![eE]|\.[^.]) /x) + kind = :integer + + elsif scan(/ \d+ (?: \.\d+ (?: [eE][+-]? \d+ )? | [eE][+-]? \d+ ) /x) + kind = :float + + else + kind = :error + getch + + end + + elsif state == :string + if scan(/[^\n']+/) + kind = :content + elsif scan(/''/) + kind = :char + elsif scan(/'/) + tokens << ["'", :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif scan(/\n/) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise "else case \' reached; %p not handled." % peek(1), tokens + end + + else + raise 'else-case reached', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + last_token = match + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/diff.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/diff.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,110 @@ +module CodeRay +module Scanners + + class Diff < Scanner + + register_for :diff + title 'diff output' + + def scan_tokens tokens, options + + line_kind = nil + state = :initial + + until eos? + kind = match = nil + + if match = scan(/\n/) + if line_kind + tokens << [:end_line, line_kind] + line_kind = nil + end + tokens << [match, :space] + next + end + + case state + + when :initial + if match = scan(/--- |\+\+\+ |=+|_+/) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/Index: |Property changes on: /) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/Added: /) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + state = :added + elsif match = scan(/\\ /) + tokens << [:begin_line, line_kind = :change] + tokens << [match, :change] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/@@(?>[^@\n]*)@@/) + if check(/\n|$/) + tokens << [:begin_line, line_kind = :change] + else + tokens << [:open, :change] + end + tokens << [match[0,2], :change] + tokens << [match[2...-2], :plain] + tokens << [match[-2,2], :change] + tokens << [:close, :change] unless line_kind + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/\+/) + tokens << [:begin_line, line_kind = :insert] + tokens << [match, :insert] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/-/) + tokens << [:begin_line, line_kind = :delete] + tokens << [match, :delete] + next unless match = scan(/.+/) + kind = :plain + elsif scan(/ .*/) + kind = :comment + elsif scan(/.+/) + tokens << [:begin_line, line_kind = :comment] + kind = :plain + else + raise_inspect 'else case rached' + end + + when :added + if match = scan(/ \+/) + tokens << [:begin_line, line_kind = :insert] + tokens << [match, :insert] + next unless match = scan(/.+/) + kind = :plain + else + state = :initial + next + end + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + end + + tokens << [:end_line, line_kind] if line_kind + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/groovy.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/groovy.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,264 @@ +module CodeRay +module Scanners + + load :java + + class Groovy < Java + + include Streamable + register_for :groovy + + # TODO: Check this! + GROOVY_KEYWORDS = %w[ + as assert def in + ] + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case instanceof new return throw typeof while as assert in + ] + GROOVY_MAGIC_VARIABLES = %w[ it ] + + IDENT_KIND = Java::IDENT_KIND.dup. + add(GROOVY_KEYWORDS, :keyword). + add(GROOVY_MAGIC_VARIABLES, :local_variable) + + ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} + REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x + + # TODO: interpretation inside ', ", / + STRING_CONTENT_PATTERN = { + "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, + '"' => /[^\\$"\n]+/, + "'''" => /(?>[^\\']+|'(?!''))+/, + '"""' => /(?>[^\\$"]+|"(?!""))+/, + '/' => /[^\\$\/\n]+/, + } + + def scan_tokens tokens, options + + state = :initial + inline_block_stack = [] + inline_block_paren_depth = nil + string_delimiter = nil + import_clause = class_name_follows = last_token = after_def = false + value_expected = true + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + if match.index ?\n + import_clause = after_def = false + value_expected = true unless value_expected + end + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + after_def = false + kind = :comment + + elsif bol? && scan(/ \#!.* /x) + kind = :doctype + + elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) + after_def = value_expected = false + kind = :include + + elsif match = scan(/ #{IDENT} | \[\] /ox) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + if last_token == '.' + kind = :ident + elsif class_name_follows + kind = :class + class_name_follows = false + elsif after_def && check(/\s*[({]/) + kind = :method + after_def = false + elsif kind == :ident && last_token != '?' && check(/:/) + kind = :key + else + class_name_follows = true if match == 'class' || (import_clause && match == 'as') + import_clause = match == 'import' + after_def = true if match == 'def' + end + + elsif scan(/;/) + import_clause = after_def = false + value_expected = true + kind = :operator + + elsif scan(/\{/) + class_name_follows = after_def = false + value_expected = true + kind = :operator + if !inline_block_stack.empty? + inline_block_paren_depth += 1 + end + + # TODO: ~'...', ~"..." and ~/.../ style regexps + elsif match = scan(/ \.\.] | \+\+ | + && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<>>?=? /x) + value_expected = true + value_expected = :regexp if match == '~' + after_def = false + kind = :operator + + elsif match = scan(/ [)\]}] /x) + value_expected = after_def = false + if !inline_block_stack.empty? && match == '}' + inline_block_paren_depth -= 1 + if inline_block_paren_depth == 0 # closing brace of inline block reached + tokens << [match, :inline_delimiter] + tokens << [:close, :inline] + state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop + next + end + end + kind = :operator + + elsif check(/[\d.]/) + after_def = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) + kind = :float + elsif scan(/\d+[lLgG]?/) + kind = :integer + end + + elsif match = scan(/'''|"""/) + after_def = value_expected = false + state = :multiline_string + tokens << [:open, :string] + string_delimiter = match + kind = :delimiter + + # TODO: record.'name' + elsif match = scan(/["']/) + after_def = value_expected = false + state = match == '/' ? :regexp : :string + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\//)) + after_def = value_expected = false + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ @ #{IDENT} /ox) + after_def = value_expected = false + kind = :annotation + + elsif scan(/\//) + after_def = false + value_expected = true + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :multiline_string + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + + elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + # TODO: regexp modifiers? s, m, x, i? + modifiers = scan(/[ix]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + state = :string if state == :multiline_string + tokens << [:close, state] + string_delimiter = nil + after_def = value_expected = false + state = :initial + next + + elsif (state == :string || state == :multiline_string) && + (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + + elsif match = scan(/ \$ #{IDENT} /mox) + tokens << [:open, :inline] + tokens << ['$', :inline_delimiter] + match = match[1..-1] + tokens << [match, IDENT_KIND[match]] + tokens << [:close, :inline] + next + elsif match = scan(/ \$ \{ /x) + tokens << [:open, :inline] + tokens << ['${', :inline_delimiter] + inline_block_stack << [state, string_delimiter, inline_block_paren_depth] + inline_block_paren_depth = 1 + state = :initial + next + + elsif scan(/ \$ /mx) + kind = :content + + elsif scan(/ \\. /mx) + kind = :content + + elsif scan(/ \\ | \n /x) + tokens << [:close, state] + kind = :error + after_def = value_expected = false + state = :initial + + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + last_token = match unless [:space, :comment, :doctype].include? kind + + tokens << [match, kind] + + end + + if [:multiline_string, :string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/html.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/html.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,182 @@ +module CodeRay +module Scanners + + # HTML Scanner + class HTML < Scanner + + include Streamable + register_for :html + + KINDS_NOT_LOC = [ + :comment, :doctype, :preprocessor, + :tag, :attribute_name, :operator, + :attribute_value, :delimiter, :content, + :plain, :entity, :error + ] + + ATTR_NAME = /[\w.:-]+/ + ATTR_VALUE_UNQUOTED = ATTR_NAME + TAG_END = /\/?>/ + HEX = /[0-9a-fA-F]/ + ENTITY = / + & + (?: + \w+ + | + \# + (?: + \d+ + | + x#{HEX}+ + ) + ) + ; + /ox + + PLAIN_STRING_CONTENT = { + "'" => /[^&'>\n]+/, + '"' => /[^&">\n]+/, + } + + def reset + super + @state = :initial + end + + private + def setup + @state = :initial + @plain_string_content = nil + end + + def scan_tokens tokens, options + + state = @state + plain_string_content = @plain_string_content + + until eos? + + kind = nil + match = nil + + if scan(/\s+/m) + kind = :space + + else + + case state + + when :initial + if scan(//m) + kind = :comment + elsif scan(//m) + kind = :doctype + elsif scan(/<\?xml.*?\?>/m) + kind = :preprocessor + elsif scan(/<\?.*?\?>|<%.*?%>/m) + kind = :comment + elsif scan(/<\/[-\w.:]*>/m) + kind = :tag + elsif match = scan(/<[-\w.:]+>?/m) + kind = :tag + state = :attribute unless match[-1] == ?> + elsif scan(/[^<>&]+/) + kind = :plain + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/[<>&]/) + kind = :error + else + raise_inspect '[BUG] else-case reached with state %p' % [state], tokens + end + + when :attribute + if scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + state = :attribute_equal + else + kind = :error + getch + end + + when :attribute_equal + if scan(/=/) + kind = :operator + state = :attribute_value + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/./) + kind = :error + state = :attribute + end + + when :attribute_value + if scan(/#{ATTR_VALUE_UNQUOTED}/o) + kind = :attribute_value + state = :attribute + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :attribute_value_string + plain_string_content = PLAIN_STRING_CONTENT[match] + kind = :delimiter + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + else + kind = :error + getch + end + + when :attribute_value_string + if scan(plain_string_content) + kind = :content + elsif scan(/['"]/) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :attribute + next + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/&/) + kind = :content + elsif scan(/[\n>]/) + tokens << [:close, :string] + kind = :error + state = :initial + end + + else + raise_inspect 'Unknown state: %p' % [state], tokens + + end + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + end + + if options[:keep_state] + @state = state + @plain_string_content = plain_string_content + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,176 @@ +module CodeRay +module Scanners + + class Java < Scanner + + include Streamable + register_for :java + helper :builtin_types + + # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html + KEYWORDS = %w[ + assert break case catch continue default do else + finally for if instanceof import new package + return switch throw try typeof while + debugger export + ] + RESERVED = %w[ const goto ] + CONSTANTS = %w[ false null true ] + MAGIC_VARIABLES = %w[ this super ] + TYPES = %w[ + boolean byte char class double enum float int interface long + short void + ] << '[]' # because int[] should be highlighted as a type + DIRECTIVES = %w[ + abstract extends final implements native private protected public + static strictfp synchronized throws transient volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(RESERVED, :reserved). + add(CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(TYPES, :type). + add(BuiltinTypes::List, :pre_type). + add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). + add(DIRECTIVES, :directive) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + import_clause = class_name_follows = last_token_dot = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + tokens << [match, :comment] + next + + elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) + kind = :include + + elsif match = scan(/ #{IDENT} | \[\] /ox) + kind = IDENT_KIND[match] + if last_token_dot + kind = :ident + elsif class_name_follows + kind = :class + class_name_follows = false + else + import_clause = true if match == 'import' + class_name_follows = true if match == 'class' || match == 'interface' + end + + elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) + kind = :operator + + elsif scan(/;/) + import_clause = false + kind = :operator + + elsif scan(/\{/) + class_name_follows = false + kind = :operator + + elsif check(/[\d.]/) + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) + kind = :float + elsif scan(/\d+[lL]?/) + kind = :integer + end + + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :string + string_delimiter = match + kind = :delimiter + + elsif scan(/ @ #{IDENT} /ox) + kind = :annotation + + else + getch + kind = :error + + end + + when :string + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + tokens << [:close, state] + string_delimiter = nil + state = :initial + next + elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java +END +builtin_types.rb +K 25 +svn:wc:ra_dav:version-url +V 93 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/builtin_types.rb +END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,62 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +builtin_types.rb +file + + + + +2011-03-03T11:05:13.000000Z +2522414597cbbef27fad175c20c8a556 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +41768 + diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,419 @@ +module CodeRay +module Scanners + + module Java::BuiltinTypes # :nodoc: + + List = %w[ + AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection + AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel + AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences + AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector + AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit + AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible + AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext + AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText + AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject + AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection + AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange + AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException + AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent + ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc + ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub + ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent + ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener + Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi + AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite + AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement + Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet + AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array + ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType + AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray + AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference + AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute + AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator + AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException + AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip + AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem + AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback + AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy + AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException + BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException + BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute + BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI + BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup + BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI + BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory + BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel + BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI + BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI + BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI + BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI + BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI + BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException + BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport + BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener + BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider + BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener + BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport + BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding + BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory + BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator + BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp + BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException + BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte + ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet + CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler + CancelablePrintJob CancellationException CancelledKeyException CannotProceedException + CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor + CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException + CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException + CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult + CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator + CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore + CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener + Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter + CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider + Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice + ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class + ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError + ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard + ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException + ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner + CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection + CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI + ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource + ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator + CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel + ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation + ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData + CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl + CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap + ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback + ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener + ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container + ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler + ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory + Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported + CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 + CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector + CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer + DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort + DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl + DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource + DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat + DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing + DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel + DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel + DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter + DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer + DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme + DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument + DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor + DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed + DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec + DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable + DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec + DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream + Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory + DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document + DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener + DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer + DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter + DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener + DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter + DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey + DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey + DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m + ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey + ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder + EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum + EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error + ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener + EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception + ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor + ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException + ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse + Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field + FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel + FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream + FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap + FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter + Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter + Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener + FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter + FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics + FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException + Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future + FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean + GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError + GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics + Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter + GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream + GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet + HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet + HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter + HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument + HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection + HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon + IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage + IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl + IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener + IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener + IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException + IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException + IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException + IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException + IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException + IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities + ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl + ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi + ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder + ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi + ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel + IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address + InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited + InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext + InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext + InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests + InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource + InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException + Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError + InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener + InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException + InterruptedNamingException InterruptibleChannel IntrospectionException Introspector + InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException + InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException + InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException + InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException + InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException + InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException + InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException + InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException + InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler + InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator + IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection + JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog + JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu + JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification + JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory + JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException + JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted + JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets + JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName + JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet + JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable + JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator + JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField + JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal + KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException + KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory + KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager + KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep + KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI + LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy + LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName + LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer + LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException + LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException + LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator + ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView + LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext + LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp + LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException + MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission + ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException + MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo + MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo + MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer + MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory + MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter + MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName + MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler + MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType + MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener + MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager + MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI + MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon + MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane + MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI + MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton + MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI + MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method + MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat + MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException + MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException + Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo + ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo + ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification + MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter + MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent + MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI + MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI + MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI + MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster + MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI + MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI + MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet + MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair + NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration + NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException + NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError + NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException + NoninvertibleTransformException NonReadableChannelException NonWritableChannelException + NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException + NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException + NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException + NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster + NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport + NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException + NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException + NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper + OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput + ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream + ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID + Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport + OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport + OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo + OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException + OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError + OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException + OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes + PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor + Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor + ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException + ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch + PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported + Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe + PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel + PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker + PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy + PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent + PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate + PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences + PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException + PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob + PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo + PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason + PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter + PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent + PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService + PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet + PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader + PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException + PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor + ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener + PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor + PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle + PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector + PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval + QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp + RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException + ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape + ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue + ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable + RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException + RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification + RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport + RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall + RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub + RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage + RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName + RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result + ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader + RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub + RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl + RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub + RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList + RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer + RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener + RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec + RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey + RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit + RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException + RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory + SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource + SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture + ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable + Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI + SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec + SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException + SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider + Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob + SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef + SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef + ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException + ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set + SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer + ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi + SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter + SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax + SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException + SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory + SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException + SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet + SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource + Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel + SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput + SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException + SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException + SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession + SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack + StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit + StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService + StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer + StringBufferInputStream StringBuilder StringCharacterIterator StringContent + StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr + StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate + StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet + Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings + SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException + SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants + SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory + SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor + TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener + TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData + TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates + TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo + TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint + Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor + Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer + TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone + TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track + TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable + TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException + TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency + TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel + TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener + TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory + TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults + UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener + UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError + UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException + UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException + UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException + UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission + UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent + UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException + UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError + UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException + UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL + URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory + UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler + ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener + VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI + VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet + WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener + WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage + WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector + X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension + X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants + XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath + XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory + XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver + XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView + ] + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/builtin_types.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/builtin_types.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,419 @@ +module CodeRay +module Scanners + + module Java::BuiltinTypes # :nodoc: + + List = %w[ + AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection + AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel + AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences + AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector + AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit + AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible + AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext + AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText + AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject + AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection + AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange + AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException + AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent + ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc + ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub + ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent + ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener + Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi + AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite + AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement + Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet + AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array + ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType + AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray + AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference + AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute + AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator + AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException + AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip + AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem + AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback + AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy + AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException + BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException + BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute + BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI + BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup + BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI + BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory + BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel + BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI + BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI + BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI + BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI + BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI + BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException + BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport + BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener + BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider + BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener + BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport + BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding + BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory + BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator + BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp + BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException + BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte + ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet + CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler + CancelablePrintJob CancellationException CancelledKeyException CannotProceedException + CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor + CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException + CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException + CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult + CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator + CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore + CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener + Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter + CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider + Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice + ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class + ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError + ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard + ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException + ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner + CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection + CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI + ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource + ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator + CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel + ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation + ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData + CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl + CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap + ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback + ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener + ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container + ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler + ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory + Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported + CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 + CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector + CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer + DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort + DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl + DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource + DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat + DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing + DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel + DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel + DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter + DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer + DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme + DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument + DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor + DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed + DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec + DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable + DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec + DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream + Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory + DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document + DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener + DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer + DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter + DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener + DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter + DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey + DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey + DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m + ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey + ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder + EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum + EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error + ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener + EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception + ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor + ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException + ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse + Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field + FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel + FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream + FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap + FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter + Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter + Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener + FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter + FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics + FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException + Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future + FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean + GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError + GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics + Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter + GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream + GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet + HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet + HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter + HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument + HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection + HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon + IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage + IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl + IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener + IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener + IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException + IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException + IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException + IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException + IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException + IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities + ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl + ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi + ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder + ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi + ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel + IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address + InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited + InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext + InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext + InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests + InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource + InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException + Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError + InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener + InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException + InterruptedNamingException InterruptibleChannel IntrospectionException Introspector + InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException + InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException + InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException + InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException + InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException + InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException + InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException + InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException + InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler + InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator + IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection + JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog + JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu + JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification + JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory + JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException + JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted + JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets + JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName + JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet + JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable + JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator + JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField + JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal + KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException + KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory + KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager + KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep + KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI + LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy + LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName + LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer + LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException + LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException + LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator + ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView + LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext + LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp + LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException + MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission + ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException + MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo + MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo + MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer + MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory + MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter + MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName + MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler + MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType + MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener + MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager + MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI + MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon + MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane + MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI + MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton + MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI + MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method + MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat + MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException + MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException + Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo + ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo + ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification + MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter + MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent + MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI + MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI + MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI + MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster + MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI + MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI + MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet + MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair + NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration + NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException + NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError + NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException + NoninvertibleTransformException NonReadableChannelException NonWritableChannelException + NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException + NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException + NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException + NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster + NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport + NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException + NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException + NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper + OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput + ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream + ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID + Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport + OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport + OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo + OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException + OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError + OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException + OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes + PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor + Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor + ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException + ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch + PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported + Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe + PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel + PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker + PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy + PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent + PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate + PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences + PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException + PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob + PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo + PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason + PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter + PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent + PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService + PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet + PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader + PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException + PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor + ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener + PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor + PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle + PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector + PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval + QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp + RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException + ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape + ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue + ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable + RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException + RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification + RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport + RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall + RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub + RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage + RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName + RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result + ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader + RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub + RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl + RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub + RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList + RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer + RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener + RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec + RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey + RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit + RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException + RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory + SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource + SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture + ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable + Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI + SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec + SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException + SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider + Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob + SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef + SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef + ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException + ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set + SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer + ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi + SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter + SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax + SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException + SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory + SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException + SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet + SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource + Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel + SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput + SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException + SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException + SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession + SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack + StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit + StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService + StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer + StringBufferInputStream StringBuilder StringCharacterIterator StringContent + StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr + StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate + StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet + Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings + SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException + SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants + SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory + SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor + TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener + TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData + TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates + TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo + TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint + Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor + Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer + TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone + TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track + TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable + TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException + TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency + TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel + TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener + TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory + TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults + UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener + UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError + UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException + UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException + UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException + UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission + UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent + UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException + UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError + UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException + UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL + URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory + UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler + ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener + VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI + VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet + WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener + WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage + WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector + X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension + X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants + XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath + XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory + XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver + XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView + ] + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script-0.9.6.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script-0.9.6.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, + '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / (?> [^\\']* (?: \\. [^\\']* )* ) ' \s* : /mx, + '"' => / (?> [^\\"]* (?: \\. [^\\"]* )* ) " \s* : /mx, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/json.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/json.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,108 @@ +module CodeRay +module Scanners + + class JSON < Scanner + + include Streamable + + register_for :json + file_extension 'json' + + KINDS_NOT_LOC = [ + :float, :char, :content, :delimiter, + :error, :integer, :operator, :value, + ] + + ESCAPE = / [bfnrt\\"\/] /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x + + def scan_tokens tokens, options + + state = :initial + stack = [] + key_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + elsif match = scan(/ [:,\[{\]}] /x) + kind = :operator + case match + when '{' then stack << :object; key_expected = true + when '[' then stack << :array + when ':' then key_expected = false + when ',' then key_expected = true if stack.last == :object + when '}', ']' then stack.pop # no error recovery, but works for valid JSON + end + elsif match = scan(/ true | false | null /x) + kind = :value + elsif match = scan(/-?(?:0|[1-9]\d*)/) + kind = :integer + if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) + match << matched + kind = :float + end + elsif match = scan(/"/) + state = key_expected ? :key : :string + tokens << [:open, state] + kind = :delimiter + else + getch + kind = :error + end + + when :string, :key + if scan(/[^\\"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, state] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :key].include? state + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/nitro_xhtml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/nitro_xhtml.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,136 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # Nitro XHTML Scanner + class NitroXHTML < Scanner + + include Streamable + register_for :nitro_xhtml + file_extension :xhtml + title 'Nitro XHTML' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + NITRO_RUBY_BLOCK = / + <\?r + (?> + [^\?]* + (?> \?(?!>) [^\?]* )* + ) + (?: \?> )? + | + + (?> + [^<]* + (?> <(?!\/ruby>) [^<]* )* + ) + (?: <\/ruby> )? + | + <% + (?> + [^%]* + (?> %(?!>) [^%]* )* + ) + (?: %> )? + /mx + + NITRO_VALUE_BLOCK = / + \# + (?: + \{ + [^{}]* + (?> + \{ [^}]* \} + (?> [^{}]* ) + )* + \}? + | \| [^|]* \|? + | \( [^)]* \)? + | \[ [^\]]* \]? + | \\ [^\\]* \\? + ) + /x + + NITRO_ENTITY = / + % (?: \#\d+ | \w+ ) ; + / + + START_OF_RUBY = / + (?=[<\#%]) + < (?: \?r | % | ruby> ) + | \# [{(|] + | % (?: \#\d+ | \w+ ) ; + /x + + CLOSING_PAREN = Hash.new do |h, p| + h[p] = p + end.update( { + '(' => ')', + '[' => ']', + '{' => '}', + } ) + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) + start_tag = match[0,2] + delimiter = CLOSING_PAREN[start_tag[1,1]] + end_tag = match[-1,1] == delimiter ? delimiter : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) + start_tag = '' ? '?>' : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -(end_tag.size)-1] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif entity = scan(/#{NITRO_ENTITY}/o) + tokens << [entity, :entity] + + elsif scan(/%/) + tokens << [matched, :error] + + else + raise_inspect 'else-case reached!', tokens + + end + + end + + tokens + + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/php.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/php.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,533 @@ +module CodeRay +module Scanners + + load :html + + # Original by Stefan Walk. + class PHP < Scanner + + register_for :php + file_extension 'php' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + def setup + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + module Words + + # according to http://www.php.net/manual/en/reserved.keywords.php + KEYWORDS = %w[ + abstract and array as break case catch class clone const continue declare default do else elseif + enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global + goto if implements interface instanceof namespace new or private protected public static switch + throw try use var while xor + cfunction old_function + ] + + TYPES = %w[ int integer float double bool boolean string array object resource ] + + LANGUAGE_CONSTRUCTS = %w[ + die echo empty exit eval include include_once isset list + require require_once return print unset + ] + + CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] + + # according to http://php.net/quickref.php on 2009-04-21; + # all functions with _ excluded (module functions) and selected additional functions + BUILTIN_FUNCTIONS = %w[ + abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 + atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec + bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite + calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog + compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex + decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each + ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract + fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner + fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv + fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate + getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid + getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext + gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate + gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell + gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate + implode include intval ip2long iptcembed iptcparse isset + jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp + juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log + log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort + natsort next ngettext nl2br nthmac octdec opendir openlog + ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow + prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile + readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir + serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget + snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat + strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen + strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn + strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam + textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack + unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap + array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc + array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip + array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey + array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad + array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift + array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect + array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk + array_walk_recursive + assert_options base_convert base64_decode base64_encode + chunk_split class_exists class_implements class_parents + count_chars debug_backtrace debug_print_backtrace debug_zval_dump + error_get_last error_log error_reporting extension_loaded + file_exists file_get_contents file_put_contents load_file + func_get_arg func_get_args func_num_args function_exists + get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars + get_current_user get_declared_classes get_declared_interfaces get_defined_constants + get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table + get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime + get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type + gc_collect_cycles gc_disable gc_enable gc_enabled + halt_compiler headers_list headers_sent highlight_file highlight_string + html_entity_decode htmlspecialchars_decode + in_array include_once inclued_get_data + is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite + is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable + is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file + is_writable is_writeable + locale_get_default locale_set_default + number_format override_function parse_str parse_url + php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name + php_strip_whitespace php_uname + preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace + preg_replace_callback preg_split print_r + require_once register_shutdown_function register_tick_function + set_error_handler set_exception_handler set_file_buffer set_include_path + set_magic_quotes_runtime set_time_limit shell_exec + str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count + strip_tags substr_compare substr_count substr_replace + time_nanosleep time_sleep_until + token_get_all token_name trigger_error + unregister_tick_function use_soap_error_handler user_error + utf8_decode utf8_encode var_dump var_export + version_compare + zend_logo_guid zend_thread_id zend_version + create_function call_user_func_array + posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid + posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups + posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid + posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid + posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod + posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid + posix_setuid posix_strerror posix_times posix_ttyname posix_uname + pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority + pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait + pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited + pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig + ] + # TODO: more built-in PHP functions? + + EXCEPTIONS = %w[ + E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING + E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT + ] + + CONSTANTS = %w[ + null true false self parent + __LINE__ __DIR__ __FILE__ __LINE__ + __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ + PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS + PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH + PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR + PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX + PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END + __COMPILER_HALT_OFFSET__ + EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS + EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL + COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED + CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 + M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES + CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB + HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS + INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP + CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT + STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX + LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 + ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 + ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 + MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT + ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING + POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES + N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR + YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN + LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 + LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY + LOG_NDELAY LOG_NOWAIT LOG_PERROR + ] + + PREDEFINED = %w[ + $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV + $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header + $argc $argv + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(KEYWORDS, :reserved). + add(TYPES, :pre_type). + add(LANGUAGE_CONSTRUCTS, :reserved). + add(BUILTIN_FUNCTIONS, :predefined). + add(CLASSES, :pre_constant). + add(EXCEPTIONS, :exception). + add(CONSTANTS, :pre_constant) + + VARIABLE_KIND = WordList.new(:local_variable). + add(PREDEFINED, :predefined) + end + + module RE + + PHP_START = / + ]*?language\s*=\s*"php"[^>]*?> | + ]*?language\s*=\s*'php'[^>]*?> | + <\?php\d? | + <\?(?!xml) + /xi + + PHP_END = %r! + | + \?> + !xi + + HTML_INDICATOR = / ]/i + + IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i + VARIABLE = /\$#{IDENTIFIER}/ + + OPERATOR = / + \.(?!\d)=? | # dot that is not decimal point, string concatenation + && | \|\| | # logic + :: | -> | => | # scope, member, dictionary + \\(?!\n) | # namespace + \+\+ | -- | # increment, decrement + [,;?:()\[\]{}] | # simple delimiters + [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts + [~$] | # whatever + =& | # reference assignment + [=!]=?=? | <> | # comparison and assignment + <<=? | >>=? | [<>]=? # comparison and shift + /x + + end + + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::ASCII_8BIT + self.string = string.encode Encoding::ASCII_8BIT, + :invalid => :replace, :undef => :replace, :replace => '?' + end + end + + if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) + tokens << [:open, :inline] + tokens << [match, :local_variable] + tokens << [scan(/->/), :operator] + tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] + tokens << [:close, :inline] + next + elsif check(/->/) + match << scan(/->/) + kind = :error + end + elsif match = scan(/\{/) + if check(/\$/) + kind = :delimiter + states[-1] = [states.last, delimiter] + delimiter = nil + states.push :php + tokens << [:open, :inline] + else + kind = :string + end + elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) + kind = :local_variable + elsif scan(/\$/) + kind = :content + end + + when :class_expected + if scan(/\s+/) + kind = :space + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :class + states.pop + else + states.pop + next + end + + when :function_expected + if scan(/\s+/) + kind = :space + elsif scan(/&/) + kind = :operator + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :function + states.pop + else + states.pop + next + end + + else + raise_inspect 'Unknown state!', tokens, states + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, states + end + raise_inspect 'Empty token', tokens, states unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/plaintext.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/plaintext.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,21 @@ +module CodeRay +module Scanners + + class Plaintext < Scanner + + register_for :plaintext, :plain + title 'Plain text' + + include Streamable + + KINDS_NOT_LOC = [:plain] + + def scan_tokens tokens, options + text = (scan_until(/\z/) || '') + tokens << [text, :plain] + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/python.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/python.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,285 @@ +module CodeRay +module Scanners + + # Bases on pygments' PythonLexer, see + # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. + class Python < Scanner + + include Streamable + + register_for :python + file_extension 'py' + + KEYWORDS = [ + 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', + 'del', 'elif', 'else', 'except', 'finally', 'for', + 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', + 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', + 'nonlocal', # new in Python 3 + ] + + OLD_KEYWORDS = [ + 'exec', 'print', # gone in Python 3 + ] + + PREDEFINED_METHODS_AND_TYPES = %w[ + __import__ abs all any apply basestring bin bool buffer + bytearray bytes callable chr classmethod cmp coerce compile + complex delattr dict dir divmod enumerate eval execfile exit + file filter float frozenset getattr globals hasattr hash hex id + input int intern isinstance issubclass iter len list locals + long map max min next object oct open ord pow property range + raw_input reduce reload repr reversed round set setattr slice + sorted staticmethod str sum super tuple type unichr unicode + vars xrange zip + ] + + PREDEFINED_EXCEPTIONS = %w[ + ArithmeticError AssertionError AttributeError + BaseException DeprecationWarning EOFError EnvironmentError + Exception FloatingPointError FutureWarning GeneratorExit IOError + ImportError ImportWarning IndentationError IndexError KeyError + KeyboardInterrupt LookupError MemoryError NameError + NotImplemented NotImplementedError OSError OverflowError + OverflowWarning PendingDeprecationWarning ReferenceError + RuntimeError RuntimeWarning StandardError StopIteration + SyntaxError SyntaxWarning SystemError SystemExit TabError + TypeError UnboundLocalError UnicodeDecodeError + UnicodeEncodeError UnicodeError UnicodeTranslateError + UnicodeWarning UserWarning ValueError Warning ZeroDivisionError + ] + + PREDEFINED_VARIABLES_AND_CONSTANTS = [ + 'False', 'True', 'None', # "keywords" since Python 3 + 'self', 'Ellipsis', 'NotImplemented', + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(OLD_KEYWORDS, :old_keyword). + add(PREDEFINED_METHODS_AND_TYPES, :predefined). + add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). + add(PREDEFINED_EXCEPTIONS, :exception) + + NAME = / [^\W\d] \w* /x + ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x + + OPERATOR = / + \.\.\. | # ellipsis + \.(?!\d) | # dot but not decimal point + [,;:()\[\]{}] | # simple delimiters + \/\/=? | \*\*=? | # special math + [-+*\/%&|^]=? | # ordinary math and binary logic + [~`] | # binary complement and inspection + <<=? | >>=? | [<>=]=? | != # comparison and assignment + /x + + STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = Regexp.union delimiter + end + + STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x + end + + DEF_NEW_STATE = WordList.new(:initial). + add(%w(def), :def_expected). + add(%w(import from), :include_expected). + add(%w(class), :class_expected) + + DESCRIPTOR = / + #{NAME} + (?: \. #{NAME} )* + | \* + /x + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + string_raw = false + import_clause = class_name_follows = last_token_dot = false + unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' + from_import_state = [] + + until eos? + + kind = nil + match = nil + + if state == :string + if scan(STRING_DELIMITER_REGEXP[string_delimiter]) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif string_delimiter.size == 3 && scan(/\n/) + kind = :content + elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) + kind = :content + elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) + kind = :char + elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) + kind = :char + elsif scan(/ \\ . /x) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state + end + + elsif match = scan(/ [ \t]+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(/\n/) + tokens << [match, :space] + state = :initial if state == :include_expected + next + + elsif match = scan(/ \# [^\n]* /mx) + tokens << [match, :comment] + next + + elsif state == :initial + + if scan(/#{OPERATOR}/o) + kind = :operator + + elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) + tokens << [:open, :string] + string_delimiter = self[2] + string_raw = false + modifiers = self[1] + unless modifiers.empty? + string_raw = !!modifiers.index(?r) + tokens << [modifiers, :modifier] + match = string_delimiter + end + state = :string + kind = :delimiter + + # TODO: backticks + + elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = IDENT_KIND[match] + # TODO: keyword arguments + kind = :ident if last_token_dot + if kind == :old_keyword + kind = check(/\(/) ? :ident : :keyword + elsif kind == :predefined && check(/ *=/) + kind = :ident + elsif kind == :keyword + state = DEF_NEW_STATE[match] + from_import_state << match.to_sym if state == :include_expected + end + + elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) + kind = :decorator + + elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) + kind = :hex + + elsif scan(/0[bB][01]+[lL]?/) + kind = :bin + + elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + if scan(/[jJ]/) + match << matched + kind = :imaginary + end + + elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) + kind = :oct + + elsif match = scan(/\d+([lL])?/) + kind = :integer + if self[1] == nil && scan(/[jJ]/) + match << matched + kind = :imaginary + end + + else + getch + kind = :error + + end + + elsif state == :def_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :method + else + next + end + + elsif state == :class_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :class + else + next + end + + elsif state == :include_expected + if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) + kind = :include + if match == 'as' + kind = :keyword + from_import_state << :as + elsif from_import_state.first == :from && match == 'import' + kind = :keyword + from_import_state << :import + elsif from_import_state.last == :as + # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method + kind = :ident + from_import_state.pop + elsif IDENT_KIND[match] == :keyword + unscan + match = nil + state = :initial + next + end + elsif match = scan(/,/) + from_import_state.pop if from_import_state.last == :as + kind = :operator + else + from_import_state = [] + state = :initial + next + end + + else + raise_inspect 'Unknown state', tokens, state + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens, state unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/rhtml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/rhtml.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,78 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # RHTML Scanner + class RHTML < Scanner + + include Streamable + register_for :rhtml + title 'HTML ERB Template' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + ERB_RUBY_BLOCK = / + <%(?!%)[=-]? + (?> + [^\-%]* # normal* + (?> # special + (?: %(?!>) | -(?!%>) ) + [^\-%]* # normal* + )* + ) + (?: -?%> )? + /x + + START_OF_ERB = / + <%(?!%) + /x + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{ERB_RUBY_BLOCK}/o) + start_tag = match[/\A<%[-=#]?/] + end_tag = match[/-?%?>?\z/] + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + if start_tag == '<%#' + tokens << [code, :comment] + else + @ruby_scanner.tokenize code + end + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + else + raise_inspect 'else-case reached!', tokens + end + + end + + tokens + + end + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,444 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + # This scanner is really complex, since Ruby _is_ a complex language! + # + # It tries to highlight 100% of all common code, + # and 90% of strange codes. + # + # It is optimized for HTML highlighting, and is not very useful for + # parsing or pretty printing. + # + # For now, I think it's better than the scanners in VIM or Syntax, or + # any highlighter I was able to find, except Caleb's RubyLexer. + # + # I hope it's also better than the rdoc/irb lexer. + class Ruby < Scanner + + include Streamable + + register_for :ruby + file_extension 'rb' + + helper :patterns + + if not defined? EncodingError + EncodingError = Class.new Exception + end + + private + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::UTF_8 + self.string = string.encode Encoding::UTF_8, + :invalid => :replace, :undef => :replace, :replace => '?' + end + unicode = false + else + unicode = exist?(/[^\x00-\x7f]/) + end + + last_token_dot = false + value_expected = true + heredocs = nil + last_state = nil + state = :initial + depth = nil + inline_block_stack = [] + + + patterns = Patterns # avoid constant lookup + + until eos? + match = nil + kind = nil + + if state.instance_of? patterns::StringState +# {{{ + match = scan_until(state.pattern) || scan_until(/\z/) + tokens << [match, :content] unless match.empty? + break if eos? + + if state.heredoc and self[1] # end of heredoc + match = getch.to_s + match << scan_until(/$/) unless eos? + tokens << [match, :delimiter] + tokens << [:close, state.type] + state = state.next_state + next + end + + case match = getch + + when state.delim + if state.paren + state.paren_depth -= 1 + if state.paren_depth > 0 + tokens << [match, :nesting_delimiter] + next + end + end + tokens << [match, :delimiter] + if state.type == :regexp and not eos? + modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) + tokens << [modifiers, :modifier] unless modifiers.empty? + end + tokens << [:close, state.type] + value_expected = false + state = state.next_state + + when '\\' + if state.interpreted + if esc = scan(/ #{patterns::ESCAPE} /ox) + tokens << [match + esc, :char] + else + tokens << [match, :error] + end + else + case m = getch + when state.delim, '\\' + tokens << [match + m, :char] + when nil + tokens << [match, :error] + else + tokens << [match + m, :content] + end + end + + when '#' + case peek(1) + when '{' + inline_block_stack << [state, depth, heredocs] + value_expected = true + state = :initial + depth = 1 + tokens << [:open, :inline] + tokens << [match + getch, :inline_delimiter] + when '$', '@' + tokens << [match, :escape] + last_state = state # scan one token as normal code, then return here + state = :initial + else + raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens + end + + when state.paren + state.paren_depth += 1 + tokens << [match, :nesting_delimiter] + + when /#{patterns::REGEXP_SYMBOLS}/ox + tokens << [match, :function] + + else + raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens + + end + next +# }}} + else +# {{{ + if match = scan(/[ \t\f]+/) + kind = :space + match << scan(/\s*/) unless eos? || heredocs + value_expected = true if match.index(?\n) + tokens << [match, kind] + next + + elsif match = scan(/\\?\n/) + kind = :space + if match == "\n" + value_expected = true + state = :initial if state == :undef_comma_expected + end + if heredocs + unscan # heredoc scanning needs \n at start + state = heredocs.shift + tokens << [:open, state.type] + heredocs = nil if heredocs.empty? + next + else + match << scan(/\s*/) unless eos? + end + tokens << [match, kind] + next + + elsif bol? && match = scan(/\#!.*/) + tokens << [match, :doctype] + next + + elsif match = scan(/\#.*/) or + ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) + kind = :comment + tokens << [match, kind] + next + + elsif state == :initial + + # IDENTS # + if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : + /#{patterns::METHOD_NAME}/o) + if last_token_dot + kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end + else + if value_expected != :expect_colon && scan(/:(?= )/) + tokens << [match, :key] + match = ':' + kind = :operator + else + kind = patterns::IDENT_KIND[match] + if kind == :ident + if match[/\A[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) + kind = :constant + end + elsif kind == :reserved + state = patterns::DEF_NEW_STATE[match] + value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] + end + end + end + value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) + + elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) + kind = :ident + value_expected = :set if check(unicode ? /#{patterns::VALUE_FOLLOWS}/uo : + /#{patterns::VALUE_FOLLOWS}/o) + + # OPERATORS # + elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) + if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ + value_expected = :set + end + last_token_dot = :set if self[1] + kind = :operator + unless inline_block_stack.empty? + case match + when '{' + depth += 1 + when '}' + depth -= 1 + if depth == 0 # closing brace of inline block reached + state, depth, heredocs = inline_block_stack.pop + heredocs = nil if heredocs && heredocs.empty? + tokens << [match, :inline_delimiter] + kind = :inline + match = :close + end + end + end + + elsif match = scan(/ ['"] /mx) + tokens << [:open, :string] + kind = :delimiter + state = patterns::StringState.new :string, match == '"', match # important for streaming + + elsif match = scan(unicode ? /#{patterns::INSTANCE_VARIABLE}/uo : + /#{patterns::INSTANCE_VARIABLE}/o) + kind = :instance_variable + + elsif value_expected and match = scan(/\//) + tokens << [:open, :regexp] + kind = :delimiter + interpreted = true + state = patterns::StringState.new :regexp, interpreted, match + + # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) + elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) + kind = self[1] ? :float : :integer + + elsif match = scan(unicode ? /#{patterns::SYMBOL}/uo : + /#{patterns::SYMBOL}/o) + case delim = match[1] + when ?', ?" + tokens << [:open, :symbol] + tokens << [':', :symbol] + match = delim.chr + kind = :delimiter + state = patterns::StringState.new :symbol, delim == ?", match + else + kind = :symbol + end + + elsif match = scan(/ -[>=]? | [+!~^]=? | [*|&]{1,2}=? | >>? /x) + value_expected = :set + kind = :operator + + elsif value_expected and match = scan(unicode ? /#{patterns::HEREDOC_OPEN}/uo : + /#{patterns::HEREDOC_OPEN}/o) + indented = self[1] == '-' + quote = self[3] + delim = self[quote ? 4 : 2] + kind = patterns::QUOTE_TO_TYPE[quote] + tokens << [:open, kind] + tokens << [match, :delimiter] + match = :close + heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) + heredocs ||= [] # create heredocs if empty + heredocs << heredoc + + elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) + kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do + raise_inspect 'Unknown fancy string: %%%p' % k, tokens + end + tokens << [:open, kind] + state = patterns::StringState.new kind, interpreted, self[2] + kind = :delimiter + + elsif value_expected and match = scan(unicode ? /#{patterns::CHARACTER}/uo : + /#{patterns::CHARACTER}/o) + kind = :integer + + elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) + value_expected = :set + kind = :operator + + elsif match = scan(/`/) + if last_token_dot + kind = :operator + else + tokens << [:open, :shell] + kind = :delimiter + state = patterns::StringState.new :shell, true, match + end + + elsif match = scan(unicode ? /#{patterns::GLOBAL_VARIABLE}/uo : + /#{patterns::GLOBAL_VARIABLE}/o) + kind = :global_variable + + elsif match = scan(unicode ? /#{patterns::CLASS_VARIABLE}/uo : + /#{patterns::CLASS_VARIABLE}/o) + kind = :class_variable + + else + if !unicode && !string.respond_to?(:encoding) + # check for unicode + debug, $DEBUG = $DEBUG, false + begin + if check(/./mu).size > 1 + # seems like we should try again with unicode + unicode = true + end + rescue + # bad unicode char; use getch + ensure + $DEBUG = debug + end + next if unicode + end + kind = :error + match = scan(unicode ? /./mu : /./m) + + end + + elsif state == :def_expected + state = :initial + if scan(/self\./) + tokens << ['self', :pre_constant] + tokens << ['.', :operator] + end + if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : + /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) + kind = :method + else + next + end + + elsif state == :module_expected + if match = scan(/< 1 + state = this_block.first + tokens << [:close, state.type] + end + + tokens + end + + end + +end +end + +# vim:fdm=marker diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby +END +patterns.rb +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/patterns.rb +END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,62 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +patterns.rb +file + + + + +2011-03-03T11:05:13.000000Z +e9ee13edf8cacf235b977434e09649dc +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7416 + diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,252 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + module Ruby::Patterns # :nodoc: + + RESERVED_WORDS = %w[ + and def end in or unless begin + defined? ensure module redo super until + BEGIN break do next rescue then + when END case else for retry + while alias class elsif if not return + undef yield + ] + + DEF_KEYWORDS = %w[ def ] + UNDEF_KEYWORDS = %w[ undef ] + ALIAS_KEYWORDS = %w[ alias ] + MODULE_KEYWORDS = %w[ class module ] + DEF_NEW_STATE = WordList.new(:initial). + add(DEF_KEYWORDS, :def_expected). + add(UNDEF_KEYWORDS, :undef_expected). + add(ALIAS_KEYWORDS, :alias_expected). + add(MODULE_KEYWORDS, :module_expected) + + PREDEFINED_CONSTANTS = %w[ + nil true false self + DATA ARGV ARGF + __FILE__ __LINE__ __ENCODING__ + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant) + + if /\w/u === '∑' + # MRI 1.8.6, 1.8.7 + IDENT = /[^\W\d]\w*/ + else + if //.respond_to? :encoding + # MRI 1.9.1, 1.9.2 + IDENT = Regexp.new '[\p{L}\p{M}\p{Pc}\p{Sm}&&[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f]][\p{L}\p{M}\p{N}\p{Pc}\p{Sm}&&[^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]]*' + else + # JRuby, Rubinius + IDENT = /[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f][^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]*/ + end + end + + METHOD_NAME = / #{IDENT} [?!]? /ox + METHOD_NAME_OPERATOR = / + \*\*? # multiplication and power + | [-+~]@? # plus, minus, tilde with and without at sign + | [\/%&|^`] # division, modulo or format strings, and, or, xor, system + | \[\]=? # array getter and setter + | << | >> # append or shift left, shift right + | <=?>? | >=? # comparison, rocket operator + | ===? | =~ # simple equality, case equality, match + | ![~=@]? # negation with and without at sign, not-equal and not-match + /ox + METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox + INSTANCE_VARIABLE = / @ #{IDENT} /ox + CLASS_VARIABLE = / @@ #{IDENT} /ox + OBJECT_VARIABLE = / @@? #{IDENT} /ox + GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox + PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox + VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox + + QUOTE_TO_TYPE = { + '`' => :shell, + '/'=> :regexp, + } + QUOTE_TO_TYPE.default = :string + + REGEXP_MODIFIERS = /[mixounse]*/ + REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ + + DECIMAL = /\d+(?:_\d+)*/ + OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ + HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ + BINARY = /0b[01]+(?:_[01]+)*/ + + EXPONENT = / [eE] [+-]? #{DECIMAL} /ox + FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox + FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox + NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox + + SYMBOL = / + : + (?: + #{METHOD_NAME_EX} + | #{PREFIX_VARIABLE} + | ['"] + ) + /ox + METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox + + SIMPLE_ESCAPE = / + [abefnrstv] + | [0-7]{1,3} + | x[0-9A-Fa-f]{1,2} + | .? + /mx + + CONTROL_META_ESCAPE = / + (?: M-|C-|c ) + (?: \\ (?: M-|C-|c ) )* + (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? + /mox + + ESCAPE = / + #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} + /mox + + CHARACTER = / + \? + (?: + [^\s\\] + | \\ #{ESCAPE} + ) + /mox + + # NOTE: This is not completely correct, but + # nobody needs heredoc delimiters ending with \n. + # Also, delimiters starting with numbers are allowed. + # but they are more often than not a false positive. + HEREDOC_OPEN = / + << (-)? # $1 = float + (?: + ( #{IDENT} ) # $2 = delim + | + ( ["'`\/] ) # $3 = quote, type + ( [^\n]*? ) \3 # $4 = delim + ) + /mx + + RUBYDOC = / + =begin (?!\S) + .*? + (?: \Z | ^=end (?!\S) [^\n]* ) + /mx + + DATA = / + __END__$ + .*? + (?: \Z | (?=^\#CODE) ) + /mx + + # Checks for a valid value to follow. This enables + # value_expected in method calls without parentheses. + VALUE_FOLLOWS = / + (?>[ \t\f\v]+) + (?: + [%\/][^\s=] + | <<-?\S + | [-+] \d + | #{CHARACTER} + ) + /x + KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ + and end in or unless begin + defined? ensure redo super until + break do next rescue then + when case else for retry + while elsif if not return + yield + ]) + + RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo + + RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x + + FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx + + FancyStringType = { + 'q' => [:string, false], + 'Q' => [:string, true], + 'r' => [:regexp, true], + 's' => [:symbol, false], + 'x' => [:shell, true] + } + FancyStringType['w'] = FancyStringType['q'] + FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] + + class StringState < Struct.new :type, :interpreted, :delim, :heredoc, + :paren, :paren_depth, :pattern, :next_state + + CLOSING_PAREN = Hash[ *%w[ + ( ) + [ ] + < > + { } + ] ] + + CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << + OPENING_PAREN = CLOSING_PAREN.invert + + STRING_PATTERN = Hash.new do |h, k| + delim, interpreted = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + if closing_paren = CLOSING_PAREN[delim] + delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix + delim_pattern << Regexp.escape(closing_paren) + end + delim_pattern << '\\\\' unless delim == '\\' + + special_escapes = + case interpreted + when :regexp_symbols + '| ' + REGEXP_SYMBOLS.source + when :words + '| \s' + end + + h[k] = + if interpreted and not delim == '#' + / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx + else + / (?= [#{delim_pattern}] #{special_escapes} ) /mx + end + end + + HEREDOC_PATTERN = Hash.new do |h, k| + delim, interpreted, indented = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x + h[k] = + if interpreted + / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc + else + / (?= #{delim_pattern}() | \\ ) /mx + end + end + + def initialize kind, interpreted, delim, heredoc = false + if heredoc + pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] + delim = nil + else + pattern = STRING_PATTERN[ [delim, interpreted] ] + if paren = CLOSING_PAREN[delim] + delim, paren = paren, delim + paren_depth = 1 + end + end + super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial + end + end unless defined? StringState + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/patterns.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/patterns.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,252 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + module Ruby::Patterns # :nodoc: + + RESERVED_WORDS = %w[ + and def end in or unless begin + defined? ensure module redo super until + BEGIN break do next rescue then + when END case else for retry + while alias class elsif if not return + undef yield + ] + + DEF_KEYWORDS = %w[ def ] + UNDEF_KEYWORDS = %w[ undef ] + ALIAS_KEYWORDS = %w[ alias ] + MODULE_KEYWORDS = %w[ class module ] + DEF_NEW_STATE = WordList.new(:initial). + add(DEF_KEYWORDS, :def_expected). + add(UNDEF_KEYWORDS, :undef_expected). + add(ALIAS_KEYWORDS, :alias_expected). + add(MODULE_KEYWORDS, :module_expected) + + PREDEFINED_CONSTANTS = %w[ + nil true false self + DATA ARGV ARGF + __FILE__ __LINE__ __ENCODING__ + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant) + + if /\w/u === '∑' + # MRI 1.8.6, 1.8.7 + IDENT = /[^\W\d]\w*/ + else + if //.respond_to? :encoding + # MRI 1.9.1, 1.9.2 + IDENT = Regexp.new '[\p{L}\p{M}\p{Pc}\p{Sm}&&[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f]][\p{L}\p{M}\p{N}\p{Pc}\p{Sm}&&[^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]]*' + else + # JRuby, Rubinius + IDENT = /[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f][^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]*/ + end + end + + METHOD_NAME = / #{IDENT} [?!]? /ox + METHOD_NAME_OPERATOR = / + \*\*? # multiplication and power + | [-+~]@? # plus, minus, tilde with and without at sign + | [\/%&|^`] # division, modulo or format strings, and, or, xor, system + | \[\]=? # array getter and setter + | << | >> # append or shift left, shift right + | <=?>? | >=? # comparison, rocket operator + | ===? | =~ # simple equality, case equality, match + | ![~=@]? # negation with and without at sign, not-equal and not-match + /ox + METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox + INSTANCE_VARIABLE = / @ #{IDENT} /ox + CLASS_VARIABLE = / @@ #{IDENT} /ox + OBJECT_VARIABLE = / @@? #{IDENT} /ox + GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox + PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox + VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox + + QUOTE_TO_TYPE = { + '`' => :shell, + '/'=> :regexp, + } + QUOTE_TO_TYPE.default = :string + + REGEXP_MODIFIERS = /[mixounse]*/ + REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ + + DECIMAL = /\d+(?:_\d+)*/ + OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ + HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ + BINARY = /0b[01]+(?:_[01]+)*/ + + EXPONENT = / [eE] [+-]? #{DECIMAL} /ox + FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox + FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox + NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox + + SYMBOL = / + : + (?: + #{METHOD_NAME_EX} + | #{PREFIX_VARIABLE} + | ['"] + ) + /ox + METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox + + SIMPLE_ESCAPE = / + [abefnrstv] + | [0-7]{1,3} + | x[0-9A-Fa-f]{1,2} + | .? + /mx + + CONTROL_META_ESCAPE = / + (?: M-|C-|c ) + (?: \\ (?: M-|C-|c ) )* + (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? + /mox + + ESCAPE = / + #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} + /mox + + CHARACTER = / + \? + (?: + [^\s\\] + | \\ #{ESCAPE} + ) + /mox + + # NOTE: This is not completely correct, but + # nobody needs heredoc delimiters ending with \n. + # Also, delimiters starting with numbers are allowed. + # but they are more often than not a false positive. + HEREDOC_OPEN = / + << (-)? # $1 = float + (?: + ( #{IDENT} ) # $2 = delim + | + ( ["'`\/] ) # $3 = quote, type + ( [^\n]*? ) \3 # $4 = delim + ) + /mx + + RUBYDOC = / + =begin (?!\S) + .*? + (?: \Z | ^=end (?!\S) [^\n]* ) + /mx + + DATA = / + __END__$ + .*? + (?: \Z | (?=^\#CODE) ) + /mx + + # Checks for a valid value to follow. This enables + # value_expected in method calls without parentheses. + VALUE_FOLLOWS = / + (?>[ \t\f\v]+) + (?: + [%\/][^\s=] + | <<-?\S + | [-+] \d + | #{CHARACTER} + ) + /x + KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ + and end in or unless begin + defined? ensure redo super until + break do next rescue then + when case else for retry + while elsif if not return + yield + ]) + + RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo + + RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x + + FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx + + FancyStringType = { + 'q' => [:string, false], + 'Q' => [:string, true], + 'r' => [:regexp, true], + 's' => [:symbol, false], + 'x' => [:shell, true] + } + FancyStringType['w'] = FancyStringType['q'] + FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] + + class StringState < Struct.new :type, :interpreted, :delim, :heredoc, + :paren, :paren_depth, :pattern, :next_state + + CLOSING_PAREN = Hash[ *%w[ + ( ) + [ ] + < > + { } + ] ] + + CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << + OPENING_PAREN = CLOSING_PAREN.invert + + STRING_PATTERN = Hash.new do |h, k| + delim, interpreted = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + if closing_paren = CLOSING_PAREN[delim] + delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix + delim_pattern << Regexp.escape(closing_paren) + end + delim_pattern << '\\\\' unless delim == '\\' + + special_escapes = + case interpreted + when :regexp_symbols + '| ' + REGEXP_SYMBOLS.source + when :words + '| \s' + end + + h[k] = + if interpreted and not delim == '#' + / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx + else + / (?= [#{delim_pattern}] #{special_escapes} ) /mx + end + end + + HEREDOC_PATTERN = Hash.new do |h, k| + delim, interpreted, indented = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x + h[k] = + if interpreted + / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc + else + / (?= #{delim_pattern}() | \\ ) /mx + end + end + + def initialize kind, interpreted, delim, heredoc = false + if heredoc + pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] + delim = nil + else + pattern = STRING_PATTERN[ [delim, interpreted] ] + if paren = CLOSING_PAREN[delim] + delim, paren = paren, delim + paren_depth = 1 + end + end + super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial + end + end unless defined? StringState + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/scheme.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/scheme.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,145 @@ +module CodeRay + module Scanners + + # Scheme scanner for CodeRay (by closure). + # Thanks to murphy for putting CodeRay into public. + class Scheme < Scanner + + # TODO: function defs + # TODO: built-in functions + + register_for :scheme + file_extension 'scm' + + CORE_FORMS = %w[ + lambda let let* letrec syntax-case define-syntax let-syntax + letrec-syntax begin define quote if or and cond case do delay + quasiquote set! cons force call-with-current-continuation call/cc + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(CORE_FORMS, :reserved) + + #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i + #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ + #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ + IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ + DIGIT = /\d/ + DIGIT10 = DIGIT + DIGIT16 = /[0-9a-f]/i + DIGIT8 = /[0-7]/ + DIGIT2 = /[01]/ + RADIX16 = /\#x/i + RADIX8 = /\#o/i + RADIX2 = /\#b/i + RADIX10 = /\#d/i + EXACTNESS = /#i|#e/i + SIGN = /[\+-]?/ + EXP_MARK = /[esfdl]/i + EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ + SUFFIX = /#{EXP}?/ + PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ + PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ + PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ + PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ + UINT10 = /#{DIGIT10}+#*/ + UINT16 = /#{DIGIT16}+#*/ + UINT8 = /#{DIGIT8}+#*/ + UINT2 = /#{DIGIT2}+#*/ + DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ + UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ + UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ + UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ + UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ + REAL10 = /#{SIGN}#{UREAL10}/ + REAL16 = /#{SIGN}#{UREAL16}/ + REAL8 = /#{SIGN}#{UREAL8}/ + REAL2 = /#{SIGN}#{UREAL2}/ + IMAG10 = /i|#{UREAL10}i/ + IMAG16 = /i|#{UREAL16}i/ + IMAG8 = /i|#{UREAL8}i/ + IMAG2 = /i|#{UREAL2}i/ + COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ + COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ + COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ + COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ + NUM10 = /#{PREFIX10}?#{COMPLEX10}/ + NUM16 = /#{PREFIX16}#{COMPLEX16}/ + NUM8 = /#{PREFIX8}#{COMPLEX8}/ + NUM2 = /#{PREFIX2}#{COMPLEX2}/ + NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ + + private + def scan_tokens tokens,options + + state = :initial + ident_kind = IDENT_KIND + + until eos? + kind = match = nil + + case state + when :initial + if scan(/ \s+ | \\\n /x) + kind = :space + elsif scan(/['\(\[\)\]]|#\(/) + kind = :operator_fat + elsif scan(/;.*/) + kind = :comment + elsif scan(/#\\(?:newline|space|.?)/) + kind = :char + elsif scan(/#[ft]/) + kind = :pre_constant + elsif scan(/#{IDENTIFIER}/o) + kind = ident_kind[matched] + elsif scan(/\./) + kind = :operator + elsif scan(/"/) + tokens << [:open, :string] + state = :string + tokens << ['"', :delimiter] + next + elsif scan(/#{NUM}/o) and not matched.empty? + kind = :integer + elsif getch + kind = :error + end + + when :string + if scan(/[^"\\]+/) or scan(/\\.?/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + else + raise_inspect "else case \" reached; %p not handled." % peek(1), + tokens, state + end + + else + raise "else case reached" + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens, state unless match + + tokens << [match, kind] + + end # until eos + + if state == :string + tokens << [:close, :string] + end + + tokens + + end #scan_tokens + end #class + end #module scanners +end #module coderay \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/sql.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/sql.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,162 @@ +module CodeRay module Scanners + + # by Josh Goebel + class SQL < Scanner + + register_for :sql + + RESERVED_WORDS = %w( + create database table index trigger drop primary key set select + insert update delete replace into + on from values before and or if exists case when + then else as group order by avg where + join inner outer union engine not + like end using collate show columns begin + ) + + PREDEFINED_TYPES = %w( + char varchar enum binary text tinytext mediumtext + longtext blob tinyblob mediumblob longblob timestamp + date time datetime year double decimal float int + integer tinyint mediumint bigint smallint unsigned bit + bool boolean hex bin oct + ) + + PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) + + DIRECTIVES = %w( auto_increment unique default charset ) + + PREDEFINED_CONSTANTS = %w( null true false ) + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(PREDEFINED_FUNCTIONS, :predefined). + add(DIRECTIVES, :directive) + + ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + STRING_PREFIXES = /[xnb]|_\w+/i + + def scan_tokens tokens, options + + state = :initial + string_type = nil + string_content = '' + + until eos? + + kind = nil + match = nil + + if state == :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/(?:--\s?|#).*/) + kind = :comment + + elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) + kind = :operator + + elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) + prefix = self[1] + string_type = self[2] + tokens << [:open, :string] + tokens << [prefix, :modifier] if prefix + match = string_type + state = :string + kind = :delimiter + + elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) + kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] + + elsif scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + + elsif scan(/0[0-7]+(?![89.eEfF])/) + kind = :oct + + elsif scan(/(?>\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + + else + getch + kind = :error + + end + + elsif state == :string + if match = scan(/[^\\"'`]+/) + string_content << match + next + elsif match = scan(/["'`]/) + if string_type == match + if peek(1) == string_type # doubling means escape + string_content << string_type << getch + next + end + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + string_type = nil + next + else + string_content << match + end + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :char + elsif match = scan(/ \\ . /mox) + string_content << match + next + elsif scan(/ \\ | $ /x) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :error + state = :initial + else + raise "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise 'else-case reached', tokens + + end + + match ||= matched + unless kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + tokens + + end + + end + +end end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/xml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/xml.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,17 @@ +module CodeRay +module Scanners + + load :html + + # XML Scanner + # + # Currently this is the same scanner as Scanners::HTML. + class XML < HTML + + register_for :xml + file_extension 'xml' + + end + +end +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/scanners/yaml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/yaml.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,140 @@ +module CodeRay +module Scanners + + # YAML Scanner + # + # Based on the YAML scanner from Syntax by Jamis Buck. + class YAML < Scanner + + register_for :yaml + file_extension 'yml' + + KINDS_NOT_LOC = :all + + def scan_tokens tokens, options + + value_expected = nil + state = :initial + key_indent = indent = 0 + + until eos? + + kind = nil + match = nil + key_indent = nil if bol? + + if match = scan(/ +[\t ]*/) + kind = :space + + elsif match = scan(/\n+/) + kind = :space + state = :initial if match.index(?\n) + + elsif match = scan(/#.*/) + kind = :comment + + elsif bol? and case + when match = scan(/---|\.\.\./) + tokens << [:open, :head] + tokens << [match, :head] + tokens << [:close, :head] + next + when match = scan(/%.*/) + tokens << [match, :doctype] + next + end + + elsif state == :value and case + when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) + tokens << [:open, :string] + tokens << [matched, :delimiter] + tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) + tokens << [matched, :delimiter] if scan(/"/) + tokens << [:close, :string] + next + when match = scan(/[|>][-+]?/) + tokens << [:open, :string] + tokens << [match, :delimiter] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + tokens << [:close, :string] + next + when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) + tokens << [match, :string] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + next + end + + elsif case + when match = scan(/[-:](?= |$)/) + state = :value if state == :colon && (match == ':' || match == '-') + state = :value if state == :initial && match == '-' + kind = :operator + when match = scan(/[,{}\[\]]/) + kind = :operator + when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) + kind = :key + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) + tokens << [:open, :key] + tokens << [match[0,1], :delimiter] + tokens << [match[1..-2], :content] + tokens << [match[-1,1], :delimiter] + tokens << [:close, :key] + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + next + when scan(/(![\w\/]+)(:([\w:]+))?/) + tokens << [self[1], :type] + if self[2] + tokens << [':', :operator] + tokens << [self[3], :class] + end + next + when scan(/&\S+/) + kind = :variable + when scan(/\*\w+/) + kind = :global_variable + when scan(/< 'at', + :attribute_name => 'an', + :attribute_name_fat => 'af', + :attribute_value => 'av', + :attribute_value_fat => 'aw', + :bin => 'bi', + :char => 'ch', + :class => 'cl', + :class_variable => 'cv', + :color => 'cr', + :comment => 'c', + :complex => 'cm', + :constant => 'co', + :content => 'k', + :decorator => 'de', + :definition => 'df', + :delimiter => 'dl', + :directive => 'di', + :doc => 'do', + :doctype => 'dt', + :doc_string => 'ds', + :entity => 'en', + :error => 'er', + :escape => 'e', + :exception => 'ex', + :float => 'fl', + :function => 'fu', + :global_variable => 'gv', + :hex => 'hx', + :imaginary => 'cm', + :important => 'im', + :include => 'ic', + :inline => 'il', + :inline_delimiter => 'idl', + :instance_variable => 'iv', + :integer => 'i', + :interpreted => 'in', + :keyword => 'kw', + :key => 'ke', + :label => 'la', + :local_variable => 'lv', + :modifier => 'mod', + :oct => 'oc', + :operator_fat => 'of', + :pre_constant => 'pc', + :pre_type => 'pt', + :predefined => 'pd', + :preprocessor => 'pp', + :pseudo_class => 'ps', + :regexp => 'rx', + :reserved => 'r', + :shell => 'sh', + :string => 's', + :symbol => 'sy', + :tag => 'ta', + :tag_fat => 'tf', + :tag_special => 'ts', + :type => 'ty', + :variable => 'v', + :value => 'vl', + :xml_text => 'xt', + + :insert => 'ins', + :delete => 'del', + :change => 'chg', + :head => 'head', + + :ident => :NO_HIGHLIGHT, # 'id' + #:operator => 'op', + :operator => :NO_HIGHLIGHT, # 'op' + :space => :NO_HIGHLIGHT, # 'sp' + :plain => :NO_HIGHLIGHT, + } + ClassOfKind[:method] = ClassOfKind[:function] + ClassOfKind[:open] = ClassOfKind[:close] = ClassOfKind[:delimiter] + ClassOfKind[:nesting_delimiter] = ClassOfKind[:delimiter] + ClassOfKind[:escape] = ClassOfKind[:delimiter] + #ClassOfKind.default = ClassOfKind[:error] or raise 'no class found for :error!' + end +end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/lib/coderay/tokens.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/tokens.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,390 @@ +module CodeRay + + # = Tokens + # + # The Tokens class represents a list of tokens returnd from + # a Scanner. + # + # A token is not a special object, just a two-element Array + # consisting of + # * the _token_ _text_ (the original source of the token in a String) or + # a _token_ _action_ (:open, :close, :begin_line, :end_line) + # * the _token_ _kind_ (a Symbol representing the type of the token) + # + # A token looks like this: + # + # ['# It looks like this', :comment] + # ['3.1415926', :float] + # ['$^', :error] + # + # Some scanners also yield sub-tokens, represented by special + # token actions, namely :open and :close. + # + # The Ruby scanner, for example, splits "a string" into: + # + # [ + # [:open, :string], + # ['"', :delimiter], + # ['a string', :content], + # ['"', :delimiter], + # [:close, :string] + # ] + # + # Tokens is the interface between Scanners and Encoders: + # The input is split and saved into a Tokens object. The Encoder + # then builds the output from this object. + # + # Thus, the syntax below becomes clear: + # + # CodeRay.scan('price = 2.59', :ruby).html + # # the Tokens object is here -------^ + # + # See how small it is? ;) + # + # Tokens gives you the power to handle pre-scanned code very easily: + # You can convert it to a webpage, a YAML file, or dump it into a gzip'ed string + # that you put in your DB. + # + # It also allows you to generate tokens directly (without using a scanner), + # to load them from a file, and still use any Encoder that CodeRay provides. + # + # Tokens' subclass TokenStream allows streaming to save memory. + class Tokens < Array + + # The Scanner instance that created the tokens. + attr_accessor :scanner + + # Whether the object is a TokenStream. + # + # Returns false. + def stream? + false + end + + # Iterates over all tokens. + # + # If a filter is given, only tokens of that kind are yielded. + def each kind_filter = nil, &block + unless kind_filter + super(&block) + else + super() do |text, kind| + next unless kind == kind_filter + yield text, kind + end + end + end + + # Iterates over all text tokens. + # Range tokens like [:open, :string] are left out. + # + # Example: + # tokens.each_text_token { |text, kind| text.replace html_escape(text) } + def each_text_token + each do |text, kind| + next unless text.is_a? ::String + yield text, kind + end + end + + # Encode the tokens using encoder. + # + # encoder can be + # * a symbol like :html oder :statistic + # * an Encoder class + # * an Encoder object + # + # options are passed to the encoder. + def encode encoder, options = {} + unless encoder.is_a? Encoders::Encoder + unless encoder.is_a? Class + encoder_class = Encoders[encoder] + end + encoder = encoder_class.new options + end + encoder.encode_tokens self, options + end + + + # Turn into a string using Encoders::Text. + # + # +options+ are passed to the encoder if given. + def to_s options = {} + encode :text, options + end + + # Redirects unknown methods to encoder calls. + # + # For example, if you call +tokens.html+, the HTML encoder + # is used to highlight the tokens. + def method_missing meth, options = {} + Encoders[meth].new(options).encode_tokens self + end + + # Returns the tokens compressed by joining consecutive + # tokens of the same kind. + # + # This can not be undone, but should yield the same output + # in most Encoders. It basically makes the output smaller. + # + # Combined with dump, it saves space for the cost of time. + # + # If the scanner is written carefully, this is not required - + # for example, consecutive //-comment lines could already be + # joined in one comment token by the Scanner. + def optimize + last_kind = last_text = nil + new = self.class.new + for text, kind in self + if text.is_a? String + if kind == last_kind + last_text << text + else + new << [last_text, last_kind] if last_kind + last_text = text + last_kind = kind + end + else + new << [last_text, last_kind] if last_kind + last_kind = last_text = nil + new << [text, kind] + end + end + new << [last_text, last_kind] if last_kind + new + end + + # Compact the object itself; see optimize. + def optimize! + replace optimize + end + + # Ensure that all :open tokens have a correspondent :close one. + # + # TODO: Test this! + def fix + tokens = self.class.new + # Check token nesting using a stack of kinds. + opened = [] + for type, kind in self + case type + when :open + opened.push [:close, kind] + when :begin_line + opened.push [:end_line, kind] + when :close, :end_line + expected = opened.pop + if [type, kind] != expected + # Unexpected :close; decide what to do based on the kind: + # - token was never opened: delete the :close (just skip it) + next unless opened.rindex expected + # - token was opened earlier: also close tokens in between + tokens << token until (token = opened.pop) == expected + end + end + tokens << [type, kind] + end + # Close remaining opened tokens + tokens << token while token = opened.pop + tokens + end + + def fix! + replace fix + end + + # TODO: Scanner#split_into_lines + # + # Makes sure that: + # - newlines are single tokens + # (which means all other token are single-line) + # - there are no open tokens at the end the line + # + # This makes it simple for encoders that work line-oriented, + # like HTML with list-style numeration. + def split_into_lines + raise NotImplementedError + end + + def split_into_lines! + replace split_into_lines + end + + # Dumps the object into a String that can be saved + # in files or databases. + # + # The dump is created with Marshal.dump; + # In addition, it is gzipped using GZip.gzip. + # + # The returned String object includes Undumping + # so it has an #undump method. See Tokens.load. + # + # You can configure the level of compression, + # but the default value 7 should be what you want + # in most cases as it is a good compromise between + # speed and compression rate. + # + # See GZip module. + def dump gzip_level = 7 + require 'coderay/helpers/gzip_simple' + dump = Marshal.dump self + dump = dump.gzip gzip_level + dump.extend Undumping + end + + # The total size of the tokens. + # Should be equal to the input size before + # scanning. + def text_size + size = 0 + each_text_token do |t, k| + size + t.size + end + size + end + + # Return all text tokens joined into a single string. + def text + map { |t, k| t if t.is_a? ::String }.join + end + + # Include this module to give an object an #undump + # method. + # + # The string returned by Tokens.dump includes Undumping. + module Undumping + # Calls Tokens.load with itself. + def undump + Tokens.load self + end + end + + # Undump the object using Marshal.load, then + # unzip it using GZip.gunzip. + # + # The result is commonly a Tokens object, but + # this is not guaranteed. + def Tokens.load dump + require 'coderay/helpers/gzip_simple' + dump = dump.gunzip + @dump = Marshal.load dump + end + + end + + + # = TokenStream + # + # The TokenStream class is a fake Array without elements. + # + # It redirects the method << to a block given at creation. + # + # This allows scanners and Encoders to use streaming (no + # tokens are saved, the input is highlighted the same time it + # is scanned) with the same code. + # + # See CodeRay.encode_stream and CodeRay.scan_stream + class TokenStream < Tokens + + # Whether the object is a TokenStream. + # + # Returns true. + def stream? + true + end + + # The Array is empty, but size counts the tokens given by <<. + attr_reader :size + + # Creates a new TokenStream that calls +block+ whenever + # its << method is called. + # + # Example: + # + # require 'coderay' + # + # token_stream = CodeRay::TokenStream.new do |text, kind| + # puts 'kind: %s, text size: %d.' % [kind, text.size] + # end + # + # token_stream << ['/\d+/', :regexp] + # #-> kind: rexpexp, text size: 5. + # + def initialize &block + raise ArgumentError, 'Block expected for streaming.' unless block + @callback = block + @size = 0 + end + + # Calls +block+ with +token+ and increments size. + # + # Returns self. + def << token + @callback.call(*token) + @size += 1 + self + end + + # This method is not implemented due to speed reasons. Use Tokens. + def text_size + raise NotImplementedError, + 'This method is not implemented due to speed reasons.' + end + + # A TokenStream cannot be dumped. Use Tokens. + def dump + raise NotImplementedError, 'A TokenStream cannot be dumped.' + end + + # A TokenStream cannot be optimized. Use Tokens. + def optimize + raise NotImplementedError, 'A TokenStream cannot be optimized.' + end + + end + +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class TokensTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Tokens < Array + tokens = nil + assert_nothing_raised do + tokens = CodeRay::Tokens.new + end + assert_kind_of Array, tokens + end + + def test_adding_tokens + tokens = CodeRay::Tokens.new + assert_nothing_raised do + tokens << ['string', :type] + tokens << ['()', :operator] + end + assert_equal tokens.size, 2 + end + + def test_dump_undump + tokens = CodeRay::Tokens.new + assert_nothing_raised do + tokens << ['string', :type] + tokens << ['()', :operator] + end + tokens2 = nil + assert_nothing_raised do + tokens2 = tokens.dump.undump + end + assert_equal tokens, tokens2 + end + +end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test +END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,31 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/test +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +functional +dir + diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,77 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional +END +for_redcloth.rbc +K 25 +svn:wc:ra_dav:version-url +V 83 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rbc +END +vhdl.rb +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/vhdl.rb +END +vhdl.rbc +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/vhdl.rbc +END +basic.rb +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/basic.rb +END +basic.rbc +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/basic.rbc +END +load_plugin_scanner.rb +K 25 +svn:wc:ra_dav:version-url +V 89 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rb +END +word_list.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/word_list.rb +END +load_plugin_scanner.rbc +K 25 +svn:wc:ra_dav:version-url +V 90 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rbc +END +suite.rb +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/suite.rb +END +word_list.rbc +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/word_list.rbc +END +for_redcloth.rb +K 25 +svn:wc:ra_dav:version-url +V 82 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rb +END +suite.rbc +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/suite.rbc +END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,436 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/test/functional +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +for_redcloth.rbc +file + + + + +2011-03-03T11:05:13.000000Z +060e0137b69ee9015c13d2a7b52f7ba5 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +6844 + +vhdl.rb +file + + + + +2011-03-03T11:05:13.000000Z +68592e4216555f25218f67641cd04879 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3508 + +vhdl.rbc +file + + + + +2011-03-03T11:05:13.000000Z +756a012d3c51e759ecf3aba421b79d26 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7459 + +basic.rb +file + + + + +2011-03-03T11:05:13.000000Z +4c2c76c7fec083da0817c917495fe273 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3081 + +basic.rbc +file + + + + +2011-03-03T11:05:13.000000Z +2dc7e681d05b65ad084db2cb31db57a4 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7680 + +load_plugin_scanner.rb +file + + + + +2011-03-03T11:05:13.000000Z +9bb16867dc01035932f0ce2491457d4a +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +231 + +word_list.rb +file + + + + +2011-03-03T11:05:13.000000Z +a1077af2bb080972689e1c7c1b00f5cd +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2167 + +load_plugin_scanner.rbc +file + + + + +2011-03-03T11:05:13.000000Z +a7da576f27c98ef97a1845982ed43fd8 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1145 + +suite.rb +file + + + + +2011-03-03T11:05:13.000000Z +c5ad97b377df804994bb80e0d903a954 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +265 + +word_list.rbc +file + + + + +2011-03-03T11:05:13.000000Z +bb7279f9b4099e57f551ae9992e03128 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +5584 + +for_redcloth.rb +file + + + + +2011-03-03T11:05:13.000000Z +dc96a8219c522571f990cfe3702a428f +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3001 + +suite.rbc +file + + + + +2011-03-03T11:05:13.000000Z +534ae63cbcff177038141b589f7fd0fa +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1035 + diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,122 @@ +require 'test/unit' +require 'coderay' + +class BasicTest < Test::Unit::TestCase + + def test_version + assert_nothing_raised do + assert_match(/\A\d\.\d\.\d\z/, CodeRay::VERSION) + end + end + + RUBY_TEST_CODE = 'puts "Hello, World!"' + + RUBY_TEST_TOKENS = [ + ['puts', :ident], + [' ', :space], + [:open, :string], + ['"', :delimiter], + ['Hello, World!', :content], + ['"', :delimiter], + [:close, :string] + ] + def test_simple_scan + assert_nothing_raised do + assert_equal RUBY_TEST_TOKENS, CodeRay.scan(RUBY_TEST_CODE, :ruby).to_ary + end + end + + RUBY_TEST_HTML = 'puts "' + + 'Hello, World!"' + def test_simple_highlight + assert_nothing_raised do + assert_equal RUBY_TEST_HTML, CodeRay.scan(RUBY_TEST_CODE, :ruby).html + end + end + + def test_duo + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE)) + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain => :plain].highlight(RUBY_TEST_CODE)) + end + + def test_duo_stream + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE, :stream => true)) + end + + def test_comment_filter + assert_equal <<-EXPECTED, CodeRay.scan(<<-INPUT, :ruby).comment_filter.text +#!/usr/bin/env ruby + +code + +more code + EXPECTED +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + end + + def test_lines_of_code + assert_equal 2, CodeRay.scan(<<-INPUT, :ruby).lines_of_code +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + rHTML = <<-RHTML + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + RHTML + assert_equal 0, CodeRay.scan(rHTML, :html).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :php).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :yaml).lines_of_code + assert_equal 4, CodeRay.scan(rHTML, :rhtml).lines_of_code + end + + def test_rubygems_not_loaded + assert_equal nil, defined? Gem + end if ENV['check_rubygems'] && RUBY_VERSION < '1.9' + + def test_list_of_encoders + assert_kind_of(Array, CodeRay::Encoders.list) + assert CodeRay::Encoders.list.include?('count') + end + + def test_list_of_scanners + assert_kind_of(Array, CodeRay::Scanners.list) + assert CodeRay::Scanners.list.include?('plaintext') + end + + def test_scan_a_frozen_string + CodeRay.scan RUBY_VERSION, :ruby + end + +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rbc.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,2022 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +263 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +4 +7 +5 +64 +49 +6 +2 +15 +65 +7 +7 +7 +8 +64 +7 +9 +35 +2 +7 +10 +64 +7 +11 +35 +2 +7 +12 +7 +13 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +16 +64 +7 +17 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +18 +7 +13 +35 +2 +35 +7 +49 +6 +2 +15 +99 +7 +19 +7 +20 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +21 +7 +22 +64 +7 +23 +64 +81 +24 +49 +6 +2 +15 +99 +7 +25 +7 +26 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +27 +7 +28 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +29 +7 +30 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +31 +7 +32 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +33 +7 +34 +65 +67 +49 +2 +0 +49 +3 +4 +15 +45 +35 +36 +7 +37 +64 +49 +38 +1 +13 +9 +202 +15 +45 +39 +40 +7 +41 +64 +84 +42 +9 +219 +99 +7 +43 +7 +44 +65 +67 +49 +2 +0 +49 +3 +4 +8 +220 +1 +15 +99 +7 +45 +7 +46 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +47 +7 +48 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +49 +7 +50 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +51 +x +12 +test_version +M +1 +n +n +x +12 +test_version +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +12 +test_version +i +29 +5 +7 +0 +13 +70 +9 +19 +15 +44 +43 +1 +7 +2 +78 +49 +3 +2 +6 +0 +45 +4 +5 +43 +6 +47 +49 +7 +2 +11 +I +5 +I +0 +I +0 +I +0 +I +-2 +p +8 +n +x +6 +Regexp +s +14 +\A\d\.\d\.\d\z +x +3 +new +x +7 +CodeRay +n +x +7 +VERSION +x +12 +assert_match +p +5 +I +0 +I +7 +I +0 +I +8 +I +1d +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +6 +I +0 +I +7 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +RUBY_TEST_CODE +s +20 +puts "Hello, World!" +x +9 +const_set +x +16 +RUBY_TEST_TOKENS +s +4 +puts +x +5 +ident +s +1 + +x +5 +space +x +4 +open +x +6 +string +s +1 +" +x +9 +delimiter +s +13 +Hello, World! +x +7 +content +x +5 +close +x +16 +test_simple_scan +M +1 +n +n +x +16 +test_simple_scan +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +16 +test_simple_scan +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +16 +RUBY_TEST_TOKENS +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +6 +to_ary +x +12 +assert_equal +p +5 +I +0 +I +18 +I +0 +I +19 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +17 +I +0 +I +18 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +14 +RUBY_TEST_HTML +s +51 +puts " +s +73 +Hello, World!" +x +1 ++ +x +21 +test_simple_highlight +M +1 +n +n +x +21 +test_simple_highlight +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +21 +test_simple_highlight +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +14 +RUBY_TEST_HTML +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +4 +html +x +12 +assert_equal +p +5 +I +0 +I +20 +I +0 +I +21 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +1f +I +0 +I +20 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +8 +test_duo +M +1 +n +n +x +8 +test_duo +i +66 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +49 +8 +1 +47 +49 +9 +2 +15 +5 +45 +0 +10 +45 +2 +11 +43 +4 +44 +43 +12 +79 +49 +13 +1 +13 +7 +5 +7 +5 +49 +14 +2 +15 +49 +6 +1 +45 +0 +15 +49 +8 +1 +47 +49 +9 +2 +11 +I +7 +I +0 +I +0 +I +0 +n +p +16 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +9 +highlight +x +12 +assert_equal +n +n +x +4 +Hash +x +16 +new_from_literal +x +3 +[]= +n +p +15 +I +0 +I +25 +I +0 +I +26 +I +4 +I +27 +I +16 +I +26 +I +1b +I +28 +I +1f +I +29 +I +3d +I +28 +I +42 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +15 +test_duo_stream +M +1 +n +n +x +15 +test_duo_stream +i +42 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +44 +43 +8 +79 +49 +9 +1 +13 +7 +10 +2 +49 +11 +2 +15 +49 +12 +2 +47 +49 +13 +2 +11 +I +8 +I +0 +I +0 +I +0 +n +p +14 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +4 +Hash +x +16 +new_from_literal +x +6 +stream +x +3 +[]= +x +9 +highlight +x +12 +assert_equal +p +9 +I +0 +I +2c +I +0 +I +2d +I +4 +I +2e +I +25 +I +2d +I +2a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +19 +test_comment_filter +M +1 +n +n +x +19 +test_comment_filter +i +26 +5 +7 +0 +64 +45 +1 +2 +7 +3 +64 +7 +4 +49 +5 +2 +49 +6 +0 +49 +7 +0 +47 +49 +8 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +9 +s +39 +#!/usr/bin/env ruby + +code + +more code + +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +14 +comment_filter +x +4 +text +x +12 +assert_equal +p +5 +I +0 +I +31 +I +0 +I +32 +I +1a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +18 +test_lines_of_code +M +1 +n +n +x +18 +test_lines_of_code +i +108 +5 +80 +45 +0 +1 +7 +2 +64 +7 +3 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +7 +7 +64 +19 +0 +15 +5 +78 +45 +0 +8 +20 +0 +7 +9 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +10 +20 +0 +7 +11 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +12 +20 +0 +7 +13 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +4 +4 +45 +0 +14 +20 +0 +7 +15 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +11 +I +6 +I +1 +I +0 +I +0 +n +p +16 +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +13 +lines_of_code +x +12 +assert_equal +s +514 + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + +n +x +4 +html +n +x +3 +php +n +x +4 +yaml +n +x +5 +rhtml +p +15 +I +0 +I +43 +I +0 +I +44 +I +15 +I +4d +I +1b +I +62 +I +2f +I +63 +I +43 +I +64 +I +57 +I +65 +I +6c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +1 +x +5 +rHTML +x +3 +ENV +n +s +14 +check_rubygems +x +2 +[] +x +12 +RUBY_VERSION +n +s +3 +1.9 +x +1 +< +x +24 +test_rubygems_not_loaded +M +1 +n +n +x +24 +test_rubygems_not_loaded +i +34 +5 +1 +26 +93 +0 +15 +29 +17 +0 +7 +0 +98 +1 +1 +30 +8 +23 +25 +92 +0 +27 +8 +28 +15 +7 +2 +8 +29 +1 +47 +49 +3 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +4 +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +x +12 +assert_equal +p +5 +I +0 +I +68 +I +0 +I +69 +I +22 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_encoders +M +1 +n +n +x +21 +test_list_of_encoders +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Encoders +x +4 +list +x +14 +assert_kind_of +n +s +5 +count +x +8 +include? +x +6 +assert +p +7 +I +0 +I +6c +I +0 +I +6d +I +11 +I +6e +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_scanners +M +1 +n +n +x +21 +test_list_of_scanners +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Scanners +x +4 +list +x +14 +assert_kind_of +n +s +9 +plaintext +x +8 +include? +x +6 +assert +p +7 +I +0 +I +71 +I +0 +I +72 +I +11 +I +73 +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +25 +test_scan_a_frozen_string +M +1 +n +n +x +25 +test_scan_a_frozen_string +i +12 +45 +0 +1 +45 +2 +3 +7 +4 +49 +5 +2 +11 +I +3 +I +0 +I +0 +I +0 +n +p +6 +x +7 +CodeRay +n +x +12 +RUBY_VERSION +n +x +4 +ruby +x +4 +scan +p +5 +I +0 +I +76 +I +0 +I +77 +I +c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +p +51 +I +2 +I +6 +I +10 +I +c +I +1a +I +e +I +1d +I +f +I +24 +I +10 +I +2b +I +11 +I +31 +I +12 +I +38 +I +13 +I +3f +I +14 +I +46 +I +15 +I +52 +I +17 +I +60 +I +1d +I +63 +I +1d +I +66 +I +1e +I +6f +I +1f +I +7d +I +25 +I +8b +I +2c +I +99 +I +31 +I +a7 +I +43 +I +b5 +I +6a +I +cc +I +68 +I +db +I +6a +I +dd +I +6c +I +eb +I +71 +I +f9 +I +76 +I +107 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,77 @@ +require 'test/unit' +$:.unshift 'lib' +require 'coderay' + +begin + require 'rubygems' unless defined? Gem + gem 'RedCloth', '>= 4.0.3' rescue nil + require 'redcloth' +rescue LoadError + warn 'RedCloth not found - skipping for_redcloth tests.' +end + +class BasicTest < Test::Unit::TestCase + + def test_for_redcloth + require 'coderay/for_redcloth' + assert_equal "

    puts "Hello, World!"

    ", + RedCloth.new('@[ruby]puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    puts "Hello, World!"
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. puts "Hello, World!"').to_html + end + + def test_for_redcloth_no_lang + require 'coderay/for_redcloth' + assert_equal "

    puts \"Hello, World!\"

    ", + RedCloth.new('@puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc. puts "Hello, World!"').to_html + end + + def test_for_redcloth_style + require 'coderay/for_redcloth' + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc{color: red}. puts "Hello, World!"').to_html + end + + def test_for_redcloth_escapes + require 'coderay/for_redcloth' + assert_equal '

    >

    ', + RedCloth.new('@[ruby]>@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    &
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. &').to_html + end + + def test_for_redcloth_escapes2 + require 'coderay/for_redcloth' + assert_equal "

    #include <test.h>

    ", + RedCloth.new('@[c]#include @').to_html + end + + # See http://jgarber.lighthouseapp.com/projects/13054/tickets/124-code-markup-does-not-allow-brackets. + def test_for_redcloth_false_positive + require 'coderay/for_redcloth' + assert_equal '

    [project]_dff.skjd

    ', + RedCloth.new('@[project]_dff.skjd@').to_html + # false positive, but expected behavior / known issue + assert_equal "

    _dff.skjd

    ", + RedCloth.new('@[ruby]_dff.skjd@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    [project]_dff.skjd
    + BLOCKCODE + RedCloth.new('bc. [project]_dff.skjd').to_html + end + +end if defined? RedCloth \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rbc.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,1708 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +249 +5 +7 +0 +64 +47 +49 +1 +1 +15 +99 +43 +2 +7 +3 +49 +4 +1 +7 +5 +64 +49 +6 +1 +15 +5 +7 +7 +64 +47 +49 +1 +1 +15 +26 +93 +0 +15 +29 +144 +0 +26 +93 +1 +15 +29 +55 +0 +7 +8 +98 +9 +1 +30 +8 +61 +25 +92 +1 +27 +8 +66 +15 +7 +10 +8 +67 +1 +9 +72 +1 +8 +80 +5 +7 +11 +64 +47 +49 +1 +1 +15 +26 +93 +2 +15 +29 +102 +0 +5 +7 +12 +64 +7 +13 +64 +47 +49 +14 +2 +30 +8 +129 +26 +93 +3 +15 +24 +13 +45 +15 +16 +12 +49 +17 +1 +10 +119 +8 +124 +15 +1 +25 +8 +129 +15 +92 +3 +27 +34 +92 +2 +27 +15 +5 +7 +18 +64 +47 +49 +1 +1 +30 +8 +178 +26 +93 +4 +15 +24 +13 +45 +19 +20 +12 +49 +17 +1 +10 +161 +8 +173 +15 +5 +7 +21 +64 +47 +49 +22 +1 +25 +8 +178 +15 +92 +4 +27 +34 +92 +0 +27 +15 +26 +93 +5 +15 +29 +197 +0 +7 +23 +98 +9 +1 +30 +8 +203 +25 +92 +5 +27 +8 +208 +15 +7 +10 +8 +209 +1 +9 +245 +99 +7 +24 +45 +25 +26 +43 +27 +43 +28 +65 +49 +29 +3 +13 +99 +12 +7 +30 +12 +7 +31 +12 +65 +12 +49 +32 +4 +15 +49 +30 +0 +8 +246 +1 +15 +2 +11 +I +c +I +0 +I +0 +I +0 +n +p +33 +s +9 +test/unit +x +7 +require +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +s +8 +rubygems +s +8 +RedCloth +s +8 +>= 4.0.3 +x +3 +gem +x +13 +StandardError +n +x +3 +=== +s +8 +redcloth +x +9 +LoadError +n +s +49 +RedCloth not found - skipping for_redcloth tests. +x +4 +warn +x +8 +RedCloth +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +86 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +4 +7 +5 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +6 +7 +7 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +8 +7 +9 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +10 +7 +11 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +12 +7 +13 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +14 +x +17 +test_for_redcloth +M +1 +n +n +x +17 +test_for_redcloth +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +221 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +28 +@[ruby]puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +252 +
    +
    puts "Hello, World!"
    +
    + +x +5 +chomp +n +s +30 +bc[ruby]. puts "Hello, World!" +p +17 +I +0 +I +f +I +0 +I +10 +I +9 +I +11 +I +d +I +12 +I +2e +I +11 +I +33 +I +13 +I +3a +I +18 +I +5b +I +13 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +25 +test_for_redcloth_no_lang +M +1 +n +n +x +25 +test_for_redcloth_no_lang +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +40 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +45 +
    puts "Hello, World!"
    + +x +5 +chomp +n +s +24 +bc. puts "Hello, World!" +p +17 +I +0 +I +1b +I +0 +I +1c +I +9 +I +1d +I +d +I +1e +I +2e +I +1d +I +33 +I +1f +I +3a +I +22 +I +5b +I +1f +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +23 +test_for_redcloth_style +M +1 +n +n +x +23 +test_for_redcloth_style +i +54 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +49 +3 +0 +45 +4 +5 +13 +71 +6 +47 +9 +40 +47 +49 +7 +0 +13 +7 +8 +64 +47 +49 +9 +1 +15 +8 +46 +7 +8 +64 +49 +6 +1 +49 +10 +0 +47 +49 +11 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +12 +s +20 +coderay/for_redcloth +x +7 +require +s +85 +
    puts "Hello, World!"
    + +x +5 +chomp +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +36 +bc{color: red}. puts "Hello, World!" +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +25 +I +0 +I +26 +I +9 +I +27 +I +10 +I +2a +I +31 +I +27 +I +36 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +25 +test_for_redcloth_escapes +M +1 +n +n +x +25 +test_for_redcloth_escapes +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +52 +

    >

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +9 +@[ruby]>@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +84 +
    +
    &
    +
    + +x +5 +chomp +n +s +11 +bc[ruby]. & +p +17 +I +0 +I +2d +I +0 +I +2e +I +9 +I +2f +I +d +I +30 +I +2e +I +2f +I +33 +I +31 +I +3a +I +36 +I +5b +I +31 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +26 +test_for_redcloth_escapes2 +M +1 +n +n +x +26 +test_for_redcloth_escapes2 +i +51 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +11 +s +20 +coderay/for_redcloth +x +7 +require +s +149 +

    #include <test.h>

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@[c]#include @ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +39 +I +0 +I +3a +I +9 +I +3b +I +d +I +3c +I +2e +I +3b +I +33 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +32 +test_for_redcloth_false_positive +M +1 +n +n +x +32 +test_for_redcloth_false_positive +i +138 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +45 +3 +12 +13 +71 +5 +47 +9 +79 +47 +49 +6 +0 +13 +7 +13 +64 +47 +49 +8 +1 +15 +8 +85 +7 +13 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +14 +64 +49 +15 +0 +45 +3 +16 +13 +71 +5 +47 +9 +124 +47 +49 +6 +0 +13 +7 +17 +64 +47 +49 +8 +1 +15 +8 +130 +7 +17 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +18 +s +20 +coderay/for_redcloth +x +7 +require +s +38 +

    [project]_dff.skjd

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +20 +@[project]_dff.skjd@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +57 +

    _dff.skjd

    +n +s +17 +@[ruby]_dff.skjd@ +s +43 +
    [project]_dff.skjd
    + +x +5 +chomp +n +s +22 +bc. [project]_dff.skjd +p +23 +I +0 +I +40 +I +0 +I +41 +I +9 +I +42 +I +d +I +43 +I +2e +I +42 +I +33 +I +45 +I +37 +I +46 +I +58 +I +45 +I +5d +I +47 +I +64 +I +4a +I +85 +I +47 +I +8a +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +p +13 +I +2 +I +f +I +10 +I +1b +I +1e +I +25 +I +2c +I +2d +I +3a +I +39 +I +48 +I +40 +I +56 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +13 +attach_method +p +23 +I +0 +I +1 +I +9 +I +2 +I +18 +I +3 +I +21 +I +6 +I +51 +I +7 +I +85 +I +8 +I +95 +I +9 +I +a2 +I +a +I +b6 +I +4d +I +d3 +I +d +I +f5 +I +4d +I +f9 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,11 @@ +require 'test/unit' +require 'coderay' + +class PluginScannerTest < Test::Unit::TestCase + + def test_load + require File.join(File.dirname(__FILE__), 'vhdl') + assert_equal 'VHDL', CodeRay.scanner(:vhdl).class.name + end + +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rbc.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,317 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +17 +PluginScannerTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +17 +PluginScannerTest +i +16 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +4 +x +9 +test_load +M +1 +n +n +x +9 +test_load +i +48 +5 +45 +0 +1 +45 +0 +2 +65 +49 +3 +0 +49 +4 +1 +7 +5 +64 +49 +6 +2 +47 +49 +7 +1 +15 +5 +7 +8 +64 +45 +9 +10 +7 +11 +49 +12 +1 +49 +13 +0 +49 +14 +0 +47 +49 +15 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +16 +x +4 +File +n +n +x +11 +active_path +x +7 +dirname +s +4 +vhdl +x +4 +join +x +7 +require +s +4 +VHDL +x +7 +CodeRay +n +x +4 +vhdl +x +7 +scanner +x +5 +class +x +4 +name +x +12 +assert_equal +p +7 +I +0 +I +6 +I +0 +I +7 +I +19 +I +8 +I +30 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +p +3 +I +2 +I +6 +I +10 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,12 @@ +require 'test/unit' + +MYDIR = File.dirname(__FILE__) + +$:.unshift 'lib' +require 'coderay' +puts "Running basic CodeRay #{CodeRay::VERSION} tests..." + +suite = %w(basic load_plugin_scanner word_list) +for test_case in suite + load File.join(MYDIR, test_case + '.rb') +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rbc.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,322 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +95 +5 +7 +0 +64 +47 +49 +1 +1 +15 +65 +7 +2 +45 +3 +4 +65 +49 +5 +0 +49 +6 +1 +49 +7 +2 +15 +99 +43 +8 +7 +9 +49 +10 +1 +7 +11 +64 +49 +12 +1 +15 +5 +7 +13 +64 +47 +49 +1 +1 +15 +5 +7 +14 +45 +15 +16 +43 +17 +47 +49 +18 +0 +7 +19 +63 +3 +47 +49 +20 +1 +15 +7 +21 +64 +7 +22 +64 +7 +23 +64 +35 +3 +19 +0 +15 +20 +0 +56 +24 +50 +25 +0 +15 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +26 +s +9 +test/unit +x +7 +require +x +5 +MYDIR +x +4 +File +n +x +11 +active_path +x +7 +dirname +x +9 +const_set +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +s +22 +Running basic CodeRay +x +7 +CodeRay +n +x +7 +VERSION +x +4 +to_s +s +9 + tests... +x +4 +puts +s +5 +basic +s +19 +load_plugin_scanner +s +9 +word_list +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +28 +57 +22 +1 +1 +15 +5 +45 +0 +1 +45 +2 +3 +21 +1 +1 +7 +4 +64 +81 +5 +49 +6 +2 +47 +49 +7 +1 +11 +I +6 +I +0 +I +1 +I +1 +n +p +8 +x +4 +File +n +x +5 +MYDIR +n +s +3 +.rb +x +1 ++ +x +4 +join +x +4 +load +p +5 +I +0 +I +a +I +5 +I +b +I +1c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +0 +x +4 +each +p +15 +I +0 +I +1 +I +9 +I +3 +I +1a +I +5 +I +29 +I +6 +I +32 +I +7 +I +47 +I +9 +I +55 +I +a +I +5f +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +2 +x +5 +suite +x +9 +test_case diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,126 @@ +class VHDL < CodeRay::Scanners::Scanner + + register_for :vhdl + + RESERVED_WORDS = [ + 'access','after','alias','all','assert','architecture','begin', + 'block','body','buffer','bus','case','component','configuration','constant', + 'disconnect','downto','else','elsif','end','entity','exit','file','for', + 'function','generate','generic','group','guarded','if','impure','in', + 'inertial','inout','is','label','library','linkage','literal','loop', + 'map','new','next','null','of','on','open','others','out','package', + 'port','postponed','procedure','process','pure','range','record','register', + 'reject','report','return','select','severity','signal','shared','subtype', + 'then','to','transport','type','unaffected','units','until','use','variable', + 'wait','when','while','with','note','warning','error','failure','and', + 'or','xor','not','nor', + 'array' + ] + + PREDEFINED_TYPES = [ + 'bit','bit_vector','character','boolean','integer','real','time','string', + 'severity_level','positive','natural','signed','unsigned','line','text', + 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state', + 'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength', + 'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector' + ] + + PREDEFINED_CONSTANTS = [ + + ] + + IDENT_KIND = CodeRay::CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/-- .*/x) + kind = :comment + + elsif scan(/ [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) /x) + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match.downcase] + + elsif match = scan(/[a-z]?"/i) + tokens << [:open, :string] + state = :string + kind = :delimiter + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + kind = :char + + elsif scan(/(?:\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\\n"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rbc.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,2334 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +35 +99 +7 +0 +45 +1 +2 +43 +3 +43 +4 +65 +49 +5 +3 +13 +99 +12 +7 +6 +12 +7 +7 +12 +65 +12 +49 +8 +4 +15 +49 +6 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +9 +x +4 +VHDL +x +7 +CodeRay +n +x +8 +Scanners +x +7 +Scanner +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +4 +VHDL +i +519 +5 +66 +5 +7 +0 +47 +49 +1 +1 +15 +65 +7 +2 +7 +3 +64 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +7 +12 +64 +7 +13 +64 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +19 +64 +7 +20 +64 +7 +21 +64 +7 +22 +64 +7 +23 +64 +7 +24 +64 +7 +25 +64 +7 +26 +64 +7 +27 +64 +7 +28 +64 +7 +29 +64 +7 +30 +64 +7 +31 +64 +7 +32 +64 +7 +33 +64 +7 +34 +64 +7 +35 +64 +7 +36 +64 +7 +37 +64 +7 +38 +64 +7 +39 +64 +7 +40 +64 +7 +41 +64 +7 +42 +64 +7 +43 +64 +7 +44 +64 +7 +45 +64 +7 +46 +64 +7 +47 +64 +7 +48 +64 +7 +49 +64 +7 +50 +64 +7 +51 +64 +7 +52 +64 +7 +53 +64 +7 +54 +64 +7 +55 +64 +7 +56 +64 +7 +57 +64 +7 +58 +64 +7 +59 +64 +7 +60 +64 +7 +61 +64 +7 +62 +64 +7 +63 +64 +7 +64 +64 +7 +65 +64 +7 +66 +64 +7 +67 +64 +7 +68 +64 +7 +69 +64 +7 +70 +64 +7 +71 +64 +7 +72 +64 +7 +73 +64 +7 +74 +64 +7 +75 +64 +7 +76 +64 +7 +77 +64 +7 +78 +64 +7 +79 +64 +7 +80 +64 +7 +81 +64 +7 +82 +64 +7 +83 +64 +7 +84 +64 +7 +85 +64 +7 +86 +64 +7 +87 +64 +7 +88 +64 +7 +89 +64 +7 +90 +64 +7 +91 +64 +35 +89 +49 +92 +2 +15 +65 +7 +93 +7 +94 +64 +7 +95 +64 +7 +96 +64 +7 +97 +64 +7 +98 +64 +7 +99 +64 +7 +100 +64 +7 +101 +64 +7 +102 +64 +7 +103 +64 +7 +104 +64 +7 +105 +64 +7 +106 +64 +7 +107 +64 +7 +108 +64 +7 +109 +64 +7 +110 +64 +7 +111 +64 +7 +112 +64 +7 +113 +64 +7 +114 +64 +7 +115 +64 +7 +116 +64 +7 +117 +64 +7 +118 +64 +7 +119 +64 +7 +120 +64 +7 +121 +64 +7 +122 +64 +7 +123 +64 +35 +30 +49 +92 +2 +15 +65 +7 +124 +35 +0 +49 +92 +2 +15 +65 +7 +125 +45 +126 +127 +43 +128 +13 +71 +129 +47 +9 +422 +47 +49 +130 +0 +13 +7 +131 +47 +49 +132 +1 +15 +8 +427 +7 +131 +49 +129 +1 +45 +2 +133 +7 +134 +49 +135 +2 +45 +93 +136 +7 +137 +49 +135 +2 +45 +124 +138 +7 +139 +49 +135 +2 +49 +92 +2 +15 +65 +7 +140 +7 +141 +13 +70 +9 +476 +15 +44 +43 +142 +7 +143 +80 +49 +129 +2 +6 +141 +49 +92 +2 +15 +65 +7 +144 +7 +145 +13 +70 +9 +501 +15 +44 +43 +142 +7 +146 +80 +49 +129 +2 +6 +145 +49 +92 +2 +15 +99 +7 +147 +7 +148 +65 +67 +49 +149 +0 +49 +150 +4 +11 +I +5b +I +0 +I +0 +I +0 +n +p +151 +x +4 +vhdl +x +12 +register_for +x +14 +RESERVED_WORDS +s +6 +access +s +5 +after +s +5 +alias +s +3 +all +s +6 +assert +s +12 +architecture +s +5 +begin +s +5 +block +s +4 +body +s +6 +buffer +s +3 +bus +s +4 +case +s +9 +component +s +13 +configuration +s +8 +constant +s +10 +disconnect +s +6 +downto +s +4 +else +s +5 +elsif +s +3 +end +s +6 +entity +s +4 +exit +s +4 +file +s +3 +for +s +8 +function +s +8 +generate +s +7 +generic +s +5 +group +s +7 +guarded +s +2 +if +s +6 +impure +s +2 +in +s +8 +inertial +s +5 +inout +s +2 +is +s +5 +label +s +7 +library +s +7 +linkage +s +7 +literal +s +4 +loop +s +3 +map +s +3 +new +s +4 +next +s +4 +null +s +2 +of +s +2 +on +s +4 +open +s +6 +others +s +3 +out +s +7 +package +s +4 +port +s +9 +postponed +s +9 +procedure +s +7 +process +s +4 +pure +s +5 +range +s +6 +record +s +8 +register +s +6 +reject +s +6 +report +s +6 +return +s +6 +select +s +8 +severity +s +6 +signal +s +6 +shared +s +7 +subtype +s +4 +then +s +2 +to +s +9 +transport +s +4 +type +s +10 +unaffected +s +5 +units +s +5 +until +s +3 +use +s +8 +variable +s +4 +wait +s +4 +when +s +5 +while +s +4 +with +s +4 +note +s +7 +warning +s +5 +error +s +7 +failure +s +3 +and +s +2 +or +s +3 +xor +s +3 +not +s +3 +nor +s +5 +array +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +bit +s +10 +bit_vector +s +9 +character +s +7 +boolean +s +7 +integer +s +4 +real +s +4 +time +s +6 +string +s +14 +severity_level +s +8 +positive +s +7 +natural +s +6 +signed +s +8 +unsigned +s +4 +line +s +4 +text +s +9 +std_logic +s +16 +std_logic_vector +s +10 +std_ulogic +s +17 +std_ulogic_vector +s +10 +qsim_state +s +17 +qsim_state_vector +s +12 +qsim_12state +s +19 +qsim_12state_vector +s +13 +qsim_strength +s +7 +mux_bit +s +10 +mux_vector +s +7 +reg_bit +s +10 +reg_vector +s +7 +wor_bit +s +10 +wor_vector +x +20 +PREDEFINED_CONSTANTS +x +10 +IDENT_KIND +x +7 +CodeRay +n +x +20 +CaseIgnoringWordList +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +6 +ESCAPE +n +x +6 +Regexp +s +49 + [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} +x +14 +UNICODE_ESCAPE +n +s +35 + u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} +x +11 +scan_tokens +M +1 +n +n +x +11 +scan_tokens +i +688 +7 +0 +19 +2 +15 +5 +47 +49 +1 +0 +10 +660 +1 +19 +3 +15 +1 +19 +4 +15 +20 +2 +13 +7 +0 +12 +49 +2 +1 +9 +331 +15 +5 +7 +3 +13 +70 +9 +51 +15 +44 +43 +4 +7 +5 +80 +49 +6 +2 +6 +3 +47 +49 +7 +1 +9 +63 +7 +8 +19 +3 +8 +329 +5 +7 +9 +13 +70 +9 +82 +15 +44 +43 +4 +7 +10 +80 +49 +6 +2 +6 +9 +47 +49 +7 +1 +9 +94 +7 +11 +19 +3 +8 +329 +5 +7 +12 +13 +70 +9 +113 +15 +44 +43 +4 +7 +13 +80 +49 +6 +2 +6 +12 +47 +49 +7 +1 +9 +125 +7 +14 +19 +3 +8 +329 +5 +7 +15 +13 +70 +9 +144 +15 +44 +43 +4 +7 +16 +80 +49 +6 +2 +6 +15 +47 +49 +7 +1 +19 +4 +9 +167 +45 +17 +18 +20 +4 +49 +19 +0 +49 +20 +1 +19 +3 +8 +329 +5 +7 +21 +13 +70 +9 +186 +15 +44 +43 +4 +7 +22 +79 +49 +6 +2 +6 +21 +47 +49 +7 +1 +19 +4 +9 +217 +20 +0 +7 +23 +7 +24 +35 +2 +49 +25 +1 +15 +7 +24 +19 +2 +15 +7 +26 +19 +3 +8 +329 +5 +7 +27 +13 +70 +9 +247 +15 +44 +43 +4 +7 +28 +45 +29 +30 +47 +49 +31 +0 +7 +32 +63 +3 +80 +49 +6 +2 +6 +27 +47 +49 +7 +1 +9 +259 +7 +33 +19 +3 +8 +329 +5 +7 +34 +13 +70 +9 +278 +15 +44 +43 +4 +7 +35 +78 +49 +6 +2 +6 +34 +47 +49 +7 +1 +9 +290 +7 +36 +19 +3 +8 +329 +5 +7 +37 +13 +70 +9 +309 +15 +44 +43 +4 +7 +38 +78 +49 +6 +2 +6 +37 +47 +49 +7 +1 +9 +321 +7 +39 +19 +3 +8 +329 +5 +48 +40 +15 +7 +41 +19 +3 +8 +564 +13 +7 +24 +12 +49 +2 +1 +9 +553 +15 +5 +7 +42 +13 +70 +9 +360 +15 +44 +43 +4 +7 +43 +78 +49 +6 +2 +6 +42 +47 +49 +7 +1 +9 +372 +7 +44 +19 +3 +8 +551 +5 +7 +45 +13 +70 +9 +391 +15 +44 +43 +4 +7 +46 +78 +49 +6 +2 +6 +45 +47 +49 +7 +1 +9 +432 +20 +0 +7 +46 +64 +7 +26 +35 +2 +49 +25 +1 +15 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +0 +19 +2 +15 +1 +8 +656 +8 +551 +5 +7 +48 +13 +70 +9 +472 +15 +44 +43 +4 +7 +49 +45 +29 +50 +47 +49 +31 +0 +7 +51 +45 +52 +53 +47 +49 +31 +0 +7 +54 +63 +5 +4 +6 +49 +6 +2 +6 +48 +47 +49 +7 +1 +9 +484 +7 +33 +19 +3 +8 +551 +5 +7 +55 +13 +70 +9 +503 +15 +44 +43 +4 +7 +56 +80 +49 +6 +2 +6 +55 +47 +49 +7 +1 +9 +532 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +41 +19 +3 +15 +7 +0 +19 +2 +8 +551 +5 +7 +57 +64 +5 +79 +47 +49 +58 +1 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +564 +15 +5 +7 +61 +64 +20 +0 +47 +49 +60 +2 +15 +20 +4 +13 +10 +576 +15 +5 +48 +62 +19 +4 +15 +99 +43 +63 +7 +64 +49 +20 +1 +13 +9 +597 +15 +20 +3 +10 +596 +2 +8 +597 +3 +9 +625 +5 +7 +65 +64 +20 +4 +20 +3 +35 +2 +5 +48 +66 +35 +2 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +626 +1 +15 +20 +4 +9 +634 +1 +8 +644 +5 +7 +67 +64 +20 +0 +47 +49 +60 +2 +15 +20 +0 +20 +4 +20 +3 +35 +2 +49 +25 +1 +15 +68 +8 +5 +1 +15 +20 +2 +7 +24 +83 +68 +9 +683 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +8 +684 +1 +15 +20 +0 +11 +I +c +I +5 +I +2 +I +2 +n +p +69 +x +7 +initial +x +4 +eos? +x +3 +=== +n +x +6 +Regexp +s +12 + \s+ | \\\n +x +3 +new +x +4 +scan +x +5 +space +n +s +5 +-- .* +x +7 +comment +n +s +42 + [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) +x +8 +operator +n +s +24 + [A-Za-z_][A-Za-z_0-9]* +x +10 +IDENT_KIND +n +x +8 +downcase +x +2 +[] +n +s +7 +[a-z]?" +x +4 +open +x +6 +string +x +2 +<< +x +9 +delimiter +n +s +24 + L?' (?: [^\'\n\\] | \\ +x +6 +ESCAPE +n +x +4 +to_s +s +7 + )? '? +x +4 +char +n +s +18 +(?:\d+)(?![.eEfF]) +x +7 +integer +n +s +59 +\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]? +x +5 +float +x +5 +getch +x +5 +error +n +s +9 +[^\\\n"]+ +x +7 +content +n +s +1 +" +x +5 +close +n +s +8 + \\ (?: +n +s +3 + | +x +14 +UNICODE_ESCAPE +n +s +3 + ) +n +s +8 + \\ | $ +s +36 +else case " reached; %p not handled. +x +4 +peek +x +1 +% +x +13 +raise_inspect +s +13 +Unknown state +x +7 +matched +x +7 +Globals +x +6 +$DEBUG +s +25 +Error token %p in line %d +x +4 +line +s +11 +Empty token +x +2 +== +p +111 +I +0 +I +28 +I +0 +I +2a +I +5 +I +2c +I +c +I +2e +I +10 +I +2f +I +14 +I +31 +I +17 +I +33 +I +20 +I +35 +I +39 +I +36 +I +3f +I +38 +I +58 +I +39 +I +5e +I +3b +I +77 +I +3c +I +7d +I +3e +I +98 +I +3f +I +a7 +I +41 +I +c2 +I +42 +I +ce +I +43 +I +d3 +I +44 +I +d9 +I +46 +I +fd +I +47 +I +103 +I +49 +I +11c +I +4a +I +122 +I +4c +I +13b +I +4d +I +141 +I +50 +I +145 +I +51 +I +14c +I +55 +I +155 +I +56 +I +16e +I +57 +I +174 +I +58 +I +18d +I +59 +I +19a +I +5a +I +1a6 +I +5b +I +1ab +I +5c +I +1b0 +I +5d +I +1de +I +5e +I +1e4 +I +5f +I +1fd +I +60 +I +209 +I +61 +I +20e +I +62 +I +214 +I +64 +I +22a +I +68 +I +235 +I +6c +I +241 +I +6d +I +257 +I +6f +I +258 +I +6e +I +25b +I +6f +I +271 +I +6d +I +273 +I +71 +I +285 +I +73 +I +296 +I +77 +I +29e +I +78 +I +2ab +I +77 +I +2ad +I +7b +I +2b0 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +5 +x +6 +tokens +x +7 +options +x +5 +state +x +4 +kind +x +5 +match +x +17 +method_visibility +x +15 +add_defn_method +p +65 +I +2 +I +3 +I +a +I +5 +I +d +I +6 +I +22 +I +7 +I +3a +I +8 +I +55 +I +9 +I +6d +I +a +I +85 +I +b +I +a3 +I +c +I +bb +I +d +I +d3 +I +e +I +ee +I +f +I +109 +I +10 +I +115 +I +11 +I +11e +I +14 +I +121 +I +15 +I +139 +I +16 +I +14e +I +17 +I +15d +I +18 +I +169 +I +19 +I +181 +I +1c +I +184 +I +1e +I +18a +I +20 +I +1ab +I +21 +I +1b0 +I +20 +I +1b3 +I +22 +I +1b8 +I +20 +I +1bb +I +23 +I +1c0 +I +20 +I +1c7 +I +25 +I +1e0 +I +26 +I +1f9 +I +28 +I +207 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 +x +13 +attach_method +p +3 +I +0 +I +1 +I +23 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,79 @@ +require 'test/unit' +require 'coderay' + +class WordListTest < Test::Unit::TestCase + + include CodeRay + + # define word arrays + RESERVED_WORDS = %w[ + asm break case continue default do else + ... + ] + + PREDEFINED_TYPES = %w[ + int long short char void + ... + ] + + PREDEFINED_CONSTANTS = %w[ + EOF NULL ... + ] + + # make a WordList + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + def test_word_list_example + assert_equal :pre_type, IDENT_KIND['void'] + # assert_equal :pre_constant, IDENT_KIND['...'] # not specified + end + + def test_word_list + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_word_list_cached + list = WordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_case_ignoring_word_list + list = CaseIgnoringWordList.new(:ident).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_case_ignoring_word_list_cached + list = CaseIgnoringWordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident, true).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_dup + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + list2 = list.dup + list2.add(%w[foobar], :keyword) + assert_equal :keyword, list2['foobar'] + assert_equal :reserved, list['foobar'] + end + +end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rbc.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,1763 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +12 +WordListTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +12 +WordListTest +i +232 +5 +66 +5 +45 +0 +1 +47 +49 +2 +1 +15 +65 +7 +3 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +35 +8 +49 +12 +2 +15 +65 +7 +13 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +11 +64 +35 +6 +49 +12 +2 +15 +65 +7 +19 +7 +20 +64 +7 +21 +64 +7 +11 +64 +35 +3 +49 +12 +2 +15 +65 +7 +22 +45 +23 +24 +13 +71 +25 +47 +9 +115 +47 +49 +26 +0 +13 +7 +27 +47 +49 +28 +1 +15 +8 +120 +7 +27 +49 +25 +1 +45 +3 +29 +7 +30 +49 +31 +2 +45 +13 +32 +7 +33 +49 +31 +2 +45 +19 +34 +7 +35 +49 +31 +2 +49 +12 +2 +15 +99 +7 +36 +7 +37 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +40 +7 +41 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +42 +7 +43 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +44 +7 +45 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +46 +7 +47 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +48 +7 +49 +65 +67 +49 +38 +0 +49 +39 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +50 +x +7 +CodeRay +n +x +7 +include +x +14 +RESERVED_WORDS +s +3 +asm +s +5 +break +s +4 +case +s +8 +continue +s +7 +default +s +2 +do +s +4 +else +s +3 +... +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +int +s +4 +long +s +5 +short +s +4 +char +s +4 +void +x +20 +PREDEFINED_CONSTANTS +s +3 +EOF +s +4 +NULL +x +10 +IDENT_KIND +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +22 +test_word_list_example +M +1 +n +n +x +22 +test_word_list_example +i +17 +5 +7 +0 +45 +1 +2 +7 +3 +64 +49 +4 +1 +47 +49 +5 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +6 +x +8 +pre_type +x +10 +IDENT_KIND +n +s +4 +void +x +2 +[] +x +12 +assert_equal +p +5 +I +0 +I +1d +I +0 +I +1e +I +11 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +test_word_list +M +1 +n +n +x +14 +test_word_list +i +73 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +22 +I +0 +I +23 +I +29 +I +24 +I +39 +I +25 +I +49 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +21 +test_word_list_cached +M +1 +n +n +x +21 +test_word_list_cached +i +75 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +28 +I +0 +I +29 +I +2b +I +2a +I +3b +I +2b +I +4b +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +28 +test_case_ignoring_word_list +M +1 +n +n +x +28 +test_case_ignoring_word_list +i +178 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +112 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +117 +7 +4 +49 +2 +1 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +2e +I +0 +I +2f +I +29 +I +30 +I +39 +I +31 +I +49 +I +32 +I +59 +I +34 +I +82 +I +35 +I +92 +I +36 +I +a2 +I +37 +I +b2 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +35 +test_case_ignoring_word_list_cached +M +1 +n +n +x +35 +test_case_ignoring_word_list_cached +i +182 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +115 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +121 +7 +4 +2 +49 +2 +2 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +3a +I +0 +I +3b +I +2b +I +3c +I +3b +I +3d +I +4b +I +3e +I +5b +I +40 +I +86 +I +41 +I +96 +I +42 +I +a6 +I +43 +I +b6 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +8 +test_dup +M +1 +n +n +x +8 +test_dup +i +110 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +20 +0 +49 +11 +0 +19 +1 +15 +20 +1 +7 +6 +64 +35 +1 +7 +12 +49 +8 +2 +15 +5 +7 +12 +20 +1 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +13 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +x +3 +dup +x +7 +keyword +p +15 +I +0 +I +46 +I +0 +I +47 +I +29 +I +48 +I +39 +I +49 +I +41 +I +4a +I +4e +I +4b +I +5e +I +4c +I +6e +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +2 +x +4 +list +x +5 +list2 +p +45 +I +2 +I +6 +I +b +I +9 +I +e +I +a +I +23 +I +b +I +2c +I +e +I +2f +I +f +I +3e +I +10 +I +47 +I +13 +I +4a +I +14 +I +59 +I +18 +I +78 +I +19 +I +7d +I +18 +I +80 +I +1a +I +85 +I +18 +I +88 +I +1b +I +8d +I +18 +I +94 +I +1d +I +a2 +I +22 +I +b0 +I +28 +I +be +I +2e +I +cc +I +3a +I +da +I +46 +I +e8 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/basic.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/basic.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,122 @@ +require 'test/unit' +require 'coderay' + +class BasicTest < Test::Unit::TestCase + + def test_version + assert_nothing_raised do + assert_match(/\A\d\.\d\.\d\z/, CodeRay::VERSION) + end + end + + RUBY_TEST_CODE = 'puts "Hello, World!"' + + RUBY_TEST_TOKENS = [ + ['puts', :ident], + [' ', :space], + [:open, :string], + ['"', :delimiter], + ['Hello, World!', :content], + ['"', :delimiter], + [:close, :string] + ] + def test_simple_scan + assert_nothing_raised do + assert_equal RUBY_TEST_TOKENS, CodeRay.scan(RUBY_TEST_CODE, :ruby).to_ary + end + end + + RUBY_TEST_HTML = 'puts "' + + 'Hello, World!"' + def test_simple_highlight + assert_nothing_raised do + assert_equal RUBY_TEST_HTML, CodeRay.scan(RUBY_TEST_CODE, :ruby).html + end + end + + def test_duo + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE)) + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain => :plain].highlight(RUBY_TEST_CODE)) + end + + def test_duo_stream + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE, :stream => true)) + end + + def test_comment_filter + assert_equal <<-EXPECTED, CodeRay.scan(<<-INPUT, :ruby).comment_filter.text +#!/usr/bin/env ruby + +code + +more code + EXPECTED +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + end + + def test_lines_of_code + assert_equal 2, CodeRay.scan(<<-INPUT, :ruby).lines_of_code +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + rHTML = <<-RHTML + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + RHTML + assert_equal 0, CodeRay.scan(rHTML, :html).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :php).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :yaml).lines_of_code + assert_equal 4, CodeRay.scan(rHTML, :rhtml).lines_of_code + end + + def test_rubygems_not_loaded + assert_equal nil, defined? Gem + end if ENV['check_rubygems'] && RUBY_VERSION < '1.9' + + def test_list_of_encoders + assert_kind_of(Array, CodeRay::Encoders.list) + assert CodeRay::Encoders.list.include?('count') + end + + def test_list_of_scanners + assert_kind_of(Array, CodeRay::Scanners.list) + assert CodeRay::Scanners.list.include?('plaintext') + end + + def test_scan_a_frozen_string + CodeRay.scan RUBY_VERSION, :ruby + end + +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/basic.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/basic.rbc Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,2022 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +263 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +4 +7 +5 +64 +49 +6 +2 +15 +65 +7 +7 +7 +8 +64 +7 +9 +35 +2 +7 +10 +64 +7 +11 +35 +2 +7 +12 +7 +13 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +16 +64 +7 +17 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +18 +7 +13 +35 +2 +35 +7 +49 +6 +2 +15 +99 +7 +19 +7 +20 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +21 +7 +22 +64 +7 +23 +64 +81 +24 +49 +6 +2 +15 +99 +7 +25 +7 +26 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +27 +7 +28 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +29 +7 +30 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +31 +7 +32 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +33 +7 +34 +65 +67 +49 +2 +0 +49 +3 +4 +15 +45 +35 +36 +7 +37 +64 +49 +38 +1 +13 +9 +202 +15 +45 +39 +40 +7 +41 +64 +84 +42 +9 +219 +99 +7 +43 +7 +44 +65 +67 +49 +2 +0 +49 +3 +4 +8 +220 +1 +15 +99 +7 +45 +7 +46 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +47 +7 +48 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +49 +7 +50 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +51 +x +12 +test_version +M +1 +n +n +x +12 +test_version +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +12 +test_version +i +29 +5 +7 +0 +13 +70 +9 +19 +15 +44 +43 +1 +7 +2 +78 +49 +3 +2 +6 +0 +45 +4 +5 +43 +6 +47 +49 +7 +2 +11 +I +5 +I +0 +I +0 +I +0 +I +-2 +p +8 +n +x +6 +Regexp +s +14 +\A\d\.\d\.\d\z +x +3 +new +x +7 +CodeRay +n +x +7 +VERSION +x +12 +assert_match +p +5 +I +0 +I +7 +I +0 +I +8 +I +1d +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +6 +I +0 +I +7 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +RUBY_TEST_CODE +s +20 +puts "Hello, World!" +x +9 +const_set +x +16 +RUBY_TEST_TOKENS +s +4 +puts +x +5 +ident +s +1 + +x +5 +space +x +4 +open +x +6 +string +s +1 +" +x +9 +delimiter +s +13 +Hello, World! +x +7 +content +x +5 +close +x +16 +test_simple_scan +M +1 +n +n +x +16 +test_simple_scan +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +16 +test_simple_scan +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +16 +RUBY_TEST_TOKENS +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +6 +to_ary +x +12 +assert_equal +p +5 +I +0 +I +18 +I +0 +I +19 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +17 +I +0 +I +18 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +14 +RUBY_TEST_HTML +s +51 +puts " +s +73 +Hello, World!" +x +1 ++ +x +21 +test_simple_highlight +M +1 +n +n +x +21 +test_simple_highlight +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +21 +test_simple_highlight +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +14 +RUBY_TEST_HTML +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +4 +html +x +12 +assert_equal +p +5 +I +0 +I +20 +I +0 +I +21 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +1f +I +0 +I +20 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +8 +test_duo +M +1 +n +n +x +8 +test_duo +i +66 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +49 +8 +1 +47 +49 +9 +2 +15 +5 +45 +0 +10 +45 +2 +11 +43 +4 +44 +43 +12 +79 +49 +13 +1 +13 +7 +5 +7 +5 +49 +14 +2 +15 +49 +6 +1 +45 +0 +15 +49 +8 +1 +47 +49 +9 +2 +11 +I +7 +I +0 +I +0 +I +0 +n +p +16 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +9 +highlight +x +12 +assert_equal +n +n +x +4 +Hash +x +16 +new_from_literal +x +3 +[]= +n +p +15 +I +0 +I +25 +I +0 +I +26 +I +4 +I +27 +I +16 +I +26 +I +1b +I +28 +I +1f +I +29 +I +3d +I +28 +I +42 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +15 +test_duo_stream +M +1 +n +n +x +15 +test_duo_stream +i +42 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +44 +43 +8 +79 +49 +9 +1 +13 +7 +10 +2 +49 +11 +2 +15 +49 +12 +2 +47 +49 +13 +2 +11 +I +8 +I +0 +I +0 +I +0 +n +p +14 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +4 +Hash +x +16 +new_from_literal +x +6 +stream +x +3 +[]= +x +9 +highlight +x +12 +assert_equal +p +9 +I +0 +I +2c +I +0 +I +2d +I +4 +I +2e +I +25 +I +2d +I +2a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +19 +test_comment_filter +M +1 +n +n +x +19 +test_comment_filter +i +26 +5 +7 +0 +64 +45 +1 +2 +7 +3 +64 +7 +4 +49 +5 +2 +49 +6 +0 +49 +7 +0 +47 +49 +8 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +9 +s +39 +#!/usr/bin/env ruby + +code + +more code + +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +14 +comment_filter +x +4 +text +x +12 +assert_equal +p +5 +I +0 +I +31 +I +0 +I +32 +I +1a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +18 +test_lines_of_code +M +1 +n +n +x +18 +test_lines_of_code +i +108 +5 +80 +45 +0 +1 +7 +2 +64 +7 +3 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +7 +7 +64 +19 +0 +15 +5 +78 +45 +0 +8 +20 +0 +7 +9 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +10 +20 +0 +7 +11 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +12 +20 +0 +7 +13 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +4 +4 +45 +0 +14 +20 +0 +7 +15 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +11 +I +6 +I +1 +I +0 +I +0 +n +p +16 +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +13 +lines_of_code +x +12 +assert_equal +s +514 + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + +n +x +4 +html +n +x +3 +php +n +x +4 +yaml +n +x +5 +rhtml +p +15 +I +0 +I +43 +I +0 +I +44 +I +15 +I +4d +I +1b +I +62 +I +2f +I +63 +I +43 +I +64 +I +57 +I +65 +I +6c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +1 +x +5 +rHTML +x +3 +ENV +n +s +14 +check_rubygems +x +2 +[] +x +12 +RUBY_VERSION +n +s +3 +1.9 +x +1 +< +x +24 +test_rubygems_not_loaded +M +1 +n +n +x +24 +test_rubygems_not_loaded +i +34 +5 +1 +26 +93 +0 +15 +29 +17 +0 +7 +0 +98 +1 +1 +30 +8 +23 +25 +92 +0 +27 +8 +28 +15 +7 +2 +8 +29 +1 +47 +49 +3 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +4 +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +x +12 +assert_equal +p +5 +I +0 +I +68 +I +0 +I +69 +I +22 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_encoders +M +1 +n +n +x +21 +test_list_of_encoders +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Encoders +x +4 +list +x +14 +assert_kind_of +n +s +5 +count +x +8 +include? +x +6 +assert +p +7 +I +0 +I +6c +I +0 +I +6d +I +11 +I +6e +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_scanners +M +1 +n +n +x +21 +test_list_of_scanners +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Scanners +x +4 +list +x +14 +assert_kind_of +n +s +9 +plaintext +x +8 +include? +x +6 +assert +p +7 +I +0 +I +71 +I +0 +I +72 +I +11 +I +73 +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +25 +test_scan_a_frozen_string +M +1 +n +n +x +25 +test_scan_a_frozen_string +i +12 +45 +0 +1 +45 +2 +3 +7 +4 +49 +5 +2 +11 +I +3 +I +0 +I +0 +I +0 +n +p +6 +x +7 +CodeRay +n +x +12 +RUBY_VERSION +n +x +4 +ruby +x +4 +scan +p +5 +I +0 +I +76 +I +0 +I +77 +I +c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +p +51 +I +2 +I +6 +I +10 +I +c +I +1a +I +e +I +1d +I +f +I +24 +I +10 +I +2b +I +11 +I +31 +I +12 +I +38 +I +13 +I +3f +I +14 +I +46 +I +15 +I +52 +I +17 +I +60 +I +1d +I +63 +I +1d +I +66 +I +1e +I +6f +I +1f +I +7d +I +25 +I +8b +I +2c +I +99 +I +31 +I +a7 +I +43 +I +b5 +I +6a +I +cc +I +68 +I +db +I +6a +I +dd +I +6c +I +eb +I +71 +I +f9 +I +76 +I +107 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,77 @@ +require 'test/unit' +$:.unshift 'lib' +require 'coderay' + +begin + require 'rubygems' unless defined? Gem + gem 'RedCloth', '>= 4.0.3' rescue nil + require 'redcloth' +rescue LoadError + warn 'RedCloth not found - skipping for_redcloth tests.' +end + +class BasicTest < Test::Unit::TestCase + + def test_for_redcloth + require 'coderay/for_redcloth' + assert_equal "

    puts "Hello, World!"

    ", + RedCloth.new('@[ruby]puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    puts "Hello, World!"
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. puts "Hello, World!"').to_html + end + + def test_for_redcloth_no_lang + require 'coderay/for_redcloth' + assert_equal "

    puts \"Hello, World!\"

    ", + RedCloth.new('@puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc. puts "Hello, World!"').to_html + end + + def test_for_redcloth_style + require 'coderay/for_redcloth' + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc{color: red}. puts "Hello, World!"').to_html + end + + def test_for_redcloth_escapes + require 'coderay/for_redcloth' + assert_equal '

    >

    ', + RedCloth.new('@[ruby]>@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    &
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. &').to_html + end + + def test_for_redcloth_escapes2 + require 'coderay/for_redcloth' + assert_equal "

    #include <test.h>

    ", + RedCloth.new('@[c]#include @').to_html + end + + # See http://jgarber.lighthouseapp.com/projects/13054/tickets/124-code-markup-does-not-allow-brackets. + def test_for_redcloth_false_positive + require 'coderay/for_redcloth' + assert_equal '

    [project]_dff.skjd

    ', + RedCloth.new('@[project]_dff.skjd@').to_html + # false positive, but expected behavior / known issue + assert_equal "

    _dff.skjd

    ", + RedCloth.new('@[ruby]_dff.skjd@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    [project]_dff.skjd
    + BLOCKCODE + RedCloth.new('bc. [project]_dff.skjd').to_html + end + +end if defined? RedCloth \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rbc Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,1708 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +249 +5 +7 +0 +64 +47 +49 +1 +1 +15 +99 +43 +2 +7 +3 +49 +4 +1 +7 +5 +64 +49 +6 +1 +15 +5 +7 +7 +64 +47 +49 +1 +1 +15 +26 +93 +0 +15 +29 +144 +0 +26 +93 +1 +15 +29 +55 +0 +7 +8 +98 +9 +1 +30 +8 +61 +25 +92 +1 +27 +8 +66 +15 +7 +10 +8 +67 +1 +9 +72 +1 +8 +80 +5 +7 +11 +64 +47 +49 +1 +1 +15 +26 +93 +2 +15 +29 +102 +0 +5 +7 +12 +64 +7 +13 +64 +47 +49 +14 +2 +30 +8 +129 +26 +93 +3 +15 +24 +13 +45 +15 +16 +12 +49 +17 +1 +10 +119 +8 +124 +15 +1 +25 +8 +129 +15 +92 +3 +27 +34 +92 +2 +27 +15 +5 +7 +18 +64 +47 +49 +1 +1 +30 +8 +178 +26 +93 +4 +15 +24 +13 +45 +19 +20 +12 +49 +17 +1 +10 +161 +8 +173 +15 +5 +7 +21 +64 +47 +49 +22 +1 +25 +8 +178 +15 +92 +4 +27 +34 +92 +0 +27 +15 +26 +93 +5 +15 +29 +197 +0 +7 +23 +98 +9 +1 +30 +8 +203 +25 +92 +5 +27 +8 +208 +15 +7 +10 +8 +209 +1 +9 +245 +99 +7 +24 +45 +25 +26 +43 +27 +43 +28 +65 +49 +29 +3 +13 +99 +12 +7 +30 +12 +7 +31 +12 +65 +12 +49 +32 +4 +15 +49 +30 +0 +8 +246 +1 +15 +2 +11 +I +c +I +0 +I +0 +I +0 +n +p +33 +s +9 +test/unit +x +7 +require +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +s +8 +rubygems +s +8 +RedCloth +s +8 +>= 4.0.3 +x +3 +gem +x +13 +StandardError +n +x +3 +=== +s +8 +redcloth +x +9 +LoadError +n +s +49 +RedCloth not found - skipping for_redcloth tests. +x +4 +warn +x +8 +RedCloth +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +86 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +4 +7 +5 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +6 +7 +7 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +8 +7 +9 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +10 +7 +11 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +12 +7 +13 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +14 +x +17 +test_for_redcloth +M +1 +n +n +x +17 +test_for_redcloth +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +221 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +28 +@[ruby]puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +252 +
    +
    puts "Hello, World!"
    +
    + +x +5 +chomp +n +s +30 +bc[ruby]. puts "Hello, World!" +p +17 +I +0 +I +f +I +0 +I +10 +I +9 +I +11 +I +d +I +12 +I +2e +I +11 +I +33 +I +13 +I +3a +I +18 +I +5b +I +13 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +25 +test_for_redcloth_no_lang +M +1 +n +n +x +25 +test_for_redcloth_no_lang +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +40 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +45 +
    puts "Hello, World!"
    + +x +5 +chomp +n +s +24 +bc. puts "Hello, World!" +p +17 +I +0 +I +1b +I +0 +I +1c +I +9 +I +1d +I +d +I +1e +I +2e +I +1d +I +33 +I +1f +I +3a +I +22 +I +5b +I +1f +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +23 +test_for_redcloth_style +M +1 +n +n +x +23 +test_for_redcloth_style +i +54 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +49 +3 +0 +45 +4 +5 +13 +71 +6 +47 +9 +40 +47 +49 +7 +0 +13 +7 +8 +64 +47 +49 +9 +1 +15 +8 +46 +7 +8 +64 +49 +6 +1 +49 +10 +0 +47 +49 +11 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +12 +s +20 +coderay/for_redcloth +x +7 +require +s +85 +
    puts "Hello, World!"
    + +x +5 +chomp +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +36 +bc{color: red}. puts "Hello, World!" +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +25 +I +0 +I +26 +I +9 +I +27 +I +10 +I +2a +I +31 +I +27 +I +36 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +25 +test_for_redcloth_escapes +M +1 +n +n +x +25 +test_for_redcloth_escapes +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +52 +

    >

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +9 +@[ruby]>@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +84 +
    +
    &
    +
    + +x +5 +chomp +n +s +11 +bc[ruby]. & +p +17 +I +0 +I +2d +I +0 +I +2e +I +9 +I +2f +I +d +I +30 +I +2e +I +2f +I +33 +I +31 +I +3a +I +36 +I +5b +I +31 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +26 +test_for_redcloth_escapes2 +M +1 +n +n +x +26 +test_for_redcloth_escapes2 +i +51 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +11 +s +20 +coderay/for_redcloth +x +7 +require +s +149 +

    #include <test.h>

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@[c]#include @ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +39 +I +0 +I +3a +I +9 +I +3b +I +d +I +3c +I +2e +I +3b +I +33 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +32 +test_for_redcloth_false_positive +M +1 +n +n +x +32 +test_for_redcloth_false_positive +i +138 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +45 +3 +12 +13 +71 +5 +47 +9 +79 +47 +49 +6 +0 +13 +7 +13 +64 +47 +49 +8 +1 +15 +8 +85 +7 +13 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +14 +64 +49 +15 +0 +45 +3 +16 +13 +71 +5 +47 +9 +124 +47 +49 +6 +0 +13 +7 +17 +64 +47 +49 +8 +1 +15 +8 +130 +7 +17 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +18 +s +20 +coderay/for_redcloth +x +7 +require +s +38 +

    [project]_dff.skjd

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +20 +@[project]_dff.skjd@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +57 +

    _dff.skjd

    +n +s +17 +@[ruby]_dff.skjd@ +s +43 +
    [project]_dff.skjd
    + +x +5 +chomp +n +s +22 +bc. [project]_dff.skjd +p +23 +I +0 +I +40 +I +0 +I +41 +I +9 +I +42 +I +d +I +43 +I +2e +I +42 +I +33 +I +45 +I +37 +I +46 +I +58 +I +45 +I +5d +I +47 +I +64 +I +4a +I +85 +I +47 +I +8a +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +p +13 +I +2 +I +f +I +10 +I +1b +I +1e +I +25 +I +2c +I +2d +I +3a +I +39 +I +48 +I +40 +I +56 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +13 +attach_method +p +23 +I +0 +I +1 +I +9 +I +2 +I +18 +I +3 +I +21 +I +6 +I +51 +I +7 +I +85 +I +8 +I +95 +I +9 +I +a2 +I +a +I +b6 +I +4d +I +d3 +I +d +I +f5 +I +4d +I +f9 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,11 @@ +require 'test/unit' +require 'coderay' + +class PluginScannerTest < Test::Unit::TestCase + + def test_load + require File.join(File.dirname(__FILE__), 'vhdl') + assert_equal 'VHDL', CodeRay.scanner(:vhdl).class.name + end + +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rbc Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,317 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +17 +PluginScannerTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +17 +PluginScannerTest +i +16 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +4 +x +9 +test_load +M +1 +n +n +x +9 +test_load +i +48 +5 +45 +0 +1 +45 +0 +2 +65 +49 +3 +0 +49 +4 +1 +7 +5 +64 +49 +6 +2 +47 +49 +7 +1 +15 +5 +7 +8 +64 +45 +9 +10 +7 +11 +49 +12 +1 +49 +13 +0 +49 +14 +0 +47 +49 +15 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +16 +x +4 +File +n +n +x +11 +active_path +x +7 +dirname +s +4 +vhdl +x +4 +join +x +7 +require +s +4 +VHDL +x +7 +CodeRay +n +x +4 +vhdl +x +7 +scanner +x +5 +class +x +4 +name +x +12 +assert_equal +p +7 +I +0 +I +6 +I +0 +I +7 +I +19 +I +8 +I +30 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +p +3 +I +2 +I +6 +I +10 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/suite.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/suite.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,12 @@ +require 'test/unit' + +MYDIR = File.dirname(__FILE__) + +$:.unshift 'lib' +require 'coderay' +puts "Running basic CodeRay #{CodeRay::VERSION} tests..." + +suite = %w(basic load_plugin_scanner word_list) +for test_case in suite + load File.join(MYDIR, test_case + '.rb') +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/suite.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/suite.rbc Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,322 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +95 +5 +7 +0 +64 +47 +49 +1 +1 +15 +65 +7 +2 +45 +3 +4 +65 +49 +5 +0 +49 +6 +1 +49 +7 +2 +15 +99 +43 +8 +7 +9 +49 +10 +1 +7 +11 +64 +49 +12 +1 +15 +5 +7 +13 +64 +47 +49 +1 +1 +15 +5 +7 +14 +45 +15 +16 +43 +17 +47 +49 +18 +0 +7 +19 +63 +3 +47 +49 +20 +1 +15 +7 +21 +64 +7 +22 +64 +7 +23 +64 +35 +3 +19 +0 +15 +20 +0 +56 +24 +50 +25 +0 +15 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +26 +s +9 +test/unit +x +7 +require +x +5 +MYDIR +x +4 +File +n +x +11 +active_path +x +7 +dirname +x +9 +const_set +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +s +22 +Running basic CodeRay +x +7 +CodeRay +n +x +7 +VERSION +x +4 +to_s +s +9 + tests... +x +4 +puts +s +5 +basic +s +19 +load_plugin_scanner +s +9 +word_list +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +28 +57 +22 +1 +1 +15 +5 +45 +0 +1 +45 +2 +3 +21 +1 +1 +7 +4 +64 +81 +5 +49 +6 +2 +47 +49 +7 +1 +11 +I +6 +I +0 +I +1 +I +1 +n +p +8 +x +4 +File +n +x +5 +MYDIR +n +s +3 +.rb +x +1 ++ +x +4 +join +x +4 +load +p +5 +I +0 +I +a +I +5 +I +b +I +1c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +0 +x +4 +each +p +15 +I +0 +I +1 +I +9 +I +3 +I +1a +I +5 +I +29 +I +6 +I +32 +I +7 +I +47 +I +9 +I +55 +I +a +I +5f +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +2 +x +5 +suite +x +9 +test_case diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/vhdl.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/vhdl.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,126 @@ +class VHDL < CodeRay::Scanners::Scanner + + register_for :vhdl + + RESERVED_WORDS = [ + 'access','after','alias','all','assert','architecture','begin', + 'block','body','buffer','bus','case','component','configuration','constant', + 'disconnect','downto','else','elsif','end','entity','exit','file','for', + 'function','generate','generic','group','guarded','if','impure','in', + 'inertial','inout','is','label','library','linkage','literal','loop', + 'map','new','next','null','of','on','open','others','out','package', + 'port','postponed','procedure','process','pure','range','record','register', + 'reject','report','return','select','severity','signal','shared','subtype', + 'then','to','transport','type','unaffected','units','until','use','variable', + 'wait','when','while','with','note','warning','error','failure','and', + 'or','xor','not','nor', + 'array' + ] + + PREDEFINED_TYPES = [ + 'bit','bit_vector','character','boolean','integer','real','time','string', + 'severity_level','positive','natural','signed','unsigned','line','text', + 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state', + 'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength', + 'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector' + ] + + PREDEFINED_CONSTANTS = [ + + ] + + IDENT_KIND = CodeRay::CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/-- .*/x) + kind = :comment + + elsif scan(/ [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) /x) + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match.downcase] + + elsif match = scan(/[a-z]?"/i) + tokens << [:open, :string] + state = :string + kind = :delimiter + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + kind = :char + + elsif scan(/(?:\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\\n"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + +end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/vhdl.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/vhdl.rbc Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,2334 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +35 +99 +7 +0 +45 +1 +2 +43 +3 +43 +4 +65 +49 +5 +3 +13 +99 +12 +7 +6 +12 +7 +7 +12 +65 +12 +49 +8 +4 +15 +49 +6 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +9 +x +4 +VHDL +x +7 +CodeRay +n +x +8 +Scanners +x +7 +Scanner +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +4 +VHDL +i +519 +5 +66 +5 +7 +0 +47 +49 +1 +1 +15 +65 +7 +2 +7 +3 +64 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +7 +12 +64 +7 +13 +64 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +19 +64 +7 +20 +64 +7 +21 +64 +7 +22 +64 +7 +23 +64 +7 +24 +64 +7 +25 +64 +7 +26 +64 +7 +27 +64 +7 +28 +64 +7 +29 +64 +7 +30 +64 +7 +31 +64 +7 +32 +64 +7 +33 +64 +7 +34 +64 +7 +35 +64 +7 +36 +64 +7 +37 +64 +7 +38 +64 +7 +39 +64 +7 +40 +64 +7 +41 +64 +7 +42 +64 +7 +43 +64 +7 +44 +64 +7 +45 +64 +7 +46 +64 +7 +47 +64 +7 +48 +64 +7 +49 +64 +7 +50 +64 +7 +51 +64 +7 +52 +64 +7 +53 +64 +7 +54 +64 +7 +55 +64 +7 +56 +64 +7 +57 +64 +7 +58 +64 +7 +59 +64 +7 +60 +64 +7 +61 +64 +7 +62 +64 +7 +63 +64 +7 +64 +64 +7 +65 +64 +7 +66 +64 +7 +67 +64 +7 +68 +64 +7 +69 +64 +7 +70 +64 +7 +71 +64 +7 +72 +64 +7 +73 +64 +7 +74 +64 +7 +75 +64 +7 +76 +64 +7 +77 +64 +7 +78 +64 +7 +79 +64 +7 +80 +64 +7 +81 +64 +7 +82 +64 +7 +83 +64 +7 +84 +64 +7 +85 +64 +7 +86 +64 +7 +87 +64 +7 +88 +64 +7 +89 +64 +7 +90 +64 +7 +91 +64 +35 +89 +49 +92 +2 +15 +65 +7 +93 +7 +94 +64 +7 +95 +64 +7 +96 +64 +7 +97 +64 +7 +98 +64 +7 +99 +64 +7 +100 +64 +7 +101 +64 +7 +102 +64 +7 +103 +64 +7 +104 +64 +7 +105 +64 +7 +106 +64 +7 +107 +64 +7 +108 +64 +7 +109 +64 +7 +110 +64 +7 +111 +64 +7 +112 +64 +7 +113 +64 +7 +114 +64 +7 +115 +64 +7 +116 +64 +7 +117 +64 +7 +118 +64 +7 +119 +64 +7 +120 +64 +7 +121 +64 +7 +122 +64 +7 +123 +64 +35 +30 +49 +92 +2 +15 +65 +7 +124 +35 +0 +49 +92 +2 +15 +65 +7 +125 +45 +126 +127 +43 +128 +13 +71 +129 +47 +9 +422 +47 +49 +130 +0 +13 +7 +131 +47 +49 +132 +1 +15 +8 +427 +7 +131 +49 +129 +1 +45 +2 +133 +7 +134 +49 +135 +2 +45 +93 +136 +7 +137 +49 +135 +2 +45 +124 +138 +7 +139 +49 +135 +2 +49 +92 +2 +15 +65 +7 +140 +7 +141 +13 +70 +9 +476 +15 +44 +43 +142 +7 +143 +80 +49 +129 +2 +6 +141 +49 +92 +2 +15 +65 +7 +144 +7 +145 +13 +70 +9 +501 +15 +44 +43 +142 +7 +146 +80 +49 +129 +2 +6 +145 +49 +92 +2 +15 +99 +7 +147 +7 +148 +65 +67 +49 +149 +0 +49 +150 +4 +11 +I +5b +I +0 +I +0 +I +0 +n +p +151 +x +4 +vhdl +x +12 +register_for +x +14 +RESERVED_WORDS +s +6 +access +s +5 +after +s +5 +alias +s +3 +all +s +6 +assert +s +12 +architecture +s +5 +begin +s +5 +block +s +4 +body +s +6 +buffer +s +3 +bus +s +4 +case +s +9 +component +s +13 +configuration +s +8 +constant +s +10 +disconnect +s +6 +downto +s +4 +else +s +5 +elsif +s +3 +end +s +6 +entity +s +4 +exit +s +4 +file +s +3 +for +s +8 +function +s +8 +generate +s +7 +generic +s +5 +group +s +7 +guarded +s +2 +if +s +6 +impure +s +2 +in +s +8 +inertial +s +5 +inout +s +2 +is +s +5 +label +s +7 +library +s +7 +linkage +s +7 +literal +s +4 +loop +s +3 +map +s +3 +new +s +4 +next +s +4 +null +s +2 +of +s +2 +on +s +4 +open +s +6 +others +s +3 +out +s +7 +package +s +4 +port +s +9 +postponed +s +9 +procedure +s +7 +process +s +4 +pure +s +5 +range +s +6 +record +s +8 +register +s +6 +reject +s +6 +report +s +6 +return +s +6 +select +s +8 +severity +s +6 +signal +s +6 +shared +s +7 +subtype +s +4 +then +s +2 +to +s +9 +transport +s +4 +type +s +10 +unaffected +s +5 +units +s +5 +until +s +3 +use +s +8 +variable +s +4 +wait +s +4 +when +s +5 +while +s +4 +with +s +4 +note +s +7 +warning +s +5 +error +s +7 +failure +s +3 +and +s +2 +or +s +3 +xor +s +3 +not +s +3 +nor +s +5 +array +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +bit +s +10 +bit_vector +s +9 +character +s +7 +boolean +s +7 +integer +s +4 +real +s +4 +time +s +6 +string +s +14 +severity_level +s +8 +positive +s +7 +natural +s +6 +signed +s +8 +unsigned +s +4 +line +s +4 +text +s +9 +std_logic +s +16 +std_logic_vector +s +10 +std_ulogic +s +17 +std_ulogic_vector +s +10 +qsim_state +s +17 +qsim_state_vector +s +12 +qsim_12state +s +19 +qsim_12state_vector +s +13 +qsim_strength +s +7 +mux_bit +s +10 +mux_vector +s +7 +reg_bit +s +10 +reg_vector +s +7 +wor_bit +s +10 +wor_vector +x +20 +PREDEFINED_CONSTANTS +x +10 +IDENT_KIND +x +7 +CodeRay +n +x +20 +CaseIgnoringWordList +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +6 +ESCAPE +n +x +6 +Regexp +s +49 + [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} +x +14 +UNICODE_ESCAPE +n +s +35 + u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} +x +11 +scan_tokens +M +1 +n +n +x +11 +scan_tokens +i +688 +7 +0 +19 +2 +15 +5 +47 +49 +1 +0 +10 +660 +1 +19 +3 +15 +1 +19 +4 +15 +20 +2 +13 +7 +0 +12 +49 +2 +1 +9 +331 +15 +5 +7 +3 +13 +70 +9 +51 +15 +44 +43 +4 +7 +5 +80 +49 +6 +2 +6 +3 +47 +49 +7 +1 +9 +63 +7 +8 +19 +3 +8 +329 +5 +7 +9 +13 +70 +9 +82 +15 +44 +43 +4 +7 +10 +80 +49 +6 +2 +6 +9 +47 +49 +7 +1 +9 +94 +7 +11 +19 +3 +8 +329 +5 +7 +12 +13 +70 +9 +113 +15 +44 +43 +4 +7 +13 +80 +49 +6 +2 +6 +12 +47 +49 +7 +1 +9 +125 +7 +14 +19 +3 +8 +329 +5 +7 +15 +13 +70 +9 +144 +15 +44 +43 +4 +7 +16 +80 +49 +6 +2 +6 +15 +47 +49 +7 +1 +19 +4 +9 +167 +45 +17 +18 +20 +4 +49 +19 +0 +49 +20 +1 +19 +3 +8 +329 +5 +7 +21 +13 +70 +9 +186 +15 +44 +43 +4 +7 +22 +79 +49 +6 +2 +6 +21 +47 +49 +7 +1 +19 +4 +9 +217 +20 +0 +7 +23 +7 +24 +35 +2 +49 +25 +1 +15 +7 +24 +19 +2 +15 +7 +26 +19 +3 +8 +329 +5 +7 +27 +13 +70 +9 +247 +15 +44 +43 +4 +7 +28 +45 +29 +30 +47 +49 +31 +0 +7 +32 +63 +3 +80 +49 +6 +2 +6 +27 +47 +49 +7 +1 +9 +259 +7 +33 +19 +3 +8 +329 +5 +7 +34 +13 +70 +9 +278 +15 +44 +43 +4 +7 +35 +78 +49 +6 +2 +6 +34 +47 +49 +7 +1 +9 +290 +7 +36 +19 +3 +8 +329 +5 +7 +37 +13 +70 +9 +309 +15 +44 +43 +4 +7 +38 +78 +49 +6 +2 +6 +37 +47 +49 +7 +1 +9 +321 +7 +39 +19 +3 +8 +329 +5 +48 +40 +15 +7 +41 +19 +3 +8 +564 +13 +7 +24 +12 +49 +2 +1 +9 +553 +15 +5 +7 +42 +13 +70 +9 +360 +15 +44 +43 +4 +7 +43 +78 +49 +6 +2 +6 +42 +47 +49 +7 +1 +9 +372 +7 +44 +19 +3 +8 +551 +5 +7 +45 +13 +70 +9 +391 +15 +44 +43 +4 +7 +46 +78 +49 +6 +2 +6 +45 +47 +49 +7 +1 +9 +432 +20 +0 +7 +46 +64 +7 +26 +35 +2 +49 +25 +1 +15 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +0 +19 +2 +15 +1 +8 +656 +8 +551 +5 +7 +48 +13 +70 +9 +472 +15 +44 +43 +4 +7 +49 +45 +29 +50 +47 +49 +31 +0 +7 +51 +45 +52 +53 +47 +49 +31 +0 +7 +54 +63 +5 +4 +6 +49 +6 +2 +6 +48 +47 +49 +7 +1 +9 +484 +7 +33 +19 +3 +8 +551 +5 +7 +55 +13 +70 +9 +503 +15 +44 +43 +4 +7 +56 +80 +49 +6 +2 +6 +55 +47 +49 +7 +1 +9 +532 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +41 +19 +3 +15 +7 +0 +19 +2 +8 +551 +5 +7 +57 +64 +5 +79 +47 +49 +58 +1 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +564 +15 +5 +7 +61 +64 +20 +0 +47 +49 +60 +2 +15 +20 +4 +13 +10 +576 +15 +5 +48 +62 +19 +4 +15 +99 +43 +63 +7 +64 +49 +20 +1 +13 +9 +597 +15 +20 +3 +10 +596 +2 +8 +597 +3 +9 +625 +5 +7 +65 +64 +20 +4 +20 +3 +35 +2 +5 +48 +66 +35 +2 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +626 +1 +15 +20 +4 +9 +634 +1 +8 +644 +5 +7 +67 +64 +20 +0 +47 +49 +60 +2 +15 +20 +0 +20 +4 +20 +3 +35 +2 +49 +25 +1 +15 +68 +8 +5 +1 +15 +20 +2 +7 +24 +83 +68 +9 +683 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +8 +684 +1 +15 +20 +0 +11 +I +c +I +5 +I +2 +I +2 +n +p +69 +x +7 +initial +x +4 +eos? +x +3 +=== +n +x +6 +Regexp +s +12 + \s+ | \\\n +x +3 +new +x +4 +scan +x +5 +space +n +s +5 +-- .* +x +7 +comment +n +s +42 + [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) +x +8 +operator +n +s +24 + [A-Za-z_][A-Za-z_0-9]* +x +10 +IDENT_KIND +n +x +8 +downcase +x +2 +[] +n +s +7 +[a-z]?" +x +4 +open +x +6 +string +x +2 +<< +x +9 +delimiter +n +s +24 + L?' (?: [^\'\n\\] | \\ +x +6 +ESCAPE +n +x +4 +to_s +s +7 + )? '? +x +4 +char +n +s +18 +(?:\d+)(?![.eEfF]) +x +7 +integer +n +s +59 +\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]? +x +5 +float +x +5 +getch +x +5 +error +n +s +9 +[^\\\n"]+ +x +7 +content +n +s +1 +" +x +5 +close +n +s +8 + \\ (?: +n +s +3 + | +x +14 +UNICODE_ESCAPE +n +s +3 + ) +n +s +8 + \\ | $ +s +36 +else case " reached; %p not handled. +x +4 +peek +x +1 +% +x +13 +raise_inspect +s +13 +Unknown state +x +7 +matched +x +7 +Globals +x +6 +$DEBUG +s +25 +Error token %p in line %d +x +4 +line +s +11 +Empty token +x +2 +== +p +111 +I +0 +I +28 +I +0 +I +2a +I +5 +I +2c +I +c +I +2e +I +10 +I +2f +I +14 +I +31 +I +17 +I +33 +I +20 +I +35 +I +39 +I +36 +I +3f +I +38 +I +58 +I +39 +I +5e +I +3b +I +77 +I +3c +I +7d +I +3e +I +98 +I +3f +I +a7 +I +41 +I +c2 +I +42 +I +ce +I +43 +I +d3 +I +44 +I +d9 +I +46 +I +fd +I +47 +I +103 +I +49 +I +11c +I +4a +I +122 +I +4c +I +13b +I +4d +I +141 +I +50 +I +145 +I +51 +I +14c +I +55 +I +155 +I +56 +I +16e +I +57 +I +174 +I +58 +I +18d +I +59 +I +19a +I +5a +I +1a6 +I +5b +I +1ab +I +5c +I +1b0 +I +5d +I +1de +I +5e +I +1e4 +I +5f +I +1fd +I +60 +I +209 +I +61 +I +20e +I +62 +I +214 +I +64 +I +22a +I +68 +I +235 +I +6c +I +241 +I +6d +I +257 +I +6f +I +258 +I +6e +I +25b +I +6f +I +271 +I +6d +I +273 +I +71 +I +285 +I +73 +I +296 +I +77 +I +29e +I +78 +I +2ab +I +77 +I +2ad +I +7b +I +2b0 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +5 +x +6 +tokens +x +7 +options +x +5 +state +x +4 +kind +x +5 +match +x +17 +method_visibility +x +15 +add_defn_method +p +65 +I +2 +I +3 +I +a +I +5 +I +d +I +6 +I +22 +I +7 +I +3a +I +8 +I +55 +I +9 +I +6d +I +a +I +85 +I +b +I +a3 +I +c +I +bb +I +d +I +d3 +I +e +I +ee +I +f +I +109 +I +10 +I +115 +I +11 +I +11e +I +14 +I +121 +I +15 +I +139 +I +16 +I +14e +I +17 +I +15d +I +18 +I +169 +I +19 +I +181 +I +1c +I +184 +I +1e +I +18a +I +20 +I +1ab +I +21 +I +1b0 +I +20 +I +1b3 +I +22 +I +1b8 +I +20 +I +1bb +I +23 +I +1c0 +I +20 +I +1c7 +I +25 +I +1e0 +I +26 +I +1f9 +I +28 +I +207 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 +x +13 +attach_method +p +3 +I +0 +I +1 +I +23 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/word_list.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/word_list.rb Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,79 @@ +require 'test/unit' +require 'coderay' + +class WordListTest < Test::Unit::TestCase + + include CodeRay + + # define word arrays + RESERVED_WORDS = %w[ + asm break case continue default do else + ... + ] + + PREDEFINED_TYPES = %w[ + int long short char void + ... + ] + + PREDEFINED_CONSTANTS = %w[ + EOF NULL ... + ] + + # make a WordList + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + def test_word_list_example + assert_equal :pre_type, IDENT_KIND['void'] + # assert_equal :pre_constant, IDENT_KIND['...'] # not specified + end + + def test_word_list + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_word_list_cached + list = WordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_case_ignoring_word_list + list = CaseIgnoringWordList.new(:ident).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_case_ignoring_word_list_cached + list = CaseIgnoringWordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident, true).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_dup + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + list2 = list.dup + list2.add(%w[foobar], :keyword) + assert_equal :keyword, list2['foobar'] + assert_equal :reserved, list['foobar'] + end + +end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/coderay-0.9.7/test/functional/word_list.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/word_list.rbc Thu Mar 03 12:11:53 2011 +0000 @@ -0,0 +1,1763 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +12 +WordListTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +12 +WordListTest +i +232 +5 +66 +5 +45 +0 +1 +47 +49 +2 +1 +15 +65 +7 +3 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +35 +8 +49 +12 +2 +15 +65 +7 +13 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +11 +64 +35 +6 +49 +12 +2 +15 +65 +7 +19 +7 +20 +64 +7 +21 +64 +7 +11 +64 +35 +3 +49 +12 +2 +15 +65 +7 +22 +45 +23 +24 +13 +71 +25 +47 +9 +115 +47 +49 +26 +0 +13 +7 +27 +47 +49 +28 +1 +15 +8 +120 +7 +27 +49 +25 +1 +45 +3 +29 +7 +30 +49 +31 +2 +45 +13 +32 +7 +33 +49 +31 +2 +45 +19 +34 +7 +35 +49 +31 +2 +49 +12 +2 +15 +99 +7 +36 +7 +37 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +40 +7 +41 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +42 +7 +43 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +44 +7 +45 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +46 +7 +47 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +48 +7 +49 +65 +67 +49 +38 +0 +49 +39 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +50 +x +7 +CodeRay +n +x +7 +include +x +14 +RESERVED_WORDS +s +3 +asm +s +5 +break +s +4 +case +s +8 +continue +s +7 +default +s +2 +do +s +4 +else +s +3 +... +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +int +s +4 +long +s +5 +short +s +4 +char +s +4 +void +x +20 +PREDEFINED_CONSTANTS +s +3 +EOF +s +4 +NULL +x +10 +IDENT_KIND +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +22 +test_word_list_example +M +1 +n +n +x +22 +test_word_list_example +i +17 +5 +7 +0 +45 +1 +2 +7 +3 +64 +49 +4 +1 +47 +49 +5 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +6 +x +8 +pre_type +x +10 +IDENT_KIND +n +s +4 +void +x +2 +[] +x +12 +assert_equal +p +5 +I +0 +I +1d +I +0 +I +1e +I +11 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +test_word_list +M +1 +n +n +x +14 +test_word_list +i +73 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +22 +I +0 +I +23 +I +29 +I +24 +I +39 +I +25 +I +49 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +21 +test_word_list_cached +M +1 +n +n +x +21 +test_word_list_cached +i +75 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +28 +I +0 +I +29 +I +2b +I +2a +I +3b +I +2b +I +4b +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +28 +test_case_ignoring_word_list +M +1 +n +n +x +28 +test_case_ignoring_word_list +i +178 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +112 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +117 +7 +4 +49 +2 +1 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +2e +I +0 +I +2f +I +29 +I +30 +I +39 +I +31 +I +49 +I +32 +I +59 +I +34 +I +82 +I +35 +I +92 +I +36 +I +a2 +I +37 +I +b2 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +35 +test_case_ignoring_word_list_cached +M +1 +n +n +x +35 +test_case_ignoring_word_list_cached +i +182 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +115 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +121 +7 +4 +2 +49 +2 +2 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +3a +I +0 +I +3b +I +2b +I +3c +I +3b +I +3d +I +4b +I +3e +I +5b +I +40 +I +86 +I +41 +I +96 +I +42 +I +a6 +I +43 +I +b6 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +8 +test_dup +M +1 +n +n +x +8 +test_dup +i +110 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +20 +0 +49 +11 +0 +19 +1 +15 +20 +1 +7 +6 +64 +35 +1 +7 +12 +49 +8 +2 +15 +5 +7 +12 +20 +1 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +13 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +x +3 +dup +x +7 +keyword +p +15 +I +0 +I +46 +I +0 +I +47 +I +29 +I +48 +I +39 +I +49 +I +41 +I +4a +I +4e +I +4b +I +5e +I +4c +I +6e +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +2 +x +4 +list +x +5 +list2 +p +45 +I +2 +I +6 +I +b +I +9 +I +e +I +a +I +23 +I +b +I +2c +I +e +I +2f +I +f +I +3e +I +10 +I +47 +I +13 +I +4a +I +14 +I +59 +I +18 +I +78 +I +19 +I +7d +I +18 +I +80 +I +1a +I +85 +I +18 +I +88 +I +1b +I +8d +I +18 +I +94 +I +1d +I +a2 +I +22 +I +b0 +I +28 +I +be +I +2e +I +cc +I +3a +I +da +I +46 +I +e8 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/.svn/all-wcprops --- a/vendor/gems/rubytree-0.5.2/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2 -END -History.txt -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/History.txt -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/Rakefile -END -setup.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/setup.rb -END -Manifest.txt -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/Manifest.txt -END -TODO -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/TODO -END -ChangeLog -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/ChangeLog -END -COPYING -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/COPYING -END -README -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/README -END -.specification -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/.specification -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/.svn/entries --- a/vendor/gems/rubytree-0.5.2/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2 http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.523822Z +2011-03-03T11:05:13.000000Z 48b46ff6764d5b76e1ad138669923aff 2009-11-25T05:36:44.792571Z 3090 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.523822Z +2011-03-03T11:05:13.000000Z 954df52967073c3833d9c565bb4b1ea8 2009-11-25T05:36:44.792571Z 3090 @@ -103,7 +103,7 @@ -2010-09-23T14:37:45.527765Z +2011-03-03T11:05:13.000000Z f3e96d4b9eeb3d0c4d841c7c7ea6259c 2009-11-25T05:36:44.792571Z 3090 @@ -137,7 +137,7 @@ -2010-09-23T14:37:45.523822Z +2011-03-03T11:05:13.000000Z 7a9a6ee34490c5d9c4148c7cf8f85034 2009-11-25T05:36:44.792571Z 3090 @@ -171,7 +171,7 @@ -2010-09-23T14:37:45.523822Z +2011-03-03T11:05:13.000000Z 82301a43d2504d992ba1cfd7839b2d7e 2009-11-25T05:36:44.792571Z 3090 @@ -208,7 +208,7 @@ -2010-09-23T14:37:45.523822Z +2011-03-03T11:05:13.000000Z b15b8164d281daa7c7028cdda9635950 2009-11-25T05:36:44.792571Z 3090 @@ -242,7 +242,7 @@ -2010-09-23T14:37:45.523822Z +2011-03-03T11:05:13.000000Z 25d0fdd6b9633f784544a5c000dc1351 2009-11-25T05:36:44.792571Z 3090 @@ -276,7 +276,7 @@ -2010-09-23T14:37:45.523822Z +2011-03-03T11:05:13.000000Z 13d490389c788748b3931b9e09b2b4d4 2009-11-25T05:36:44.792571Z 3090 @@ -310,7 +310,7 @@ -2010-09-23T14:37:45.519811Z +2011-03-03T11:05:13.000000Z 5906fb8bdb4197fe19171f795952ed9d 2009-11-25T05:36:44.792571Z 3090 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/lib/.svn/all-wcprops --- a/vendor/gems/rubytree-0.5.2/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 55 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/lib -END -tree.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/lib/tree.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/lib/.svn/entries --- a/vendor/gems/rubytree-0.5.2/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.527765Z +2011-03-03T11:05:13.000000Z 46e46766767dc3a96b3019d385a5af83 2009-11-25T05:36:44.792571Z 3090 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/lib/tree/.svn/all-wcprops --- a/vendor/gems/rubytree-0.5.2/lib/tree/.svn/all-wcprops Tue Feb 22 16:48:15 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 60 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/lib/tree -END -binarytree.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/lib/tree/binarytree.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries --- a/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib/tree http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.527765Z +2011-03-03T11:05:13.000000Z 54320f0ffbb41fa9d99ab2d617636ea1 2009-11-25T05:36:44.792571Z 3090 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/test/.svn/all-wcprops --- a/vendor/gems/rubytree-0.5.2/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/test -END -test_tree.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/test/test_tree.rb -END -test_binarytree.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/3090/trunk/vendor/gems/rubytree-0.5.2/test/test_binarytree.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/gems/rubytree-0.5.2/test/.svn/entries --- a/vendor/gems/rubytree-0.5.2/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.531765Z +2011-03-03T11:05:13.000000Z bd5257614b958bab00916feffc4fa9ae 2009-11-25T05:36:44.792571Z 3090 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.531765Z +2011-03-03T11:05:13.000000Z b9b4a1d43e859491e80fb1e2c7499d20 2009-11-25T05:36:44.792571Z 3090 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/.svn/all-wcprops --- a/vendor/plugins/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4406/trunk/vendor/plugins +/svn/!svn/ver/4891/trunk/vendor/plugins END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/.svn/entries --- a/vendor/plugins/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins http://redmine.rubyforge.org/svn -2010-11-14T16:24:21.989522Z -4406 +2011-02-20T14:26:23.957459Z +4891 jplang @@ -41,9 +41,6 @@ engines dir -coderay-0.9.2 -dir - classic_pagination dir diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_activity_provider/.svn/all-wcprops --- a/vendor/plugins/acts_as_activity_provider/.svn/all-wcprops Tue Feb 22 16:48:15 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 65 -/svn/!svn/ver/2114/trunk/vendor/plugins/acts_as_activity_provider -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/1701/trunk/vendor/plugins/acts_as_activity_provider/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_activity_provider/.svn/entries --- a/vendor/plugins/acts_as_activity_provider/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_activity_provider/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.531765Z +2011-03-03T11:05:12.000000Z 779d73c171dc111df084a0798cca73e2 2008-07-27T17:54:09.197937Z 1701 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_activity_provider/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_activity_provider/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 69 -/svn/!svn/ver/2114/trunk/vendor/plugins/acts_as_activity_provider/lib -END -acts_as_activity_provider.rb -K 25 -svn:wc:ra_dav:version-url -V 98 -/svn/!svn/ver/2114/trunk/vendor/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_activity_provider/lib/.svn/entries --- a/vendor/plugins/acts_as_activity_provider/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_activity_provider/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.535765Z +2011-03-03T11:05:12.000000Z 21fbeb28c4ce556d2534306b96be9497 2008-12-08T18:20:26.452857Z 2114 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_attachable/.svn/all-wcprops --- a/vendor/plugins/acts_as_attachable/.svn/all-wcprops Tue Feb 22 16:48:15 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 58 -/svn/!svn/ver/3528/trunk/vendor/plugins/acts_as_attachable -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/2116/trunk/vendor/plugins/acts_as_attachable/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_attachable/.svn/entries --- a/vendor/plugins/acts_as_attachable/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_attachable/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.535765Z +2011-03-03T11:05:12.000000Z b215588c95e69b4bb8f91ad91606bfbe 2008-12-09T16:54:46.963649Z 2116 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_attachable/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_attachable/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 62 -/svn/!svn/ver/3528/trunk/vendor/plugins/acts_as_attachable/lib -END -acts_as_attachable.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3528/trunk/vendor/plugins/acts_as_attachable/lib/acts_as_attachable.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_attachable/lib/.svn/entries --- a/vendor/plugins/acts_as_attachable/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_attachable/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.535765Z +2011-03-03T11:05:12.000000Z 982227c44f1fe848c8aeed862ea027f3 2010-03-03T17:05:00.967826Z 3528 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_customizable/.svn/all-wcprops --- a/vendor/plugins/acts_as_customizable/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/4382/trunk/vendor/plugins/acts_as_customizable +/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable END init.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_customizable/.svn/entries --- a/vendor/plugins/acts_as_customizable/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable http://redmine.rubyforge.org/svn -2010-11-07T14:15:01.891476Z -4382 +2011-02-20T14:26:23.957459Z +4891 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.539808Z +2011-03-03T11:05:12.000000Z 0d1f178b7636d6712b38304954530928 2008-06-27T20:13:56.888432Z 1592 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4382/trunk/vendor/plugins/acts_as_customizable/lib +/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable/lib END acts_as_customizable.rb K 25 svn:wc:ra_dav:version-url V 88 -/svn/!svn/ver/4382/trunk/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb +/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_customizable/lib/.svn/entries --- a/vendor/plugins/acts_as_customizable/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable/lib http://redmine.rubyforge.org/svn -2010-11-07T14:15:01.891476Z -4382 +2011-02-20T14:26:23.957459Z +4891 jplang @@ -32,10 +32,10 @@ -2010-11-19T13:04:50.920916Z -1b80419ad25063ffc8725be3174c8fb8 -2010-11-07T14:15:01.891476Z -4382 +2011-03-03T11:40:18.000000Z +2a7f0cd4a6b5d7f58a12567604697208 +2011-02-20T14:26:23.957459Z +4891 jplang has-props @@ -58,5 +58,5 @@ -3825 +4469 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base --- a/vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -50,12 +50,28 @@ :order => 'position') end + # Sets the values of the object's custom fields + # values is an array like [{'id' => 1, 'value' => 'foo'}, {'id' => 2, 'value' => 'bar'}] + def custom_fields=(values) + values_to_hash = values.inject({}) do |hash, v| + v = v.stringify_keys + if v['id'] && v.has_key?('value') + hash[v['id']] = v['value'] + end + hash + end + self.custom_field_values = values_to_hash + end + + # Sets the values of the object's custom fields + # values is a hash like {'1' => 'foo', 2 => 'bar'} def custom_field_values=(values) @custom_field_values_changed = true values = values.stringify_keys custom_field_values.each do |custom_value| custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s) end if values.is_a?(Hash) + self.custom_values = custom_field_values end def custom_field_values diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb --- a/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb Thu Mar 03 12:11:53 2011 +0000 @@ -50,12 +50,28 @@ :order => 'position') end + # Sets the values of the object's custom fields + # values is an array like [{'id' => 1, 'value' => 'foo'}, {'id' => 2, 'value' => 'bar'}] + def custom_fields=(values) + values_to_hash = values.inject({}) do |hash, v| + v = v.stringify_keys + if v['id'] && v.has_key?('value') + hash[v['id']] = v['value'] + end + hash + end + self.custom_field_values = values_to_hash + end + + # Sets the values of the object's custom fields + # values is a hash like {'1' => 'foo', 2 => 'bar'} def custom_field_values=(values) @custom_field_values_changed = true values = values.stringify_keys custom_field_values.each do |custom_value| custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s) end if values.is_a?(Hash) + self.custom_values = custom_field_values end def custom_field_values diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_event/.svn/all-wcprops --- a/vendor/plugins/acts_as_event/.svn/all-wcprops Tue Feb 22 16:48:15 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 53 -/svn/!svn/ver/3703/trunk/vendor/plugins/acts_as_event -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/774/trunk/vendor/plugins/acts_as_event/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_event/.svn/entries --- a/vendor/plugins/acts_as_event/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_event/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.539808Z +2011-03-03T11:05:13.000000Z 60df7ab698ddd0c3701bb0efbb8233cf 2007-08-29T16:52:35.680643Z 674 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_event/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_event/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 57 -/svn/!svn/ver/3703/trunk/vendor/plugins/acts_as_event/lib -END -acts_as_event.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/3703/trunk/vendor/plugins/acts_as_event/lib/acts_as_event.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_event/lib/.svn/entries --- a/vendor/plugins/acts_as_event/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_event/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.543762Z +2011-03-03T11:05:13.000000Z ca8e33777d59976db870f71defe5f66d 2010-04-30T10:45:21.145380Z 3703 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/.svn/all-wcprops --- a/vendor/plugins/acts_as_list/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/2526/trunk/vendor/plugins/acts_as_list -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_list/init.rb -END -README -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_list/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/.svn/entries --- a/vendor/plugins/acts_as_list/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_list/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.543762Z +2011-03-03T11:05:12.000000Z 0bdbdc825f80fda1a94852a82b68ffd4 2007-12-10T17:58:07.273873Z 975 @@ -72,7 +72,7 @@ -2010-09-23T14:37:45.543762Z +2011-03-03T11:05:12.000000Z 42212b5cb681c9888d56f9c0f36e1e02 2007-12-10T17:58:07.273873Z 975 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_list/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2526/trunk/vendor/plugins/acts_as_list/lib -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/lib/.svn/entries --- a/vendor/plugins/acts_as_list/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_list/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/lib/active_record/.svn/all-wcprops --- a/vendor/plugins/acts_as_list/lib/active_record/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/2526/trunk/vendor/plugins/acts_as_list/lib/active_record -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/lib/active_record/.svn/entries --- a/vendor/plugins/acts_as_list/lib/active_record/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_list/lib/active_record/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/lib/active_record/acts/.svn/all-wcprops --- a/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/all-wcprops Tue Feb 22 16:48:15 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 75 -/svn/!svn/ver/2526/trunk/vendor/plugins/acts_as_list/lib/active_record/acts -END -list.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2526/trunk/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries --- a/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record/acts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.547761Z +2011-03-03T11:05:12.000000Z a3ee41e8bed56868bc2e4ab2cb7df73a 2009-02-26T09:21:41.696815Z 2526 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/test/.svn/all-wcprops --- a/vendor/plugins/acts_as_list/test/.svn/all-wcprops Tue Feb 22 16:48:15 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 56 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_list/test -END -list_test.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_list/test/list_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_list/test/.svn/entries --- a/vendor/plugins/acts_as_list/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_list/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.551763Z +2011-03-03T11:05:12.000000Z 3d41debf5c631e88295d337507c3b5b6 2007-12-10T17:58:07.273873Z 975 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_searchable/.svn/all-wcprops --- a/vendor/plugins/acts_as_searchable/.svn/all-wcprops Tue Feb 22 16:48:15 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 58 -/svn/!svn/ver/3445/trunk/vendor/plugins/acts_as_searchable -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/774/trunk/vendor/plugins/acts_as_searchable/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_searchable/.svn/entries --- a/vendor/plugins/acts_as_searchable/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_searchable/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.551763Z +2011-03-03T11:05:12.000000Z 7512fe68c7dfbb57e956d22b9aa8f8ed 2007-09-27T17:28:22.154371Z 766 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_searchable/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_searchable/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 62 -/svn/!svn/ver/3445/trunk/vendor/plugins/acts_as_searchable/lib -END -acts_as_searchable.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3445/trunk/vendor/plugins/acts_as_searchable/lib/acts_as_searchable.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_searchable/lib/.svn/entries --- a/vendor/plugins/acts_as_searchable/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_searchable/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.551763Z +2011-03-03T11:05:12.000000Z f282f30a34a9560d7ef3d5883aba5fe9 2010-02-17T20:20:51.097274Z 3445 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/.svn/all-wcprops --- a/vendor/plugins/acts_as_tree/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/2676/trunk/vendor/plugins/acts_as_tree -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/Rakefile -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/init.rb -END -README -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/.svn/entries --- a/vendor/plugins/acts_as_tree/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_tree/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.555763Z +2011-03-03T11:05:12.000000Z 77667cb4c41516750075eefb98896a93 2007-12-10T17:58:07.273873Z 975 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.555763Z +2011-03-03T11:05:12.000000Z 581c104f87fe90cfe9a7d1d41d77c84f 2007-12-10T17:58:07.273873Z 975 @@ -106,7 +106,7 @@ -2010-09-23T14:37:45.555763Z +2011-03-03T11:05:12.000000Z 918c85e850eb84259c178529b9aafd62 2007-12-10T17:58:07.273873Z 975 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_tree/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2676/trunk/vendor/plugins/acts_as_tree/lib -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/lib/.svn/entries --- a/vendor/plugins/acts_as_tree/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_tree/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/lib/active_record/.svn/all-wcprops --- a/vendor/plugins/acts_as_tree/lib/active_record/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/2676/trunk/vendor/plugins/acts_as_tree/lib/active_record -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/lib/active_record/.svn/entries --- a/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/all-wcprops --- a/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/all-wcprops Tue Feb 22 16:48:15 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 75 -/svn/!svn/ver/2676/trunk/vendor/plugins/acts_as_tree/lib/active_record/acts -END -tree.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2676/trunk/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries --- a/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record/acts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.559786Z +2011-03-03T11:05:12.000000Z 544900d884182d6888334ce14323bef0 2009-04-21T12:19:56.547537Z 2676 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/test/.svn/all-wcprops --- a/vendor/plugins/acts_as_tree/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test -END -schema.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test/schema.rb -END -abstract_unit.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test/abstract_unit.rb -END -database.yml -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test/database.yml -END -acts_as_tree_test.rb -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/test/.svn/entries --- a/vendor/plugins/acts_as_tree/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_tree/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.563764Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.563764Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.563764Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -137,7 +137,7 @@ -2010-09-23T14:37:45.563764Z +2011-03-03T11:05:12.000000Z 7bd3d48984d0e563b9f5e20ca8fdff81 2007-12-10T17:58:07.273873Z 975 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/test/fixtures/.svn/all-wcprops --- a/vendor/plugins/acts_as_tree/test/fixtures/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test/fixtures -END -mixin.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb -END -mixins.yml -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/975/trunk/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_tree/test/fixtures/.svn/entries --- a/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.563764Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.563764Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/.svn/all-wcprops --- a/vendor/plugins/acts_as_versioned/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned -END -RUNNING_UNIT_TESTS -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/RUNNING_UNIT_TESTS -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/Rakefile -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/init.rb -END -CHANGELOG -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/CHANGELOG -END -MIT-LICENSE -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/MIT-LICENSE -END -README -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/.svn/entries --- a/vendor/plugins/acts_as_versioned/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.567763Z +2011-03-03T11:05:12.000000Z 8aae554c93cc60ef98cb3da2dd7c1b4b 2007-03-04T13:40:21.895320Z 290 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.567763Z +2011-03-03T11:05:12.000000Z 1f57ce7fac2d625797b9ec6d6480cf5b 2008-07-04T17:58:14.743502Z 1623 @@ -103,7 +103,7 @@ -2010-09-23T14:37:45.567763Z +2011-03-03T11:05:12.000000Z 1d117218f55938f9c75f1f814a4915d1 2007-03-04T13:40:21.895320Z 290 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.567763Z +2011-03-03T11:05:12.000000Z 3aa6f483cf322e248d4a1281160f8845 2007-03-04T13:40:21.895320Z 290 @@ -174,7 +174,7 @@ -2010-09-23T14:37:45.567763Z +2011-03-03T11:05:12.000000Z e4ba7226e637685b5cca7a9cc5c05af2 2007-03-04T13:40:21.895320Z 290 @@ -208,7 +208,7 @@ -2010-09-23T14:37:45.567763Z +2011-03-03T11:05:12.000000Z 06ee73d1b4ad386b681f88b9326a0685 2007-03-04T13:40:21.895320Z 290 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_versioned/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 61 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/lib -END -acts_as_versioned.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/lib/acts_as_versioned.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/lib/.svn/entries --- a/vendor/plugins/acts_as_versioned/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.571763Z +2011-03-03T11:05:12.000000Z 474fc02132fce15712540924bb7b22cf 2008-07-04T17:58:14.743502Z 1623 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/test/.svn/all-wcprops --- a/vendor/plugins/acts_as_versioned/test/.svn/all-wcprops Tue Feb 22 16:48:15 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 62 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/test -END -versioned_test.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/test/versioned_test.rb -END -schema.rb -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/schema.rb -END -abstract_unit.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/test/abstract_unit.rb -END -database.yml -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/database.yml -END -migration_test.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/test/migration_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/test/.svn/entries --- a/vendor/plugins/acts_as_versioned/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z 8a2eaa42c29dc84e0c018e78c99987f1 2008-07-04T17:58:14.743502Z 1623 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z df4118ed0edd4b3a0bae0cbb3b7a8a6b 2007-03-04T13:40:21.895320Z 290 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.571763Z +2011-03-03T11:05:12.000000Z 99f5a4aa22b79a8f8c7521a0b1e9ec3e 2008-07-04T17:58:14.743502Z 1623 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.571763Z +2011-03-03T11:05:12.000000Z c5ac373bf98e48576df3a63ab4349883 2007-03-04T13:40:21.895320Z 290 @@ -171,7 +171,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z eb28101ab94f672b3a99998fc03f0d38 2008-07-04T17:58:14.743502Z 1623 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/test/fixtures/.svn/all-wcprops --- a/vendor/plugins/acts_as_versioned/test/fixtures/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/test/fixtures -END -pages.yml -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/pages.yml -END -locked_pages.yml -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/locked_pages.yml -END -landmark_versions.yml -K 25 -svn:wc:ra_dav:version-url -V 92 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/landmark_versions.yml -END -locked_pages_revisions.yml -K 25 -svn:wc:ra_dav:version-url -V 97 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/locked_pages_revisions.yml -END -page_versions.yml -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/page_versions.yml -END -authors.yml -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/authors.yml -END -widget.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/1623/trunk/vendor/plugins/acts_as_versioned/test/fixtures/widget.rb -END -landmark.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/landmark.rb -END -landmarks.yml -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/landmarks.yml -END -page.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/page.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries --- a/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z 6052582a74186e97a71e6d50ff1c3558 2007-03-04T13:40:21.895320Z 290 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.575760Z +2011-03-03T11:05:12.000000Z 35aca448cc30c958ad2f3a8130903701 2007-03-04T13:40:21.895320Z 290 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.575760Z +2011-03-03T11:05:12.000000Z df240cb0129f29834aea167ea97df5c9 2007-03-04T13:40:21.895320Z 290 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.575760Z +2011-03-03T11:05:12.000000Z 3e63e88f04d92531412a5e328670313d 2007-03-04T13:40:21.895320Z 290 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z 9e0c65a239dc63caf3ba5b61e5acd86b 2007-03-04T13:40:21.895320Z 290 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.575760Z +2011-03-03T11:05:12.000000Z c9631a233cff08e617f783f2c5d4ebcb 2007-03-04T13:40:21.895320Z 290 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z 6cbb9a0d4b22160edce9cdd270943fcd 2008-07-04T17:58:14.743502Z 1623 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.575760Z +2011-03-03T11:05:12.000000Z 7845068722476900746d101729c30187 2007-03-04T13:40:21.895320Z 290 @@ -307,7 +307,7 @@ -2010-09-23T14:37:45.575760Z +2011-03-03T11:05:12.000000Z ebfb47357586fa12e4524a65ba0a714a 2007-03-04T13:40:21.895320Z 290 @@ -341,7 +341,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z a93535c95869678b16df898b8de4259f 2007-03-04T13:40:21.895320Z 290 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/all-wcprops --- a/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/all-wcprops Tue Feb 22 16:48:15 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 81 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/migrations -END -1_add_versioned_tables.rb -K 25 -svn:wc:ra_dav:version-url -V 107 -/svn/!svn/ver/323/trunk/vendor/plugins/acts_as_versioned/test/fixtures/migrations/1_add_versioned_tables.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries --- a/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures/migrations http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.579760Z +2011-03-03T11:05:12.000000Z 8fca6192aeeba1c8456bd6ac6199839f 2007-03-04T13:40:21.895320Z 290 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_watchable/.svn/all-wcprops --- a/vendor/plugins/acts_as_watchable/.svn/all-wcprops Tue Feb 22 16:48:15 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 57 -/svn/!svn/ver/3803/trunk/vendor/plugins/acts_as_watchable -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/774/trunk/vendor/plugins/acts_as_watchable/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_watchable/.svn/entries --- a/vendor/plugins/acts_as_watchable/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_watchable/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.583759Z +2011-03-03T11:05:12.000000Z 7051267daa625f991f2b604afde255ff 2007-04-21T12:08:31.130506Z 453 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_watchable/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_watchable/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 61 -/svn/!svn/ver/3803/trunk/vendor/plugins/acts_as_watchable/lib -END -acts_as_watchable.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3803/trunk/vendor/plugins/acts_as_watchable/lib/acts_as_watchable.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/acts_as_watchable/lib/.svn/entries --- a/vendor/plugins/acts_as_watchable/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/acts_as_watchable/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.583759Z +2011-03-03T11:05:12.000000Z 30f73616865f02dadce09f9511269b70 2010-06-20T18:41:30.111362Z 3803 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4406/trunk/vendor/plugins/awesome_nested_set +/svn/!svn/ver/4735/trunk/vendor/plugins/awesome_nested_set END awesome_nested_set.gemspec K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/.svn/entries --- a/vendor/plugins/awesome_nested_set/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set http://redmine.rubyforge.org/svn -2010-11-14T16:24:21.989522Z -4406 +2011-01-22T11:46:15.415880Z +4735 jplang @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.587807Z +2011-03-03T11:05:13.000000Z c1f9a7c7c81a0c9150d260757c895ab3 2008-12-20T12:22:38.158335Z 2149 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.587807Z +2011-03-03T11:05:13.000000Z 75ea4a8e8109afdbce9214ac3e9aa40a 2008-12-20T12:22:38.158335Z 2149 @@ -103,7 +103,7 @@ -2010-09-23T14:37:45.587807Z +2011-03-03T11:05:13.000000Z 5d897290320b00753c366c59f40b213e 2008-12-20T12:22:38.158335Z 2149 @@ -137,7 +137,7 @@ -2010-09-23T14:37:45.587807Z +2011-03-03T11:05:13.000000Z af5f1806895c92bb03e8855a96d13a64 2008-12-20T12:22:38.158335Z 2149 @@ -174,7 +174,7 @@ -2010-09-23T14:37:45.587807Z +2011-03-03T11:05:13.000000Z ba826ae68593d063b726b4e66dcb1e8f 2008-12-20T12:22:38.158335Z 2149 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/lib/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url V 62 -/svn/!svn/ver/4406/trunk/vendor/plugins/awesome_nested_set/lib +/svn/!svn/ver/4735/trunk/vendor/plugins/awesome_nested_set/lib END awesome_nested_set.rb K 25 svn:wc:ra_dav:version-url V 84 -/svn/!svn/ver/4406/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb +/svn/!svn/ver/4735/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/lib/.svn/entries --- a/vendor/plugins/awesome_nested_set/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib http://redmine.rubyforge.org/svn -2010-11-14T16:24:21.989522Z -4406 +2011-01-22T11:46:15.415880Z +4735 jplang @@ -32,10 +32,10 @@ -2010-11-19T13:04:50.944921Z -e8fd989882fd3a10519da66c2a73e982 -2010-11-14T16:24:21.989522Z -4406 +2011-03-03T11:05:12.000000Z +30e0732ab58f6380af97e08261871486 +2011-01-22T11:46:15.415880Z +4735 jplang has-props @@ -58,7 +58,7 @@ -21530 +21619 awesome_nested_set dir diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/lib/.svn/text-base/awesome_nested_set.rb.svn-base --- a/vendor/plugins/awesome_nested_set/lib/.svn/text-base/awesome_nested_set.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/.svn/text-base/awesome_nested_set.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -444,17 +444,19 @@ # Prunes a branch off of the tree, shifting all of the elements on the right # back to the left so the counts still work. def prune_from_tree - return if right.nil? || left.nil? - diff = right - left + 1 + return if right.nil? || left.nil? || !self.class.exists?(id) delete_method = acts_as_nested_set_options[:dependent] == :destroy ? :destroy_all : :delete_all self.class.base_class.transaction do + reload_nested_set nested_set_scope.send(delete_method, ["#{quoted_left_column_name} > ? AND #{quoted_right_column_name} < ?", left, right] ) + reload_nested_set + diff = right - left + 1 nested_set_scope.update_all( ["#{quoted_left_column_name} = (#{quoted_left_column_name} - ?)", diff], ["#{quoted_left_column_name} >= ?", right] diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb --- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb Thu Mar 03 12:11:53 2011 +0000 @@ -444,17 +444,19 @@ # Prunes a branch off of the tree, shifting all of the elements on the right # back to the left so the counts still work. def prune_from_tree - return if right.nil? || left.nil? - diff = right - left + 1 + return if right.nil? || left.nil? || !self.class.exists?(id) delete_method = acts_as_nested_set_options[:dependent] == :destroy ? :destroy_all : :delete_all self.class.base_class.transaction do + reload_nested_set nested_set_scope.send(delete_method, ["#{quoted_left_column_name} > ? AND #{quoted_right_column_name} < ?", left, right] ) + reload_nested_set + diff = right - left + 1 nested_set_scope.update_all( ["#{quoted_left_column_name} = (#{quoted_left_column_name} - ?)", diff], ["#{quoted_left_column_name} >= ?", right] diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set -END -named_scope.rb -K 25 -svn:wc:ra_dav:version-url -V 96 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/named_scope.rb -END -helper.rb -K 25 -svn:wc:ra_dav:version-url -V 91 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/helper.rb -END -compatability.rb -K 25 -svn:wc:ra_dav:version-url -V 98 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/compatability.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries --- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.591804Z +2011-03-03T11:05:12.000000Z d15393e7ec4757df0e53641d9a8d76f4 2008-12-20T12:22:38.158335Z 2149 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.591804Z +2011-03-03T11:05:12.000000Z d4a9622144313fa6b56117a6c1f11e61 2008-12-20T12:22:38.158335Z 2149 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.591804Z +2011-03-03T11:05:12.000000Z cebe8bf25e6f479251be38c80a246574 2008-12-20T12:22:38.158335Z 2149 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/rails/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/rails/.svn/all-wcprops Tue Feb 22 16:48:15 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 64 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/rails -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/rails/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/rails/.svn/entries --- a/vendor/plugins/awesome_nested_set/rails/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/rails/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/rails http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.595761Z +2011-03-03T11:05:13.000000Z d5995cbfa2abdc12b57c44d69dc0085b 2008-12-20T12:22:38.158335Z 2149 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test -END -test_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/test_helper.rb -END -awesome_nested_set_test.rb -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/awesome_nested_set_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.603759Z +2011-03-03T11:05:12.000000Z 41b65aff686211d45ba085c1b0791218 2008-12-20T12:22:38.158335Z 2149 @@ -75,7 +75,7 @@ -2010-09-23T14:37:45.599759Z +2011-03-03T11:05:12.000000Z d177339aefb3c4a8f280efff48c974b6 2008-12-20T12:22:38.158335Z 2149 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/all-wcprops Tue Feb 22 16:48:15 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 82 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/awesome_nested_set -END -helper_test.rb -K 25 -svn:wc:ra_dav:version-url -V 97 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/awesome_nested_set/helper_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/awesome_nested_set http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.595761Z +2011-03-03T11:05:12.000000Z 03a414e3247544a5a2334aed005764f3 2008-12-20T12:22:38.158335Z 2149 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/db/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/test/db/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/db -END -schema.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/db/schema.rb -END -database.yml -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/db/database.yml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/db/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/db/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/db/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/db http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.599759Z +2011-03-03T11:05:12.000000Z ae23aecda935bb66e29aa4f02ea9de0a 2008-12-20T12:22:38.158335Z 2149 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.599759Z +2011-03-03T11:05:12.000000Z 359889e11314c2969bdf7e37475bdc62 2008-12-20T12:22:38.158335Z 2149 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/fixtures/.svn/all-wcprops --- a/vendor/plugins/awesome_nested_set/test/fixtures/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/fixtures -END -category.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/fixtures/category.rb -END -categories.yml -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/fixtures/categories.yml -END -departments.yml -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/fixtures/departments.yml -END -notes.yml -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/test/fixtures/notes.yml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.603759Z +2011-03-03T11:05:12.000000Z 460e90d6f219f339e8e4c64aaae0063c 2008-12-20T12:22:38.158335Z 2149 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.599759Z +2011-03-03T11:05:12.000000Z 4b6a06e11c21a3aadd09e60dee443110 2008-12-20T12:22:38.158335Z 2149 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.603759Z +2011-03-03T11:05:12.000000Z e4eb5dbc7f2a2aa2fee79dba9210e769 2008-12-20T12:22:38.158335Z 2149 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.603759Z +2011-03-03T11:05:12.000000Z e8b507fd94ed89b9997c3f9f137290cf 2008-12-20T12:22:38.158335Z 2149 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/.svn/all-wcprops --- a/vendor/plugins/classic_pagination/.svn/all-wcprops Tue Feb 22 16:48:15 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 58 -/svn/!svn/ver/2134/trunk/vendor/plugins/classic_pagination -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/Rakefile -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/init.rb -END -CHANGELOG -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/CHANGELOG -END -install.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/install.rb -END -README -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/.svn/entries --- a/vendor/plugins/classic_pagination/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/classic_pagination/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.607804Z +2011-03-03T11:05:12.000000Z b14424b71d2f606a775061237c8226f1 2007-12-10T17:58:07.273873Z 975 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.607804Z +2011-03-03T11:05:12.000000Z 181539722e198d92992a94f40310f4fc 2007-12-10T17:58:07.273873Z 975 @@ -106,7 +106,7 @@ -2010-09-23T14:37:45.607804Z +2011-03-03T11:05:12.000000Z 3ef206f381b42341342908fcc0001210 2007-12-09T21:53:46.068689Z 966 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.607804Z +2011-03-03T11:05:12.000000Z 1c88d6bc27aa809cd6ef26543c18b1e6 2007-12-10T17:58:07.273873Z 975 @@ -174,7 +174,7 @@ -2010-09-23T14:37:45.607804Z +2011-03-03T11:05:12.000000Z f1df690ff1ea0da74f8fe161f50722ad 2007-12-10T17:58:07.273873Z 975 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/lib/.svn/all-wcprops --- a/vendor/plugins/classic_pagination/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/2134/trunk/vendor/plugins/classic_pagination/lib -END -pagination_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/lib/pagination_helper.rb -END -pagination.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/2134/trunk/vendor/plugins/classic_pagination/lib/pagination.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/lib/.svn/entries --- a/vendor/plugins/classic_pagination/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/classic_pagination/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.607804Z +2011-03-03T11:05:12.000000Z 535b7515c14fb3964e97be32c2d36415 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.607804Z +2011-03-03T11:05:12.000000Z d770c57066726c423cc9de4ca5b552cd 2008-12-14T15:36:59.418123Z 2134 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/test/.svn/all-wcprops --- a/vendor/plugins/classic_pagination/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test -END -helper.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/helper.rb -END -pagination_helper_test.rb -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/pagination_helper_test.rb -END -pagination_test.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/pagination_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/test/.svn/entries --- a/vendor/plugins/classic_pagination/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/classic_pagination/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.623761Z +2011-03-03T11:05:12.000000Z 50c7fabeb3d6728ce24eada59d5b2b67 2007-12-10T17:58:07.273873Z 975 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.623761Z +2011-03-03T11:05:12.000000Z 0a02d28a37b53a8e19af7935db5be1a8 2007-12-10T17:58:07.273873Z 975 @@ -103,7 +103,7 @@ -2010-09-23T14:37:45.623761Z +2011-03-03T11:05:12.000000Z 597b7501984a5ecd10242163d06c33e7 2007-12-10T17:58:07.273873Z 975 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/test/fixtures/.svn/all-wcprops --- a/vendor/plugins/classic_pagination/test/fixtures/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures -END -topic.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/topic.rb -END -developers_projects.yml -K 25 -svn:wc:ra_dav:version-url -V 95 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/developers_projects.yml -END -topics.yml -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/topics.yml -END -replies.yml -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/replies.yml -END -developer.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/developer.rb -END -company.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/company.rb -END -developers.yml -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/developers.yml -END -project.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/project.rb -END -projects.yml -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/projects.yml -END -reply.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/reply.rb -END -companies.yml -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/companies.yml -END -schema.sql -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/975/trunk/vendor/plugins/classic_pagination/test/fixtures/schema.sql -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/classic_pagination/test/fixtures/.svn/entries --- a/vendor/plugins/classic_pagination/test/fixtures/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/classic_pagination/test/fixtures/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 4e923be7fd534a67635192bcfcbed5cf 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 021192cd31a5c3a39cbe7bd14144425a 2007-12-10T17:58:07.273873Z 975 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 5953f128689c82c1d5c9ab2709a682e4 2007-12-10T17:58:07.273873Z 975 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z cc2715c9793cffccefbac86e97dd5a08 2007-12-10T17:58:07.273873Z 975 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 92e8d8a3cd6b419bdabbafc91be07b13 2007-12-10T17:58:07.273873Z 975 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 182661632986d51f75c49d74b19df40c 2007-12-10T17:58:07.273873Z 975 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z f1bf372057211d4a6d86499e561d903c 2007-12-10T17:58:07.273873Z 975 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 98f978d0e16223524ee8dc769136a3c4 2007-12-10T17:58:07.273873Z 975 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 3605b2a8f1cf10cbc34343bd7c49330d 2007-12-10T17:58:07.273873Z 975 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z dccebb95780c20b896fe26306d904e9d 2007-12-10T17:58:07.273873Z 975 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 318c27008dc35148da64e32ff9bf53c7 2007-12-10T17:58:07.273873Z 975 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.619761Z +2011-03-03T11:05:12.000000Z 78b664b5dbb72751888e7f6bf4cd12f8 2007-12-09T21:53:46.068689Z 966 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/.svn/all-wcprops Tue Feb 22 16:48:15 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 53 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2 -END -LICENSE -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/LICENSE -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/.svn/entries --- a/vendor/plugins/coderay-0.9.2/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2 -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -LICENSE -file - - - - -2010-09-23T14:37:45.623761Z -071d975e884a936b40eab0b865ea4da1 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -26534 - -lib -dir - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/.svn/prop-base/LICENSE.svn-base --- a/vendor/plugins/coderay-0.9.2/.svn/prop-base/LICENSE.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/.svn/text-base/LICENSE.svn-base --- a/vendor/plugins/coderay-0.9.2/.svn/text-base/LICENSE.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/LICENSE --- a/vendor/plugins/coderay-0.9.2/LICENSE Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib -END -coderay.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay.rb -END -README -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -coderay -dir - -coderay.rb -file - - - - -2010-09-23T14:37:45.627760Z -c736c3ed620d59c1c6799d6fa340b0af -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -10050 - -README -file - - - - -2010-09-23T14:37:45.627760Z -0d50df22acd760dc1905c7ef55e509e6 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4998 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/README.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/README.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/coderay.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/coderay.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/.svn/text-base/README.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/text-base/README.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -= CodeRay - -[- Tired of blue'n'gray? Try the original version of this documentation on -coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -] - -== About -CodeRay is a Ruby library for syntax highlighting. - -Syntax highlighting means: You put your code in, and you get it back colored; -Keywords, strings, floats, comments - all in different colors. -And with line numbers. - -*Syntax* *Highlighting*... -* makes code easier to read and maintain -* lets you detect syntax errors faster -* helps you to understand the syntax of a language -* looks nice -* is what everybody should have on their website -* solves all your problems and makes the girls run after you - -Version: 0.9.2 -Author:: murphy (Kornelius Kalnbach) -Contact:: murphy rubychan de -Website:: coderay.rubychan.de[http://coderay.rubychan.de] -License:: GNU LGPL; see LICENSE file in the main directory. - -== Installation - -You need RubyGems[http://rubyforge.org/frs/?group_id=126]. - - % gem install coderay - - -=== Dependencies - -CodeRay needs Ruby 1.8.6 or later. It also runs with Ruby 1.9.1+ and JRuby 1.1+. - - -== Example Usage -(Forgive me, but this is not highlighted.) - - require 'coderay' - - tokens = CodeRay.scan "puts 'Hello, world!'", :ruby - page = tokens.html :line_numbers => :inline, :wrap => :page - puts page - - -== Documentation - -See CodeRay. - -Please report errors in this documentation to . - - -== Credits - -=== Special Thanks to - -* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder - project and the input/output plugin system. - CodeRay would not exist without him. -* bovi (Daniel Bovensiepen) for helping me out on various occasions. - -=== Thanks to - -* Caleb Clausen for writing RubyLexer (see - http://rubyforge.org/projects/rubylexer) and lots of very interesting mail - traffic -* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. - You guys rock! -* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) - I got some useful ideas from it. -* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me - coding CodeRay, but also gave me a wonderful target to reach for the Ruby - scanner. -* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de -* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de -* Dethix from ruby-mine.de -* zickzackw -* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de -* Andreas Schwarz for finding out that CaseIgnoringWordList was not case - ignoring! Such things really make you write tests. -* closure for the first version of the Scheme scanner. -* Stefan Walk for the first version of the JavaScript and PHP scanners. -* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner. -* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. -* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. -* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. -* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. -* 0xf30fc7 for the FileType patch concerning Delphi file extensions. -* The folks at redmine.org - thank you for using and fixing CodeRay! -* Keith Pitt for his SQL scanners -* Rob Aldred for the terminal encoder -* Trans for pointing out $DEBUG dependencies -* Flameeyes for finding that Term::ANSIColor was obsolete -* matz and all Ruby gods and gurus -* The inventors of: the computer, the internet, the true color display, HTML & - CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime, - manga, coke and green ice tea. - -Where would we be without all those people? - -=== Created using - -* Ruby[http://ruby-lang.org/] -* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); - Triella, born Rico (my new MacBook); as well as - Seras and Hikari (my PCs) -* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], - VIM[http://vim.org] and TextMate[http://macromates.com] -* Subversion[http://subversion.tigris.org/] -* Redmine[http://redmine.org/] -* Firefox[http://www.mozilla.org/products/firefox/], - Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and - Thunderbird[http://www.mozilla.org/products/thunderbird/] -* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] -* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via - XAMPP[http://www.apachefriends.org/en/xampp.html] -* RDoc (though I'm quite unsatisfied with it) -* Microsoft Windows (yes, I confess!) and MacOS X -* GNUWin32, MinGW and some other tools to make the shell under windows a bit - less useless -* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] -* PLEAC[http://pleac.sourceforge.net/] code examples - -=== Free - -* As you can see, CodeRay was created under heavy use of *free* software. -* So CodeRay is also *free*. -* If you use CodeRay to create software, think about making this software - *free*, too. -* Thanks :) diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/.svn/text-base/coderay.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/text-base/coderay.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,322 +0,0 @@ -# = CodeRay Library -# -# CodeRay is a Ruby library for syntax highlighting. -# -# I try to make CodeRay easy to use and intuitive, but at the same time fully featured, complete, -# fast and efficient. -# -# See README. -# -# It consists mainly of -# * the main engine: CodeRay (Scanners::Scanner, Tokens/TokenStream, Encoders::Encoder), PluginHost -# * the scanners in CodeRay::Scanners -# * the encoders in CodeRay::Encoders -# -# Here's a fancy graphic to light up this gray docu: -# -# http://cycnus.de/raindark/coderay/scheme.png -# -# == Documentation -# -# See CodeRay, Encoders, Scanners, Tokens. -# -# == Usage -# -# Remember you need RubyGems to use CodeRay, unless you have it in your load path. Run Ruby with -# -rubygems option if required. -# -# === Highlight Ruby code in a string as html -# -# require 'coderay' -# print CodeRay.scan('puts "Hello, world!"', :ruby).html -# -# # prints something like this: -# puts "Hello, world!" -# -# -# === Highlight C code from a file in a html div -# -# require 'coderay' -# print CodeRay.scan(File.read('ruby.h'), :c).div -# print CodeRay.scan_file('ruby.h').html.div -# -# You can include this div in your page. The used CSS styles can be printed with -# -# % coderay_stylesheet -# -# === Highlight without typing too much -# -# If you are one of the hasty (or lazy, or extremely curious) people, just run this file: -# -# % ruby -rubygems /path/to/coderay/coderay.rb > example.html -# -# and look at the file it created in your browser. -# -# = CodeRay Module -# -# The CodeRay module provides convenience methods for the engine. -# -# * The +lang+ and +format+ arguments select Scanner and Encoder to use. These are -# simply lower-case symbols, like :python or :html. -# * All methods take an optional hash as last parameter, +options+, that is send to -# the Encoder / Scanner. -# * Input and language are always sorted in this order: +code+, +lang+. -# (This is in alphabetical order, if you need a mnemonic ;) -# -# You should be able to highlight everything you want just using these methods; -# so there is no need to dive into CodeRay's deep class hierarchy. -# -# The examples in the demo directory demonstrate common cases using this interface. -# -# = Basic Access Ways -# -# Read this to get a general view what CodeRay provides. -# -# == Scanning -# -# Scanning means analysing an input string, splitting it up into Tokens. -# Each Token knows about what type it is: string, comment, class name, etc. -# -# Each +lang+ (language) has its own Scanner; for example, :ruby code is -# handled by CodeRay::Scanners::Ruby. -# -# CodeRay.scan:: Scan a string in a given language into Tokens. -# This is the most common method to use. -# CodeRay.scan_file:: Scan a file and guess the language using FileType. -# -# The Tokens object you get from these methods can encode itself; see Tokens. -# -# == Encoding -# -# Encoding means compiling Tokens into an output. This can be colored HTML or -# LaTeX, a textual statistic or just the number of non-whitespace tokens. -# -# Each Encoder provides output in a specific +format+, so you select Encoders via -# formats like :html or :statistic. -# -# CodeRay.encode:: Scan and encode a string in a given language. -# CodeRay.encode_tokens:: Encode the given tokens. -# CodeRay.encode_file:: Scan a file, guess the language using FileType and encode it. -# -# == Streaming -# -# Streaming saves RAM by running Scanner and Encoder in some sort of -# pipe mode; see TokenStream. -# -# CodeRay.scan_stream:: Scan in stream mode. -# -# == All-in-One Encoding -# -# CodeRay.encode:: Highlight a string with a given input and output format. -# -# == Instanciating -# -# You can use an Encoder instance to highlight multiple inputs. This way, the setup -# for this Encoder must only be done once. -# -# CodeRay.encoder:: Create an Encoder instance with format and options. -# CodeRay.scanner:: Create an Scanner instance for lang, with '' as default code. -# -# To make use of CodeRay.scanner, use CodeRay::Scanner::code=. -# -# The scanning methods provide more flexibility; we recommend to use these. -# -# == Reusing Scanners and Encoders -# -# If you want to re-use scanners and encoders (because that is faster), see -# CodeRay::Duo for the most convenient (and recommended) interface. -module CodeRay - - $CODERAY_DEBUG ||= false - - # Version: Major.Minor.Teeny[.Revision] - # Major: 0 for pre-stable, 1 for stable - # Minor: feature milestone - # Teeny: development state, 0 for pre-release - # Revision: Subversion Revision number (generated on rake gem:make) - VERSION = '0.9.2' - - require 'coderay/tokens' - require 'coderay/token_classes' - require 'coderay/scanner' - require 'coderay/encoder' - require 'coderay/duo' - require 'coderay/style' - - - class << self - - # Scans the given +code+ (a String) with the Scanner for +lang+. - # - # This is a simple way to use CodeRay. Example: - # require 'coderay' - # page = CodeRay.scan("puts 'Hello, world!'", :ruby).html - # - # See also demo/demo_simple. - def scan code, lang, options = {}, &block - scanner = Scanners[lang].new code, options, &block - scanner.tokenize - end - - # Scans +filename+ (a path to a code file) with the Scanner for +lang+. - # - # If +lang+ is :auto or omitted, the CodeRay::FileType module is used to - # determine it. If it cannot find out what type it is, it uses - # CodeRay::Scanners::Plaintext. - # - # Calls CodeRay.scan. - # - # Example: - # require 'coderay' - # page = CodeRay.scan_file('some_c_code.c').html - def scan_file filename, lang = :auto, options = {}, &block - file = IO.read filename - if lang == :auto - require 'coderay/helpers/file_type' - lang = FileType.fetch filename, :plaintext, true - end - scan file, lang, options = {}, &block - end - - # Scan the +code+ (a string) with the scanner for +lang+. - # - # Calls scan. - # - # See CodeRay.scan. - def scan_stream code, lang, options = {}, &block - options[:stream] = true - scan code, lang, options, &block - end - - # Encode a string in Streaming mode. - # - # This starts scanning +code+ with the the Scanner for +lang+ - # while encodes the output with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode_stream - def encode_stream code, lang, format, options = {} - encoder(format, options).encode_stream code, lang, options - end - - # Encode a string. - # - # This scans +code+ with the the Scanner for +lang+ and then - # encodes it with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode - def encode code, lang, format, options = {} - encoder(format, options).encode code, lang, options - end - - # Highlight a string into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight code, lang, options = { :css => :class }, format = :div - encode code, lang, format, options - end - - # Encode pre-scanned Tokens. - # Use this together with CodeRay.scan: - # - # require 'coderay' - # - # # Highlight a short Ruby code example in a HTML span - # tokens = CodeRay.scan '1 + 2', :ruby - # puts CodeRay.encode_tokens(tokens, :span) - # - def encode_tokens tokens, format, options = {} - encoder(format, options).encode_tokens tokens, options - end - - # Encodes +filename+ (a path to a code file) with the Scanner for +lang+. - # - # See CodeRay.scan_file. - # Notice that the second argument is the output +format+, not the input language. - # - # Example: - # require 'coderay' - # page = CodeRay.encode_file 'some_c_code.c', :html - def encode_file filename, format, options = {} - tokens = scan_file filename, :auto, get_scanner_options(options) - encode_tokens tokens, format, options - end - - # Highlight a file into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight_file filename, options = { :css => :class }, format = :div - encode_file filename, format, options - end - - # Finds the Encoder class for +format+ and creates an instance, passing - # +options+ to it. - # - # Example: - # require 'coderay' - # - # stats = CodeRay.encoder(:statistic) - # stats.encode("puts 17 + 4\n", :ruby) - # - # puts '%d out of %d tokens have the kind :integer.' % [ - # stats.type_stats[:integer].count, - # stats.real_token_count - # ] - # #-> 2 out of 4 tokens have the kind :integer. - def encoder format, options = {} - Encoders[format].new options - end - - # Finds the Scanner class for +lang+ and creates an instance, passing - # +options+ to it. - # - # See Scanner.new. - def scanner lang, options = {} - Scanners[lang].new '', options - end - - # Extract the options for the scanner from the +options+ hash. - # - # Returns an empty Hash if :scanner_options is not set. - # - # This is used if a method like CodeRay.encode has to provide options - # for Encoder _and_ scanner. - def get_scanner_options options - options.fetch :scanner_options, {} - end - - end - - # This Exception is raised when you try to stream with something that is not - # capable of streaming. - class NotStreamableError < Exception - def initialize obj - @obj = obj - end - - def to_s - '%s is not Streamable!' % @obj.class - end - end - - # A dummy module that is included by subclasses of CodeRay::Scanner an CodeRay::Encoder - # to show that they are able to handle streams. - module Streamable - end - -end - -# Run a test script. -if $0 == __FILE__ - $stderr.print 'Press key to print demo.'; gets - # Just use this file as an example of Ruby code. - code = File.read(__FILE__)[/module CodeRay.*/m] - print CodeRay.scan(code, :ruby).html -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/README --- a/vendor/plugins/coderay-0.9.2/lib/README Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -= CodeRay - -[- Tired of blue'n'gray? Try the original version of this documentation on -coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -] - -== About -CodeRay is a Ruby library for syntax highlighting. - -Syntax highlighting means: You put your code in, and you get it back colored; -Keywords, strings, floats, comments - all in different colors. -And with line numbers. - -*Syntax* *Highlighting*... -* makes code easier to read and maintain -* lets you detect syntax errors faster -* helps you to understand the syntax of a language -* looks nice -* is what everybody should have on their website -* solves all your problems and makes the girls run after you - -Version: 0.9.2 -Author:: murphy (Kornelius Kalnbach) -Contact:: murphy rubychan de -Website:: coderay.rubychan.de[http://coderay.rubychan.de] -License:: GNU LGPL; see LICENSE file in the main directory. - -== Installation - -You need RubyGems[http://rubyforge.org/frs/?group_id=126]. - - % gem install coderay - - -=== Dependencies - -CodeRay needs Ruby 1.8.6 or later. It also runs with Ruby 1.9.1+ and JRuby 1.1+. - - -== Example Usage -(Forgive me, but this is not highlighted.) - - require 'coderay' - - tokens = CodeRay.scan "puts 'Hello, world!'", :ruby - page = tokens.html :line_numbers => :inline, :wrap => :page - puts page - - -== Documentation - -See CodeRay. - -Please report errors in this documentation to . - - -== Credits - -=== Special Thanks to - -* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder - project and the input/output plugin system. - CodeRay would not exist without him. -* bovi (Daniel Bovensiepen) for helping me out on various occasions. - -=== Thanks to - -* Caleb Clausen for writing RubyLexer (see - http://rubyforge.org/projects/rubylexer) and lots of very interesting mail - traffic -* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. - You guys rock! -* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) - I got some useful ideas from it. -* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me - coding CodeRay, but also gave me a wonderful target to reach for the Ruby - scanner. -* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de -* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de -* Dethix from ruby-mine.de -* zickzackw -* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de -* Andreas Schwarz for finding out that CaseIgnoringWordList was not case - ignoring! Such things really make you write tests. -* closure for the first version of the Scheme scanner. -* Stefan Walk for the first version of the JavaScript and PHP scanners. -* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner. -* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. -* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. -* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. -* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. -* 0xf30fc7 for the FileType patch concerning Delphi file extensions. -* The folks at redmine.org - thank you for using and fixing CodeRay! -* Keith Pitt for his SQL scanners -* Rob Aldred for the terminal encoder -* Trans for pointing out $DEBUG dependencies -* Flameeyes for finding that Term::ANSIColor was obsolete -* matz and all Ruby gods and gurus -* The inventors of: the computer, the internet, the true color display, HTML & - CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime, - manga, coke and green ice tea. - -Where would we be without all those people? - -=== Created using - -* Ruby[http://ruby-lang.org/] -* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); - Triella, born Rico (my new MacBook); as well as - Seras and Hikari (my PCs) -* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], - VIM[http://vim.org] and TextMate[http://macromates.com] -* Subversion[http://subversion.tigris.org/] -* Redmine[http://redmine.org/] -* Firefox[http://www.mozilla.org/products/firefox/], - Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and - Thunderbird[http://www.mozilla.org/products/thunderbird/] -* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] -* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via - XAMPP[http://www.apachefriends.org/en/xampp.html] -* RDoc (though I'm quite unsatisfied with it) -* Microsoft Windows (yes, I confess!) and MacOS X -* GNUWin32, MinGW and some other tools to make the shell under windows a bit - less useless -* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] -* PLEAC[http://pleac.sourceforge.net/] code examples - -=== Free - -* As you can see, CodeRay was created under heavy use of *free* software. -* So CodeRay is also *free*. -* If you use CodeRay to create software, think about making this software - *free*, too. -* Thanks :) diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,322 +0,0 @@ -# = CodeRay Library -# -# CodeRay is a Ruby library for syntax highlighting. -# -# I try to make CodeRay easy to use and intuitive, but at the same time fully featured, complete, -# fast and efficient. -# -# See README. -# -# It consists mainly of -# * the main engine: CodeRay (Scanners::Scanner, Tokens/TokenStream, Encoders::Encoder), PluginHost -# * the scanners in CodeRay::Scanners -# * the encoders in CodeRay::Encoders -# -# Here's a fancy graphic to light up this gray docu: -# -# http://cycnus.de/raindark/coderay/scheme.png -# -# == Documentation -# -# See CodeRay, Encoders, Scanners, Tokens. -# -# == Usage -# -# Remember you need RubyGems to use CodeRay, unless you have it in your load path. Run Ruby with -# -rubygems option if required. -# -# === Highlight Ruby code in a string as html -# -# require 'coderay' -# print CodeRay.scan('puts "Hello, world!"', :ruby).html -# -# # prints something like this: -# puts "Hello, world!" -# -# -# === Highlight C code from a file in a html div -# -# require 'coderay' -# print CodeRay.scan(File.read('ruby.h'), :c).div -# print CodeRay.scan_file('ruby.h').html.div -# -# You can include this div in your page. The used CSS styles can be printed with -# -# % coderay_stylesheet -# -# === Highlight without typing too much -# -# If you are one of the hasty (or lazy, or extremely curious) people, just run this file: -# -# % ruby -rubygems /path/to/coderay/coderay.rb > example.html -# -# and look at the file it created in your browser. -# -# = CodeRay Module -# -# The CodeRay module provides convenience methods for the engine. -# -# * The +lang+ and +format+ arguments select Scanner and Encoder to use. These are -# simply lower-case symbols, like :python or :html. -# * All methods take an optional hash as last parameter, +options+, that is send to -# the Encoder / Scanner. -# * Input and language are always sorted in this order: +code+, +lang+. -# (This is in alphabetical order, if you need a mnemonic ;) -# -# You should be able to highlight everything you want just using these methods; -# so there is no need to dive into CodeRay's deep class hierarchy. -# -# The examples in the demo directory demonstrate common cases using this interface. -# -# = Basic Access Ways -# -# Read this to get a general view what CodeRay provides. -# -# == Scanning -# -# Scanning means analysing an input string, splitting it up into Tokens. -# Each Token knows about what type it is: string, comment, class name, etc. -# -# Each +lang+ (language) has its own Scanner; for example, :ruby code is -# handled by CodeRay::Scanners::Ruby. -# -# CodeRay.scan:: Scan a string in a given language into Tokens. -# This is the most common method to use. -# CodeRay.scan_file:: Scan a file and guess the language using FileType. -# -# The Tokens object you get from these methods can encode itself; see Tokens. -# -# == Encoding -# -# Encoding means compiling Tokens into an output. This can be colored HTML or -# LaTeX, a textual statistic or just the number of non-whitespace tokens. -# -# Each Encoder provides output in a specific +format+, so you select Encoders via -# formats like :html or :statistic. -# -# CodeRay.encode:: Scan and encode a string in a given language. -# CodeRay.encode_tokens:: Encode the given tokens. -# CodeRay.encode_file:: Scan a file, guess the language using FileType and encode it. -# -# == Streaming -# -# Streaming saves RAM by running Scanner and Encoder in some sort of -# pipe mode; see TokenStream. -# -# CodeRay.scan_stream:: Scan in stream mode. -# -# == All-in-One Encoding -# -# CodeRay.encode:: Highlight a string with a given input and output format. -# -# == Instanciating -# -# You can use an Encoder instance to highlight multiple inputs. This way, the setup -# for this Encoder must only be done once. -# -# CodeRay.encoder:: Create an Encoder instance with format and options. -# CodeRay.scanner:: Create an Scanner instance for lang, with '' as default code. -# -# To make use of CodeRay.scanner, use CodeRay::Scanner::code=. -# -# The scanning methods provide more flexibility; we recommend to use these. -# -# == Reusing Scanners and Encoders -# -# If you want to re-use scanners and encoders (because that is faster), see -# CodeRay::Duo for the most convenient (and recommended) interface. -module CodeRay - - $CODERAY_DEBUG ||= false - - # Version: Major.Minor.Teeny[.Revision] - # Major: 0 for pre-stable, 1 for stable - # Minor: feature milestone - # Teeny: development state, 0 for pre-release - # Revision: Subversion Revision number (generated on rake gem:make) - VERSION = '0.9.2' - - require 'coderay/tokens' - require 'coderay/token_classes' - require 'coderay/scanner' - require 'coderay/encoder' - require 'coderay/duo' - require 'coderay/style' - - - class << self - - # Scans the given +code+ (a String) with the Scanner for +lang+. - # - # This is a simple way to use CodeRay. Example: - # require 'coderay' - # page = CodeRay.scan("puts 'Hello, world!'", :ruby).html - # - # See also demo/demo_simple. - def scan code, lang, options = {}, &block - scanner = Scanners[lang].new code, options, &block - scanner.tokenize - end - - # Scans +filename+ (a path to a code file) with the Scanner for +lang+. - # - # If +lang+ is :auto or omitted, the CodeRay::FileType module is used to - # determine it. If it cannot find out what type it is, it uses - # CodeRay::Scanners::Plaintext. - # - # Calls CodeRay.scan. - # - # Example: - # require 'coderay' - # page = CodeRay.scan_file('some_c_code.c').html - def scan_file filename, lang = :auto, options = {}, &block - file = IO.read filename - if lang == :auto - require 'coderay/helpers/file_type' - lang = FileType.fetch filename, :plaintext, true - end - scan file, lang, options = {}, &block - end - - # Scan the +code+ (a string) with the scanner for +lang+. - # - # Calls scan. - # - # See CodeRay.scan. - def scan_stream code, lang, options = {}, &block - options[:stream] = true - scan code, lang, options, &block - end - - # Encode a string in Streaming mode. - # - # This starts scanning +code+ with the the Scanner for +lang+ - # while encodes the output with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode_stream - def encode_stream code, lang, format, options = {} - encoder(format, options).encode_stream code, lang, options - end - - # Encode a string. - # - # This scans +code+ with the the Scanner for +lang+ and then - # encodes it with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode - def encode code, lang, format, options = {} - encoder(format, options).encode code, lang, options - end - - # Highlight a string into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight code, lang, options = { :css => :class }, format = :div - encode code, lang, format, options - end - - # Encode pre-scanned Tokens. - # Use this together with CodeRay.scan: - # - # require 'coderay' - # - # # Highlight a short Ruby code example in a HTML span - # tokens = CodeRay.scan '1 + 2', :ruby - # puts CodeRay.encode_tokens(tokens, :span) - # - def encode_tokens tokens, format, options = {} - encoder(format, options).encode_tokens tokens, options - end - - # Encodes +filename+ (a path to a code file) with the Scanner for +lang+. - # - # See CodeRay.scan_file. - # Notice that the second argument is the output +format+, not the input language. - # - # Example: - # require 'coderay' - # page = CodeRay.encode_file 'some_c_code.c', :html - def encode_file filename, format, options = {} - tokens = scan_file filename, :auto, get_scanner_options(options) - encode_tokens tokens, format, options - end - - # Highlight a file into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight_file filename, options = { :css => :class }, format = :div - encode_file filename, format, options - end - - # Finds the Encoder class for +format+ and creates an instance, passing - # +options+ to it. - # - # Example: - # require 'coderay' - # - # stats = CodeRay.encoder(:statistic) - # stats.encode("puts 17 + 4\n", :ruby) - # - # puts '%d out of %d tokens have the kind :integer.' % [ - # stats.type_stats[:integer].count, - # stats.real_token_count - # ] - # #-> 2 out of 4 tokens have the kind :integer. - def encoder format, options = {} - Encoders[format].new options - end - - # Finds the Scanner class for +lang+ and creates an instance, passing - # +options+ to it. - # - # See Scanner.new. - def scanner lang, options = {} - Scanners[lang].new '', options - end - - # Extract the options for the scanner from the +options+ hash. - # - # Returns an empty Hash if :scanner_options is not set. - # - # This is used if a method like CodeRay.encode has to provide options - # for Encoder _and_ scanner. - def get_scanner_options options - options.fetch :scanner_options, {} - end - - end - - # This Exception is raised when you try to stream with something that is not - # capable of streaming. - class NotStreamableError < Exception - def initialize obj - @obj = obj - end - - def to_s - '%s is not Streamable!' % @obj.class - end - end - - # A dummy module that is included by subclasses of CodeRay::Scanner an CodeRay::Encoder - # to show that they are able to handle streams. - module Streamable - end - -end - -# Run a test script. -if $0 == __FILE__ - $stderr.print 'Press key to print demo.'; gets - # Just use this file as an example of Ruby code. - code = File.read(__FILE__)[/module CodeRay.*/m] - print CodeRay.scan(code, :ruby).html -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay -END -token_classes.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/token_classes.rb -END -encoder.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoder.rb -END -style.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/style.rb -END -tokens.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/tokens.rb -END -duo.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/duo.rb -END -scanner.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanner.rb -END -for_redcloth.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/for_redcloth.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,278 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -token_classes.rb -file - - - - -2010-09-23T14:37:45.683786Z -4f17211f3874899049db6111ef282a3b -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2287 - -encoder.rb -file - - - - -2010-09-23T14:37:45.631818Z -f0ead48eaa86c8b4d6a5587e9b5450ca -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6565 - -encoders -dir - -helpers -dir - -style.rb -file - - - - -2010-09-23T14:37:45.679790Z -409fa492a5470a8bed5ae969f270decf -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -293 - -styles -dir - -tokens.rb -file - - - - -2010-09-23T14:37:45.683786Z -b7662592ff38046174f935548f579ce4 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -10153 - -duo.rb -file - - - - -2010-09-23T14:37:45.631818Z -b33e5b83e354c09655f46d37ae662f64 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2549 - -scanner.rb -file - - - - -2010-09-23T14:37:45.655760Z -f75f38c93ee8de3e6df1c08773b62319 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -7803 - -scanners -dir - -for_redcloth.rb -file - - - - -2010-09-23T14:37:45.651759Z -d216c2f1c7a84a23ce3feff0b1358d60 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3001 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/duo.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/duo.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/encoder.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/encoder.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/for_redcloth.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/for_redcloth.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/scanner.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/scanner.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/style.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/style.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/token_classes.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/token_classes.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/tokens.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/tokens.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/duo.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/duo.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -module CodeRay - - # = Duo - # - # A Duo is a convenient way to use CodeRay. You just create a Duo, - # giving it a lang (language of the input code) and a format (desired - # output format), and call Duo#highlight with the code. - # - # Duo makes it easy to re-use both scanner and encoder for a repetitive - # task. It also provides a very easy interface syntax: - # - # require 'coderay' - # CodeRay::Duo[:python, :div].highlight 'import this' - # - # Until you want to do uncommon things with CodeRay, I recommend to use - # this method, since it takes care of everything. - class Duo - - attr_accessor :lang, :format, :options - - # Create a new Duo, holding a lang and a format to highlight code. - # - # simple: - # CodeRay::Duo[:ruby, :page].highlight 'bla 42' - # - # streaming: - # CodeRay::Duo[:ruby, :page].highlight 'bar 23', :stream => true - # - # with options: - # CodeRay::Duo[:ruby, :html, :hint => :debug].highlight '????::??' - # - # alternative syntax without options: - # CodeRay::Duo[:ruby => :statistic].encode 'class << self; end' - # - # alternative syntax with options: - # CodeRay::Duo[{ :ruby => :statistic }, :do => :something].encode 'abc' - # - # The options are forwarded to scanner and encoder - # (see CodeRay.get_scanner_options). - def initialize lang = nil, format = nil, options = {} - if format == nil and lang.is_a? Hash and lang.size == 1 - @lang = lang.keys.first - @format = lang[@lang] - else - @lang = lang - @format = format - end - @options = options - end - - class << self - # To allow calls like Duo[:ruby, :html].highlight. - alias [] new - end - - # The scanner of the duo. Only created once. - def scanner - @scanner ||= CodeRay.scanner @lang, CodeRay.get_scanner_options(@options) - end - - # The encoder of the duo. Only created once. - def encoder - @encoder ||= CodeRay.encoder @format, @options - end - - # Tokenize and highlight the code using +scanner+ and +encoder+. - # - # If the :stream option is set, the Duo will go into streaming mode, - # saving memory for the cost of time. - def encode code, options = { :stream => false } - stream = options.delete :stream - options = @options.merge options - if stream - encoder.encode_stream(code, @lang, options) - else - scanner.code = code - encoder.encode_tokens(scanner.tokenize, options) - end - end - alias highlight encode - - end - -end - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/encoder.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/encoder.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -module CodeRay - - # This module holds the Encoder class and its subclasses. - # For example, the HTML encoder is named CodeRay::Encoders::HTML - # can be found in coderay/encoders/html. - # - # Encoders also provides methods and constants for the register - # mechanism and the [] method that returns the Encoder class - # belonging to the given format. - module Encoders - extend PluginHost - plugin_path File.dirname(__FILE__), 'encoders' - - # = Encoder - # - # The Encoder base class. Together with Scanner and - # Tokens, it forms the highlighting triad. - # - # Encoder instances take a Tokens object and do something with it. - # - # The most common Encoder is surely the HTML encoder - # (CodeRay::Encoders::HTML). It highlights the code in a colorful - # html page. - # If you want the highlighted code in a div or a span instead, - # use its subclasses Div and Span. - class Encoder - extend Plugin - plugin_host Encoders - - attr_reader :token_stream - - class << self - - # Returns if the Encoder can be used in streaming mode. - def streamable? - is_a? Streamable - end - - # If FILE_EXTENSION isn't defined, this method returns the - # downcase class name instead. - def const_missing sym - if sym == :FILE_EXTENSION - plugin_id - else - super - end - end - - end - - # Subclasses are to store their default options in this constant. - DEFAULT_OPTIONS = { :stream => false } - - # The options you gave the Encoder at creating. - attr_accessor :options - - # Creates a new Encoder. - # +options+ is saved and used for all encode operations, as long - # as you don't overwrite it there by passing additional options. - # - # Encoder objects provide three encode methods: - # - encode simply takes a +code+ string and a +lang+ - # - encode_tokens expects a +tokens+ object instead - # - encode_stream is like encode, but uses streaming mode. - # - # Each method has an optional +options+ parameter. These are - # added to the options you passed at creation. - def initialize options = {} - @options = self.class::DEFAULT_OPTIONS.merge options - raise "I am only the basic Encoder class. I can't encode "\ - "anything. :( Use my subclasses." if self.class == Encoder - end - - # Encode a Tokens object. - def encode_tokens tokens, options = {} - options = @options.merge options - setup options - compile tokens, options - finish options - end - - # Encode the given +code+ after tokenizing it using the Scanner - # for +lang+. - def encode code, lang, options = {} - options = @options.merge options - scanner_options = CodeRay.get_scanner_options(options) - tokens = CodeRay.scan code, lang, scanner_options - encode_tokens tokens, options - end - - # You can use highlight instead of encode, if that seems - # more clear to you. - alias highlight encode - - # Encode the given +code+ using the Scanner for +lang+ in - # streaming mode. - def encode_stream code, lang, options = {} - raise NotStreamableError, self unless kind_of? Streamable - options = @options.merge options - setup options - scanner_options = CodeRay.get_scanner_options options - @token_stream = - CodeRay.scan_stream code, lang, scanner_options, &self - finish options - end - - # Behave like a proc. The token method is converted to a proc. - def to_proc - method(:token).to_proc - end - - # Return the default file extension for outputs of this encoder. - def file_extension - self.class::FILE_EXTENSION - end - - protected - - # Called with merged options before encoding starts. - # Sets @out to an empty string. - # - # See the HTML Encoder for an example of option caching. - def setup options - @out = '' - end - - # Called with +content+ and +kind+ of the currently scanned token. - # For simple scanners, it's enougth to implement this method. - # - # By default, it calls text_token or block_token, depending on - # whether +content+ is a String. - def token content, kind - encoded_token = - if content.is_a? ::String - text_token content, kind - elsif content.is_a? ::Symbol - block_token content, kind - else - raise 'Unknown token content type: %p' % [content] - end - append_encoded_token_to_output encoded_token - end - - def append_encoded_token_to_output encoded_token - @out << encoded_token if encoded_token && defined?(@out) && @out - end - - # Called for each text token ([text, kind]), where text is a String. - def text_token text, kind - end - - # Called for each block (non-text) token ([action, kind]), - # where +action+ is a Symbol. - # - # Calls open_token, close_token, begin_line, and end_line according to - # the value of +action+. - def block_token action, kind - case action - when :open - open_token kind - when :close - close_token kind - when :begin_line - begin_line kind - when :end_line - end_line kind - else - raise 'unknown block action: %p' % action - end - end - - # Called for each block token at the start of the block ([:open, kind]). - def open_token kind - end - - # Called for each block token end of the block ([:close, kind]). - def close_token kind - end - - # Called for each line token block at the start of the line ([:begin_line, kind]). - def begin_line kind - end - - # Called for each line token block at the end of the line ([:end_line, kind]). - def end_line kind - end - - # Called with merged options after encoding starts. - # The return value is the result of encoding, typically @out. - def finish options - @out - end - - # Do the encoding. - # - # The already created +tokens+ object must be used; it can be a - # TokenStream or a Tokens object. - if RUBY_VERSION >= '1.9' - def compile tokens, options - for text, kind in tokens - token text, kind - end - end - else - def compile tokens, options - tokens.each(&self) - end - end - - end - - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/for_redcloth.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/for_redcloth.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -module CodeRay - - # A little hack to enable CodeRay highlighting in RedCloth. - # - # Usage: - # require 'coderay' - # require 'coderay/for_redcloth' - # RedCloth.new('@[ruby]puts "Hello, World!"@').to_html - # - # Make sure you have RedCloth 4.0.3 activated, for example by calling - # require 'rubygems' - # before RedCloth is loaded and before calling CodeRay.for_redcloth. - module ForRedCloth - - def self.install - gem 'RedCloth', '>= 4.0.3' if defined? gem - require 'redcloth' - unless RedCloth::VERSION.to_s >= '4.0.3' - if defined? gem - raise 'CodeRay.for_redcloth needs RedCloth version 4.0.3 or later. ' + - "You have #{RedCloth::VERSION}. Please gem install RedCloth." - else - $".delete 'redcloth.rb' # sorry, but it works - require 'rubygems' - return install # retry - end - end - unless RedCloth::VERSION.to_s >= '4.2.2' - warn 'CodeRay.for_redcloth works best with RedCloth version 4.2.2 or later.' - end - RedCloth::TextileDoc.send :include, ForRedCloth::TextileDoc - RedCloth::Formatters::HTML.module_eval do - def unescape(html) - replacements = { - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - html.gsub(/&(?:amp|quot|[gl]t);/) { |entity| replacements[entity] } - end - undef code, bc_open, bc_close, escape_pre - def code(opts) # :nodoc: - opts[:block] = true - if !opts[:lang] && RedCloth::VERSION.to_s >= '4.2.0' - # simulating pre-4.2 behavior - if opts[:text].sub!(/\A\[(\w+)\]/, '') - if CodeRay::Scanners[$1].plugin_id == 'plaintext' - opts[:text] = $& + opts[:text] - else - opts[:lang] = $1 - end - end - end - if opts[:lang] && !filter_coderay - require 'coderay' - @in_bc ||= nil - format = @in_bc ? :div : :span - opts[:text] = unescape(opts[:text]) unless @in_bc - highlighted_code = CodeRay.encode opts[:text], opts[:lang], format, :stream => true - highlighted_code.sub!(/\A<(span|div)/) { |m| m + pba(@in_bc || opts) } - highlighted_code - else - "#{opts[:text]}" - end - end - def bc_open(opts) # :nodoc: - opts[:block] = true - @in_bc = opts - opts[:lang] ? '' : "" - end - def bc_close(opts) # :nodoc: - opts = @in_bc - @in_bc = nil - opts[:lang] ? '' : "
    \n" - end - def escape_pre(text) - if @in_bc ||= nil - text - else - html_esc(text, :html_escape_preformatted) - end - end - end - end - - module TextileDoc # :nodoc: - attr_accessor :filter_coderay - end - - end - -end - -CodeRay::ForRedCloth.install \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/scanner.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/scanner.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,292 +0,0 @@ -module CodeRay - - require 'coderay/helpers/plugin' - - # = Scanners - # - # This module holds the Scanner class and its subclasses. - # For example, the Ruby scanner is named CodeRay::Scanners::Ruby - # can be found in coderay/scanners/ruby. - # - # Scanner also provides methods and constants for the register - # mechanism and the [] method that returns the Scanner class - # belonging to the given lang. - # - # See PluginHost. - module Scanners - extend PluginHost - plugin_path File.dirname(__FILE__), 'scanners' - - require 'strscan' - - # = Scanner - # - # The base class for all Scanners. - # - # It is a subclass of Ruby's great +StringScanner+, which - # makes it easy to access the scanning methods inside. - # - # It is also +Enumerable+, so you can use it like an Array of - # Tokens: - # - # require 'coderay' - # - # c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;" - # - # for text, kind in c_scanner - # puts text if kind == :operator - # end - # - # # prints: (*==)++; - # - # OK, this is a very simple example :) - # You can also use +map+, +any?+, +find+ and even +sort_by+, - # if you want. - class Scanner < StringScanner - - extend Plugin - plugin_host Scanners - - # Raised if a Scanner fails while scanning - ScanError = Class.new(Exception) - - require 'coderay/helpers/word_list' - - # The default options for all scanner classes. - # - # Define @default_options for subclasses. - DEFAULT_OPTIONS = { :stream => false } - - KINDS_NOT_LOC = [:comment, :doctype] - - class << self - - # Returns if the Scanner can be used in streaming mode. - def streamable? - is_a? Streamable - end - - def normify code - code = code.to_s - if code.respond_to? :force_encoding - debug, $DEBUG = $DEBUG, false - begin - code.force_encoding 'utf-8' - code[/\z/] # raises an ArgumentError when code contains a non-UTF-8 char - rescue ArgumentError - code.force_encoding 'binary' - ensure - $DEBUG = debug - end - end - code.to_unix - end - - def file_extension extension = nil - if extension - @file_extension = extension.to_s - else - @file_extension ||= plugin_id.to_s - end - end - - end - -=begin -## Excluded for speed reasons; protected seems to make methods slow. - - # Save the StringScanner methods from being called. - # This would not be useful for highlighting. - strscan_public_methods = - StringScanner.instance_methods - - StringScanner.ancestors[1].instance_methods - protected(*strscan_public_methods) -=end - - # Create a new Scanner. - # - # * +code+ is the input String and is handled by the superclass - # StringScanner. - # * +options+ is a Hash with Symbols as keys. - # It is merged with the default options of the class (you can - # overwrite default options here.) - # * +block+ is the callback for streamed highlighting. - # - # If you set :stream to +true+ in the options, the Scanner uses a - # TokenStream with the +block+ as callback to handle the tokens. - # - # Else, a Tokens object is used. - def initialize code='', options = {}, &block - raise "I am only the basic Scanner class. I can't scan "\ - "anything. :( Use my subclasses." if self.class == Scanner - - @options = self.class::DEFAULT_OPTIONS.merge options - - super Scanner.normify(code) - - @tokens = options[:tokens] - if @options[:stream] - warn "warning in CodeRay::Scanner.new: :stream is set, "\ - "but no block was given" unless block_given? - raise NotStreamableError, self unless kind_of? Streamable - @tokens ||= TokenStream.new(&block) - else - warn "warning in CodeRay::Scanner.new: Block given, "\ - "but :stream is #{@options[:stream]}" if block_given? - @tokens ||= Tokens.new - end - @tokens.scanner = self - - setup - end - - def reset - super - reset_instance - end - - def string= code - code = Scanner.normify(code) - super code - reset_instance - end - - # More mnemonic accessor name for the input string. - alias code string - alias code= string= - - # Returns the Plugin ID for this scanner. - def lang - self.class.plugin_id - end - - # Scans the code and returns all tokens in a Tokens object. - def tokenize new_string=nil, options = {} - options = @options.merge(options) - self.string = new_string if new_string - @cached_tokens = - if @options[:stream] # :stream must have been set already - reset unless new_string - scan_tokens @tokens, options - @tokens - else - scan_tokens @tokens, options - end - end - - def tokens - @cached_tokens ||= tokenize - end - - # Whether the scanner is in streaming mode. - def streaming? - !!@options[:stream] - end - - # Traverses the tokens. - def each &block - raise ArgumentError, - 'Cannot traverse TokenStream.' if @options[:stream] - tokens.each(&block) - end - include Enumerable - - # The current line position of the scanner. - # - # Beware, this is implemented inefficiently. It should be used - # for debugging only. - def line - string[0..pos].count("\n") + 1 - end - - def column pos = self.pos - return 0 if pos <= 0 - string = string() - if string.respond_to?(:bytesize) && (defined?(@bin_string) || string.bytesize != string.size) - @bin_string ||= string.dup.force_encoding('binary') - string = @bin_string - end - pos - (string.rindex(?\n, pos) || 0) - end - - def marshal_dump - @options - end - - def marshal_load options - @options = options - end - - protected - - # Can be implemented by subclasses to do some initialization - # that has to be done once per instance. - # - # Use reset for initialization that has to be done once per - # scan. - def setup - end - - # This is the central method, and commonly the only one a - # subclass implements. - # - # Subclasses must implement this method; it must return +tokens+ - # and must only use Tokens#<< for storing scanned tokens! - def scan_tokens tokens, options - raise NotImplementedError, - "#{self.class}#scan_tokens not implemented." - end - - def reset_instance - @tokens.clear unless @options[:keep_tokens] - @cached_tokens = nil - @bin_string = nil if defined? @bin_string - end - - # Scanner error with additional status information - def raise_inspect msg, tokens, state = 'No state given!', ambit = 30 - raise ScanError, <<-EOE % [ - - -***ERROR in %s: %s (after %d tokens) - -tokens: -%s - -current line: %d column: %d pos: %d -matched: %p state: %p -bol? = %p, eos? = %p - -surrounding code: -%p ~~ %p - - -***ERROR*** - - EOE - File.basename(caller[0]), - msg, - tokens.size, - tokens.last(10).map { |t| t.inspect }.join("\n"), - line, column, pos, - matched, state, bol?, eos?, - string[pos - ambit, ambit], - string[pos, ambit], - ] - end - - end - - end -end - -class String - # I love this hack. It seems to silence all dos/unix/mac newline problems. - def to_unix - if index ?\r - gsub(/\r\n?/, "\n") - else - self - end - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/style.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/style.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -module CodeRay - - # This module holds the Style class and its subclasses. - # - # See Plugin. - module Styles - extend PluginHost - plugin_path File.dirname(__FILE__), 'styles' - - class Style - extend Plugin - plugin_host Styles - - DEFAULT_OPTIONS = { } - - end - - end - -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/token_classes.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/token_classes.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -module CodeRay - class Tokens - ClassOfKind = Hash.new do |h, k| - h[k] = k.to_s - end - ClassOfKind.update with = { - :annotation => 'at', - :attribute_name => 'an', - :attribute_name_fat => 'af', - :attribute_value => 'av', - :attribute_value_fat => 'aw', - :bin => 'bi', - :char => 'ch', - :class => 'cl', - :class_variable => 'cv', - :color => 'cr', - :comment => 'c', - :complex => 'cm', - :constant => 'co', - :content => 'k', - :decorator => 'de', - :definition => 'df', - :delimiter => 'dl', - :directive => 'di', - :doc => 'do', - :doctype => 'dt', - :doc_string => 'ds', - :entity => 'en', - :error => 'er', - :escape => 'e', - :exception => 'ex', - :float => 'fl', - :function => 'fu', - :global_variable => 'gv', - :hex => 'hx', - :imaginary => 'cm', - :important => 'im', - :include => 'ic', - :inline => 'il', - :inline_delimiter => 'idl', - :instance_variable => 'iv', - :integer => 'i', - :interpreted => 'in', - :keyword => 'kw', - :key => 'ke', - :label => 'la', - :local_variable => 'lv', - :modifier => 'mod', - :oct => 'oc', - :operator_fat => 'of', - :pre_constant => 'pc', - :pre_type => 'pt', - :predefined => 'pd', - :preprocessor => 'pp', - :pseudo_class => 'ps', - :regexp => 'rx', - :reserved => 'r', - :shell => 'sh', - :string => 's', - :symbol => 'sy', - :tag => 'ta', - :tag_fat => 'tf', - :tag_special => 'ts', - :type => 'ty', - :variable => 'v', - :value => 'vl', - :xml_text => 'xt', - - :insert => 'ins', - :delete => 'del', - :change => 'chg', - :head => 'head', - - :ident => :NO_HIGHLIGHT, # 'id' - #:operator => 'op', - :operator => :NO_HIGHLIGHT, # 'op' - :space => :NO_HIGHLIGHT, # 'sp' - :plain => :NO_HIGHLIGHT, - } - ClassOfKind[:method] = ClassOfKind[:function] - ClassOfKind[:open] = ClassOfKind[:close] = ClassOfKind[:delimiter] - ClassOfKind[:nesting_delimiter] = ClassOfKind[:delimiter] - ClassOfKind[:escape] = ClassOfKind[:delimiter] - #ClassOfKind.default = ClassOfKind[:error] or raise 'no class found for :error!' - end -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/tokens.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/tokens.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -module CodeRay - - # = Tokens - # - # The Tokens class represents a list of tokens returnd from - # a Scanner. - # - # A token is not a special object, just a two-element Array - # consisting of - # * the _token_ _kind_ (a Symbol representing the type of the token) - # * the _token_ _text_ (the original source of the token in a String) - # - # A token looks like this: - # - # [:comment, '# It looks like this'] - # [:float, '3.1415926'] - # [:error, '$^'] - # - # Some scanners also yield some kind of sub-tokens, represented by special - # token texts, namely :open and :close . - # - # The Ruby scanner, for example, splits "a string" into: - # - # [ - # [:open, :string], - # [:delimiter, '"'], - # [:content, 'a string'], - # [:delimiter, '"'], - # [:close, :string] - # ] - # - # Tokens is also the interface between Scanners and Encoders: - # The input is split and saved into a Tokens object. The Encoder - # then builds the output from this object. - # - # Thus, the syntax below becomes clear: - # - # CodeRay.scan('price = 2.59', :ruby).html - # # the Tokens object is here -------^ - # - # See how small it is? ;) - # - # Tokens gives you the power to handle pre-scanned code very easily: - # You can convert it to a webpage, a YAML file, or dump it into a gzip'ed string - # that you put in your DB. - # - # Tokens' subclass TokenStream allows streaming to save memory. - class Tokens < Array - - # The Scanner instance that created the tokens. - attr_accessor :scanner - - # Whether the object is a TokenStream. - # - # Returns false. - def stream? - false - end - - # Iterates over all tokens. - # - # If a filter is given, only tokens of that kind are yielded. - def each kind_filter = nil, &block - unless kind_filter - super(&block) - else - super() do |text, kind| - next unless kind == kind_filter - yield text, kind - end - end - end - - # Iterates over all text tokens. - # Range tokens like [:open, :string] are left out. - # - # Example: - # tokens.each_text_token { |text, kind| text.replace html_escape(text) } - def each_text_token - each do |text, kind| - next unless text.is_a? ::String - yield text, kind - end - end - - # Encode the tokens using encoder. - # - # encoder can be - # * a symbol like :html oder :statistic - # * an Encoder class - # * an Encoder object - # - # options are passed to the encoder. - def encode encoder, options = {} - unless encoder.is_a? Encoders::Encoder - unless encoder.is_a? Class - encoder_class = Encoders[encoder] - end - encoder = encoder_class.new options - end - encoder.encode_tokens self, options - end - - - # Turn into a string using Encoders::Text. - # - # +options+ are passed to the encoder if given. - def to_s options = {} - encode :text, options - end - - # Redirects unknown methods to encoder calls. - # - # For example, if you call +tokens.html+, the HTML encoder - # is used to highlight the tokens. - def method_missing meth, options = {} - Encoders[meth].new(options).encode_tokens self - end - - # Returns the tokens compressed by joining consecutive - # tokens of the same kind. - # - # This can not be undone, but should yield the same output - # in most Encoders. It basically makes the output smaller. - # - # Combined with dump, it saves space for the cost of time. - # - # If the scanner is written carefully, this is not required - - # for example, consecutive //-comment lines could already be - # joined in one comment token by the Scanner. - def optimize - last_kind = last_text = nil - new = self.class.new - for text, kind in self - if text.is_a? String - if kind == last_kind - last_text << text - else - new << [last_text, last_kind] if last_kind - last_text = text - last_kind = kind - end - else - new << [last_text, last_kind] if last_kind - last_kind = last_text = nil - new << [text, kind] - end - end - new << [last_text, last_kind] if last_kind - new - end - - # Compact the object itself; see optimize. - def optimize! - replace optimize - end - - # Ensure that all :open tokens have a correspondent :close one. - # - # TODO: Test this! - def fix - tokens = self.class.new - # Check token nesting using a stack of kinds. - opened = [] - for type, kind in self - case type - when :open - opened.push [:close, kind] - when :begin_line - opened.push [:end_line, kind] - when :close, :end_line - expected = opened.pop - if [type, kind] != expected - # Unexpected :close; decide what to do based on the kind: - # - token was never opened: delete the :close (just skip it) - next unless opened.rindex expected - # - token was opened earlier: also close tokens in between - tokens << token until (token = opened.pop) == expected - end - end - tokens << [type, kind] - end - # Close remaining opened tokens - tokens << token while token = opened.pop - tokens - end - - def fix! - replace fix - end - - # TODO: Scanner#split_into_lines - # - # Makes sure that: - # - newlines are single tokens - # (which means all other token are single-line) - # - there are no open tokens at the end the line - # - # This makes it simple for encoders that work line-oriented, - # like HTML with list-style numeration. - def split_into_lines - raise NotImplementedError - end - - def split_into_lines! - replace split_into_lines - end - - # Dumps the object into a String that can be saved - # in files or databases. - # - # The dump is created with Marshal.dump; - # In addition, it is gzipped using GZip.gzip. - # - # The returned String object includes Undumping - # so it has an #undump method. See Tokens.load. - # - # You can configure the level of compression, - # but the default value 7 should be what you want - # in most cases as it is a good compromise between - # speed and compression rate. - # - # See GZip module. - def dump gzip_level = 7 - require 'coderay/helpers/gzip_simple' - dump = Marshal.dump self - dump = dump.gzip gzip_level - dump.extend Undumping - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text_size - size = 0 - each_text_token do |t, k| - size + t.size - end - size - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text - map { |t, k| t if t.is_a? ::String }.join - end - - # Include this module to give an object an #undump - # method. - # - # The string returned by Tokens.dump includes Undumping. - module Undumping - # Calls Tokens.load with itself. - def undump - Tokens.load self - end - end - - # Undump the object using Marshal.load, then - # unzip it using GZip.gunzip. - # - # The result is commonly a Tokens object, but - # this is not guaranteed. - def Tokens.load dump - require 'coderay/helpers/gzip_simple' - dump = dump.gunzip - @dump = Marshal.load dump - end - - end - - - # = TokenStream - # - # The TokenStream class is a fake Array without elements. - # - # It redirects the method << to a block given at creation. - # - # This allows scanners and Encoders to use streaming (no - # tokens are saved, the input is highlighted the same time it - # is scanned) with the same code. - # - # See CodeRay.encode_stream and CodeRay.scan_stream - class TokenStream < Tokens - - # Whether the object is a TokenStream. - # - # Returns true. - def stream? - true - end - - # The Array is empty, but size counts the tokens given by <<. - attr_reader :size - - # Creates a new TokenStream that calls +block+ whenever - # its << method is called. - # - # Example: - # - # require 'coderay' - # - # token_stream = CodeRay::TokenStream.new do |kind, text| - # puts 'kind: %s, text size: %d.' % [kind, text.size] - # end - # - # token_stream << [:regexp, '/\d+/'] - # #-> kind: rexpexp, text size: 5. - # - def initialize &block - raise ArgumentError, 'Block expected for streaming.' unless block - @callback = block - @size = 0 - end - - # Calls +block+ with +token+ and increments size. - # - # Returns self. - def << token - @callback.call(*token) - @size += 1 - self - end - - # This method is not implemented due to speed reasons. Use Tokens. - def text_size - raise NotImplementedError, - 'This method is not implemented due to speed reasons.' - end - - # A TokenStream cannot be dumped. Use Tokens. - def dump - raise NotImplementedError, 'A TokenStream cannot be dumped.' - end - - # A TokenStream cannot be optimized. Use Tokens. - def optimize - raise NotImplementedError, 'A TokenStream cannot be optimized.' - end - - end - -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokensTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Tokens < Array - tokens = nil - assert_nothing_raised do - tokens = CodeRay::Tokens.new - end - assert_kind_of Array, tokens - end - - def test_adding_tokens - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - assert_equal tokens.size, 2 - end - - def test_dump_undump - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - tokens2 = nil - assert_nothing_raised do - tokens2 = tokens.dump.undump - end - assert_equal tokens, tokens2 - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/duo.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/duo.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -module CodeRay - - # = Duo - # - # A Duo is a convenient way to use CodeRay. You just create a Duo, - # giving it a lang (language of the input code) and a format (desired - # output format), and call Duo#highlight with the code. - # - # Duo makes it easy to re-use both scanner and encoder for a repetitive - # task. It also provides a very easy interface syntax: - # - # require 'coderay' - # CodeRay::Duo[:python, :div].highlight 'import this' - # - # Until you want to do uncommon things with CodeRay, I recommend to use - # this method, since it takes care of everything. - class Duo - - attr_accessor :lang, :format, :options - - # Create a new Duo, holding a lang and a format to highlight code. - # - # simple: - # CodeRay::Duo[:ruby, :page].highlight 'bla 42' - # - # streaming: - # CodeRay::Duo[:ruby, :page].highlight 'bar 23', :stream => true - # - # with options: - # CodeRay::Duo[:ruby, :html, :hint => :debug].highlight '????::??' - # - # alternative syntax without options: - # CodeRay::Duo[:ruby => :statistic].encode 'class << self; end' - # - # alternative syntax with options: - # CodeRay::Duo[{ :ruby => :statistic }, :do => :something].encode 'abc' - # - # The options are forwarded to scanner and encoder - # (see CodeRay.get_scanner_options). - def initialize lang = nil, format = nil, options = {} - if format == nil and lang.is_a? Hash and lang.size == 1 - @lang = lang.keys.first - @format = lang[@lang] - else - @lang = lang - @format = format - end - @options = options - end - - class << self - # To allow calls like Duo[:ruby, :html].highlight. - alias [] new - end - - # The scanner of the duo. Only created once. - def scanner - @scanner ||= CodeRay.scanner @lang, CodeRay.get_scanner_options(@options) - end - - # The encoder of the duo. Only created once. - def encoder - @encoder ||= CodeRay.encoder @format, @options - end - - # Tokenize and highlight the code using +scanner+ and +encoder+. - # - # If the :stream option is set, the Duo will go into streaming mode, - # saving memory for the cost of time. - def encode code, options = { :stream => false } - stream = options.delete :stream - options = @options.merge options - if stream - encoder.encode_stream(code, @lang, options) - else - scanner.code = code - encoder.encode_tokens(scanner.tokenize, options) - end - end - alias highlight encode - - end - -end - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoder.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoder.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -module CodeRay - - # This module holds the Encoder class and its subclasses. - # For example, the HTML encoder is named CodeRay::Encoders::HTML - # can be found in coderay/encoders/html. - # - # Encoders also provides methods and constants for the register - # mechanism and the [] method that returns the Encoder class - # belonging to the given format. - module Encoders - extend PluginHost - plugin_path File.dirname(__FILE__), 'encoders' - - # = Encoder - # - # The Encoder base class. Together with Scanner and - # Tokens, it forms the highlighting triad. - # - # Encoder instances take a Tokens object and do something with it. - # - # The most common Encoder is surely the HTML encoder - # (CodeRay::Encoders::HTML). It highlights the code in a colorful - # html page. - # If you want the highlighted code in a div or a span instead, - # use its subclasses Div and Span. - class Encoder - extend Plugin - plugin_host Encoders - - attr_reader :token_stream - - class << self - - # Returns if the Encoder can be used in streaming mode. - def streamable? - is_a? Streamable - end - - # If FILE_EXTENSION isn't defined, this method returns the - # downcase class name instead. - def const_missing sym - if sym == :FILE_EXTENSION - plugin_id - else - super - end - end - - end - - # Subclasses are to store their default options in this constant. - DEFAULT_OPTIONS = { :stream => false } - - # The options you gave the Encoder at creating. - attr_accessor :options - - # Creates a new Encoder. - # +options+ is saved and used for all encode operations, as long - # as you don't overwrite it there by passing additional options. - # - # Encoder objects provide three encode methods: - # - encode simply takes a +code+ string and a +lang+ - # - encode_tokens expects a +tokens+ object instead - # - encode_stream is like encode, but uses streaming mode. - # - # Each method has an optional +options+ parameter. These are - # added to the options you passed at creation. - def initialize options = {} - @options = self.class::DEFAULT_OPTIONS.merge options - raise "I am only the basic Encoder class. I can't encode "\ - "anything. :( Use my subclasses." if self.class == Encoder - end - - # Encode a Tokens object. - def encode_tokens tokens, options = {} - options = @options.merge options - setup options - compile tokens, options - finish options - end - - # Encode the given +code+ after tokenizing it using the Scanner - # for +lang+. - def encode code, lang, options = {} - options = @options.merge options - scanner_options = CodeRay.get_scanner_options(options) - tokens = CodeRay.scan code, lang, scanner_options - encode_tokens tokens, options - end - - # You can use highlight instead of encode, if that seems - # more clear to you. - alias highlight encode - - # Encode the given +code+ using the Scanner for +lang+ in - # streaming mode. - def encode_stream code, lang, options = {} - raise NotStreamableError, self unless kind_of? Streamable - options = @options.merge options - setup options - scanner_options = CodeRay.get_scanner_options options - @token_stream = - CodeRay.scan_stream code, lang, scanner_options, &self - finish options - end - - # Behave like a proc. The token method is converted to a proc. - def to_proc - method(:token).to_proc - end - - # Return the default file extension for outputs of this encoder. - def file_extension - self.class::FILE_EXTENSION - end - - protected - - # Called with merged options before encoding starts. - # Sets @out to an empty string. - # - # See the HTML Encoder for an example of option caching. - def setup options - @out = '' - end - - # Called with +content+ and +kind+ of the currently scanned token. - # For simple scanners, it's enougth to implement this method. - # - # By default, it calls text_token or block_token, depending on - # whether +content+ is a String. - def token content, kind - encoded_token = - if content.is_a? ::String - text_token content, kind - elsif content.is_a? ::Symbol - block_token content, kind - else - raise 'Unknown token content type: %p' % [content] - end - append_encoded_token_to_output encoded_token - end - - def append_encoded_token_to_output encoded_token - @out << encoded_token if encoded_token && defined?(@out) && @out - end - - # Called for each text token ([text, kind]), where text is a String. - def text_token text, kind - end - - # Called for each block (non-text) token ([action, kind]), - # where +action+ is a Symbol. - # - # Calls open_token, close_token, begin_line, and end_line according to - # the value of +action+. - def block_token action, kind - case action - when :open - open_token kind - when :close - close_token kind - when :begin_line - begin_line kind - when :end_line - end_line kind - else - raise 'unknown block action: %p' % action - end - end - - # Called for each block token at the start of the block ([:open, kind]). - def open_token kind - end - - # Called for each block token end of the block ([:close, kind]). - def close_token kind - end - - # Called for each line token block at the start of the line ([:begin_line, kind]). - def begin_line kind - end - - # Called for each line token block at the end of the line ([:end_line, kind]). - def end_line kind - end - - # Called with merged options after encoding starts. - # The return value is the result of encoding, typically @out. - def finish options - @out - end - - # Do the encoding. - # - # The already created +tokens+ object must be used; it can be a - # TokenStream or a Tokens object. - if RUBY_VERSION >= '1.9' - def compile tokens, options - for text, kind in tokens - token text, kind - end - end - else - def compile tokens, options - tokens.each(&self) - end - end - - end - - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders -END -div.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/div.rb -END -text.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/text.rb -END -filter.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/filter.rb -END -debug.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/debug.rb -END -lines_of_code.rb -K 25 -svn:wc:ra_dav:version-url -V 91 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/lines_of_code.rb -END -count.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/count.rb -END -xml.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/xml.rb -END -span.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/span.rb -END -yaml.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/yaml.rb -END -html.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html.rb -END -term.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/term.rb -END -statistic.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/statistic.rb -END -comment_filter.rb -K 25 -svn:wc:ra_dav:version-url -V 92 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/comment_filter.rb -END -json.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/json.rb -END -token_class_filter.rb -K 25 -svn:wc:ra_dav:version-url -V 96 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/token_class_filter.rb -END -null.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/null.rb -END -page.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/page.rb -END -_map.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/_map.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,643 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -div.rb -file - - - - -2010-09-23T14:37:45.643761Z -f0c5be15265facadc46889fbbc2613f1 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -232 - -text.rb -file - - - - -2010-09-23T14:37:45.651759Z -2914ed90921556a01a79f3fb6d549b09 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -400 - -filter.rb -file - - - - -2010-09-23T14:37:45.643761Z -08591bbd1f20dc7dce67030a294d1636 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1595 - -debug.rb -file - - - - -2010-09-23T14:37:45.643761Z -9e878089035fe9ad88c808bd1a15cf7a -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -835 - -count.rb -file - - - - -2010-09-23T14:37:45.643761Z -c262d84ddbdf37e99ff6bcf6dd6a66c2 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -230 - -lines_of_code.rb -file - - - - -2010-09-23T14:37:45.647759Z -966e154458fb6c665b6d62aa90d07e18 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2395 - -xml.rb -file - - - - -2010-09-23T14:37:45.651759Z -ada7effba81bbc28f41efeaef69dcc51 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1367 - -span.rb -file - - - - -2010-09-23T14:37:45.647759Z -e4228be45ad0f818a0e125caee838d56 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -236 - -html -dir - -yaml.rb -file - - - - -2010-09-23T14:37:45.651759Z -04c428b240ef44de896ad15827cf51df -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -264 - -html.rb -file - - - - -2010-09-23T14:37:45.643761Z -85370d734631d5ad2c034541e66e2910 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -7856 - -comment_filter.rb -file - - - - -2010-09-23T14:37:45.643761Z -32f2d1a9db6f58636d3946a43b5a60f0 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -808 - -statistic.rb -file - - - - -2010-09-23T14:37:45.647759Z -49017735ef679f73dd65795e30d8e5c7 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1800 - -term.rb -file - - - - -2010-09-23T14:37:45.647759Z -422a51cd181de3cc0a55aba7f9915c18 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4324 - -json.rb -file - - - - -2010-09-23T14:37:45.647759Z -86a2dcae2ef0a971f70386c3b794469f -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1570 - -null.rb -file - - - - -2010-09-23T14:37:45.647759Z -9c9dcf3ba3f2effa5ebd4cd37417db36 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -320 - -token_class_filter.rb -file - - - - -2010-09-23T14:37:45.651759Z -e59791dbcdce328f09240e7e5c8b3d0e -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2546 - -page.rb -file - - - - -2010-09-23T14:37:45.647759Z -26da5aef43dc8731fbd63dcffea259bf -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -262 - -_map.rb -file - - - - -2010-09-23T14:37:45.643761Z -964d7ee16d213ab2e41418257f1eb8aa -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -167 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/_map.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/comment_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/comment_filter.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/count.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/count.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/debug.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/div.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/div.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/filter.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/html.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/json.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/lines_of_code.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/lines_of_code.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/null.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/null.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/page.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/page.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/span.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/span.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/statistic.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/statistic.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/term.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/term.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/text.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/text.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/token_class_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/token_class_filter.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/xml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/yaml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/_map.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -module CodeRay -module Encoders - - map \ - :loc => :lines_of_code, - :plain => :text, - :stats => :statistic, - :terminal => :term, - :tex => :latex - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/comment_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/comment_filter.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :token_class_filter - - class CommentFilter < TokenClassFilter - - register_for :comment_filter - - DEFAULT_OPTIONS = superclass::DEFAULT_OPTIONS.merge \ - :exclude => [:comment] - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class CommentFilterTest < Test::Unit::TestCase - - def test_filtering_comments - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal <<-RUBY_FILTERED, tokens.comment_filter.text -#!/usr/bin/env ruby - -puts "Hello world!" - RUBY_FILTERED - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/count.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/count.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Encoders - - class Count < Encoder - - include Streamable - register_for :count - - protected - - def setup options - @out = 0 - end - - def token text, kind - @out += 1 - end - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/debug.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -module CodeRay -module Encoders - - # = Debug Encoder - # - # Fast encoder producing simple debug output. - # - # It is readable and diff-able and is used for testing. - # - # You cannot fully restore the tokens information from the - # output, because consecutive :space tokens are merged. - # Use Tokens#dump for caching purposes. - class Debug < Encoder - - include Streamable - register_for :debug - - FILE_EXTENSION = 'raydebug' - - protected - def text_token text, kind - if kind == :space - text - else - text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \ - "#{kind}(#{text})" - end - end - - def open_token kind - "#{kind}<" - end - - def close_token kind - ">" - end - - def begin_line kind - "#{kind}[" - end - - def end_line kind - "]" - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/div.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/div.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Div < HTML - - FILE_EXTENSION = 'div.html' - - register_for :div - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :div - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/filter.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - class Filter < Encoder - - register_for :filter - - protected - def setup options - @out = Tokens.new - end - - def text_token text, kind - [text, kind] if include_text_token? text, kind - end - - def include_text_token? text, kind - true - end - - def block_token action, kind - [action, kind] if include_block_token? action, kind - end - - def include_block_token? action, kind - true - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::Filter < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :filter - end - assert_kind_of CodeRay::Encoders::Encoder, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [i.to_s, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/html.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,305 +0,0 @@ -require 'set' - -module CodeRay -module Encoders - - # = HTML Encoder - # - # This is CodeRay's most important highlighter: - # It provides save, fast XHTML generation and CSS support. - # - # == Usage - # - # require 'coderay' - # puts CodeRay.scan('Some /code/', :ruby).html #-> a HTML page - # puts CodeRay.scan('Some /code/', :ruby).html(:wrap => :span) - # #-> Some /code/ - # puts CodeRay.scan('Some /code/', :ruby).span #-> the same - # - # puts CodeRay.scan('Some code', :ruby).html( - # :wrap => nil, - # :line_numbers => :inline, - # :css => :style - # ) - # #-> 1 Some code - # - # == Options - # - # === :tab_width - # Convert \t characters to +n+ spaces (a number.) - # Default: 8 - # - # === :css - # How to include the styles; can be :class or :style. - # - # Default: :class - # - # === :wrap - # Wrap in :page, :div, :span or nil. - # - # You can also use Encoders::Div and Encoders::Span. - # - # Default: nil - # - # === :title - # - # The title of the HTML page (works only when :wrap is set to :page.) - # - # Default: 'CodeRay output' - # - # === :line_numbers - # Include line numbers in :table, :inline, :list or nil (no line numbers) - # - # Default: nil - # - # === :line_number_start - # Where to start with line number counting. - # - # Default: 1 - # - # === :bold_every - # Make every +n+-th number appear bold. - # - # Default: 10 - # - # === :highlight_lines - # - # Highlights certain line numbers. - # Can be any Enumerable, typically just an Array or Range, of numbers. - # - # Bolding is deactivated when :highlight_lines is set. It only makes sense - # in combination with :line_numbers. - # - # Default: nil - # - # === :hint - # Include some information into the output using the title attribute. - # Can be :info (show token type on mouse-over), :info_long (with full path) - # or :debug (via inspect). - # - # Default: false - class HTML < Encoder - - include Streamable - register_for :html - - FILE_EXTENSION = 'html' - - DEFAULT_OPTIONS = { - :tab_width => 8, - - :css => :class, - - :style => :cycnus, - :wrap => nil, - :title => 'CodeRay output', - - :line_numbers => nil, - :line_number_start => 1, - :bold_every => 10, - :highlight_lines => nil, - - :hint => false, - } - - helper :output, :css - - attr_reader :css - - protected - - HTML_ESCAPE = { #:nodoc: - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - - # This was to prevent illegal HTML. - # Strange chars should still be avoided in codes. - evil_chars = Array(0x00...0x20) - [?\n, ?\t, ?\s] - evil_chars.each { |i| HTML_ESCAPE[i.chr] = ' ' } - #ansi_chars = Array(0x7f..0xff) - #ansi_chars.each { |i| HTML_ESCAPE[i.chr] = '&#%d;' % i } - # \x9 (\t) and \xA (\n) not included - #HTML_ESCAPE_PATTERN = /[\t&"><\0-\x8\xB-\x1f\x7f-\xff]/ - HTML_ESCAPE_PATTERN = /[\t"&><\0-\x8\xB-\x1f]/ - - TOKEN_KIND_TO_INFO = Hash.new { |h, kind| - h[kind] = - case kind - when :pre_constant - 'Predefined constant' - else - kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } - end - } - - TRANSPARENT_TOKEN_KINDS = [ - :delimiter, :modifier, :content, :escape, :inline_delimiter, - ].to_set - - # Generate a hint about the given +classes+ in a +hint+ style. - # - # +hint+ may be :info, :info_long or :debug. - def self.token_path_to_hint hint, classes - title = - case hint - when :info - TOKEN_KIND_TO_INFO[classes.first] - when :info_long - classes.reverse.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') - when :debug - classes.inspect - end - title ? " title=\"#{title}\"" : '' - end - - def setup options - super - - @HTML_ESCAPE = HTML_ESCAPE.dup - @HTML_ESCAPE["\t"] = ' ' * options[:tab_width] - - @opened = [nil] - @css = CSS.new options[:style] - - hint = options[:hint] - if hint and not [:debug, :info, :info_long].include? hint - raise ArgumentError, "Unknown value %p for :hint; \ - expected :info, :debug, false, or nil." % hint - end - - case options[:css] - - when :class - @css_style = Hash.new do |h, k| - c = CodeRay::Tokens::ClassOfKind[k.first] - if c == :NO_HIGHLIGHT and not hint - h[k.dup] = false - else - title = if hint - HTML.token_path_to_hint(hint, k[1..-1] << k.first) - else - '' - end - if c == :NO_HIGHLIGHT - h[k.dup] = '' % [title] - else - h[k.dup] = '' % [title, c] - end - end - end - - when :style - @css_style = Hash.new do |h, k| - if k.is_a? ::Array - styles = k.dup - else - styles = [k] - end - type = styles.first - classes = styles.map { |c| Tokens::ClassOfKind[c] } - if classes.first == :NO_HIGHLIGHT and not hint - h[k] = false - else - styles.shift if TRANSPARENT_TOKEN_KINDS.include? styles.first - title = HTML.token_path_to_hint hint, styles - style = @css[*classes] - h[k] = - if style - '' % [title, style] - else - false - end - end - end - - else - raise ArgumentError, "Unknown value %p for :css." % options[:css] - - end - end - - def finish options - not_needed = @opened.shift - @out << '' * @opened.size - unless @opened.empty? - warn '%d tokens still open: %p' % [@opened.size, @opened] - end - - @out.extend Output - @out.css = @css - @out.numerize! options[:line_numbers], options - @out.wrap! options[:wrap] - @out.apply_title! options[:title] - - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - if text =~ /#{HTML_ESCAPE_PATTERN}/o - text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] } - end - @opened[0] = type - if text != "\n" && style = @css_style[@opened] - @out << style << text << '' - else - @out << text - end - - - # token groups, eg. strings - when :open - @opened[0] = type - @out << (@css_style[@opened] || '') - @opened << type - when :close - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a token (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '' - @opened.pop - end - - # whole lines to be highlighted, eg. a deleted line in a diff - when :begin_line - @opened[0] = type - if style = @css_style[@opened] - @out << style.sub('' - end - @opened << type - when :end_line - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a line (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '' - @opened.pop - end - - else - raise 'unknown token kind: %p' % [text] - - end - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/json.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # = JSON Encoder - class JSON < Encoder - - register_for :json - FILE_EXTENSION = 'json' - - protected - def setup options - begin - require 'json' - rescue LoadError - require 'rubygems' - require 'json' - end - @out = [] - end - - def text_token text, kind - { :type => 'text', :text => text, :kind => kind } - end - - def block_token action, kind - { :type => 'block', :action => action, :kind => kind } - end - - def finish options - @out.to_json - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' -$:.delete '.' -require 'rubygems' if RUBY_VERSION < '1.9' - -class JSONEncoderTest < Test::Unit::TestCase - - def test_json_output - tokens = CodeRay.scan <<-RUBY, :ruby -puts "Hello world!" - RUBY - require 'json' - assert_equal [ - {"type"=>"text", "text"=>"puts", "kind"=>"ident"}, - {"type"=>"text", "text"=>" ", "kind"=>"space"}, - {"type"=>"block", "action"=>"open", "kind"=>"string"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"text", "text"=>"Hello world!", "kind"=>"content"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"block", "action"=>"close", "kind"=>"string"}, - {"type"=>"text", "text"=>"\n", "kind"=>"space"} - ], JSON.load(tokens.json) - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/lines_of_code.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/lines_of_code.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # Counts the LoC (Lines of Code). Returns an Integer >= 0. - # - # Alias: :loc - # - # Everything that is not comment, markup, doctype/shebang, or an empty line, - # is considered to be code. - # - # For example, - # * HTML files not containing JavaScript have 0 LoC - # * in a Java class without comments, LoC is the number of non-empty lines - # - # A Scanner class should define the token kinds that are not code in the - # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype]. - class LinesOfCode < Encoder - - register_for :lines_of_code - - NON_EMPTY_LINE = /^\s*\S.*$/ - - def compile tokens, options - if scanner = tokens.scanner - kinds_not_loc = scanner.class::KINDS_NOT_LOC - else - warn ArgumentError, 'Tokens have no scanner.' if $VERBOSE - kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC - end - code = tokens.token_class_filter :exclude => kinds_not_loc - @loc = code.text.scan(NON_EMPTY_LINE).size - end - - def finish options - @loc - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class LinesOfCodeTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::LinesOfCode < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :loc - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - assert_nothing_raised do - filter = CodeRay.encoder :lines_of_code - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - end - - def test_lines_of_code - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby - -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal 1, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 1, tokens.lines_of_code - assert_equal 1, tokens.loc - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - tokens << ["Hello\n", :world] - tokens << ["Hello\n", :space] - tokens << ["Hello\n", :comment] - assert_equal 2, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 2, tokens.lines_of_code - assert_equal 2, tokens.loc - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/null.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/null.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -module CodeRay -module Encoders - - # = Null Encoder - # - # Does nothing and returns an empty string. - class Null < Encoder - - include Streamable - register_for :null - - # Defined for faster processing - def to_proc - proc {} - end - - protected - - def token(*) - # do nothing - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/page.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/page.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Page < HTML - - FILE_EXTENSION = 'html' - - register_for :page - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :class, - :wrap => :page, - :line_numbers => :table - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/span.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/span.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Span < HTML - - FILE_EXTENSION = 'span.html' - - register_for :span - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :span - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/statistic.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/statistic.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -module CodeRay -module Encoders - - # Makes a statistic for the given tokens. - class Statistic < Encoder - - include Streamable - register_for :stats, :statistic - - attr_reader :type_stats, :real_token_count - - protected - - TypeStats = Struct.new :count, :size - - def setup options - @type_stats = Hash.new { |h, k| h[k] = TypeStats.new 0, 0 } - @real_token_count = 0 - end - - def generate tokens, options - @tokens = tokens - super - end - - def text_token text, kind - @real_token_count += 1 unless kind == :space - @type_stats[kind].count += 1 - @type_stats[kind].size += text.size - @type_stats['TOTAL'].size += text.size - @type_stats['TOTAL'].count += 1 - end - - # TODO Hierarchy handling - def block_token action, kind - @type_stats['TOTAL'].count += 1 - @type_stats['open/close'].count += 1 - end - - STATS = <<-STATS - -Code Statistics - -Tokens %8d - Non-Whitespace %8d -Bytes Total %8d - -Token Types (%d): - type count ratio size (average) -------------------------------------------------------------- -%s - STATS -# space 12007 33.81 % 1.7 - TOKEN_TYPES_ROW = <<-TKR - %-20s %8d %6.2f %% %5.1f - TKR - - def finish options - all = @type_stats['TOTAL'] - all_count, all_size = all.count, all.size - @type_stats.each do |type, stat| - stat.size /= stat.count.to_f - end - types_stats = @type_stats.sort_by { |k, v| [-v.count, k.to_s] }.map do |k, v| - TOKEN_TYPES_ROW % [k, v.count, 100.0 * v.count / all_count, v.size] - end.join - STATS % [ - all_count, @real_token_count, all_size, - @type_stats.delete_if { |k, v| k.is_a? String }.size, - types_stats - ] - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/term.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/term.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -# encoders/term.rb -# By Rob Aldred (http://robaldred.co.uk) -# Based on idea by Nathan Weizenbaum (http://nex-3.com) -# MIT License (http://www.opensource.org/licenses/mit-license.php) -# -# A CodeRay encoder that outputs code highlighted for a color terminal. -# Check out http://robaldred.co.uk - -module CodeRay - module Encoders - class Term < Encoder - register_for :term - - TOKEN_COLORS = { - :annotation => '35', - :attribute_name => '33', - :attribute_name_fat => '33', - :attribute_value => '31', - :attribute_value_fat => '31', - :bin => '1;35', - :char => {:self => '36', :delimiter => '34'}, - :class => '1;35', - :class_variable => '36', - :color => '32', - :comment => '37', - :complex => '34', - :constant => ['34', '4'], - :decoration => '35', - :definition => '1;32', - :directive => ['32', '4'], - :doc => '46', - :doctype => '1;30', - :doc_string => ['31', '4'], - :entity => '33', - :error => ['1;33', '41'], - :exception => '1;31', - :float => '1;35', - :function => '1;34', - :global_variable => '42', - :hex => '1;36', - :important => '1;31', - :include => '33', - :integer => '1;34', - :interpreted => '1;35', - :key => '35', - :label => '1;4', - :local_variable => '33', - :oct => '1;35', - :operator_name => '1;29', - :pre_constant => '1;36', - :pre_type => '1;30', - :predefined => ['4', '1;34'], - :preprocessor => '36', - :pseudo_class => '34', - :regexp => { - :content => '31', - :delimiter => '1;29', - :modifier => '35', - :function => '1;29' - }, - :reserved => '1;31', - :shell => { - :self => '42', - :content => '1;29', - :delimiter => '37', - }, - :string => { - :self => '32', - :modifier => '1;32', - :escape => '1;36', - :delimiter => '1;32', - }, - :symbol => '1;32', - :tag => '34', - :tag_fat => '1;34', - :tag_special => ['34', '4'], - :type => '1;34', - :value => '36', - :variable => '34', - :insert => '42', - :delete => '41', - :change => '44', - :head => '45', - } - TOKEN_COLORS[:keyword] = TOKEN_COLORS[:reserved] - TOKEN_COLORS[:method] = TOKEN_COLORS[:function] - TOKEN_COLORS[:imaginary] = TOKEN_COLORS[:complex] - TOKEN_COLORS[:open] = TOKEN_COLORS[:close] = TOKEN_COLORS[:nesting_delimiter] = TOKEN_COLORS[:escape] = TOKEN_COLORS[:delimiter] - - protected - - def setup(options) - @out = '' - @opened = [nil] - @subcolors = nil - end - - def finish(options) - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - - if color = (@subcolors || TOKEN_COLORS)[type] - color = color[:self] || return if Hash === color - - @out << col(color) + text.gsub("\n", col(0) + "\n" + col(color)) + col(0) - @out << col(@subcolors[:self]) if @subcolors && @subcolors[:self] - else - @out << text - end - - # token groups, eg. strings - when :open - @opened[0] = type - if color = TOKEN_COLORS[type] - if Hash === color - @subcolors = color - @out << col(color[:self]) if color[:self] - else - @subcolors = {} - @out << col(color) - end - end - @opened << type - when :close - if @opened.empty? - # nothing to close - else - @out << col(0) if (@subcolors || {})[:self] - @subcolors = nil - @opened.pop - end - - # whole lines to be highlighted, eg. a added/modified/deleted lines in a diff - when :begin_line - - when :end_line - - else - raise 'unknown token kind: %p' % [text] - end - end - - private - - def col(color) - Array(color).map { |c| "\e[#{c}m" }.join - end - end - end -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/text.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/text.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -module CodeRay -module Encoders - - class Text < Encoder - - include Streamable - register_for :text - - FILE_EXTENSION = 'txt' - - DEFAULT_OPTIONS = { - :separator => '' - } - - protected - def setup options - super - @sep = options[:separator] - end - - def text_token text, kind - text + @sep - end - - def finish options - super.chomp @sep - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/token_class_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/token_class_filter.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :filter - - class TokenClassFilter < Filter - - include Streamable - register_for :token_class_filter - - DEFAULT_OPTIONS = { - :exclude => [], - :include => :all - } - - protected - def setup options - super - @exclude = options[:exclude] - @exclude = Array(@exclude) unless @exclude == :all - @include = options[:include] - @include = Array(@include) unless @include == :all - end - - def include_text_token? text, kind - (@include == :all || @include.include?(kind)) && - !(@exclude == :all || @exclude.include?(kind)) - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokenClassFilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Encoder - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Filter - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :token_class_filter - end - assert_instance_of CodeRay::Encoders::TokenClassFilter, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - for i in 1..10 - tokens << [i.to_s, :index] - tokens << [' ', :space] if i < 10 - end - assert_equal 10, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :space).size - assert_equal 10, tokens.token_class_filter(:exclude => :space).size - assert_equal 9, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :space).size - assert_equal 9, tokens.token_class_filter(:include => :space).size - assert_equal 0, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :all).size - assert_equal 0, tokens.token_class_filter(:exclude => :all).size - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal 20, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :blubb).size - assert_equal 20, tokens.token_class_filter(:include => :blubb).size - assert_equal 30, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :index).size - assert_equal 30, tokens.token_class_filter(:exclude => :index).size - end - -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/xml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -module CodeRay -module Encoders - - # = XML Encoder - # - # Uses REXML. Very slow. - class XML < Encoder - - include Streamable - register_for :xml - - FILE_EXTENSION = 'xml' - - require 'rexml/document' - - DEFAULT_OPTIONS = { - :tab_width => 8, - :pretty => -1, - :transitive => false, - } - - protected - - def setup options - @doc = REXML::Document.new - @doc << REXML::XMLDecl.new - @tab_width = options[:tab_width] - @root = @node = @doc.add_element('coderay-tokens') - end - - def finish options - @out = '' - @doc.write @out, options[:pretty], options[:transitive], true - @out - end - - def text_token text, kind - if kind == :space - token = @node - else - token = @node.add_element kind.to_s - end - text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl| - case - when space - token << REXML::Text.new(space, true) - when tab - token << REXML::Text.new(tab, true) - when nl - token << REXML::Text.new(nl, true) - else - token << REXML::Text.new($&) - end - end - end - - def open_token kind - @node = @node.add_element kind.to_s - end - - def close_token kind - if @node == @root - raise 'no token to close!' - end - @node = @node.parent - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/yaml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -module CodeRay -module Encoders - - # = YAML Encoder - # - # Slow. - class YAML < Encoder - - register_for :yaml - - FILE_EXTENSION = 'yaml' - - protected - def compile tokens, options - require 'yaml' - @out = tokens.to_a.to_yaml - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/_map.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/_map.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -module CodeRay -module Encoders - - map \ - :loc => :lines_of_code, - :plain => :text, - :stats => :statistic, - :terminal => :term, - :tex => :latex - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/comment_filter.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/comment_filter.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :token_class_filter - - class CommentFilter < TokenClassFilter - - register_for :comment_filter - - DEFAULT_OPTIONS = superclass::DEFAULT_OPTIONS.merge \ - :exclude => [:comment] - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class CommentFilterTest < Test::Unit::TestCase - - def test_filtering_comments - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal <<-RUBY_FILTERED, tokens.comment_filter.text -#!/usr/bin/env ruby - -puts "Hello world!" - RUBY_FILTERED - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/count.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/count.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Encoders - - class Count < Encoder - - include Streamable - register_for :count - - protected - - def setup options - @out = 0 - end - - def token text, kind - @out += 1 - end - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/debug.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/debug.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -module CodeRay -module Encoders - - # = Debug Encoder - # - # Fast encoder producing simple debug output. - # - # It is readable and diff-able and is used for testing. - # - # You cannot fully restore the tokens information from the - # output, because consecutive :space tokens are merged. - # Use Tokens#dump for caching purposes. - class Debug < Encoder - - include Streamable - register_for :debug - - FILE_EXTENSION = 'raydebug' - - protected - def text_token text, kind - if kind == :space - text - else - text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \ - "#{kind}(#{text})" - end - end - - def open_token kind - "#{kind}<" - end - - def close_token kind - ">" - end - - def begin_line kind - "#{kind}[" - end - - def end_line kind - "]" - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/div.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/div.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Div < HTML - - FILE_EXTENSION = 'div.html' - - register_for :div - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :div - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/filter.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/filter.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - class Filter < Encoder - - register_for :filter - - protected - def setup options - @out = Tokens.new - end - - def text_token text, kind - [text, kind] if include_text_token? text, kind - end - - def include_text_token? text, kind - true - end - - def block_token action, kind - [action, kind] if include_block_token? action, kind - end - - def include_block_token? action, kind - true - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::Filter < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :filter - end - assert_kind_of CodeRay::Encoders::Encoder, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [i.to_s, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,305 +0,0 @@ -require 'set' - -module CodeRay -module Encoders - - # = HTML Encoder - # - # This is CodeRay's most important highlighter: - # It provides save, fast XHTML generation and CSS support. - # - # == Usage - # - # require 'coderay' - # puts CodeRay.scan('Some /code/', :ruby).html #-> a HTML page - # puts CodeRay.scan('Some /code/', :ruby).html(:wrap => :span) - # #-> Some /code/ - # puts CodeRay.scan('Some /code/', :ruby).span #-> the same - # - # puts CodeRay.scan('Some code', :ruby).html( - # :wrap => nil, - # :line_numbers => :inline, - # :css => :style - # ) - # #-> 1 Some code - # - # == Options - # - # === :tab_width - # Convert \t characters to +n+ spaces (a number.) - # Default: 8 - # - # === :css - # How to include the styles; can be :class or :style. - # - # Default: :class - # - # === :wrap - # Wrap in :page, :div, :span or nil. - # - # You can also use Encoders::Div and Encoders::Span. - # - # Default: nil - # - # === :title - # - # The title of the HTML page (works only when :wrap is set to :page.) - # - # Default: 'CodeRay output' - # - # === :line_numbers - # Include line numbers in :table, :inline, :list or nil (no line numbers) - # - # Default: nil - # - # === :line_number_start - # Where to start with line number counting. - # - # Default: 1 - # - # === :bold_every - # Make every +n+-th number appear bold. - # - # Default: 10 - # - # === :highlight_lines - # - # Highlights certain line numbers. - # Can be any Enumerable, typically just an Array or Range, of numbers. - # - # Bolding is deactivated when :highlight_lines is set. It only makes sense - # in combination with :line_numbers. - # - # Default: nil - # - # === :hint - # Include some information into the output using the title attribute. - # Can be :info (show token type on mouse-over), :info_long (with full path) - # or :debug (via inspect). - # - # Default: false - class HTML < Encoder - - include Streamable - register_for :html - - FILE_EXTENSION = 'html' - - DEFAULT_OPTIONS = { - :tab_width => 8, - - :css => :class, - - :style => :cycnus, - :wrap => nil, - :title => 'CodeRay output', - - :line_numbers => nil, - :line_number_start => 1, - :bold_every => 10, - :highlight_lines => nil, - - :hint => false, - } - - helper :output, :css - - attr_reader :css - - protected - - HTML_ESCAPE = { #:nodoc: - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - - # This was to prevent illegal HTML. - # Strange chars should still be avoided in codes. - evil_chars = Array(0x00...0x20) - [?\n, ?\t, ?\s] - evil_chars.each { |i| HTML_ESCAPE[i.chr] = ' ' } - #ansi_chars = Array(0x7f..0xff) - #ansi_chars.each { |i| HTML_ESCAPE[i.chr] = '&#%d;' % i } - # \x9 (\t) and \xA (\n) not included - #HTML_ESCAPE_PATTERN = /[\t&"><\0-\x8\xB-\x1f\x7f-\xff]/ - HTML_ESCAPE_PATTERN = /[\t"&><\0-\x8\xB-\x1f]/ - - TOKEN_KIND_TO_INFO = Hash.new { |h, kind| - h[kind] = - case kind - when :pre_constant - 'Predefined constant' - else - kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } - end - } - - TRANSPARENT_TOKEN_KINDS = [ - :delimiter, :modifier, :content, :escape, :inline_delimiter, - ].to_set - - # Generate a hint about the given +classes+ in a +hint+ style. - # - # +hint+ may be :info, :info_long or :debug. - def self.token_path_to_hint hint, classes - title = - case hint - when :info - TOKEN_KIND_TO_INFO[classes.first] - when :info_long - classes.reverse.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') - when :debug - classes.inspect - end - title ? " title=\"#{title}\"" : '' - end - - def setup options - super - - @HTML_ESCAPE = HTML_ESCAPE.dup - @HTML_ESCAPE["\t"] = ' ' * options[:tab_width] - - @opened = [nil] - @css = CSS.new options[:style] - - hint = options[:hint] - if hint and not [:debug, :info, :info_long].include? hint - raise ArgumentError, "Unknown value %p for :hint; \ - expected :info, :debug, false, or nil." % hint - end - - case options[:css] - - when :class - @css_style = Hash.new do |h, k| - c = CodeRay::Tokens::ClassOfKind[k.first] - if c == :NO_HIGHLIGHT and not hint - h[k.dup] = false - else - title = if hint - HTML.token_path_to_hint(hint, k[1..-1] << k.first) - else - '' - end - if c == :NO_HIGHLIGHT - h[k.dup] = '' % [title] - else - h[k.dup] = '' % [title, c] - end - end - end - - when :style - @css_style = Hash.new do |h, k| - if k.is_a? ::Array - styles = k.dup - else - styles = [k] - end - type = styles.first - classes = styles.map { |c| Tokens::ClassOfKind[c] } - if classes.first == :NO_HIGHLIGHT and not hint - h[k] = false - else - styles.shift if TRANSPARENT_TOKEN_KINDS.include? styles.first - title = HTML.token_path_to_hint hint, styles - style = @css[*classes] - h[k] = - if style - '' % [title, style] - else - false - end - end - end - - else - raise ArgumentError, "Unknown value %p for :css." % options[:css] - - end - end - - def finish options - not_needed = @opened.shift - @out << '' * @opened.size - unless @opened.empty? - warn '%d tokens still open: %p' % [@opened.size, @opened] - end - - @out.extend Output - @out.css = @css - @out.numerize! options[:line_numbers], options - @out.wrap! options[:wrap] - @out.apply_title! options[:title] - - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - if text =~ /#{HTML_ESCAPE_PATTERN}/o - text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] } - end - @opened[0] = type - if text != "\n" && style = @css_style[@opened] - @out << style << text << '' - else - @out << text - end - - - # token groups, eg. strings - when :open - @opened[0] = type - @out << (@css_style[@opened] || '') - @opened << type - when :close - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a token (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '' - @opened.pop - end - - # whole lines to be highlighted, eg. a deleted line in a diff - when :begin_line - @opened[0] = type - if style = @css_style[@opened] - @out << style.sub('' - end - @opened << type - when :end_line - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a line (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '' - @opened.pop - end - - else - raise 'unknown token kind: %p' % [text] - - end - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html -END -output.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb -END -numerization.rb -K 25 -svn:wc:ra_dav:version-url -V 95 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb -END -css.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/css.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -output.rb -file - - - - -2010-09-23T14:37:45.647759Z -8d0cea50dc9e6743bd10a8e0c6f1db17 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5271 - -numerization.rb -file - - - - -2010-09-23T14:37:45.647759Z -6f9a2f0d033d9af4d4804ecd8751a3f7 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4226 - -css.rb -file - - - - -2010-09-23T14:37:45.647759Z -aa931c09ed5f16abfed3b7c99f0f684d -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1626 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/css.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/numerization.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/numerization.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/output.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/output.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/css.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -module CodeRay -module Encoders - - class HTML - class CSS - - attr :stylesheet - - def CSS.load_stylesheet style = nil - CodeRay::Styles[style] - end - - def initialize style = :default - @classes = Hash.new - style = CSS.load_stylesheet style - @stylesheet = [ - style::CSS_MAIN_STYLES, - style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ') - ].join("\n") - parse style::TOKEN_COLORS - end - - def [] *styles - cl = @classes[styles.first] - return '' unless cl - style = '' - 1.upto(styles.size) do |offset| - break if style = cl[styles[offset .. -1]] - end - # warn 'Style not found: %p' % [styles] if style.empty? - return style - end - - private - - CSS_CLASS_PATTERN = / - ( # $1 = selectors - (?: - (?: \s* \. [-\w]+ )+ - \s* ,? - )+ - ) - \s* \{ \s* - ( [^\}]+ )? # $2 = style - \s* \} \s* - | - ( . ) # $3 = error - /mx - def parse stylesheet - stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error| - raise "CSS parse error: '#{error.inspect}' not recognized" if error - for selector in selectors.split(',') - classes = selector.scan(/[-\w]+/) - cl = classes.pop - @classes[cl] ||= Hash.new - @classes[cl][classes] = style.to_s.strip.delete(' ').chomp(';') - end - end - end - - end - end - -end -end - -if $0 == __FILE__ - require 'pp' - pp CodeRay::Encoders::HTML::CSS.new -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/numerization.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/numerization.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - module Output - - def numerize *args - clone.numerize!(*args) - end - -=begin NUMERIZABLE_WRAPPINGS = { - :table => [:div, :page, nil], - :inline => :all, - :list => [:div, :page, nil] - } - NUMERIZABLE_WRAPPINGS.default = :all -=end - def numerize! mode = :table, options = {} - return self unless mode - - options = DEFAULT_OPTIONS.merge options - - start = options[:line_number_start] - unless start.is_a? Integer - raise ArgumentError, "Invalid value %p for :line_number_start; Integer expected." % start - end - - #allowed_wrappings = NUMERIZABLE_WRAPPINGS[mode] - #unless allowed_wrappings == :all or allowed_wrappings.include? options[:wrap] - # raise ArgumentError, "Can't numerize, :wrap must be in %p, but is %p" % [NUMERIZABLE_WRAPPINGS, options[:wrap]] - #end - - bold_every = options[:bold_every] - highlight_lines = options[:highlight_lines] - bolding = - if bold_every == false && highlight_lines == nil - proc { |line| line.to_s } - elsif highlight_lines.is_a? Enumerable - highlight_lines = highlight_lines.to_set - proc do |line| - if highlight_lines.include? line - "#{line}" # highlighted line numbers in bold - else - line.to_s - end - end - elsif bold_every.is_a? Integer - raise ArgumentError, ":bolding can't be 0." if bold_every == 0 - proc do |line| - if line % bold_every == 0 - "#{line}" # every bold_every-th number in bold - else - line.to_s - end - end - else - raise ArgumentError, 'Invalid value %p for :bolding; false or Integer expected.' % bold_every - end - - case mode - when :inline - max_width = (start + line_count).to_s.size - line_number = start - gsub!(/^/) do - line_number_text = bolding.call line_number - indent = ' ' * (max_width - line_number.to_s.size) # TODO: Optimize (10^x) - res = "#{indent}#{line_number_text} " - line_number += 1 - res - end - - when :table - # This is really ugly. - # Because even monospace fonts seem to have different heights when bold, - # I make the newline bold, both in the code and the line numbers. - # FIXME Still not working perfect for Mr. Internet Exploder - line_numbers = (start ... start + line_count).to_a.map(&bolding).join("\n") - line_numbers << "\n" # also for Mr. MS Internet Exploder :-/ - line_numbers.gsub!(/\n/) { "\n" } - - line_numbers_table_tpl = TABLE.apply('LINE_NUMBERS', line_numbers) - gsub!(/<\/div>\n/) { '' } - gsub!(/\n/) { "\n" } - wrap_in! line_numbers_table_tpl - @wrapped_in = :div - - when :list - opened_tags = [] - gsub!(/^.*$\n?/) do |line| - line.chomp! - - open = opened_tags.join - line.scan(%r!<(/)?span[^>]*>?!) do |close,| - if close - opened_tags.pop - else - opened_tags << $& - end - end - close = '' * opened_tags.size - - "
  • #{open}#{line}#{close}
  • \n" - end - chomp!("\n") - wrap_in! LIST - @wrapped_in = :div - - else - raise ArgumentError, 'Unknown value %p for mode: expected one of %p' % - [mode, [:table, :list, :inline]] - end - - self - end - - def line_count - line_count = count("\n") - position_of_last_newline = rindex(?\n) - if position_of_last_newline - after_last_newline = self[position_of_last_newline + 1 .. -1] - ends_with_newline = after_last_newline[/\A(?:<\/span>)*\z/] - line_count += 1 if not ends_with_newline - end - line_count - end - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/output.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/output.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - # This module is included in the output String from thew HTML Encoder. - # - # It provides methods like wrap, div, page etc. - # - # Remember to use #clone instead of #dup to keep the modules the object was - # extended with. - # - # TODO: more doc. - module Output - - require 'coderay/encoders/html/numerization.rb' - - attr_accessor :css - - class << self - - # This makes Output look like a class. - # - # Example: - # - # a = Output.new 'Code' - # a.wrap! :page - def new string, css = CSS.new, element = nil - output = string.clone.extend self - output.wrapped_in = element - output.css = css - output - end - - # Raises an exception if an object that doesn't respond to to_str is extended by Output, - # to prevent users from misuse. Use Module#remove_method to disable. - def extended o - warn "The Output module is intended to extend instances of String, not #{o.class}." unless o.respond_to? :to_str - end - - def make_stylesheet css, in_tag = false - sheet = css.stylesheet - sheet = <<-CSS if in_tag - - CSS - sheet - end - - def page_template_for_css css - sheet = make_stylesheet css - PAGE.apply 'CSS', sheet - end - - # Define a new wrapper. This is meta programming. - def wrapper *wrappers - wrappers.each do |wrapper| - define_method wrapper do |*args| - wrap wrapper, *args - end - define_method "#{wrapper}!".to_sym do |*args| - wrap! wrapper, *args - end - end - end - - end - - wrapper :div, :span, :page - - def wrapped_in? element - wrapped_in == element - end - - def wrapped_in - @wrapped_in ||= nil - end - attr_writer :wrapped_in - - def wrap_in template - clone.wrap_in! template - end - - def wrap_in! template - Template.wrap! self, template, 'CONTENT' - self - end - - def apply_title! title - self.sub!(/()(<\/title>)/) { $1 + title + $2 } - self - end - - def wrap! element, *args - return self if not element or element == wrapped_in - case element - when :div - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! DIV - when :span - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! SPAN - when :page - wrap! :div if wrapped_in? nil - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? :div - wrap_in! Output.page_template_for_css(@css) - if args.first.is_a?(Hash) && title = args.first[:title] - apply_title! title - end - self - when nil - return self - else - raise "Unknown value %p for :wrap" % element - end - @wrapped_in = element - self - end - - def wrap *args - clone.wrap!(*args) - end - - def stylesheet in_tag = false - Output.make_stylesheet @css, in_tag - end - - class Template < String - - def self.wrap! str, template, target - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if template =~ target - str[0,0] = $` - str << $' - else - raise "Template target <%%%p%%> not found" % target - end - end - - def apply target, replacement - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if self =~ target - Template.new($` + replacement + $') - else - raise "Template target <%%%p%%> not found" % target - end - end - - module Simple - def ` str #` <-- for stupid editors - Template.new str - end - end - end - - extend Template::Simple - -#-- don't include the templates in docu - - SPAN = `<span class="CodeRay"><%CONTENT%></span>` - - DIV = <<-`DIV` -<div class="CodeRay"> - <div class="code"><pre><%CONTENT%></pre></div> -</div> - DIV - - TABLE = <<-`TABLE` -<table class="CodeRay"><tr> - <td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre><%LINE_NUMBERS%></pre></td> - <td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><%CONTENT%></pre></td> -</tr></table> - TABLE - # title="double click to expand" - - LIST = <<-`LIST` -<ol class="CodeRay"> -<%CONTENT%> -</ol> - LIST - - PAGE = <<-`PAGE` -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de"> -<head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - <title> - - - - -<%CONTENT%> - - - PAGE - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/css.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/css.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -module CodeRay -module Encoders - - class HTML - class CSS - - attr :stylesheet - - def CSS.load_stylesheet style = nil - CodeRay::Styles[style] - end - - def initialize style = :default - @classes = Hash.new - style = CSS.load_stylesheet style - @stylesheet = [ - style::CSS_MAIN_STYLES, - style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ') - ].join("\n") - parse style::TOKEN_COLORS - end - - def [] *styles - cl = @classes[styles.first] - return '' unless cl - style = '' - 1.upto(styles.size) do |offset| - break if style = cl[styles[offset .. -1]] - end - # warn 'Style not found: %p' % [styles] if style.empty? - return style - end - - private - - CSS_CLASS_PATTERN = / - ( # $1 = selectors - (?: - (?: \s* \. [-\w]+ )+ - \s* ,? - )+ - ) - \s* \{ \s* - ( [^\}]+ )? # $2 = style - \s* \} \s* - | - ( . ) # $3 = error - /mx - def parse stylesheet - stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error| - raise "CSS parse error: '#{error.inspect}' not recognized" if error - for selector in selectors.split(',') - classes = selector.scan(/[-\w]+/) - cl = classes.pop - @classes[cl] ||= Hash.new - @classes[cl][classes] = style.to_s.strip.delete(' ').chomp(';') - end - end - end - - end - end - -end -end - -if $0 == __FILE__ - require 'pp' - pp CodeRay::Encoders::HTML::CSS.new -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - module Output - - def numerize *args - clone.numerize!(*args) - end - -=begin NUMERIZABLE_WRAPPINGS = { - :table => [:div, :page, nil], - :inline => :all, - :list => [:div, :page, nil] - } - NUMERIZABLE_WRAPPINGS.default = :all -=end - def numerize! mode = :table, options = {} - return self unless mode - - options = DEFAULT_OPTIONS.merge options - - start = options[:line_number_start] - unless start.is_a? Integer - raise ArgumentError, "Invalid value %p for :line_number_start; Integer expected." % start - end - - #allowed_wrappings = NUMERIZABLE_WRAPPINGS[mode] - #unless allowed_wrappings == :all or allowed_wrappings.include? options[:wrap] - # raise ArgumentError, "Can't numerize, :wrap must be in %p, but is %p" % [NUMERIZABLE_WRAPPINGS, options[:wrap]] - #end - - bold_every = options[:bold_every] - highlight_lines = options[:highlight_lines] - bolding = - if bold_every == false && highlight_lines == nil - proc { |line| line.to_s } - elsif highlight_lines.is_a? Enumerable - highlight_lines = highlight_lines.to_set - proc do |line| - if highlight_lines.include? line - "#{line}" # highlighted line numbers in bold - else - line.to_s - end - end - elsif bold_every.is_a? Integer - raise ArgumentError, ":bolding can't be 0." if bold_every == 0 - proc do |line| - if line % bold_every == 0 - "#{line}" # every bold_every-th number in bold - else - line.to_s - end - end - else - raise ArgumentError, 'Invalid value %p for :bolding; false or Integer expected.' % bold_every - end - - case mode - when :inline - max_width = (start + line_count).to_s.size - line_number = start - gsub!(/^/) do - line_number_text = bolding.call line_number - indent = ' ' * (max_width - line_number.to_s.size) # TODO: Optimize (10^x) - res = "#{indent}#{line_number_text} " - line_number += 1 - res - end - - when :table - # This is really ugly. - # Because even monospace fonts seem to have different heights when bold, - # I make the newline bold, both in the code and the line numbers. - # FIXME Still not working perfect for Mr. Internet Exploder - line_numbers = (start ... start + line_count).to_a.map(&bolding).join("\n") - line_numbers << "\n" # also for Mr. MS Internet Exploder :-/ - line_numbers.gsub!(/\n/) { "\n" } - - line_numbers_table_tpl = TABLE.apply('LINE_NUMBERS', line_numbers) - gsub!(/<\/div>\n/) { '' } - gsub!(/\n/) { "\n" } - wrap_in! line_numbers_table_tpl - @wrapped_in = :div - - when :list - opened_tags = [] - gsub!(/^.*$\n?/) do |line| - line.chomp! - - open = opened_tags.join - line.scan(%r!<(/)?span[^>]*>?!) do |close,| - if close - opened_tags.pop - else - opened_tags << $& - end - end - close = '' * opened_tags.size - - "
  • #{open}#{line}#{close}
  • \n" - end - chomp!("\n") - wrap_in! LIST - @wrapped_in = :div - - else - raise ArgumentError, 'Unknown value %p for mode: expected one of %p' % - [mode, [:table, :list, :inline]] - end - - self - end - - def line_count - line_count = count("\n") - position_of_last_newline = rindex(?\n) - if position_of_last_newline - after_last_newline = self[position_of_last_newline + 1 .. -1] - ends_with_newline = after_last_newline[/\A(?:<\/span>)*\z/] - line_count += 1 if not ends_with_newline - end - line_count - end - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - # This module is included in the output String from thew HTML Encoder. - # - # It provides methods like wrap, div, page etc. - # - # Remember to use #clone instead of #dup to keep the modules the object was - # extended with. - # - # TODO: more doc. - module Output - - require 'coderay/encoders/html/numerization.rb' - - attr_accessor :css - - class << self - - # This makes Output look like a class. - # - # Example: - # - # a = Output.new 'Code' - # a.wrap! :page - def new string, css = CSS.new, element = nil - output = string.clone.extend self - output.wrapped_in = element - output.css = css - output - end - - # Raises an exception if an object that doesn't respond to to_str is extended by Output, - # to prevent users from misuse. Use Module#remove_method to disable. - def extended o - warn "The Output module is intended to extend instances of String, not #{o.class}." unless o.respond_to? :to_str - end - - def make_stylesheet css, in_tag = false - sheet = css.stylesheet - sheet = <<-CSS if in_tag - - CSS - sheet - end - - def page_template_for_css css - sheet = make_stylesheet css - PAGE.apply 'CSS', sheet - end - - # Define a new wrapper. This is meta programming. - def wrapper *wrappers - wrappers.each do |wrapper| - define_method wrapper do |*args| - wrap wrapper, *args - end - define_method "#{wrapper}!".to_sym do |*args| - wrap! wrapper, *args - end - end - end - - end - - wrapper :div, :span, :page - - def wrapped_in? element - wrapped_in == element - end - - def wrapped_in - @wrapped_in ||= nil - end - attr_writer :wrapped_in - - def wrap_in template - clone.wrap_in! template - end - - def wrap_in! template - Template.wrap! self, template, 'CONTENT' - self - end - - def apply_title! title - self.sub!(/()(<\/title>)/) { $1 + title + $2 } - self - end - - def wrap! element, *args - return self if not element or element == wrapped_in - case element - when :div - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! DIV - when :span - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! SPAN - when :page - wrap! :div if wrapped_in? nil - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? :div - wrap_in! Output.page_template_for_css(@css) - if args.first.is_a?(Hash) && title = args.first[:title] - apply_title! title - end - self - when nil - return self - else - raise "Unknown value %p for :wrap" % element - end - @wrapped_in = element - self - end - - def wrap *args - clone.wrap!(*args) - end - - def stylesheet in_tag = false - Output.make_stylesheet @css, in_tag - end - - class Template < String - - def self.wrap! str, template, target - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if template =~ target - str[0,0] = $` - str << $' - else - raise "Template target <%%%p%%> not found" % target - end - end - - def apply target, replacement - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if self =~ target - Template.new($` + replacement + $') - else - raise "Template target <%%%p%%> not found" % target - end - end - - module Simple - def ` str #` <-- for stupid editors - Template.new str - end - end - end - - extend Template::Simple - -#-- don't include the templates in docu - - SPAN = `<span class="CodeRay"><%CONTENT%></span>` - - DIV = <<-`DIV` -<div class="CodeRay"> - <div class="code"><pre><%CONTENT%></pre></div> -</div> - DIV - - TABLE = <<-`TABLE` -<table class="CodeRay"><tr> - <td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre><%LINE_NUMBERS%></pre></td> - <td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><%CONTENT%></pre></td> -</tr></table> - TABLE - # title="double click to expand" - - LIST = <<-`LIST` -<ol class="CodeRay"> -<%CONTENT%> -</ol> - LIST - - PAGE = <<-`PAGE` -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de"> -<head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - <title> - - - - -<%CONTENT%> - - - PAGE - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/json.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/json.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # = JSON Encoder - class JSON < Encoder - - register_for :json - FILE_EXTENSION = 'json' - - protected - def setup options - begin - require 'json' - rescue LoadError - require 'rubygems' - require 'json' - end - @out = [] - end - - def text_token text, kind - { :type => 'text', :text => text, :kind => kind } - end - - def block_token action, kind - { :type => 'block', :action => action, :kind => kind } - end - - def finish options - @out.to_json - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' -$:.delete '.' -require 'rubygems' if RUBY_VERSION < '1.9' - -class JSONEncoderTest < Test::Unit::TestCase - - def test_json_output - tokens = CodeRay.scan <<-RUBY, :ruby -puts "Hello world!" - RUBY - require 'json' - assert_equal [ - {"type"=>"text", "text"=>"puts", "kind"=>"ident"}, - {"type"=>"text", "text"=>" ", "kind"=>"space"}, - {"type"=>"block", "action"=>"open", "kind"=>"string"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"text", "text"=>"Hello world!", "kind"=>"content"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"block", "action"=>"close", "kind"=>"string"}, - {"type"=>"text", "text"=>"\n", "kind"=>"space"} - ], JSON.load(tokens.json) - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/lines_of_code.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/lines_of_code.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # Counts the LoC (Lines of Code). Returns an Integer >= 0. - # - # Alias: :loc - # - # Everything that is not comment, markup, doctype/shebang, or an empty line, - # is considered to be code. - # - # For example, - # * HTML files not containing JavaScript have 0 LoC - # * in a Java class without comments, LoC is the number of non-empty lines - # - # A Scanner class should define the token kinds that are not code in the - # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype]. - class LinesOfCode < Encoder - - register_for :lines_of_code - - NON_EMPTY_LINE = /^\s*\S.*$/ - - def compile tokens, options - if scanner = tokens.scanner - kinds_not_loc = scanner.class::KINDS_NOT_LOC - else - warn ArgumentError, 'Tokens have no scanner.' if $VERBOSE - kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC - end - code = tokens.token_class_filter :exclude => kinds_not_loc - @loc = code.text.scan(NON_EMPTY_LINE).size - end - - def finish options - @loc - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class LinesOfCodeTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::LinesOfCode < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :loc - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - assert_nothing_raised do - filter = CodeRay.encoder :lines_of_code - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - end - - def test_lines_of_code - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby - -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal 1, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 1, tokens.lines_of_code - assert_equal 1, tokens.loc - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - tokens << ["Hello\n", :world] - tokens << ["Hello\n", :space] - tokens << ["Hello\n", :comment] - assert_equal 2, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 2, tokens.lines_of_code - assert_equal 2, tokens.loc - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/null.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/null.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -module CodeRay -module Encoders - - # = Null Encoder - # - # Does nothing and returns an empty string. - class Null < Encoder - - include Streamable - register_for :null - - # Defined for faster processing - def to_proc - proc {} - end - - protected - - def token(*) - # do nothing - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/page.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/page.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Page < HTML - - FILE_EXTENSION = 'html' - - register_for :page - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :class, - :wrap => :page, - :line_numbers => :table - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/span.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/span.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Span < HTML - - FILE_EXTENSION = 'span.html' - - register_for :span - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :span - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/statistic.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/statistic.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -module CodeRay -module Encoders - - # Makes a statistic for the given tokens. - class Statistic < Encoder - - include Streamable - register_for :stats, :statistic - - attr_reader :type_stats, :real_token_count - - protected - - TypeStats = Struct.new :count, :size - - def setup options - @type_stats = Hash.new { |h, k| h[k] = TypeStats.new 0, 0 } - @real_token_count = 0 - end - - def generate tokens, options - @tokens = tokens - super - end - - def text_token text, kind - @real_token_count += 1 unless kind == :space - @type_stats[kind].count += 1 - @type_stats[kind].size += text.size - @type_stats['TOTAL'].size += text.size - @type_stats['TOTAL'].count += 1 - end - - # TODO Hierarchy handling - def block_token action, kind - @type_stats['TOTAL'].count += 1 - @type_stats['open/close'].count += 1 - end - - STATS = <<-STATS - -Code Statistics - -Tokens %8d - Non-Whitespace %8d -Bytes Total %8d - -Token Types (%d): - type count ratio size (average) -------------------------------------------------------------- -%s - STATS -# space 12007 33.81 % 1.7 - TOKEN_TYPES_ROW = <<-TKR - %-20s %8d %6.2f %% %5.1f - TKR - - def finish options - all = @type_stats['TOTAL'] - all_count, all_size = all.count, all.size - @type_stats.each do |type, stat| - stat.size /= stat.count.to_f - end - types_stats = @type_stats.sort_by { |k, v| [-v.count, k.to_s] }.map do |k, v| - TOKEN_TYPES_ROW % [k, v.count, 100.0 * v.count / all_count, v.size] - end.join - STATS % [ - all_count, @real_token_count, all_size, - @type_stats.delete_if { |k, v| k.is_a? String }.size, - types_stats - ] - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/term.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/term.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -# encoders/term.rb -# By Rob Aldred (http://robaldred.co.uk) -# Based on idea by Nathan Weizenbaum (http://nex-3.com) -# MIT License (http://www.opensource.org/licenses/mit-license.php) -# -# A CodeRay encoder that outputs code highlighted for a color terminal. -# Check out http://robaldred.co.uk - -module CodeRay - module Encoders - class Term < Encoder - register_for :term - - TOKEN_COLORS = { - :annotation => '35', - :attribute_name => '33', - :attribute_name_fat => '33', - :attribute_value => '31', - :attribute_value_fat => '31', - :bin => '1;35', - :char => {:self => '36', :delimiter => '34'}, - :class => '1;35', - :class_variable => '36', - :color => '32', - :comment => '37', - :complex => '34', - :constant => ['34', '4'], - :decoration => '35', - :definition => '1;32', - :directive => ['32', '4'], - :doc => '46', - :doctype => '1;30', - :doc_string => ['31', '4'], - :entity => '33', - :error => ['1;33', '41'], - :exception => '1;31', - :float => '1;35', - :function => '1;34', - :global_variable => '42', - :hex => '1;36', - :important => '1;31', - :include => '33', - :integer => '1;34', - :interpreted => '1;35', - :key => '35', - :label => '1;4', - :local_variable => '33', - :oct => '1;35', - :operator_name => '1;29', - :pre_constant => '1;36', - :pre_type => '1;30', - :predefined => ['4', '1;34'], - :preprocessor => '36', - :pseudo_class => '34', - :regexp => { - :content => '31', - :delimiter => '1;29', - :modifier => '35', - :function => '1;29' - }, - :reserved => '1;31', - :shell => { - :self => '42', - :content => '1;29', - :delimiter => '37', - }, - :string => { - :self => '32', - :modifier => '1;32', - :escape => '1;36', - :delimiter => '1;32', - }, - :symbol => '1;32', - :tag => '34', - :tag_fat => '1;34', - :tag_special => ['34', '4'], - :type => '1;34', - :value => '36', - :variable => '34', - :insert => '42', - :delete => '41', - :change => '44', - :head => '45', - } - TOKEN_COLORS[:keyword] = TOKEN_COLORS[:reserved] - TOKEN_COLORS[:method] = TOKEN_COLORS[:function] - TOKEN_COLORS[:imaginary] = TOKEN_COLORS[:complex] - TOKEN_COLORS[:open] = TOKEN_COLORS[:close] = TOKEN_COLORS[:nesting_delimiter] = TOKEN_COLORS[:escape] = TOKEN_COLORS[:delimiter] - - protected - - def setup(options) - @out = '' - @opened = [nil] - @subcolors = nil - end - - def finish(options) - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - - if color = (@subcolors || TOKEN_COLORS)[type] - color = color[:self] || return if Hash === color - - @out << col(color) + text.gsub("\n", col(0) + "\n" + col(color)) + col(0) - @out << col(@subcolors[:self]) if @subcolors && @subcolors[:self] - else - @out << text - end - - # token groups, eg. strings - when :open - @opened[0] = type - if color = TOKEN_COLORS[type] - if Hash === color - @subcolors = color - @out << col(color[:self]) if color[:self] - else - @subcolors = {} - @out << col(color) - end - end - @opened << type - when :close - if @opened.empty? - # nothing to close - else - @out << col(0) if (@subcolors || {})[:self] - @subcolors = nil - @opened.pop - end - - # whole lines to be highlighted, eg. a added/modified/deleted lines in a diff - when :begin_line - - when :end_line - - else - raise 'unknown token kind: %p' % [text] - end - end - - private - - def col(color) - Array(color).map { |c| "\e[#{c}m" }.join - end - end - end -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/text.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/text.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -module CodeRay -module Encoders - - class Text < Encoder - - include Streamable - register_for :text - - FILE_EXTENSION = 'txt' - - DEFAULT_OPTIONS = { - :separator => '' - } - - protected - def setup options - super - @sep = options[:separator] - end - - def text_token text, kind - text + @sep - end - - def finish options - super.chomp @sep - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/token_class_filter.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/token_class_filter.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :filter - - class TokenClassFilter < Filter - - include Streamable - register_for :token_class_filter - - DEFAULT_OPTIONS = { - :exclude => [], - :include => :all - } - - protected - def setup options - super - @exclude = options[:exclude] - @exclude = Array(@exclude) unless @exclude == :all - @include = options[:include] - @include = Array(@include) unless @include == :all - end - - def include_text_token? text, kind - (@include == :all || @include.include?(kind)) && - !(@exclude == :all || @exclude.include?(kind)) - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokenClassFilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Encoder - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Filter - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :token_class_filter - end - assert_instance_of CodeRay::Encoders::TokenClassFilter, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - for i in 1..10 - tokens << [i.to_s, :index] - tokens << [' ', :space] if i < 10 - end - assert_equal 10, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :space).size - assert_equal 10, tokens.token_class_filter(:exclude => :space).size - assert_equal 9, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :space).size - assert_equal 9, tokens.token_class_filter(:include => :space).size - assert_equal 0, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :all).size - assert_equal 0, tokens.token_class_filter(:exclude => :all).size - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal 20, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :blubb).size - assert_equal 20, tokens.token_class_filter(:include => :blubb).size - assert_equal 30, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :index).size - assert_equal 30, tokens.token_class_filter(:exclude => :index).size - end - -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/xml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/xml.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -module CodeRay -module Encoders - - # = XML Encoder - # - # Uses REXML. Very slow. - class XML < Encoder - - include Streamable - register_for :xml - - FILE_EXTENSION = 'xml' - - require 'rexml/document' - - DEFAULT_OPTIONS = { - :tab_width => 8, - :pretty => -1, - :transitive => false, - } - - protected - - def setup options - @doc = REXML::Document.new - @doc << REXML::XMLDecl.new - @tab_width = options[:tab_width] - @root = @node = @doc.add_element('coderay-tokens') - end - - def finish options - @out = '' - @doc.write @out, options[:pretty], options[:transitive], true - @out - end - - def text_token text, kind - if kind == :space - token = @node - else - token = @node.add_element kind.to_s - end - text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl| - case - when space - token << REXML::Text.new(space, true) - when tab - token << REXML::Text.new(tab, true) - when nl - token << REXML::Text.new(nl, true) - else - token << REXML::Text.new($&) - end - end - end - - def open_token kind - @node = @node.add_element kind.to_s - end - - def close_token kind - if @node == @root - raise 'no token to close!' - end - @node = @node.parent - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/yaml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/yaml.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -module CodeRay -module Encoders - - # = YAML Encoder - # - # Slow. - class YAML < Encoder - - register_for :yaml - - FILE_EXTENSION = 'yaml' - - protected - def compile tokens, options - require 'yaml' - @out = tokens.to_a.to_yaml - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/for_redcloth.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/for_redcloth.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -module CodeRay - - # A little hack to enable CodeRay highlighting in RedCloth. - # - # Usage: - # require 'coderay' - # require 'coderay/for_redcloth' - # RedCloth.new('@[ruby]puts "Hello, World!"@').to_html - # - # Make sure you have RedCloth 4.0.3 activated, for example by calling - # require 'rubygems' - # before RedCloth is loaded and before calling CodeRay.for_redcloth. - module ForRedCloth - - def self.install - gem 'RedCloth', '>= 4.0.3' if defined? gem - require 'redcloth' - unless RedCloth::VERSION.to_s >= '4.0.3' - if defined? gem - raise 'CodeRay.for_redcloth needs RedCloth version 4.0.3 or later. ' + - "You have #{RedCloth::VERSION}. Please gem install RedCloth." - else - $".delete 'redcloth.rb' # sorry, but it works - require 'rubygems' - return install # retry - end - end - unless RedCloth::VERSION.to_s >= '4.2.2' - warn 'CodeRay.for_redcloth works best with RedCloth version 4.2.2 or later.' - end - RedCloth::TextileDoc.send :include, ForRedCloth::TextileDoc - RedCloth::Formatters::HTML.module_eval do - def unescape(html) - replacements = { - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - html.gsub(/&(?:amp|quot|[gl]t);/) { |entity| replacements[entity] } - end - undef code, bc_open, bc_close, escape_pre - def code(opts) # :nodoc: - opts[:block] = true - if !opts[:lang] && RedCloth::VERSION.to_s >= '4.2.0' - # simulating pre-4.2 behavior - if opts[:text].sub!(/\A\[(\w+)\]/, '') - if CodeRay::Scanners[$1].plugin_id == 'plaintext' - opts[:text] = $& + opts[:text] - else - opts[:lang] = $1 - end - end - end - if opts[:lang] && !filter_coderay - require 'coderay' - @in_bc ||= nil - format = @in_bc ? :div : :span - opts[:text] = unescape(opts[:text]) unless @in_bc - highlighted_code = CodeRay.encode opts[:text], opts[:lang], format, :stream => true - highlighted_code.sub!(/\A<(span|div)/) { |m| m + pba(@in_bc || opts) } - highlighted_code - else - "#{opts[:text]}
    " - end - end - def bc_open(opts) # :nodoc: - opts[:block] = true - @in_bc = opts - opts[:lang] ? '' : "" - end - def bc_close(opts) # :nodoc: - opts = @in_bc - @in_bc = nil - opts[:lang] ? '' : "
    \n" - end - def escape_pre(text) - if @in_bc ||= nil - text - else - html_esc(text, :html_escape_preformatted) - end - end - end - end - - module TextileDoc # :nodoc: - attr_accessor :filter_coderay - end - - end - -end - -CodeRay::ForRedCloth.install \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/helpers -END -plugin.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/plugin.rb -END -file_type.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/file_type.rb -END -gzip_simple.rb -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/gzip_simple.rb -END -word_list.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/word_list.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/helpers -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -plugin.rb -file - - - - -2010-09-23T14:37:45.655760Z -a8ef4aea22392cc4012ee679fc1d15ba -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -7926 - -file_type.rb -file - - - - -2010-09-23T14:37:45.655760Z -107e3d46dc60830e87b1a4ce4d467ce8 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6494 - -gzip_simple.rb -file - - - - -2010-09-23T14:37:45.655760Z -ffacc98651f60a6fe698427bbc3c3c86 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2701 - -word_list.rb -file - - - - -2010-09-23T14:37:45.655760Z -86d05af27cbe342789f28ed543956aa5 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3229 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/file_type.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/file_type.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/gzip_simple.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/gzip_simple.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/plugin.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/plugin.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/word_list.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/word_list.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/file_type.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/file_type.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -#!/usr/bin/env ruby -module CodeRay - -# = FileType -# -# A simple filetype recognizer. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 0.1 (2005-09-01) -# -# == Documentation -# -# # determine the type of the given -# lang = FileType[ARGV.first] -# -# # return :plaintext if the file type is unknown -# lang = FileType.fetch ARGV.first, :plaintext -# -# # try the shebang line, too -# lang = FileType.fetch ARGV.first, :plaintext, true -module FileType - - UnknownFileType = Class.new Exception - - class << self - - # Try to determine the file type of the file. - # - # +filename+ is a relative or absolute path to a file. - # - # The file itself is only accessed when +read_shebang+ is set to true. - # That means you can get filetypes from files that don't exist. - def [] filename, read_shebang = false - name = File.basename filename - ext = File.extname(name).sub(/^\./, '') # from last dot, delete the leading dot - ext2 = filename.to_s[/\.(.*)/, 1] # from first dot - - type = - TypeFromExt[ext] || - TypeFromExt[ext.downcase] || - (TypeFromExt[ext2] if ext2) || - (TypeFromExt[ext2.downcase] if ext2) || - TypeFromName[name] || - TypeFromName[name.downcase] - type ||= shebang(filename) if read_shebang - - type - end - - def shebang filename - begin - File.open filename, 'r' do |f| - if first_line = f.gets - if type = first_line[TypeFromShebang] - type.to_sym - end - end - end - rescue IOError - nil - end - end - - # This works like Hash#fetch. - # - # If the filetype cannot be found, the +default+ value - # is returned. - def fetch filename, default = nil, read_shebang = false - if default and block_given? - warn 'block supersedes default value argument' - end - - unless type = self[filename, read_shebang] - return yield if block_given? - return default if default - raise UnknownFileType, 'Could not determine type of %p.' % filename - end - type - end - - end - - TypeFromExt = { - 'c' => :c, - 'css' => :css, - 'diff' => :diff, - 'dpr' => :delphi, - 'groovy' => :groovy, - 'gvy' => :groovy, - 'h' => :c, - 'htm' => :html, - 'html' => :html, - 'html.erb' => :rhtml, - 'java' => :java, - 'js' => :java_script, - 'json' => :json, - 'mab' => :ruby, - 'pas' => :delphi, - 'patch' => :diff, - 'php' => :php, - 'php3' => :php, - 'php4' => :php, - 'php5' => :php, - 'py' => :python, - 'py3' => :python, - 'pyw' => :python, - 'rake' => :ruby, - 'raydebug' => :debug, - 'rb' => :ruby, - 'rbw' => :ruby, - 'rhtml' => :rhtml, - 'rxml' => :ruby, - 'sch' => :scheme, - 'sql' => :sql, - 'ss' => :scheme, - 'xhtml' => :xhtml, - 'xml' => :xml, - 'yaml' => :yaml, - 'yml' => :yaml, - } - for cpp_alias in %w[cc cpp cp cxx c++ C hh hpp h++ cu] - TypeFromExt[cpp_alias] = :cpp - end - - TypeFromShebang = /\b(?:ruby|perl|python|sh)\b/ - - TypeFromName = { - 'Rakefile' => :ruby, - 'Rantfile' => :ruby, - } - -end - -end - -if $0 == __FILE__ - $VERBOSE = true - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FileTypeTests < Test::Unit::TestCase - - include CodeRay - - def test_fetch - assert_raise FileType::UnknownFileType do - FileType.fetch '' - end - - assert_throws :not_found do - FileType.fetch '.' do - throw :not_found - end - end - - assert_equal :default, FileType.fetch('c', :default) - - stderr, fake_stderr = $stderr, Object.new - $err = '' - def fake_stderr.write x - $err << x - end - $stderr = fake_stderr - FileType.fetch('c', :default) { } - assert_equal "block supersedes default value argument\n", $err - $stderr = stderr - end - - def test_ruby - assert_equal :ruby, FileType['test.rb'] - assert_equal :ruby, FileType['test.java.rb'] - assert_equal :java, FileType['test.rb.java'] - assert_equal :ruby, FileType['C:\\Program Files\\x\\y\\c\\test.rbw'] - assert_equal :ruby, FileType['/usr/bin/something/Rakefile'] - assert_equal :ruby, FileType['~/myapp/gem/Rantfile'] - assert_equal :ruby, FileType['./lib/tasks\repository.rake'] - assert_not_equal :ruby, FileType['test_rb'] - assert_not_equal :ruby, FileType['Makefile'] - assert_not_equal :ruby, FileType['set.rb/set'] - assert_not_equal :ruby, FileType['~/projects/blabla/rb'] - end - - def test_c - assert_equal :c, FileType['test.c'] - assert_equal :c, FileType['C:\\Program Files\\x\\y\\c\\test.h'] - assert_not_equal :c, FileType['test_c'] - assert_not_equal :c, FileType['Makefile'] - assert_not_equal :c, FileType['set.h/set'] - assert_not_equal :c, FileType['~/projects/blabla/c'] - end - - def test_cpp - assert_equal :cpp, FileType['test.c++'] - assert_equal :cpp, FileType['test.cxx'] - assert_equal :cpp, FileType['test.hh'] - assert_equal :cpp, FileType['test.hpp'] - assert_equal :cpp, FileType['test.cu'] - assert_equal :cpp, FileType['test.C'] - assert_not_equal :cpp, FileType['test.c'] - assert_not_equal :cpp, FileType['test.h'] - end - - def test_html - assert_equal :html, FileType['test.htm'] - assert_equal :xhtml, FileType['test.xhtml'] - assert_equal :xhtml, FileType['test.html.xhtml'] - assert_equal :rhtml, FileType['_form.rhtml'] - assert_equal :rhtml, FileType['_form.html.erb'] - end - - def test_yaml - assert_equal :yaml, FileType['test.yml'] - assert_equal :yaml, FileType['test.yaml'] - assert_equal :yaml, FileType['my.html.yaml'] - assert_not_equal :yaml, FileType['YAML'] - end - - def test_pathname - require 'pathname' - pn = Pathname.new 'test.rb' - assert_equal :ruby, FileType[pn] - dir = Pathname.new '/etc/var/blubb' - assert_equal :ruby, FileType[dir + pn] - assert_equal :cpp, FileType[dir + 'test.cpp'] - end - - def test_no_shebang - dir = './test' - if File.directory? dir - Dir.chdir dir do - assert_equal :c, FileType['test.c'] - end - end - end - - def test_shebang_empty_file - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { } # touch - assert_equal nil, FileType[tmpfile] - end - - def test_shebang - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { |f| f.puts '#!/usr/bin/env ruby' } - assert_equal :ruby, FileType[tmpfile, true] - end - -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/gzip_simple.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/gzip_simple.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -# =GZip Simple -# -# A simplified interface to the gzip library +zlib+ (from the Ruby Standard Library.) -# -# Author: murphy (mail to murphy rubychan de) -# -# Version: 0.2 (2005.may.28) -# -# ==Documentation -# -# See +GZip+ module and the +String+ extensions. -# -module GZip - - require 'zlib' - - # The default zipping level. 7 zips good and fast. - DEFAULT_GZIP_LEVEL = 7 - - # Unzips the given string +s+. - # - # Example: - # require 'gzip_simple' - # print GZip.gunzip(File.read('adresses.gz')) - def GZip.gunzip s - Zlib::Inflate.inflate s - end - - # Zips the given string +s+. - # - # Example: - # require 'gzip_simple' - # File.open('adresses.gz', 'w') do |file - # file.write GZip.gzip('Mum: 0123 456 789', 9) - # end - # - # If you provide a +level+, you can control how strong - # the string is compressed: - # - 0: no compression, only convert to gzip format - # - 1: compress fast - # - 7: compress more, but still fast (default) - # - 8: compress more, slower - # - 9: compress best, very slow - def GZip.gzip s, level = DEFAULT_GZIP_LEVEL - Zlib::Deflate.new(level).deflate s, Zlib::FINISH - end -end - - -# String extensions to use the GZip module. -# -# The methods gzip and gunzip provide an even more simple -# interface to the ZLib: -# -# # create a big string -# x = 'a' * 1000 -# -# # zip it -# x_gz = x.gzip -# -# # test the result -# puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] -# #-> Zipped 1000 bytes to 19 bytes. -# -# # unzipping works -# p x_gz.gunzip == x #-> true -class String - # Returns the string, unzipped. - # See GZip.gunzip - def gunzip - GZip.gunzip self - end - # Replaces the string with its unzipped value. - # See GZip.gunzip - def gunzip! - replace gunzip - end - - # Returns the string, zipped. - # +level+ is the gzip compression level, see GZip.gzip. - def gzip level = GZip::DEFAULT_GZIP_LEVEL - GZip.gzip self, level - end - # Replaces the string with its zipped value. - # See GZip.gzip. - def gzip!(*args) - replace gzip(*args) - end -end - -if $0 == __FILE__ - eval DATA.read, nil, $0, __LINE__+4 -end - -__END__ -#CODE - -# Testing / Benchmark -x = 'a' * 1000 -x_gz = x.gzip -puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] #-> Zipped 1000 bytes to 19 bytes. -p x_gz.gunzip == x #-> true - -require 'benchmark' - -INFO = 'packed to %0.3f%%' # :nodoc: - -x = Array.new(100000) { rand(255).chr + 'aaaaaaaaa' + rand(255).chr }.join -Benchmark.bm(10) do |bm| - for level in 0..9 - bm.report "zip #{level}" do - $x = x.gzip level - end - puts INFO % [100.0 * $x.size / x.size] - end - bm.report 'zip' do - $x = x.gzip - end - puts INFO % [100.0 * $x.size / x.size] - bm.report 'unzip' do - $x.gunzip - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/plugin.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/plugin.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,349 +0,0 @@ -module CodeRay - -# = PluginHost -# -# A simple subclass plugin system. -# -# Example: -# class Generators < PluginHost -# plugin_path 'app/generators' -# end -# -# class Generator -# extend Plugin -# PLUGIN_HOST = Generators -# end -# -# class FancyGenerator < Generator -# register_for :fancy -# end -# -# Generators[:fancy] #-> FancyGenerator -# # or -# CodeRay.require_plugin 'Generators/fancy' -module PluginHost - - # Raised if Encoders::[] fails because: - # * a file could not be found - # * the requested Encoder is not registered - PluginNotFound = Class.new Exception - HostNotFound = Class.new Exception - - PLUGIN_HOSTS = [] - PLUGIN_HOSTS_BY_ID = {} # dummy hash - - # Loads all plugins using list and load. - def load_all - for plugin in list - load plugin - end - end - - # Returns the Plugin for +id+. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml] - def [] id, *args, &blk - plugin = validate_id(id) - begin - plugin = plugin_hash.[] plugin, *args, &blk - end while plugin.is_a? Symbol - plugin - end - - # Alias for +[]+. - alias load [] - - def require_helper plugin_id, helper_name - path = path_to File.join(plugin_id, helper_name) - require path - end - - class << self - - # Adds the module/class to the PLUGIN_HOSTS list. - def extended mod - PLUGIN_HOSTS << mod - end - - # Warns you that you should not #include this module. - def included mod - warn "#{name} should not be included. Use extend." - end - - # Find the PluginHost for host_id. - def host_by_id host_id - unless PLUGIN_HOSTS_BY_ID.default_proc - ph = Hash.new do |h, a_host_id| - for host in PLUGIN_HOSTS - h[host.host_id] = host - end - h.fetch a_host_id, nil - end - PLUGIN_HOSTS_BY_ID.replace ph - end - PLUGIN_HOSTS_BY_ID[host_id] - end - - end - - # The path where the plugins can be found. - def plugin_path *args - unless args.empty? - @plugin_path = File.expand_path File.join(*args) - load_map - end - @plugin_path - end - - # The host's ID. - # - # If PLUGIN_HOST_ID is not set, it is simply the class name. - def host_id - if self.const_defined? :PLUGIN_HOST_ID - self::PLUGIN_HOST_ID - else - name - end - end - - # Map a plugin_id to another. - # - # Usage: Put this in a file plugin_path/_map.rb. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue, - # :maroon => :brown, - # :luna => :moon - # end - def map hash - for from, to in hash - from = validate_id from - to = validate_id to - plugin_hash[from] = to unless plugin_hash.has_key? from - end - end - - # Define the default plugin to use when no plugin is found - # for a given id. - # - # See also map. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue - # default :gray - # end - def default id = nil - if id - id = validate_id id - plugin_hash[nil] = id - else - plugin_hash[nil] - end - end - - # Every plugin must register itself for one or more - # +ids+ by calling register_for, which calls this method. - # - # See Plugin#register_for. - def register plugin, *ids - for id in ids - unless id.is_a? Symbol - raise ArgumentError, - "id must be a Symbol, but it was a #{id.class}" - end - plugin_hash[validate_id(id)] = plugin - end - end - - # A Hash of plugion_id => Plugin pairs. - def plugin_hash - @plugin_hash ||= create_plugin_hash - end - - # Returns an array of all .rb files in the plugin path. - # - # The extension .rb is not included. - def list - Dir[path_to('*')].select do |file| - File.basename(file)[/^(?!_)\w+\.rb$/] - end.map do |file| - File.basename file, '.rb' - end - end - - # Makes a map of all loaded plugins. - def inspect - map = plugin_hash.dup - map.each do |id, plugin| - map[id] = plugin.to_s[/(?>\w+)$/] - end - "#{name}[#{host_id}]#{map.inspect}" - end - -protected - # Created a new plugin list and stores it to @plugin_hash. - def create_plugin_hash - @plugin_hash = - Hash.new do |h, plugin_id| - id = validate_id(plugin_id) - path = path_to id - begin - require path - rescue LoadError => boom - if h.has_key? nil # default plugin - h[id] = h[nil] - else - raise PluginNotFound, 'Could not load plugin %p: %s' % [id, boom] - end - else - # Plugin should have registered by now - unless h.has_key? id - raise PluginNotFound, - "No #{self.name} plugin for #{id.inspect} found in #{path}." - end - end - h[id] - end - end - - # Loads the map file (see map). - # - # This is done automatically when plugin_path is called. - def load_map - mapfile = path_to '_map' - if File.exist? mapfile - require mapfile - elsif $VERBOSE - warn 'no _map.rb found for %s' % name - end - end - - # Returns the Plugin for +id+. - # Use it like Hash#fetch. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml, :default] - def fetch id, *args, &blk - plugin_hash.fetch validate_id(id), *args, &blk - end - - # Returns the expected path to the plugin file for the given id. - def path_to plugin_id - File.join plugin_path, "#{plugin_id}.rb" - end - - # Converts +id+ to a Symbol if it is a String, - # or returns +id+ if it already is a Symbol. - # - # Raises +ArgumentError+ for all other objects, or if the - # given String includes non-alphanumeric characters (\W). - def validate_id id - if id.is_a? Symbol or id.nil? - id - elsif id.is_a? String - if id[/\w+/] == id - id.downcase.to_sym - else - raise ArgumentError, "Invalid id: '#{id}' given." - end - else - raise ArgumentError, - "String or Symbol expected, but #{id.class} given." - end - end - -end - - -# = Plugin -# -# Plugins have to include this module. -# -# IMPORTANT: use extend for this module. -# -# Example: see PluginHost. -module Plugin - - def included mod - warn "#{name} should not be included. Use extend." - end - - # Register this class for the given langs. - # Example: - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # ... - # end - # - # See PluginHost.register. - def register_for *ids - plugin_host.register self, *ids - end - - # Returns the title of the plugin, or sets it to the - # optional argument +title+. - def title title = nil - if title - @title = title.to_s - else - @title ||= name[/([^:]+)$/, 1] - end - end - - # The host for this Plugin class. - def plugin_host host = nil - if host and not host.is_a? PluginHost - raise ArgumentError, - "PluginHost expected, but #{host.class} given." - end - self.const_set :PLUGIN_HOST, host if host - self::PLUGIN_HOST - end - - # Require some helper files. - # - # Example: - # - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # helper :my_helper - # - # The above example loads the file myplugin/my_helper.rb relative to the - # file in which MyPlugin was defined. - # - # You can also load a helper from a different plugin: - # - # helper 'other_plugin/helper_name' - def helper *helpers - for helper in helpers - if helper.is_a?(String) && helper[/\//] - self::PLUGIN_HOST.require_helper $`, $' - else - self::PLUGIN_HOST.require_helper plugin_id, helper.to_s - end - end - end - - # Returns the pulgin id used by the engine. - def plugin_id - name[/\w+$/].downcase - end - -end - -# Convenience method for plugin loading. -# The syntax used is: -# -# CodeRay.require_plugin '/' -# -# Returns the loaded plugin. -def self.require_plugin path - host_id, plugin_id = path.split '/', 2 - host = PluginHost.host_by_id(host_id) - raise PluginHost::HostNotFound, - "No host for #{host_id.inspect} found." unless host - host.load plugin_id -end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/word_list.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/word_list.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ -module CodeRay - -# = WordList -# -# A Hash subclass designed for mapping word lists to token types. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 1.1 (2006-Oct-19) -# -# A WordList is a Hash with some additional features. -# It is intended to be used for keyword recognition. -# -# WordList is highly optimized to be used in Scanners, -# typically to decide whether a given ident is a special token. -# -# For case insensitive words use CaseIgnoringWordList. -# -# Example: -# -# # define word arrays -# RESERVED_WORDS = %w[ -# asm break case continue default do else -# ... -# ] -# -# PREDEFINED_TYPES = %w[ -# int long short char void -# ... -# ] -# -# PREDEFINED_CONSTANTS = %w[ -# EOF NULL ... -# ] -# -# # make a WordList -# IDENT_KIND = WordList.new(:ident). -# add(RESERVED_WORDS, :reserved). -# add(PREDEFINED_TYPES, :pre_type). -# add(PREDEFINED_CONSTANTS, :pre_constant) -# -# ... -# -# def scan_tokens tokens, options -# ... -# -# elsif scan(/[A-Za-z_][A-Za-z_0-9]*/) -# # use it -# kind = IDENT_KIND[match] -# ... -class WordList < Hash - - # Creates a new WordList with +default+ as default value. - # - # You can activate +caching+ to store the results for every [] request. - # - # With caching, methods like +include?+ or +delete+ may no longer behave - # as you expect. Therefore, it is recommended to use the [] method only. - def initialize default = false, caching = false, &block - if block - raise ArgumentError, 'Can\'t combine block with caching.' if caching - super(&block) - else - if caching - super() do |h, k| - h[k] = h.fetch k, default - end - else - super default - end - end - end - - # Add words to the list and associate them with +kind+. - # - # Returns +self+, so you can concat add calls. - def add words, kind = true - words.each do |word| - self[word] = kind - end - self - end - -end - - -# A CaseIgnoringWordList is like a WordList, only that -# keys are compared case-insensitively. -# -# Ignoring the text case is realized by sending the +downcase+ message to -# all keys. -# -# Caching usually makes a CaseIgnoringWordList faster, but it has to be -# activated explicitely. -class CaseIgnoringWordList < WordList - - # Creates a new case-insensitive WordList with +default+ as default value. - # - # You can activate caching to store the results for every [] request. - # This speeds up subsequent lookups for the same word, but also - # uses memory. - def initialize default = false, caching = false - if caching - super(default, false) do |h, k| - h[k] = h.fetch k.downcase, default - end - else - super(default, false) - extend Uncached - end - end - - module Uncached # :nodoc: - def [] key - super(key.downcase) - end - end - - # Add +words+ to the list and associate them with +kind+. - def add words, kind = true - words.each do |word| - self[word.downcase] = kind - end - self - end - -end - -end - -__END__ -# check memory consumption -END { - ObjectSpace.each_object(CodeRay::CaseIgnoringWordList) do |wl| - p wl.inject(0) { |memo, key, value| memo + key.size + 24 } - end -} \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/file_type.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/file_type.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -#!/usr/bin/env ruby -module CodeRay - -# = FileType -# -# A simple filetype recognizer. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 0.1 (2005-09-01) -# -# == Documentation -# -# # determine the type of the given -# lang = FileType[ARGV.first] -# -# # return :plaintext if the file type is unknown -# lang = FileType.fetch ARGV.first, :plaintext -# -# # try the shebang line, too -# lang = FileType.fetch ARGV.first, :plaintext, true -module FileType - - UnknownFileType = Class.new Exception - - class << self - - # Try to determine the file type of the file. - # - # +filename+ is a relative or absolute path to a file. - # - # The file itself is only accessed when +read_shebang+ is set to true. - # That means you can get filetypes from files that don't exist. - def [] filename, read_shebang = false - name = File.basename filename - ext = File.extname(name).sub(/^\./, '') # from last dot, delete the leading dot - ext2 = filename.to_s[/\.(.*)/, 1] # from first dot - - type = - TypeFromExt[ext] || - TypeFromExt[ext.downcase] || - (TypeFromExt[ext2] if ext2) || - (TypeFromExt[ext2.downcase] if ext2) || - TypeFromName[name] || - TypeFromName[name.downcase] - type ||= shebang(filename) if read_shebang - - type - end - - def shebang filename - begin - File.open filename, 'r' do |f| - if first_line = f.gets - if type = first_line[TypeFromShebang] - type.to_sym - end - end - end - rescue IOError - nil - end - end - - # This works like Hash#fetch. - # - # If the filetype cannot be found, the +default+ value - # is returned. - def fetch filename, default = nil, read_shebang = false - if default and block_given? - warn 'block supersedes default value argument' - end - - unless type = self[filename, read_shebang] - return yield if block_given? - return default if default - raise UnknownFileType, 'Could not determine type of %p.' % filename - end - type - end - - end - - TypeFromExt = { - 'c' => :c, - 'css' => :css, - 'diff' => :diff, - 'dpr' => :delphi, - 'groovy' => :groovy, - 'gvy' => :groovy, - 'h' => :c, - 'htm' => :html, - 'html' => :html, - 'html.erb' => :rhtml, - 'java' => :java, - 'js' => :java_script, - 'json' => :json, - 'mab' => :ruby, - 'pas' => :delphi, - 'patch' => :diff, - 'php' => :php, - 'php3' => :php, - 'php4' => :php, - 'php5' => :php, - 'py' => :python, - 'py3' => :python, - 'pyw' => :python, - 'rake' => :ruby, - 'raydebug' => :debug, - 'rb' => :ruby, - 'rbw' => :ruby, - 'rhtml' => :rhtml, - 'rxml' => :ruby, - 'sch' => :scheme, - 'sql' => :sql, - 'ss' => :scheme, - 'xhtml' => :xhtml, - 'xml' => :xml, - 'yaml' => :yaml, - 'yml' => :yaml, - } - for cpp_alias in %w[cc cpp cp cxx c++ C hh hpp h++ cu] - TypeFromExt[cpp_alias] = :cpp - end - - TypeFromShebang = /\b(?:ruby|perl|python|sh)\b/ - - TypeFromName = { - 'Rakefile' => :ruby, - 'Rantfile' => :ruby, - } - -end - -end - -if $0 == __FILE__ - $VERBOSE = true - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FileTypeTests < Test::Unit::TestCase - - include CodeRay - - def test_fetch - assert_raise FileType::UnknownFileType do - FileType.fetch '' - end - - assert_throws :not_found do - FileType.fetch '.' do - throw :not_found - end - end - - assert_equal :default, FileType.fetch('c', :default) - - stderr, fake_stderr = $stderr, Object.new - $err = '' - def fake_stderr.write x - $err << x - end - $stderr = fake_stderr - FileType.fetch('c', :default) { } - assert_equal "block supersedes default value argument\n", $err - $stderr = stderr - end - - def test_ruby - assert_equal :ruby, FileType['test.rb'] - assert_equal :ruby, FileType['test.java.rb'] - assert_equal :java, FileType['test.rb.java'] - assert_equal :ruby, FileType['C:\\Program Files\\x\\y\\c\\test.rbw'] - assert_equal :ruby, FileType['/usr/bin/something/Rakefile'] - assert_equal :ruby, FileType['~/myapp/gem/Rantfile'] - assert_equal :ruby, FileType['./lib/tasks\repository.rake'] - assert_not_equal :ruby, FileType['test_rb'] - assert_not_equal :ruby, FileType['Makefile'] - assert_not_equal :ruby, FileType['set.rb/set'] - assert_not_equal :ruby, FileType['~/projects/blabla/rb'] - end - - def test_c - assert_equal :c, FileType['test.c'] - assert_equal :c, FileType['C:\\Program Files\\x\\y\\c\\test.h'] - assert_not_equal :c, FileType['test_c'] - assert_not_equal :c, FileType['Makefile'] - assert_not_equal :c, FileType['set.h/set'] - assert_not_equal :c, FileType['~/projects/blabla/c'] - end - - def test_cpp - assert_equal :cpp, FileType['test.c++'] - assert_equal :cpp, FileType['test.cxx'] - assert_equal :cpp, FileType['test.hh'] - assert_equal :cpp, FileType['test.hpp'] - assert_equal :cpp, FileType['test.cu'] - assert_equal :cpp, FileType['test.C'] - assert_not_equal :cpp, FileType['test.c'] - assert_not_equal :cpp, FileType['test.h'] - end - - def test_html - assert_equal :html, FileType['test.htm'] - assert_equal :xhtml, FileType['test.xhtml'] - assert_equal :xhtml, FileType['test.html.xhtml'] - assert_equal :rhtml, FileType['_form.rhtml'] - assert_equal :rhtml, FileType['_form.html.erb'] - end - - def test_yaml - assert_equal :yaml, FileType['test.yml'] - assert_equal :yaml, FileType['test.yaml'] - assert_equal :yaml, FileType['my.html.yaml'] - assert_not_equal :yaml, FileType['YAML'] - end - - def test_pathname - require 'pathname' - pn = Pathname.new 'test.rb' - assert_equal :ruby, FileType[pn] - dir = Pathname.new '/etc/var/blubb' - assert_equal :ruby, FileType[dir + pn] - assert_equal :cpp, FileType[dir + 'test.cpp'] - end - - def test_no_shebang - dir = './test' - if File.directory? dir - Dir.chdir dir do - assert_equal :c, FileType['test.c'] - end - end - end - - def test_shebang_empty_file - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { } # touch - assert_equal nil, FileType[tmpfile] - end - - def test_shebang - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { |f| f.puts '#!/usr/bin/env ruby' } - assert_equal :ruby, FileType[tmpfile, true] - end - -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/gzip_simple.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/gzip_simple.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -# =GZip Simple -# -# A simplified interface to the gzip library +zlib+ (from the Ruby Standard Library.) -# -# Author: murphy (mail to murphy rubychan de) -# -# Version: 0.2 (2005.may.28) -# -# ==Documentation -# -# See +GZip+ module and the +String+ extensions. -# -module GZip - - require 'zlib' - - # The default zipping level. 7 zips good and fast. - DEFAULT_GZIP_LEVEL = 7 - - # Unzips the given string +s+. - # - # Example: - # require 'gzip_simple' - # print GZip.gunzip(File.read('adresses.gz')) - def GZip.gunzip s - Zlib::Inflate.inflate s - end - - # Zips the given string +s+. - # - # Example: - # require 'gzip_simple' - # File.open('adresses.gz', 'w') do |file - # file.write GZip.gzip('Mum: 0123 456 789', 9) - # end - # - # If you provide a +level+, you can control how strong - # the string is compressed: - # - 0: no compression, only convert to gzip format - # - 1: compress fast - # - 7: compress more, but still fast (default) - # - 8: compress more, slower - # - 9: compress best, very slow - def GZip.gzip s, level = DEFAULT_GZIP_LEVEL - Zlib::Deflate.new(level).deflate s, Zlib::FINISH - end -end - - -# String extensions to use the GZip module. -# -# The methods gzip and gunzip provide an even more simple -# interface to the ZLib: -# -# # create a big string -# x = 'a' * 1000 -# -# # zip it -# x_gz = x.gzip -# -# # test the result -# puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] -# #-> Zipped 1000 bytes to 19 bytes. -# -# # unzipping works -# p x_gz.gunzip == x #-> true -class String - # Returns the string, unzipped. - # See GZip.gunzip - def gunzip - GZip.gunzip self - end - # Replaces the string with its unzipped value. - # See GZip.gunzip - def gunzip! - replace gunzip - end - - # Returns the string, zipped. - # +level+ is the gzip compression level, see GZip.gzip. - def gzip level = GZip::DEFAULT_GZIP_LEVEL - GZip.gzip self, level - end - # Replaces the string with its zipped value. - # See GZip.gzip. - def gzip!(*args) - replace gzip(*args) - end -end - -if $0 == __FILE__ - eval DATA.read, nil, $0, __LINE__+4 -end - -__END__ -#CODE - -# Testing / Benchmark -x = 'a' * 1000 -x_gz = x.gzip -puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] #-> Zipped 1000 bytes to 19 bytes. -p x_gz.gunzip == x #-> true - -require 'benchmark' - -INFO = 'packed to %0.3f%%' # :nodoc: - -x = Array.new(100000) { rand(255).chr + 'aaaaaaaaa' + rand(255).chr }.join -Benchmark.bm(10) do |bm| - for level in 0..9 - bm.report "zip #{level}" do - $x = x.gzip level - end - puts INFO % [100.0 * $x.size / x.size] - end - bm.report 'zip' do - $x = x.gzip - end - puts INFO % [100.0 * $x.size / x.size] - bm.report 'unzip' do - $x.gunzip - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/plugin.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/plugin.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,349 +0,0 @@ -module CodeRay - -# = PluginHost -# -# A simple subclass plugin system. -# -# Example: -# class Generators < PluginHost -# plugin_path 'app/generators' -# end -# -# class Generator -# extend Plugin -# PLUGIN_HOST = Generators -# end -# -# class FancyGenerator < Generator -# register_for :fancy -# end -# -# Generators[:fancy] #-> FancyGenerator -# # or -# CodeRay.require_plugin 'Generators/fancy' -module PluginHost - - # Raised if Encoders::[] fails because: - # * a file could not be found - # * the requested Encoder is not registered - PluginNotFound = Class.new Exception - HostNotFound = Class.new Exception - - PLUGIN_HOSTS = [] - PLUGIN_HOSTS_BY_ID = {} # dummy hash - - # Loads all plugins using list and load. - def load_all - for plugin in list - load plugin - end - end - - # Returns the Plugin for +id+. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml] - def [] id, *args, &blk - plugin = validate_id(id) - begin - plugin = plugin_hash.[] plugin, *args, &blk - end while plugin.is_a? Symbol - plugin - end - - # Alias for +[]+. - alias load [] - - def require_helper plugin_id, helper_name - path = path_to File.join(plugin_id, helper_name) - require path - end - - class << self - - # Adds the module/class to the PLUGIN_HOSTS list. - def extended mod - PLUGIN_HOSTS << mod - end - - # Warns you that you should not #include this module. - def included mod - warn "#{name} should not be included. Use extend." - end - - # Find the PluginHost for host_id. - def host_by_id host_id - unless PLUGIN_HOSTS_BY_ID.default_proc - ph = Hash.new do |h, a_host_id| - for host in PLUGIN_HOSTS - h[host.host_id] = host - end - h.fetch a_host_id, nil - end - PLUGIN_HOSTS_BY_ID.replace ph - end - PLUGIN_HOSTS_BY_ID[host_id] - end - - end - - # The path where the plugins can be found. - def plugin_path *args - unless args.empty? - @plugin_path = File.expand_path File.join(*args) - load_map - end - @plugin_path - end - - # The host's ID. - # - # If PLUGIN_HOST_ID is not set, it is simply the class name. - def host_id - if self.const_defined? :PLUGIN_HOST_ID - self::PLUGIN_HOST_ID - else - name - end - end - - # Map a plugin_id to another. - # - # Usage: Put this in a file plugin_path/_map.rb. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue, - # :maroon => :brown, - # :luna => :moon - # end - def map hash - for from, to in hash - from = validate_id from - to = validate_id to - plugin_hash[from] = to unless plugin_hash.has_key? from - end - end - - # Define the default plugin to use when no plugin is found - # for a given id. - # - # See also map. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue - # default :gray - # end - def default id = nil - if id - id = validate_id id - plugin_hash[nil] = id - else - plugin_hash[nil] - end - end - - # Every plugin must register itself for one or more - # +ids+ by calling register_for, which calls this method. - # - # See Plugin#register_for. - def register plugin, *ids - for id in ids - unless id.is_a? Symbol - raise ArgumentError, - "id must be a Symbol, but it was a #{id.class}" - end - plugin_hash[validate_id(id)] = plugin - end - end - - # A Hash of plugion_id => Plugin pairs. - def plugin_hash - @plugin_hash ||= create_plugin_hash - end - - # Returns an array of all .rb files in the plugin path. - # - # The extension .rb is not included. - def list - Dir[path_to('*')].select do |file| - File.basename(file)[/^(?!_)\w+\.rb$/] - end.map do |file| - File.basename file, '.rb' - end - end - - # Makes a map of all loaded plugins. - def inspect - map = plugin_hash.dup - map.each do |id, plugin| - map[id] = plugin.to_s[/(?>\w+)$/] - end - "#{name}[#{host_id}]#{map.inspect}" - end - -protected - # Created a new plugin list and stores it to @plugin_hash. - def create_plugin_hash - @plugin_hash = - Hash.new do |h, plugin_id| - id = validate_id(plugin_id) - path = path_to id - begin - require path - rescue LoadError => boom - if h.has_key? nil # default plugin - h[id] = h[nil] - else - raise PluginNotFound, 'Could not load plugin %p: %s' % [id, boom] - end - else - # Plugin should have registered by now - unless h.has_key? id - raise PluginNotFound, - "No #{self.name} plugin for #{id.inspect} found in #{path}." - end - end - h[id] - end - end - - # Loads the map file (see map). - # - # This is done automatically when plugin_path is called. - def load_map - mapfile = path_to '_map' - if File.exist? mapfile - require mapfile - elsif $VERBOSE - warn 'no _map.rb found for %s' % name - end - end - - # Returns the Plugin for +id+. - # Use it like Hash#fetch. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml, :default] - def fetch id, *args, &blk - plugin_hash.fetch validate_id(id), *args, &blk - end - - # Returns the expected path to the plugin file for the given id. - def path_to plugin_id - File.join plugin_path, "#{plugin_id}.rb" - end - - # Converts +id+ to a Symbol if it is a String, - # or returns +id+ if it already is a Symbol. - # - # Raises +ArgumentError+ for all other objects, or if the - # given String includes non-alphanumeric characters (\W). - def validate_id id - if id.is_a? Symbol or id.nil? - id - elsif id.is_a? String - if id[/\w+/] == id - id.downcase.to_sym - else - raise ArgumentError, "Invalid id: '#{id}' given." - end - else - raise ArgumentError, - "String or Symbol expected, but #{id.class} given." - end - end - -end - - -# = Plugin -# -# Plugins have to include this module. -# -# IMPORTANT: use extend for this module. -# -# Example: see PluginHost. -module Plugin - - def included mod - warn "#{name} should not be included. Use extend." - end - - # Register this class for the given langs. - # Example: - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # ... - # end - # - # See PluginHost.register. - def register_for *ids - plugin_host.register self, *ids - end - - # Returns the title of the plugin, or sets it to the - # optional argument +title+. - def title title = nil - if title - @title = title.to_s - else - @title ||= name[/([^:]+)$/, 1] - end - end - - # The host for this Plugin class. - def plugin_host host = nil - if host and not host.is_a? PluginHost - raise ArgumentError, - "PluginHost expected, but #{host.class} given." - end - self.const_set :PLUGIN_HOST, host if host - self::PLUGIN_HOST - end - - # Require some helper files. - # - # Example: - # - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # helper :my_helper - # - # The above example loads the file myplugin/my_helper.rb relative to the - # file in which MyPlugin was defined. - # - # You can also load a helper from a different plugin: - # - # helper 'other_plugin/helper_name' - def helper *helpers - for helper in helpers - if helper.is_a?(String) && helper[/\//] - self::PLUGIN_HOST.require_helper $`, $' - else - self::PLUGIN_HOST.require_helper plugin_id, helper.to_s - end - end - end - - # Returns the pulgin id used by the engine. - def plugin_id - name[/\w+$/].downcase - end - -end - -# Convenience method for plugin loading. -# The syntax used is: -# -# CodeRay.require_plugin '/' -# -# Returns the loaded plugin. -def self.require_plugin path - host_id, plugin_id = path.split '/', 2 - host = PluginHost.host_by_id(host_id) - raise PluginHost::HostNotFound, - "No host for #{host_id.inspect} found." unless host - host.load plugin_id -end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/word_list.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/word_list.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ -module CodeRay - -# = WordList -# -# A Hash subclass designed for mapping word lists to token types. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 1.1 (2006-Oct-19) -# -# A WordList is a Hash with some additional features. -# It is intended to be used for keyword recognition. -# -# WordList is highly optimized to be used in Scanners, -# typically to decide whether a given ident is a special token. -# -# For case insensitive words use CaseIgnoringWordList. -# -# Example: -# -# # define word arrays -# RESERVED_WORDS = %w[ -# asm break case continue default do else -# ... -# ] -# -# PREDEFINED_TYPES = %w[ -# int long short char void -# ... -# ] -# -# PREDEFINED_CONSTANTS = %w[ -# EOF NULL ... -# ] -# -# # make a WordList -# IDENT_KIND = WordList.new(:ident). -# add(RESERVED_WORDS, :reserved). -# add(PREDEFINED_TYPES, :pre_type). -# add(PREDEFINED_CONSTANTS, :pre_constant) -# -# ... -# -# def scan_tokens tokens, options -# ... -# -# elsif scan(/[A-Za-z_][A-Za-z_0-9]*/) -# # use it -# kind = IDENT_KIND[match] -# ... -class WordList < Hash - - # Creates a new WordList with +default+ as default value. - # - # You can activate +caching+ to store the results for every [] request. - # - # With caching, methods like +include?+ or +delete+ may no longer behave - # as you expect. Therefore, it is recommended to use the [] method only. - def initialize default = false, caching = false, &block - if block - raise ArgumentError, 'Can\'t combine block with caching.' if caching - super(&block) - else - if caching - super() do |h, k| - h[k] = h.fetch k, default - end - else - super default - end - end - end - - # Add words to the list and associate them with +kind+. - # - # Returns +self+, so you can concat add calls. - def add words, kind = true - words.each do |word| - self[word] = kind - end - self - end - -end - - -# A CaseIgnoringWordList is like a WordList, only that -# keys are compared case-insensitively. -# -# Ignoring the text case is realized by sending the +downcase+ message to -# all keys. -# -# Caching usually makes a CaseIgnoringWordList faster, but it has to be -# activated explicitely. -class CaseIgnoringWordList < WordList - - # Creates a new case-insensitive WordList with +default+ as default value. - # - # You can activate caching to store the results for every [] request. - # This speeds up subsequent lookups for the same word, but also - # uses memory. - def initialize default = false, caching = false - if caching - super(default, false) do |h, k| - h[k] = h.fetch k.downcase, default - end - else - super(default, false) - extend Uncached - end - end - - module Uncached # :nodoc: - def [] key - super(key.downcase) - end - end - - # Add +words+ to the list and associate them with +kind+. - def add words, kind = true - words.each do |word| - self[word.downcase] = kind - end - self - end - -end - -end - -__END__ -# check memory consumption -END { - ObjectSpace.each_object(CodeRay::CaseIgnoringWordList) do |wl| - p wl.inject(0) { |memo, key, value| memo + key.size + 24 } - end -} \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanner.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanner.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,292 +0,0 @@ -module CodeRay - - require 'coderay/helpers/plugin' - - # = Scanners - # - # This module holds the Scanner class and its subclasses. - # For example, the Ruby scanner is named CodeRay::Scanners::Ruby - # can be found in coderay/scanners/ruby. - # - # Scanner also provides methods and constants for the register - # mechanism and the [] method that returns the Scanner class - # belonging to the given lang. - # - # See PluginHost. - module Scanners - extend PluginHost - plugin_path File.dirname(__FILE__), 'scanners' - - require 'strscan' - - # = Scanner - # - # The base class for all Scanners. - # - # It is a subclass of Ruby's great +StringScanner+, which - # makes it easy to access the scanning methods inside. - # - # It is also +Enumerable+, so you can use it like an Array of - # Tokens: - # - # require 'coderay' - # - # c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;" - # - # for text, kind in c_scanner - # puts text if kind == :operator - # end - # - # # prints: (*==)++; - # - # OK, this is a very simple example :) - # You can also use +map+, +any?+, +find+ and even +sort_by+, - # if you want. - class Scanner < StringScanner - - extend Plugin - plugin_host Scanners - - # Raised if a Scanner fails while scanning - ScanError = Class.new(Exception) - - require 'coderay/helpers/word_list' - - # The default options for all scanner classes. - # - # Define @default_options for subclasses. - DEFAULT_OPTIONS = { :stream => false } - - KINDS_NOT_LOC = [:comment, :doctype] - - class << self - - # Returns if the Scanner can be used in streaming mode. - def streamable? - is_a? Streamable - end - - def normify code - code = code.to_s - if code.respond_to? :force_encoding - debug, $DEBUG = $DEBUG, false - begin - code.force_encoding 'utf-8' - code[/\z/] # raises an ArgumentError when code contains a non-UTF-8 char - rescue ArgumentError - code.force_encoding 'binary' - ensure - $DEBUG = debug - end - end - code.to_unix - end - - def file_extension extension = nil - if extension - @file_extension = extension.to_s - else - @file_extension ||= plugin_id.to_s - end - end - - end - -=begin -## Excluded for speed reasons; protected seems to make methods slow. - - # Save the StringScanner methods from being called. - # This would not be useful for highlighting. - strscan_public_methods = - StringScanner.instance_methods - - StringScanner.ancestors[1].instance_methods - protected(*strscan_public_methods) -=end - - # Create a new Scanner. - # - # * +code+ is the input String and is handled by the superclass - # StringScanner. - # * +options+ is a Hash with Symbols as keys. - # It is merged with the default options of the class (you can - # overwrite default options here.) - # * +block+ is the callback for streamed highlighting. - # - # If you set :stream to +true+ in the options, the Scanner uses a - # TokenStream with the +block+ as callback to handle the tokens. - # - # Else, a Tokens object is used. - def initialize code='', options = {}, &block - raise "I am only the basic Scanner class. I can't scan "\ - "anything. :( Use my subclasses." if self.class == Scanner - - @options = self.class::DEFAULT_OPTIONS.merge options - - super Scanner.normify(code) - - @tokens = options[:tokens] - if @options[:stream] - warn "warning in CodeRay::Scanner.new: :stream is set, "\ - "but no block was given" unless block_given? - raise NotStreamableError, self unless kind_of? Streamable - @tokens ||= TokenStream.new(&block) - else - warn "warning in CodeRay::Scanner.new: Block given, "\ - "but :stream is #{@options[:stream]}" if block_given? - @tokens ||= Tokens.new - end - @tokens.scanner = self - - setup - end - - def reset - super - reset_instance - end - - def string= code - code = Scanner.normify(code) - super code - reset_instance - end - - # More mnemonic accessor name for the input string. - alias code string - alias code= string= - - # Returns the Plugin ID for this scanner. - def lang - self.class.plugin_id - end - - # Scans the code and returns all tokens in a Tokens object. - def tokenize new_string=nil, options = {} - options = @options.merge(options) - self.string = new_string if new_string - @cached_tokens = - if @options[:stream] # :stream must have been set already - reset unless new_string - scan_tokens @tokens, options - @tokens - else - scan_tokens @tokens, options - end - end - - def tokens - @cached_tokens ||= tokenize - end - - # Whether the scanner is in streaming mode. - def streaming? - !!@options[:stream] - end - - # Traverses the tokens. - def each &block - raise ArgumentError, - 'Cannot traverse TokenStream.' if @options[:stream] - tokens.each(&block) - end - include Enumerable - - # The current line position of the scanner. - # - # Beware, this is implemented inefficiently. It should be used - # for debugging only. - def line - string[0..pos].count("\n") + 1 - end - - def column pos = self.pos - return 0 if pos <= 0 - string = string() - if string.respond_to?(:bytesize) && (defined?(@bin_string) || string.bytesize != string.size) - @bin_string ||= string.dup.force_encoding('binary') - string = @bin_string - end - pos - (string.rindex(?\n, pos) || 0) - end - - def marshal_dump - @options - end - - def marshal_load options - @options = options - end - - protected - - # Can be implemented by subclasses to do some initialization - # that has to be done once per instance. - # - # Use reset for initialization that has to be done once per - # scan. - def setup - end - - # This is the central method, and commonly the only one a - # subclass implements. - # - # Subclasses must implement this method; it must return +tokens+ - # and must only use Tokens#<< for storing scanned tokens! - def scan_tokens tokens, options - raise NotImplementedError, - "#{self.class}#scan_tokens not implemented." - end - - def reset_instance - @tokens.clear unless @options[:keep_tokens] - @cached_tokens = nil - @bin_string = nil if defined? @bin_string - end - - # Scanner error with additional status information - def raise_inspect msg, tokens, state = 'No state given!', ambit = 30 - raise ScanError, <<-EOE % [ - - -***ERROR in %s: %s (after %d tokens) - -tokens: -%s - -current line: %d column: %d pos: %d -matched: %p state: %p -bol? = %p, eos? = %p - -surrounding code: -%p ~~ %p - - -***ERROR*** - - EOE - File.basename(caller[0]), - msg, - tokens.size, - tokens.last(10).map { |t| t.inspect }.join("\n"), - line, column, pos, - matched, state, bol?, eos?, - string[pos - ambit, ambit], - string[pos, ambit], - ] - end - - end - - end -end - -class String - # I love this hack. It seems to silence all dos/unix/mac newline problems. - def to_unix - if index ?\r - gsub(/\r\n?/, "\n") - else - self - end - end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners -END -java.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java.rb -END -python.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/python.rb -END -ruby.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby.rb -END -cpp.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/cpp.rb -END -c.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/c.rb -END -groovy.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/groovy.rb -END -debug.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/debug.rb -END -rhtml.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/rhtml.rb -END -php.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/php.rb -END -css.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/css.rb -END -sql.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/sql.rb -END -xml.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/xml.rb -END -yaml.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/yaml.rb -END -scheme.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/scheme.rb -END -html.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/html.rb -END -java_script.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java_script.rb -END -delphi.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/delphi.rb -END -nitro_xhtml.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/nitro_xhtml.rb -END -plaintext.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/plaintext.rb -END -diff.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/diff.rb -END -json.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/json.rb -END -_map.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/_map.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,782 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -ruby -dir - -java -dir - -ruby.rb -file - - - - -2010-09-23T14:37:45.675761Z -4a49513a2bda4483a1bfaeba8e57fb2c -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -13715 - -python.rb -file - - - - -2010-09-23T14:37:45.675761Z -939e009d9b197cb6437646be82c02982 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -9190 - -java.rb -file - - - - -2010-09-23T14:37:45.671759Z -c812fce5db1da4af753e919407494271 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5046 - -c.rb -file - - - - -2010-09-23T14:37:45.667815Z -299db2bdce8368d0bc6d90f5839c87ee -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5408 - -cpp.rb -file - - - - -2010-09-23T14:37:45.667815Z -afc4a4b0842e5efdafe98f6c5a10810e -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6286 - -groovy.rb -file - - - - -2010-09-23T14:37:45.671759Z -7fc1acca7ff04fa00160349b3a1b543e -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -8521 - -rhtml.rb -file - - - - -2010-09-23T14:37:45.675761Z -456da0b0587037dce29f70bdb4d42253 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1526 - -debug.rb -file - - - - -2010-09-23T14:37:45.671759Z -94bdd6c948cb9c3d21ef94a5cec19e05 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1281 - -php.rb -file - - - - -2010-09-23T14:37:45.675761Z -90f9a8053ea7eaef089e5140188c9950 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -23501 - -css.rb -file - - - - -2010-09-23T14:37:45.671759Z -dfbdae0781ad8376342b8c0f5733c2ba -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5548 - -sql.rb -file - - - - -2010-09-23T14:37:45.679790Z -dd1580e74abffd4c30a8b941b3903f07 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4727 - -xml.rb -file - - - - -2010-09-23T14:37:45.679790Z -798309ac45aa9d4ccc159242f3a6f150 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -211 - -yaml.rb -file - - - - -2010-09-23T14:37:45.679790Z -f62eab25adbef42e92cad3f5463f91ac -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4261 - -html.rb -file - - - - -2010-09-23T14:37:45.671759Z -9a21ea0438e6eea6962a27aa15f55645 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4247 - -scheme.rb -file - - - - -2010-09-23T14:37:45.679790Z -f6c296bbb33704ec2a03725b01e06719 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4939 - -java_script.rb -file - - - - -2010-09-23T14:37:45.675761Z -821536789acfa80a62a4fb54ab6f31d4 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6722 - -delphi.rb -file - - - - -2010-09-23T14:37:45.671759Z -182116a4525447d4faed874dfb790277 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4504 - -nitro_xhtml.rb -file - - - - -2010-09-23T14:37:45.675761Z -f7d82e60f68fe6c9d46b63e63f6ec9f6 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2858 - -plaintext.rb -file - - - - -2010-09-23T14:37:45.675761Z -ae16e40b3db78a5d8c793165085f5db9 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -316 - -diff.rb -file - - - - -2010-09-23T14:37:45.671759Z -fbe0f5af1885b8c58e55c9ba2891ce49 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3024 - -json.rb -file - - - - -2010-09-23T14:37:45.675761Z -0284131b18751e532a2c5e2dd8d51426 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2940 - -_map.rb -file - - - - -2010-09-23T14:37:45.667815Z -b3eadcc78242cf25ba0ab3205d6a2b61 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -413 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/_map.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/c.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/c.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/cpp.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/cpp.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/css.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/debug.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/delphi.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/delphi.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/diff.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/diff.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/groovy.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/groovy.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/html.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java_script.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java_script.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/json.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/nitro_xhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/nitro_xhtml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/php.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/php.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/plaintext.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/plaintext.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/python.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/python.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/rhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/rhtml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/ruby.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/ruby.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/scheme.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/scheme.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/sql.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/sql.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/xml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/yaml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/_map.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -module CodeRay -module Scanners - - map \ - :h => :c, - :cplusplus => :cpp, - :'c++' => :cpp, - :ecma => :java_script, - :ecmascript => :java_script, - :ecma_script => :java_script, - :irb => :ruby, - :javascript => :java_script, - :js => :java_script, - :nitro => :nitro_xhtml, - :pascal => :delphi, - :plain => :plaintext, - :xhtml => :html, - :yml => :yaml - - default :plain - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/c.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/c.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -module CodeRay -module Scanners - - class C < Scanner - - include Streamable - - register_for :c - file_extension 'c' - - RESERVED_WORDS = [ - 'asm', 'break', 'case', 'continue', 'default', 'do', - 'else', 'enum', 'for', 'goto', 'if', 'return', - 'sizeof', 'struct', 'switch', 'typedef', 'union', 'while', - 'restrict', # added in C99 - ] - - PREDEFINED_TYPES = [ - 'int', 'long', 'short', 'char', - 'signed', 'unsigned', 'float', 'double', - 'bool', 'complex', # added in C99 - ] - - PREDEFINED_CONSTANTS = [ - 'EOF', 'NULL', - 'true', 'false', # added in C99 - ] - DIRECTIVES = [ - 'auto', 'extern', 'register', 'static', 'void', - 'const', 'volatile', # added in C89 - 'inline', # added in C99 - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\\n"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/cpp.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/cpp.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -module CodeRay -module Scanners - - class CPlusPlus < Scanner - - include Streamable - - register_for :cpp - file_extension 'cpp' - title 'C++' - - # http://www.cppreference.com/wiki/keywords/start - RESERVED_WORDS = [ - 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'break', - 'case', 'catch', 'class', 'compl', 'const_cast', - 'continue', 'default', 'delete', 'do', 'dynamic_cast', 'else', - 'enum', 'export', 'for', 'goto', 'if', 'namespace', 'new', - 'not', 'not_eq', 'or', 'or_eq', 'reinterpret_cast', 'return', - 'sizeof', 'static_cast', 'struct', 'switch', 'template', - 'throw', 'try', 'typedef', 'typeid', 'typename', 'union', - 'while', 'xor', 'xor_eq' - ] - - PREDEFINED_TYPES = [ - 'bool', 'char', 'double', 'float', 'int', 'long', - 'short', 'signed', 'unsigned', 'wchar_t', 'string' - ] - PREDEFINED_CONSTANTS = [ - 'false', 'true', - 'EOF', 'NULL', - ] - PREDEFINED_VARIABLES = [ - 'this' - ] - DIRECTIVES = [ - 'auto', 'const', 'explicit', 'extern', 'friend', 'inline', 'mutable', 'operator', - 'private', 'protected', 'public', 'register', 'static', 'using', 'virtual', 'void', - 'volatile' - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_VARIABLES, :local_variable). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'class' - state = :class_name_expected - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - when :class_name_expected - if scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = :class - state = :initial - - elsif match = scan(/\s+/) - kind = :space - - else - getch - kind = :error - state = :initial - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/css.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -module CodeRay -module Scanners - - class CSS < Scanner - - register_for :css - - KINDS_NOT_LOC = [ - :comment, - :class, :pseudo_class, :type, - :constant, :directive, - :key, :value, :operator, :color, :float, - :error, :important, - ] - - module RE - NonASCII = /[\x80-\xFF]/ - Hex = /[0-9a-fA-F]/ - Unicode = /\\#{Hex}{1,6}(?:\r\n|\s)?/ # differs from standard because it allows uppercase hex too - Escape = /#{Unicode}|\\[^\r\n\f0-9a-fA-F]/ - NMChar = /[-_a-zA-Z0-9]|#{NonASCII}|#{Escape}/ - NMStart = /[_a-zA-Z]|#{NonASCII}|#{Escape}/ - NL = /\r\n|\r|\n|\f/ - String1 = /"(?:[^\n\r\f\\"]|\\#{NL}|#{Escape})*"?/ # FIXME: buggy regexp - String2 = /'(?:[^\n\r\f\\']|\\#{NL}|#{Escape})*'?/ # FIXME: buggy regexp - String = /#{String1}|#{String2}/ - - HexColor = /#(?:#{Hex}{6}|#{Hex}{3})/ - Color = /#{HexColor}/ - - Num = /-?(?:[0-9]+|[0-9]*\.[0-9]+)/ - Name = /#{NMChar}+/ - Ident = /-?#{NMStart}#{NMChar}*/ - AtKeyword = /@#{Ident}/ - Percentage = /#{Num}%/ - - reldimensions = %w[em ex px] - absdimensions = %w[in cm mm pt pc] - Unit = Regexp.union(*(reldimensions + absdimensions)) - - Dimension = /#{Num}#{Unit}/ - - Comment = %r! /\* (?: .*? \*/ | .* ) !mx - Function = /(?:url|alpha)\((?:[^)\n\r\f]|\\\))*\)?/ - - Id = /##{Name}/ - Class = /\.#{Name}/ - PseudoClass = /:#{Name}/ - AttributeSelector = /\[[^\]]*\]?/ - - end - - def scan_tokens tokens, options - - value_expected = nil - states = [:initial] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - kind = :space - - elsif case states.last - when :initial, :media - if scan(/(?>#{RE::Ident})(?!\()|\*/ox) - kind = :type - elsif scan RE::Class - kind = :class - elsif scan RE::Id - kind = :constant - elsif scan RE::PseudoClass - kind = :pseudo_class - elsif match = scan(RE::AttributeSelector) - # TODO: Improve highlighting inside of attribute selectors. - tokens << [:open, :string] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1,1], :delimiter] if match[-1] == ?] - tokens << [:close, :string] - next - elsif match = scan(/@media/) - kind = :directive - states.push :media_before_name - end - - when :block - if scan(/(?>#{RE::Ident})(?!\()/ox) - if value_expected - kind = :value - else - kind = :key - end - end - - when :media_before_name - if scan RE::Ident - kind = :type - states[-1] = :media_after_name - end - - when :media_after_name - if scan(/\{/) - kind = :operator - states[-1] = :media - end - - when :comment - if scan(/(?:[^*\s]|\*(?!\/))+/) - kind = :comment - elsif scan(/\*\//) - kind = :comment - states.pop - elsif scan(/\s+/) - kind = :space - end - - else - raise_inspect 'Unknown state', tokens - - end - - elsif scan(/\/\*/) - kind = :comment - states.push :comment - - elsif scan(/\{/) - value_expected = false - kind = :operator - states.push :block - - elsif scan(/\}/) - value_expected = false - if states.last == :block || states.last == :media - kind = :operator - states.pop - else - kind = :error - end - - elsif match = scan(/#{RE::String}/o) - tokens << [:open, :string] - tokens << [match[0, 1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1, 1], :delimiter] if match.size >= 2 - tokens << [:close, :string] - next - - elsif match = scan(/#{RE::Function}/o) - tokens << [:open, :string] - start = match[/^\w+\(/] - tokens << [start, :delimiter] - if match[-1] == ?) - tokens << [match[start.size..-2], :content] - tokens << [')', :delimiter] - else - tokens << [match[start.size..-1], :content] - end - tokens << [:close, :string] - next - - elsif scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox) - kind = :float - - elsif scan(/#{RE::Color}/o) - kind = :color - - elsif scan(/! *important/) - kind = :important - - elsif scan(/rgb\([^()\n]*\)?/) - kind = :color - - elsif scan(/#{RE::AtKeyword}/o) - kind = :directive - - elsif match = scan(/ [+>:;,.=()\/] /x) - if match == ':' - value_expected = true - elsif match == ';' - value_expected = false - end - kind = :operator - - else - getch - kind = :error - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/debug.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -module CodeRay -module Scanners - - # = Debug Scanner - class Debug < Scanner - - include Streamable - register_for :debug - file_extension 'raydebug' - title 'CodeRay Token Dump' - - protected - def scan_tokens tokens, options - - opened_tokens = [] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - tokens << [matched, :space] - next - - elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) - kind = self[1].to_sym - match = self[2].gsub(/\\(.)/, '\1') - - elsif scan(/ (\w+) < /x) - kind = self[1].to_sym - opened_tokens << kind - match = :open - - elsif !opened_tokens.empty? && scan(/ > /x) - kind = opened_tokens.pop || :error - match = :close - - else - kind = :error - getch - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/delphi.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/delphi.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -module CodeRay -module Scanners - - class Delphi < Scanner - - register_for :delphi - file_extension 'pas' - - RESERVED_WORDS = [ - 'and', 'array', 'as', 'at', 'asm', 'at', 'begin', 'case', 'class', - 'const', 'constructor', 'destructor', 'dispinterface', 'div', 'do', - 'downto', 'else', 'end', 'except', 'exports', 'file', 'finalization', - 'finally', 'for', 'function', 'goto', 'if', 'implementation', 'in', - 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', - 'library', 'mod', 'nil', 'not', 'object', 'of', 'or', 'out', 'packed', - 'procedure', 'program', 'property', 'raise', 'record', 'repeat', - 'resourcestring', 'set', 'shl', 'shr', 'string', 'then', 'threadvar', - 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', 'while', 'with', - 'xor', 'on' - ] - - DIRECTIVES = [ - 'absolute', 'abstract', 'assembler', 'at', 'automated', 'cdecl', - 'contains', 'deprecated', 'dispid', 'dynamic', 'export', - 'external', 'far', 'forward', 'implements', 'local', - 'near', 'nodefault', 'on', 'overload', 'override', - 'package', 'pascal', 'platform', 'private', 'protected', 'public', - 'published', 'read', 'readonly', 'register', 'reintroduce', - 'requires', 'resident', 'safecall', 'stdcall', 'stored', 'varargs', - 'virtual', 'write', 'writeonly' - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(DIRECTIVES, :directive) - - NAME_FOLLOWS = CaseIgnoringWordList.new(false). - add(%w(procedure function .)) - - private - def scan_tokens tokens, options - - state = :initial - last_token = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ /x) - tokens << [matched, :space] - next - - elsif scan(%r! \{ \$ [^}]* \}? | \(\* \$ (?: .*? \*\) | .* ) !mx) - tokens << [matched, :preprocessor] - next - - elsif scan(%r! // [^\n]* | \{ [^}]* \}? | \(\* (?: .*? \*\) | .* ) !mx) - tokens << [matched, :comment] - next - - elsif match = scan(/ <[>=]? | >=? | :=? | [-+=*\/;,@\^|\(\)\[\]] | \.\. /x) - kind = :operator - - elsif match = scan(/\./) - kind = :operator - if last_token == 'end' - tokens << [match, kind] - next - end - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = NAME_FOLLOWS[last_token] ? :ident : IDENT_KIND[match] - - elsif match = scan(/ ' ( [^\n']|'' ) (?:'|$) /x) - tokens << [:open, :char] - tokens << ["'", :delimiter] - tokens << [self[1], :content] - tokens << ["'", :delimiter] - tokens << [:close, :char] - next - - elsif match = scan(/ ' /x) - tokens << [:open, :string] - state = :string - kind = :delimiter - - elsif scan(/ \# (?: \d+ | \$[0-9A-Fa-f]+ ) /x) - kind = :char - - elsif scan(/ \$ [0-9A-Fa-f]+ /x) - kind = :hex - - elsif scan(/ (?: \d+ ) (?![eE]|\.[^.]) /x) - kind = :integer - - elsif scan(/ \d+ (?: \.\d+ (?: [eE][+-]? \d+ )? | [eE][+-]? \d+ ) /x) - kind = :float - - else - kind = :error - getch - - end - - elsif state == :string - if scan(/[^\n']+/) - kind = :content - elsif scan(/''/) - kind = :char - elsif scan(/'/) - tokens << ["'", :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif scan(/\n/) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise "else case \' reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - last_token = match - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/diff.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/diff.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -module CodeRay -module Scanners - - class Diff < Scanner - - register_for :diff - title 'diff output' - - def scan_tokens tokens, options - - line_kind = nil - state = :initial - - until eos? - kind = match = nil - - if match = scan(/\n/) - if line_kind - tokens << [:end_line, line_kind] - line_kind = nil - end - tokens << [match, :space] - next - end - - case state - - when :initial - if match = scan(/--- |\+\+\+ |=+|_+/) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Index: |Property changes on: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Added: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - state = :added - elsif match = scan(/\\ /) - tokens << [:begin_line, line_kind = :change] - tokens << [match, :change] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/(@@)((?>[^@\n]*))(@@)/) - tokens << [:begin_line, line_kind = :change] - tokens << [self[1], :change] - tokens << [self[2], :plain] - tokens << [self[3], :change] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/\+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/-/) - tokens << [:begin_line, line_kind = :delete] - tokens << [match, :delete] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/ .*/) - kind = :comment - elsif scan(/.+/) - tokens << [:begin_line, line_kind = :head] - kind = :plain - else - raise_inspect 'else case rached' - end - - when :added - if match = scan(/ \+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - else - state = :initial - next - end - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - tokens << [:end_line, line_kind] if line_kind - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/groovy.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/groovy.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -module CodeRay -module Scanners - - load :java - - class Groovy < Java - - include Streamable - register_for :groovy - - # TODO: Check this! - GROOVY_KEYWORDS = %w[ - as assert def in - ] - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case instanceof new return throw typeof while as assert in - ] - GROOVY_MAGIC_VARIABLES = %w[ it ] - - IDENT_KIND = Java::IDENT_KIND.dup. - add(GROOVY_KEYWORDS, :keyword). - add(GROOVY_MAGIC_VARIABLES, :local_variable) - - ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} - REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x - - # TODO: interpretation inside ', ", / - STRING_CONTENT_PATTERN = { - "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, - '"' => /[^\\$"\n]+/, - "'''" => /(?>[^\\']+|'(?!''))+/, - '"""' => /(?>[^\\$"]+|"(?!""))+/, - '/' => /[^\\$\/\n]+/, - } - - def scan_tokens tokens, options - - state = :initial - inline_block_stack = [] - inline_block_paren_depth = nil - string_delimiter = nil - import_clause = class_name_follows = last_token = after_def = false - value_expected = true - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - if match.index ?\n - import_clause = after_def = false - value_expected = true unless value_expected - end - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - after_def = false - kind = :comment - - elsif bol? && scan(/ \#!.* /x) - kind = :doctype - - elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) - after_def = value_expected = false - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - if last_token == '.' - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - elsif after_def && check(/\s*[({]/) - kind = :method - after_def = false - elsif kind == :ident && last_token != '?' && check(/:/) - kind = :key - else - class_name_follows = true if match == 'class' || (import_clause && match == 'as') - import_clause = match == 'import' - after_def = true if match == 'def' - end - - elsif scan(/;/) - import_clause = after_def = false - value_expected = true - kind = :operator - - elsif scan(/\{/) - class_name_follows = after_def = false - value_expected = true - kind = :operator - if !inline_block_stack.empty? - inline_block_paren_depth += 1 - end - - # TODO: ~'...', ~"..." and ~/.../ style regexps - elsif match = scan(/ \.\.] | \+\+ | - && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<>>?=? /x) - value_expected = true - value_expected = :regexp if match == '~' - after_def = false - kind = :operator - - elsif match = scan(/ [)\]}] /x) - value_expected = after_def = false - if !inline_block_stack.empty? && match == '}' - inline_block_paren_depth -= 1 - if inline_block_paren_depth == 0 # closing brace of inline block reached - tokens << [match, :inline_delimiter] - tokens << [:close, :inline] - state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop - next - end - end - kind = :operator - - elsif check(/[\d.]/) - after_def = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lLgG]?/) - kind = :integer - end - - elsif match = scan(/'''|"""/) - after_def = value_expected = false - state = :multiline_string - tokens << [:open, :string] - string_delimiter = match - kind = :delimiter - - # TODO: record.'name' - elsif match = scan(/["']/) - after_def = value_expected = false - state = match == '/' ? :regexp : :string - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\//)) - after_def = value_expected = false - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - after_def = value_expected = false - kind = :annotation - - elsif scan(/\//) - after_def = false - value_expected = true - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :multiline_string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - - elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - # TODO: regexp modifiers? s, m, x, i? - modifiers = scan(/[ix]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - state = :string if state == :multiline_string - tokens << [:close, state] - string_delimiter = nil - after_def = value_expected = false - state = :initial - next - - elsif (state == :string || state == :multiline_string) && - (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - - elsif match = scan(/ \$ #{IDENT} /mox) - tokens << [:open, :inline] - tokens << ['$', :inline_delimiter] - match = match[1..-1] - tokens << [match, IDENT_KIND[match]] - tokens << [:close, :inline] - next - elsif match = scan(/ \$ \{ /x) - tokens << [:open, :inline] - tokens << ['${', :inline_delimiter] - inline_block_stack << [state, string_delimiter, inline_block_paren_depth] - inline_block_paren_depth = 1 - state = :initial - next - - elsif scan(/ \$ /mx) - kind = :content - - elsif scan(/ \\. /mx) - kind = :content - - elsif scan(/ \\ | \n /x) - tokens << [:close, state] - kind = :error - after_def = value_expected = false - state = :initial - - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token = match unless [:space, :comment, :doctype].include? kind - - tokens << [match, kind] - - end - - if [:multiline_string, :string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/html.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,182 +0,0 @@ -module CodeRay -module Scanners - - # HTML Scanner - class HTML < Scanner - - include Streamable - register_for :html - - KINDS_NOT_LOC = [ - :comment, :doctype, :preprocessor, - :tag, :attribute_name, :operator, - :attribute_value, :delimiter, :content, - :plain, :entity, :error - ] - - ATTR_NAME = /[\w.:-]+/ - ATTR_VALUE_UNQUOTED = ATTR_NAME - TAG_END = /\/?>/ - HEX = /[0-9a-fA-F]/ - ENTITY = / - & - (?: - \w+ - | - \# - (?: - \d+ - | - x#{HEX}+ - ) - ) - ; - /ox - - PLAIN_STRING_CONTENT = { - "'" => /[^&'>\n]+/, - '"' => /[^&">\n]+/, - } - - def reset - super - @state = :initial - end - - private - def setup - @state = :initial - @plain_string_content = nil - end - - def scan_tokens tokens, options - - state = @state - plain_string_content = @plain_string_content - - until eos? - - kind = nil - match = nil - - if scan(/\s+/m) - kind = :space - - else - - case state - - when :initial - if scan(//m) - kind = :comment - elsif scan(//m) - kind = :doctype - elsif scan(/<\?xml.*?\?>/m) - kind = :preprocessor - elsif scan(/<\?.*?\?>|<%.*?%>/m) - kind = :comment - elsif scan(/<\/[-\w.:]*>/m) - kind = :tag - elsif match = scan(/<[-\w.:]+>?/m) - kind = :tag - state = :attribute unless match[-1] == ?> - elsif scan(/[^<>&]+/) - kind = :plain - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/[<>&]/) - kind = :error - else - raise_inspect '[BUG] else-case reached with state %p' % [state], tokens - end - - when :attribute - if scan(/#{TAG_END}/) - kind = :tag - state = :initial - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - state = :attribute_equal - else - kind = :error - getch - end - - when :attribute_equal - if scan(/=/) - kind = :operator - state = :attribute_value - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - elsif scan(/./) - kind = :error - state = :attribute - end - - when :attribute_value - if scan(/#{ATTR_VALUE_UNQUOTED}/o) - kind = :attribute_value - state = :attribute - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :attribute_value_string - plain_string_content = PLAIN_STRING_CONTENT[match] - kind = :delimiter - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - else - kind = :error - getch - end - - when :attribute_value_string - if scan(plain_string_content) - kind = :content - elsif scan(/['"]/) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :attribute - next - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/&/) - kind = :content - elsif scan(/[\n>]/) - tokens << [:close, :string] - kind = :error - state = :initial - end - - else - raise_inspect 'Unknown state: %p' % [state], tokens - - end - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - if options[:keep_state] - @state = state - @plain_string_content = plain_string_content - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -module CodeRay -module Scanners - - class Java < Scanner - - include Streamable - register_for :java - helper :builtin_types - - # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html - KEYWORDS = %w[ - assert break case catch continue default do else - finally for if instanceof import new package - return switch throw try typeof while - debugger export - ] - RESERVED = %w[ const goto ] - CONSTANTS = %w[ false null true ] - MAGIC_VARIABLES = %w[ this super ] - TYPES = %w[ - boolean byte char class double enum float int interface long - short void - ] << '[]' # because int[] should be highlighted as a type - DIRECTIVES = %w[ - abstract extends final implements native private protected public - static strictfp synchronized throws transient volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(RESERVED, :reserved). - add(CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(TYPES, :type). - add(BuiltinTypes::List, :pre_type). - add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). - add(DIRECTIVES, :directive) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - import_clause = class_name_follows = last_token_dot = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - tokens << [match, :comment] - next - - elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - if last_token_dot - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - else - import_clause = true if match == 'import' - class_name_follows = true if match == 'class' || match == 'interface' - end - - elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) - kind = :operator - - elsif scan(/;/) - import_clause = false - kind = :operator - - elsif scan(/\{/) - class_name_follows = false - kind = :operator - - elsif check(/[\d.]/) - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lL]?/) - kind = :integer - end - - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :string - string_delimiter = match - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - kind = :annotation - - else - getch - kind = :error - - end - - when :string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - tokens << [:close, state] - string_delimiter = nil - state = :initial - next - elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -module CodeRay -module Scanners - - class JavaScript < Scanner - - include Streamable - - register_for :java_script - file_extension 'js' - - # The actual JavaScript keywords. - KEYWORDS = %w[ - break case catch continue default delete do else - finally for function if in instanceof new - return switch throw try typeof var void while with - ] - PREDEFINED_CONSTANTS = %w[ - false null true undefined - ] - - MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 - - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case delete in instanceof new return throw typeof with - ] - - # Reserved for future use. - RESERVED_WORDS = %w[ - abstract boolean byte char class debugger double enum export extends - final float goto implements import int interface long native package - private protected public short static super synchronized throws transient - volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(KEYWORDS, :keyword) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - REGEXP_ESCAPE = / [bBdDsSwW] /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - KEY_CHECK_PATTERN = { - "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, - '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, - } - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - value_expected = true - key_expected = false - function_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - value_expected = true if !value_expected && match.index(?\n) - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - kind = :comment - - elsif check(/\.?\d/) - key_expected = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - kind = :float - elsif scan(/\d+/) - kind = :integer - end - - elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) - # FIXME: scan over nested tags - xml_scanner.tokenize match - value_expected = false - next - - elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) - value_expected = true - last_operator = match[-1] - key_expected = (last_operator == ?{) || (last_operator == ?,) - function_expected = false - kind = :operator - - elsif scan(/ [)\]}]+ /x) - function_expected = key_expected = value_expected = false - kind = :operator - - elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - # TODO: labels - if kind == :ident - if match.index(?$) # $ allowed inside an identifier - kind = :predefined - elsif function_expected - kind = :function - elsif check(/\s*[=:]\s*function\b/) - kind = :function - elsif key_expected && check(/\s*:/) - kind = :key - end - end - function_expected = (kind == :keyword) && (match == 'function') - key_expected = false - - elsif match = scan(/["']/) - if key_expected && check(KEY_CHECK_PATTERN[match]) - state = :key - else - state = :string - end - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\/(?=\S)/)) - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ \/ /x) - value_expected = true - key_expected = false - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :key - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - modifiers = scan(/[gim]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - tokens << [:close, state] - string_delimiter = nil - key_expected = value_expected = false - state = :initial - next - elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, state] - kind = :error - key_expected = value_expected = false - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - protected - - def reset_instance - super - @xml_scanner.reset if defined? @xml_scanner - end - - def xml_scanner - @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/json.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -module CodeRay -module Scanners - - class JSON < Scanner - - include Streamable - - register_for :json - file_extension 'json' - - KINDS_NOT_LOC = [ - :float, :char, :content, :delimiter, - :error, :integer, :operator, :value, - ] - - CONSTANTS = %w( true false null ) - IDENT_KIND = WordList.new(:key).add(CONSTANTS, :value) - - ESCAPE = / [bfnrt\\"\/] /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x - - def scan_tokens tokens, options - - state = :initial - stack = [] - string_delimiter = nil - key_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - elsif match = scan(/ [:,\[{\]}] /x) - kind = :operator - case match - when '{' then stack << :object; key_expected = true - when '[' then stack << :array - when ':' then key_expected = false - when ',' then key_expected = true if stack.last == :object - when '}', ']' then stack.pop # no error recovery, but works for valid JSON - end - elsif match = scan(/ true | false | null /x) - kind = IDENT_KIND[match] - elsif match = scan(/-?(?:0|[1-9]\d*)/) - kind = :integer - if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) - match << matched - kind = :float - end - elsif match = scan(/"/) - state = key_expected ? :key : :string - tokens << [:open, state] - kind = :delimiter - else - getch - kind = :error - end - - when :string, :key - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, state] - state = :initial - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :key].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # Nitro XHTML Scanner - class NitroXHTML < Scanner - - include Streamable - register_for :nitro_xhtml - file_extension :xhtml - title 'Nitro XHTML' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - NITRO_RUBY_BLOCK = / - <\?r - (?> - [^\?]* - (?> \?(?!>) [^\?]* )* - ) - (?: \?> )? - | - - (?> - [^<]* - (?> <(?!\/ruby>) [^<]* )* - ) - (?: <\/ruby> )? - | - <% - (?> - [^%]* - (?> %(?!>) [^%]* )* - ) - (?: %> )? - /mx - - NITRO_VALUE_BLOCK = / - \# - (?: - \{ - [^{}]* - (?> - \{ [^}]* \} - (?> [^{}]* ) - )* - \}? - | \| [^|]* \|? - | \( [^)]* \)? - | \[ [^\]]* \]? - | \\ [^\\]* \\? - ) - /x - - NITRO_ENTITY = / - % (?: \#\d+ | \w+ ) ; - / - - START_OF_RUBY = / - (?=[<\#%]) - < (?: \?r | % | ruby> ) - | \# [{(|] - | % (?: \#\d+ | \w+ ) ; - /x - - CLOSING_PAREN = Hash.new do |h, p| - h[p] = p - end.update( { - '(' => ')', - '[' => ']', - '{' => '}', - } ) - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) - start_tag = match[0,2] - delimiter = CLOSING_PAREN[start_tag[1,1]] - end_tag = match[-1,1] == delimiter ? delimiter : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) - start_tag = '' ? '?>' : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -(end_tag.size)-1] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif entity = scan(/#{NITRO_ENTITY}/o) - tokens << [entity, :entity] - - elsif scan(/%/) - tokens << [matched, :error] - - else - raise_inspect 'else-case reached!', tokens - - end - - end - - tokens - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/php.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/php.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,527 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # Original by Stefan Walk. - class PHP < Scanner - - register_for :php - file_extension 'php' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - def setup - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - module Words - - # according to http://www.php.net/manual/en/reserved.keywords.php - KEYWORDS = %w[ - abstract and array as break case catch class clone const continue declare default do else elseif - enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global - goto if implements interface instanceof namespace new or private protected public static switch - throw try use var while xor - cfunction old_function - ] - - TYPES = %w[ int integer float double bool boolean string array object resource ] - - LANGUAGE_CONSTRUCTS = %w[ - die echo empty exit eval include include_once isset list - require require_once return print unset - ] - - CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] - - # according to http://php.net/quickref.php on 2009-04-21; - # all functions with _ excluded (module functions) and selected additional functions - BUILTIN_FUNCTIONS = %w[ - abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 - atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec - bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite - calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog - compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex - decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each - ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract - fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner - fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv - fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate - getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid - getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext - gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate - gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell - gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate - implode include intval ip2long iptcembed iptcparse isset - jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp - juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log - log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort - natsort next ngettext nl2br nthmac octdec opendir openlog - ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow - prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile - readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir - serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget - snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat - strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen - strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn - strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam - textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack - unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap - array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc - array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip - array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey - array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad - array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift - array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect - array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk - array_walk_recursive - assert_options base_convert base64_decode base64_encode - chunk_split class_exists class_implements class_parents - count_chars debug_backtrace debug_print_backtrace debug_zval_dump - error_get_last error_log error_reporting extension_loaded - file_exists file_get_contents file_put_contents load_file - func_get_arg func_get_args func_num_args function_exists - get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars - get_current_user get_declared_classes get_declared_interfaces get_defined_constants - get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table - get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime - get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type - gc_collect_cycles gc_disable gc_enable gc_enabled - halt_compiler headers_list headers_sent highlight_file highlight_string - html_entity_decode htmlspecialchars_decode - in_array include_once inclued_get_data - is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite - is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable - is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file - is_writable is_writeable - locale_get_default locale_set_default - number_format override_function parse_str parse_url - php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name - php_strip_whitespace php_uname - preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace - preg_replace_callback preg_split print_r - require_once register_shutdown_function register_tick_function - set_error_handler set_exception_handler set_file_buffer set_include_path - set_magic_quotes_runtime set_time_limit shell_exec - str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count - strip_tags substr_compare substr_count substr_replace - time_nanosleep time_sleep_until - token_get_all token_name trigger_error - unregister_tick_function use_soap_error_handler user_error - utf8_decode utf8_encode var_dump var_export - version_compare - zend_logo_guid zend_thread_id zend_version - create_function call_user_func_array - posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid - posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups - posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid - posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid - posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod - posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid - posix_setuid posix_strerror posix_times posix_ttyname posix_uname - pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority - pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait - pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited - pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig - ] - # TODO: more built-in PHP functions? - - EXCEPTIONS = %w[ - E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING - E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT - ] - - CONSTANTS = %w[ - null true false self parent - __LINE__ __DIR__ __FILE__ __LINE__ - __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ - PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS - PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH - PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR - PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX - PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END - __COMPILER_HALT_OFFSET__ - EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS - EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL - COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED - CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 - M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES - CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB - HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS - INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP - CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT - STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX - LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 - ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 - ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 - MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT - ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING - POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES - N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR - YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN - LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 - LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY - LOG_NDELAY LOG_NOWAIT LOG_PERROR - ] - - PREDEFINED = %w[ - $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV - $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header - $argc $argv - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(KEYWORDS, :reserved). - add(TYPES, :pre_type). - add(LANGUAGE_CONSTRUCTS, :reserved). - add(BUILTIN_FUNCTIONS, :predefined). - add(CLASSES, :pre_constant). - add(EXCEPTIONS, :exception). - add(CONSTANTS, :pre_constant) - - VARIABLE_KIND = WordList.new(:local_variable). - add(PREDEFINED, :predefined) - end - - module RE - - PHP_START = / - ]*?language\s*=\s*"php"[^>]*?> | - ]*?language\s*=\s*'php'[^>]*?> | - <\?php\d? | - <\?(?!xml) - /xi - - PHP_END = %r! - | - \?> - !xi - - HTML_INDICATOR = / ]/i - - IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i - VARIABLE = /\$#{IDENTIFIER}/ - - OPERATOR = / - \.(?!\d)=? | # dot that is not decimal point, string concatenation - && | \|\| | # logic - :: | -> | => | # scope, member, dictionary - \\(?!\n) | # namespace - \+\+ | -- | # increment, decrement - [,;?:()\[\]{}] | # simple delimiters - [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts - [~$] | # whatever - =& | # reference assignment - [=!]=?=? | <> | # comparison and assignment - <<=? | >>=? | [<>]=? # comparison and shift - /x - - end - - def scan_tokens tokens, options - - if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) - tokens << [:open, :inline] - tokens << [match, :local_variable] - tokens << [scan(/->/), :operator] - tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] - tokens << [:close, :inline] - next - elsif check(/->/) - match << scan(/->/) - kind = :error - end - elsif match = scan(/\{/) - if check(/\$/) - kind = :delimiter - states[-1] = [states.last, delimiter] - delimiter = nil - states.push :php - tokens << [:open, :inline] - else - kind = :string - end - elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) - kind = :local_variable - elsif scan(/\$/) - kind = :content - end - - when :class_expected - if scan(/\s+/) - kind = :space - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :class - states.pop - else - states.pop - next - end - - when :function_expected - if scan(/\s+/) - kind = :space - elsif scan(/&/) - kind = :operator - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :function - states.pop - else - states.pop - next - end - - else - raise_inspect 'Unknown state!', tokens, states - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, states - end - raise_inspect 'Empty token', tokens, states unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Scanners - - class Plaintext < Scanner - - register_for :plaintext, :plain - title 'Plain text' - - include Streamable - - KINDS_NOT_LOC = [:plain] - - def scan_tokens tokens, options - text = (scan_until(/\z/) || '') - tokens << [text, :plain] - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/python.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/python.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,285 +0,0 @@ -module CodeRay -module Scanners - - # Bases on pygments' PythonLexer, see - # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. - class Python < Scanner - - include Streamable - - register_for :python - file_extension 'py' - - KEYWORDS = [ - 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', - 'del', 'elif', 'else', 'except', 'finally', 'for', - 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', - 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', - 'nonlocal', # new in Python 3 - ] - - OLD_KEYWORDS = [ - 'exec', 'print', # gone in Python 3 - ] - - PREDEFINED_METHODS_AND_TYPES = %w[ - __import__ abs all any apply basestring bin bool buffer - bytearray bytes callable chr classmethod cmp coerce compile - complex delattr dict dir divmod enumerate eval execfile exit - file filter float frozenset getattr globals hasattr hash hex id - input int intern isinstance issubclass iter len list locals - long map max min next object oct open ord pow property range - raw_input reduce reload repr reversed round set setattr slice - sorted staticmethod str sum super tuple type unichr unicode - vars xrange zip - ] - - PREDEFINED_EXCEPTIONS = %w[ - ArithmeticError AssertionError AttributeError - BaseException DeprecationWarning EOFError EnvironmentError - Exception FloatingPointError FutureWarning GeneratorExit IOError - ImportError ImportWarning IndentationError IndexError KeyError - KeyboardInterrupt LookupError MemoryError NameError - NotImplemented NotImplementedError OSError OverflowError - OverflowWarning PendingDeprecationWarning ReferenceError - RuntimeError RuntimeWarning StandardError StopIteration - SyntaxError SyntaxWarning SystemError SystemExit TabError - TypeError UnboundLocalError UnicodeDecodeError - UnicodeEncodeError UnicodeError UnicodeTranslateError - UnicodeWarning UserWarning ValueError Warning ZeroDivisionError - ] - - PREDEFINED_VARIABLES_AND_CONSTANTS = [ - 'False', 'True', 'None', # "keywords" since Python 3 - 'self', 'Ellipsis', 'NotImplemented', - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(OLD_KEYWORDS, :old_keyword). - add(PREDEFINED_METHODS_AND_TYPES, :predefined). - add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). - add(PREDEFINED_EXCEPTIONS, :exception) - - NAME = / [^\W\d] \w* /x - ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x - - OPERATOR = / - \.\.\. | # ellipsis - \.(?!\d) | # dot but not decimal point - [,;:()\[\]{}] | # simple delimiters - \/\/=? | \*\*=? | # special math - [-+*\/%&|^]=? | # ordinary math and binary logic - [~`] | # binary complement and inspection - <<=? | >>=? | [<>=]=? | != # comparison and assignment - /x - - STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = Regexp.union delimiter - end - - STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x - end - - DEF_NEW_STATE = WordList.new(:initial). - add(%w(def), :def_expected). - add(%w(import from), :include_expected). - add(%w(class), :class_expected) - - DESCRIPTOR = / - #{NAME} - (?: \. #{NAME} )* - | \* - /x - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - string_raw = false - import_clause = class_name_follows = last_token_dot = false - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - from_import_state = [] - - until eos? - - kind = nil - match = nil - - if state == :string - if scan(STRING_DELIMITER_REGEXP[string_delimiter]) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif string_delimiter.size == 3 && scan(/\n/) - kind = :content - elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) - kind = :content - elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) - kind = :char - elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) - kind = :char - elsif scan(/ \\ . /x) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state - end - - elsif match = scan(/ [ \t]+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(/\n/) - tokens << [match, :space] - state = :initial if state == :include_expected - next - - elsif match = scan(/ \# [^\n]* /mx) - tokens << [match, :comment] - next - - elsif state == :initial - - if scan(/#{OPERATOR}/o) - kind = :operator - - elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) - tokens << [:open, :string] - string_delimiter = self[2] - string_raw = false - modifiers = self[1] - unless modifiers.empty? - string_raw = !!modifiers.index(?r) - tokens << [modifiers, :modifier] - match = string_delimiter - end - state = :string - kind = :delimiter - - # TODO: backticks - - elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = IDENT_KIND[match] - # TODO: keyword arguments - kind = :ident if last_token_dot - if kind == :old_keyword - kind = check(/\(/) ? :ident : :keyword - elsif kind == :predefined && check(/ *=/) - kind = :ident - elsif kind == :keyword - state = DEF_NEW_STATE[match] - from_import_state << match.to_sym if state == :include_expected - end - - elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) - kind = :decorator - - elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) - kind = :hex - - elsif scan(/0[bB][01]+[lL]?/) - kind = :bin - - elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - if scan(/[jJ]/) - match << matched - kind = :imaginary - end - - elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) - kind = :oct - - elsif match = scan(/\d+([lL])?/) - kind = :integer - if self[1] == nil && scan(/[jJ]/) - match << matched - kind = :imaginary - end - - else - getch - kind = :error - - end - - elsif state == :def_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :method - else - next - end - - elsif state == :class_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :class - else - next - end - - elsif state == :include_expected - if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) - kind = :include - if match == 'as' - kind = :keyword - from_import_state << :as - elsif from_import_state.first == :from && match == 'import' - kind = :keyword - from_import_state << :import - elsif from_import_state.last == :as - # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method - kind = :ident - from_import_state.pop - elsif IDENT_KIND[match] == :keyword - unscan - match = nil - state = :initial - next - end - elsif match = scan(/,/) - from_import_state.pop if from_import_state.last == :as - kind = :operator - else - from_import_state = [] - state = :initial - next - end - - else - raise_inspect 'Unknown state', tokens, state - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens, state unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # RHTML Scanner - class RHTML < Scanner - - include Streamable - register_for :rhtml - title 'HTML ERB Template' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - ERB_RUBY_BLOCK = / - <%(?!%)[=-]? - (?> - [^\-%]* # normal* - (?> # special - (?: %(?!>) | -(?!%>) ) - [^\-%]* # normal* - )* - ) - (?: -?%> )? - /x - - START_OF_ERB = / - <%(?!%) - /x - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{ERB_RUBY_BLOCK}/o) - start_tag = match[/\A<%[-=]?/] - end_tag = match[/-?%?>?\z/] - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - else - raise_inspect 'else-case reached!', tokens - end - - end - - tokens - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,413 +0,0 @@ -module CodeRay -module Scanners - - # This scanner is really complex, since Ruby _is_ a complex language! - # - # It tries to highlight 100% of all common code, - # and 90% of strange codes. - # - # It is optimized for HTML highlighting, and is not very useful for - # parsing or pretty printing. - # - # For now, I think it's better than the scanners in VIM or Syntax, or - # any highlighter I was able to find, except Caleb's RubyLexer. - # - # I hope it's also better than the rdoc/irb lexer. - class Ruby < Scanner - - include Streamable - - register_for :ruby - file_extension 'rb' - - helper :patterns - - if not defined? EncodingError - EncodingError = Class.new Exception - end - - private - def scan_tokens tokens, options - last_token_dot = false - value_expected = true - heredocs = nil - last_state = nil - state = :initial - depth = nil - inline_block_stack = [] - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - - patterns = Patterns # avoid constant lookup - - until eos? - match = nil - kind = nil - - if state.instance_of? patterns::StringState -# {{{ - match = scan_until(state.pattern) || scan_until(/\z/) - tokens << [match, :content] unless match.empty? - break if eos? - - if state.heredoc and self[1] # end of heredoc - match = getch.to_s - match << scan_until(/$/) unless eos? - tokens << [match, :delimiter] - tokens << [:close, state.type] - state = state.next_state - next - end - - case match = getch - - when state.delim - if state.paren - state.paren_depth -= 1 - if state.paren_depth > 0 - tokens << [match, :nesting_delimiter] - next - end - end - tokens << [match, :delimiter] - if state.type == :regexp and not eos? - modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) - tokens << [modifiers, :modifier] unless modifiers.empty? - end - tokens << [:close, state.type] - value_expected = false - state = state.next_state - - when '\\' - if state.interpreted - if esc = scan(/ #{patterns::ESCAPE} /ox) - tokens << [match + esc, :char] - else - tokens << [match, :error] - end - else - case m = getch - when state.delim, '\\' - tokens << [match + m, :char] - when nil - tokens << [match, :error] - else - tokens << [match + m, :content] - end - end - - when '#' - case peek(1) - when '{' - inline_block_stack << [state, depth, heredocs] - value_expected = true - state = :initial - depth = 1 - tokens << [:open, :inline] - tokens << [match + getch, :inline_delimiter] - when '$', '@' - tokens << [match, :escape] - last_state = state # scan one token as normal code, then return here - state = :initial - else - raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens - end - - when state.paren - state.paren_depth += 1 - tokens << [match, :nesting_delimiter] - - when /#{patterns::REGEXP_SYMBOLS}/ox - tokens << [match, :function] - - else - raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens - - end - next -# }}} - else -# {{{ - if match = scan(/[ \t\f]+/) - kind = :space - match << scan(/\s*/) unless eos? || heredocs - value_expected = true if match.index(?\n) - tokens << [match, kind] - next - - elsif match = scan(/\\?\n/) - kind = :space - if match == "\n" - value_expected = true - state = :initial if state == :undef_comma_expected - end - if heredocs - unscan # heredoc scanning needs \n at start - state = heredocs.shift - tokens << [:open, state.type] - heredocs = nil if heredocs.empty? - next - else - match << scan(/\s*/) unless eos? - end - tokens << [match, kind] - next - - elsif bol? && match = scan(/\#!.*/) - tokens << [match, :doctype] - next - - elsif match = scan(/\#.*/) or - ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) - kind = :comment - tokens << [match, kind] - next - - elsif state == :initial - - # IDENTS # - if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : - /#{patterns::METHOD_NAME}/o) - if last_token_dot - kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end - else - kind = patterns::IDENT_KIND[match] - if kind == :ident and match[/^[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) - kind = :constant - elsif kind == :reserved - state = patterns::DEF_NEW_STATE[match] - value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] - end - end - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) - kind = :ident - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - # OPERATORS # - elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) - if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ - value_expected = :set - end - last_token_dot = :set if self[1] - kind = :operator - unless inline_block_stack.empty? - case match - when '{' - depth += 1 - when '}' - depth -= 1 - if depth == 0 # closing brace of inline block reached - state, depth, heredocs = inline_block_stack.pop - heredocs = nil if heredocs && heredocs.empty? - tokens << [match, :inline_delimiter] - kind = :inline - match = :close - end - end - end - - elsif match = scan(/ ['"] /mx) - tokens << [:open, :string] - kind = :delimiter - state = patterns::StringState.new :string, match == '"', match # important for streaming - - elsif match = scan(/#{patterns::INSTANCE_VARIABLE}/o) - kind = :instance_variable - - elsif value_expected and match = scan(/\//) - tokens << [:open, :regexp] - kind = :delimiter - interpreted = true - state = patterns::StringState.new :regexp, interpreted, match - - # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) - elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) - kind = self[1] ? :float : :integer - - elsif match = scan(/#{patterns::SYMBOL}/o) - case delim = match[1] - when ?', ?" - tokens << [:open, :symbol] - tokens << [':', :symbol] - match = delim.chr - kind = :delimiter - state = patterns::StringState.new :symbol, delim == ?", match - else - kind = :symbol - end - - elsif match = scan(/ [-+!~^]=? | [*|&]{1,2}=? | >>? /x) - value_expected = :set - kind = :operator - - elsif value_expected and match = scan(/#{patterns::HEREDOC_OPEN}/o) - indented = self[1] == '-' - quote = self[3] - delim = self[quote ? 4 : 2] - kind = patterns::QUOTE_TO_TYPE[quote] - tokens << [:open, kind] - tokens << [match, :delimiter] - match = :close - heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) - heredocs ||= [] # create heredocs if empty - heredocs << heredoc - - elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) - kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do - raise_inspect 'Unknown fancy string: %%%p' % k, tokens - end - tokens << [:open, kind] - state = patterns::StringState.new kind, interpreted, self[2] - kind = :delimiter - - elsif value_expected and match = scan(/#{patterns::CHARACTER}/o) - kind = :integer - - elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) - value_expected = :set - kind = :operator - - elsif match = scan(/`/) - if last_token_dot - kind = :operator - else - tokens << [:open, :shell] - kind = :delimiter - state = patterns::StringState.new :shell, true, match - end - - elsif match = scan(/#{patterns::GLOBAL_VARIABLE}/o) - kind = :global_variable - - elsif match = scan(/#{patterns::CLASS_VARIABLE}/o) - kind = :class_variable - - else - if !unicode - # check for unicode - debug, $DEBUG = $DEBUG, false - begin - if check(/./mu).size > 1 - # seems like we should try again with unicode - unicode = true - end - rescue - # bad unicode char; use getch - ensure - $DEBUG = debug - end - next if unicode - end - kind = :error - match = getch - - end - - elsif state == :def_expected - state = :initial - if scan(/self\./) - tokens << ['self', :pre_constant] - tokens << ['.', :operator] - end - if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : - /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) - kind = :method - else - next - end - - elsif state == :module_expected - if match = scan(/< 1 - state = this_block.first - tokens << [:close, state.type] - end - - tokens - end - - end - -end -end - -# vim:fdm=marker diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -module CodeRay - module Scanners - - # Scheme scanner for CodeRay (by closure). - # Thanks to murphy for putting CodeRay into public. - class Scheme < Scanner - - # TODO: function defs - # TODO: built-in functions - - register_for :scheme - file_extension 'scm' - - CORE_FORMS = %w[ - lambda let let* letrec syntax-case define-syntax let-syntax - letrec-syntax begin define quote if or and cond case do delay - quasiquote set! cons force call-with-current-continuation call/cc - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(CORE_FORMS, :reserved) - - #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i - #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ - #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ - IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ - DIGIT = /\d/ - DIGIT10 = DIGIT - DIGIT16 = /[0-9a-f]/i - DIGIT8 = /[0-7]/ - DIGIT2 = /[01]/ - RADIX16 = /\#x/i - RADIX8 = /\#o/i - RADIX2 = /\#b/i - RADIX10 = /\#d/i - EXACTNESS = /#i|#e/i - SIGN = /[\+-]?/ - EXP_MARK = /[esfdl]/i - EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ - SUFFIX = /#{EXP}?/ - PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ - PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ - PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ - PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ - UINT10 = /#{DIGIT10}+#*/ - UINT16 = /#{DIGIT16}+#*/ - UINT8 = /#{DIGIT8}+#*/ - UINT2 = /#{DIGIT2}+#*/ - DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ - UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ - UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ - UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ - UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ - REAL10 = /#{SIGN}#{UREAL10}/ - REAL16 = /#{SIGN}#{UREAL16}/ - REAL8 = /#{SIGN}#{UREAL8}/ - REAL2 = /#{SIGN}#{UREAL2}/ - IMAG10 = /i|#{UREAL10}i/ - IMAG16 = /i|#{UREAL16}i/ - IMAG8 = /i|#{UREAL8}i/ - IMAG2 = /i|#{UREAL2}i/ - COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ - COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ - COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ - COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ - NUM10 = /#{PREFIX10}?#{COMPLEX10}/ - NUM16 = /#{PREFIX16}#{COMPLEX16}/ - NUM8 = /#{PREFIX8}#{COMPLEX8}/ - NUM2 = /#{PREFIX2}#{COMPLEX2}/ - NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ - - private - def scan_tokens tokens,options - - state = :initial - ident_kind = IDENT_KIND - - until eos? - kind = match = nil - - case state - when :initial - if scan(/ \s+ | \\\n /x) - kind = :space - elsif scan(/['\(\[\)\]]|#\(/) - kind = :operator_fat - elsif scan(/;.*/) - kind = :comment - elsif scan(/#\\(?:newline|space|.?)/) - kind = :char - elsif scan(/#[ft]/) - kind = :pre_constant - elsif scan(/#{IDENTIFIER}/o) - kind = ident_kind[matched] - elsif scan(/\./) - kind = :operator - elsif scan(/"/) - tokens << [:open, :string] - state = :string - tokens << ['"', :delimiter] - next - elsif scan(/#{NUM}/o) and not matched.empty? - kind = :integer - elsif getch - kind = :error - end - - when :string - if scan(/[^"\\]+/) or scan(/\\.?/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - next - else - raise_inspect "else case \" reached; %p not handled." % peek(1), - tokens, state - end - - else - raise "else case reached" - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens, state unless match - - tokens << [match, kind] - - end # until eos - - if state == :string - tokens << [:close, :string] - end - - tokens - - end #scan_tokens - end #class - end #module scanners -end #module coderay \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -module CodeRay module Scanners - - # by Josh Goebel - class SQL < Scanner - - register_for :sql - - RESERVED_WORDS = %w( - create database table index trigger drop primary key set select - insert update delete replace into - on from values before and or if exists case when - then else as group order by avg where - join inner outer union engine not - like end using collate show columns begin - ) - - PREDEFINED_TYPES = %w( - char varchar enum binary text tinytext mediumtext - longtext blob tinyblob mediumblob longblob timestamp - date time datetime year double decimal float int - integer tinyint mediumint bigint smallint unsigned bit - bool boolean hex bin oct - ) - - PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) - - DIRECTIVES = %w( auto_increment unique default charset ) - - PREDEFINED_CONSTANTS = %w( null true false ) - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(PREDEFINED_FUNCTIONS, :predefined). - add(DIRECTIVES, :directive) - - ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - STRING_PREFIXES = /[xnb]|_\w+/i - - def scan_tokens tokens, options - - state = :initial - string_type = nil - string_content = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ | \\\n /x) - kind = :space - - elsif scan(/^(?:--\s?|#).*/) - kind = :comment - - elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) - kind = :operator - - elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) - prefix = self[1] - string_type = self[2] - tokens << [:open, :string] - tokens << [prefix, :modifier] if prefix - match = string_type - state = :string - kind = :delimiter - - elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) - kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] - - elsif scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - - elsif scan(/0[0-7]+(?![89.eEfF])/) - kind = :oct - - elsif scan(/(?>\d+)(?![.eEfF])/) - kind = :integer - - elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - - else - getch - kind = :error - - end - - elsif state == :string - if match = scan(/[^\\"'`]+/) - string_content << match - next - elsif match = scan(/["'`]/) - if string_type == match - if peek(1) == string_type # doubling means escape - string_content << string_type << getch - next - end - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - string_type = nil - next - else - string_content << match - end - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :char - elsif match = scan(/ \\ . /mox) - string_content << match - next - elsif scan(/ \\ | $ /x) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :error - state = :initial - else - raise "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - unless kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - tokens - - end - - end - -end end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # XML Scanner - # - # Currently this is the same scanner as Scanners::HTML. - class XML < HTML - - register_for :xml - file_extension 'xml' - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -module CodeRay -module Scanners - - # YAML Scanner - # - # Based on the YAML scanner from Syntax by Jamis Buck. - class YAML < Scanner - - register_for :yaml - file_extension 'yml' - - KINDS_NOT_LOC = :all - - def scan_tokens tokens, options - - value_expected = nil - state = :initial - key_indent = indent = 0 - - until eos? - - kind = nil - match = nil - key_indent = nil if bol? - - if match = scan(/ +[\t ]*/) - kind = :space - - elsif match = scan(/\n+/) - kind = :space - state = :initial if match.index(?\n) - - elsif match = scan(/#.*/) - kind = :comment - - elsif bol? and case - when match = scan(/---|\.\.\./) - tokens << [:open, :head] - tokens << [match, :head] - tokens << [:close, :head] - next - when match = scan(/%.*/) - tokens << [match, :doctype] - next - end - - elsif state == :value and case - when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) - tokens << [:open, :string] - tokens << [matched, :delimiter] - tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) - tokens << [matched, :delimiter] if scan(/"/) - tokens << [:close, :string] - next - when match = scan(/[|>][-+]?/) - tokens << [:open, :string] - tokens << [match, :delimiter] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - tokens << [:close, :string] - next - when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) - tokens << [match, :string] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - next - end - - elsif case - when match = scan(/[-:](?= |$)/) - state = :value if state == :colon && (match == ':' || match == '-') - state = :value if state == :initial && match == '-' - kind = :operator - when match = scan(/[,{}\[\]]/) - kind = :operator - when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) - kind = :key - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) - tokens << [:open, :key] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] - tokens << [match[-1,1], :delimiter] - tokens << [:close, :key] - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - next - when scan(/(![\w\/]+)(:([\w:]+))?/) - tokens << [self[1], :type] - if self[2] - tokens << [':', :operator] - tokens << [self[3], :class] - end - next - when scan(/&\S+/) - kind = :variable - when scan(/\*\w+/) - kind = :global_variable - when scan(/< :c, - :cplusplus => :cpp, - :'c++' => :cpp, - :ecma => :java_script, - :ecmascript => :java_script, - :ecma_script => :java_script, - :irb => :ruby, - :javascript => :java_script, - :js => :java_script, - :nitro => :nitro_xhtml, - :pascal => :delphi, - :plain => :plaintext, - :xhtml => :html, - :yml => :yaml - - default :plain - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/c.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/c.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -module CodeRay -module Scanners - - class C < Scanner - - include Streamable - - register_for :c - file_extension 'c' - - RESERVED_WORDS = [ - 'asm', 'break', 'case', 'continue', 'default', 'do', - 'else', 'enum', 'for', 'goto', 'if', 'return', - 'sizeof', 'struct', 'switch', 'typedef', 'union', 'while', - 'restrict', # added in C99 - ] - - PREDEFINED_TYPES = [ - 'int', 'long', 'short', 'char', - 'signed', 'unsigned', 'float', 'double', - 'bool', 'complex', # added in C99 - ] - - PREDEFINED_CONSTANTS = [ - 'EOF', 'NULL', - 'true', 'false', # added in C99 - ] - DIRECTIVES = [ - 'auto', 'extern', 'register', 'static', 'void', - 'const', 'volatile', # added in C89 - 'inline', # added in C99 - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\\n"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/cpp.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/cpp.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -module CodeRay -module Scanners - - class CPlusPlus < Scanner - - include Streamable - - register_for :cpp - file_extension 'cpp' - title 'C++' - - # http://www.cppreference.com/wiki/keywords/start - RESERVED_WORDS = [ - 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'break', - 'case', 'catch', 'class', 'compl', 'const_cast', - 'continue', 'default', 'delete', 'do', 'dynamic_cast', 'else', - 'enum', 'export', 'for', 'goto', 'if', 'namespace', 'new', - 'not', 'not_eq', 'or', 'or_eq', 'reinterpret_cast', 'return', - 'sizeof', 'static_cast', 'struct', 'switch', 'template', - 'throw', 'try', 'typedef', 'typeid', 'typename', 'union', - 'while', 'xor', 'xor_eq' - ] - - PREDEFINED_TYPES = [ - 'bool', 'char', 'double', 'float', 'int', 'long', - 'short', 'signed', 'unsigned', 'wchar_t', 'string' - ] - PREDEFINED_CONSTANTS = [ - 'false', 'true', - 'EOF', 'NULL', - ] - PREDEFINED_VARIABLES = [ - 'this' - ] - DIRECTIVES = [ - 'auto', 'const', 'explicit', 'extern', 'friend', 'inline', 'mutable', 'operator', - 'private', 'protected', 'public', 'register', 'static', 'using', 'virtual', 'void', - 'volatile' - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_VARIABLES, :local_variable). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'class' - state = :class_name_expected - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - when :class_name_expected - if scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = :class - state = :initial - - elsif match = scan(/\s+/) - kind = :space - - else - getch - kind = :error - state = :initial - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/css.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/css.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -module CodeRay -module Scanners - - class CSS < Scanner - - register_for :css - - KINDS_NOT_LOC = [ - :comment, - :class, :pseudo_class, :type, - :constant, :directive, - :key, :value, :operator, :color, :float, - :error, :important, - ] - - module RE - NonASCII = /[\x80-\xFF]/ - Hex = /[0-9a-fA-F]/ - Unicode = /\\#{Hex}{1,6}(?:\r\n|\s)?/ # differs from standard because it allows uppercase hex too - Escape = /#{Unicode}|\\[^\r\n\f0-9a-fA-F]/ - NMChar = /[-_a-zA-Z0-9]|#{NonASCII}|#{Escape}/ - NMStart = /[_a-zA-Z]|#{NonASCII}|#{Escape}/ - NL = /\r\n|\r|\n|\f/ - String1 = /"(?:[^\n\r\f\\"]|\\#{NL}|#{Escape})*"?/ # FIXME: buggy regexp - String2 = /'(?:[^\n\r\f\\']|\\#{NL}|#{Escape})*'?/ # FIXME: buggy regexp - String = /#{String1}|#{String2}/ - - HexColor = /#(?:#{Hex}{6}|#{Hex}{3})/ - Color = /#{HexColor}/ - - Num = /-?(?:[0-9]+|[0-9]*\.[0-9]+)/ - Name = /#{NMChar}+/ - Ident = /-?#{NMStart}#{NMChar}*/ - AtKeyword = /@#{Ident}/ - Percentage = /#{Num}%/ - - reldimensions = %w[em ex px] - absdimensions = %w[in cm mm pt pc] - Unit = Regexp.union(*(reldimensions + absdimensions)) - - Dimension = /#{Num}#{Unit}/ - - Comment = %r! /\* (?: .*? \*/ | .* ) !mx - Function = /(?:url|alpha)\((?:[^)\n\r\f]|\\\))*\)?/ - - Id = /##{Name}/ - Class = /\.#{Name}/ - PseudoClass = /:#{Name}/ - AttributeSelector = /\[[^\]]*\]?/ - - end - - def scan_tokens tokens, options - - value_expected = nil - states = [:initial] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - kind = :space - - elsif case states.last - when :initial, :media - if scan(/(?>#{RE::Ident})(?!\()|\*/ox) - kind = :type - elsif scan RE::Class - kind = :class - elsif scan RE::Id - kind = :constant - elsif scan RE::PseudoClass - kind = :pseudo_class - elsif match = scan(RE::AttributeSelector) - # TODO: Improve highlighting inside of attribute selectors. - tokens << [:open, :string] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1,1], :delimiter] if match[-1] == ?] - tokens << [:close, :string] - next - elsif match = scan(/@media/) - kind = :directive - states.push :media_before_name - end - - when :block - if scan(/(?>#{RE::Ident})(?!\()/ox) - if value_expected - kind = :value - else - kind = :key - end - end - - when :media_before_name - if scan RE::Ident - kind = :type - states[-1] = :media_after_name - end - - when :media_after_name - if scan(/\{/) - kind = :operator - states[-1] = :media - end - - when :comment - if scan(/(?:[^*\s]|\*(?!\/))+/) - kind = :comment - elsif scan(/\*\//) - kind = :comment - states.pop - elsif scan(/\s+/) - kind = :space - end - - else - raise_inspect 'Unknown state', tokens - - end - - elsif scan(/\/\*/) - kind = :comment - states.push :comment - - elsif scan(/\{/) - value_expected = false - kind = :operator - states.push :block - - elsif scan(/\}/) - value_expected = false - if states.last == :block || states.last == :media - kind = :operator - states.pop - else - kind = :error - end - - elsif match = scan(/#{RE::String}/o) - tokens << [:open, :string] - tokens << [match[0, 1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1, 1], :delimiter] if match.size >= 2 - tokens << [:close, :string] - next - - elsif match = scan(/#{RE::Function}/o) - tokens << [:open, :string] - start = match[/^\w+\(/] - tokens << [start, :delimiter] - if match[-1] == ?) - tokens << [match[start.size..-2], :content] - tokens << [')', :delimiter] - else - tokens << [match[start.size..-1], :content] - end - tokens << [:close, :string] - next - - elsif scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox) - kind = :float - - elsif scan(/#{RE::Color}/o) - kind = :color - - elsif scan(/! *important/) - kind = :important - - elsif scan(/rgb\([^()\n]*\)?/) - kind = :color - - elsif scan(/#{RE::AtKeyword}/o) - kind = :directive - - elsif match = scan(/ [+>:;,.=()\/] /x) - if match == ':' - value_expected = true - elsif match == ';' - value_expected = false - end - kind = :operator - - else - getch - kind = :error - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/debug.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/debug.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -module CodeRay -module Scanners - - # = Debug Scanner - class Debug < Scanner - - include Streamable - register_for :debug - file_extension 'raydebug' - title 'CodeRay Token Dump' - - protected - def scan_tokens tokens, options - - opened_tokens = [] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - tokens << [matched, :space] - next - - elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) - kind = self[1].to_sym - match = self[2].gsub(/\\(.)/, '\1') - - elsif scan(/ (\w+) < /x) - kind = self[1].to_sym - opened_tokens << kind - match = :open - - elsif !opened_tokens.empty? && scan(/ > /x) - kind = opened_tokens.pop || :error - match = :close - - else - kind = :error - getch - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/delphi.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/delphi.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -module CodeRay -module Scanners - - class Delphi < Scanner - - register_for :delphi - file_extension 'pas' - - RESERVED_WORDS = [ - 'and', 'array', 'as', 'at', 'asm', 'at', 'begin', 'case', 'class', - 'const', 'constructor', 'destructor', 'dispinterface', 'div', 'do', - 'downto', 'else', 'end', 'except', 'exports', 'file', 'finalization', - 'finally', 'for', 'function', 'goto', 'if', 'implementation', 'in', - 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', - 'library', 'mod', 'nil', 'not', 'object', 'of', 'or', 'out', 'packed', - 'procedure', 'program', 'property', 'raise', 'record', 'repeat', - 'resourcestring', 'set', 'shl', 'shr', 'string', 'then', 'threadvar', - 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', 'while', 'with', - 'xor', 'on' - ] - - DIRECTIVES = [ - 'absolute', 'abstract', 'assembler', 'at', 'automated', 'cdecl', - 'contains', 'deprecated', 'dispid', 'dynamic', 'export', - 'external', 'far', 'forward', 'implements', 'local', - 'near', 'nodefault', 'on', 'overload', 'override', - 'package', 'pascal', 'platform', 'private', 'protected', 'public', - 'published', 'read', 'readonly', 'register', 'reintroduce', - 'requires', 'resident', 'safecall', 'stdcall', 'stored', 'varargs', - 'virtual', 'write', 'writeonly' - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(DIRECTIVES, :directive) - - NAME_FOLLOWS = CaseIgnoringWordList.new(false). - add(%w(procedure function .)) - - private - def scan_tokens tokens, options - - state = :initial - last_token = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ /x) - tokens << [matched, :space] - next - - elsif scan(%r! \{ \$ [^}]* \}? | \(\* \$ (?: .*? \*\) | .* ) !mx) - tokens << [matched, :preprocessor] - next - - elsif scan(%r! // [^\n]* | \{ [^}]* \}? | \(\* (?: .*? \*\) | .* ) !mx) - tokens << [matched, :comment] - next - - elsif match = scan(/ <[>=]? | >=? | :=? | [-+=*\/;,@\^|\(\)\[\]] | \.\. /x) - kind = :operator - - elsif match = scan(/\./) - kind = :operator - if last_token == 'end' - tokens << [match, kind] - next - end - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = NAME_FOLLOWS[last_token] ? :ident : IDENT_KIND[match] - - elsif match = scan(/ ' ( [^\n']|'' ) (?:'|$) /x) - tokens << [:open, :char] - tokens << ["'", :delimiter] - tokens << [self[1], :content] - tokens << ["'", :delimiter] - tokens << [:close, :char] - next - - elsif match = scan(/ ' /x) - tokens << [:open, :string] - state = :string - kind = :delimiter - - elsif scan(/ \# (?: \d+ | \$[0-9A-Fa-f]+ ) /x) - kind = :char - - elsif scan(/ \$ [0-9A-Fa-f]+ /x) - kind = :hex - - elsif scan(/ (?: \d+ ) (?![eE]|\.[^.]) /x) - kind = :integer - - elsif scan(/ \d+ (?: \.\d+ (?: [eE][+-]? \d+ )? | [eE][+-]? \d+ ) /x) - kind = :float - - else - kind = :error - getch - - end - - elsif state == :string - if scan(/[^\n']+/) - kind = :content - elsif scan(/''/) - kind = :char - elsif scan(/'/) - tokens << ["'", :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif scan(/\n/) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise "else case \' reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - last_token = match - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/diff.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/diff.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -module CodeRay -module Scanners - - class Diff < Scanner - - register_for :diff - title 'diff output' - - def scan_tokens tokens, options - - line_kind = nil - state = :initial - - until eos? - kind = match = nil - - if match = scan(/\n/) - if line_kind - tokens << [:end_line, line_kind] - line_kind = nil - end - tokens << [match, :space] - next - end - - case state - - when :initial - if match = scan(/--- |\+\+\+ |=+|_+/) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Index: |Property changes on: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Added: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - state = :added - elsif match = scan(/\\ /) - tokens << [:begin_line, line_kind = :change] - tokens << [match, :change] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/(@@)((?>[^@\n]*))(@@)/) - tokens << [:begin_line, line_kind = :change] - tokens << [self[1], :change] - tokens << [self[2], :plain] - tokens << [self[3], :change] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/\+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/-/) - tokens << [:begin_line, line_kind = :delete] - tokens << [match, :delete] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/ .*/) - kind = :comment - elsif scan(/.+/) - tokens << [:begin_line, line_kind = :head] - kind = :plain - else - raise_inspect 'else case rached' - end - - when :added - if match = scan(/ \+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - else - state = :initial - next - end - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - tokens << [:end_line, line_kind] if line_kind - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/groovy.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/groovy.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -module CodeRay -module Scanners - - load :java - - class Groovy < Java - - include Streamable - register_for :groovy - - # TODO: Check this! - GROOVY_KEYWORDS = %w[ - as assert def in - ] - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case instanceof new return throw typeof while as assert in - ] - GROOVY_MAGIC_VARIABLES = %w[ it ] - - IDENT_KIND = Java::IDENT_KIND.dup. - add(GROOVY_KEYWORDS, :keyword). - add(GROOVY_MAGIC_VARIABLES, :local_variable) - - ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} - REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x - - # TODO: interpretation inside ', ", / - STRING_CONTENT_PATTERN = { - "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, - '"' => /[^\\$"\n]+/, - "'''" => /(?>[^\\']+|'(?!''))+/, - '"""' => /(?>[^\\$"]+|"(?!""))+/, - '/' => /[^\\$\/\n]+/, - } - - def scan_tokens tokens, options - - state = :initial - inline_block_stack = [] - inline_block_paren_depth = nil - string_delimiter = nil - import_clause = class_name_follows = last_token = after_def = false - value_expected = true - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - if match.index ?\n - import_clause = after_def = false - value_expected = true unless value_expected - end - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - after_def = false - kind = :comment - - elsif bol? && scan(/ \#!.* /x) - kind = :doctype - - elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) - after_def = value_expected = false - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - if last_token == '.' - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - elsif after_def && check(/\s*[({]/) - kind = :method - after_def = false - elsif kind == :ident && last_token != '?' && check(/:/) - kind = :key - else - class_name_follows = true if match == 'class' || (import_clause && match == 'as') - import_clause = match == 'import' - after_def = true if match == 'def' - end - - elsif scan(/;/) - import_clause = after_def = false - value_expected = true - kind = :operator - - elsif scan(/\{/) - class_name_follows = after_def = false - value_expected = true - kind = :operator - if !inline_block_stack.empty? - inline_block_paren_depth += 1 - end - - # TODO: ~'...', ~"..." and ~/.../ style regexps - elsif match = scan(/ \.\.] | \+\+ | - && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<>>?=? /x) - value_expected = true - value_expected = :regexp if match == '~' - after_def = false - kind = :operator - - elsif match = scan(/ [)\]}] /x) - value_expected = after_def = false - if !inline_block_stack.empty? && match == '}' - inline_block_paren_depth -= 1 - if inline_block_paren_depth == 0 # closing brace of inline block reached - tokens << [match, :inline_delimiter] - tokens << [:close, :inline] - state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop - next - end - end - kind = :operator - - elsif check(/[\d.]/) - after_def = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lLgG]?/) - kind = :integer - end - - elsif match = scan(/'''|"""/) - after_def = value_expected = false - state = :multiline_string - tokens << [:open, :string] - string_delimiter = match - kind = :delimiter - - # TODO: record.'name' - elsif match = scan(/["']/) - after_def = value_expected = false - state = match == '/' ? :regexp : :string - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\//)) - after_def = value_expected = false - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - after_def = value_expected = false - kind = :annotation - - elsif scan(/\//) - after_def = false - value_expected = true - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :multiline_string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - - elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - # TODO: regexp modifiers? s, m, x, i? - modifiers = scan(/[ix]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - state = :string if state == :multiline_string - tokens << [:close, state] - string_delimiter = nil - after_def = value_expected = false - state = :initial - next - - elsif (state == :string || state == :multiline_string) && - (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - - elsif match = scan(/ \$ #{IDENT} /mox) - tokens << [:open, :inline] - tokens << ['$', :inline_delimiter] - match = match[1..-1] - tokens << [match, IDENT_KIND[match]] - tokens << [:close, :inline] - next - elsif match = scan(/ \$ \{ /x) - tokens << [:open, :inline] - tokens << ['${', :inline_delimiter] - inline_block_stack << [state, string_delimiter, inline_block_paren_depth] - inline_block_paren_depth = 1 - state = :initial - next - - elsif scan(/ \$ /mx) - kind = :content - - elsif scan(/ \\. /mx) - kind = :content - - elsif scan(/ \\ | \n /x) - tokens << [:close, state] - kind = :error - after_def = value_expected = false - state = :initial - - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token = match unless [:space, :comment, :doctype].include? kind - - tokens << [match, kind] - - end - - if [:multiline_string, :string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/html.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/html.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,182 +0,0 @@ -module CodeRay -module Scanners - - # HTML Scanner - class HTML < Scanner - - include Streamable - register_for :html - - KINDS_NOT_LOC = [ - :comment, :doctype, :preprocessor, - :tag, :attribute_name, :operator, - :attribute_value, :delimiter, :content, - :plain, :entity, :error - ] - - ATTR_NAME = /[\w.:-]+/ - ATTR_VALUE_UNQUOTED = ATTR_NAME - TAG_END = /\/?>/ - HEX = /[0-9a-fA-F]/ - ENTITY = / - & - (?: - \w+ - | - \# - (?: - \d+ - | - x#{HEX}+ - ) - ) - ; - /ox - - PLAIN_STRING_CONTENT = { - "'" => /[^&'>\n]+/, - '"' => /[^&">\n]+/, - } - - def reset - super - @state = :initial - end - - private - def setup - @state = :initial - @plain_string_content = nil - end - - def scan_tokens tokens, options - - state = @state - plain_string_content = @plain_string_content - - until eos? - - kind = nil - match = nil - - if scan(/\s+/m) - kind = :space - - else - - case state - - when :initial - if scan(//m) - kind = :comment - elsif scan(//m) - kind = :doctype - elsif scan(/<\?xml.*?\?>/m) - kind = :preprocessor - elsif scan(/<\?.*?\?>|<%.*?%>/m) - kind = :comment - elsif scan(/<\/[-\w.:]*>/m) - kind = :tag - elsif match = scan(/<[-\w.:]+>?/m) - kind = :tag - state = :attribute unless match[-1] == ?> - elsif scan(/[^<>&]+/) - kind = :plain - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/[<>&]/) - kind = :error - else - raise_inspect '[BUG] else-case reached with state %p' % [state], tokens - end - - when :attribute - if scan(/#{TAG_END}/) - kind = :tag - state = :initial - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - state = :attribute_equal - else - kind = :error - getch - end - - when :attribute_equal - if scan(/=/) - kind = :operator - state = :attribute_value - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - elsif scan(/./) - kind = :error - state = :attribute - end - - when :attribute_value - if scan(/#{ATTR_VALUE_UNQUOTED}/o) - kind = :attribute_value - state = :attribute - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :attribute_value_string - plain_string_content = PLAIN_STRING_CONTENT[match] - kind = :delimiter - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - else - kind = :error - getch - end - - when :attribute_value_string - if scan(plain_string_content) - kind = :content - elsif scan(/['"]/) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :attribute - next - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/&/) - kind = :content - elsif scan(/[\n>]/) - tokens << [:close, :string] - kind = :error - state = :initial - end - - else - raise_inspect 'Unknown state: %p' % [state], tokens - - end - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - if options[:keep_state] - @state = state - @plain_string_content = plain_string_content - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -module CodeRay -module Scanners - - class Java < Scanner - - include Streamable - register_for :java - helper :builtin_types - - # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html - KEYWORDS = %w[ - assert break case catch continue default do else - finally for if instanceof import new package - return switch throw try typeof while - debugger export - ] - RESERVED = %w[ const goto ] - CONSTANTS = %w[ false null true ] - MAGIC_VARIABLES = %w[ this super ] - TYPES = %w[ - boolean byte char class double enum float int interface long - short void - ] << '[]' # because int[] should be highlighted as a type - DIRECTIVES = %w[ - abstract extends final implements native private protected public - static strictfp synchronized throws transient volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(RESERVED, :reserved). - add(CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(TYPES, :type). - add(BuiltinTypes::List, :pre_type). - add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). - add(DIRECTIVES, :directive) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - import_clause = class_name_follows = last_token_dot = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - tokens << [match, :comment] - next - - elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - if last_token_dot - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - else - import_clause = true if match == 'import' - class_name_follows = true if match == 'class' || match == 'interface' - end - - elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) - kind = :operator - - elsif scan(/;/) - import_clause = false - kind = :operator - - elsif scan(/\{/) - class_name_follows = false - kind = :operator - - elsif check(/[\d.]/) - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lL]?/) - kind = :integer - end - - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :string - string_delimiter = match - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - kind = :annotation - - else - getch - kind = :error - - end - - when :string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - tokens << [:close, state] - string_delimiter = nil - state = :initial - next - elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/all-wcprops Tue Feb 22 16:48:15 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 79 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java -END -builtin_types.rb -K 25 -svn:wc:ra_dav:version-url -V 96 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/builtin_types.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -builtin_types.rb -file - - - - -2010-09-23T14:37:45.675761Z -2522414597cbbef27fad175c20c8a556 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -41768 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/prop-base/builtin_types.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/prop-base/builtin_types.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,419 +0,0 @@ -module CodeRay -module Scanners - - module Java::BuiltinTypes # :nodoc: - - List = %w[ - AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection - AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel - AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences - AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector - AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit - AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible - AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext - AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText - AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject - AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection - AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange - AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException - AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent - ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc - ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub - ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent - ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener - Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi - AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite - AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement - Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet - AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array - ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType - AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray - AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference - AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute - AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator - AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException - AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip - AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem - AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback - AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy - AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException - BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException - BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute - BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI - BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup - BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI - BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory - BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel - BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI - BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI - BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI - BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI - BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI - BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException - BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport - BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener - BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider - BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener - BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport - BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding - BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory - BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator - BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp - BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException - BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte - ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet - CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler - CancelablePrintJob CancellationException CancelledKeyException CannotProceedException - CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor - CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException - CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException - CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult - CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator - CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore - CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener - Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter - CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider - Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice - ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class - ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError - ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard - ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException - ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner - CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection - CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI - ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource - ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator - CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel - ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation - ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData - CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl - CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap - ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback - ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener - ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container - ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler - ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory - Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported - CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 - CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector - CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer - DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort - DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl - DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource - DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat - DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing - DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel - DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel - DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter - DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer - DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme - DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument - DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor - DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed - DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec - DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable - DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec - DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream - Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory - DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document - DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener - DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer - DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter - DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener - DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter - DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey - DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey - DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m - ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey - ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder - EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum - EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error - ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener - EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception - ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor - ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException - ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse - Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field - FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel - FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream - FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap - FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter - Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter - Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener - FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter - FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics - FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException - Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future - FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean - GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError - GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics - Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter - GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream - GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet - HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet - HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter - HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument - HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection - HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon - IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage - IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl - IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener - IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener - IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException - IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException - IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException - IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException - IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException - IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities - ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl - ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi - ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder - ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi - ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel - IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address - InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited - InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext - InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext - InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests - InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource - InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException - Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError - InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener - InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException - InterruptedNamingException InterruptibleChannel IntrospectionException Introspector - InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException - InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException - InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException - InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException - InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException - InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException - InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException - InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException - InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler - InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator - IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection - JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog - JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu - JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification - JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory - JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException - JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted - JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets - JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName - JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet - JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable - JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator - JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField - JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal - KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException - KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory - KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager - KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep - KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI - LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy - LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName - LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer - LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException - LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException - LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator - ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView - LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext - LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp - LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException - MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission - ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException - MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo - MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo - MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer - MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory - MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter - MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName - MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler - MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType - MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener - MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager - MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI - MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon - MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane - MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI - MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton - MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI - MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method - MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat - MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException - MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException - Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo - ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo - ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification - MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter - MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent - MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI - MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI - MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI - MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster - MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI - MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI - MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet - MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair - NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration - NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException - NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError - NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException - NoninvertibleTransformException NonReadableChannelException NonWritableChannelException - NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException - NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException - NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException - NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster - NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport - NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException - NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException - NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper - OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput - ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream - ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID - Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport - OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport - OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo - OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException - OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError - OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException - OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes - PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor - Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor - ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException - ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch - PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported - Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe - PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel - PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker - PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy - PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent - PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate - PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences - PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException - PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob - PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo - PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason - PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter - PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent - PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService - PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet - PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader - PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException - PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor - ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener - PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor - PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle - PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector - PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval - QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp - RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException - ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape - ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue - ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable - RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException - RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification - RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport - RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall - RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub - RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage - RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName - RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result - ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader - RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub - RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl - RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub - RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList - RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer - RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener - RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec - RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey - RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit - RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException - RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory - SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource - SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture - ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable - Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI - SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec - SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException - SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider - Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob - SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef - SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef - ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException - ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set - SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer - ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi - SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter - SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax - SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException - SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory - SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException - SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet - SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource - Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel - SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput - SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException - SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException - SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession - SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack - StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit - StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService - StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer - StringBufferInputStream StringBuilder StringCharacterIterator StringContent - StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr - StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate - StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet - Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings - SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException - SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants - SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory - SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor - TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener - TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData - TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates - TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo - TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint - Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor - Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer - TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone - TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track - TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable - TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException - TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency - TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel - TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener - TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory - TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults - UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener - UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError - UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException - UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException - UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException - UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission - UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent - UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException - UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError - UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException - UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL - URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory - UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler - ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener - VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI - VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet - WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener - WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage - WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector - X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension - X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants - XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath - XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory - XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver - XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView - ] - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/builtin_types.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/builtin_types.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,419 +0,0 @@ -module CodeRay -module Scanners - - module Java::BuiltinTypes # :nodoc: - - List = %w[ - AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection - AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel - AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences - AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector - AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit - AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible - AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext - AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText - AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject - AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection - AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange - AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException - AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent - ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc - ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub - ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent - ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener - Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi - AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite - AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement - Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet - AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array - ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType - AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray - AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference - AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute - AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator - AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException - AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip - AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem - AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback - AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy - AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException - BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException - BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute - BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI - BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup - BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI - BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory - BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel - BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI - BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI - BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI - BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI - BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI - BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException - BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport - BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener - BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider - BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener - BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport - BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding - BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory - BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator - BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp - BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException - BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte - ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet - CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler - CancelablePrintJob CancellationException CancelledKeyException CannotProceedException - CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor - CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException - CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException - CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult - CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator - CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore - CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener - Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter - CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider - Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice - ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class - ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError - ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard - ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException - ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner - CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection - CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI - ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource - ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator - CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel - ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation - ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData - CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl - CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap - ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback - ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener - ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container - ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler - ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory - Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported - CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 - CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector - CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer - DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort - DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl - DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource - DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat - DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing - DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel - DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel - DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter - DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer - DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme - DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument - DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor - DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed - DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec - DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable - DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec - DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream - Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory - DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document - DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener - DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer - DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter - DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener - DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter - DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey - DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey - DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m - ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey - ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder - EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum - EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error - ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener - EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception - ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor - ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException - ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse - Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field - FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel - FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream - FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap - FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter - Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter - Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener - FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter - FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics - FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException - Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future - FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean - GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError - GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics - Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter - GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream - GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet - HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet - HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter - HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument - HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection - HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon - IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage - IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl - IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener - IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener - IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException - IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException - IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException - IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException - IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException - IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities - ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl - ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi - ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder - ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi - ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel - IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address - InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited - InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext - InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext - InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests - InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource - InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException - Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError - InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener - InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException - InterruptedNamingException InterruptibleChannel IntrospectionException Introspector - InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException - InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException - InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException - InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException - InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException - InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException - InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException - InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException - InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler - InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator - IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection - JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog - JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu - JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification - JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory - JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException - JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted - JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets - JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName - JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet - JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable - JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator - JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField - JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal - KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException - KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory - KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager - KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep - KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI - LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy - LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName - LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer - LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException - LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException - LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator - ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView - LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext - LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp - LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException - MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission - ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException - MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo - MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo - MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer - MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory - MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter - MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName - MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler - MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType - MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener - MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager - MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI - MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon - MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane - MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI - MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton - MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI - MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method - MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat - MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException - MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException - Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo - ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo - ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification - MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter - MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent - MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI - MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI - MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI - MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster - MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI - MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI - MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet - MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair - NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration - NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException - NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError - NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException - NoninvertibleTransformException NonReadableChannelException NonWritableChannelException - NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException - NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException - NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException - NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster - NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport - NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException - NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException - NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper - OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput - ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream - ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID - Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport - OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport - OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo - OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException - OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError - OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException - OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes - PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor - Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor - ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException - ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch - PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported - Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe - PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel - PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker - PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy - PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent - PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate - PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences - PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException - PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob - PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo - PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason - PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter - PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent - PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService - PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet - PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader - PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException - PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor - ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener - PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor - PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle - PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector - PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval - QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp - RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException - ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape - ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue - ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable - RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException - RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification - RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport - RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall - RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub - RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage - RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName - RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result - ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader - RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub - RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl - RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub - RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList - RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer - RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener - RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec - RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey - RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit - RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException - RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory - SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource - SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture - ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable - Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI - SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec - SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException - SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider - Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob - SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef - SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef - ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException - ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set - SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer - ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi - SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter - SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax - SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException - SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory - SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException - SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet - SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource - Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel - SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput - SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException - SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException - SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession - SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack - StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit - StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService - StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer - StringBufferInputStream StringBuilder StringCharacterIterator StringContent - StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr - StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate - StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet - Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings - SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException - SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants - SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory - SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor - TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener - TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData - TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates - TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo - TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint - Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor - Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer - TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone - TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track - TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable - TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException - TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency - TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel - TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener - TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory - TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults - UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener - UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError - UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException - UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException - UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException - UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission - UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent - UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException - UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError - UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException - UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL - URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory - UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler - ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener - VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI - VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet - WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener - WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage - WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector - X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension - X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants - XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath - XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory - XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver - XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView - ] - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java_script.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java_script.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -module CodeRay -module Scanners - - class JavaScript < Scanner - - include Streamable - - register_for :java_script - file_extension 'js' - - # The actual JavaScript keywords. - KEYWORDS = %w[ - break case catch continue default delete do else - finally for function if in instanceof new - return switch throw try typeof var void while with - ] - PREDEFINED_CONSTANTS = %w[ - false null true undefined - ] - - MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 - - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case delete in instanceof new return throw typeof with - ] - - # Reserved for future use. - RESERVED_WORDS = %w[ - abstract boolean byte char class debugger double enum export extends - final float goto implements import int interface long native package - private protected public short static super synchronized throws transient - volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(KEYWORDS, :keyword) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - REGEXP_ESCAPE = / [bBdDsSwW] /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - KEY_CHECK_PATTERN = { - "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, - '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, - } - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - value_expected = true - key_expected = false - function_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - value_expected = true if !value_expected && match.index(?\n) - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - kind = :comment - - elsif check(/\.?\d/) - key_expected = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - kind = :float - elsif scan(/\d+/) - kind = :integer - end - - elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) - # FIXME: scan over nested tags - xml_scanner.tokenize match - value_expected = false - next - - elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) - value_expected = true - last_operator = match[-1] - key_expected = (last_operator == ?{) || (last_operator == ?,) - function_expected = false - kind = :operator - - elsif scan(/ [)\]}]+ /x) - function_expected = key_expected = value_expected = false - kind = :operator - - elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - # TODO: labels - if kind == :ident - if match.index(?$) # $ allowed inside an identifier - kind = :predefined - elsif function_expected - kind = :function - elsif check(/\s*[=:]\s*function\b/) - kind = :function - elsif key_expected && check(/\s*:/) - kind = :key - end - end - function_expected = (kind == :keyword) && (match == 'function') - key_expected = false - - elsif match = scan(/["']/) - if key_expected && check(KEY_CHECK_PATTERN[match]) - state = :key - else - state = :string - end - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\/(?=\S)/)) - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ \/ /x) - value_expected = true - key_expected = false - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :key - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - modifiers = scan(/[gim]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - tokens << [:close, state] - string_delimiter = nil - key_expected = value_expected = false - state = :initial - next - elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, state] - kind = :error - key_expected = value_expected = false - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - protected - - def reset_instance - super - @xml_scanner.reset if defined? @xml_scanner - end - - def xml_scanner - @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/json.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/json.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -module CodeRay -module Scanners - - class JSON < Scanner - - include Streamable - - register_for :json - file_extension 'json' - - KINDS_NOT_LOC = [ - :float, :char, :content, :delimiter, - :error, :integer, :operator, :value, - ] - - CONSTANTS = %w( true false null ) - IDENT_KIND = WordList.new(:key).add(CONSTANTS, :value) - - ESCAPE = / [bfnrt\\"\/] /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x - - def scan_tokens tokens, options - - state = :initial - stack = [] - string_delimiter = nil - key_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - elsif match = scan(/ [:,\[{\]}] /x) - kind = :operator - case match - when '{' then stack << :object; key_expected = true - when '[' then stack << :array - when ':' then key_expected = false - when ',' then key_expected = true if stack.last == :object - when '}', ']' then stack.pop # no error recovery, but works for valid JSON - end - elsif match = scan(/ true | false | null /x) - kind = IDENT_KIND[match] - elsif match = scan(/-?(?:0|[1-9]\d*)/) - kind = :integer - if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) - match << matched - kind = :float - end - elsif match = scan(/"/) - state = key_expected ? :key : :string - tokens << [:open, state] - kind = :delimiter - else - getch - kind = :error - end - - when :string, :key - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, state] - state = :initial - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :key].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/nitro_xhtml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/nitro_xhtml.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # Nitro XHTML Scanner - class NitroXHTML < Scanner - - include Streamable - register_for :nitro_xhtml - file_extension :xhtml - title 'Nitro XHTML' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - NITRO_RUBY_BLOCK = / - <\?r - (?> - [^\?]* - (?> \?(?!>) [^\?]* )* - ) - (?: \?> )? - | - - (?> - [^<]* - (?> <(?!\/ruby>) [^<]* )* - ) - (?: <\/ruby> )? - | - <% - (?> - [^%]* - (?> %(?!>) [^%]* )* - ) - (?: %> )? - /mx - - NITRO_VALUE_BLOCK = / - \# - (?: - \{ - [^{}]* - (?> - \{ [^}]* \} - (?> [^{}]* ) - )* - \}? - | \| [^|]* \|? - | \( [^)]* \)? - | \[ [^\]]* \]? - | \\ [^\\]* \\? - ) - /x - - NITRO_ENTITY = / - % (?: \#\d+ | \w+ ) ; - / - - START_OF_RUBY = / - (?=[<\#%]) - < (?: \?r | % | ruby> ) - | \# [{(|] - | % (?: \#\d+ | \w+ ) ; - /x - - CLOSING_PAREN = Hash.new do |h, p| - h[p] = p - end.update( { - '(' => ')', - '[' => ']', - '{' => '}', - } ) - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) - start_tag = match[0,2] - delimiter = CLOSING_PAREN[start_tag[1,1]] - end_tag = match[-1,1] == delimiter ? delimiter : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) - start_tag = '' ? '?>' : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -(end_tag.size)-1] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif entity = scan(/#{NITRO_ENTITY}/o) - tokens << [entity, :entity] - - elsif scan(/%/) - tokens << [matched, :error] - - else - raise_inspect 'else-case reached!', tokens - - end - - end - - tokens - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/php.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/php.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,527 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # Original by Stefan Walk. - class PHP < Scanner - - register_for :php - file_extension 'php' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - def setup - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - module Words - - # according to http://www.php.net/manual/en/reserved.keywords.php - KEYWORDS = %w[ - abstract and array as break case catch class clone const continue declare default do else elseif - enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global - goto if implements interface instanceof namespace new or private protected public static switch - throw try use var while xor - cfunction old_function - ] - - TYPES = %w[ int integer float double bool boolean string array object resource ] - - LANGUAGE_CONSTRUCTS = %w[ - die echo empty exit eval include include_once isset list - require require_once return print unset - ] - - CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] - - # according to http://php.net/quickref.php on 2009-04-21; - # all functions with _ excluded (module functions) and selected additional functions - BUILTIN_FUNCTIONS = %w[ - abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 - atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec - bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite - calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog - compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex - decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each - ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract - fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner - fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv - fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate - getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid - getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext - gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate - gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell - gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate - implode include intval ip2long iptcembed iptcparse isset - jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp - juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log - log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort - natsort next ngettext nl2br nthmac octdec opendir openlog - ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow - prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile - readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir - serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget - snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat - strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen - strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn - strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam - textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack - unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap - array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc - array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip - array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey - array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad - array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift - array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect - array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk - array_walk_recursive - assert_options base_convert base64_decode base64_encode - chunk_split class_exists class_implements class_parents - count_chars debug_backtrace debug_print_backtrace debug_zval_dump - error_get_last error_log error_reporting extension_loaded - file_exists file_get_contents file_put_contents load_file - func_get_arg func_get_args func_num_args function_exists - get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars - get_current_user get_declared_classes get_declared_interfaces get_defined_constants - get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table - get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime - get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type - gc_collect_cycles gc_disable gc_enable gc_enabled - halt_compiler headers_list headers_sent highlight_file highlight_string - html_entity_decode htmlspecialchars_decode - in_array include_once inclued_get_data - is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite - is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable - is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file - is_writable is_writeable - locale_get_default locale_set_default - number_format override_function parse_str parse_url - php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name - php_strip_whitespace php_uname - preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace - preg_replace_callback preg_split print_r - require_once register_shutdown_function register_tick_function - set_error_handler set_exception_handler set_file_buffer set_include_path - set_magic_quotes_runtime set_time_limit shell_exec - str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count - strip_tags substr_compare substr_count substr_replace - time_nanosleep time_sleep_until - token_get_all token_name trigger_error - unregister_tick_function use_soap_error_handler user_error - utf8_decode utf8_encode var_dump var_export - version_compare - zend_logo_guid zend_thread_id zend_version - create_function call_user_func_array - posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid - posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups - posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid - posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid - posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod - posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid - posix_setuid posix_strerror posix_times posix_ttyname posix_uname - pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority - pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait - pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited - pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig - ] - # TODO: more built-in PHP functions? - - EXCEPTIONS = %w[ - E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING - E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT - ] - - CONSTANTS = %w[ - null true false self parent - __LINE__ __DIR__ __FILE__ __LINE__ - __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ - PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS - PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH - PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR - PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX - PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END - __COMPILER_HALT_OFFSET__ - EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS - EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL - COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED - CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 - M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES - CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB - HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS - INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP - CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT - STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX - LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 - ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 - ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 - MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT - ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING - POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES - N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR - YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN - LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 - LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY - LOG_NDELAY LOG_NOWAIT LOG_PERROR - ] - - PREDEFINED = %w[ - $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV - $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header - $argc $argv - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(KEYWORDS, :reserved). - add(TYPES, :pre_type). - add(LANGUAGE_CONSTRUCTS, :reserved). - add(BUILTIN_FUNCTIONS, :predefined). - add(CLASSES, :pre_constant). - add(EXCEPTIONS, :exception). - add(CONSTANTS, :pre_constant) - - VARIABLE_KIND = WordList.new(:local_variable). - add(PREDEFINED, :predefined) - end - - module RE - - PHP_START = / - ]*?language\s*=\s*"php"[^>]*?> | - ]*?language\s*=\s*'php'[^>]*?> | - <\?php\d? | - <\?(?!xml) - /xi - - PHP_END = %r! - | - \?> - !xi - - HTML_INDICATOR = / ]/i - - IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i - VARIABLE = /\$#{IDENTIFIER}/ - - OPERATOR = / - \.(?!\d)=? | # dot that is not decimal point, string concatenation - && | \|\| | # logic - :: | -> | => | # scope, member, dictionary - \\(?!\n) | # namespace - \+\+ | -- | # increment, decrement - [,;?:()\[\]{}] | # simple delimiters - [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts - [~$] | # whatever - =& | # reference assignment - [=!]=?=? | <> | # comparison and assignment - <<=? | >>=? | [<>]=? # comparison and shift - /x - - end - - def scan_tokens tokens, options - - if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) - tokens << [:open, :inline] - tokens << [match, :local_variable] - tokens << [scan(/->/), :operator] - tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] - tokens << [:close, :inline] - next - elsif check(/->/) - match << scan(/->/) - kind = :error - end - elsif match = scan(/\{/) - if check(/\$/) - kind = :delimiter - states[-1] = [states.last, delimiter] - delimiter = nil - states.push :php - tokens << [:open, :inline] - else - kind = :string - end - elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) - kind = :local_variable - elsif scan(/\$/) - kind = :content - end - - when :class_expected - if scan(/\s+/) - kind = :space - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :class - states.pop - else - states.pop - next - end - - when :function_expected - if scan(/\s+/) - kind = :space - elsif scan(/&/) - kind = :operator - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :function - states.pop - else - states.pop - next - end - - else - raise_inspect 'Unknown state!', tokens, states - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, states - end - raise_inspect 'Empty token', tokens, states unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/plaintext.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/plaintext.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Scanners - - class Plaintext < Scanner - - register_for :plaintext, :plain - title 'Plain text' - - include Streamable - - KINDS_NOT_LOC = [:plain] - - def scan_tokens tokens, options - text = (scan_until(/\z/) || '') - tokens << [text, :plain] - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/python.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/python.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,285 +0,0 @@ -module CodeRay -module Scanners - - # Bases on pygments' PythonLexer, see - # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. - class Python < Scanner - - include Streamable - - register_for :python - file_extension 'py' - - KEYWORDS = [ - 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', - 'del', 'elif', 'else', 'except', 'finally', 'for', - 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', - 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', - 'nonlocal', # new in Python 3 - ] - - OLD_KEYWORDS = [ - 'exec', 'print', # gone in Python 3 - ] - - PREDEFINED_METHODS_AND_TYPES = %w[ - __import__ abs all any apply basestring bin bool buffer - bytearray bytes callable chr classmethod cmp coerce compile - complex delattr dict dir divmod enumerate eval execfile exit - file filter float frozenset getattr globals hasattr hash hex id - input int intern isinstance issubclass iter len list locals - long map max min next object oct open ord pow property range - raw_input reduce reload repr reversed round set setattr slice - sorted staticmethod str sum super tuple type unichr unicode - vars xrange zip - ] - - PREDEFINED_EXCEPTIONS = %w[ - ArithmeticError AssertionError AttributeError - BaseException DeprecationWarning EOFError EnvironmentError - Exception FloatingPointError FutureWarning GeneratorExit IOError - ImportError ImportWarning IndentationError IndexError KeyError - KeyboardInterrupt LookupError MemoryError NameError - NotImplemented NotImplementedError OSError OverflowError - OverflowWarning PendingDeprecationWarning ReferenceError - RuntimeError RuntimeWarning StandardError StopIteration - SyntaxError SyntaxWarning SystemError SystemExit TabError - TypeError UnboundLocalError UnicodeDecodeError - UnicodeEncodeError UnicodeError UnicodeTranslateError - UnicodeWarning UserWarning ValueError Warning ZeroDivisionError - ] - - PREDEFINED_VARIABLES_AND_CONSTANTS = [ - 'False', 'True', 'None', # "keywords" since Python 3 - 'self', 'Ellipsis', 'NotImplemented', - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(OLD_KEYWORDS, :old_keyword). - add(PREDEFINED_METHODS_AND_TYPES, :predefined). - add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). - add(PREDEFINED_EXCEPTIONS, :exception) - - NAME = / [^\W\d] \w* /x - ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x - - OPERATOR = / - \.\.\. | # ellipsis - \.(?!\d) | # dot but not decimal point - [,;:()\[\]{}] | # simple delimiters - \/\/=? | \*\*=? | # special math - [-+*\/%&|^]=? | # ordinary math and binary logic - [~`] | # binary complement and inspection - <<=? | >>=? | [<>=]=? | != # comparison and assignment - /x - - STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = Regexp.union delimiter - end - - STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x - end - - DEF_NEW_STATE = WordList.new(:initial). - add(%w(def), :def_expected). - add(%w(import from), :include_expected). - add(%w(class), :class_expected) - - DESCRIPTOR = / - #{NAME} - (?: \. #{NAME} )* - | \* - /x - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - string_raw = false - import_clause = class_name_follows = last_token_dot = false - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - from_import_state = [] - - until eos? - - kind = nil - match = nil - - if state == :string - if scan(STRING_DELIMITER_REGEXP[string_delimiter]) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif string_delimiter.size == 3 && scan(/\n/) - kind = :content - elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) - kind = :content - elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) - kind = :char - elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) - kind = :char - elsif scan(/ \\ . /x) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state - end - - elsif match = scan(/ [ \t]+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(/\n/) - tokens << [match, :space] - state = :initial if state == :include_expected - next - - elsif match = scan(/ \# [^\n]* /mx) - tokens << [match, :comment] - next - - elsif state == :initial - - if scan(/#{OPERATOR}/o) - kind = :operator - - elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) - tokens << [:open, :string] - string_delimiter = self[2] - string_raw = false - modifiers = self[1] - unless modifiers.empty? - string_raw = !!modifiers.index(?r) - tokens << [modifiers, :modifier] - match = string_delimiter - end - state = :string - kind = :delimiter - - # TODO: backticks - - elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = IDENT_KIND[match] - # TODO: keyword arguments - kind = :ident if last_token_dot - if kind == :old_keyword - kind = check(/\(/) ? :ident : :keyword - elsif kind == :predefined && check(/ *=/) - kind = :ident - elsif kind == :keyword - state = DEF_NEW_STATE[match] - from_import_state << match.to_sym if state == :include_expected - end - - elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) - kind = :decorator - - elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) - kind = :hex - - elsif scan(/0[bB][01]+[lL]?/) - kind = :bin - - elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - if scan(/[jJ]/) - match << matched - kind = :imaginary - end - - elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) - kind = :oct - - elsif match = scan(/\d+([lL])?/) - kind = :integer - if self[1] == nil && scan(/[jJ]/) - match << matched - kind = :imaginary - end - - else - getch - kind = :error - - end - - elsif state == :def_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :method - else - next - end - - elsif state == :class_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :class - else - next - end - - elsif state == :include_expected - if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) - kind = :include - if match == 'as' - kind = :keyword - from_import_state << :as - elsif from_import_state.first == :from && match == 'import' - kind = :keyword - from_import_state << :import - elsif from_import_state.last == :as - # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method - kind = :ident - from_import_state.pop - elsif IDENT_KIND[match] == :keyword - unscan - match = nil - state = :initial - next - end - elsif match = scan(/,/) - from_import_state.pop if from_import_state.last == :as - kind = :operator - else - from_import_state = [] - state = :initial - next - end - - else - raise_inspect 'Unknown state', tokens, state - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens, state unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/rhtml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/rhtml.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # RHTML Scanner - class RHTML < Scanner - - include Streamable - register_for :rhtml - title 'HTML ERB Template' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - ERB_RUBY_BLOCK = / - <%(?!%)[=-]? - (?> - [^\-%]* # normal* - (?> # special - (?: %(?!>) | -(?!%>) ) - [^\-%]* # normal* - )* - ) - (?: -?%> )? - /x - - START_OF_ERB = / - <%(?!%) - /x - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{ERB_RUBY_BLOCK}/o) - start_tag = match[/\A<%[-=]?/] - end_tag = match[/-?%?>?\z/] - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - else - raise_inspect 'else-case reached!', tokens - end - - end - - tokens - - end - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,413 +0,0 @@ -module CodeRay -module Scanners - - # This scanner is really complex, since Ruby _is_ a complex language! - # - # It tries to highlight 100% of all common code, - # and 90% of strange codes. - # - # It is optimized for HTML highlighting, and is not very useful for - # parsing or pretty printing. - # - # For now, I think it's better than the scanners in VIM or Syntax, or - # any highlighter I was able to find, except Caleb's RubyLexer. - # - # I hope it's also better than the rdoc/irb lexer. - class Ruby < Scanner - - include Streamable - - register_for :ruby - file_extension 'rb' - - helper :patterns - - if not defined? EncodingError - EncodingError = Class.new Exception - end - - private - def scan_tokens tokens, options - last_token_dot = false - value_expected = true - heredocs = nil - last_state = nil - state = :initial - depth = nil - inline_block_stack = [] - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - - patterns = Patterns # avoid constant lookup - - until eos? - match = nil - kind = nil - - if state.instance_of? patterns::StringState -# {{{ - match = scan_until(state.pattern) || scan_until(/\z/) - tokens << [match, :content] unless match.empty? - break if eos? - - if state.heredoc and self[1] # end of heredoc - match = getch.to_s - match << scan_until(/$/) unless eos? - tokens << [match, :delimiter] - tokens << [:close, state.type] - state = state.next_state - next - end - - case match = getch - - when state.delim - if state.paren - state.paren_depth -= 1 - if state.paren_depth > 0 - tokens << [match, :nesting_delimiter] - next - end - end - tokens << [match, :delimiter] - if state.type == :regexp and not eos? - modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) - tokens << [modifiers, :modifier] unless modifiers.empty? - end - tokens << [:close, state.type] - value_expected = false - state = state.next_state - - when '\\' - if state.interpreted - if esc = scan(/ #{patterns::ESCAPE} /ox) - tokens << [match + esc, :char] - else - tokens << [match, :error] - end - else - case m = getch - when state.delim, '\\' - tokens << [match + m, :char] - when nil - tokens << [match, :error] - else - tokens << [match + m, :content] - end - end - - when '#' - case peek(1) - when '{' - inline_block_stack << [state, depth, heredocs] - value_expected = true - state = :initial - depth = 1 - tokens << [:open, :inline] - tokens << [match + getch, :inline_delimiter] - when '$', '@' - tokens << [match, :escape] - last_state = state # scan one token as normal code, then return here - state = :initial - else - raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens - end - - when state.paren - state.paren_depth += 1 - tokens << [match, :nesting_delimiter] - - when /#{patterns::REGEXP_SYMBOLS}/ox - tokens << [match, :function] - - else - raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens - - end - next -# }}} - else -# {{{ - if match = scan(/[ \t\f]+/) - kind = :space - match << scan(/\s*/) unless eos? || heredocs - value_expected = true if match.index(?\n) - tokens << [match, kind] - next - - elsif match = scan(/\\?\n/) - kind = :space - if match == "\n" - value_expected = true - state = :initial if state == :undef_comma_expected - end - if heredocs - unscan # heredoc scanning needs \n at start - state = heredocs.shift - tokens << [:open, state.type] - heredocs = nil if heredocs.empty? - next - else - match << scan(/\s*/) unless eos? - end - tokens << [match, kind] - next - - elsif bol? && match = scan(/\#!.*/) - tokens << [match, :doctype] - next - - elsif match = scan(/\#.*/) or - ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) - kind = :comment - tokens << [match, kind] - next - - elsif state == :initial - - # IDENTS # - if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : - /#{patterns::METHOD_NAME}/o) - if last_token_dot - kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end - else - kind = patterns::IDENT_KIND[match] - if kind == :ident and match[/^[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) - kind = :constant - elsif kind == :reserved - state = patterns::DEF_NEW_STATE[match] - value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] - end - end - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) - kind = :ident - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - # OPERATORS # - elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) - if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ - value_expected = :set - end - last_token_dot = :set if self[1] - kind = :operator - unless inline_block_stack.empty? - case match - when '{' - depth += 1 - when '}' - depth -= 1 - if depth == 0 # closing brace of inline block reached - state, depth, heredocs = inline_block_stack.pop - heredocs = nil if heredocs && heredocs.empty? - tokens << [match, :inline_delimiter] - kind = :inline - match = :close - end - end - end - - elsif match = scan(/ ['"] /mx) - tokens << [:open, :string] - kind = :delimiter - state = patterns::StringState.new :string, match == '"', match # important for streaming - - elsif match = scan(/#{patterns::INSTANCE_VARIABLE}/o) - kind = :instance_variable - - elsif value_expected and match = scan(/\//) - tokens << [:open, :regexp] - kind = :delimiter - interpreted = true - state = patterns::StringState.new :regexp, interpreted, match - - # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) - elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) - kind = self[1] ? :float : :integer - - elsif match = scan(/#{patterns::SYMBOL}/o) - case delim = match[1] - when ?', ?" - tokens << [:open, :symbol] - tokens << [':', :symbol] - match = delim.chr - kind = :delimiter - state = patterns::StringState.new :symbol, delim == ?", match - else - kind = :symbol - end - - elsif match = scan(/ [-+!~^]=? | [*|&]{1,2}=? | >>? /x) - value_expected = :set - kind = :operator - - elsif value_expected and match = scan(/#{patterns::HEREDOC_OPEN}/o) - indented = self[1] == '-' - quote = self[3] - delim = self[quote ? 4 : 2] - kind = patterns::QUOTE_TO_TYPE[quote] - tokens << [:open, kind] - tokens << [match, :delimiter] - match = :close - heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) - heredocs ||= [] # create heredocs if empty - heredocs << heredoc - - elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) - kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do - raise_inspect 'Unknown fancy string: %%%p' % k, tokens - end - tokens << [:open, kind] - state = patterns::StringState.new kind, interpreted, self[2] - kind = :delimiter - - elsif value_expected and match = scan(/#{patterns::CHARACTER}/o) - kind = :integer - - elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) - value_expected = :set - kind = :operator - - elsif match = scan(/`/) - if last_token_dot - kind = :operator - else - tokens << [:open, :shell] - kind = :delimiter - state = patterns::StringState.new :shell, true, match - end - - elsif match = scan(/#{patterns::GLOBAL_VARIABLE}/o) - kind = :global_variable - - elsif match = scan(/#{patterns::CLASS_VARIABLE}/o) - kind = :class_variable - - else - if !unicode - # check for unicode - debug, $DEBUG = $DEBUG, false - begin - if check(/./mu).size > 1 - # seems like we should try again with unicode - unicode = true - end - rescue - # bad unicode char; use getch - ensure - $DEBUG = debug - end - next if unicode - end - kind = :error - match = getch - - end - - elsif state == :def_expected - state = :initial - if scan(/self\./) - tokens << ['self', :pre_constant] - tokens << ['.', :operator] - end - if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : - /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) - kind = :method - else - next - end - - elsif state == :module_expected - if match = scan(/< 1 - state = this_block.first - tokens << [:close, state.type] - end - - tokens - end - - end - -end -end - -# vim:fdm=marker diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/all-wcprops --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/all-wcprops Tue Feb 22 16:48:15 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 79 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby -END -patterns.rb -K 25 -svn:wc:ra_dav:version-url -V 91 -/svn/!svn/ver/3592/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/patterns.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -10 - -dir -4411 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -patterns.rb -file - - - - -2010-09-23T14:37:45.679790Z -ae0aca82c4390ffcc5757c97c71bc8f3 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6903 - diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/prop-base/patterns.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/prop-base/patterns.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,238 +0,0 @@ -# encoding: utf-8 -module CodeRay -module Scanners - - module Ruby::Patterns # :nodoc: - - RESERVED_WORDS = %w[ - and def end in or unless begin - defined? ensure module redo super until - BEGIN break do next rescue then - when END case else for retry - while alias class elsif if not return - undef yield - ] - - DEF_KEYWORDS = %w[ def ] - UNDEF_KEYWORDS = %w[ undef ] - ALIAS_KEYWORDS = %w[ alias ] - MODULE_KEYWORDS = %w[class module] - DEF_NEW_STATE = WordList.new(:initial). - add(DEF_KEYWORDS, :def_expected). - add(UNDEF_KEYWORDS, :undef_expected). - add(ALIAS_KEYWORDS, :alias_expected). - add(MODULE_KEYWORDS, :module_expected) - - PREDEFINED_CONSTANTS = %w[ - nil true false self - DATA ARGV ARGF __FILE__ __LINE__ - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant) - - IDENT = 'ä'[/[[:alpha:]]/] == 'ä' ? /[[:alpha:]_][[:alnum:]_]*/ : /[^\W\d]\w*/ - - METHOD_NAME = / #{IDENT} [?!]? /ox - METHOD_NAME_OPERATOR = / - \*\*? # multiplication and power - | [-+~]@? # plus, minus, tilde with and without at sign - | [\/%&|^`] # division, modulo or format strings, and, or, xor, system - | \[\]=? # array getter and setter - | << | >> # append or shift left, shift right - | <=?>? | >=? # comparison, rocket operator - | ===? | =~ # simple equality, case equality, match - | ![~=@]? # negation with and without at sign, not-equal and not-match - /ox - METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox - INSTANCE_VARIABLE = / @ #{IDENT} /ox - CLASS_VARIABLE = / @@ #{IDENT} /ox - OBJECT_VARIABLE = / @@? #{IDENT} /ox - GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox - PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox - VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox - - QUOTE_TO_TYPE = { - '`' => :shell, - '/'=> :regexp, - } - QUOTE_TO_TYPE.default = :string - - REGEXP_MODIFIERS = /[mixounse]*/ - REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ - - DECIMAL = /\d+(?:_\d+)*/ - OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ - HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ - BINARY = /0b[01]+(?:_[01]+)*/ - - EXPONENT = / [eE] [+-]? #{DECIMAL} /ox - FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox - FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox - NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox - - SYMBOL = / - : - (?: - #{METHOD_NAME_EX} - | #{PREFIX_VARIABLE} - | ['"] - ) - /ox - METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox - - SIMPLE_ESCAPE = / - [abefnrstv] - | [0-7]{1,3} - | x[0-9A-Fa-f]{1,2} - | .? - /mx - - CONTROL_META_ESCAPE = / - (?: M-|C-|c ) - (?: \\ (?: M-|C-|c ) )* - (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? - /mox - - ESCAPE = / - #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} - /mox - - CHARACTER = / - \? - (?: - [^\s\\] - | \\ #{ESCAPE} - ) - /mox - - # NOTE: This is not completely correct, but - # nobody needs heredoc delimiters ending with \n. - HEREDOC_OPEN = / - << (-)? # $1 = float - (?: - ( [A-Za-z_0-9]+ ) # $2 = delim - | - ( ["'`\/] ) # $3 = quote, type - ( [^\n]*? ) \3 # $4 = delim - ) - /mx - - RUBYDOC = / - =begin (?!\S) - .*? - (?: \Z | ^=end (?!\S) [^\n]* ) - /mx - - DATA = / - __END__$ - .*? - (?: \Z | (?=^\#CODE) ) - /mx - - # Checks for a valid value to follow. This enables - # value_expected in method calls without parentheses. - VALUE_FOLLOWS = / - (?>[ \t\f\v]+) - (?: - [%\/][^\s=] - | <<-?\S - | [-+] \d - | #{CHARACTER} - ) - /x - KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ - and end in or unless begin - defined? ensure redo super until - break do next rescue then - when case else for retry - while elsif if not return - yield - ]) - - RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo - - RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x - - FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx - - FancyStringType = { - 'q' => [:string, false], - 'Q' => [:string, true], - 'r' => [:regexp, true], - 's' => [:symbol, false], - 'x' => [:shell, true] - } - FancyStringType['w'] = FancyStringType['q'] - FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] - - class StringState < Struct.new :type, :interpreted, :delim, :heredoc, - :paren, :paren_depth, :pattern, :next_state - - CLOSING_PAREN = Hash[ *%w[ - ( ) - [ ] - < > - { } - ] ] - - CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << - OPENING_PAREN = CLOSING_PAREN.invert - - STRING_PATTERN = Hash.new do |h, k| - delim, interpreted = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - if closing_paren = CLOSING_PAREN[delim] - delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix - delim_pattern << Regexp.escape(closing_paren) - end - delim_pattern << '\\\\' unless delim == '\\' - - special_escapes = - case interpreted - when :regexp_symbols - '| ' + REGEXP_SYMBOLS.source - when :words - '| \s' - end - - h[k] = - if interpreted and not delim == '#' - / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx - else - / (?= [#{delim_pattern}] #{special_escapes} ) /mx - end - end - - HEREDOC_PATTERN = Hash.new do |h, k| - delim, interpreted, indented = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x - h[k] = - if interpreted - / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc - else - / (?= #{delim_pattern}() | \\ ) /mx - end - end - - def initialize kind, interpreted, delim, heredoc = false - if heredoc - pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] - delim = nil - else - pattern = STRING_PATTERN[ [delim, interpreted] ] - if paren = CLOSING_PAREN[delim] - delim, paren = paren, delim - paren_depth = 1 - end - end - super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial - end - end unless defined? StringState - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/patterns.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/patterns.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,238 +0,0 @@ -# encoding: utf-8 -module CodeRay -module Scanners - - module Ruby::Patterns # :nodoc: - - RESERVED_WORDS = %w[ - and def end in or unless begin - defined? ensure module redo super until - BEGIN break do next rescue then - when END case else for retry - while alias class elsif if not return - undef yield - ] - - DEF_KEYWORDS = %w[ def ] - UNDEF_KEYWORDS = %w[ undef ] - ALIAS_KEYWORDS = %w[ alias ] - MODULE_KEYWORDS = %w[class module] - DEF_NEW_STATE = WordList.new(:initial). - add(DEF_KEYWORDS, :def_expected). - add(UNDEF_KEYWORDS, :undef_expected). - add(ALIAS_KEYWORDS, :alias_expected). - add(MODULE_KEYWORDS, :module_expected) - - PREDEFINED_CONSTANTS = %w[ - nil true false self - DATA ARGV ARGF __FILE__ __LINE__ - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant) - - IDENT = 'ä'[/[[:alpha:]]/] == 'ä' ? /[[:alpha:]_][[:alnum:]_]*/ : /[^\W\d]\w*/ - - METHOD_NAME = / #{IDENT} [?!]? /ox - METHOD_NAME_OPERATOR = / - \*\*? # multiplication and power - | [-+~]@? # plus, minus, tilde with and without at sign - | [\/%&|^`] # division, modulo or format strings, and, or, xor, system - | \[\]=? # array getter and setter - | << | >> # append or shift left, shift right - | <=?>? | >=? # comparison, rocket operator - | ===? | =~ # simple equality, case equality, match - | ![~=@]? # negation with and without at sign, not-equal and not-match - /ox - METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox - INSTANCE_VARIABLE = / @ #{IDENT} /ox - CLASS_VARIABLE = / @@ #{IDENT} /ox - OBJECT_VARIABLE = / @@? #{IDENT} /ox - GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox - PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox - VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox - - QUOTE_TO_TYPE = { - '`' => :shell, - '/'=> :regexp, - } - QUOTE_TO_TYPE.default = :string - - REGEXP_MODIFIERS = /[mixounse]*/ - REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ - - DECIMAL = /\d+(?:_\d+)*/ - OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ - HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ - BINARY = /0b[01]+(?:_[01]+)*/ - - EXPONENT = / [eE] [+-]? #{DECIMAL} /ox - FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox - FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox - NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox - - SYMBOL = / - : - (?: - #{METHOD_NAME_EX} - | #{PREFIX_VARIABLE} - | ['"] - ) - /ox - METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox - - SIMPLE_ESCAPE = / - [abefnrstv] - | [0-7]{1,3} - | x[0-9A-Fa-f]{1,2} - | .? - /mx - - CONTROL_META_ESCAPE = / - (?: M-|C-|c ) - (?: \\ (?: M-|C-|c ) )* - (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? - /mox - - ESCAPE = / - #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} - /mox - - CHARACTER = / - \? - (?: - [^\s\\] - | \\ #{ESCAPE} - ) - /mox - - # NOTE: This is not completely correct, but - # nobody needs heredoc delimiters ending with \n. - HEREDOC_OPEN = / - << (-)? # $1 = float - (?: - ( [A-Za-z_0-9]+ ) # $2 = delim - | - ( ["'`\/] ) # $3 = quote, type - ( [^\n]*? ) \3 # $4 = delim - ) - /mx - - RUBYDOC = / - =begin (?!\S) - .*? - (?: \Z | ^=end (?!\S) [^\n]* ) - /mx - - DATA = / - __END__$ - .*? - (?: \Z | (?=^\#CODE) ) - /mx - - # Checks for a valid value to follow. This enables - # value_expected in method calls without parentheses. - VALUE_FOLLOWS = / - (?>[ \t\f\v]+) - (?: - [%\/][^\s=] - | <<-?\S - | [-+] \d - | #{CHARACTER} - ) - /x - KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ - and end in or unless begin - defined? ensure redo super until - break do next rescue then - when case else for retry - while elsif if not return - yield - ]) - - RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo - - RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x - - FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx - - FancyStringType = { - 'q' => [:string, false], - 'Q' => [:string, true], - 'r' => [:regexp, true], - 's' => [:symbol, false], - 'x' => [:shell, true] - } - FancyStringType['w'] = FancyStringType['q'] - FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] - - class StringState < Struct.new :type, :interpreted, :delim, :heredoc, - :paren, :paren_depth, :pattern, :next_state - - CLOSING_PAREN = Hash[ *%w[ - ( ) - [ ] - < > - { } - ] ] - - CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << - OPENING_PAREN = CLOSING_PAREN.invert - - STRING_PATTERN = Hash.new do |h, k| - delim, interpreted = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - if closing_paren = CLOSING_PAREN[delim] - delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix - delim_pattern << Regexp.escape(closing_paren) - end - delim_pattern << '\\\\' unless delim == '\\' - - special_escapes = - case interpreted - when :regexp_symbols - '| ' + REGEXP_SYMBOLS.source - when :words - '| \s' - end - - h[k] = - if interpreted and not delim == '#' - / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx - else - / (?= [#{delim_pattern}] #{special_escapes} ) /mx - end - end - - HEREDOC_PATTERN = Hash.new do |h, k| - delim, interpreted, indented = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x - h[k] = - if interpreted - / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc - else - / (?= #{delim_pattern}() | \\ ) /mx - end - end - - def initialize kind, interpreted, delim, heredoc = false - if heredoc - pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] - delim = nil - else - pattern = STRING_PATTERN[ [delim, interpreted] ] - if paren = CLOSING_PAREN[delim] - delim, paren = paren, delim - paren_depth = 1 - end - end - super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial - end - end unless defined? StringState - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/scheme.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/scheme.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -module CodeRay - module Scanners - - # Scheme scanner for CodeRay (by closure). - # Thanks to murphy for putting CodeRay into public. - class Scheme < Scanner - - # TODO: function defs - # TODO: built-in functions - - register_for :scheme - file_extension 'scm' - - CORE_FORMS = %w[ - lambda let let* letrec syntax-case define-syntax let-syntax - letrec-syntax begin define quote if or and cond case do delay - quasiquote set! cons force call-with-current-continuation call/cc - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(CORE_FORMS, :reserved) - - #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i - #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ - #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ - IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ - DIGIT = /\d/ - DIGIT10 = DIGIT - DIGIT16 = /[0-9a-f]/i - DIGIT8 = /[0-7]/ - DIGIT2 = /[01]/ - RADIX16 = /\#x/i - RADIX8 = /\#o/i - RADIX2 = /\#b/i - RADIX10 = /\#d/i - EXACTNESS = /#i|#e/i - SIGN = /[\+-]?/ - EXP_MARK = /[esfdl]/i - EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ - SUFFIX = /#{EXP}?/ - PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ - PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ - PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ - PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ - UINT10 = /#{DIGIT10}+#*/ - UINT16 = /#{DIGIT16}+#*/ - UINT8 = /#{DIGIT8}+#*/ - UINT2 = /#{DIGIT2}+#*/ - DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ - UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ - UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ - UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ - UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ - REAL10 = /#{SIGN}#{UREAL10}/ - REAL16 = /#{SIGN}#{UREAL16}/ - REAL8 = /#{SIGN}#{UREAL8}/ - REAL2 = /#{SIGN}#{UREAL2}/ - IMAG10 = /i|#{UREAL10}i/ - IMAG16 = /i|#{UREAL16}i/ - IMAG8 = /i|#{UREAL8}i/ - IMAG2 = /i|#{UREAL2}i/ - COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ - COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ - COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ - COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ - NUM10 = /#{PREFIX10}?#{COMPLEX10}/ - NUM16 = /#{PREFIX16}#{COMPLEX16}/ - NUM8 = /#{PREFIX8}#{COMPLEX8}/ - NUM2 = /#{PREFIX2}#{COMPLEX2}/ - NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ - - private - def scan_tokens tokens,options - - state = :initial - ident_kind = IDENT_KIND - - until eos? - kind = match = nil - - case state - when :initial - if scan(/ \s+ | \\\n /x) - kind = :space - elsif scan(/['\(\[\)\]]|#\(/) - kind = :operator_fat - elsif scan(/;.*/) - kind = :comment - elsif scan(/#\\(?:newline|space|.?)/) - kind = :char - elsif scan(/#[ft]/) - kind = :pre_constant - elsif scan(/#{IDENTIFIER}/o) - kind = ident_kind[matched] - elsif scan(/\./) - kind = :operator - elsif scan(/"/) - tokens << [:open, :string] - state = :string - tokens << ['"', :delimiter] - next - elsif scan(/#{NUM}/o) and not matched.empty? - kind = :integer - elsif getch - kind = :error - end - - when :string - if scan(/[^"\\]+/) or scan(/\\.?/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - next - else - raise_inspect "else case \" reached; %p not handled." % peek(1), - tokens, state - end - - else - raise "else case reached" - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens, state unless match - - tokens << [match, kind] - - end # until eos - - if state == :string - tokens << [:close, :string] - end - - tokens - - end #scan_tokens - end #class - end #module scanners -end #module coderay \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/sql.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/sql.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -module CodeRay module Scanners - - # by Josh Goebel - class SQL < Scanner - - register_for :sql - - RESERVED_WORDS = %w( - create database table index trigger drop primary key set select - insert update delete replace into - on from values before and or if exists case when - then else as group order by avg where - join inner outer union engine not - like end using collate show columns begin - ) - - PREDEFINED_TYPES = %w( - char varchar enum binary text tinytext mediumtext - longtext blob tinyblob mediumblob longblob timestamp - date time datetime year double decimal float int - integer tinyint mediumint bigint smallint unsigned bit - bool boolean hex bin oct - ) - - PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) - - DIRECTIVES = %w( auto_increment unique default charset ) - - PREDEFINED_CONSTANTS = %w( null true false ) - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(PREDEFINED_FUNCTIONS, :predefined). - add(DIRECTIVES, :directive) - - ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - STRING_PREFIXES = /[xnb]|_\w+/i - - def scan_tokens tokens, options - - state = :initial - string_type = nil - string_content = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ | \\\n /x) - kind = :space - - elsif scan(/^(?:--\s?|#).*/) - kind = :comment - - elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) - kind = :operator - - elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) - prefix = self[1] - string_type = self[2] - tokens << [:open, :string] - tokens << [prefix, :modifier] if prefix - match = string_type - state = :string - kind = :delimiter - - elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) - kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] - - elsif scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - - elsif scan(/0[0-7]+(?![89.eEfF])/) - kind = :oct - - elsif scan(/(?>\d+)(?![.eEfF])/) - kind = :integer - - elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - - else - getch - kind = :error - - end - - elsif state == :string - if match = scan(/[^\\"'`]+/) - string_content << match - next - elsif match = scan(/["'`]/) - if string_type == match - if peek(1) == string_type # doubling means escape - string_content << string_type << getch - next - end - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - string_type = nil - next - else - string_content << match - end - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :char - elsif match = scan(/ \\ . /mox) - string_content << match - next - elsif scan(/ \\ | $ /x) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :error - state = :initial - else - raise "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - unless kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - tokens - - end - - end - -end end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/xml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/xml.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # XML Scanner - # - # Currently this is the same scanner as Scanners::HTML. - class XML < HTML - - register_for :xml - file_extension 'xml' - - end - -end -end diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/yaml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/yaml.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -module CodeRay -module Scanners - - # YAML Scanner - # - # Based on the YAML scanner from Syntax by Jamis Buck. - class YAML < Scanner - - register_for :yaml - file_extension 'yml' - - KINDS_NOT_LOC = :all - - def scan_tokens tokens, options - - value_expected = nil - state = :initial - key_indent = indent = 0 - - until eos? - - kind = nil - match = nil - key_indent = nil if bol? - - if match = scan(/ +[\t ]*/) - kind = :space - - elsif match = scan(/\n+/) - kind = :space - state = :initial if match.index(?\n) - - elsif match = scan(/#.*/) - kind = :comment - - elsif bol? and case - when match = scan(/---|\.\.\./) - tokens << [:open, :head] - tokens << [match, :head] - tokens << [:close, :head] - next - when match = scan(/%.*/) - tokens << [match, :doctype] - next - end - - elsif state == :value and case - when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) - tokens << [:open, :string] - tokens << [matched, :delimiter] - tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) - tokens << [matched, :delimiter] if scan(/"/) - tokens << [:close, :string] - next - when match = scan(/[|>][-+]?/) - tokens << [:open, :string] - tokens << [match, :delimiter] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - tokens << [:close, :string] - next - when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) - tokens << [match, :string] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - next - end - - elsif case - when match = scan(/[-:](?= |$)/) - state = :value if state == :colon && (match == ':' || match == '-') - state = :value if state == :initial && match == '-' - kind = :operator - when match = scan(/[,{}\[\]]/) - kind = :operator - when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) - kind = :key - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) - tokens << [:open, :key] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] - tokens << [match[-1,1], :delimiter] - tokens << [:close, :key] - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - next - when scan(/(![\w\/]+)(:([\w:]+))?/) - tokens << [self[1], :type] - if self[2] - tokens << [':', :operator] - tokens << [self[3], :class] - end - next - when scan(/&\S+/) - kind = :variable - when scan(/\*\w+/) - kind = :global_variable - when scan(/< 'at', - :attribute_name => 'an', - :attribute_name_fat => 'af', - :attribute_value => 'av', - :attribute_value_fat => 'aw', - :bin => 'bi', - :char => 'ch', - :class => 'cl', - :class_variable => 'cv', - :color => 'cr', - :comment => 'c', - :complex => 'cm', - :constant => 'co', - :content => 'k', - :decorator => 'de', - :definition => 'df', - :delimiter => 'dl', - :directive => 'di', - :doc => 'do', - :doctype => 'dt', - :doc_string => 'ds', - :entity => 'en', - :error => 'er', - :escape => 'e', - :exception => 'ex', - :float => 'fl', - :function => 'fu', - :global_variable => 'gv', - :hex => 'hx', - :imaginary => 'cm', - :important => 'im', - :include => 'ic', - :inline => 'il', - :inline_delimiter => 'idl', - :instance_variable => 'iv', - :integer => 'i', - :interpreted => 'in', - :keyword => 'kw', - :key => 'ke', - :label => 'la', - :local_variable => 'lv', - :modifier => 'mod', - :oct => 'oc', - :operator_fat => 'of', - :pre_constant => 'pc', - :pre_type => 'pt', - :predefined => 'pd', - :preprocessor => 'pp', - :pseudo_class => 'ps', - :regexp => 'rx', - :reserved => 'r', - :shell => 'sh', - :string => 's', - :symbol => 'sy', - :tag => 'ta', - :tag_fat => 'tf', - :tag_special => 'ts', - :type => 'ty', - :variable => 'v', - :value => 'vl', - :xml_text => 'xt', - - :insert => 'ins', - :delete => 'del', - :change => 'chg', - :head => 'head', - - :ident => :NO_HIGHLIGHT, # 'id' - #:operator => 'op', - :operator => :NO_HIGHLIGHT, # 'op' - :space => :NO_HIGHLIGHT, # 'sp' - :plain => :NO_HIGHLIGHT, - } - ClassOfKind[:method] = ClassOfKind[:function] - ClassOfKind[:open] = ClassOfKind[:close] = ClassOfKind[:delimiter] - ClassOfKind[:nesting_delimiter] = ClassOfKind[:delimiter] - ClassOfKind[:escape] = ClassOfKind[:delimiter] - #ClassOfKind.default = ClassOfKind[:error] or raise 'no class found for :error!' - end -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/coderay-0.9.2/lib/coderay/tokens.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/tokens.rb Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -module CodeRay - - # = Tokens - # - # The Tokens class represents a list of tokens returnd from - # a Scanner. - # - # A token is not a special object, just a two-element Array - # consisting of - # * the _token_ _kind_ (a Symbol representing the type of the token) - # * the _token_ _text_ (the original source of the token in a String) - # - # A token looks like this: - # - # [:comment, '# It looks like this'] - # [:float, '3.1415926'] - # [:error, '$^'] - # - # Some scanners also yield some kind of sub-tokens, represented by special - # token texts, namely :open and :close . - # - # The Ruby scanner, for example, splits "a string" into: - # - # [ - # [:open, :string], - # [:delimiter, '"'], - # [:content, 'a string'], - # [:delimiter, '"'], - # [:close, :string] - # ] - # - # Tokens is also the interface between Scanners and Encoders: - # The input is split and saved into a Tokens object. The Encoder - # then builds the output from this object. - # - # Thus, the syntax below becomes clear: - # - # CodeRay.scan('price = 2.59', :ruby).html - # # the Tokens object is here -------^ - # - # See how small it is? ;) - # - # Tokens gives you the power to handle pre-scanned code very easily: - # You can convert it to a webpage, a YAML file, or dump it into a gzip'ed string - # that you put in your DB. - # - # Tokens' subclass TokenStream allows streaming to save memory. - class Tokens < Array - - # The Scanner instance that created the tokens. - attr_accessor :scanner - - # Whether the object is a TokenStream. - # - # Returns false. - def stream? - false - end - - # Iterates over all tokens. - # - # If a filter is given, only tokens of that kind are yielded. - def each kind_filter = nil, &block - unless kind_filter - super(&block) - else - super() do |text, kind| - next unless kind == kind_filter - yield text, kind - end - end - end - - # Iterates over all text tokens. - # Range tokens like [:open, :string] are left out. - # - # Example: - # tokens.each_text_token { |text, kind| text.replace html_escape(text) } - def each_text_token - each do |text, kind| - next unless text.is_a? ::String - yield text, kind - end - end - - # Encode the tokens using encoder. - # - # encoder can be - # * a symbol like :html oder :statistic - # * an Encoder class - # * an Encoder object - # - # options are passed to the encoder. - def encode encoder, options = {} - unless encoder.is_a? Encoders::Encoder - unless encoder.is_a? Class - encoder_class = Encoders[encoder] - end - encoder = encoder_class.new options - end - encoder.encode_tokens self, options - end - - - # Turn into a string using Encoders::Text. - # - # +options+ are passed to the encoder if given. - def to_s options = {} - encode :text, options - end - - # Redirects unknown methods to encoder calls. - # - # For example, if you call +tokens.html+, the HTML encoder - # is used to highlight the tokens. - def method_missing meth, options = {} - Encoders[meth].new(options).encode_tokens self - end - - # Returns the tokens compressed by joining consecutive - # tokens of the same kind. - # - # This can not be undone, but should yield the same output - # in most Encoders. It basically makes the output smaller. - # - # Combined with dump, it saves space for the cost of time. - # - # If the scanner is written carefully, this is not required - - # for example, consecutive //-comment lines could already be - # joined in one comment token by the Scanner. - def optimize - last_kind = last_text = nil - new = self.class.new - for text, kind in self - if text.is_a? String - if kind == last_kind - last_text << text - else - new << [last_text, last_kind] if last_kind - last_text = text - last_kind = kind - end - else - new << [last_text, last_kind] if last_kind - last_kind = last_text = nil - new << [text, kind] - end - end - new << [last_text, last_kind] if last_kind - new - end - - # Compact the object itself; see optimize. - def optimize! - replace optimize - end - - # Ensure that all :open tokens have a correspondent :close one. - # - # TODO: Test this! - def fix - tokens = self.class.new - # Check token nesting using a stack of kinds. - opened = [] - for type, kind in self - case type - when :open - opened.push [:close, kind] - when :begin_line - opened.push [:end_line, kind] - when :close, :end_line - expected = opened.pop - if [type, kind] != expected - # Unexpected :close; decide what to do based on the kind: - # - token was never opened: delete the :close (just skip it) - next unless opened.rindex expected - # - token was opened earlier: also close tokens in between - tokens << token until (token = opened.pop) == expected - end - end - tokens << [type, kind] - end - # Close remaining opened tokens - tokens << token while token = opened.pop - tokens - end - - def fix! - replace fix - end - - # TODO: Scanner#split_into_lines - # - # Makes sure that: - # - newlines are single tokens - # (which means all other token are single-line) - # - there are no open tokens at the end the line - # - # This makes it simple for encoders that work line-oriented, - # like HTML with list-style numeration. - def split_into_lines - raise NotImplementedError - end - - def split_into_lines! - replace split_into_lines - end - - # Dumps the object into a String that can be saved - # in files or databases. - # - # The dump is created with Marshal.dump; - # In addition, it is gzipped using GZip.gzip. - # - # The returned String object includes Undumping - # so it has an #undump method. See Tokens.load. - # - # You can configure the level of compression, - # but the default value 7 should be what you want - # in most cases as it is a good compromise between - # speed and compression rate. - # - # See GZip module. - def dump gzip_level = 7 - require 'coderay/helpers/gzip_simple' - dump = Marshal.dump self - dump = dump.gzip gzip_level - dump.extend Undumping - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text_size - size = 0 - each_text_token do |t, k| - size + t.size - end - size - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text - map { |t, k| t if t.is_a? ::String }.join - end - - # Include this module to give an object an #undump - # method. - # - # The string returned by Tokens.dump includes Undumping. - module Undumping - # Calls Tokens.load with itself. - def undump - Tokens.load self - end - end - - # Undump the object using Marshal.load, then - # unzip it using GZip.gunzip. - # - # The result is commonly a Tokens object, but - # this is not guaranteed. - def Tokens.load dump - require 'coderay/helpers/gzip_simple' - dump = dump.gunzip - @dump = Marshal.load dump - end - - end - - - # = TokenStream - # - # The TokenStream class is a fake Array without elements. - # - # It redirects the method << to a block given at creation. - # - # This allows scanners and Encoders to use streaming (no - # tokens are saved, the input is highlighted the same time it - # is scanned) with the same code. - # - # See CodeRay.encode_stream and CodeRay.scan_stream - class TokenStream < Tokens - - # Whether the object is a TokenStream. - # - # Returns true. - def stream? - true - end - - # The Array is empty, but size counts the tokens given by <<. - attr_reader :size - - # Creates a new TokenStream that calls +block+ whenever - # its << method is called. - # - # Example: - # - # require 'coderay' - # - # token_stream = CodeRay::TokenStream.new do |kind, text| - # puts 'kind: %s, text size: %d.' % [kind, text.size] - # end - # - # token_stream << [:regexp, '/\d+/'] - # #-> kind: rexpexp, text size: 5. - # - def initialize &block - raise ArgumentError, 'Block expected for streaming.' unless block - @callback = block - @size = 0 - end - - # Calls +block+ with +token+ and increments size. - # - # Returns self. - def << token - @callback.call(*token) - @size += 1 - self - end - - # This method is not implemented due to speed reasons. Use Tokens. - def text_size - raise NotImplementedError, - 'This method is not implemented due to speed reasons.' - end - - # A TokenStream cannot be dumped. Use Tokens. - def dump - raise NotImplementedError, 'A TokenStream cannot be dumped.' - end - - # A TokenStream cannot be optimized. Use Tokens. - def optimize - raise NotImplementedError, 'A TokenStream cannot be optimized.' - end - - end - -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokensTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Tokens < Array - tokens = nil - assert_nothing_raised do - tokens = CodeRay::Tokens.new - end - assert_kind_of Array, tokens - end - - def test_adding_tokens - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - assert_equal tokens.size, 2 - end - - def test_dump_undump - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - tokens2 = nil - assert_nothing_raised do - tokens2 = tokens.dump.undump - end - assert_equal tokens, tokens2 - end - -end \ No newline at end of file diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/.svn/all-wcprops --- a/vendor/plugins/engines/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 47 -/svn/!svn/ver/4406/trunk/vendor/plugins/engines -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/Rakefile -END -.gitignore -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/.gitignore -END -boot.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/2904/trunk/vendor/plugins/engines/boot.rb -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/init.rb -END -CHANGELOG -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2493/trunk/vendor/plugins/engines/CHANGELOG -END -MIT-LICENSE -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/MIT-LICENSE -END -about.yml -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/about.yml -END -README -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/.svn/entries --- a/vendor/plugins/engines/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.687760Z +2011-03-03T11:05:12.000000Z b8328004b1bb94c84d90c0839cd7d41d 2009-09-13T17:14:35.707881Z 2887 @@ -72,7 +72,7 @@ -2010-09-23T14:37:45.683786Z +2011-03-03T11:05:12.000000Z a523ea1465a566ae38fba96a99506ff3 2008-07-12T10:17:14.809831Z 1654 @@ -106,7 +106,7 @@ -2010-09-23T14:37:45.691758Z +2011-03-03T11:05:12.000000Z f653a768811758cee11e21d4de00b381 2009-10-07T16:43:50.656336Z 2904 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.695759Z +2011-03-03T11:05:12.000000Z e4f81ba26f0b10a838b3336ba263aaa5 2009-09-13T17:14:35.707881Z 2887 @@ -177,7 +177,7 @@ -2010-09-23T14:37:45.687760Z +2011-03-03T11:05:12.000000Z 41bb5eeb2864cd46438eefb1cb048c4d 2009-02-21T11:04:50.579477Z 2493 @@ -214,7 +214,7 @@ -2010-09-23T14:37:45.687760Z +2011-03-03T11:05:12.000000Z 6e112fd6d07885bef3fd5bd537fc1409 2008-07-12T10:17:14.809831Z 1654 @@ -248,7 +248,7 @@ -2010-09-23T14:37:45.691758Z +2011-03-03T11:05:12.000000Z 18cc761cb69b7735ecf0cdb0d9b6d640 2009-09-13T17:14:35.707881Z 2887 @@ -282,7 +282,7 @@ -2010-09-23T14:37:45.687760Z +2011-03-03T11:05:12.000000Z 7e25f2cbded59c24735a20510040bb74 2008-07-12T10:17:14.809831Z 1654 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/generators/.svn/all-wcprops --- a/vendor/plugins/engines/generators/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/4406/trunk/vendor/plugins/engines/generators -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/generators/.svn/entries --- a/vendor/plugins/engines/generators/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/generators/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/generators/plugin_migration/.svn/all-wcprops --- a/vendor/plugins/engines/generators/plugin_migration/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/4406/trunk/vendor/plugins/engines/generators/plugin_migration -END -plugin_migration_generator.rb -K 25 -svn:wc:ra_dav:version-url -V 105 -/svn/!svn/ver/4406/trunk/vendor/plugins/engines/generators/plugin_migration/plugin_migration_generator.rb -END -USAGE -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/generators/plugin_migration/USAGE -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/generators/plugin_migration/.svn/entries --- a/vendor/plugins/engines/generators/plugin_migration/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/generators/plugin_migration/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:50.916901Z +2011-03-03T11:05:12.000000Z 3f4805cb1e4a8b8a3ed180f22d81c285 2010-11-14T16:24:21.989522Z 4406 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.691758Z +2011-03-03T11:05:12.000000Z d796f61555b36ef9941ea049c94df06b 2008-07-12T10:17:14.809831Z 1654 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/generators/plugin_migration/templates/.svn/all-wcprops --- a/vendor/plugins/engines/generators/plugin_migration/templates/.svn/all-wcprops Tue Feb 22 16:48:15 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 85 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/generators/plugin_migration/templates -END -plugin_migration.erb -K 25 -svn:wc:ra_dav:version-url -V 106 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/generators/plugin_migration/templates/plugin_migration.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries --- a/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.695759Z +2011-03-03T11:05:12.000000Z 0b30f95c4244242093ded274caf9e4a8 2008-07-12T10:17:14.809831Z 1654 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/.svn/all-wcprops --- a/vendor/plugins/engines/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 51 -/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib -END -engines.rb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib/engines.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/.svn/entries --- a/vendor/plugins/engines/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.695759Z +2011-03-03T11:05:12.000000Z b9128ad79c06e8c2eb2474a7f9edf60d 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/engines/.svn/all-wcprops --- a/vendor/plugins/engines/lib/engines/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib/engines -END -testing.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib/engines/testing.rb -END -plugin.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib/engines/plugin.rb -END -assets.rb -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/2493/trunk/vendor/plugins/engines/lib/engines/assets.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/engines/.svn/entries --- a/vendor/plugins/engines/lib/engines/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/lib/engines/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.707755Z +2011-03-03T11:05:12.000000Z f5e61f1312a19bdac20f06b7529eaa98 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.699755Z +2011-03-03T11:05:12.000000Z d084e8ccb3edfb9f481f2626ee9e57e1 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.699755Z +2011-03-03T11:05:12.000000Z a2cb2f3c517fbe62ab1277e44b0a05ed 2009-02-21T11:04:50.579477Z 2493 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/engines/plugin/.svn/all-wcprops --- a/vendor/plugins/engines/lib/engines/plugin/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib/engines/plugin -END -locator.rb -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/lib/engines/plugin/locator.rb -END -migrator.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2493/trunk/vendor/plugins/engines/lib/engines/plugin/migrator.rb -END -loader.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/lib/engines/plugin/loader.rb -END -list.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/lib/engines/plugin/list.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/engines/plugin/.svn/entries --- a/vendor/plugins/engines/lib/engines/plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/lib/engines/plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.703755Z +2011-03-03T11:05:12.000000Z 2adca63e7c7d7c38a91953458e893bb2 2008-07-12T10:17:14.809831Z 1654 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.703755Z +2011-03-03T11:05:12.000000Z 21ac938bcf4f86e62ec21e9803cfd76e 2009-02-21T11:04:50.579477Z 2493 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.703755Z +2011-03-03T11:05:12.000000Z 38eaf6e3b113f74daa0669c67261cc72 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.703755Z +2011-03-03T11:05:12.000000Z d68941171066743dd63a174b5f270f66 2008-07-12T10:17:14.809831Z 1654 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/engines/rails_extensions/.svn/all-wcprops --- a/vendor/plugins/engines/lib/engines/rails_extensions/.svn/all-wcprops Tue Feb 22 16:48:15 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 76 -/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib/engines/rails_extensions -END -form_tag_helpers.rb -K 25 -svn:wc:ra_dav:version-url -V 96 -/svn/!svn/ver/2493/trunk/vendor/plugins/engines/lib/engines/rails_extensions/form_tag_helpers.rb -END -asset_helpers.rb -K 25 -svn:wc:ra_dav:version-url -V 93 -/svn/!svn/ver/4094/trunk/vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb -END -dependencies.rb -K 25 -svn:wc:ra_dav:version-url -V 92 -/svn/!svn/ver/2493/trunk/vendor/plugins/engines/lib/engines/rails_extensions/dependencies.rb -END -rails.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/1654/trunk/vendor/plugins/engines/lib/engines/rails_extensions/rails.rb -END -migrations.rb -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2493/trunk/vendor/plugins/engines/lib/engines/rails_extensions/migrations.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries --- a/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/rails_extensions http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.707755Z +2011-03-03T11:05:12.000000Z 3e26c9fe2cd009cb5e81f6ccea3f012c 2009-02-21T11:04:50.579477Z 2493 @@ -66,7 +66,7 @@ -2010-09-24T12:48:29.635919Z +2011-03-03T11:05:12.000000Z c5a5e8b469c1e3fefcc5bedca9f4ac82 2010-09-17T04:06:40.671348Z 4094 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.707755Z +2011-03-03T11:05:12.000000Z 6e29697f02c187c9033624422365044a 2009-02-21T11:04:50.579477Z 2493 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.707755Z +2011-03-03T11:05:12.000000Z f26da6a18ffcc7b846838f038a0abea4 2008-07-12T10:17:14.809831Z 1654 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.707755Z +2011-03-03T11:05:12.000000Z 8f8e408b9f1a72af1cc5232ddb888266 2009-02-21T11:04:50.579477Z 2493 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/tasks/.svn/all-wcprops --- a/vendor/plugins/engines/tasks/.svn/all-wcprops Tue Feb 22 16:48:15 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 53 -/svn/!svn/ver/3186/trunk/vendor/plugins/engines/tasks -END -engines.rake -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/3186/trunk/vendor/plugins/engines/tasks/engines.rake -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/tasks/.svn/entries --- a/vendor/plugins/engines/tasks/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/tasks/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/tasks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.707755Z +2011-03-03T11:05:12.000000Z 10b9e5aacd9d0673e694f6ababd6ee3b 2009-12-18T14:41:37.649419Z 3186 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/.svn/all-wcprops --- a/vendor/plugins/engines/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/.svn/entries --- a/vendor/plugins/engines/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/.svn/entries --- a/vendor/plugins/engines/test/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/controllers/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/controllers/.svn/all-wcprops Tue Feb 22 16:48:15 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 68 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/controllers -END -app_and_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 97 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/controllers/app_and_plugin_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/app/controllers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/controllers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.711814Z +2011-03-03T11:05:12.000000Z 8e2adc646126f3962ca1eaf16d663fa7 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/controllers/namespace/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/controllers/namespace/.svn/all-wcprops Tue Feb 22 16:48:15 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 78 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/controllers/namespace -END -app_and_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 107 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/controllers/namespace/app_and_plugin_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.711814Z +2011-03-03T11:05:12.000000Z ed9f029690f9d77b31e0d68cff2f8ff3 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/helpers/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/helpers/.svn/all-wcprops Tue Feb 22 16:48:15 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 64 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/helpers -END -mail_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/helpers/mail_helper.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/helpers/.svn/entries --- a/vendor/plugins/engines/test/app/helpers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/helpers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/helpers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.715757Z +2011-03-03T11:05:12.000000Z b3286b0384ccf10d15423a78b8a70c3a 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/models/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/models/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/models -END -app_and_plugin_model.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/models/app_and_plugin_model.rb -END -notify_mail.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/models/notify_mail.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/models/.svn/entries --- a/vendor/plugins/engines/test/app/models/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/models/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.715757Z +2011-03-03T11:05:12.000000Z 53fd050b6dc2f5da77439ffab6e1dd6e 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.715757Z +2011-03-03T11:05:12.000000Z ffba288117364d8379bd2b6788e2fd2f 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/things/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/things/.svn/all-wcprops Tue Feb 22 16:48:15 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 63 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/things -END -thing.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/things/thing.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/things/.svn/entries --- a/vendor/plugins/engines/test/app/things/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/things/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/things http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.715757Z +2011-03-03T11:05:12.000000Z aaa0b6b1363b304ca66c8def3c543b13 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/views/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/.svn/entries --- a/vendor/plugins/engines/test/app/views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/app_and_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 77 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/app_and_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 93 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/app_and_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.719755Z +2011-03-03T11:05:12.000000Z e6dca36d9e91414f1a520ffddb5202d7 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/namespace/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/views/namespace/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/namespace -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/namespace/.svn/entries --- a/vendor/plugins/engines/test/app/views/namespace/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/namespace/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 87 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/namespace/app_and_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 103 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.719755Z +2011-03-03T11:05:12.000000Z e6dca36d9e91414f1a520ffddb5202d7 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/notify_mail/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/views/notify_mail/.svn/all-wcprops Tue Feb 22 16:48:15 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 74 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/notify_mail -END -multipart_html.html.erb -K 25 -svn:wc:ra_dav:version-url -V 98 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/notify_mail/multipart_html.html.erb -END -signup.text.plain.erb -K 25 -svn:wc:ra_dav:version-url -V 96 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/notify_mail/signup.text.plain.erb -END -implicit_multipart.text.plain.erb -K 25 -svn:wc:ra_dav:version-url -V 108 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.plain.erb -END -implicit_multipart.text.html.erb -K 25 -svn:wc:ra_dav:version-url -V 107 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.html.erb -END -multipart_plain.html.erb -K 25 -svn:wc:ra_dav:version-url -V 99 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/notify_mail/multipart_plain.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/notify_mail/.svn/entries --- a/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/notify_mail http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.723813Z +2011-03-03T11:05:12.000000Z 8e367f8a525da2fddf6b32d5f874c6ba 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.723813Z +2011-03-03T11:05:12.000000Z 50ed7a6afc64b4a326aa8b681a31b9a3 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.723813Z +2011-03-03T11:05:12.000000Z cb0d28ce47ca265d02f252970ac69194 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.723813Z +2011-03-03T11:05:12.000000Z 5a4f738dec733e5f4ad703495c5eb54a 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.723813Z +2011-03-03T11:05:12.000000Z 3b779e7b00bfe0f9b876bfebd7905a4e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/plugin_mail/.svn/all-wcprops --- a/vendor/plugins/engines/test/app/views/plugin_mail/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/plugin_mail -END -mail_from_plugin_with_application_template.text.plain.erb -K 25 -svn:wc:ra_dav:version-url -V 132 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/plugin_mail/mail_from_plugin_with_application_template.text.plain.erb -END -multipart_from_plugin_with_application_template_plain.html.erb -K 25 -svn:wc:ra_dav:version-url -V 137 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries --- a/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/plugin_mail http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.727757Z +2011-03-03T11:05:12.000000Z d0e724c594c43b6db39389834f3c26e2 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.727757Z +2011-03-03T11:05:12.000000Z 317dc13d851c827568f61def9b031803 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/functional/.svn/all-wcprops --- a/vendor/plugins/engines/test/functional/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/functional -END -controller_loading_test.rb -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/functional/controller_loading_test.rb -END -routes_test.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/functional/routes_test.rb -END -view_loading_test.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/functional/view_loading_test.rb -END -locale_loading_test.rb -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/functional/locale_loading_test.rb -END -view_helpers_test.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/functional/view_helpers_test.rb -END -exception_notification_compatibility_test.rb -K 25 -svn:wc:ra_dav:version-url -V 108 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/functional/exception_notification_compatibility_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/functional/.svn/entries --- a/vendor/plugins/engines/test/functional/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/functional/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/functional http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.727757Z +2011-03-03T11:05:12.000000Z 53bf916868db17fcb64853aab45ce80b 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.727757Z +2011-03-03T11:05:12.000000Z 03f318c931cb7d40733445e72a504c95 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.731757Z +2011-03-03T11:05:12.000000Z 43b6ff22af92cc8988a51d1b50c4c587 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.727757Z +2011-03-03T11:05:12.000000Z 0ca8b6e7e4b7655c3633b11d4ff61cc6 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.731757Z +2011-03-03T11:05:12.000000Z afcc79d3fa1c4f1615b271f65d982d8b 2009-09-13T17:14:35.707881Z 2887 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.727757Z +2011-03-03T11:05:12.000000Z 6bd25b9259dbf37b6d31e69f83a32fe0 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/lib/.svn/all-wcprops --- a/vendor/plugins/engines/test/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/lib -END -render_information.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/lib/render_information.rb -END -app_and_plugin_lib_model.rb -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/lib/app_and_plugin_lib_model.rb -END -engines_test_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/lib/engines_test_helper.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/lib/.svn/entries --- a/vendor/plugins/engines/test/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.731757Z +2011-03-03T11:05:12.000000Z 1fde453d5263852d1ba9fc3dd90254fc 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.731757Z +2011-03-03T11:05:12.000000Z b00ea9b677cec76cd2fc19b1f66db3e2 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.731757Z +2011-03-03T11:05:12.000000Z 52fd5b17adc2fec1950be496b5ff3a3d 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/.svn/entries --- a/vendor/plugins/engines/test/plugins/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers -END -app_and_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 118 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/app_and_plugin_controller.rb -END -alpha_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 116 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/alpha_plugin_controller.rb -END -shared_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 117 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/shared_plugin_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.735800Z +2011-03-03T11:05:12.000000Z b70de56fa165815bbab14f584b6fbdb4 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.735800Z +2011-03-03T11:05:12.000000Z 9e56eb4864bc1877cc8a6e69ca873157 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.739799Z +2011-03-03T11:05:12.000000Z f9f42ac7db3bb715ff4f055162013aba 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 99 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace -END -app_and_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 128 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/app_and_plugin_controller.rb -END -alpha_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 126 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/alpha_plugin_controller.rb -END -shared_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 127 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/shared_plugin_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.739799Z +2011-03-03T11:05:12.000000Z a24a7b9dd5706d2daef2456b1b1cac4c 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.739799Z +2011-03-03T11:05:12.000000Z b1c4a105ad8bfa7add28c583dbd9ef8a 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.739799Z +2011-03-03T11:05:12.000000Z 43152818b40142db88dffe0192e66582 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models -END -app_and_plugin_model.rb -K 25 -svn:wc:ra_dav:version-url -V 108 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/app_and_plugin_model.rb -END -alpha_plugin_model.rb -K 25 -svn:wc:ra_dav:version-url -V 106 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/alpha_plugin_model.rb -END -shared_plugin_model.rb -K 25 -svn:wc:ra_dav:version-url -V 107 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/shared_plugin_model.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.739799Z +2011-03-03T11:05:12.000000Z a661e69f87fead66873ac8cc162da128 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.739799Z +2011-03-03T11:05:12.000000Z 01ab2dea5fd3e341bd082f2fc507f760 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.739799Z +2011-03-03T11:05:12.000000Z ae48cf4ce7068428c1525dba877a880c 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 96 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 112 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.743801Z +2011-03-03T11:05:12.000000Z eeb9900e088c367d06668e201e4be39e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 98 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 114 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.743801Z +2011-03-03T11:05:12.000000Z 68deee946f4e81fafcae37d51f2e6bd5 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/all-wcprops Tue Feb 22 16:48:15 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 91 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts -END -plugin_layout.erb -K 25 -svn:wc:ra_dav:version-url -V 109 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/plugin_layout.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.747800Z +2011-03-03T11:05:12.000000Z 3791a6748098d1382b11556ec47b6366 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 93 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 106 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 122 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.747800Z +2011-03-03T11:05:12.000000Z eeb9900e088c367d06668e201e4be39e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 108 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 124 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.747800Z +2011-03-03T11:05:12.000000Z eeb9900e088c367d06668e201e4be39e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 107 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 123 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.751796Z +2011-03-03T11:05:12.000000Z 3bef9fe54ed08fd7ce454a189b2b3195 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 97 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 113 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.751796Z +2011-03-03T11:05:12.000000Z 3bef9fe54ed08fd7ce454a189b2b3195 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/lib -END -app_and_plugin_lib_model.rb -K 25 -svn:wc:ra_dav:version-url -V 105 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/lib/app_and_plugin_lib_model.rb -END -alpha_plugin_lib_model.rb -K 25 -svn:wc:ra_dav:version-url -V 103 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/lib/alpha_plugin_lib_model.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.751796Z +2011-03-03T11:05:12.000000Z 4799f34099980de6af0dc719c7f04845 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.751796Z +2011-03-03T11:05:12.000000Z e892323cf7ac415a30ca41b49ab96d1d 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/all-wcprops Tue Feb 22 16:48:15 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 81 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/locales -END -en.yml -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/locales/en.yml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/locales http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.755800Z +2011-03-03T11:05:12.000000Z 8fb4d64b7ed263c84a6aa2974eb71f25 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 72 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-09-23T14:37:45.763755Z +2011-03-03T11:05:12.000000Z cee45809cc705092eca4e13d3aa204f1 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers -END -app_and_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 117 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/app_and_plugin_controller.rb -END -shared_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 116 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/shared_plugin_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.759798Z +2011-03-03T11:05:12.000000Z 6c633d0dcb606e532dd906bd2567bf57 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.759798Z +2011-03-03T11:05:12.000000Z df7f8bb84aa9fcbe07534d5aa59e11b8 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/all-wcprops Tue Feb 22 16:48:15 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 98 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace -END -shared_plugin_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 126 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/shared_plugin_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.759798Z +2011-03-03T11:05:12.000000Z a8bcbb79381d6db75a9ea6e2704828a9 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/all-wcprops Tue Feb 22 16:48:15 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 83 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/models -END -shared_plugin_model.rb -K 25 -svn:wc:ra_dav:version-url -V 106 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/models/shared_plugin_model.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.759798Z +2011-03-03T11:05:12.000000Z c9a469b003eca7ac6627c41deeda1b4c 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 92 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 106 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 122 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.763755Z +2011-03-03T11:05:12.000000Z 78db1a7e1a9f6216dfa3671e5d42c81b 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 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 96 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin -END -a_view.html.erb -K 25 -svn:wc:ra_dav:version-url -V 112 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/a_view.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.763755Z +2011-03-03T11:05:12.000000Z 78db1a7e1a9f6216dfa3671e5d42c81b 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/all-wcprops Tue Feb 22 16:48:15 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 80 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/locales -END -en.yml -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/beta_plugin/locales/en.yml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/locales http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.767754Z +2011-03-03T11:05:12.000000Z 277816fa171800daec137e70993e39f6 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/not_a_plugin/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/not_a_plugin -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/all-wcprops Tue Feb 22 16:48:15 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 80 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/not_a_plugin/public -END -should_not_be_copied.txt -K 25 -svn:wc:ra_dav:version-url -V 105 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/not_a_plugin/public/should_not_be_copied.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries --- a/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin/public http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.767754Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/.svn/all-wcprops Tue Feb 22 16:48:15 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 72 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.775754Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/all-wcprops Tue Feb 22 16:48:15 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 88 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app/controllers -END -assets_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 109 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app/controllers/assets_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.771797Z +2011-03-03T11:05:12.000000Z ba97b09a04ada07aa57234ea8649c128 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/all-wcprops Tue Feb 22 16:48:15 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 89 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/assets -END -index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 104 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/index.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/assets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.771797Z +2011-03-03T11:05:12.000000Z 5c22cfc5b27a3b2b869075baacf530a6 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/all-wcprops Tue Feb 22 16:48:15 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 90 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts -END -assets.html.erb -K 25 -svn:wc:ra_dav:version-url -V 106 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/assets.html.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.775754Z +2011-03-03T11:05:12.000000Z 8a99331150683df5edbd645cb851de37 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/public/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/public/.svn/all-wcprops Tue Feb 22 16:48:15 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 79 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/public -END -file.txt -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/public/file.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.775754Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/all-wcprops Tue Feb 22 16:48:15 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 89 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/public/subfolder -END -file_in_subfolder.txt -K 25 -svn:wc:ra_dav:version-url -V 111 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/file_in_subfolder.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public/subfolder http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.775754Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/all-wcprops Tue Feb 22 16:48:15 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 94 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 102 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.779781Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/all-wcprops Tue Feb 22 16:48:15 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 101 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets -END -file.txt -K 25 -svn:wc:ra_dav:version-url -V 110 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/file.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.779781Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/all-wcprops Tue Feb 22 16:48:15 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 111 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder -END -file_in_subfolder.txt -K 25 -svn:wc:ra_dav:version-url -V 133 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/file_in_subfolder.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.779781Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/all-wcprops Tue Feb 22 16:48:15 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 93 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 101 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.783782Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/all-wcprops Tue Feb 22 16:48:15 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 100 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets -END -file.txt -K 25 -svn:wc:ra_dav:version-url -V 109 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/file.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.783782Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_code_mixing/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/all-wcprops Tue Feb 22 16:48:15 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 77 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_code_mixing -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.783782Z +2011-03-03T11:05:12.000000Z cee45809cc705092eca4e13d3aa204f1 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/all-wcprops Tue Feb 22 16:48:15 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 88 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app/things -END -thing.rb -K 25 -svn:wc:ra_dav:version-url -V 97 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/thing.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app/things http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.783782Z +2011-03-03T11:05:12.000000Z 3b8cfcd53b03ccc6db1aac5b542abaa4 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_load_path/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_load_path/.svn/all-wcprops Tue Feb 22 16:48:15 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 75 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_load_path -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_load_path/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_load_path/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_load_path http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.787823Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_migration/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_migration/.svn/all-wcprops Tue Feb 22 16:48:15 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 75 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_migration -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 83 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_migration/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_migration/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_migration/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_migration/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.791825Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_migration/db/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_migration/db/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_migration/db -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 86 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate -END -001_create_tests.rb -K 25 -svn:wc:ra_dav:version-url -V 106 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate/001_create_tests.rb -END -002_create_others.rb -K 25 -svn:wc:ra_dav:version-url -V 107 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate/002_create_others.rb -END -003_create_extras.rb -K 25 -svn:wc:ra_dav:version-url -V 107 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate/003_create_extras.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.791825Z +2011-03-03T11:05:12.000000Z ba950e9dc666a42d09029148ae7e3234 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.791825Z +2011-03-03T11:05:12.000000Z de937ac5b434955daacc33306a5a1a2d 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.791825Z +2011-03-03T11:05:12.000000Z b9241da5bb8308bcea2f4cd5cbd32ff1 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/all-wcprops Tue Feb 22 16:48:15 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 80 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.799837Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 84 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/all-wcprops Tue Feb 22 16:48:15 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 91 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models -END -plugin_mail.rb -K 25 -svn:wc:ra_dav:version-url -V 106 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/plugin_mail.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.791825Z +2011-03-03T11:05:12.000000Z 6bfa7a84bb26ae29617568896fec30ae 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/all-wcprops Tue Feb 22 16:48:15 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 102 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail -END -multipart_from_plugin_plain.html.erb -K 25 -svn:wc:ra_dav:version-url -V 139 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_plain.html.erb -END -multipart_from_plugin_html.html.erb -K 25 -svn:wc:ra_dav:version-url -V 138 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_html.html.erb -END -multipart_from_plugin_with_application_template_plain.html.erb -K 25 -svn:wc:ra_dav:version-url -V 165 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb -END -multipart_from_plugin_with_application_template_html.html.erb -K 25 -svn:wc:ra_dav:version-url -V 164 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_html.html.erb -END -mail_from_plugin.erb -K 25 -svn:wc:ra_dav:version-url -V 123 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/mail_from_plugin.erb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.795823Z +2011-03-03T11:05:12.000000Z cf207341167ec099c0e0ffbe3935a4d4 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.795823Z +2011-03-03T11:05:12.000000Z c54772416c0a8c4f3d46880180299dd5 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.799837Z +2011-03-03T11:05:12.000000Z 6f32fb0cf1bfbf4dcc8636f350a126e8 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.795823Z +2011-03-03T11:05:12.000000Z 6f32fb0cf1bfbf4dcc8636f350a126e8 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.795823Z +2011-03-03T11:05:12.000000Z ededb32a08ab9582df24ce1572dc2a20 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_routing/.svn/all-wcprops Tue Feb 22 16:48:15 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 73 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-09-23T14:37:45.803782Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_routing/app/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 77 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/app -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/all-wcprops Tue Feb 22 16:48:15 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 89 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers -END -test_routing_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 116 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers/test_routing_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.803782Z +2011-03-03T11:05:12.000000Z e5a27666b16bdff58054a3440cf14516 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/all-wcprops Tue Feb 22 16:48:15 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 99 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace -END -test_routing_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 126 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/test_routing_controller.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.803782Z +2011-03-03T11:05:12.000000Z 515669edfb53126155e911a1ae5149ec 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/config/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_routing/config/.svn/all-wcprops Tue Feb 22 16:48:15 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 80 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/config -END -routes.rb -K 25 -svn:wc:ra_dav:version-url -V 90 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_routing/config/routes.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/config http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.803782Z +2011-03-03T11:05:12.000000Z 47135f279d2e64a431d8604df1402ffb 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_testing/.svn/all-wcprops Tue Feb 22 16:48:15 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 73 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-09-23T14:37:45.807778Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/app/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_testing/app/.svn/all-wcprops Tue Feb 22 16:48:15 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 77 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/app -END -README.txt -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/app/README.txt -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/app http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.807778Z +2011-03-03T11:05:12.000000Z 9cbac832f86ac5e8cfbbc4c69811910e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/test/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_testing/test/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/test -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/all-wcprops Tue Feb 22 16:48:15 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 87 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/test/fixtures -END -testing_fixtures.yml -K 25 -svn:wc:ra_dav:version-url -V 108 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/testing_fixtures.yml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.807778Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/all-wcprops --- a/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/all-wcprops Tue Feb 22 16:48:15 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 83 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/test/unit -END -override_test.rb -K 25 -svn:wc:ra_dav:version-url -V 100 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/plugins/test_testing/test/unit/override_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/unit http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.807778Z +2011-03-03T11:05:12.000000Z 35e9fbc2fb32c9114a5d6cf531f41e8d 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/unit/.svn/all-wcprops --- a/vendor/plugins/engines/test/unit/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit -END -plugins_test.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/plugins_test.rb -END -assets_test.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/assets_test.rb -END -arbitrary_code_mixing_test.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/arbitrary_code_mixing_test.rb -END -backwards_compat_test.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/backwards_compat_test.rb -END -action_mailer_test.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/action_mailer_test.rb -END -model_and_lib_test.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/model_and_lib_test.rb -END -migration_test.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/migration_test.rb -END -load_path_test.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/load_path_test.rb -END -testing_test.rb -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/testing_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/unit/.svn/entries --- a/vendor/plugins/engines/test/unit/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/unit/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.815811Z +2011-03-03T11:05:12.000000Z 6724203a17cf765303c1f1cad440ec45 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.811809Z +2011-03-03T11:05:12.000000Z 45a0f490d23fbb62bab17f142ba7e3a6 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.811809Z +2011-03-03T11:05:12.000000Z 061b4ca6bf8ee79b149289ced48c0389 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.811809Z +2011-03-03T11:05:12.000000Z caf5ed93e20f9675e13260049b591bcb 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.811809Z +2011-03-03T11:05:12.000000Z d48da3c38e3e757d1649f48a25913284 2009-09-13T17:14:35.707881Z 2887 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.815811Z +2011-03-03T11:05:12.000000Z ba3376b21f9304e1bc6dd06e88fb031f 2009-09-13T17:14:35.707881Z 2887 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.815811Z +2011-03-03T11:05:12.000000Z 7930dc88c66a78e10283af28694f9d75 2009-09-13T17:14:35.707881Z 2887 @@ -273,7 +273,7 @@ -2010-09-23T14:37:45.811809Z +2011-03-03T11:05:12.000000Z da88ee34b7ad92288156f6dc33bc8945 2009-09-13T17:14:35.707881Z 2887 @@ -307,7 +307,7 @@ -2010-09-23T14:37:45.815811Z +2011-03-03T11:05:12.000000Z 749dec42d5f8db283afd40fa09a7a323 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/unit/test_testing/.svn/all-wcprops --- a/vendor/plugins/engines/test/unit/test_testing/.svn/all-wcprops Tue Feb 22 16:48:15 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 70 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/test_testing -END -override_test.rb -K 25 -svn:wc:ra_dav:version-url -V 87 -/svn/!svn/ver/2887/trunk/vendor/plugins/engines/test/unit/test_testing/override_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/engines/test/unit/test_testing/.svn/entries --- a/vendor/plugins/engines/test/unit/test_testing/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/engines/test/unit/test_testing/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit/test_testing http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.815811Z +2011-03-03T11:05:12.000000Z 55340a07100e4eea865c224b450561d8 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/gravatar/.svn/all-wcprops --- a/vendor/plugins/gravatar/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/4406/trunk/vendor/plugins/gravatar -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 57 -/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/Rakefile -END -README.rdoc -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/2832/trunk/vendor/plugins/gravatar/README.rdoc -END -.gitignore -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/2832/trunk/vendor/plugins/gravatar/.gitignore -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/1962/trunk/vendor/plugins/gravatar/init.rb -END -MIT-LICENSE -K 25 -svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/1962/trunk/vendor/plugins/gravatar/MIT-LICENSE -END -about.yml -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/2832/trunk/vendor/plugins/gravatar/about.yml -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/gravatar/.svn/entries --- a/vendor/plugins/gravatar/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/gravatar/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-24T12:48:29.643852Z +2011-03-03T11:05:12.000000Z dcfa5a7b3c1cc768b2c0e3ad1ab802d0 2010-09-10T03:09:02.311267Z 4072 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.819779Z +2011-03-03T11:05:12.000000Z 3b03a1f4670e486bfc0a99ea42fcc661 2009-08-02T04:19:44.367555Z 2832 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.815811Z +2011-03-03T11:05:12.000000Z cd9b6943fc8fe58cdccef0b0215bf6bb 2009-08-02T04:19:44.367555Z 2832 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.819779Z +2011-03-03T11:05:12.000000Z 7560c41dd1c4891e83f52d2855a6a4e9 2008-10-30T02:58:04.259131Z 1962 @@ -171,7 +171,7 @@ -2010-09-23T14:37:45.819779Z +2011-03-03T11:05:12.000000Z b718f27e16d77b36a24720b5b902328f 2008-10-30T02:58:04.259131Z 1962 @@ -208,7 +208,7 @@ -2010-09-23T14:37:45.819779Z +2011-03-03T11:05:12.000000Z e052390cb0624d4b81b7809e65db85f6 2009-08-02T04:19:44.367555Z 2832 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/gravatar/lib/.svn/all-wcprops --- a/vendor/plugins/gravatar/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 52 -/svn/!svn/ver/4406/trunk/vendor/plugins/gravatar/lib -END -gravatar.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4406/trunk/vendor/plugins/gravatar/lib/gravatar.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/gravatar/lib/.svn/entries --- a/vendor/plugins/gravatar/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/gravatar/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:50.928934Z +2011-03-03T11:05:12.000000Z a25a3e98e0d582955ee8fd520f424273 2010-11-14T16:24:21.989522Z 4406 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/gravatar/spec/.svn/all-wcprops --- a/vendor/plugins/gravatar/spec/.svn/all-wcprops Tue Feb 22 16:48:15 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 53 -/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/spec -END -gravatar_spec.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/4072/trunk/vendor/plugins/gravatar/spec/gravatar_spec.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/gravatar/spec/.svn/entries --- a/vendor/plugins/gravatar/spec/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/gravatar/spec/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/spec http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-24T12:48:29.643852Z +2011-03-03T11:05:12.000000Z 26b23e5e988b11435e121bf53624d934 2010-09-10T03:09:02.311267Z 4072 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/3933/trunk/vendor/plugins/open_id_authentication -END -Rakefile -K 25 -svn:wc:ra_dav:version-url -V 71 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/Rakefile -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/2458/trunk/vendor/plugins/open_id_authentication/init.rb -END -CHANGELOG -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/CHANGELOG -END -README -K 25 -svn:wc:ra_dav:version-url -V 69 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/.svn/entries --- a/vendor/plugins/open_id_authentication/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.823780Z +2011-03-03T11:05:12.000000Z b66b372df8374607d104228f41a06671 2009-02-11T19:06:45.087605Z 2438 @@ -72,7 +72,7 @@ -2010-09-23T14:37:45.831824Z +2011-03-03T11:05:12.000000Z 22579abfc9dc6a4cf475150e407e9a17 2009-02-12T21:25:50.680468Z 2458 @@ -109,7 +109,7 @@ -2010-09-23T14:37:45.823780Z +2011-03-03T11:05:12.000000Z d23f4c2e6c00805d7172c76ad52ebe6f 2009-02-11T19:06:45.087605Z 2438 @@ -146,7 +146,7 @@ -2010-09-23T14:37:45.823780Z +2011-03-03T11:05:12.000000Z 45eb3e296a3591fca629d0c8eab71e4c 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/generators/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/all-wcprops Tue Feb 22 16:48:15 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 103 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables -END -open_id_authentication_tables_generator.rb -K 25 -svn:wc:ra_dav:version-url -V 146 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/open_id_authentication_tables_generator.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.827780Z +2011-03-03T11:05:12.000000Z ee799e52b83b842fa2a879431195e9eb 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/all-wcprops Tue Feb 22 16:48:15 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 113 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates -END -migration.rb -K 25 -svn:wc:ra_dav:version-url -V 126 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/migration.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.827780Z +2011-03-03T11:05:12.000000Z 352b0b17c079fdf355c028a9b990b3b7 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/all-wcprops Tue Feb 22 16:48:15 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 111 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables -END -upgrade_open_id_authentication_tables_generator.rb -K 25 -svn:wc:ra_dav:version-url -V 162 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/upgrade_open_id_authentication_tables_generator.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.831824Z +2011-03-03T11:05:12.000000Z f401bfd8b5d2dd3008d16bf79de8c1e4 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/all-wcprops Tue Feb 22 16:48:15 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 121 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates -END -migration.rb -K 25 -svn:wc:ra_dav:version-url -V 134 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/migration.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.831824Z +2011-03-03T11:05:12.000000Z 512b6bc6321e15e12a9eb5ef10317b73 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/lib/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/lib/.svn/all-wcprops Tue Feb 22 16:48:15 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 66 -/svn/!svn/ver/3933/trunk/vendor/plugins/open_id_authentication/lib -END -open_id_authentication.rb -K 25 -svn:wc:ra_dav:version-url -V 92 -/svn/!svn/ver/3933/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/lib/.svn/entries --- a/vendor/plugins/open_id_authentication/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.831824Z +2011-03-03T11:05:12.000000Z c72f1bd48e8c2dfe4e84ba232fc40030 2010-08-10T21:12:32.103531Z 3933 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication -END -mem_cache_store.rb -K 25 -svn:wc:ra_dav:version-url -V 108 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication/mem_cache_store.rb -END -db_store.rb -K 25 -svn:wc:ra_dav:version-url -V 101 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication/db_store.rb -END -nonce.rb -K 25 -svn:wc:ra_dav:version-url -V 98 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication/nonce.rb -END -timeout_fixes.rb -K 25 -svn:wc:ra_dav:version-url -V 106 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication/timeout_fixes.rb -END -request.rb -K 25 -svn:wc:ra_dav:version-url -V 100 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication/request.rb -END -association.rb -K 25 -svn:wc:ra_dav:version-url -V 104 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication/association.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries --- a/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.835838Z +2011-03-03T11:05:12.000000Z 1effe2a3ab6ff2cf3a4ffc288222b114 2009-02-11T19:06:45.087605Z 2438 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.835838Z +2011-03-03T11:05:12.000000Z 9ed2aea6a3f0e76f21a84bf5bdb1bebe 2009-02-11T19:06:45.087605Z 2438 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.835838Z +2011-03-03T11:05:12.000000Z 4aa743638f54375c2f1f25e62fa50bf3 2009-02-11T19:06:45.087605Z 2438 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.835838Z +2011-03-03T11:05:12.000000Z d05c8725996156d4cc153a2fc0891db8 2009-02-11T19:06:45.087605Z 2438 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.835838Z +2011-03-03T11:05:12.000000Z 6a6fdfddabbc9ae4b8c11f69bc653107 2009-02-11T19:06:45.087605Z 2438 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.835838Z +2011-03-03T11:05:12.000000Z 42863e1d17d5af05e0e896d336def59c 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/tasks/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/tasks/.svn/all-wcprops Tue Feb 22 16:48:15 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 68 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/tasks -END -open_id_authentication_tasks.rake -K 25 -svn:wc:ra_dav:version-url -V 102 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/tasks/open_id_authentication_tasks.rake -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/tasks/.svn/entries --- a/vendor/plugins/open_id_authentication/tasks/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/tasks/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/tasks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.835838Z +2011-03-03T11:05:12.000000Z 54b595ee92e0adb364a9086340b2af51 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/test/.svn/all-wcprops --- a/vendor/plugins/open_id_authentication/test/.svn/all-wcprops Tue Feb 22 16:48:15 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 67 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/test -END -test_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/test/test_helper.rb -END -normalize_test.rb -K 25 -svn:wc:ra_dav:version-url -V 85 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/test/normalize_test.rb -END -status_test.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/test/status_test.rb -END -open_id_authentication_test.rb -K 25 -svn:wc:ra_dav:version-url -V 98 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/test/open_id_authentication_test.rb -END -mem_cache_store_test.rb -K 25 -svn:wc:ra_dav:version-url -V 91 -/svn/!svn/ver/2438/trunk/vendor/plugins/open_id_authentication/test/mem_cache_store_test.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/open_id_authentication/test/.svn/entries --- a/vendor/plugins/open_id_authentication/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/open_id_authentication/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.839834Z +2011-03-03T11:05:12.000000Z 9448478c6f6c999b3dfae03f9661a7a9 2009-02-11T19:06:45.087605Z 2438 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.839834Z +2011-03-03T11:05:12.000000Z 218b9c429fce5d50a6de37d10d4c626a 2009-02-11T19:06:45.087605Z 2438 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.839834Z +2011-03-03T11:05:12.000000Z 3ffcd8ee621212d3a963257c35cf565c 2009-02-11T19:06:45.087605Z 2438 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.839834Z +2011-03-03T11:05:12.000000Z 26175162cebaa3962614100cac9726fc 2009-02-11T19:06:45.087605Z 2438 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.839834Z +2011-03-03T11:05:12.000000Z c3e483ae649f9324f093075331c26ed1 2009-02-11T19:06:45.087605Z 2438 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/prepend_engine_views/.svn/all-wcprops --- a/vendor/plugins/prepend_engine_views/.svn/all-wcprops Tue Feb 22 16:48:15 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 60 -/svn/!svn/ver/2887/trunk/vendor/plugins/prepend_engine_views -END -init.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/2887/trunk/vendor/plugins/prepend_engine_views/init.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/prepend_engine_views/.svn/entries --- a/vendor/plugins/prepend_engine_views/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/prepend_engine_views/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/prepend_engine_views http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.843778Z +2011-03-03T11:05:12.000000Z 720c397a2f5ed49f4436f5d9cbe0b5ec 2009-09-13T17:14:35.707881Z 2887 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/.svn/all-wcprops --- a/vendor/plugins/rfpdf/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 45 -/svn/!svn/ver/3389/trunk/vendor/plugins/rfpdf +/svn/!svn/ver/4602/trunk/vendor/plugins/rfpdf END init.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/.svn/entries --- a/vendor/plugins/rfpdf/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf http://redmine.rubyforge.org/svn -2010-02-07T12:30:44.486359Z -3389 +2011-01-01T11:45:12.617336Z +4602 jplang @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.843778Z +2011-03-03T11:05:12.000000Z 1da9fbada6119233134b3aab6c7d0edf 2008-07-04T17:58:14.743502Z 1623 @@ -72,7 +72,7 @@ -2010-09-23T14:37:45.843778Z +2011-03-03T11:05:12.000000Z 275a3dc6407eaf7c40f1d8f4e6b08803 2006-11-21T18:34:04.275680Z 49 @@ -106,7 +106,7 @@ -2010-09-23T14:37:45.843778Z +2011-03-03T11:05:12.000000Z 40cf182dab06e3de067375de5bbab322 2006-11-21T18:34:04.275680Z 49 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.843778Z +2011-03-03T11:05:12.000000Z d58199e83ebcaa5d234764407c238bb2 2006-11-21T18:34:04.275680Z 49 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/lib/.svn/all-wcprops --- a/vendor/plugins/rfpdf/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/3389/trunk/vendor/plugins/rfpdf/lib +/svn/!svn/ver/4602/trunk/vendor/plugins/rfpdf/lib END rfpdf.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/lib/.svn/entries --- a/vendor/plugins/rfpdf/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib http://redmine.rubyforge.org/svn -2010-02-07T12:30:44.486359Z -3389 +2011-01-01T11:45:12.617336Z +4602 jplang @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.847779Z +2011-03-03T11:05:12.000000Z 9667df0ee17c3893ec4025f214d990ee 2006-11-21T18:34:04.275680Z 49 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/lib/rfpdf/.svn/all-wcprops --- a/vendor/plugins/rfpdf/lib/rfpdf/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/rfpdf/.svn/all-wcprops Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3389/trunk/vendor/plugins/rfpdf/lib/rfpdf +/svn/!svn/ver/4602/trunk/vendor/plugins/rfpdf/lib/rfpdf END chinese.rb K 25 @@ -12,8 +12,8 @@ fpdf.rb K 25 svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/67/trunk/vendor/plugins/rfpdf/lib/rfpdf/fpdf.rb +V 63 +/svn/!svn/ver/4602/trunk/vendor/plugins/rfpdf/lib/rfpdf/fpdf.rb END korean.rb K 25 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/lib/rfpdf/.svn/entries --- a/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib/rfpdf http://redmine.rubyforge.org/svn -2010-02-07T12:30:44.486359Z -3389 +2011-01-01T11:45:12.617336Z +4602 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z ddaf6868455af432aac221e53aadc10a 2008-06-07T08:39:06.277997Z 1497 @@ -66,10 +66,10 @@ -2010-09-23T14:37:45.851779Z -69406d6105df50a9552702d133889fd6 -2006-11-21T18:34:04.275680Z -49 +2011-03-03T11:05:12.000000Z +a2f702c9c8177f01521aa9eb5d6f9313 +2011-01-01T11:45:12.617336Z +4602 jplang @@ -92,7 +92,7 @@ -59472 +59677 korean.rb file @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z 61d6e8e3bc2a549b1adf12c8e5148019 2010-02-07T12:30:44.486359Z 3389 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z f504607d615e4d100eb506daf3dfe038 2006-11-21T18:34:04.275680Z 49 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z 267f469d753d389beda7bb8d39ef5e79 2007-02-18T10:33:22.252239Z 248 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z 8b971319c65229a7075520cf5ce0fb84 2006-11-21T18:34:04.275680Z 49 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z c11f99560b9b2e12cf9c679f8ef11c37 2006-11-21T18:34:04.275680Z 49 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z 48cd43d67257151aebb2e0aeee6f4cbf 2007-03-01T19:49:04.518842Z 287 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z 9bdec08cb98e4413cfb9c39877f3734d 2008-07-04T17:58:14.743502Z 1623 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z e759935ac5ac9027073e9a2f3543b231 2006-11-21T18:34:04.275680Z 49 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/lib/rfpdf/.svn/text-base/fpdf.rb.svn-base --- a/vendor/plugins/rfpdf/lib/rfpdf/.svn/text-base/fpdf.rb.svn-base Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/rfpdf/.svn/text-base/fpdf.rb.svn-base Thu Mar 03 12:11:53 2011 +0000 @@ -378,13 +378,21 @@ end @ColorFlag=(@FillColor!=@TextColor) end + + def GetCharWidth(widths, index) + if index.is_a?(String) + widths[index.ord] + else + widths[index] + end + end def GetStringWidth(s) # Get width of a string in the current font cw=@CurrentFont['cw'] w=0 s.each_byte do |c| - w=w+cw[c] + w=w+GetCharWidth(cw, c) end w*@FontSize/1000.0 end @@ -707,7 +715,7 @@ ls=l ns=ns+1 end - l=l+cw[c[0]] + l=l+GetCharWidth(cw, c[0]) if l>wmax # Automatic line break if sep==-1 @@ -786,7 +794,7 @@ sep=i ls=l end - l=l+cw[c]; + l=l+GetCharWidth(cw, c); if l>wmax # Automatic line break if sep==-1 @@ -1079,7 +1087,7 @@ cw=font['cw'] s='[' 32.upto(255) do |i| - s << cw[i].to_s+' ' + s << GetCharWidth(cw, i).to_s + ' ' end out(s+']') out('endobj') diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/lib/rfpdf/fpdf.rb --- a/vendor/plugins/rfpdf/lib/rfpdf/fpdf.rb Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/rfpdf/fpdf.rb Thu Mar 03 12:11:53 2011 +0000 @@ -378,13 +378,21 @@ end @ColorFlag=(@FillColor!=@TextColor) end + + def GetCharWidth(widths, index) + if index.is_a?(String) + widths[index.ord] + else + widths[index] + end + end def GetStringWidth(s) # Get width of a string in the current font cw=@CurrentFont['cw'] w=0 s.each_byte do |c| - w=w+cw[c] + w=w+GetCharWidth(cw, c) end w*@FontSize/1000.0 end @@ -707,7 +715,7 @@ ls=l ns=ns+1 end - l=l+cw[c[0]] + l=l+GetCharWidth(cw, c[0]) if l>wmax # Automatic line break if sep==-1 @@ -786,7 +794,7 @@ sep=i ls=l end - l=l+cw[c]; + l=l+GetCharWidth(cw, c); if l>wmax # Automatic line break if sep==-1 @@ -1079,7 +1087,7 @@ cw=font['cw'] s='[' 32.upto(255) do |i| - s << cw[i].to_s+' ' + s << GetCharWidth(cw, i).to_s + ' ' end out(s+']') out('endobj') diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/test/.svn/all-wcprops --- a/vendor/plugins/rfpdf/test/.svn/all-wcprops Tue Feb 22 16:48:15 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 48 -/svn/!svn/ver/67/trunk/vendor/plugins/rfpdf/test -END -test_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/67/trunk/vendor/plugins/rfpdf/test/test_helper.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/rfpdf/test/.svn/entries --- a/vendor/plugins/rfpdf/test/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/rfpdf/test/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z 65b672e3025a6dc9ed22dc2cb1356061 2006-11-21T18:34:04.275680Z 49 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/.svn/all-wcprops --- a/vendor/plugins/ruby-net-ldap-0.0.4/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/1148/trunk/vendor/plugins/ruby-net-ldap-0.0.4 -END -LICENCE -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/LICENCE -END -ChangeLog -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/ChangeLog -END -COPYING -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/COPYING -END -README -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/README -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4 http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.859799Z +2011-03-03T11:05:12.000000Z 100efd8d000514effa3709713ab85acb 2007-01-02T08:48:40.736310Z 134 @@ -72,7 +72,7 @@ -2010-09-23T14:37:45.859799Z +2011-03-03T11:05:12.000000Z e951c712b462c2e6e01f12474d4a23c2 2007-01-02T08:48:40.736310Z 134 @@ -106,7 +106,7 @@ -2010-09-23T14:37:45.859799Z +2011-03-03T11:05:12.000000Z ff6d66271209d878dbe3742d8061151e 2007-01-02T08:48:40.736310Z 134 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.859799Z +2011-03-03T11:05:12.000000Z 365281a5053e3232092adff0636600b3 2007-01-02T08:48:40.736310Z 134 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/all-wcprops --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/1148/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib http://redmine.rubyforge.org/svn diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/all-wcprops --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/1148/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net -END -ldif.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldif.rb -END -ldap.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap.rb -END -ber.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/1148/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ber.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.867778Z +2011-03-03T11:05:12.000000Z bcd7fbc67923f3cc1491ca301a5c39cb 2007-01-02T08:48:40.736310Z 134 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.863819Z +2011-03-03T11:05:12.000000Z 47d5a9c76d96071a1de184dd49c09194 2007-01-02T08:48:40.736310Z 134 @@ -103,7 +103,7 @@ -2010-09-23T14:37:45.863819Z +2011-03-03T11:05:12.000000Z 40f7f978006674f2b916ce341e5ad684 2008-02-15T17:22:21.293943Z 1148 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/all-wcprops --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/all-wcprops Tue Feb 22 16:48:15 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 71 -/svn/!svn/ver/252/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap -END -entry.rb -K 25 -svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/entry.rb -END -dataset.rb -K 25 -svn:wc:ra_dav:version-url -V 82 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/dataset.rb -END -filter.rb -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/252/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/filter.rb -END -pdu.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/pdu.rb -END -psw.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/psw.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.867778Z +2011-03-03T11:05:12.000000Z be6b5dd522a4532ceeda4ab5bddcb53e 2007-01-02T08:48:40.736310Z 134 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.867778Z +2011-03-03T11:05:12.000000Z dce002e156bf793b6219b50e5d4ede3a 2007-01-02T08:48:40.736310Z 134 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.867778Z +2011-03-03T11:05:12.000000Z 39c1aa4a3ff36f2769b6855a4b56faa7 2007-02-18T11:45:55.832750Z 252 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.867778Z +2011-03-03T11:05:12.000000Z 7acdae44250f47d4b177c0367865d5f7 2007-01-02T08:48:40.736310Z 134 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.867778Z +2011-03-03T11:05:12.000000Z 7af528c0721148b904f82e64e523ee74 2007-01-02T08:48:40.736310Z 134 diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/all-wcprops --- a/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/all-wcprops Tue Feb 22 16:48:15 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests -END -testldif.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests/testldif.rb -END -testldap.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests/testldap.rb -END -testem.rb -K 25 -svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests/testem.rb -END -testdata.ldif -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests/testdata.ldif -END -testfilter.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests/testfilter.rb -END -testber.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests/testber.rb -END -testpsw.rb -K 25 -svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/134/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests/testpsw.rb -END diff -r 7cec015f07ce -r 73ff0e6a11b1 vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries Tue Feb 22 16:48:15 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries Thu Mar 03 12:11:53 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4411 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.871778Z +2011-03-03T11:05:12.000000Z d32a0d5d48658b30de358974dc588b6a 2007-01-02T08:48:40.736310Z 134 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.871778Z +2011-03-03T11:05:12.000000Z 9a4a1de4982131870bcc016b3062b563 2007-01-02T08:48:40.736310Z 134 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.871778Z +2011-03-03T11:05:12.000000Z 07fadb83b55212328945590db904016b 2007-01-02T08:48:40.736310Z 134 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.871778Z +2011-03-03T11:05:12.000000Z f60b9471933a7a534097d3fd1fe38a18 2007-01-02T08:48:40.736310Z 134 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.871778Z +2011-03-03T11:05:12.000000Z 98e4a39b73665ed7c274457213d8e3d5 2007-01-02T08:48:40.736310Z 134 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.871778Z +2011-03-03T11:05:12.000000Z a6eed10e89ba06f4ffa2da720bb1752f 2007-01-02T08:48:40.736310Z 134 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.871778Z +2011-03-03T11:05:12.000000Z 3dcbc8b4c3717fa97211a1d75a7fab4f 2007-01-02T08:48:40.736310Z 134