##// END OF EJS Templates
Add a Email Header setting. Useful for adding delimiters to every email....
Eric Davis -
r4248:7e359d3d7e13
parent child
Show More
@@ -1,32 +1,33
1 <html>
1 <html>
2 <head>
2 <head>
3 <style>
3 <style>
4 body {
4 body {
5 font-family: Verdana, sans-serif;
5 font-family: Verdana, sans-serif;
6 font-size: 0.8em;
6 font-size: 0.8em;
7 color:#484848;
7 color:#484848;
8 }
8 }
9 h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin: 0px; }
9 h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin: 0px; }
10 h1 { font-size: 1.2em; }
10 h1 { font-size: 1.2em; }
11 h2, h3 { font-size: 1.1em; }
11 h2, h3 { font-size: 1.1em; }
12 a, a:link, a:visited { color: #2A5685;}
12 a, a:link, a:visited { color: #2A5685;}
13 a:hover, a:active { color: #c61a1a; }
13 a:hover, a:active { color: #c61a1a; }
14 a.wiki-anchor { display: none; }
14 a.wiki-anchor { display: none; }
15 hr {
15 hr {
16 width: 100%;
16 width: 100%;
17 height: 1px;
17 height: 1px;
18 background: #ccc;
18 background: #ccc;
19 border: 0;
19 border: 0;
20 }
20 }
21 .footer {
21 .footer {
22 font-size: 0.8em;
22 font-size: 0.8em;
23 font-style: italic;
23 font-style: italic;
24 }
24 }
25 </style>
25 </style>
26 </head>
26 </head>
27 <body>
27 <body>
28 <span class="header"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_header) %></span>
28 <%= yield %>
29 <%= yield %>
29 <hr />
30 <hr />
30 <span class="footer"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer) %></span>
31 <span class="footer"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer) %></span>
31 </body>
32 </body>
32 </html>
33 </html>
@@ -1,3 +1,4
1 <%= Setting.emails_header %>
1 <%= yield %>
2 <%= yield %>
2 --
3 --
3 <%= Setting.emails_footer %>
4 <%= Setting.emails_footer %>
@@ -1,38 +1,42
1 <% if @deliveries %>
1 <% if @deliveries %>
2 <% form_tag({:action => 'edit', :tab => 'notifications'}) do %>
2 <% form_tag({:action => 'edit', :tab => 'notifications'}) do %>
3
3
4 <div class="box tabular settings">
4 <div class="box tabular settings">
5 <p><%= setting_text_field :mail_from, :size => 60 %></p>
5 <p><%= setting_text_field :mail_from, :size => 60 %></p>
6
6
7 <p><%= setting_check_box :bcc_recipients %></p>
7 <p><%= setting_check_box :bcc_recipients %></p>
8
8
9 <p><%= setting_check_box :plain_text_mail %></p>
9 <p><%= setting_check_box :plain_text_mail %></p>
10
10
11 <p><%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %></p>
11 <p><%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %></p>
12
12
13 </div>
13 </div>
14
14
15 <fieldset class="box" id="notified_events"><legend><%=l(:text_select_mail_notifications)%></legend>
15 <fieldset class="box" id="notified_events"><legend><%=l(:text_select_mail_notifications)%></legend>
16 <%= hidden_field_tag 'settings[notified_events][]', '' %>
16 <%= hidden_field_tag 'settings[notified_events][]', '' %>
17 <% @notifiables.each do |notifiable| %>
17 <% @notifiables.each do |notifiable| %>
18 <%= notification_field notifiable %>
18 <%= notification_field notifiable %>
19 <br />
19 <br />
20 <% end %>
20 <% end %>
21 <p><%= check_all_links('notified_events') %></p>
21 <p><%= check_all_links('notified_events') %></p>
22 </fieldset>
22 </fieldset>
23
23
24 <fieldset class="box"><legend><%= l(:setting_emails_header) %></legend>
25 <%= setting_text_area :emails_header, :label => false, :class => 'wiki-edit', :rows => 5 %>
26 </fieldset>
27
24 <fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend>
28 <fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend>
25 <%= setting_text_area :emails_footer, :label => false, :class => 'wiki-edit', :rows => 5 %>
29 <%= setting_text_area :emails_footer, :label => false, :class => 'wiki-edit', :rows => 5 %>
26 </fieldset>
30 </fieldset>
27
31
28 <div style="float:right;">
32 <div style="float:right;">
29 <%= link_to l(:label_send_test_email), :controller => 'admin', :action => 'test_email' %>
33 <%= link_to l(:label_send_test_email), :controller => 'admin', :action => 'test_email' %>
30 </div>
34 </div>
31
35
32 <%= submit_tag l(:button_save) %>
36 <%= submit_tag l(:button_save) %>
33 <% end %>
37 <% end %>
34 <% else %>
38 <% else %>
35 <div class="nodata">
39 <div class="nodata">
36 <%= simple_format(l(:text_email_delivery_not_configured)) %>
40 <%= simple_format(l(:text_email_delivery_not_configured)) %>
37 </div>
41 </div>
38 <% end %>
42 <% end %>
@@ -1,927 +1,928
1 en:
1 en:
2 # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
2 # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
3 direction: ltr
3 direction: ltr
4 date:
4 date:
5 formats:
5 formats:
6 # Use the strftime parameters for formats.
6 # Use the strftime parameters for formats.
7 # When no format has been given, it uses default.
7 # When no format has been given, it uses default.
8 # You can provide other formats here if you like!
8 # You can provide other formats here if you like!
9 default: "%m/%d/%Y"
9 default: "%m/%d/%Y"
10 short: "%b %d"
10 short: "%b %d"
11 long: "%B %d, %Y"
11 long: "%B %d, %Y"
12
12
13 day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
13 day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
14 abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
14 abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
15
15
16 # Don't forget the nil at the beginning; there's no such thing as a 0th month
16 # Don't forget the nil at the beginning; there's no such thing as a 0th month
17 month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
17 month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
18 abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
18 abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
19 # Used in date_select and datime_select.
19 # Used in date_select and datime_select.
20 order: [ :year, :month, :day ]
20 order: [ :year, :month, :day ]
21
21
22 time:
22 time:
23 formats:
23 formats:
24 default: "%m/%d/%Y %I:%M %p"
24 default: "%m/%d/%Y %I:%M %p"
25 time: "%I:%M %p"
25 time: "%I:%M %p"
26 short: "%d %b %H:%M"
26 short: "%d %b %H:%M"
27 long: "%B %d, %Y %H:%M"
27 long: "%B %d, %Y %H:%M"
28 am: "am"
28 am: "am"
29 pm: "pm"
29 pm: "pm"
30
30
31 datetime:
31 datetime:
32 distance_in_words:
32 distance_in_words:
33 half_a_minute: "half a minute"
33 half_a_minute: "half a minute"
34 less_than_x_seconds:
34 less_than_x_seconds:
35 one: "less than 1 second"
35 one: "less than 1 second"
36 other: "less than {{count}} seconds"
36 other: "less than {{count}} seconds"
37 x_seconds:
37 x_seconds:
38 one: "1 second"
38 one: "1 second"
39 other: "{{count}} seconds"
39 other: "{{count}} seconds"
40 less_than_x_minutes:
40 less_than_x_minutes:
41 one: "less than a minute"
41 one: "less than a minute"
42 other: "less than {{count}} minutes"
42 other: "less than {{count}} minutes"
43 x_minutes:
43 x_minutes:
44 one: "1 minute"
44 one: "1 minute"
45 other: "{{count}} minutes"
45 other: "{{count}} minutes"
46 about_x_hours:
46 about_x_hours:
47 one: "about 1 hour"
47 one: "about 1 hour"
48 other: "about {{count}} hours"
48 other: "about {{count}} hours"
49 x_days:
49 x_days:
50 one: "1 day"
50 one: "1 day"
51 other: "{{count}} days"
51 other: "{{count}} days"
52 about_x_months:
52 about_x_months:
53 one: "about 1 month"
53 one: "about 1 month"
54 other: "about {{count}} months"
54 other: "about {{count}} months"
55 x_months:
55 x_months:
56 one: "1 month"
56 one: "1 month"
57 other: "{{count}} months"
57 other: "{{count}} months"
58 about_x_years:
58 about_x_years:
59 one: "about 1 year"
59 one: "about 1 year"
60 other: "about {{count}} years"
60 other: "about {{count}} years"
61 over_x_years:
61 over_x_years:
62 one: "over 1 year"
62 one: "over 1 year"
63 other: "over {{count}} years"
63 other: "over {{count}} years"
64 almost_x_years:
64 almost_x_years:
65 one: "almost 1 year"
65 one: "almost 1 year"
66 other: "almost {{count}} years"
66 other: "almost {{count}} years"
67
67
68 number:
68 number:
69 # Default format for numbers
69 # Default format for numbers
70 format:
70 format:
71 separator: "."
71 separator: "."
72 delimiter: ""
72 delimiter: ""
73 precision: 3
73 precision: 3
74 human:
74 human:
75 format:
75 format:
76 delimiter: ""
76 delimiter: ""
77 precision: 1
77 precision: 1
78 storage_units:
78 storage_units:
79 format: "%n %u"
79 format: "%n %u"
80 units:
80 units:
81 byte:
81 byte:
82 one: "Byte"
82 one: "Byte"
83 other: "Bytes"
83 other: "Bytes"
84 kb: "kB"
84 kb: "kB"
85 mb: "MB"
85 mb: "MB"
86 gb: "GB"
86 gb: "GB"
87 tb: "TB"
87 tb: "TB"
88
88
89
89
90 # Used in array.to_sentence.
90 # Used in array.to_sentence.
91 support:
91 support:
92 array:
92 array:
93 sentence_connector: "and"
93 sentence_connector: "and"
94 skip_last_comma: false
94 skip_last_comma: false
95
95
96 activerecord:
96 activerecord:
97 errors:
97 errors:
98 messages:
98 messages:
99 inclusion: "is not included in the list"
99 inclusion: "is not included in the list"
100 exclusion: "is reserved"
100 exclusion: "is reserved"
101 invalid: "is invalid"
101 invalid: "is invalid"
102 confirmation: "doesn't match confirmation"
102 confirmation: "doesn't match confirmation"
103 accepted: "must be accepted"
103 accepted: "must be accepted"
104 empty: "can't be empty"
104 empty: "can't be empty"
105 blank: "can't be blank"
105 blank: "can't be blank"
106 too_long: "is too long (maximum is {{count}} characters)"
106 too_long: "is too long (maximum is {{count}} characters)"
107 too_short: "is too short (minimum is {{count}} characters)"
107 too_short: "is too short (minimum is {{count}} characters)"
108 wrong_length: "is the wrong length (should be {{count}} characters)"
108 wrong_length: "is the wrong length (should be {{count}} characters)"
109 taken: "has already been taken"
109 taken: "has already been taken"
110 not_a_number: "is not a number"
110 not_a_number: "is not a number"
111 not_a_date: "is not a valid date"
111 not_a_date: "is not a valid date"
112 greater_than: "must be greater than {{count}}"
112 greater_than: "must be greater than {{count}}"
113 greater_than_or_equal_to: "must be greater than or equal to {{count}}"
113 greater_than_or_equal_to: "must be greater than or equal to {{count}}"
114 equal_to: "must be equal to {{count}}"
114 equal_to: "must be equal to {{count}}"
115 less_than: "must be less than {{count}}"
115 less_than: "must be less than {{count}}"
116 less_than_or_equal_to: "must be less than or equal to {{count}}"
116 less_than_or_equal_to: "must be less than or equal to {{count}}"
117 odd: "must be odd"
117 odd: "must be odd"
118 even: "must be even"
118 even: "must be even"
119 greater_than_start_date: "must be greater than start date"
119 greater_than_start_date: "must be greater than start date"
120 not_same_project: "doesn't belong to the same project"
120 not_same_project: "doesn't belong to the same project"
121 circular_dependency: "This relation would create a circular dependency"
121 circular_dependency: "This relation would create a circular dependency"
122 cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
122 cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
123
123
124 actionview_instancetag_blank_option: Please select
124 actionview_instancetag_blank_option: Please select
125
125
126 general_text_No: 'No'
126 general_text_No: 'No'
127 general_text_Yes: 'Yes'
127 general_text_Yes: 'Yes'
128 general_text_no: 'no'
128 general_text_no: 'no'
129 general_text_yes: 'yes'
129 general_text_yes: 'yes'
130 general_lang_name: 'English'
130 general_lang_name: 'English'
131 general_csv_separator: ','
131 general_csv_separator: ','
132 general_csv_decimal_separator: '.'
132 general_csv_decimal_separator: '.'
133 general_csv_encoding: ISO-8859-1
133 general_csv_encoding: ISO-8859-1
134 general_pdf_encoding: ISO-8859-1
134 general_pdf_encoding: ISO-8859-1
135 general_first_day_of_week: '7'
135 general_first_day_of_week: '7'
136
136
137 notice_account_updated: Account was successfully updated.
137 notice_account_updated: Account was successfully updated.
138 notice_account_invalid_creditentials: Invalid user or password
138 notice_account_invalid_creditentials: Invalid user or password
139 notice_account_password_updated: Password was successfully updated.
139 notice_account_password_updated: Password was successfully updated.
140 notice_account_wrong_password: Wrong password
140 notice_account_wrong_password: Wrong password
141 notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you.
141 notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you.
142 notice_account_unknown_email: Unknown user.
142 notice_account_unknown_email: Unknown user.
143 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
143 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
144 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
144 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
145 notice_account_activated: Your account has been activated. You can now log in.
145 notice_account_activated: Your account has been activated. You can now log in.
146 notice_successful_create: Successful creation.
146 notice_successful_create: Successful creation.
147 notice_successful_update: Successful update.
147 notice_successful_update: Successful update.
148 notice_successful_delete: Successful deletion.
148 notice_successful_delete: Successful deletion.
149 notice_successful_connection: Successful connection.
149 notice_successful_connection: Successful connection.
150 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
150 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
151 notice_locking_conflict: Data has been updated by another user.
151 notice_locking_conflict: Data has been updated by another user.
152 notice_not_authorized: You are not authorized to access this page.
152 notice_not_authorized: You are not authorized to access this page.
153 notice_not_authorized_archived_project: The project you're trying to access has been archived.
153 notice_not_authorized_archived_project: The project you're trying to access has been archived.
154 notice_email_sent: "An email was sent to {{value}}"
154 notice_email_sent: "An email was sent to {{value}}"
155 notice_email_error: "An error occurred while sending mail ({{value}})"
155 notice_email_error: "An error occurred while sending mail ({{value}})"
156 notice_feeds_access_key_reseted: Your RSS access key was reset.
156 notice_feeds_access_key_reseted: Your RSS access key was reset.
157 notice_api_access_key_reseted: Your API access key was reset.
157 notice_api_access_key_reseted: Your API access key was reset.
158 notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}."
158 notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}."
159 notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
159 notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
160 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
160 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
161 notice_account_pending: "Your account was created and is now pending administrator approval."
161 notice_account_pending: "Your account was created and is now pending administrator approval."
162 notice_default_data_loaded: Default configuration successfully loaded.
162 notice_default_data_loaded: Default configuration successfully loaded.
163 notice_unable_delete_version: Unable to delete version.
163 notice_unable_delete_version: Unable to delete version.
164 notice_unable_delete_time_entry: Unable to delete time log entry.
164 notice_unable_delete_time_entry: Unable to delete time log entry.
165 notice_issue_done_ratios_updated: Issue done ratios updated.
165 notice_issue_done_ratios_updated: Issue done ratios updated.
166
166
167 error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}"
167 error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}"
168 error_scm_not_found: "The entry or revision was not found in the repository."
168 error_scm_not_found: "The entry or revision was not found in the repository."
169 error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}"
169 error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}"
170 error_scm_annotate: "The entry does not exist or can not be annotated."
170 error_scm_annotate: "The entry does not exist or can not be annotated."
171 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
171 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
172 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
172 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
173 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
173 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
174 error_can_not_delete_custom_field: Unable to delete custom field
174 error_can_not_delete_custom_field: Unable to delete custom field
175 error_can_not_delete_tracker: "This tracker contains issues and can't be deleted."
175 error_can_not_delete_tracker: "This tracker contains issues and can't be deleted."
176 error_can_not_remove_role: "This role is in use and can not be deleted."
176 error_can_not_remove_role: "This role is in use and can not be deleted."
177 error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
177 error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
178 error_can_not_archive_project: This project can not be archived
178 error_can_not_archive_project: This project can not be archived
179 error_issue_done_ratios_not_updated: "Issue done ratios not updated."
179 error_issue_done_ratios_not_updated: "Issue done ratios not updated."
180 error_workflow_copy_source: 'Please select a source tracker or role'
180 error_workflow_copy_source: 'Please select a source tracker or role'
181 error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
181 error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
182 error_unable_delete_issue_status: 'Unable to delete issue status'
182 error_unable_delete_issue_status: 'Unable to delete issue status'
183 error_unable_to_connect: "Unable to connect ({{value}})"
183 error_unable_to_connect: "Unable to connect ({{value}})"
184 warning_attachments_not_saved: "{{count}} file(s) could not be saved."
184 warning_attachments_not_saved: "{{count}} file(s) could not be saved."
185
185
186 mail_subject_lost_password: "Your {{value}} password"
186 mail_subject_lost_password: "Your {{value}} password"
187 mail_body_lost_password: 'To change your password, click on the following link:'
187 mail_body_lost_password: 'To change your password, click on the following link:'
188 mail_subject_register: "Your {{value}} account activation"
188 mail_subject_register: "Your {{value}} account activation"
189 mail_body_register: 'To activate your account, click on the following link:'
189 mail_body_register: 'To activate your account, click on the following link:'
190 mail_body_account_information_external: "You can use your {{value}} account to log in."
190 mail_body_account_information_external: "You can use your {{value}} account to log in."
191 mail_body_account_information: Your account information
191 mail_body_account_information: Your account information
192 mail_subject_account_activation_request: "{{value}} account activation request"
192 mail_subject_account_activation_request: "{{value}} account activation request"
193 mail_body_account_activation_request: "A new user ({{value}}) has registered. The account is pending your approval:"
193 mail_body_account_activation_request: "A new user ({{value}}) has registered. The account is pending your approval:"
194 mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days"
194 mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days"
195 mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:"
195 mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:"
196 mail_subject_wiki_content_added: "'{{id}}' wiki page has been added"
196 mail_subject_wiki_content_added: "'{{id}}' wiki page has been added"
197 mail_body_wiki_content_added: "The '{{id}}' wiki page has been added by {{author}}."
197 mail_body_wiki_content_added: "The '{{id}}' wiki page has been added by {{author}}."
198 mail_subject_wiki_content_updated: "'{{id}}' wiki page has been updated"
198 mail_subject_wiki_content_updated: "'{{id}}' wiki page has been updated"
199 mail_body_wiki_content_updated: "The '{{id}}' wiki page has been updated by {{author}}."
199 mail_body_wiki_content_updated: "The '{{id}}' wiki page has been updated by {{author}}."
200
200
201 gui_validation_error: 1 error
201 gui_validation_error: 1 error
202 gui_validation_error_plural: "{{count}} errors"
202 gui_validation_error_plural: "{{count}} errors"
203
203
204 field_name: Name
204 field_name: Name
205 field_description: Description
205 field_description: Description
206 field_summary: Summary
206 field_summary: Summary
207 field_is_required: Required
207 field_is_required: Required
208 field_firstname: Firstname
208 field_firstname: Firstname
209 field_lastname: Lastname
209 field_lastname: Lastname
210 field_mail: Email
210 field_mail: Email
211 field_filename: File
211 field_filename: File
212 field_filesize: Size
212 field_filesize: Size
213 field_downloads: Downloads
213 field_downloads: Downloads
214 field_author: Author
214 field_author: Author
215 field_created_on: Created
215 field_created_on: Created
216 field_updated_on: Updated
216 field_updated_on: Updated
217 field_field_format: Format
217 field_field_format: Format
218 field_is_for_all: For all projects
218 field_is_for_all: For all projects
219 field_possible_values: Possible values
219 field_possible_values: Possible values
220 field_regexp: Regular expression
220 field_regexp: Regular expression
221 field_min_length: Minimum length
221 field_min_length: Minimum length
222 field_max_length: Maximum length
222 field_max_length: Maximum length
223 field_value: Value
223 field_value: Value
224 field_category: Category
224 field_category: Category
225 field_title: Title
225 field_title: Title
226 field_project: Project
226 field_project: Project
227 field_issue: Issue
227 field_issue: Issue
228 field_status: Status
228 field_status: Status
229 field_notes: Notes
229 field_notes: Notes
230 field_is_closed: Issue closed
230 field_is_closed: Issue closed
231 field_is_default: Default value
231 field_is_default: Default value
232 field_tracker: Tracker
232 field_tracker: Tracker
233 field_subject: Subject
233 field_subject: Subject
234 field_due_date: Due date
234 field_due_date: Due date
235 field_assigned_to: Assignee
235 field_assigned_to: Assignee
236 field_priority: Priority
236 field_priority: Priority
237 field_fixed_version: Target version
237 field_fixed_version: Target version
238 field_user: User
238 field_user: User
239 field_principal: Principal
239 field_principal: Principal
240 field_role: Role
240 field_role: Role
241 field_homepage: Homepage
241 field_homepage: Homepage
242 field_is_public: Public
242 field_is_public: Public
243 field_parent: Subproject of
243 field_parent: Subproject of
244 field_is_in_roadmap: Issues displayed in roadmap
244 field_is_in_roadmap: Issues displayed in roadmap
245 field_login: Login
245 field_login: Login
246 field_mail_notification: Email notifications
246 field_mail_notification: Email notifications
247 field_admin: Administrator
247 field_admin: Administrator
248 field_last_login_on: Last connection
248 field_last_login_on: Last connection
249 field_language: Language
249 field_language: Language
250 field_effective_date: Date
250 field_effective_date: Date
251 field_password: Password
251 field_password: Password
252 field_new_password: New password
252 field_new_password: New password
253 field_password_confirmation: Confirmation
253 field_password_confirmation: Confirmation
254 field_version: Version
254 field_version: Version
255 field_type: Type
255 field_type: Type
256 field_host: Host
256 field_host: Host
257 field_port: Port
257 field_port: Port
258 field_account: Account
258 field_account: Account
259 field_base_dn: Base DN
259 field_base_dn: Base DN
260 field_attr_login: Login attribute
260 field_attr_login: Login attribute
261 field_attr_firstname: Firstname attribute
261 field_attr_firstname: Firstname attribute
262 field_attr_lastname: Lastname attribute
262 field_attr_lastname: Lastname attribute
263 field_attr_mail: Email attribute
263 field_attr_mail: Email attribute
264 field_onthefly: On-the-fly user creation
264 field_onthefly: On-the-fly user creation
265 field_start_date: Start date
265 field_start_date: Start date
266 field_done_ratio: % Done
266 field_done_ratio: % Done
267 field_auth_source: Authentication mode
267 field_auth_source: Authentication mode
268 field_hide_mail: Hide my email address
268 field_hide_mail: Hide my email address
269 field_comments: Comment
269 field_comments: Comment
270 field_url: URL
270 field_url: URL
271 field_start_page: Start page
271 field_start_page: Start page
272 field_subproject: Subproject
272 field_subproject: Subproject
273 field_hours: Hours
273 field_hours: Hours
274 field_activity: Activity
274 field_activity: Activity
275 field_spent_on: Date
275 field_spent_on: Date
276 field_identifier: Identifier
276 field_identifier: Identifier
277 field_is_filter: Used as a filter
277 field_is_filter: Used as a filter
278 field_issue_to: Related issue
278 field_issue_to: Related issue
279 field_delay: Delay
279 field_delay: Delay
280 field_assignable: Issues can be assigned to this role
280 field_assignable: Issues can be assigned to this role
281 field_redirect_existing_links: Redirect existing links
281 field_redirect_existing_links: Redirect existing links
282 field_estimated_hours: Estimated time
282 field_estimated_hours: Estimated time
283 field_column_names: Columns
283 field_column_names: Columns
284 field_time_entries: Log time
284 field_time_entries: Log time
285 field_time_zone: Time zone
285 field_time_zone: Time zone
286 field_searchable: Searchable
286 field_searchable: Searchable
287 field_default_value: Default value
287 field_default_value: Default value
288 field_comments_sorting: Display comments
288 field_comments_sorting: Display comments
289 field_parent_title: Parent page
289 field_parent_title: Parent page
290 field_editable: Editable
290 field_editable: Editable
291 field_watcher: Watcher
291 field_watcher: Watcher
292 field_identity_url: OpenID URL
292 field_identity_url: OpenID URL
293 field_content: Content
293 field_content: Content
294 field_group_by: Group results by
294 field_group_by: Group results by
295 field_sharing: Sharing
295 field_sharing: Sharing
296 field_parent_issue: Parent task
296 field_parent_issue: Parent task
297 field_member_of_group: "Assignee's group"
297 field_member_of_group: "Assignee's group"
298 field_assigned_to_role: "Assignee's role"
298 field_assigned_to_role: "Assignee's role"
299 field_text: Text field
299 field_text: Text field
300
300
301 setting_app_title: Application title
301 setting_app_title: Application title
302 setting_app_subtitle: Application subtitle
302 setting_app_subtitle: Application subtitle
303 setting_welcome_text: Welcome text
303 setting_welcome_text: Welcome text
304 setting_default_language: Default language
304 setting_default_language: Default language
305 setting_login_required: Authentication required
305 setting_login_required: Authentication required
306 setting_self_registration: Self-registration
306 setting_self_registration: Self-registration
307 setting_attachment_max_size: Attachment max. size
307 setting_attachment_max_size: Attachment max. size
308 setting_issues_export_limit: Issues export limit
308 setting_issues_export_limit: Issues export limit
309 setting_mail_from: Emission email address
309 setting_mail_from: Emission email address
310 setting_bcc_recipients: Blind carbon copy recipients (bcc)
310 setting_bcc_recipients: Blind carbon copy recipients (bcc)
311 setting_plain_text_mail: Plain text mail (no HTML)
311 setting_plain_text_mail: Plain text mail (no HTML)
312 setting_host_name: Host name and path
312 setting_host_name: Host name and path
313 setting_text_formatting: Text formatting
313 setting_text_formatting: Text formatting
314 setting_wiki_compression: Wiki history compression
314 setting_wiki_compression: Wiki history compression
315 setting_feeds_limit: Feed content limit
315 setting_feeds_limit: Feed content limit
316 setting_default_projects_public: New projects are public by default
316 setting_default_projects_public: New projects are public by default
317 setting_autofetch_changesets: Autofetch commits
317 setting_autofetch_changesets: Autofetch commits
318 setting_sys_api_enabled: Enable WS for repository management
318 setting_sys_api_enabled: Enable WS for repository management
319 setting_commit_ref_keywords: Referencing keywords
319 setting_commit_ref_keywords: Referencing keywords
320 setting_commit_fix_keywords: Fixing keywords
320 setting_commit_fix_keywords: Fixing keywords
321 setting_autologin: Autologin
321 setting_autologin: Autologin
322 setting_date_format: Date format
322 setting_date_format: Date format
323 setting_time_format: Time format
323 setting_time_format: Time format
324 setting_cross_project_issue_relations: Allow cross-project issue relations
324 setting_cross_project_issue_relations: Allow cross-project issue relations
325 setting_issue_list_default_columns: Default columns displayed on the issue list
325 setting_issue_list_default_columns: Default columns displayed on the issue list
326 setting_repositories_encodings: Repositories encodings
326 setting_repositories_encodings: Repositories encodings
327 setting_commit_logs_encoding: Commit messages encoding
327 setting_commit_logs_encoding: Commit messages encoding
328 setting_emails_header: Emails header
328 setting_emails_footer: Emails footer
329 setting_emails_footer: Emails footer
329 setting_protocol: Protocol
330 setting_protocol: Protocol
330 setting_per_page_options: Objects per page options
331 setting_per_page_options: Objects per page options
331 setting_user_format: Users display format
332 setting_user_format: Users display format
332 setting_activity_days_default: Days displayed on project activity
333 setting_activity_days_default: Days displayed on project activity
333 setting_display_subprojects_issues: Display subprojects issues on main projects by default
334 setting_display_subprojects_issues: Display subprojects issues on main projects by default
334 setting_enabled_scm: Enabled SCM
335 setting_enabled_scm: Enabled SCM
335 setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
336 setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
336 setting_mail_handler_api_enabled: Enable WS for incoming emails
337 setting_mail_handler_api_enabled: Enable WS for incoming emails
337 setting_mail_handler_api_key: API key
338 setting_mail_handler_api_key: API key
338 setting_sequential_project_identifiers: Generate sequential project identifiers
339 setting_sequential_project_identifiers: Generate sequential project identifiers
339 setting_gravatar_enabled: Use Gravatar user icons
340 setting_gravatar_enabled: Use Gravatar user icons
340 setting_gravatar_default: Default Gravatar image
341 setting_gravatar_default: Default Gravatar image
341 setting_diff_max_lines_displayed: Max number of diff lines displayed
342 setting_diff_max_lines_displayed: Max number of diff lines displayed
342 setting_file_max_size_displayed: Max size of text files displayed inline
343 setting_file_max_size_displayed: Max size of text files displayed inline
343 setting_repository_log_display_limit: Maximum number of revisions displayed on file log
344 setting_repository_log_display_limit: Maximum number of revisions displayed on file log
344 setting_openid: Allow OpenID login and registration
345 setting_openid: Allow OpenID login and registration
345 setting_password_min_length: Minimum password length
346 setting_password_min_length: Minimum password length
346 setting_new_project_user_role_id: Role given to a non-admin user who creates a project
347 setting_new_project_user_role_id: Role given to a non-admin user who creates a project
347 setting_default_projects_modules: Default enabled modules for new projects
348 setting_default_projects_modules: Default enabled modules for new projects
348 setting_issue_done_ratio: Calculate the issue done ratio with
349 setting_issue_done_ratio: Calculate the issue done ratio with
349 setting_issue_done_ratio_issue_field: Use the issue field
350 setting_issue_done_ratio_issue_field: Use the issue field
350 setting_issue_done_ratio_issue_status: Use the issue status
351 setting_issue_done_ratio_issue_status: Use the issue status
351 setting_start_of_week: Start calendars on
352 setting_start_of_week: Start calendars on
352 setting_rest_api_enabled: Enable REST web service
353 setting_rest_api_enabled: Enable REST web service
353 setting_cache_formatted_text: Cache formatted text
354 setting_cache_formatted_text: Cache formatted text
354 setting_default_notification_option: Default notification option
355 setting_default_notification_option: Default notification option
355
356
356 permission_add_project: Create project
357 permission_add_project: Create project
357 permission_add_subprojects: Create subprojects
358 permission_add_subprojects: Create subprojects
358 permission_edit_project: Edit project
359 permission_edit_project: Edit project
359 permission_select_project_modules: Select project modules
360 permission_select_project_modules: Select project modules
360 permission_manage_members: Manage members
361 permission_manage_members: Manage members
361 permission_manage_project_activities: Manage project activities
362 permission_manage_project_activities: Manage project activities
362 permission_manage_versions: Manage versions
363 permission_manage_versions: Manage versions
363 permission_manage_categories: Manage issue categories
364 permission_manage_categories: Manage issue categories
364 permission_view_issues: View Issues
365 permission_view_issues: View Issues
365 permission_add_issues: Add issues
366 permission_add_issues: Add issues
366 permission_edit_issues: Edit issues
367 permission_edit_issues: Edit issues
367 permission_manage_issue_relations: Manage issue relations
368 permission_manage_issue_relations: Manage issue relations
368 permission_add_issue_notes: Add notes
369 permission_add_issue_notes: Add notes
369 permission_edit_issue_notes: Edit notes
370 permission_edit_issue_notes: Edit notes
370 permission_edit_own_issue_notes: Edit own notes
371 permission_edit_own_issue_notes: Edit own notes
371 permission_move_issues: Move issues
372 permission_move_issues: Move issues
372 permission_delete_issues: Delete issues
373 permission_delete_issues: Delete issues
373 permission_manage_public_queries: Manage public queries
374 permission_manage_public_queries: Manage public queries
374 permission_save_queries: Save queries
375 permission_save_queries: Save queries
375 permission_view_gantt: View gantt chart
376 permission_view_gantt: View gantt chart
376 permission_view_calendar: View calendar
377 permission_view_calendar: View calendar
377 permission_view_issue_watchers: View watchers list
378 permission_view_issue_watchers: View watchers list
378 permission_add_issue_watchers: Add watchers
379 permission_add_issue_watchers: Add watchers
379 permission_delete_issue_watchers: Delete watchers
380 permission_delete_issue_watchers: Delete watchers
380 permission_log_time: Log spent time
381 permission_log_time: Log spent time
381 permission_view_time_entries: View spent time
382 permission_view_time_entries: View spent time
382 permission_edit_time_entries: Edit time logs
383 permission_edit_time_entries: Edit time logs
383 permission_edit_own_time_entries: Edit own time logs
384 permission_edit_own_time_entries: Edit own time logs
384 permission_manage_news: Manage news
385 permission_manage_news: Manage news
385 permission_comment_news: Comment news
386 permission_comment_news: Comment news
386 permission_manage_documents: Manage documents
387 permission_manage_documents: Manage documents
387 permission_view_documents: View documents
388 permission_view_documents: View documents
388 permission_manage_files: Manage files
389 permission_manage_files: Manage files
389 permission_view_files: View files
390 permission_view_files: View files
390 permission_manage_wiki: Manage wiki
391 permission_manage_wiki: Manage wiki
391 permission_rename_wiki_pages: Rename wiki pages
392 permission_rename_wiki_pages: Rename wiki pages
392 permission_delete_wiki_pages: Delete wiki pages
393 permission_delete_wiki_pages: Delete wiki pages
393 permission_view_wiki_pages: View wiki
394 permission_view_wiki_pages: View wiki
394 permission_view_wiki_edits: View wiki history
395 permission_view_wiki_edits: View wiki history
395 permission_edit_wiki_pages: Edit wiki pages
396 permission_edit_wiki_pages: Edit wiki pages
396 permission_delete_wiki_pages_attachments: Delete attachments
397 permission_delete_wiki_pages_attachments: Delete attachments
397 permission_protect_wiki_pages: Protect wiki pages
398 permission_protect_wiki_pages: Protect wiki pages
398 permission_manage_repository: Manage repository
399 permission_manage_repository: Manage repository
399 permission_browse_repository: Browse repository
400 permission_browse_repository: Browse repository
400 permission_view_changesets: View changesets
401 permission_view_changesets: View changesets
401 permission_commit_access: Commit access
402 permission_commit_access: Commit access
402 permission_manage_boards: Manage boards
403 permission_manage_boards: Manage boards
403 permission_view_messages: View messages
404 permission_view_messages: View messages
404 permission_add_messages: Post messages
405 permission_add_messages: Post messages
405 permission_edit_messages: Edit messages
406 permission_edit_messages: Edit messages
406 permission_edit_own_messages: Edit own messages
407 permission_edit_own_messages: Edit own messages
407 permission_delete_messages: Delete messages
408 permission_delete_messages: Delete messages
408 permission_delete_own_messages: Delete own messages
409 permission_delete_own_messages: Delete own messages
409 permission_export_wiki_pages: Export wiki pages
410 permission_export_wiki_pages: Export wiki pages
410 permission_manage_subtasks: Manage subtasks
411 permission_manage_subtasks: Manage subtasks
411
412
412 project_module_issue_tracking: Issue tracking
413 project_module_issue_tracking: Issue tracking
413 project_module_time_tracking: Time tracking
414 project_module_time_tracking: Time tracking
414 project_module_news: News
415 project_module_news: News
415 project_module_documents: Documents
416 project_module_documents: Documents
416 project_module_files: Files
417 project_module_files: Files
417 project_module_wiki: Wiki
418 project_module_wiki: Wiki
418 project_module_repository: Repository
419 project_module_repository: Repository
419 project_module_boards: Boards
420 project_module_boards: Boards
420 project_module_calendar: Calendar
421 project_module_calendar: Calendar
421 project_module_gantt: Gantt
422 project_module_gantt: Gantt
422
423
423 label_user: User
424 label_user: User
424 label_user_plural: Users
425 label_user_plural: Users
425 label_user_new: New user
426 label_user_new: New user
426 label_user_anonymous: Anonymous
427 label_user_anonymous: Anonymous
427 label_project: Project
428 label_project: Project
428 label_project_new: New project
429 label_project_new: New project
429 label_project_plural: Projects
430 label_project_plural: Projects
430 label_x_projects:
431 label_x_projects:
431 zero: no projects
432 zero: no projects
432 one: 1 project
433 one: 1 project
433 other: "{{count}} projects"
434 other: "{{count}} projects"
434 label_project_all: All Projects
435 label_project_all: All Projects
435 label_project_latest: Latest projects
436 label_project_latest: Latest projects
436 label_issue: Issue
437 label_issue: Issue
437 label_issue_new: New issue
438 label_issue_new: New issue
438 label_issue_plural: Issues
439 label_issue_plural: Issues
439 label_issue_view_all: View all issues
440 label_issue_view_all: View all issues
440 label_issues_by: "Issues by {{value}}"
441 label_issues_by: "Issues by {{value}}"
441 label_issue_added: Issue added
442 label_issue_added: Issue added
442 label_issue_updated: Issue updated
443 label_issue_updated: Issue updated
443 label_document: Document
444 label_document: Document
444 label_document_new: New document
445 label_document_new: New document
445 label_document_plural: Documents
446 label_document_plural: Documents
446 label_document_added: Document added
447 label_document_added: Document added
447 label_role: Role
448 label_role: Role
448 label_role_plural: Roles
449 label_role_plural: Roles
449 label_role_new: New role
450 label_role_new: New role
450 label_role_and_permissions: Roles and permissions
451 label_role_and_permissions: Roles and permissions
451 label_member: Member
452 label_member: Member
452 label_member_new: New member
453 label_member_new: New member
453 label_member_plural: Members
454 label_member_plural: Members
454 label_tracker: Tracker
455 label_tracker: Tracker
455 label_tracker_plural: Trackers
456 label_tracker_plural: Trackers
456 label_tracker_new: New tracker
457 label_tracker_new: New tracker
457 label_workflow: Workflow
458 label_workflow: Workflow
458 label_issue_status: Issue status
459 label_issue_status: Issue status
459 label_issue_status_plural: Issue statuses
460 label_issue_status_plural: Issue statuses
460 label_issue_status_new: New status
461 label_issue_status_new: New status
461 label_issue_category: Issue category
462 label_issue_category: Issue category
462 label_issue_category_plural: Issue categories
463 label_issue_category_plural: Issue categories
463 label_issue_category_new: New category
464 label_issue_category_new: New category
464 label_custom_field: Custom field
465 label_custom_field: Custom field
465 label_custom_field_plural: Custom fields
466 label_custom_field_plural: Custom fields
466 label_custom_field_new: New custom field
467 label_custom_field_new: New custom field
467 label_enumerations: Enumerations
468 label_enumerations: Enumerations
468 label_enumeration_new: New value
469 label_enumeration_new: New value
469 label_information: Information
470 label_information: Information
470 label_information_plural: Information
471 label_information_plural: Information
471 label_please_login: Please log in
472 label_please_login: Please log in
472 label_register: Register
473 label_register: Register
473 label_login_with_open_id_option: or login with OpenID
474 label_login_with_open_id_option: or login with OpenID
474 label_password_lost: Lost password
475 label_password_lost: Lost password
475 label_home: Home
476 label_home: Home
476 label_my_page: My page
477 label_my_page: My page
477 label_my_account: My account
478 label_my_account: My account
478 label_my_projects: My projects
479 label_my_projects: My projects
479 label_my_page_block: My page block
480 label_my_page_block: My page block
480 label_administration: Administration
481 label_administration: Administration
481 label_login: Sign in
482 label_login: Sign in
482 label_logout: Sign out
483 label_logout: Sign out
483 label_help: Help
484 label_help: Help
484 label_reported_issues: Reported issues
485 label_reported_issues: Reported issues
485 label_assigned_to_me_issues: Issues assigned to me
486 label_assigned_to_me_issues: Issues assigned to me
486 label_last_login: Last connection
487 label_last_login: Last connection
487 label_registered_on: Registered on
488 label_registered_on: Registered on
488 label_activity: Activity
489 label_activity: Activity
489 label_overall_activity: Overall activity
490 label_overall_activity: Overall activity
490 label_user_activity: "{{value}}'s activity"
491 label_user_activity: "{{value}}'s activity"
491 label_new: New
492 label_new: New
492 label_logged_as: Logged in as
493 label_logged_as: Logged in as
493 label_environment: Environment
494 label_environment: Environment
494 label_authentication: Authentication
495 label_authentication: Authentication
495 label_auth_source: Authentication mode
496 label_auth_source: Authentication mode
496 label_auth_source_new: New authentication mode
497 label_auth_source_new: New authentication mode
497 label_auth_source_plural: Authentication modes
498 label_auth_source_plural: Authentication modes
498 label_subproject_plural: Subprojects
499 label_subproject_plural: Subprojects
499 label_subproject_new: New subproject
500 label_subproject_new: New subproject
500 label_and_its_subprojects: "{{value}} and its subprojects"
501 label_and_its_subprojects: "{{value}} and its subprojects"
501 label_min_max_length: Min - Max length
502 label_min_max_length: Min - Max length
502 label_list: List
503 label_list: List
503 label_date: Date
504 label_date: Date
504 label_integer: Integer
505 label_integer: Integer
505 label_float: Float
506 label_float: Float
506 label_boolean: Boolean
507 label_boolean: Boolean
507 label_string: Text
508 label_string: Text
508 label_text: Long text
509 label_text: Long text
509 label_attribute: Attribute
510 label_attribute: Attribute
510 label_attribute_plural: Attributes
511 label_attribute_plural: Attributes
511 label_download: "{{count}} Download"
512 label_download: "{{count}} Download"
512 label_download_plural: "{{count}} Downloads"
513 label_download_plural: "{{count}} Downloads"
513 label_no_data: No data to display
514 label_no_data: No data to display
514 label_change_status: Change status
515 label_change_status: Change status
515 label_history: History
516 label_history: History
516 label_attachment: File
517 label_attachment: File
517 label_attachment_new: New file
518 label_attachment_new: New file
518 label_attachment_delete: Delete file
519 label_attachment_delete: Delete file
519 label_attachment_plural: Files
520 label_attachment_plural: Files
520 label_file_added: File added
521 label_file_added: File added
521 label_report: Report
522 label_report: Report
522 label_report_plural: Reports
523 label_report_plural: Reports
523 label_news: News
524 label_news: News
524 label_news_new: Add news
525 label_news_new: Add news
525 label_news_plural: News
526 label_news_plural: News
526 label_news_latest: Latest news
527 label_news_latest: Latest news
527 label_news_view_all: View all news
528 label_news_view_all: View all news
528 label_news_added: News added
529 label_news_added: News added
529 label_settings: Settings
530 label_settings: Settings
530 label_overview: Overview
531 label_overview: Overview
531 label_version: Version
532 label_version: Version
532 label_version_new: New version
533 label_version_new: New version
533 label_version_plural: Versions
534 label_version_plural: Versions
534 label_close_versions: Close completed versions
535 label_close_versions: Close completed versions
535 label_confirmation: Confirmation
536 label_confirmation: Confirmation
536 label_export_to: 'Also available in:'
537 label_export_to: 'Also available in:'
537 label_read: Read...
538 label_read: Read...
538 label_public_projects: Public projects
539 label_public_projects: Public projects
539 label_open_issues: open
540 label_open_issues: open
540 label_open_issues_plural: open
541 label_open_issues_plural: open
541 label_closed_issues: closed
542 label_closed_issues: closed
542 label_closed_issues_plural: closed
543 label_closed_issues_plural: closed
543 label_x_open_issues_abbr_on_total:
544 label_x_open_issues_abbr_on_total:
544 zero: 0 open / {{total}}
545 zero: 0 open / {{total}}
545 one: 1 open / {{total}}
546 one: 1 open / {{total}}
546 other: "{{count}} open / {{total}}"
547 other: "{{count}} open / {{total}}"
547 label_x_open_issues_abbr:
548 label_x_open_issues_abbr:
548 zero: 0 open
549 zero: 0 open
549 one: 1 open
550 one: 1 open
550 other: "{{count}} open"
551 other: "{{count}} open"
551 label_x_closed_issues_abbr:
552 label_x_closed_issues_abbr:
552 zero: 0 closed
553 zero: 0 closed
553 one: 1 closed
554 one: 1 closed
554 other: "{{count}} closed"
555 other: "{{count}} closed"
555 label_total: Total
556 label_total: Total
556 label_permissions: Permissions
557 label_permissions: Permissions
557 label_current_status: Current status
558 label_current_status: Current status
558 label_new_statuses_allowed: New statuses allowed
559 label_new_statuses_allowed: New statuses allowed
559 label_all: all
560 label_all: all
560 label_none: none
561 label_none: none
561 label_nobody: nobody
562 label_nobody: nobody
562 label_next: Next
563 label_next: Next
563 label_previous: Previous
564 label_previous: Previous
564 label_used_by: Used by
565 label_used_by: Used by
565 label_details: Details
566 label_details: Details
566 label_add_note: Add a note
567 label_add_note: Add a note
567 label_per_page: Per page
568 label_per_page: Per page
568 label_calendar: Calendar
569 label_calendar: Calendar
569 label_months_from: months from
570 label_months_from: months from
570 label_gantt: Gantt
571 label_gantt: Gantt
571 label_internal: Internal
572 label_internal: Internal
572 label_last_changes: "last {{count}} changes"
573 label_last_changes: "last {{count}} changes"
573 label_change_view_all: View all changes
574 label_change_view_all: View all changes
574 label_personalize_page: Personalize this page
575 label_personalize_page: Personalize this page
575 label_comment: Comment
576 label_comment: Comment
576 label_comment_plural: Comments
577 label_comment_plural: Comments
577 label_x_comments:
578 label_x_comments:
578 zero: no comments
579 zero: no comments
579 one: 1 comment
580 one: 1 comment
580 other: "{{count}} comments"
581 other: "{{count}} comments"
581 label_comment_add: Add a comment
582 label_comment_add: Add a comment
582 label_comment_added: Comment added
583 label_comment_added: Comment added
583 label_comment_delete: Delete comments
584 label_comment_delete: Delete comments
584 label_query: Custom query
585 label_query: Custom query
585 label_query_plural: Custom queries
586 label_query_plural: Custom queries
586 label_query_new: New query
587 label_query_new: New query
587 label_filter_add: Add filter
588 label_filter_add: Add filter
588 label_filter_plural: Filters
589 label_filter_plural: Filters
589 label_equals: is
590 label_equals: is
590 label_not_equals: is not
591 label_not_equals: is not
591 label_in_less_than: in less than
592 label_in_less_than: in less than
592 label_in_more_than: in more than
593 label_in_more_than: in more than
593 label_greater_or_equal: '>='
594 label_greater_or_equal: '>='
594 label_less_or_equal: '<='
595 label_less_or_equal: '<='
595 label_in: in
596 label_in: in
596 label_today: today
597 label_today: today
597 label_all_time: all time
598 label_all_time: all time
598 label_yesterday: yesterday
599 label_yesterday: yesterday
599 label_this_week: this week
600 label_this_week: this week
600 label_last_week: last week
601 label_last_week: last week
601 label_last_n_days: "last {{count}} days"
602 label_last_n_days: "last {{count}} days"
602 label_this_month: this month
603 label_this_month: this month
603 label_last_month: last month
604 label_last_month: last month
604 label_this_year: this year
605 label_this_year: this year
605 label_date_range: Date range
606 label_date_range: Date range
606 label_less_than_ago: less than days ago
607 label_less_than_ago: less than days ago
607 label_more_than_ago: more than days ago
608 label_more_than_ago: more than days ago
608 label_ago: days ago
609 label_ago: days ago
609 label_contains: contains
610 label_contains: contains
610 label_not_contains: doesn't contain
611 label_not_contains: doesn't contain
611 label_day_plural: days
612 label_day_plural: days
612 label_repository: Repository
613 label_repository: Repository
613 label_repository_plural: Repositories
614 label_repository_plural: Repositories
614 label_browse: Browse
615 label_browse: Browse
615 label_modification: "{{count}} change"
616 label_modification: "{{count}} change"
616 label_modification_plural: "{{count}} changes"
617 label_modification_plural: "{{count}} changes"
617 label_branch: Branch
618 label_branch: Branch
618 label_tag: Tag
619 label_tag: Tag
619 label_revision: Revision
620 label_revision: Revision
620 label_revision_plural: Revisions
621 label_revision_plural: Revisions
621 label_revision_id: "Revision {{value}}"
622 label_revision_id: "Revision {{value}}"
622 label_associated_revisions: Associated revisions
623 label_associated_revisions: Associated revisions
623 label_added: added
624 label_added: added
624 label_modified: modified
625 label_modified: modified
625 label_copied: copied
626 label_copied: copied
626 label_renamed: renamed
627 label_renamed: renamed
627 label_deleted: deleted
628 label_deleted: deleted
628 label_latest_revision: Latest revision
629 label_latest_revision: Latest revision
629 label_latest_revision_plural: Latest revisions
630 label_latest_revision_plural: Latest revisions
630 label_view_revisions: View revisions
631 label_view_revisions: View revisions
631 label_view_all_revisions: View all revisions
632 label_view_all_revisions: View all revisions
632 label_max_size: Maximum size
633 label_max_size: Maximum size
633 label_sort_highest: Move to top
634 label_sort_highest: Move to top
634 label_sort_higher: Move up
635 label_sort_higher: Move up
635 label_sort_lower: Move down
636 label_sort_lower: Move down
636 label_sort_lowest: Move to bottom
637 label_sort_lowest: Move to bottom
637 label_roadmap: Roadmap
638 label_roadmap: Roadmap
638 label_roadmap_due_in: "Due in {{value}}"
639 label_roadmap_due_in: "Due in {{value}}"
639 label_roadmap_overdue: "{{value}} late"
640 label_roadmap_overdue: "{{value}} late"
640 label_roadmap_no_issues: No issues for this version
641 label_roadmap_no_issues: No issues for this version
641 label_search: Search
642 label_search: Search
642 label_result_plural: Results
643 label_result_plural: Results
643 label_all_words: All words
644 label_all_words: All words
644 label_wiki: Wiki
645 label_wiki: Wiki
645 label_wiki_edit: Wiki edit
646 label_wiki_edit: Wiki edit
646 label_wiki_edit_plural: Wiki edits
647 label_wiki_edit_plural: Wiki edits
647 label_wiki_page: Wiki page
648 label_wiki_page: Wiki page
648 label_wiki_page_plural: Wiki pages
649 label_wiki_page_plural: Wiki pages
649 label_index_by_title: Index by title
650 label_index_by_title: Index by title
650 label_index_by_date: Index by date
651 label_index_by_date: Index by date
651 label_current_version: Current version
652 label_current_version: Current version
652 label_preview: Preview
653 label_preview: Preview
653 label_feed_plural: Feeds
654 label_feed_plural: Feeds
654 label_changes_details: Details of all changes
655 label_changes_details: Details of all changes
655 label_issue_tracking: Issue tracking
656 label_issue_tracking: Issue tracking
656 label_spent_time: Spent time
657 label_spent_time: Spent time
657 label_overall_spent_time: Overall spent time
658 label_overall_spent_time: Overall spent time
658 label_f_hour: "{{value}} hour"
659 label_f_hour: "{{value}} hour"
659 label_f_hour_plural: "{{value}} hours"
660 label_f_hour_plural: "{{value}} hours"
660 label_time_tracking: Time tracking
661 label_time_tracking: Time tracking
661 label_change_plural: Changes
662 label_change_plural: Changes
662 label_statistics: Statistics
663 label_statistics: Statistics
663 label_commits_per_month: Commits per month
664 label_commits_per_month: Commits per month
664 label_commits_per_author: Commits per author
665 label_commits_per_author: Commits per author
665 label_view_diff: View differences
666 label_view_diff: View differences
666 label_diff_inline: inline
667 label_diff_inline: inline
667 label_diff_side_by_side: side by side
668 label_diff_side_by_side: side by side
668 label_options: Options
669 label_options: Options
669 label_copy_workflow_from: Copy workflow from
670 label_copy_workflow_from: Copy workflow from
670 label_permissions_report: Permissions report
671 label_permissions_report: Permissions report
671 label_watched_issues: Watched issues
672 label_watched_issues: Watched issues
672 label_related_issues: Related issues
673 label_related_issues: Related issues
673 label_applied_status: Applied status
674 label_applied_status: Applied status
674 label_loading: Loading...
675 label_loading: Loading...
675 label_relation_new: New relation
676 label_relation_new: New relation
676 label_relation_delete: Delete relation
677 label_relation_delete: Delete relation
677 label_relates_to: related to
678 label_relates_to: related to
678 label_duplicates: duplicates
679 label_duplicates: duplicates
679 label_duplicated_by: duplicated by
680 label_duplicated_by: duplicated by
680 label_blocks: blocks
681 label_blocks: blocks
681 label_blocked_by: blocked by
682 label_blocked_by: blocked by
682 label_precedes: precedes
683 label_precedes: precedes
683 label_follows: follows
684 label_follows: follows
684 label_end_to_start: end to start
685 label_end_to_start: end to start
685 label_end_to_end: end to end
686 label_end_to_end: end to end
686 label_start_to_start: start to start
687 label_start_to_start: start to start
687 label_start_to_end: start to end
688 label_start_to_end: start to end
688 label_stay_logged_in: Stay logged in
689 label_stay_logged_in: Stay logged in
689 label_disabled: disabled
690 label_disabled: disabled
690 label_show_completed_versions: Show completed versions
691 label_show_completed_versions: Show completed versions
691 label_me: me
692 label_me: me
692 label_board: Forum
693 label_board: Forum
693 label_board_new: New forum
694 label_board_new: New forum
694 label_board_plural: Forums
695 label_board_plural: Forums
695 label_board_locked: Locked
696 label_board_locked: Locked
696 label_board_sticky: Sticky
697 label_board_sticky: Sticky
697 label_topic_plural: Topics
698 label_topic_plural: Topics
698 label_message_plural: Messages
699 label_message_plural: Messages
699 label_message_last: Last message
700 label_message_last: Last message
700 label_message_new: New message
701 label_message_new: New message
701 label_message_posted: Message added
702 label_message_posted: Message added
702 label_reply_plural: Replies
703 label_reply_plural: Replies
703 label_send_information: Send account information to the user
704 label_send_information: Send account information to the user
704 label_year: Year
705 label_year: Year
705 label_month: Month
706 label_month: Month
706 label_week: Week
707 label_week: Week
707 label_date_from: From
708 label_date_from: From
708 label_date_to: To
709 label_date_to: To
709 label_language_based: Based on user's language
710 label_language_based: Based on user's language
710 label_sort_by: "Sort by {{value}}"
711 label_sort_by: "Sort by {{value}}"
711 label_send_test_email: Send a test email
712 label_send_test_email: Send a test email
712 label_feeds_access_key: RSS access key
713 label_feeds_access_key: RSS access key
713 label_missing_feeds_access_key: Missing a RSS access key
714 label_missing_feeds_access_key: Missing a RSS access key
714 label_feeds_access_key_created_on: "RSS access key created {{value}} ago"
715 label_feeds_access_key_created_on: "RSS access key created {{value}} ago"
715 label_module_plural: Modules
716 label_module_plural: Modules
716 label_added_time_by: "Added by {{author}} {{age}} ago"
717 label_added_time_by: "Added by {{author}} {{age}} ago"
717 label_updated_time_by: "Updated by {{author}} {{age}} ago"
718 label_updated_time_by: "Updated by {{author}} {{age}} ago"
718 label_updated_time: "Updated {{value}} ago"
719 label_updated_time: "Updated {{value}} ago"
719 label_jump_to_a_project: Jump to a project...
720 label_jump_to_a_project: Jump to a project...
720 label_file_plural: Files
721 label_file_plural: Files
721 label_changeset_plural: Changesets
722 label_changeset_plural: Changesets
722 label_default_columns: Default columns
723 label_default_columns: Default columns
723 label_no_change_option: (No change)
724 label_no_change_option: (No change)
724 label_bulk_edit_selected_issues: Bulk edit selected issues
725 label_bulk_edit_selected_issues: Bulk edit selected issues
725 label_theme: Theme
726 label_theme: Theme
726 label_default: Default
727 label_default: Default
727 label_search_titles_only: Search titles only
728 label_search_titles_only: Search titles only
728 label_user_mail_option_all: "For any event on all my projects"
729 label_user_mail_option_all: "For any event on all my projects"
729 label_user_mail_option_selected: "For any event on the selected projects only..."
730 label_user_mail_option_selected: "For any event on the selected projects only..."
730 label_user_mail_option_none: "No events"
731 label_user_mail_option_none: "No events"
731 label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in"
732 label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in"
732 label_user_mail_option_only_assigned: "Only for things I am assigned to"
733 label_user_mail_option_only_assigned: "Only for things I am assigned to"
733 label_user_mail_option_only_owner: "Only for things I am the owner of"
734 label_user_mail_option_only_owner: "Only for things I am the owner of"
734 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
735 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
735 label_registration_activation_by_email: account activation by email
736 label_registration_activation_by_email: account activation by email
736 label_registration_manual_activation: manual account activation
737 label_registration_manual_activation: manual account activation
737 label_registration_automatic_activation: automatic account activation
738 label_registration_automatic_activation: automatic account activation
738 label_display_per_page: "Per page: {{value}}"
739 label_display_per_page: "Per page: {{value}}"
739 label_age: Age
740 label_age: Age
740 label_change_properties: Change properties
741 label_change_properties: Change properties
741 label_general: General
742 label_general: General
742 label_more: More
743 label_more: More
743 label_scm: SCM
744 label_scm: SCM
744 label_plugins: Plugins
745 label_plugins: Plugins
745 label_ldap_authentication: LDAP authentication
746 label_ldap_authentication: LDAP authentication
746 label_downloads_abbr: D/L
747 label_downloads_abbr: D/L
747 label_optional_description: Optional description
748 label_optional_description: Optional description
748 label_add_another_file: Add another file
749 label_add_another_file: Add another file
749 label_preferences: Preferences
750 label_preferences: Preferences
750 label_chronological_order: In chronological order
751 label_chronological_order: In chronological order
751 label_reverse_chronological_order: In reverse chronological order
752 label_reverse_chronological_order: In reverse chronological order
752 label_planning: Planning
753 label_planning: Planning
753 label_incoming_emails: Incoming emails
754 label_incoming_emails: Incoming emails
754 label_generate_key: Generate a key
755 label_generate_key: Generate a key
755 label_issue_watchers: Watchers
756 label_issue_watchers: Watchers
756 label_example: Example
757 label_example: Example
757 label_display: Display
758 label_display: Display
758 label_sort: Sort
759 label_sort: Sort
759 label_ascending: Ascending
760 label_ascending: Ascending
760 label_descending: Descending
761 label_descending: Descending
761 label_date_from_to: From {{start}} to {{end}}
762 label_date_from_to: From {{start}} to {{end}}
762 label_wiki_content_added: Wiki page added
763 label_wiki_content_added: Wiki page added
763 label_wiki_content_updated: Wiki page updated
764 label_wiki_content_updated: Wiki page updated
764 label_group: Group
765 label_group: Group
765 label_group_plural: Groups
766 label_group_plural: Groups
766 label_group_new: New group
767 label_group_new: New group
767 label_time_entry_plural: Spent time
768 label_time_entry_plural: Spent time
768 label_version_sharing_none: Not shared
769 label_version_sharing_none: Not shared
769 label_version_sharing_descendants: With subprojects
770 label_version_sharing_descendants: With subprojects
770 label_version_sharing_hierarchy: With project hierarchy
771 label_version_sharing_hierarchy: With project hierarchy
771 label_version_sharing_tree: With project tree
772 label_version_sharing_tree: With project tree
772 label_version_sharing_system: With all projects
773 label_version_sharing_system: With all projects
773 label_update_issue_done_ratios: Update issue done ratios
774 label_update_issue_done_ratios: Update issue done ratios
774 label_copy_source: Source
775 label_copy_source: Source
775 label_copy_target: Target
776 label_copy_target: Target
776 label_copy_same_as_target: Same as target
777 label_copy_same_as_target: Same as target
777 label_display_used_statuses_only: Only display statuses that are used by this tracker
778 label_display_used_statuses_only: Only display statuses that are used by this tracker
778 label_api_access_key: API access key
779 label_api_access_key: API access key
779 label_missing_api_access_key: Missing an API access key
780 label_missing_api_access_key: Missing an API access key
780 label_api_access_key_created_on: "API access key created {{value}} ago"
781 label_api_access_key_created_on: "API access key created {{value}} ago"
781 label_profile: Profile
782 label_profile: Profile
782 label_subtask_plural: Subtasks
783 label_subtask_plural: Subtasks
783 label_project_copy_notifications: Send email notifications during the project copy
784 label_project_copy_notifications: Send email notifications during the project copy
784 label_principal_search: "Search for user or group:"
785 label_principal_search: "Search for user or group:"
785 label_user_search: "Search for user:"
786 label_user_search: "Search for user:"
786
787
787 button_login: Login
788 button_login: Login
788 button_submit: Submit
789 button_submit: Submit
789 button_save: Save
790 button_save: Save
790 button_check_all: Check all
791 button_check_all: Check all
791 button_uncheck_all: Uncheck all
792 button_uncheck_all: Uncheck all
792 button_delete: Delete
793 button_delete: Delete
793 button_create: Create
794 button_create: Create
794 button_create_and_continue: Create and continue
795 button_create_and_continue: Create and continue
795 button_test: Test
796 button_test: Test
796 button_edit: Edit
797 button_edit: Edit
797 button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
798 button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
798 button_add: Add
799 button_add: Add
799 button_change: Change
800 button_change: Change
800 button_apply: Apply
801 button_apply: Apply
801 button_clear: Clear
802 button_clear: Clear
802 button_lock: Lock
803 button_lock: Lock
803 button_unlock: Unlock
804 button_unlock: Unlock
804 button_download: Download
805 button_download: Download
805 button_list: List
806 button_list: List
806 button_view: View
807 button_view: View
807 button_move: Move
808 button_move: Move
808 button_move_and_follow: Move and follow
809 button_move_and_follow: Move and follow
809 button_back: Back
810 button_back: Back
810 button_cancel: Cancel
811 button_cancel: Cancel
811 button_activate: Activate
812 button_activate: Activate
812 button_sort: Sort
813 button_sort: Sort
813 button_log_time: Log time
814 button_log_time: Log time
814 button_rollback: Rollback to this version
815 button_rollback: Rollback to this version
815 button_watch: Watch
816 button_watch: Watch
816 button_unwatch: Unwatch
817 button_unwatch: Unwatch
817 button_reply: Reply
818 button_reply: Reply
818 button_archive: Archive
819 button_archive: Archive
819 button_unarchive: Unarchive
820 button_unarchive: Unarchive
820 button_reset: Reset
821 button_reset: Reset
821 button_rename: Rename
822 button_rename: Rename
822 button_change_password: Change password
823 button_change_password: Change password
823 button_copy: Copy
824 button_copy: Copy
824 button_copy_and_follow: Copy and follow
825 button_copy_and_follow: Copy and follow
825 button_annotate: Annotate
826 button_annotate: Annotate
826 button_update: Update
827 button_update: Update
827 button_configure: Configure
828 button_configure: Configure
828 button_quote: Quote
829 button_quote: Quote
829 button_duplicate: Duplicate
830 button_duplicate: Duplicate
830 button_show: Show
831 button_show: Show
831
832
832 status_active: active
833 status_active: active
833 status_registered: registered
834 status_registered: registered
834 status_locked: locked
835 status_locked: locked
835
836
836 version_status_open: open
837 version_status_open: open
837 version_status_locked: locked
838 version_status_locked: locked
838 version_status_closed: closed
839 version_status_closed: closed
839
840
840 field_active: Active
841 field_active: Active
841
842
842 text_select_mail_notifications: Select actions for which email notifications should be sent.
843 text_select_mail_notifications: Select actions for which email notifications should be sent.
843 text_regexp_info: eg. ^[A-Z0-9]+$
844 text_regexp_info: eg. ^[A-Z0-9]+$
844 text_min_max_length_info: 0 means no restriction
845 text_min_max_length_info: 0 means no restriction
845 text_project_destroy_confirmation: Are you sure you want to delete this project and related data ?
846 text_project_destroy_confirmation: Are you sure you want to delete this project and related data ?
846 text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted."
847 text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted."
847 text_workflow_edit: Select a role and a tracker to edit the workflow
848 text_workflow_edit: Select a role and a tracker to edit the workflow
848 text_are_you_sure: Are you sure ?
849 text_are_you_sure: Are you sure ?
849 text_are_you_sure_with_children: "Delete issue and all child issues?"
850 text_are_you_sure_with_children: "Delete issue and all child issues?"
850 text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
851 text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
851 text_journal_set_to: "{{label}} set to {{value}}"
852 text_journal_set_to: "{{label}} set to {{value}}"
852 text_journal_deleted: "{{label}} deleted ({{old}})"
853 text_journal_deleted: "{{label}} deleted ({{old}})"
853 text_journal_added: "{{label}} {{value}} added"
854 text_journal_added: "{{label}} {{value}} added"
854 text_tip_issue_begin_day: issue beginning this day
855 text_tip_issue_begin_day: issue beginning this day
855 text_tip_issue_end_day: issue ending this day
856 text_tip_issue_end_day: issue ending this day
856 text_tip_issue_begin_end_day: issue beginning and ending this day
857 text_tip_issue_begin_end_day: issue beginning and ending this day
857 text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.<br />Once saved, the identifier can not be changed.'
858 text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.<br />Once saved, the identifier can not be changed.'
858 text_caracters_maximum: "{{count}} characters maximum."
859 text_caracters_maximum: "{{count}} characters maximum."
859 text_caracters_minimum: "Must be at least {{count}} characters long."
860 text_caracters_minimum: "Must be at least {{count}} characters long."
860 text_length_between: "Length between {{min}} and {{max}} characters."
861 text_length_between: "Length between {{min}} and {{max}} characters."
861 text_tracker_no_workflow: No workflow defined for this tracker
862 text_tracker_no_workflow: No workflow defined for this tracker
862 text_unallowed_characters: Unallowed characters
863 text_unallowed_characters: Unallowed characters
863 text_comma_separated: Multiple values allowed (comma separated).
864 text_comma_separated: Multiple values allowed (comma separated).
864 text_line_separated: Multiple values allowed (one line for each value).
865 text_line_separated: Multiple values allowed (one line for each value).
865 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
866 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
866 text_issue_added: "Issue {{id}} has been reported by {{author}}."
867 text_issue_added: "Issue {{id}} has been reported by {{author}}."
867 text_issue_updated: "Issue {{id}} has been updated by {{author}}."
868 text_issue_updated: "Issue {{id}} has been updated by {{author}}."
868 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
869 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
869 text_issue_category_destroy_question: "Some issues ({{count}}) are assigned to this category. What do you want to do ?"
870 text_issue_category_destroy_question: "Some issues ({{count}}) are assigned to this category. What do you want to do ?"
870 text_issue_category_destroy_assignments: Remove category assignments
871 text_issue_category_destroy_assignments: Remove category assignments
871 text_issue_category_reassign_to: Reassign issues to this category
872 text_issue_category_reassign_to: Reassign issues to this category
872 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)."
873 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)."
873 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."
874 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."
874 text_load_default_configuration: Load the default configuration
875 text_load_default_configuration: Load the default configuration
875 text_status_changed_by_changeset: "Applied in changeset {{value}}."
876 text_status_changed_by_changeset: "Applied in changeset {{value}}."
876 text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
877 text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
877 text_select_project_modules: 'Select modules to enable for this project:'
878 text_select_project_modules: 'Select modules to enable for this project:'
878 text_default_administrator_account_changed: Default administrator account changed
879 text_default_administrator_account_changed: Default administrator account changed
879 text_file_repository_writable: Attachments directory writable
880 text_file_repository_writable: Attachments directory writable
880 text_plugin_assets_writable: Plugin assets directory writable
881 text_plugin_assets_writable: Plugin assets directory writable
881 text_rmagick_available: RMagick available (optional)
882 text_rmagick_available: RMagick available (optional)
882 text_destroy_time_entries_question: "{{hours}} hours were reported on the issues you are about to delete. What do you want to do ?"
883 text_destroy_time_entries_question: "{{hours}} hours were reported on the issues you are about to delete. What do you want to do ?"
883 text_destroy_time_entries: Delete reported hours
884 text_destroy_time_entries: Delete reported hours
884 text_assign_time_entries_to_project: Assign reported hours to the project
885 text_assign_time_entries_to_project: Assign reported hours to the project
885 text_reassign_time_entries: 'Reassign reported hours to this issue:'
886 text_reassign_time_entries: 'Reassign reported hours to this issue:'
886 text_user_wrote: "{{value}} wrote:"
887 text_user_wrote: "{{value}} wrote:"
887 text_enumeration_destroy_question: "{{count}} objects are assigned to this value."
888 text_enumeration_destroy_question: "{{count}} objects are assigned to this value."
888 text_enumeration_category_reassign_to: 'Reassign them to this value:'
889 text_enumeration_category_reassign_to: 'Reassign them to this value:'
889 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."
890 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."
890 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."
891 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."
891 text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
892 text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
892 text_custom_field_possible_values_info: 'One line for each value'
893 text_custom_field_possible_values_info: 'One line for each value'
893 text_wiki_page_destroy_question: "This page has {{descendants}} child page(s) and descendant(s). What do you want to do?"
894 text_wiki_page_destroy_question: "This page has {{descendants}} child page(s) and descendant(s). What do you want to do?"
894 text_wiki_page_nullify_children: "Keep child pages as root pages"
895 text_wiki_page_nullify_children: "Keep child pages as root pages"
895 text_wiki_page_destroy_children: "Delete child pages and all their descendants"
896 text_wiki_page_destroy_children: "Delete child pages and all their descendants"
896 text_wiki_page_reassign_children: "Reassign child pages to this parent page"
897 text_wiki_page_reassign_children: "Reassign child pages to this parent page"
897 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?"
898 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?"
898 text_zoom_in: Zoom in
899 text_zoom_in: Zoom in
899 text_zoom_out: Zoom out
900 text_zoom_out: Zoom out
900
901
901 default_role_manager: Manager
902 default_role_manager: Manager
902 default_role_developer: Developer
903 default_role_developer: Developer
903 default_role_reporter: Reporter
904 default_role_reporter: Reporter
904 default_tracker_bug: Bug
905 default_tracker_bug: Bug
905 default_tracker_feature: Feature
906 default_tracker_feature: Feature
906 default_tracker_support: Support
907 default_tracker_support: Support
907 default_issue_status_new: New
908 default_issue_status_new: New
908 default_issue_status_in_progress: In Progress
909 default_issue_status_in_progress: In Progress
909 default_issue_status_resolved: Resolved
910 default_issue_status_resolved: Resolved
910 default_issue_status_feedback: Feedback
911 default_issue_status_feedback: Feedback
911 default_issue_status_closed: Closed
912 default_issue_status_closed: Closed
912 default_issue_status_rejected: Rejected
913 default_issue_status_rejected: Rejected
913 default_doc_category_user: User documentation
914 default_doc_category_user: User documentation
914 default_doc_category_tech: Technical documentation
915 default_doc_category_tech: Technical documentation
915 default_priority_low: Low
916 default_priority_low: Low
916 default_priority_normal: Normal
917 default_priority_normal: Normal
917 default_priority_high: High
918 default_priority_high: High
918 default_priority_urgent: Urgent
919 default_priority_urgent: Urgent
919 default_priority_immediate: Immediate
920 default_priority_immediate: Immediate
920 default_activity_design: Design
921 default_activity_design: Design
921 default_activity_development: Development
922 default_activity_development: Development
922
923
923 enumeration_issue_priorities: Issue priorities
924 enumeration_issue_priorities: Issue priorities
924 enumeration_doc_categories: Document categories
925 enumeration_doc_categories: Document categories
925 enumeration_activities: Activities (time tracking)
926 enumeration_activities: Activities (time tracking)
926 enumeration_system_activity: System Activity
927 enumeration_system_activity: System Activity
927
928
@@ -1,188 +1,190
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18
18
19 # DO NOT MODIFY THIS FILE !!!
19 # DO NOT MODIFY THIS FILE !!!
20 # Settings can be defined through the application in Admin -> Settings
20 # Settings can be defined through the application in Admin -> Settings
21
21
22 app_title:
22 app_title:
23 default: Redmine
23 default: Redmine
24 app_subtitle:
24 app_subtitle:
25 default: Project management
25 default: Project management
26 welcome_text:
26 welcome_text:
27 default:
27 default:
28 login_required:
28 login_required:
29 default: 0
29 default: 0
30 self_registration:
30 self_registration:
31 default: '2'
31 default: '2'
32 lost_password:
32 lost_password:
33 default: 1
33 default: 1
34 password_min_length:
34 password_min_length:
35 format: int
35 format: int
36 default: 4
36 default: 4
37 attachment_max_size:
37 attachment_max_size:
38 format: int
38 format: int
39 default: 5120
39 default: 5120
40 issues_export_limit:
40 issues_export_limit:
41 format: int
41 format: int
42 default: 500
42 default: 500
43 activity_days_default:
43 activity_days_default:
44 format: int
44 format: int
45 default: 30
45 default: 30
46 per_page_options:
46 per_page_options:
47 default: '25,50,100'
47 default: '25,50,100'
48 mail_from:
48 mail_from:
49 default: redmine@example.net
49 default: redmine@example.net
50 bcc_recipients:
50 bcc_recipients:
51 default: 1
51 default: 1
52 plain_text_mail:
52 plain_text_mail:
53 default: 0
53 default: 0
54 text_formatting:
54 text_formatting:
55 default: textile
55 default: textile
56 cache_formatted_text:
56 cache_formatted_text:
57 default: 0
57 default: 0
58 wiki_compression:
58 wiki_compression:
59 default: ""
59 default: ""
60 default_language:
60 default_language:
61 default: en
61 default: en
62 host_name:
62 host_name:
63 default: localhost:3000
63 default: localhost:3000
64 protocol:
64 protocol:
65 default: http
65 default: http
66 feeds_limit:
66 feeds_limit:
67 format: int
67 format: int
68 default: 15
68 default: 15
69 # Maximum size of files that can be displayed
69 # Maximum size of files that can be displayed
70 # inline through the file viewer (in KB)
70 # inline through the file viewer (in KB)
71 file_max_size_displayed:
71 file_max_size_displayed:
72 format: int
72 format: int
73 default: 512
73 default: 512
74 diff_max_lines_displayed:
74 diff_max_lines_displayed:
75 format: int
75 format: int
76 default: 1500
76 default: 1500
77 enabled_scm:
77 enabled_scm:
78 serialized: true
78 serialized: true
79 default:
79 default:
80 - Subversion
80 - Subversion
81 - Darcs
81 - Darcs
82 - Mercurial
82 - Mercurial
83 - Cvs
83 - Cvs
84 - Bazaar
84 - Bazaar
85 - Git
85 - Git
86 autofetch_changesets:
86 autofetch_changesets:
87 default: 1
87 default: 1
88 sys_api_enabled:
88 sys_api_enabled:
89 default: 0
89 default: 0
90 sys_api_key:
90 sys_api_key:
91 default: ''
91 default: ''
92 commit_ref_keywords:
92 commit_ref_keywords:
93 default: 'refs,references,IssueID'
93 default: 'refs,references,IssueID'
94 commit_fix_keywords:
94 commit_fix_keywords:
95 default: 'fixes,closes'
95 default: 'fixes,closes'
96 commit_fix_status_id:
96 commit_fix_status_id:
97 format: int
97 format: int
98 default: 0
98 default: 0
99 commit_fix_done_ratio:
99 commit_fix_done_ratio:
100 default: 100
100 default: 100
101 # autologin duration in days
101 # autologin duration in days
102 # 0 means autologin is disabled
102 # 0 means autologin is disabled
103 autologin:
103 autologin:
104 format: int
104 format: int
105 default: 0
105 default: 0
106 # date format
106 # date format
107 date_format:
107 date_format:
108 default: ''
108 default: ''
109 time_format:
109 time_format:
110 default: ''
110 default: ''
111 user_format:
111 user_format:
112 default: :firstname_lastname
112 default: :firstname_lastname
113 format: symbol
113 format: symbol
114 cross_project_issue_relations:
114 cross_project_issue_relations:
115 default: 0
115 default: 0
116 notified_events:
116 notified_events:
117 serialized: true
117 serialized: true
118 default:
118 default:
119 - issue_added
119 - issue_added
120 - issue_updated
120 - issue_updated
121 mail_handler_body_delimiters:
121 mail_handler_body_delimiters:
122 default: ''
122 default: ''
123 mail_handler_api_enabled:
123 mail_handler_api_enabled:
124 default: 0
124 default: 0
125 mail_handler_api_key:
125 mail_handler_api_key:
126 default:
126 default:
127 issue_list_default_columns:
127 issue_list_default_columns:
128 serialized: true
128 serialized: true
129 default:
129 default:
130 - tracker
130 - tracker
131 - status
131 - status
132 - priority
132 - priority
133 - subject
133 - subject
134 - assigned_to
134 - assigned_to
135 - updated_on
135 - updated_on
136 display_subprojects_issues:
136 display_subprojects_issues:
137 default: 1
137 default: 1
138 issue_done_ratio:
138 issue_done_ratio:
139 default: 'issue_field'
139 default: 'issue_field'
140 default_projects_public:
140 default_projects_public:
141 default: 1
141 default: 1
142 default_projects_modules:
142 default_projects_modules:
143 serialized: true
143 serialized: true
144 default:
144 default:
145 - issue_tracking
145 - issue_tracking
146 - time_tracking
146 - time_tracking
147 - news
147 - news
148 - documents
148 - documents
149 - files
149 - files
150 - wiki
150 - wiki
151 - repository
151 - repository
152 - boards
152 - boards
153 - calendar
153 - calendar
154 - gantt
154 - gantt
155 # Role given to a non-admin user who creates a project
155 # Role given to a non-admin user who creates a project
156 new_project_user_role_id:
156 new_project_user_role_id:
157 format: int
157 format: int
158 default: ''
158 default: ''
159 sequential_project_identifiers:
159 sequential_project_identifiers:
160 default: 0
160 default: 0
161 # encodings used to convert repository files content to UTF-8
161 # encodings used to convert repository files content to UTF-8
162 # multiple values accepted, comma separated
162 # multiple values accepted, comma separated
163 repositories_encodings:
163 repositories_encodings:
164 default: ''
164 default: ''
165 # encoding used to convert commit logs to UTF-8
165 # encoding used to convert commit logs to UTF-8
166 commit_logs_encoding:
166 commit_logs_encoding:
167 default: 'UTF-8'
167 default: 'UTF-8'
168 repository_log_display_limit:
168 repository_log_display_limit:
169 format: int
169 format: int
170 default: 100
170 default: 100
171 ui_theme:
171 ui_theme:
172 default: ''
172 default: ''
173 emails_footer:
173 emails_footer:
174 default: |-
174 default: |-
175 You have received this notification because you have either subscribed to it, or are involved in it.
175 You have received this notification because you have either subscribed to it, or are involved in it.
176 To change your notification preferences, please click here: http://hostname/my/account
176 To change your notification preferences, please click here: http://hostname/my/account
177 gravatar_enabled:
177 gravatar_enabled:
178 default: 0
178 default: 0
179 openid:
179 openid:
180 default: 0
180 default: 0
181 gravatar_default:
181 gravatar_default:
182 default: ''
182 default: ''
183 start_of_week:
183 start_of_week:
184 default: ''
184 default: ''
185 rest_api_enabled:
185 rest_api_enabled:
186 default: 0
186 default: 0
187 default_notification_option:
187 default_notification_option:
188 default: 'only_my_events'
188 default: 'only_my_events'
189 emails_header:
190 default: ''
@@ -1,396 +1,413
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.dirname(__FILE__) + '/../test_helper'
18 require File.dirname(__FILE__) + '/../test_helper'
19
19
20 class MailerTest < ActiveSupport::TestCase
20 class MailerTest < ActiveSupport::TestCase
21 include Redmine::I18n
21 include Redmine::I18n
22 include ActionController::Assertions::SelectorAssertions
22 include ActionController::Assertions::SelectorAssertions
23 fixtures :projects, :enabled_modules, :issues, :users, :members, :member_roles, :roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
23 fixtures :projects, :enabled_modules, :issues, :users, :members, :member_roles, :roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
24
24
25 def setup
25 def setup
26 ActionMailer::Base.deliveries.clear
26 ActionMailer::Base.deliveries.clear
27 Setting.host_name = 'mydomain.foo'
27 Setting.host_name = 'mydomain.foo'
28 Setting.protocol = 'http'
28 Setting.protocol = 'http'
29 end
29 end
30
30
31 def test_generated_links_in_emails
31 def test_generated_links_in_emails
32 Setting.host_name = 'mydomain.foo'
32 Setting.host_name = 'mydomain.foo'
33 Setting.protocol = 'https'
33 Setting.protocol = 'https'
34
34
35 journal = Journal.find(2)
35 journal = Journal.find(2)
36 assert Mailer.deliver_issue_edit(journal)
36 assert Mailer.deliver_issue_edit(journal)
37
37
38 mail = ActionMailer::Base.deliveries.last
38 mail = ActionMailer::Base.deliveries.last
39 assert_kind_of TMail::Mail, mail
39 assert_kind_of TMail::Mail, mail
40
40
41 assert_select_email do
41 assert_select_email do
42 # link to the main ticket
42 # link to the main ticket
43 assert_select "a[href=?]", "https://mydomain.foo/issues/1", :text => "Bug #1: Can't print recipes"
43 assert_select "a[href=?]", "https://mydomain.foo/issues/1", :text => "Bug #1: Can't print recipes"
44 # link to a referenced ticket
44 # link to a referenced ticket
45 assert_select "a[href=?][title=?]", "https://mydomain.foo/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
45 assert_select "a[href=?][title=?]", "https://mydomain.foo/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
46 # link to a changeset
46 # link to a changeset
47 assert_select "a[href=?][title=?]", "https://mydomain.foo/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
47 assert_select "a[href=?][title=?]", "https://mydomain.foo/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
48 end
48 end
49 end
49 end
50
50
51 def test_generated_links_with_prefix
51 def test_generated_links_with_prefix
52 relative_url_root = Redmine::Utils.relative_url_root
52 relative_url_root = Redmine::Utils.relative_url_root
53 Setting.host_name = 'mydomain.foo/rdm'
53 Setting.host_name = 'mydomain.foo/rdm'
54 Setting.protocol = 'http'
54 Setting.protocol = 'http'
55 Redmine::Utils.relative_url_root = '/rdm'
55 Redmine::Utils.relative_url_root = '/rdm'
56
56
57 journal = Journal.find(2)
57 journal = Journal.find(2)
58 assert Mailer.deliver_issue_edit(journal)
58 assert Mailer.deliver_issue_edit(journal)
59
59
60 mail = ActionMailer::Base.deliveries.last
60 mail = ActionMailer::Base.deliveries.last
61 assert_kind_of TMail::Mail, mail
61 assert_kind_of TMail::Mail, mail
62
62
63 assert_select_email do
63 assert_select_email do
64 # link to the main ticket
64 # link to the main ticket
65 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
65 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
66 # link to a referenced ticket
66 # link to a referenced ticket
67 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
67 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
68 # link to a changeset
68 # link to a changeset
69 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
69 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
70 end
70 end
71 ensure
71 ensure
72 # restore it
72 # restore it
73 Redmine::Utils.relative_url_root = relative_url_root
73 Redmine::Utils.relative_url_root = relative_url_root
74 end
74 end
75
75
76 def test_generated_links_with_prefix_and_no_relative_url_root
76 def test_generated_links_with_prefix_and_no_relative_url_root
77 relative_url_root = Redmine::Utils.relative_url_root
77 relative_url_root = Redmine::Utils.relative_url_root
78 Setting.host_name = 'mydomain.foo/rdm'
78 Setting.host_name = 'mydomain.foo/rdm'
79 Setting.protocol = 'http'
79 Setting.protocol = 'http'
80 Redmine::Utils.relative_url_root = nil
80 Redmine::Utils.relative_url_root = nil
81
81
82 journal = Journal.find(2)
82 journal = Journal.find(2)
83 assert Mailer.deliver_issue_edit(journal)
83 assert Mailer.deliver_issue_edit(journal)
84
84
85 mail = ActionMailer::Base.deliveries.last
85 mail = ActionMailer::Base.deliveries.last
86 assert_kind_of TMail::Mail, mail
86 assert_kind_of TMail::Mail, mail
87
87
88 assert_select_email do
88 assert_select_email do
89 # link to the main ticket
89 # link to the main ticket
90 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
90 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
91 # link to a referenced ticket
91 # link to a referenced ticket
92 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
92 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
93 # link to a changeset
93 # link to a changeset
94 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
94 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
95 end
95 end
96 ensure
96 ensure
97 # restore it
97 # restore it
98 Redmine::Utils.relative_url_root = relative_url_root
98 Redmine::Utils.relative_url_root = relative_url_root
99 end
99 end
100
100
101 def test_email_headers
101 def test_email_headers
102 issue = Issue.find(1)
102 issue = Issue.find(1)
103 Mailer.deliver_issue_add(issue)
103 Mailer.deliver_issue_add(issue)
104 mail = ActionMailer::Base.deliveries.last
104 mail = ActionMailer::Base.deliveries.last
105 assert_not_nil mail
105 assert_not_nil mail
106 assert_equal 'bulk', mail.header_string('Precedence')
106 assert_equal 'bulk', mail.header_string('Precedence')
107 assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
107 assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
108 end
108 end
109
109
110 def test_plain_text_mail
110 def test_plain_text_mail
111 Setting.plain_text_mail = 1
111 Setting.plain_text_mail = 1
112 journal = Journal.find(2)
112 journal = Journal.find(2)
113 Mailer.deliver_issue_edit(journal)
113 Mailer.deliver_issue_edit(journal)
114 mail = ActionMailer::Base.deliveries.last
114 mail = ActionMailer::Base.deliveries.last
115 assert_equal "text/plain", mail.content_type
115 assert_equal "text/plain", mail.content_type
116 assert_equal 0, mail.parts.size
116 assert_equal 0, mail.parts.size
117 assert !mail.encoded.include?('href')
117 assert !mail.encoded.include?('href')
118 end
118 end
119
119
120 def test_html_mail
120 def test_html_mail
121 Setting.plain_text_mail = 0
121 Setting.plain_text_mail = 0
122 journal = Journal.find(2)
122 journal = Journal.find(2)
123 Mailer.deliver_issue_edit(journal)
123 Mailer.deliver_issue_edit(journal)
124 mail = ActionMailer::Base.deliveries.last
124 mail = ActionMailer::Base.deliveries.last
125 assert_equal 2, mail.parts.size
125 assert_equal 2, mail.parts.size
126 assert mail.encoded.include?('href')
126 assert mail.encoded.include?('href')
127 end
127 end
128
128
129 def test_mail_from_with_phrase
129 def test_mail_from_with_phrase
130 with_settings :mail_from => 'Redmine app <redmine@example.net>' do
130 with_settings :mail_from => 'Redmine app <redmine@example.net>' do
131 Mailer.deliver_test(User.find(1))
131 Mailer.deliver_test(User.find(1))
132 end
132 end
133 mail = ActionMailer::Base.deliveries.last
133 mail = ActionMailer::Base.deliveries.last
134 assert_not_nil mail
134 assert_not_nil mail
135 assert_equal 'Redmine app', mail.from_addrs.first.name
135 assert_equal 'Redmine app', mail.from_addrs.first.name
136 end
136 end
137
137
138 def test_should_not_send_email_without_recipient
138 def test_should_not_send_email_without_recipient
139 news = News.find(:first)
139 news = News.find(:first)
140 user = news.author
140 user = news.author
141 # Remove members except news author
141 # Remove members except news author
142 news.project.memberships.each {|m| m.destroy unless m.user == user}
142 news.project.memberships.each {|m| m.destroy unless m.user == user}
143
143
144 user.pref[:no_self_notified] = false
144 user.pref[:no_self_notified] = false
145 user.pref.save
145 user.pref.save
146 User.current = user
146 User.current = user
147 Mailer.deliver_news_added(news.reload)
147 Mailer.deliver_news_added(news.reload)
148 assert_equal 1, last_email.bcc.size
148 assert_equal 1, last_email.bcc.size
149
149
150 # nobody to notify
150 # nobody to notify
151 user.pref[:no_self_notified] = true
151 user.pref[:no_self_notified] = true
152 user.pref.save
152 user.pref.save
153 User.current = user
153 User.current = user
154 ActionMailer::Base.deliveries.clear
154 ActionMailer::Base.deliveries.clear
155 Mailer.deliver_news_added(news.reload)
155 Mailer.deliver_news_added(news.reload)
156 assert ActionMailer::Base.deliveries.empty?
156 assert ActionMailer::Base.deliveries.empty?
157 end
157 end
158
158
159 def test_issue_add_message_id
159 def test_issue_add_message_id
160 issue = Issue.find(1)
160 issue = Issue.find(1)
161 Mailer.deliver_issue_add(issue)
161 Mailer.deliver_issue_add(issue)
162 mail = ActionMailer::Base.deliveries.last
162 mail = ActionMailer::Base.deliveries.last
163 assert_not_nil mail
163 assert_not_nil mail
164 assert_equal Mailer.message_id_for(issue), mail.message_id
164 assert_equal Mailer.message_id_for(issue), mail.message_id
165 assert_nil mail.references
165 assert_nil mail.references
166 end
166 end
167
167
168 def test_issue_edit_message_id
168 def test_issue_edit_message_id
169 journal = Journal.find(1)
169 journal = Journal.find(1)
170 Mailer.deliver_issue_edit(journal)
170 Mailer.deliver_issue_edit(journal)
171 mail = ActionMailer::Base.deliveries.last
171 mail = ActionMailer::Base.deliveries.last
172 assert_not_nil mail
172 assert_not_nil mail
173 assert_equal Mailer.message_id_for(journal), mail.message_id
173 assert_equal Mailer.message_id_for(journal), mail.message_id
174 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
174 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
175 end
175 end
176
176
177 def test_message_posted_message_id
177 def test_message_posted_message_id
178 message = Message.find(1)
178 message = Message.find(1)
179 Mailer.deliver_message_posted(message)
179 Mailer.deliver_message_posted(message)
180 mail = ActionMailer::Base.deliveries.last
180 mail = ActionMailer::Base.deliveries.last
181 assert_not_nil mail
181 assert_not_nil mail
182 assert_equal Mailer.message_id_for(message), mail.message_id
182 assert_equal Mailer.message_id_for(message), mail.message_id
183 assert_nil mail.references
183 assert_nil mail.references
184 assert_select_email do
184 assert_select_email do
185 # link to the message
185 # link to the message
186 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
186 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
187 end
187 end
188 end
188 end
189
189
190 def test_reply_posted_message_id
190 def test_reply_posted_message_id
191 message = Message.find(3)
191 message = Message.find(3)
192 Mailer.deliver_message_posted(message)
192 Mailer.deliver_message_posted(message)
193 mail = ActionMailer::Base.deliveries.last
193 mail = ActionMailer::Base.deliveries.last
194 assert_not_nil mail
194 assert_not_nil mail
195 assert_equal Mailer.message_id_for(message), mail.message_id
195 assert_equal Mailer.message_id_for(message), mail.message_id
196 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
196 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
197 assert_select_email do
197 assert_select_email do
198 # link to the reply
198 # link to the reply
199 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
199 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
200 end
200 end
201 end
201 end
202
202
203 context("#issue_add") do
203 context("#issue_add") do
204 setup do
204 setup do
205 ActionMailer::Base.deliveries.clear
205 ActionMailer::Base.deliveries.clear
206 Setting.bcc_recipients = '1'
206 Setting.bcc_recipients = '1'
207 @issue = Issue.find(1)
207 @issue = Issue.find(1)
208 end
208 end
209
209
210 should "notify project members" do
210 should "notify project members" do
211 assert Mailer.deliver_issue_add(@issue)
211 assert Mailer.deliver_issue_add(@issue)
212 assert last_email.bcc.include?('dlopper@somenet.foo')
212 assert last_email.bcc.include?('dlopper@somenet.foo')
213 end
213 end
214
214
215 should "not notify project members that are not allow to view the issue" do
215 should "not notify project members that are not allow to view the issue" do
216 Role.find(2).remove_permission!(:view_issues)
216 Role.find(2).remove_permission!(:view_issues)
217 assert Mailer.deliver_issue_add(@issue)
217 assert Mailer.deliver_issue_add(@issue)
218 assert !last_email.bcc.include?('dlopper@somenet.foo')
218 assert !last_email.bcc.include?('dlopper@somenet.foo')
219 end
219 end
220
220
221 should "notify issue watchers" do
221 should "notify issue watchers" do
222 user = User.find(9)
222 user = User.find(9)
223 # minimal email notification options
223 # minimal email notification options
224 user.pref[:no_self_notified] = '1'
224 user.pref[:no_self_notified] = '1'
225 user.pref.save
225 user.pref.save
226 user.mail_notification = false
226 user.mail_notification = false
227 user.save
227 user.save
228
228
229 Watcher.create!(:watchable => @issue, :user => user)
229 Watcher.create!(:watchable => @issue, :user => user)
230 assert Mailer.deliver_issue_add(@issue)
230 assert Mailer.deliver_issue_add(@issue)
231 assert last_email.bcc.include?(user.mail)
231 assert last_email.bcc.include?(user.mail)
232 end
232 end
233
233
234 should "not notify watchers not allowed to view the issue" do
234 should "not notify watchers not allowed to view the issue" do
235 user = User.find(9)
235 user = User.find(9)
236 Watcher.create!(:watchable => @issue, :user => user)
236 Watcher.create!(:watchable => @issue, :user => user)
237 Role.non_member.remove_permission!(:view_issues)
237 Role.non_member.remove_permission!(:view_issues)
238 assert Mailer.deliver_issue_add(@issue)
238 assert Mailer.deliver_issue_add(@issue)
239 assert !last_email.bcc.include?(user.mail)
239 assert !last_email.bcc.include?(user.mail)
240 end
240 end
241 end
241 end
242
242
243 # test mailer methods for each language
243 # test mailer methods for each language
244 def test_issue_add
244 def test_issue_add
245 issue = Issue.find(1)
245 issue = Issue.find(1)
246 valid_languages.each do |lang|
246 valid_languages.each do |lang|
247 Setting.default_language = lang.to_s
247 Setting.default_language = lang.to_s
248 assert Mailer.deliver_issue_add(issue)
248 assert Mailer.deliver_issue_add(issue)
249 end
249 end
250 end
250 end
251
251
252 def test_issue_edit
252 def test_issue_edit
253 journal = Journal.find(1)
253 journal = Journal.find(1)
254 valid_languages.each do |lang|
254 valid_languages.each do |lang|
255 Setting.default_language = lang.to_s
255 Setting.default_language = lang.to_s
256 assert Mailer.deliver_issue_edit(journal)
256 assert Mailer.deliver_issue_edit(journal)
257 end
257 end
258 end
258 end
259
259
260 def test_document_added
260 def test_document_added
261 document = Document.find(1)
261 document = Document.find(1)
262 valid_languages.each do |lang|
262 valid_languages.each do |lang|
263 Setting.default_language = lang.to_s
263 Setting.default_language = lang.to_s
264 assert Mailer.deliver_document_added(document)
264 assert Mailer.deliver_document_added(document)
265 end
265 end
266 end
266 end
267
267
268 def test_attachments_added
268 def test_attachments_added
269 attachements = [ Attachment.find_by_container_type('Document') ]
269 attachements = [ Attachment.find_by_container_type('Document') ]
270 valid_languages.each do |lang|
270 valid_languages.each do |lang|
271 Setting.default_language = lang.to_s
271 Setting.default_language = lang.to_s
272 assert Mailer.deliver_attachments_added(attachements)
272 assert Mailer.deliver_attachments_added(attachements)
273 end
273 end
274 end
274 end
275
275
276 def test_version_file_added
276 def test_version_file_added
277 attachements = [ Attachment.find_by_container_type('Version') ]
277 attachements = [ Attachment.find_by_container_type('Version') ]
278 assert Mailer.deliver_attachments_added(attachements)
278 assert Mailer.deliver_attachments_added(attachements)
279 assert_not_nil last_email.bcc
279 assert_not_nil last_email.bcc
280 assert last_email.bcc.any?
280 assert last_email.bcc.any?
281 end
281 end
282
282
283 def test_project_file_added
283 def test_project_file_added
284 attachements = [ Attachment.find_by_container_type('Project') ]
284 attachements = [ Attachment.find_by_container_type('Project') ]
285 assert Mailer.deliver_attachments_added(attachements)
285 assert Mailer.deliver_attachments_added(attachements)
286 assert_not_nil last_email.bcc
286 assert_not_nil last_email.bcc
287 assert last_email.bcc.any?
287 assert last_email.bcc.any?
288 end
288 end
289
289
290 def test_news_added
290 def test_news_added
291 news = News.find(:first)
291 news = News.find(:first)
292 valid_languages.each do |lang|
292 valid_languages.each do |lang|
293 Setting.default_language = lang.to_s
293 Setting.default_language = lang.to_s
294 assert Mailer.deliver_news_added(news)
294 assert Mailer.deliver_news_added(news)
295 end
295 end
296 end
296 end
297
297
298 def test_message_posted
298 def test_message_posted
299 message = Message.find(:first)
299 message = Message.find(:first)
300 recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
300 recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
301 recipients = recipients.compact.uniq
301 recipients = recipients.compact.uniq
302 valid_languages.each do |lang|
302 valid_languages.each do |lang|
303 Setting.default_language = lang.to_s
303 Setting.default_language = lang.to_s
304 assert Mailer.deliver_message_posted(message)
304 assert Mailer.deliver_message_posted(message)
305 end
305 end
306 end
306 end
307
307
308 def test_account_information
308 def test_account_information
309 user = User.find(2)
309 user = User.find(2)
310 valid_languages.each do |lang|
310 valid_languages.each do |lang|
311 user.update_attribute :language, lang.to_s
311 user.update_attribute :language, lang.to_s
312 user.reload
312 user.reload
313 assert Mailer.deliver_account_information(user, 'pAsswORd')
313 assert Mailer.deliver_account_information(user, 'pAsswORd')
314 end
314 end
315 end
315 end
316
316
317 def test_lost_password
317 def test_lost_password
318 token = Token.find(2)
318 token = Token.find(2)
319 valid_languages.each do |lang|
319 valid_languages.each do |lang|
320 token.user.update_attribute :language, lang.to_s
320 token.user.update_attribute :language, lang.to_s
321 token.reload
321 token.reload
322 assert Mailer.deliver_lost_password(token)
322 assert Mailer.deliver_lost_password(token)
323 end
323 end
324 end
324 end
325
325
326 def test_register
326 def test_register
327 token = Token.find(1)
327 token = Token.find(1)
328 Setting.host_name = 'redmine.foo'
328 Setting.host_name = 'redmine.foo'
329 Setting.protocol = 'https'
329 Setting.protocol = 'https'
330
330
331 valid_languages.each do |lang|
331 valid_languages.each do |lang|
332 token.user.update_attribute :language, lang.to_s
332 token.user.update_attribute :language, lang.to_s
333 token.reload
333 token.reload
334 ActionMailer::Base.deliveries.clear
334 ActionMailer::Base.deliveries.clear
335 assert Mailer.deliver_register(token)
335 assert Mailer.deliver_register(token)
336 mail = ActionMailer::Base.deliveries.last
336 mail = ActionMailer::Base.deliveries.last
337 assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
337 assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
338 end
338 end
339 end
339 end
340
340
341 def test_test
341 def test_test
342 user = User.find(1)
342 user = User.find(1)
343 valid_languages.each do |lang|
343 valid_languages.each do |lang|
344 user.update_attribute :language, lang.to_s
344 user.update_attribute :language, lang.to_s
345 assert Mailer.deliver_test(user)
345 assert Mailer.deliver_test(user)
346 end
346 end
347 end
347 end
348
348
349 def test_reminders
349 def test_reminders
350 Mailer.reminders(:days => 42)
350 Mailer.reminders(:days => 42)
351 assert_equal 1, ActionMailer::Base.deliveries.size
351 assert_equal 1, ActionMailer::Base.deliveries.size
352 mail = ActionMailer::Base.deliveries.last
352 mail = ActionMailer::Base.deliveries.last
353 assert mail.bcc.include?('dlopper@somenet.foo')
353 assert mail.bcc.include?('dlopper@somenet.foo')
354 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
354 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
355 assert_equal '1 issue(s) due in the next 42 days', mail.subject
355 assert_equal '1 issue(s) due in the next 42 days', mail.subject
356 end
356 end
357
357
358 def test_reminders_for_users
358 def test_reminders_for_users
359 Mailer.reminders(:days => 42, :users => ['5'])
359 Mailer.reminders(:days => 42, :users => ['5'])
360 assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
360 assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
361 Mailer.reminders(:days => 42, :users => ['3'])
361 Mailer.reminders(:days => 42, :users => ['3'])
362 assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
362 assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
363 mail = ActionMailer::Base.deliveries.last
363 mail = ActionMailer::Base.deliveries.last
364 assert mail.bcc.include?('dlopper@somenet.foo')
364 assert mail.bcc.include?('dlopper@somenet.foo')
365 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
365 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
366 end
366 end
367
367
368 def last_email
368 def last_email
369 mail = ActionMailer::Base.deliveries.last
369 mail = ActionMailer::Base.deliveries.last
370 assert_not_nil mail
370 assert_not_nil mail
371 mail
371 mail
372 end
372 end
373
373
374 def test_mailer_should_not_change_locale
374 def test_mailer_should_not_change_locale
375 Setting.default_language = 'en'
375 Setting.default_language = 'en'
376 # Set current language to italian
376 # Set current language to italian
377 set_language_if_valid 'it'
377 set_language_if_valid 'it'
378 # Send an email to a french user
378 # Send an email to a french user
379 user = User.find(1)
379 user = User.find(1)
380 user.language = 'fr'
380 user.language = 'fr'
381 Mailer.deliver_account_activated(user)
381 Mailer.deliver_account_activated(user)
382 mail = ActionMailer::Base.deliveries.last
382 mail = ActionMailer::Base.deliveries.last
383 assert mail.body.include?('Votre compte')
383 assert mail.body.include?('Votre compte')
384
384
385 assert_equal :it, current_language
385 assert_equal :it, current_language
386 end
386 end
387
387
388 def test_with_deliveries_off
388 def test_with_deliveries_off
389 Mailer.with_deliveries false do
389 Mailer.with_deliveries false do
390 Mailer.deliver_test(User.find(1))
390 Mailer.deliver_test(User.find(1))
391 end
391 end
392 assert ActionMailer::Base.deliveries.empty?
392 assert ActionMailer::Base.deliveries.empty?
393 # should restore perform_deliveries
393 # should restore perform_deliveries
394 assert ActionMailer::Base.perform_deliveries
394 assert ActionMailer::Base.perform_deliveries
395 end
395 end
396
397 context "layout" do
398 should "include the emails_header" do
399 with_settings(:emails_header => "*Header content*") do
400 assert Mailer.deliver_test(User.find(1))
401
402 assert_select_email do
403 assert_select ".header" do
404 assert_select "strong", :text => "Header content"
405 end
406 end
407 end
408
409 end
410
411 end
412
396 end
413 end
General Comments 0
You need to be logged in to leave comments. Login now