##// END OF EJS Templates
Handle unsuccessful destroys in TimelogController. #5700...
Eric Davis -
r3691:c98f46d69154
parent child
Show More
@@ -1,308 +1,311
1 1 # redMine - project management software
2 2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 class TimelogController < ApplicationController
19 19 menu_item :issues
20 20 before_filter :find_project, :authorize, :only => [:edit, :destroy]
21 21 before_filter :find_optional_project, :only => [:report, :details]
22 22
23 23 verify :method => :post, :only => :destroy, :redirect_to => { :action => :details }
24 24
25 25 helper :sort
26 26 include SortHelper
27 27 helper :issues
28 28 include TimelogHelper
29 29 helper :custom_fields
30 30 include CustomFieldsHelper
31 31
32 32 def report
33 33 @available_criterias = { 'project' => {:sql => "#{TimeEntry.table_name}.project_id",
34 34 :klass => Project,
35 35 :label => :label_project},
36 36 'version' => {:sql => "#{Issue.table_name}.fixed_version_id",
37 37 :klass => Version,
38 38 :label => :label_version},
39 39 'category' => {:sql => "#{Issue.table_name}.category_id",
40 40 :klass => IssueCategory,
41 41 :label => :field_category},
42 42 'member' => {:sql => "#{TimeEntry.table_name}.user_id",
43 43 :klass => User,
44 44 :label => :label_member},
45 45 'tracker' => {:sql => "#{Issue.table_name}.tracker_id",
46 46 :klass => Tracker,
47 47 :label => :label_tracker},
48 48 'activity' => {:sql => "#{TimeEntry.table_name}.activity_id",
49 49 :klass => TimeEntryActivity,
50 50 :label => :label_activity},
51 51 'issue' => {:sql => "#{TimeEntry.table_name}.issue_id",
52 52 :klass => Issue,
53 53 :label => :label_issue}
54 54 }
55 55
56 56 # Add list and boolean custom fields as available criterias
57 57 custom_fields = (@project.nil? ? IssueCustomField.for_all : @project.all_issue_custom_fields)
58 58 custom_fields.select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
59 59 @available_criterias["cf_#{cf.id}"] = {:sql => "(SELECT c.value FROM #{CustomValue.table_name} c WHERE c.custom_field_id = #{cf.id} AND c.customized_type = 'Issue' AND c.customized_id = #{Issue.table_name}.id)",
60 60 :format => cf.field_format,
61 61 :label => cf.name}
62 62 end if @project
63 63
64 64 # Add list and boolean time entry custom fields
65 65 TimeEntryCustomField.find(:all).select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
66 66 @available_criterias["cf_#{cf.id}"] = {:sql => "(SELECT c.value FROM #{CustomValue.table_name} c WHERE c.custom_field_id = #{cf.id} AND c.customized_type = 'TimeEntry' AND c.customized_id = #{TimeEntry.table_name}.id)",
67 67 :format => cf.field_format,
68 68 :label => cf.name}
69 69 end
70 70
71 71 # Add list and boolean time entry activity custom fields
72 72 TimeEntryActivityCustomField.find(:all).select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
73 73 @available_criterias["cf_#{cf.id}"] = {:sql => "(SELECT c.value FROM #{CustomValue.table_name} c WHERE c.custom_field_id = #{cf.id} AND c.customized_type = 'Enumeration' AND c.customized_id = #{TimeEntry.table_name}.activity_id)",
74 74 :format => cf.field_format,
75 75 :label => cf.name}
76 76 end
77 77
78 78 @criterias = params[:criterias] || []
79 79 @criterias = @criterias.select{|criteria| @available_criterias.has_key? criteria}
80 80 @criterias.uniq!
81 81 @criterias = @criterias[0,3]
82 82
83 83 @columns = (params[:columns] && %w(year month week day).include?(params[:columns])) ? params[:columns] : 'month'
84 84
85 85 retrieve_date_range
86 86
87 87 unless @criterias.empty?
88 88 sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ')
89 89 sql_group_by = @criterias.collect{|criteria| @available_criterias[criteria][:sql]}.join(', ')
90 90 sql_condition = ''
91 91
92 92 if @project.nil?
93 93 sql_condition = Project.allowed_to_condition(User.current, :view_time_entries)
94 94 elsif @issue.nil?
95 95 sql_condition = @project.project_condition(Setting.display_subprojects_issues?)
96 96 else
97 97 sql_condition = "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}"
98 98 end
99 99
100 100 sql = "SELECT #{sql_select}, tyear, tmonth, tweek, spent_on, SUM(hours) AS hours"
101 101 sql << " FROM #{TimeEntry.table_name}"
102 102 sql << " LEFT JOIN #{Issue.table_name} ON #{TimeEntry.table_name}.issue_id = #{Issue.table_name}.id"
103 103 sql << " LEFT JOIN #{Project.table_name} ON #{TimeEntry.table_name}.project_id = #{Project.table_name}.id"
104 104 sql << " WHERE"
105 105 sql << " (%s) AND" % sql_condition
106 106 sql << " (spent_on BETWEEN '%s' AND '%s')" % [ActiveRecord::Base.connection.quoted_date(@from), ActiveRecord::Base.connection.quoted_date(@to)]
107 107 sql << " GROUP BY #{sql_group_by}, tyear, tmonth, tweek, spent_on"
108 108
109 109 @hours = ActiveRecord::Base.connection.select_all(sql)
110 110
111 111 @hours.each do |row|
112 112 case @columns
113 113 when 'year'
114 114 row['year'] = row['tyear']
115 115 when 'month'
116 116 row['month'] = "#{row['tyear']}-#{row['tmonth']}"
117 117 when 'week'
118 118 row['week'] = "#{row['tyear']}-#{row['tweek']}"
119 119 when 'day'
120 120 row['day'] = "#{row['spent_on']}"
121 121 end
122 122 end
123 123
124 124 @total_hours = @hours.inject(0) {|s,k| s = s + k['hours'].to_f}
125 125
126 126 @periods = []
127 127 # Date#at_beginning_of_ not supported in Rails 1.2.x
128 128 date_from = @from.to_time
129 129 # 100 columns max
130 130 while date_from <= @to.to_time && @periods.length < 100
131 131 case @columns
132 132 when 'year'
133 133 @periods << "#{date_from.year}"
134 134 date_from = (date_from + 1.year).at_beginning_of_year
135 135 when 'month'
136 136 @periods << "#{date_from.year}-#{date_from.month}"
137 137 date_from = (date_from + 1.month).at_beginning_of_month
138 138 when 'week'
139 139 @periods << "#{date_from.year}-#{date_from.to_date.cweek}"
140 140 date_from = (date_from + 7.day).at_beginning_of_week
141 141 when 'day'
142 142 @periods << "#{date_from.to_date}"
143 143 date_from = date_from + 1.day
144 144 end
145 145 end
146 146 end
147 147
148 148 respond_to do |format|
149 149 format.html { render :layout => !request.xhr? }
150 150 format.csv { send_data(report_to_csv(@criterias, @periods, @hours), :type => 'text/csv; header=present', :filename => 'timelog.csv') }
151 151 end
152 152 end
153 153
154 154 def details
155 155 sort_init 'spent_on', 'desc'
156 156 sort_update 'spent_on' => 'spent_on',
157 157 'user' => 'user_id',
158 158 'activity' => 'activity_id',
159 159 'project' => "#{Project.table_name}.name",
160 160 'issue' => 'issue_id',
161 161 'hours' => 'hours'
162 162
163 163 cond = ARCondition.new
164 164 if @project.nil?
165 165 cond << Project.allowed_to_condition(User.current, :view_time_entries)
166 166 elsif @issue.nil?
167 167 cond << @project.project_condition(Setting.display_subprojects_issues?)
168 168 else
169 169 cond << "#{Issue.table_name}.root_id = #{@issue.root_id} AND #{Issue.table_name}.lft >= #{@issue.lft} AND #{Issue.table_name}.rgt <= #{@issue.rgt}"
170 170 end
171 171
172 172 retrieve_date_range
173 173 cond << ['spent_on BETWEEN ? AND ?', @from, @to]
174 174
175 175 TimeEntry.visible_by(User.current) do
176 176 respond_to do |format|
177 177 format.html {
178 178 # Paginate results
179 179 @entry_count = TimeEntry.count(:include => [:project, :issue], :conditions => cond.conditions)
180 180 @entry_pages = Paginator.new self, @entry_count, per_page_option, params['page']
181 181 @entries = TimeEntry.find(:all,
182 182 :include => [:project, :activity, :user, {:issue => :tracker}],
183 183 :conditions => cond.conditions,
184 184 :order => sort_clause,
185 185 :limit => @entry_pages.items_per_page,
186 186 :offset => @entry_pages.current.offset)
187 187 @total_hours = TimeEntry.sum(:hours, :include => [:project, :issue], :conditions => cond.conditions).to_f
188 188
189 189 render :layout => !request.xhr?
190 190 }
191 191 format.atom {
192 192 entries = TimeEntry.find(:all,
193 193 :include => [:project, :activity, :user, {:issue => :tracker}],
194 194 :conditions => cond.conditions,
195 195 :order => "#{TimeEntry.table_name}.created_on DESC",
196 196 :limit => Setting.feeds_limit.to_i)
197 197 render_feed(entries, :title => l(:label_spent_time))
198 198 }
199 199 format.csv {
200 200 # Export all entries
201 201 @entries = TimeEntry.find(:all,
202 202 :include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
203 203 :conditions => cond.conditions,
204 204 :order => sort_clause)
205 205 send_data(entries_to_csv(@entries), :type => 'text/csv; header=present', :filename => 'timelog.csv')
206 206 }
207 207 end
208 208 end
209 209 end
210 210
211 211 def edit
212 212 (render_403; return) if @time_entry && !@time_entry.editable_by?(User.current)
213 213 @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today)
214 214 @time_entry.attributes = params[:time_entry]
215 215
216 216 call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
217 217
218 218 if request.post? and @time_entry.save
219 219 flash[:notice] = l(:notice_successful_update)
220 220 redirect_back_or_default :action => 'details', :project_id => @time_entry.project
221 221 return
222 222 end
223 223 end
224 224
225 225 def destroy
226 226 (render_404; return) unless @time_entry
227 227 (render_403; return) unless @time_entry.editable_by?(User.current)
228 @time_entry.destroy
228 if @time_entry.destroy && @time_entry.destroyed?
229 229 flash[:notice] = l(:notice_successful_delete)
230 else
231 flash[:error] = l(:notice_unable_delete_time_entry)
232 end
230 233 redirect_to :back
231 234 rescue ::ActionController::RedirectBackError
232 235 redirect_to :action => 'details', :project_id => @time_entry.project
233 236 end
234 237
235 238 private
236 239 def find_project
237 240 if params[:id]
238 241 @time_entry = TimeEntry.find(params[:id])
239 242 @project = @time_entry.project
240 243 elsif params[:issue_id]
241 244 @issue = Issue.find(params[:issue_id])
242 245 @project = @issue.project
243 246 elsif params[:project_id]
244 247 @project = Project.find(params[:project_id])
245 248 else
246 249 render_404
247 250 return false
248 251 end
249 252 rescue ActiveRecord::RecordNotFound
250 253 render_404
251 254 end
252 255
253 256 def find_optional_project
254 257 if !params[:issue_id].blank?
255 258 @issue = Issue.find(params[:issue_id])
256 259 @project = @issue.project
257 260 elsif !params[:project_id].blank?
258 261 @project = Project.find(params[:project_id])
259 262 end
260 263 deny_access unless User.current.allowed_to?(:view_time_entries, @project, :global => true)
261 264 end
262 265
263 266 # Retrieves the date range based on predefined ranges or specific from/to param dates
264 267 def retrieve_date_range
265 268 @free_period = false
266 269 @from, @to = nil, nil
267 270
268 271 if params[:period_type] == '1' || (params[:period_type].nil? && !params[:period].nil?)
269 272 case params[:period].to_s
270 273 when 'today'
271 274 @from = @to = Date.today
272 275 when 'yesterday'
273 276 @from = @to = Date.today - 1
274 277 when 'current_week'
275 278 @from = Date.today - (Date.today.cwday - 1)%7
276 279 @to = @from + 6
277 280 when 'last_week'
278 281 @from = Date.today - 7 - (Date.today.cwday - 1)%7
279 282 @to = @from + 6
280 283 when '7_days'
281 284 @from = Date.today - 7
282 285 @to = Date.today
283 286 when 'current_month'
284 287 @from = Date.civil(Date.today.year, Date.today.month, 1)
285 288 @to = (@from >> 1) - 1
286 289 when 'last_month'
287 290 @from = Date.civil(Date.today.year, Date.today.month, 1) << 1
288 291 @to = (@from >> 1) - 1
289 292 when '30_days'
290 293 @from = Date.today - 30
291 294 @to = Date.today
292 295 when 'current_year'
293 296 @from = Date.civil(Date.today.year, 1, 1)
294 297 @to = Date.civil(Date.today.year, 12, 31)
295 298 end
296 299 elsif params[:period_type] == '2' || (params[:period_type].nil? && (!params[:from].nil? || !params[:to].nil?))
297 300 begin; @from = params[:from].to_s.to_date unless params[:from].blank?; rescue; end
298 301 begin; @to = params[:to].to_s.to_date unless params[:to].blank?; rescue; end
299 302 @free_period = true
300 303 else
301 304 # default
302 305 end
303 306
304 307 @from, @to = @to, @from if @from && @to && @from > @to
305 308 @from ||= (TimeEntry.minimum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today) - 1
306 309 @to ||= (TimeEntry.maximum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today)
307 310 end
308 311 end
@@ -1,921 +1,922
1 1 # German translations for Ruby on Rails
2 2 # by Clemens Kofler (clemens@railway.at)
3 3
4 4 de:
5 5 date:
6 6 formats:
7 7 # Use the strftime parameters for formats.
8 8 # When no format has been given, it uses default.
9 9 # You can provide other formats here if you like!
10 10 default: "%d.%m.%Y"
11 11 short: "%e. %b"
12 12 long: "%e. %B %Y"
13 13
14 14 day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
15 15 abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa]
16 16
17 17 # Don't forget the nil at the beginning; there's no such thing as a 0th month
18 18 month_names: [~, Januar, Februar, MΓ€rz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
19 19 abbr_month_names: [~, Jan, Feb, MΓ€r, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez]
20 20 # Used in date_select and datime_select.
21 21 order: [:day, :month, :year]
22 22
23 23 time:
24 24 formats:
25 25 default: "%d.%m.%Y %H:%M"
26 26 time: "%H:%M"
27 27 short: "%e. %b %H:%M"
28 28 long: "%A, %e. %B %Y, %H:%M Uhr"
29 29 am: "vormittags"
30 30 pm: "nachmittags"
31 31
32 32 datetime:
33 33 distance_in_words:
34 34 half_a_minute: 'eine halbe Minute'
35 35 less_than_x_seconds:
36 36 one: 'weniger als 1 Sekunde'
37 37 other: 'weniger als {{count}} Sekunden'
38 38 x_seconds:
39 39 one: '1 Sekunde'
40 40 other: '{{count}} Sekunden'
41 41 less_than_x_minutes:
42 42 one: 'weniger als 1 Minute'
43 43 other: 'weniger als {{count}} Minuten'
44 44 x_minutes:
45 45 one: '1 Minute'
46 46 other: '{{count}} Minuten'
47 47 about_x_hours:
48 48 one: 'etwa 1 Stunde'
49 49 other: 'etwa {{count}} Stunden'
50 50 x_days:
51 51 one: '1 Tag'
52 52 other: '{{count}} Tagen'
53 53 about_x_months:
54 54 one: 'etwa 1 Monat'
55 55 other: 'etwa {{count}} Monaten'
56 56 x_months:
57 57 one: '1 Monat'
58 58 other: '{{count}} Monaten'
59 59 about_x_years:
60 60 one: 'etwa 1 Jahr'
61 61 other: 'etwa {{count}} Jahren'
62 62 over_x_years:
63 63 one: 'mehr als 1 Jahr'
64 64 other: 'mehr als {{count}} Jahren'
65 65 almost_x_years:
66 66 one: "fast 1 Jahr"
67 67 other: "fast {{count}} Jahren"
68 68
69 69 number:
70 70 format:
71 71 precision: 2
72 72 separator: ','
73 73 delimiter: '.'
74 74 currency:
75 75 format:
76 76 unit: '€'
77 77 format: '%n %u'
78 78 separator:
79 79 delimiter:
80 80 precision:
81 81 percentage:
82 82 format:
83 83 delimiter: ""
84 84 precision:
85 85 format:
86 86 delimiter: ""
87 87 human:
88 88 format:
89 89 delimiter: ""
90 90 precision: 1
91 91 storage_units:
92 92 format: "%n %u"
93 93 units:
94 94 byte:
95 95 one: "Byte"
96 96 other: "Bytes"
97 97 kb: "KB"
98 98 mb: "MB"
99 99 gb: "GB"
100 100 tb: "TB"
101 101
102 102
103 103 # Used in array.to_sentence.
104 104 support:
105 105 array:
106 106 sentence_connector: "und"
107 107 skip_last_comma: true
108 108
109 109 activerecord:
110 110 errors:
111 111 template:
112 112 header: "Dieses {{model}}-Objekt konnte nicht gespeichert werden: {{count}} Fehler."
113 113 body: "Bitte ΓΌberprΓΌfen Sie die folgenden Felder:"
114 114
115 115 messages:
116 116 inclusion: "ist kein gΓΌltiger Wert"
117 117 exclusion: "ist nicht verfΓΌgbar"
118 118 invalid: "ist nicht gΓΌltig"
119 119 confirmation: "stimmt nicht mit der BestΓ€tigung ΓΌberein"
120 120 accepted: "muss akzeptiert werden"
121 121 empty: "muss ausgefΓΌllt werden"
122 122 blank: "muss ausgefΓΌllt werden"
123 123 too_long: "ist zu lang (nicht mehr als {{count}} Zeichen)"
124 124 too_short: "ist zu kurz (nicht weniger als {{count}} Zeichen)"
125 125 wrong_length: "hat die falsche LΓ€nge (muss genau {{count}} Zeichen haben)"
126 126 taken: "ist bereits vergeben"
127 127 not_a_number: "ist keine Zahl"
128 128 not_a_date: "is kein gΓΌltiges Datum"
129 129 greater_than: "muss grâßer als {{count}} sein"
130 130 greater_than_or_equal_to: "muss grâßer oder gleich {{count}} sein"
131 131 equal_to: "muss genau {{count}} sein"
132 132 less_than: "muss kleiner als {{count}} sein"
133 133 less_than_or_equal_to: "muss kleiner oder gleich {{count}} sein"
134 134 odd: "muss ungerade sein"
135 135 even: "muss gerade sein"
136 136 greater_than_start_date: "muss grâßer als Anfangsdatum sein"
137 137 not_same_project: "gehΓΆrt nicht zum selben Projekt"
138 138 circular_dependency: "Diese Beziehung wΓΌrde eine zyklische AbhΓ€ngigkeit erzeugen"
139 139
140 140 actionview_instancetag_blank_option: Bitte auswΓ€hlen
141 141
142 142 general_text_No: 'Nein'
143 143 general_text_Yes: 'Ja'
144 144 general_text_no: 'nein'
145 145 general_text_yes: 'ja'
146 146 general_lang_name: 'Deutsch'
147 147 general_csv_separator: ';'
148 148 general_csv_decimal_separator: ','
149 149 general_csv_encoding: ISO-8859-1
150 150 general_pdf_encoding: ISO-8859-1
151 151 general_first_day_of_week: '1'
152 152
153 153 notice_account_updated: Konto wurde erfolgreich aktualisiert.
154 154 notice_account_invalid_creditentials: Benutzer oder Kennwort ist ungΓΌltig.
155 155 notice_account_password_updated: Kennwort wurde erfolgreich aktualisiert.
156 156 notice_account_wrong_password: Falsches Kennwort.
157 157 notice_account_register_done: Konto wurde erfolgreich angelegt.
158 158 notice_account_unknown_email: Unbekannter Benutzer.
159 159 notice_can_t_change_password: Dieses Konto verwendet eine externe Authentifizierungs-Quelle. UnmΓΆglich, das Kennwort zu Γ€ndern.
160 160 notice_account_lost_email_sent: Eine E-Mail mit Anweisungen, ein neues Kennwort zu wΓ€hlen, wurde Ihnen geschickt.
161 161 notice_account_activated: Ihr Konto ist aktiviert. Sie kΓΆnnen sich jetzt anmelden.
162 162 notice_successful_create: Erfolgreich angelegt
163 163 notice_successful_update: Erfolgreich aktualisiert.
164 164 notice_successful_delete: Erfolgreich gelΓΆscht.
165 165 notice_successful_connection: Verbindung erfolgreich.
166 166 notice_file_not_found: Anhang existiert nicht oder ist gelΓΆscht worden.
167 167 notice_locking_conflict: Datum wurde von einem anderen Benutzer geΓ€ndert.
168 168 notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen.
169 169 notice_email_sent: "Eine E-Mail wurde an {{value}} gesendet."
170 170 notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten ({{value}})."
171 171 notice_feeds_access_key_reseted: Ihr Atom-ZugriffsschlΓΌssel wurde zurΓΌckgesetzt.
172 172 notice_api_access_key_reseted: Ihr API-ZugriffsschlΓΌssel wurde zurΓΌckgesetzt.
173 173 notice_failed_to_save_issues: "{{count}} von {{total}} ausgewΓ€hlten Tickets konnte(n) nicht gespeichert werden: {{ids}}."
174 174 notice_no_issue_selected: "Kein Ticket ausgewΓ€hlt! Bitte wΓ€hlen Sie die Tickets, die Sie bearbeiten mΓΆchten."
175 175 notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators."
176 176 notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen.
177 177 notice_unable_delete_version: Die Version konnte nicht gelΓΆscht werden.
178 notice_unable_delete_time_entry: Der Zeiterfassungseintrag konnte nicht gelΓΆscht werden.
178 179 notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert.
179 180
180 181 error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: {{value}}"
181 182 error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv.
182 183 error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: {{value}}"
183 184 error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden."
184 185 error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehΓΆrt nicht zu diesem Projekt.'
185 186 error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte ΓΌberprΓΌfen Sie die Projekteinstellungen.
186 187 error_no_default_issue_status: Es ist kein Status als Standard definiert. Bitte ΓΌberprΓΌfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status").
187 188 error_can_not_reopen_issue_on_closed_version: Das Ticket ist einer abgeschlossenen Version zugeordnet und kann daher nicht wieder geΓΆffnet werden.
188 189 error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden.
189 190 error_issue_done_ratios_not_updated: Der Ticket-Fortschritt wurde nicht aktualisiert.
190 191 error_workflow_copy_source: Bitte wΓ€hlen Sie einen Quell-Tracker und eine Quell-Rolle.
191 192 error_workflow_copy_target: Bitte wΓ€hlen Sie die Ziel-Tracker und -Rollen.
192 193 error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelΓΆscht werden."
193 194
194 195 warning_attachments_not_saved:
195 196 one: "1 Datei konnte nicht gespeichert werden."
196 197 other: "{{count}} Dateien konnten nicht gespeichert werden."
197 198
198 199 mail_subject_lost_password: "Ihr {{value}} Kennwort"
199 200 mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu Γ€ndern:'
200 201 mail_subject_register: "{{value}} Kontoaktivierung"
201 202 mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:'
202 203 mail_body_account_information_external: "Sie kΓΆnnen sich mit Ihrem Konto {{value}} an anmelden."
203 204 mail_body_account_information: Ihre Konto-Informationen
204 205 mail_subject_account_activation_request: "Antrag auf {{value}} Kontoaktivierung"
205 206 mail_body_account_activation_request: "Ein neuer Benutzer ({{value}}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:"
206 207 mail_subject_reminder: "{{count}} Tickets mΓΌssen in den nΓ€chsten Tagen abgegeben werden"
207 208 mail_body_reminder: "{{count}} Tickets, die Ihnen zugewiesen sind, mΓΌssen in den nΓ€chsten {{days}} Tagen abgegeben werden:"
208 209 mail_subject_wiki_content_added: "Wiki-Seite '{{page}}' hinzugefΓΌgt"
209 210 mail_body_wiki_content_added: "Die Wiki-Seite '{{page}}' wurde von {{author}} hinzugefΓΌgt."
210 211 mail_subject_wiki_content_updated: "Wiki-Seite '{{page}}' erfolgreich aktualisiert"
211 212 mail_body_wiki_content_updated: "Die Wiki-Seite '{{page}}' wurde von {{author}} aktualisiert."
212 213
213 214 gui_validation_error: 1 Fehler
214 215 gui_validation_error_plural: "{{count}} Fehler"
215 216
216 217 field_name: Name
217 218 field_description: Beschreibung
218 219 field_summary: Zusammenfassung
219 220 field_is_required: Erforderlich
220 221 field_firstname: Vorname
221 222 field_lastname: Nachname
222 223 field_mail: E-Mail
223 224 field_filename: Datei
224 225 field_filesize: Grâße
225 226 field_downloads: Downloads
226 227 field_author: Autor
227 228 field_created_on: Angelegt
228 229 field_updated_on: Aktualisiert
229 230 field_field_format: Format
230 231 field_is_for_all: FΓΌr alle Projekte
231 232 field_possible_values: MΓΆgliche Werte
232 233 field_regexp: RegulΓ€rer Ausdruck
233 234 field_min_length: Minimale LΓ€nge
234 235 field_max_length: Maximale LΓ€nge
235 236 field_value: Wert
236 237 field_category: Kategorie
237 238 field_title: Titel
238 239 field_project: Projekt
239 240 field_issue: Ticket
240 241 field_status: Status
241 242 field_notes: Kommentare
242 243 field_is_closed: Ticket geschlossen
243 244 field_is_default: Standardeinstellung
244 245 field_tracker: Tracker
245 246 field_subject: Thema
246 247 field_due_date: Abgabedatum
247 248 field_assigned_to: Zugewiesen an
248 249 field_priority: PrioritΓ€t
249 250 field_fixed_version: Zielversion
250 251 field_user: Benutzer
251 252 field_role: Rolle
252 253 field_homepage: Projekt-Homepage
253 254 field_is_public: Γ–ffentlich
254 255 field_parent: Unterprojekt von
255 256 field_is_in_roadmap: In der Roadmap anzeigen
256 257 field_login: Mitgliedsname
257 258 field_mail_notification: Mailbenachrichtigung
258 259 field_admin: Administrator
259 260 field_last_login_on: Letzte Anmeldung
260 261 field_language: Sprache
261 262 field_effective_date: Datum
262 263 field_password: Kennwort
263 264 field_new_password: Neues Kennwort
264 265 field_password_confirmation: BestΓ€tigung
265 266 field_version: Version
266 267 field_type: Typ
267 268 field_host: Host
268 269 field_port: Port
269 270 field_account: Konto
270 271 field_base_dn: Base DN
271 272 field_attr_login: Mitgliedsname-Attribut
272 273 field_attr_firstname: Vorname-Attribut
273 274 field_attr_lastname: Name-Attribut
274 275 field_attr_mail: E-Mail-Attribut
275 276 field_onthefly: On-the-fly-Benutzererstellung
276 277 field_start_date: Beginn
277 278 field_done_ratio: % erledigt
278 279 field_auth_source: Authentifizierungs-Modus
279 280 field_hide_mail: E-Mail-Adresse nicht anzeigen
280 281 field_comments: Kommentar
281 282 field_url: URL
282 283 field_start_page: Hauptseite
283 284 field_subproject: Unterprojekt von
284 285 field_hours: Stunden
285 286 field_activity: AktivitΓ€t
286 287 field_spent_on: Datum
287 288 field_identifier: Kennung
288 289 field_is_filter: Als Filter benutzen
289 290 field_issue_to: ZugehΓΆriges Ticket
290 291 field_delay: Pufferzeit
291 292 field_assignable: Tickets kΓΆnnen dieser Rolle zugewiesen werden
292 293 field_redirect_existing_links: Existierende Links umleiten
293 294 field_estimated_hours: GeschΓ€tzter Aufwand
294 295 field_column_names: Spalten
295 296 field_time_zone: Zeitzone
296 297 field_searchable: Durchsuchbar
297 298 field_default_value: Standardwert
298 299 field_comments_sorting: Kommentare anzeigen
299 300 field_parent_title: Übergeordnete Seite
300 301 field_editable: Bearbeitbar
301 302 field_watcher: Beobachter
302 303 field_identity_url: OpenID-URL
303 304 field_content: Inhalt
304 305 field_group_by: Gruppiere Ergebnisse nach
305 306 field_sharing: Gemeinsame Verwendung
306 307
307 308 setting_app_title: Applikations-Titel
308 309 setting_app_subtitle: Applikations-Untertitel
309 310 setting_welcome_text: Willkommenstext
310 311 setting_default_language: Default-Sprache
311 312 setting_login_required: Authentifizierung erforderlich
312 313 setting_self_registration: Anmeldung ermΓΆglicht
313 314 setting_attachment_max_size: Max. Dateigrâße
314 315 setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export
315 316 setting_mail_from: E-Mail-Absender
316 317 setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden
317 318 setting_plain_text_mail: Nur reinen Text (kein HTML) senden
318 319 setting_host_name: Hostname
319 320 setting_text_formatting: Textformatierung
320 321 setting_wiki_compression: Wiki-Historie komprimieren
321 322 setting_feeds_limit: Max. Anzahl EintrΓ€ge pro Atom-Feed
322 323 setting_default_projects_public: Neue Projekte sind standardmÀßig âffentlich
323 324 setting_autofetch_changesets: Changesets automatisch abrufen
324 325 setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen
325 326 setting_commit_ref_keywords: SchlΓΌsselwΓΆrter (Beziehungen)
326 327 setting_commit_fix_keywords: SchlΓΌsselwΓΆrter (Status)
327 328 setting_autologin: Automatische Anmeldung
328 329 setting_date_format: Datumsformat
329 330 setting_time_format: Zeitformat
330 331 setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben
331 332 setting_issue_list_default_columns: Default-Spalten in der Ticket-Auflistung
332 333 setting_repositories_encodings: Kodierungen der Projektarchive
333 334 setting_commit_logs_encoding: Kodierung der Commit-Log-Meldungen
334 335 setting_emails_footer: E-Mail-Fußzeile
335 336 setting_protocol: Protokoll
336 337 setting_per_page_options: Objekte pro Seite
337 338 setting_user_format: Benutzer-Anzeigeformat
338 339 setting_activity_days_default: Anzahl Tage pro Seite der Projekt-AktivitΓ€t
339 340 setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen
340 341 setting_enabled_scm: Aktivierte Versionskontrollsysteme
341 342 setting_mail_handler_body_delimiters: "Schneide E-Mails nach einer dieser Zeilen ab"
342 343 setting_mail_handler_api_enabled: Abruf eingehender E-Mails aktivieren
343 344 setting_mail_handler_api_key: API-SchlΓΌssel
344 345 setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren
345 346 setting_gravatar_enabled: Gravatar-Benutzerbilder benutzen
346 347 setting_gravatar_default: Standard-Gravatar-Bild
347 348 setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen
348 349 setting_file_max_size_displayed: Maximale Grâße inline angezeigter Textdateien
349 350 setting_repository_log_display_limit: Maximale Anzahl anzuzeigender Revisionen in der Historie einer Datei
350 351 setting_openid: Erlaube OpenID-Anmeldung und -Registrierung
351 352 setting_password_min_length: MindestlΓ€nge des Kennworts
352 353 setting_new_project_user_role_id: Rolle, die einem Nicht-Administrator zugeordnet wird, der ein Projekt erstellt
353 354 setting_default_projects_modules: StandardmÀßig aktivierte Module für neue Projekte
354 355 setting_issue_done_ratio: Berechne den Ticket-Fortschritt mittels
355 356 setting_issue_done_ratio_issue_field: Ticket-Feld %-erledigt
356 357 setting_issue_done_ratio_issue_status: Ticket-Status
357 358 setting_start_of_week: Wochenanfang
358 359 setting_rest_api_enabled: REST-Schnittstelle aktivieren
359 360 setting_cache_formatted_text: Formatierten Text im Cache speichern
360 361
361 362 permission_add_project: Projekt erstellen
362 363 permission_add_subprojects: Unterprojekte erstellen
363 364 permission_edit_project: Projekt bearbeiten
364 365 permission_select_project_modules: Projektmodule auswΓ€hlen
365 366 permission_manage_members: Mitglieder verwalten
366 367 permission_manage_project_activities: AktivitΓ€ten (Zeiterfassung) verwalten
367 368 permission_manage_versions: Versionen verwalten
368 369 permission_manage_categories: Ticket-Kategorien verwalten
369 370 permission_view_issues: Tickets anzeigen
370 371 permission_add_issues: Tickets hinzufΓΌgen
371 372 permission_edit_issues: Tickets bearbeiten
372 373 permission_manage_issue_relations: Ticket-Beziehungen verwalten
373 374 permission_add_issue_notes: Kommentare hinzufΓΌgen
374 375 permission_edit_issue_notes: Kommentare bearbeiten
375 376 permission_edit_own_issue_notes: Eigene Kommentare bearbeiten
376 377 permission_move_issues: Tickets verschieben
377 378 permission_delete_issues: Tickets lΓΆschen
378 379 permission_manage_public_queries: Γ–ffentliche Filter verwalten
379 380 permission_save_queries: Filter speichern
380 381 permission_view_gantt: Gantt-Diagramm ansehen
381 382 permission_view_calendar: Kalender ansehen
382 383 permission_view_issue_watchers: Liste der Beobachter ansehen
383 384 permission_add_issue_watchers: Beobachter hinzufΓΌgen
384 385 permission_delete_issue_watchers: Beobachter lΓΆschen
385 386 permission_log_time: AufwΓ€nde buchen
386 387 permission_view_time_entries: Gebuchte AufwΓ€nde ansehen
387 388 permission_edit_time_entries: Gebuchte AufwΓ€nde bearbeiten
388 389 permission_edit_own_time_entries: Selbst gebuchte AufwΓ€nde bearbeiten
389 390 permission_manage_news: News verwalten
390 391 permission_comment_news: News kommentieren
391 392 permission_manage_documents: Dokumente verwalten
392 393 permission_view_documents: Dokumente ansehen
393 394 permission_manage_files: Dateien verwalten
394 395 permission_view_files: Dateien ansehen
395 396 permission_manage_wiki: Wiki verwalten
396 397 permission_rename_wiki_pages: Wiki-Seiten umbenennen
397 398 permission_delete_wiki_pages: Wiki-Seiten lΓΆschen
398 399 permission_view_wiki_pages: Wiki ansehen
399 400 permission_view_wiki_edits: Wiki-Versionsgeschichte ansehen
400 401 permission_edit_wiki_pages: Wiki-Seiten bearbeiten
401 402 permission_delete_wiki_pages_attachments: AnhΓ€nge lΓΆschen
402 403 permission_protect_wiki_pages: Wiki-Seiten schΓΌtzen
403 404 permission_manage_repository: Projektarchiv verwalten
404 405 permission_browse_repository: Projektarchiv ansehen
405 406 permission_view_changesets: Changesets ansehen
406 407 permission_commit_access: Commit-Zugriff (ΓΌber WebDAV)
407 408 permission_manage_boards: Foren verwalten
408 409 permission_view_messages: ForenbeitrΓ€ge ansehen
409 410 permission_add_messages: ForenbeitrΓ€ge hinzufΓΌgen
410 411 permission_edit_messages: ForenbeitrΓ€ge bearbeiten
411 412 permission_edit_own_messages: Eigene ForenbeitrΓ€ge bearbeiten
412 413 permission_delete_messages: ForenbeitrΓ€ge lΓΆschen
413 414 permission_delete_own_messages: Eigene ForenbeitrΓ€ge lΓΆschen
414 415 permission_export_wiki_pages: Wiki-Seiten exportieren
415 416
416 417 project_module_issue_tracking: Ticket-Verfolgung
417 418 project_module_time_tracking: Zeiterfassung
418 419 project_module_news: News
419 420 project_module_documents: Dokumente
420 421 project_module_files: Dateien
421 422 project_module_wiki: Wiki
422 423 project_module_repository: Projektarchiv
423 424 project_module_boards: Foren
424 425
425 426 label_user: Benutzer
426 427 label_user_plural: Benutzer
427 428 label_user_new: Neuer Benutzer
428 429 label_user_anonymous: Anonym
429 430 label_project: Projekt
430 431 label_project_new: Neues Projekt
431 432 label_project_plural: Projekte
432 433 label_x_projects:
433 434 zero: keine Projekte
434 435 one: 1 Projekt
435 436 other: "{{count}} Projekte"
436 437 label_project_all: Alle Projekte
437 438 label_project_latest: Neueste Projekte
438 439 label_issue: Ticket
439 440 label_issue_new: Neues Ticket
440 441 label_issue_plural: Tickets
441 442 label_issue_view_all: Alle Tickets anzeigen
442 443 label_issues_by: "Tickets von {{value}}"
443 444 label_issue_added: Ticket hinzugefΓΌgt
444 445 label_issue_updated: Ticket aktualisiert
445 446 label_document: Dokument
446 447 label_document_new: Neues Dokument
447 448 label_document_plural: Dokumente
448 449 label_document_added: Dokument hinzugefΓΌgt
449 450 label_role: Rolle
450 451 label_role_plural: Rollen
451 452 label_role_new: Neue Rolle
452 453 label_role_and_permissions: Rollen und Rechte
453 454 label_member: Mitglied
454 455 label_member_new: Neues Mitglied
455 456 label_member_plural: Mitglieder
456 457 label_tracker: Tracker
457 458 label_tracker_plural: Tracker
458 459 label_tracker_new: Neuer Tracker
459 460 label_workflow: Workflow
460 461 label_issue_status: Ticket-Status
461 462 label_issue_status_plural: Ticket-Status
462 463 label_issue_status_new: Neuer Status
463 464 label_issue_category: Ticket-Kategorie
464 465 label_issue_category_plural: Ticket-Kategorien
465 466 label_issue_category_new: Neue Kategorie
466 467 label_custom_field: Benutzerdefiniertes Feld
467 468 label_custom_field_plural: Benutzerdefinierte Felder
468 469 label_custom_field_new: Neues Feld
469 470 label_enumerations: AufzΓ€hlungen
470 471 label_enumeration_new: Neuer Wert
471 472 label_information: Information
472 473 label_information_plural: Informationen
473 474 label_please_login: Anmelden
474 475 label_register: Registrieren
475 476 label_login_with_open_id_option: oder mit OpenID anmelden
476 477 label_password_lost: Kennwort vergessen
477 478 label_home: Hauptseite
478 479 label_my_page: Meine Seite
479 480 label_my_account: Mein Konto
480 481 label_my_projects: Meine Projekte
481 482 label_administration: Administration
482 483 label_login: Anmelden
483 484 label_logout: Abmelden
484 485 label_help: Hilfe
485 486 label_reported_issues: Gemeldete Tickets
486 487 label_assigned_to_me_issues: Mir zugewiesen
487 488 label_last_login: Letzte Anmeldung
488 489 label_registered_on: Angemeldet am
489 490 label_activity: AktivitΓ€t
490 491 label_overall_activity: AktivitΓ€t aller Projekte anzeigen
491 492 label_user_activity: "AktivitΓ€t von {{value}}"
492 493 label_new: Neu
493 494 label_logged_as: Angemeldet als
494 495 label_environment: Environment
495 496 label_authentication: Authentifizierung
496 497 label_auth_source: Authentifizierungs-Modus
497 498 label_auth_source_new: Neuer Authentifizierungs-Modus
498 499 label_auth_source_plural: Authentifizierungs-Arten
499 500 label_subproject_plural: Unterprojekte
500 501 label_subproject_new: Neues Unterprojekt
501 502 label_and_its_subprojects: "{{value}} und dessen Unterprojekte"
502 503 label_min_max_length: LΓ€nge (Min. - Max.)
503 504 label_list: Liste
504 505 label_date: Datum
505 506 label_integer: Zahl
506 507 label_float: Fließkommazahl
507 508 label_boolean: Boolean
508 509 label_string: Text
509 510 label_text: Langer Text
510 511 label_attribute: Attribut
511 512 label_attribute_plural: Attribute
512 513 label_download: "{{count}} Download"
513 514 label_download_plural: "{{count}} Downloads"
514 515 label_no_data: Nichts anzuzeigen
515 516 label_change_status: Statuswechsel
516 517 label_history: Historie
517 518 label_attachment: Datei
518 519 label_attachment_new: Neue Datei
519 520 label_attachment_delete: Anhang lΓΆschen
520 521 label_attachment_plural: Dateien
521 522 label_file_added: Datei hinzugefΓΌgt
522 523 label_report: Bericht
523 524 label_report_plural: Berichte
524 525 label_news: News
525 526 label_news_new: News hinzufΓΌgen
526 527 label_news_plural: News
527 528 label_news_latest: Letzte News
528 529 label_news_view_all: Alle News anzeigen
529 530 label_news_added: News hinzugefΓΌgt
530 531 label_settings: Konfiguration
531 532 label_overview: Übersicht
532 533 label_version: Version
533 534 label_version_new: Neue Version
534 535 label_version_plural: Versionen
535 536 label_close_versions: VollstÀndige Versionen schließen
536 537 label_confirmation: BestΓ€tigung
537 538 label_export_to: "Auch abrufbar als:"
538 539 label_read: Lesen...
539 540 label_public_projects: Γ–ffentliche Projekte
540 541 label_open_issues: offen
541 542 label_open_issues_plural: offen
542 543 label_closed_issues: geschlossen
543 544 label_closed_issues_plural: geschlossen
544 545 label_x_open_issues_abbr_on_total: "{{count}} offen / {{total}}"
545 546 label_x_open_issues_abbr: "{{count}} offen"
546 547 label_x_closed_issues_abbr: "{{count}} geschlossen"
547 548 label_total: Gesamtzahl
548 549 label_permissions: Berechtigungen
549 550 label_current_status: GegenwΓ€rtiger Status
550 551 label_new_statuses_allowed: Neue Berechtigungen
551 552 label_all: alle
552 553 label_none: kein
553 554 label_nobody: Niemand
554 555 label_next: Weiter
555 556 label_previous: ZurΓΌck
556 557 label_used_by: Benutzt von
557 558 label_details: Details
558 559 label_add_note: Kommentar hinzufΓΌgen
559 560 label_per_page: Pro Seite
560 561 label_calendar: Kalender
561 562 label_months_from: Monate ab
562 563 label_gantt: Gantt-Diagramm
563 564 label_internal: Intern
564 565 label_last_changes: "{{count}} letzte Γ„nderungen"
565 566 label_change_view_all: Alle Γ„nderungen anzeigen
566 567 label_personalize_page: Diese Seite anpassen
567 568 label_comment: Kommentar
568 569 label_comment_plural: Kommentare
569 570 label_x_comments:
570 571 zero: keine Kommentare
571 572 one: 1 Kommentar
572 573 other: "{{count}} Kommentare"
573 574 label_comment_add: Kommentar hinzufΓΌgen
574 575 label_comment_added: Kommentar hinzugefΓΌgt
575 576 label_comment_delete: Kommentar lΓΆschen
576 577 label_query: Benutzerdefinierte Abfrage
577 578 label_query_plural: Benutzerdefinierte Berichte
578 579 label_query_new: Neuer Bericht
579 580 label_filter_add: Filter hinzufΓΌgen
580 581 label_filter_plural: Filter
581 582 label_equals: ist
582 583 label_not_equals: ist nicht
583 584 label_in_less_than: in weniger als
584 585 label_in_more_than: in mehr als
585 586 label_greater_or_equal: ">="
586 587 label_less_or_equal: "<="
587 588 label_in: an
588 589 label_today: heute
589 590 label_all_time: gesamter Zeitraum
590 591 label_yesterday: gestern
591 592 label_this_week: aktuelle Woche
592 593 label_last_week: vorige Woche
593 594 label_last_n_days: "die letzten {{count}} Tage"
594 595 label_this_month: aktueller Monat
595 596 label_last_month: voriger Monat
596 597 label_this_year: aktuelles Jahr
597 598 label_date_range: Zeitraum
598 599 label_less_than_ago: vor weniger als
599 600 label_more_than_ago: vor mehr als
600 601 label_ago: vor
601 602 label_contains: enthΓ€lt
602 603 label_not_contains: enthΓ€lt nicht
603 604 label_day_plural: Tage
604 605 label_repository: Projektarchiv
605 606 label_repository_plural: Projektarchive
606 607 label_browse: Codebrowser
607 608 label_modification: "{{count}} Γ„nderung"
608 609 label_modification_plural: "{{count}} Γ„nderungen"
609 610 label_branch: Zweig
610 611 label_tag: Markierung
611 612 label_revision: Revision
612 613 label_revision_plural: Revisionen
613 614 label_revision_id: Revision {{value}}
614 615 label_associated_revisions: ZugehΓΆrige Revisionen
615 616 label_added: hinzugefΓΌgt
616 617 label_modified: geΓ€ndert
617 618 label_copied: kopiert
618 619 label_renamed: umbenannt
619 620 label_deleted: gelΓΆscht
620 621 label_latest_revision: Aktuellste Revision
621 622 label_latest_revision_plural: Aktuellste Revisionen
622 623 label_view_revisions: Revisionen anzeigen
623 624 label_view_all_revisions: Alle Revisionen anzeigen
624 625 label_max_size: Maximale Grâße
625 626 label_sort_highest: An den Anfang
626 627 label_sort_higher: Eins hΓΆher
627 628 label_sort_lower: Eins tiefer
628 629 label_sort_lowest: Ans Ende
629 630 label_roadmap: Roadmap
630 631 label_roadmap_due_in: "FΓ€llig in {{value}}"
631 632 label_roadmap_overdue: "{{value}} verspΓ€tet"
632 633 label_roadmap_no_issues: Keine Tickets fΓΌr diese Version
633 634 label_search: Suche
634 635 label_result_plural: Resultate
635 636 label_all_words: Alle WΓΆrter
636 637 label_wiki: Wiki
637 638 label_wiki_edit: Wiki-Bearbeitung
638 639 label_wiki_edit_plural: Wiki-Bearbeitungen
639 640 label_wiki_page: Wiki-Seite
640 641 label_wiki_page_plural: Wiki-Seiten
641 642 label_index_by_title: Seiten nach Titel sortiert
642 643 label_index_by_date: Seiten nach Datum sortiert
643 644 label_current_version: GegenwΓ€rtige Version
644 645 label_preview: Vorschau
645 646 label_feed_plural: Feeds
646 647 label_changes_details: Details aller Γ„nderungen
647 648 label_issue_tracking: Tickets
648 649 label_spent_time: Aufgewendete Zeit
649 650 label_overall_spent_time: Aufgewendete Zeit aller Projekte anzeigen
650 651 label_f_hour: "{{value}} Stunde"
651 652 label_f_hour_plural: "{{value}} Stunden"
652 653 label_time_tracking: Zeiterfassung
653 654 label_change_plural: Γ„nderungen
654 655 label_statistics: Statistiken
655 656 label_commits_per_month: Übertragungen pro Monat
656 657 label_commits_per_author: Übertragungen pro Autor
657 658 label_view_diff: Unterschiede anzeigen
658 659 label_diff_inline: einspaltig
659 660 label_diff_side_by_side: nebeneinander
660 661 label_options: Optionen
661 662 label_copy_workflow_from: Workflow kopieren von
662 663 label_permissions_report: BerechtigungsΓΌbersicht
663 664 label_watched_issues: Beobachtete Tickets
664 665 label_related_issues: ZugehΓΆrige Tickets
665 666 label_applied_status: Zugewiesener Status
666 667 label_loading: Lade...
667 668 label_relation_new: Neue Beziehung
668 669 label_relation_delete: Beziehung lΓΆschen
669 670 label_relates_to: Beziehung mit
670 671 label_duplicates: Duplikat von
671 672 label_duplicated_by: Dupliziert durch
672 673 label_blocks: Blockiert
673 674 label_blocked_by: Blockiert durch
674 675 label_precedes: VorgΓ€nger von
675 676 label_follows: folgt
676 677 label_end_to_start: Ende - Anfang
677 678 label_end_to_end: Ende - Ende
678 679 label_start_to_start: Anfang - Anfang
679 680 label_start_to_end: Anfang - Ende
680 681 label_stay_logged_in: Angemeldet bleiben
681 682 label_disabled: gesperrt
682 683 label_show_completed_versions: Abgeschlossene Versionen anzeigen
683 684 label_me: ich
684 685 label_board: Forum
685 686 label_board_new: Neues Forum
686 687 label_board_plural: Foren
687 688 label_board_locked: Gesperrt
688 689 label_board_sticky: Wichtig (immer oben)
689 690 label_topic_plural: Themen
690 691 label_message_plural: ForenbeitrΓ€ge
691 692 label_message_last: Letzter Forenbeitrag
692 693 label_message_new: Neues Thema
693 694 label_message_posted: Forenbeitrag hinzugefΓΌgt
694 695 label_reply_plural: Antworten
695 696 label_send_information: Sende Kontoinformationen zum Benutzer
696 697 label_year: Jahr
697 698 label_month: Monat
698 699 label_week: Woche
699 700 label_date_from: Von
700 701 label_date_to: Bis
701 702 label_language_based: SprachabhΓ€ngig
702 703 label_sort_by: "Sortiert nach {{value}}"
703 704 label_send_test_email: Test-E-Mail senden
704 705 label_feeds_access_key: RSS-ZugriffsschlΓΌssel
705 706 label_missing_feeds_access_key: Der RSS-ZugriffsschlΓΌssel fehlt.
706 707 label_feeds_access_key_created_on: "Atom-ZugriffsschlΓΌssel vor {{value}} erstellt"
707 708 label_module_plural: Module
708 709 label_added_time_by: "Von {{author}} vor {{age}} hinzugefΓΌgt"
709 710 label_updated_time_by: "Von {{author}} vor {{age}} aktualisiert"
710 711 label_updated_time: "Vor {{value}} aktualisiert"
711 712 label_jump_to_a_project: Zu einem Projekt springen...
712 713 label_file_plural: Dateien
713 714 label_changeset_plural: Changesets
714 715 label_default_columns: Standard-Spalten
715 716 label_no_change_option: (Keine Γ„nderung)
716 717 label_bulk_edit_selected_issues: Alle ausgewΓ€hlten Tickets bearbeiten
717 718 label_theme: Stil
718 719 label_default: Standard
719 720 label_search_titles_only: Nur Titel durchsuchen
720 721 label_user_mail_option_all: "FΓΌr alle Ereignisse in all meinen Projekten"
721 722 label_user_mail_option_selected: "FΓΌr alle Ereignisse in den ausgewΓ€hlten Projekten..."
722 723 label_user_mail_option_none: "Nur fΓΌr Dinge, die ich beobachte oder an denen ich beteiligt bin"
723 724 label_user_mail_no_self_notified: "Ich mΓΆchte nicht ΓΌber Γ„nderungen benachrichtigt werden, die ich selbst durchfΓΌhre."
724 725 label_registration_activation_by_email: Kontoaktivierung durch E-Mail
725 726 label_registration_manual_activation: Manuelle Kontoaktivierung
726 727 label_registration_automatic_activation: Automatische Kontoaktivierung
727 728 label_display_per_page: "Pro Seite: {{value}}"
728 729 label_age: GeΓ€ndert vor
729 730 label_change_properties: Eigenschaften Γ€ndern
730 731 label_general: Allgemein
731 732 label_more: Mehr
732 733 label_scm: Versionskontrollsystem
733 734 label_plugins: Plugins
734 735 label_ldap_authentication: LDAP-Authentifizierung
735 736 label_downloads_abbr: D/L
736 737 label_optional_description: Beschreibung (optional)
737 738 label_add_another_file: Eine weitere Datei hinzufΓΌgen
738 739 label_preferences: PrΓ€ferenzen
739 740 label_chronological_order: in zeitlicher Reihenfolge
740 741 label_reverse_chronological_order: in umgekehrter zeitlicher Reihenfolge
741 742 label_planning: Terminplanung
742 743 label_incoming_emails: Eingehende E-Mails
743 744 label_generate_key: Generieren
744 745 label_issue_watchers: Beobachter
745 746 label_example: Beispiel
746 747 label_display: Anzeige
747 748 label_sort: Sortierung
748 749 label_ascending: Aufsteigend
749 750 label_descending: Absteigend
750 751 label_date_from_to: von {{start}} bis {{end}}
751 752 label_wiki_content_added: Die Wiki-Seite wurde erfolgreich hinzugefΓΌgt.
752 753 label_wiki_content_updated: Die Wiki-Seite wurde erfolgreich aktualisiert.
753 754 label_group: Gruppe
754 755 label_group_plural: Gruppen
755 756 label_group_new: Neue Gruppe
756 757 label_time_entry_plural: BenΓΆtigte Zeit
757 758 label_version_sharing_none: Nicht gemeinsam verwenden
758 759 label_version_sharing_descendants: Mit Unterprojekten
759 760 label_version_sharing_hierarchy: Mit Projekthierarchie
760 761 label_version_sharing_tree: Mit Projektbaum
761 762 label_version_sharing_system: Mit allen Projekten
762 763 label_update_issue_done_ratios: Ticket-Fortschritt aktualisieren
763 764 label_copy_source: Quelle
764 765 label_copy_target: Ziel
765 766 label_copy_same_as_target: So wie das Ziel
766 767 label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden
767 768 label_api_access_key: API-ZugriffsschlΓΌssel
768 769 label_missing_api_access_key: Der API-ZugriffsschlΓΌssel fehlt.
769 770 label_api_access_key_created_on: Der API-ZugriffsschlΓΌssel wurde vor {{value}} erstellt
770 771
771 772 button_login: Anmelden
772 773 button_submit: OK
773 774 button_save: Speichern
774 775 button_check_all: Alles auswΓ€hlen
775 776 button_uncheck_all: Alles abwΓ€hlen
776 777 button_delete: LΓΆschen
777 778 button_create: Anlegen
778 779 button_create_and_continue: Anlegen + nΓ€chstes Ticket
779 780 button_test: Testen
780 781 button_edit: Bearbeiten
781 782 button_add: HinzufΓΌgen
782 783 button_change: Wechseln
783 784 button_apply: Anwenden
784 785 button_clear: ZurΓΌcksetzen
785 786 button_lock: Sperren
786 787 button_unlock: Entsperren
787 788 button_download: Download
788 789 button_list: Liste
789 790 button_view: Anzeigen
790 791 button_move: Verschieben
791 792 button_move_and_follow: Verschieben und Ticket anzeigen
792 793 button_back: ZurΓΌck
793 794 button_cancel: Abbrechen
794 795 button_activate: Aktivieren
795 796 button_sort: Sortieren
796 797 button_log_time: Aufwand buchen
797 798 button_rollback: Auf diese Version zurΓΌcksetzen
798 799 button_watch: Beobachten
799 800 button_unwatch: Nicht beobachten
800 801 button_reply: Antworten
801 802 button_archive: Archivieren
802 803 button_unarchive: Entarchivieren
803 804 button_reset: ZurΓΌcksetzen
804 805 button_rename: Umbenennen
805 806 button_change_password: Kennwort Γ€ndern
806 807 button_copy: Kopieren
807 808 button_copy_and_follow: Kopieren und Ticket anzeigen
808 809 button_annotate: Annotieren
809 810 button_update: Aktualisieren
810 811 button_configure: Konfigurieren
811 812 button_quote: Zitieren
812 813 button_duplicate: Duplizieren
813 814 button_show: Anzeigen
814 815
815 816 status_active: aktiv
816 817 status_registered: angemeldet
817 818 status_locked: gesperrt
818 819
819 820 version_status_closed: abgeschlossen
820 821 version_status_locked: gesperrt
821 822 version_status_open: offen
822 823
823 824 field_active: Aktiv
824 825
825 826 text_select_mail_notifications: Bitte wΓ€hlen Sie die Aktionen aus, fΓΌr die eine Mailbenachrichtigung gesendet werden soll.
826 827 text_regexp_info: z. B. ^[A-Z0-9]+$
827 828 text_min_max_length_info: 0 heißt keine BeschrÀnkung
828 829 text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt lΓΆschen wollen?
829 830 text_subprojects_destroy_warning: "Dessen Unterprojekte ({{value}}) werden ebenfalls gelΓΆscht."
830 831 text_workflow_edit: Workflow zum Bearbeiten auswΓ€hlen
831 832 text_are_you_sure: Sind Sie sicher?
832 833 text_journal_changed: "{{label}} wurde von {{old}} zu {{new}} geΓ€ndert"
833 834 text_journal_set_to: "{{label}} wurde auf {{value}} gesetzt"
834 835 text_journal_deleted: "{{label}} {{old}} wurde gelΓΆscht"
835 836 text_journal_added: "{{label}} {{value}} wurde hinzugefΓΌgt"
836 837 text_tip_task_begin_day: Aufgabe, die an diesem Tag beginnt
837 838 text_tip_task_end_day: Aufgabe, die an diesem Tag endet
838 839 text_tip_task_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet
839 840 text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern und Bindestriche erlaubt.<br />Einmal gespeichert, kann die Kennung nicht mehr geΓ€ndert werden.'
840 841 text_caracters_maximum: "Max. {{count}} Zeichen."
841 842 text_caracters_minimum: "Muss mindestens {{count}} Zeichen lang sein."
842 843 text_length_between: "LΓ€nge zwischen {{min}} und {{max}} Zeichen."
843 844 text_tracker_no_workflow: Kein Workflow fΓΌr diesen Tracker definiert.
844 845 text_unallowed_characters: Nicht erlaubte Zeichen
845 846 text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt).
846 847 text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert).
847 848 text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen
848 849 text_issue_added: "Ticket {{id}} wurde erstellt von {{author}}."
849 850 text_issue_updated: "Ticket {{id}} wurde aktualisiert von {{author}}."
850 851 text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sΓ€mtlichem Inhalt lΓΆschen mΓΆchten?
851 852 text_issue_category_destroy_question: "Einige Tickets ({{count}}) sind dieser Kategorie zugeodnet. Was mΓΆchten Sie tun?"
852 853 text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen
853 854 text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen
854 855 text_user_mail_option: "FΓΌr nicht ausgewΓ€hlte Projekte werden Sie nur Benachrichtigungen fΓΌr Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)."
855 856 text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, kΓΆnnen Sie sie abΓ€ndern."
856 857 text_load_default_configuration: Standard-Konfiguration laden
857 858 text_status_changed_by_changeset: "Status geΓ€ndert durch Changeset {{value}}."
858 859 text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewΓ€hlten Tickets lΓΆschen mΓΆchten?'
859 860 text_select_project_modules: 'Bitte wΓ€hlen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:'
860 861 text_default_administrator_account_changed: Administrator-Kennwort geΓ€ndert
861 862 text_file_repository_writable: Verzeichnis fΓΌr Dateien beschreibbar
862 863 text_plugin_assets_writable: Verzeichnis fΓΌr Plugin-Assets beschreibbar
863 864 text_rmagick_available: RMagick verfΓΌgbar (optional)
864 865 text_destroy_time_entries_question: Es wurden bereits {{hours}} Stunden auf dieses Ticket gebucht. Was soll mit den AufwΓ€nden geschehen?
865 866 text_destroy_time_entries: Gebuchte AufwΓ€nde lΓΆschen
866 867 text_assign_time_entries_to_project: Gebuchte AufwΓ€nde dem Projekt zuweisen
867 868 text_reassign_time_entries: 'Gebuchte AufwΓ€nde diesem Ticket zuweisen:'
868 869 text_user_wrote: "{{value}} schrieb:"
869 870 text_enumeration_destroy_question: "{{count}} Objekt(e) sind diesem Wert zugeordnet."
870 871 text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
871 872 text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen fΓΌr Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu."
872 873 text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet."
873 874 text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen ΓΌberschreitet.'
874 875 text_custom_field_possible_values_info: 'Eine Zeile pro Wert'
875 876 text_wiki_page_destroy_question: "Diese Seite hat {{descendants}} Unterseite(n). Was mΓΆchten Sie tun?"
876 877 text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene
877 878 text_wiki_page_destroy_children: LΓΆsche alle Unterseiten
878 879 text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu
879 880 text_own_membership_delete_confirmation: |-
880 881 Sie sind dabei, einige oder alle Ihre Berechtigungen zu entfernen. Es ist mΓΆglich, dass Sie danach das Projekt nicht mehr ansehen oder bearbeiten dΓΌrfen.
881 882 Sind Sie sicher, dass Sie dies tun mΓΆchten?
882 883
883 884 default_role_manager: Manager
884 885 default_role_developper: Entwickler
885 886 default_role_reporter: Reporter
886 887 default_tracker_bug: Fehler
887 888 default_tracker_feature: Feature
888 889 default_tracker_support: UnterstΓΌtzung
889 890 default_issue_status_new: Neu
890 891 default_issue_status_in_progress: In Bearbeitung
891 892 default_issue_status_resolved: GelΓΆst
892 893 default_issue_status_feedback: Feedback
893 894 default_issue_status_closed: Erledigt
894 895 default_issue_status_rejected: Abgewiesen
895 896 default_doc_category_user: Benutzerdokumentation
896 897 default_doc_category_tech: Technische Dokumentation
897 898 default_priority_low: Niedrig
898 899 default_priority_normal: Normal
899 900 default_priority_high: Hoch
900 901 default_priority_urgent: Dringend
901 902 default_priority_immediate: Sofort
902 903 default_activity_design: Design
903 904 default_activity_development: Entwicklung
904 905 enumeration_issue_priorities: Ticket-PrioritΓ€ten
905 906 enumeration_doc_categories: Dokumentenkategorien
906 907 enumeration_activities: AktivitΓ€ten (Zeiterfassung)
907 908 enumeration_system_activity: System-AktivitΓ€t
908 909 label_profile: Profil
909 910 permission_manage_subtasks: Unteraufgaben verwalten
910 911 field_parent_issue: Übergeordnete Aufgabe
911 912 label_subtask_plural: Unteraufgaben
912 913 label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts.
913 914 error_can_not_delete_custom_field: Kann das benutzerdefinierte Feld nicht lΓΆschen.
914 915 error_unable_to_connect: Fehler beim Verbinden ({{value}})
915 916 error_can_not_remove_role: Diese Rolle wird verwendet und kann nicht gelΓΆscht werden.
916 917 error_can_not_delete_tracker: Dieser Tracker enthΓ€lt Tickets und kann nicht gelΓΆscht werden.
917 918 field_principal: Principal
918 919 label_my_page_block: My page block
919 920 notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
920 921 text_zoom_out: Zoom out
921 922 text_zoom_in: Zoom in
@@ -1,904 +1,905
1 1 en:
2 2 date:
3 3 formats:
4 4 # Use the strftime parameters for formats.
5 5 # When no format has been given, it uses default.
6 6 # You can provide other formats here if you like!
7 7 default: "%m/%d/%Y"
8 8 short: "%b %d"
9 9 long: "%B %d, %Y"
10 10
11 11 day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
12 12 abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
13 13
14 14 # Don't forget the nil at the beginning; there's no such thing as a 0th month
15 15 month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
16 16 abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
17 17 # Used in date_select and datime_select.
18 18 order: [ :year, :month, :day ]
19 19
20 20 time:
21 21 formats:
22 22 default: "%m/%d/%Y %I:%M %p"
23 23 time: "%I:%M %p"
24 24 short: "%d %b %H:%M"
25 25 long: "%B %d, %Y %H:%M"
26 26 am: "am"
27 27 pm: "pm"
28 28
29 29 datetime:
30 30 distance_in_words:
31 31 half_a_minute: "half a minute"
32 32 less_than_x_seconds:
33 33 one: "less than 1 second"
34 34 other: "less than {{count}} seconds"
35 35 x_seconds:
36 36 one: "1 second"
37 37 other: "{{count}} seconds"
38 38 less_than_x_minutes:
39 39 one: "less than a minute"
40 40 other: "less than {{count}} minutes"
41 41 x_minutes:
42 42 one: "1 minute"
43 43 other: "{{count}} minutes"
44 44 about_x_hours:
45 45 one: "about 1 hour"
46 46 other: "about {{count}} hours"
47 47 x_days:
48 48 one: "1 day"
49 49 other: "{{count}} days"
50 50 about_x_months:
51 51 one: "about 1 month"
52 52 other: "about {{count}} months"
53 53 x_months:
54 54 one: "1 month"
55 55 other: "{{count}} months"
56 56 about_x_years:
57 57 one: "about 1 year"
58 58 other: "about {{count}} years"
59 59 over_x_years:
60 60 one: "over 1 year"
61 61 other: "over {{count}} years"
62 62 almost_x_years:
63 63 one: "almost 1 year"
64 64 other: "almost {{count}} years"
65 65
66 66 number:
67 67 human:
68 68 format:
69 69 delimiter: ""
70 70 precision: 1
71 71 storage_units:
72 72 format: "%n %u"
73 73 units:
74 74 byte:
75 75 one: "Byte"
76 76 other: "Bytes"
77 77 kb: "KB"
78 78 mb: "MB"
79 79 gb: "GB"
80 80 tb: "TB"
81 81
82 82
83 83 # Used in array.to_sentence.
84 84 support:
85 85 array:
86 86 sentence_connector: "and"
87 87 skip_last_comma: false
88 88
89 89 activerecord:
90 90 errors:
91 91 messages:
92 92 inclusion: "is not included in the list"
93 93 exclusion: "is reserved"
94 94 invalid: "is invalid"
95 95 confirmation: "doesn't match confirmation"
96 96 accepted: "must be accepted"
97 97 empty: "can't be empty"
98 98 blank: "can't be blank"
99 99 too_long: "is too long (maximum is {{count}} characters)"
100 100 too_short: "is too short (minimum is {{count}} characters)"
101 101 wrong_length: "is the wrong length (should be {{count}} characters)"
102 102 taken: "has already been taken"
103 103 not_a_number: "is not a number"
104 104 not_a_date: "is not a valid date"
105 105 greater_than: "must be greater than {{count}}"
106 106 greater_than_or_equal_to: "must be greater than or equal to {{count}}"
107 107 equal_to: "must be equal to {{count}}"
108 108 less_than: "must be less than {{count}}"
109 109 less_than_or_equal_to: "must be less than or equal to {{count}}"
110 110 odd: "must be odd"
111 111 even: "must be even"
112 112 greater_than_start_date: "must be greater than start date"
113 113 not_same_project: "doesn't belong to the same project"
114 114 circular_dependency: "This relation would create a circular dependency"
115 115 cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
116 116
117 117 actionview_instancetag_blank_option: Please select
118 118
119 119 general_text_No: 'No'
120 120 general_text_Yes: 'Yes'
121 121 general_text_no: 'no'
122 122 general_text_yes: 'yes'
123 123 general_lang_name: 'English'
124 124 general_csv_separator: ','
125 125 general_csv_decimal_separator: '.'
126 126 general_csv_encoding: ISO-8859-1
127 127 general_pdf_encoding: ISO-8859-1
128 128 general_first_day_of_week: '7'
129 129
130 130 notice_account_updated: Account was successfully updated.
131 131 notice_account_invalid_creditentials: Invalid user or password
132 132 notice_account_password_updated: Password was successfully updated.
133 133 notice_account_wrong_password: Wrong password
134 134 notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you.
135 135 notice_account_unknown_email: Unknown user.
136 136 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
137 137 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
138 138 notice_account_activated: Your account has been activated. You can now log in.
139 139 notice_successful_create: Successful creation.
140 140 notice_successful_update: Successful update.
141 141 notice_successful_delete: Successful deletion.
142 142 notice_successful_connection: Successful connection.
143 143 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
144 144 notice_locking_conflict: Data has been updated by another user.
145 145 notice_not_authorized: You are not authorized to access this page.
146 146 notice_email_sent: "An email was sent to {{value}}"
147 147 notice_email_error: "An error occurred while sending mail ({{value}})"
148 148 notice_feeds_access_key_reseted: Your RSS access key was reset.
149 149 notice_api_access_key_reseted: Your API access key was reset.
150 150 notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}."
151 151 notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
152 152 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
153 153 notice_account_pending: "Your account was created and is now pending administrator approval."
154 154 notice_default_data_loaded: Default configuration successfully loaded.
155 155 notice_unable_delete_version: Unable to delete version.
156 notice_unable_delete_time_entry: Unable to delete time log entry.
156 157 notice_issue_done_ratios_updated: Issue done ratios updated.
157 158
158 159 error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}"
159 160 error_scm_not_found: "The entry or revision was not found in the repository."
160 161 error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}"
161 162 error_scm_annotate: "The entry does not exist or can not be annotated."
162 163 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
163 164 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
164 165 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
165 166 error_can_not_delete_custom_field: Unable to delete custom field
166 167 error_can_not_delete_tracker: "This tracker contains issues and can't be deleted."
167 168 error_can_not_remove_role: "This role is in use and can not be deleted."
168 169 error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
169 170 error_can_not_archive_project: This project can not be archived
170 171 error_issue_done_ratios_not_updated: "Issue done ratios not updated."
171 172 error_workflow_copy_source: 'Please select a source tracker or role'
172 173 error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
173 174 error_unable_delete_issue_status: 'Unable to delete issue status'
174 175 error_unable_to_connect: "Unable to connect ({{value}})"
175 176 warning_attachments_not_saved: "{{count}} file(s) could not be saved."
176 177
177 178 mail_subject_lost_password: "Your {{value}} password"
178 179 mail_body_lost_password: 'To change your password, click on the following link:'
179 180 mail_subject_register: "Your {{value}} account activation"
180 181 mail_body_register: 'To activate your account, click on the following link:'
181 182 mail_body_account_information_external: "You can use your {{value}} account to log in."
182 183 mail_body_account_information: Your account information
183 184 mail_subject_account_activation_request: "{{value}} account activation request"
184 185 mail_body_account_activation_request: "A new user ({{value}}) has registered. The account is pending your approval:"
185 186 mail_subject_reminder: "{{count}} issue(s) due in the next days"
186 187 mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:"
187 188 mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
188 189 mail_body_wiki_content_added: "The '{{page}}' wiki page has been added by {{author}}."
189 190 mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
190 191 mail_body_wiki_content_updated: "The '{{page}}' wiki page has been updated by {{author}}."
191 192
192 193 gui_validation_error: 1 error
193 194 gui_validation_error_plural: "{{count}} errors"
194 195
195 196 field_name: Name
196 197 field_description: Description
197 198 field_summary: Summary
198 199 field_is_required: Required
199 200 field_firstname: Firstname
200 201 field_lastname: Lastname
201 202 field_mail: Email
202 203 field_filename: File
203 204 field_filesize: Size
204 205 field_downloads: Downloads
205 206 field_author: Author
206 207 field_created_on: Created
207 208 field_updated_on: Updated
208 209 field_field_format: Format
209 210 field_is_for_all: For all projects
210 211 field_possible_values: Possible values
211 212 field_regexp: Regular expression
212 213 field_min_length: Minimum length
213 214 field_max_length: Maximum length
214 215 field_value: Value
215 216 field_category: Category
216 217 field_title: Title
217 218 field_project: Project
218 219 field_issue: Issue
219 220 field_status: Status
220 221 field_notes: Notes
221 222 field_is_closed: Issue closed
222 223 field_is_default: Default value
223 224 field_tracker: Tracker
224 225 field_subject: Subject
225 226 field_due_date: Due date
226 227 field_assigned_to: Assigned to
227 228 field_priority: Priority
228 229 field_fixed_version: Target version
229 230 field_user: User
230 231 field_principal: Principal
231 232 field_role: Role
232 233 field_homepage: Homepage
233 234 field_is_public: Public
234 235 field_parent: Subproject of
235 236 field_is_in_roadmap: Issues displayed in roadmap
236 237 field_login: Login
237 238 field_mail_notification: Email notifications
238 239 field_admin: Administrator
239 240 field_last_login_on: Last connection
240 241 field_language: Language
241 242 field_effective_date: Date
242 243 field_password: Password
243 244 field_new_password: New password
244 245 field_password_confirmation: Confirmation
245 246 field_version: Version
246 247 field_type: Type
247 248 field_host: Host
248 249 field_port: Port
249 250 field_account: Account
250 251 field_base_dn: Base DN
251 252 field_attr_login: Login attribute
252 253 field_attr_firstname: Firstname attribute
253 254 field_attr_lastname: Lastname attribute
254 255 field_attr_mail: Email attribute
255 256 field_onthefly: On-the-fly user creation
256 257 field_start_date: Start
257 258 field_done_ratio: % Done
258 259 field_auth_source: Authentication mode
259 260 field_hide_mail: Hide my email address
260 261 field_comments: Comment
261 262 field_url: URL
262 263 field_start_page: Start page
263 264 field_subproject: Subproject
264 265 field_hours: Hours
265 266 field_activity: Activity
266 267 field_spent_on: Date
267 268 field_identifier: Identifier
268 269 field_is_filter: Used as a filter
269 270 field_issue_to: Related issue
270 271 field_delay: Delay
271 272 field_assignable: Issues can be assigned to this role
272 273 field_redirect_existing_links: Redirect existing links
273 274 field_estimated_hours: Estimated time
274 275 field_column_names: Columns
275 276 field_time_zone: Time zone
276 277 field_searchable: Searchable
277 278 field_default_value: Default value
278 279 field_comments_sorting: Display comments
279 280 field_parent_title: Parent page
280 281 field_editable: Editable
281 282 field_watcher: Watcher
282 283 field_identity_url: OpenID URL
283 284 field_content: Content
284 285 field_group_by: Group results by
285 286 field_sharing: Sharing
286 287 field_parent_issue: Parent task
287 288
288 289 setting_app_title: Application title
289 290 setting_app_subtitle: Application subtitle
290 291 setting_welcome_text: Welcome text
291 292 setting_default_language: Default language
292 293 setting_login_required: Authentication required
293 294 setting_self_registration: Self-registration
294 295 setting_attachment_max_size: Attachment max. size
295 296 setting_issues_export_limit: Issues export limit
296 297 setting_mail_from: Emission email address
297 298 setting_bcc_recipients: Blind carbon copy recipients (bcc)
298 299 setting_plain_text_mail: Plain text mail (no HTML)
299 300 setting_host_name: Host name and path
300 301 setting_text_formatting: Text formatting
301 302 setting_wiki_compression: Wiki history compression
302 303 setting_feeds_limit: Feed content limit
303 304 setting_default_projects_public: New projects are public by default
304 305 setting_autofetch_changesets: Autofetch commits
305 306 setting_sys_api_enabled: Enable WS for repository management
306 307 setting_commit_ref_keywords: Referencing keywords
307 308 setting_commit_fix_keywords: Fixing keywords
308 309 setting_autologin: Autologin
309 310 setting_date_format: Date format
310 311 setting_time_format: Time format
311 312 setting_cross_project_issue_relations: Allow cross-project issue relations
312 313 setting_issue_list_default_columns: Default columns displayed on the issue list
313 314 setting_repositories_encodings: Repositories encodings
314 315 setting_commit_logs_encoding: Commit messages encoding
315 316 setting_emails_footer: Emails footer
316 317 setting_protocol: Protocol
317 318 setting_per_page_options: Objects per page options
318 319 setting_user_format: Users display format
319 320 setting_activity_days_default: Days displayed on project activity
320 321 setting_display_subprojects_issues: Display subprojects issues on main projects by default
321 322 setting_enabled_scm: Enabled SCM
322 323 setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
323 324 setting_mail_handler_api_enabled: Enable WS for incoming emails
324 325 setting_mail_handler_api_key: API key
325 326 setting_sequential_project_identifiers: Generate sequential project identifiers
326 327 setting_gravatar_enabled: Use Gravatar user icons
327 328 setting_gravatar_default: Default Gravatar image
328 329 setting_diff_max_lines_displayed: Max number of diff lines displayed
329 330 setting_file_max_size_displayed: Max size of text files displayed inline
330 331 setting_repository_log_display_limit: Maximum number of revisions displayed on file log
331 332 setting_openid: Allow OpenID login and registration
332 333 setting_password_min_length: Minimum password length
333 334 setting_new_project_user_role_id: Role given to a non-admin user who creates a project
334 335 setting_default_projects_modules: Default enabled modules for new projects
335 336 setting_issue_done_ratio: Calculate the issue done ratio with
336 337 setting_issue_done_ratio_issue_field: Use the issue field
337 338 setting_issue_done_ratio_issue_status: Use the issue status
338 339 setting_start_of_week: Start calendars on
339 340 setting_rest_api_enabled: Enable REST web service
340 341 setting_cache_formatted_text: Cache formatted text
341 342
342 343 permission_add_project: Create project
343 344 permission_add_subprojects: Create subprojects
344 345 permission_edit_project: Edit project
345 346 permission_select_project_modules: Select project modules
346 347 permission_manage_members: Manage members
347 348 permission_manage_project_activities: Manage project activities
348 349 permission_manage_versions: Manage versions
349 350 permission_manage_categories: Manage issue categories
350 351 permission_view_issues: View Issues
351 352 permission_add_issues: Add issues
352 353 permission_edit_issues: Edit issues
353 354 permission_manage_issue_relations: Manage issue relations
354 355 permission_add_issue_notes: Add notes
355 356 permission_edit_issue_notes: Edit notes
356 357 permission_edit_own_issue_notes: Edit own notes
357 358 permission_move_issues: Move issues
358 359 permission_delete_issues: Delete issues
359 360 permission_manage_public_queries: Manage public queries
360 361 permission_save_queries: Save queries
361 362 permission_view_gantt: View gantt chart
362 363 permission_view_calendar: View calendar
363 364 permission_view_issue_watchers: View watchers list
364 365 permission_add_issue_watchers: Add watchers
365 366 permission_delete_issue_watchers: Delete watchers
366 367 permission_log_time: Log spent time
367 368 permission_view_time_entries: View spent time
368 369 permission_edit_time_entries: Edit time logs
369 370 permission_edit_own_time_entries: Edit own time logs
370 371 permission_manage_news: Manage news
371 372 permission_comment_news: Comment news
372 373 permission_manage_documents: Manage documents
373 374 permission_view_documents: View documents
374 375 permission_manage_files: Manage files
375 376 permission_view_files: View files
376 377 permission_manage_wiki: Manage wiki
377 378 permission_rename_wiki_pages: Rename wiki pages
378 379 permission_delete_wiki_pages: Delete wiki pages
379 380 permission_view_wiki_pages: View wiki
380 381 permission_view_wiki_edits: View wiki history
381 382 permission_edit_wiki_pages: Edit wiki pages
382 383 permission_delete_wiki_pages_attachments: Delete attachments
383 384 permission_protect_wiki_pages: Protect wiki pages
384 385 permission_manage_repository: Manage repository
385 386 permission_browse_repository: Browse repository
386 387 permission_view_changesets: View changesets
387 388 permission_commit_access: Commit access
388 389 permission_manage_boards: Manage boards
389 390 permission_view_messages: View messages
390 391 permission_add_messages: Post messages
391 392 permission_edit_messages: Edit messages
392 393 permission_edit_own_messages: Edit own messages
393 394 permission_delete_messages: Delete messages
394 395 permission_delete_own_messages: Delete own messages
395 396 permission_export_wiki_pages: Export wiki pages
396 397 permission_manage_subtasks: Manage subtasks
397 398
398 399 project_module_issue_tracking: Issue tracking
399 400 project_module_time_tracking: Time tracking
400 401 project_module_news: News
401 402 project_module_documents: Documents
402 403 project_module_files: Files
403 404 project_module_wiki: Wiki
404 405 project_module_repository: Repository
405 406 project_module_boards: Boards
406 407
407 408 label_user: User
408 409 label_user_plural: Users
409 410 label_user_new: New user
410 411 label_user_anonymous: Anonymous
411 412 label_project: Project
412 413 label_project_new: New project
413 414 label_project_plural: Projects
414 415 label_x_projects:
415 416 zero: no projects
416 417 one: 1 project
417 418 other: "{{count}} projects"
418 419 label_project_all: All Projects
419 420 label_project_latest: Latest projects
420 421 label_issue: Issue
421 422 label_issue_new: New issue
422 423 label_issue_plural: Issues
423 424 label_issue_view_all: View all issues
424 425 label_issues_by: "Issues by {{value}}"
425 426 label_issue_added: Issue added
426 427 label_issue_updated: Issue updated
427 428 label_document: Document
428 429 label_document_new: New document
429 430 label_document_plural: Documents
430 431 label_document_added: Document added
431 432 label_role: Role
432 433 label_role_plural: Roles
433 434 label_role_new: New role
434 435 label_role_and_permissions: Roles and permissions
435 436 label_member: Member
436 437 label_member_new: New member
437 438 label_member_plural: Members
438 439 label_tracker: Tracker
439 440 label_tracker_plural: Trackers
440 441 label_tracker_new: New tracker
441 442 label_workflow: Workflow
442 443 label_issue_status: Issue status
443 444 label_issue_status_plural: Issue statuses
444 445 label_issue_status_new: New status
445 446 label_issue_category: Issue category
446 447 label_issue_category_plural: Issue categories
447 448 label_issue_category_new: New category
448 449 label_custom_field: Custom field
449 450 label_custom_field_plural: Custom fields
450 451 label_custom_field_new: New custom field
451 452 label_enumerations: Enumerations
452 453 label_enumeration_new: New value
453 454 label_information: Information
454 455 label_information_plural: Information
455 456 label_please_login: Please log in
456 457 label_register: Register
457 458 label_login_with_open_id_option: or login with OpenID
458 459 label_password_lost: Lost password
459 460 label_home: Home
460 461 label_my_page: My page
461 462 label_my_account: My account
462 463 label_my_projects: My projects
463 464 label_my_page_block: My page block
464 465 label_administration: Administration
465 466 label_login: Sign in
466 467 label_logout: Sign out
467 468 label_help: Help
468 469 label_reported_issues: Reported issues
469 470 label_assigned_to_me_issues: Issues assigned to me
470 471 label_last_login: Last connection
471 472 label_registered_on: Registered on
472 473 label_activity: Activity
473 474 label_overall_activity: Overall activity
474 475 label_user_activity: "{{value}}'s activity"
475 476 label_new: New
476 477 label_logged_as: Logged in as
477 478 label_environment: Environment
478 479 label_authentication: Authentication
479 480 label_auth_source: Authentication mode
480 481 label_auth_source_new: New authentication mode
481 482 label_auth_source_plural: Authentication modes
482 483 label_subproject_plural: Subprojects
483 484 label_subproject_new: New subproject
484 485 label_and_its_subprojects: "{{value}} and its subprojects"
485 486 label_min_max_length: Min - Max length
486 487 label_list: List
487 488 label_date: Date
488 489 label_integer: Integer
489 490 label_float: Float
490 491 label_boolean: Boolean
491 492 label_string: Text
492 493 label_text: Long text
493 494 label_attribute: Attribute
494 495 label_attribute_plural: Attributes
495 496 label_download: "{{count}} Download"
496 497 label_download_plural: "{{count}} Downloads"
497 498 label_no_data: No data to display
498 499 label_change_status: Change status
499 500 label_history: History
500 501 label_attachment: File
501 502 label_attachment_new: New file
502 503 label_attachment_delete: Delete file
503 504 label_attachment_plural: Files
504 505 label_file_added: File added
505 506 label_report: Report
506 507 label_report_plural: Reports
507 508 label_news: News
508 509 label_news_new: Add news
509 510 label_news_plural: News
510 511 label_news_latest: Latest news
511 512 label_news_view_all: View all news
512 513 label_news_added: News added
513 514 label_settings: Settings
514 515 label_overview: Overview
515 516 label_version: Version
516 517 label_version_new: New version
517 518 label_version_plural: Versions
518 519 label_close_versions: Close completed versions
519 520 label_confirmation: Confirmation
520 521 label_export_to: 'Also available in:'
521 522 label_read: Read...
522 523 label_public_projects: Public projects
523 524 label_open_issues: open
524 525 label_open_issues_plural: open
525 526 label_closed_issues: closed
526 527 label_closed_issues_plural: closed
527 528 label_x_open_issues_abbr_on_total:
528 529 zero: 0 open / {{total}}
529 530 one: 1 open / {{total}}
530 531 other: "{{count}} open / {{total}}"
531 532 label_x_open_issues_abbr:
532 533 zero: 0 open
533 534 one: 1 open
534 535 other: "{{count}} open"
535 536 label_x_closed_issues_abbr:
536 537 zero: 0 closed
537 538 one: 1 closed
538 539 other: "{{count}} closed"
539 540 label_total: Total
540 541 label_permissions: Permissions
541 542 label_current_status: Current status
542 543 label_new_statuses_allowed: New statuses allowed
543 544 label_all: all
544 545 label_none: none
545 546 label_nobody: nobody
546 547 label_next: Next
547 548 label_previous: Previous
548 549 label_used_by: Used by
549 550 label_details: Details
550 551 label_add_note: Add a note
551 552 label_per_page: Per page
552 553 label_calendar: Calendar
553 554 label_months_from: months from
554 555 label_gantt: Gantt
555 556 label_internal: Internal
556 557 label_last_changes: "last {{count}} changes"
557 558 label_change_view_all: View all changes
558 559 label_personalize_page: Personalize this page
559 560 label_comment: Comment
560 561 label_comment_plural: Comments
561 562 label_x_comments:
562 563 zero: no comments
563 564 one: 1 comment
564 565 other: "{{count}} comments"
565 566 label_comment_add: Add a comment
566 567 label_comment_added: Comment added
567 568 label_comment_delete: Delete comments
568 569 label_query: Custom query
569 570 label_query_plural: Custom queries
570 571 label_query_new: New query
571 572 label_filter_add: Add filter
572 573 label_filter_plural: Filters
573 574 label_equals: is
574 575 label_not_equals: is not
575 576 label_in_less_than: in less than
576 577 label_in_more_than: in more than
577 578 label_greater_or_equal: '>='
578 579 label_less_or_equal: '<='
579 580 label_in: in
580 581 label_today: today
581 582 label_all_time: all time
582 583 label_yesterday: yesterday
583 584 label_this_week: this week
584 585 label_last_week: last week
585 586 label_last_n_days: "last {{count}} days"
586 587 label_this_month: this month
587 588 label_last_month: last month
588 589 label_this_year: this year
589 590 label_date_range: Date range
590 591 label_less_than_ago: less than days ago
591 592 label_more_than_ago: more than days ago
592 593 label_ago: days ago
593 594 label_contains: contains
594 595 label_not_contains: doesn't contain
595 596 label_day_plural: days
596 597 label_repository: Repository
597 598 label_repository_plural: Repositories
598 599 label_browse: Browse
599 600 label_modification: "{{count}} change"
600 601 label_modification_plural: "{{count}} changes"
601 602 label_branch: Branch
602 603 label_tag: Tag
603 604 label_revision: Revision
604 605 label_revision_plural: Revisions
605 606 label_revision_id: "Revision {{value}}"
606 607 label_associated_revisions: Associated revisions
607 608 label_added: added
608 609 label_modified: modified
609 610 label_copied: copied
610 611 label_renamed: renamed
611 612 label_deleted: deleted
612 613 label_latest_revision: Latest revision
613 614 label_latest_revision_plural: Latest revisions
614 615 label_view_revisions: View revisions
615 616 label_view_all_revisions: View all revisions
616 617 label_max_size: Maximum size
617 618 label_sort_highest: Move to top
618 619 label_sort_higher: Move up
619 620 label_sort_lower: Move down
620 621 label_sort_lowest: Move to bottom
621 622 label_roadmap: Roadmap
622 623 label_roadmap_due_in: "Due in {{value}}"
623 624 label_roadmap_overdue: "{{value}} late"
624 625 label_roadmap_no_issues: No issues for this version
625 626 label_search: Search
626 627 label_result_plural: Results
627 628 label_all_words: All words
628 629 label_wiki: Wiki
629 630 label_wiki_edit: Wiki edit
630 631 label_wiki_edit_plural: Wiki edits
631 632 label_wiki_page: Wiki page
632 633 label_wiki_page_plural: Wiki pages
633 634 label_index_by_title: Index by title
634 635 label_index_by_date: Index by date
635 636 label_current_version: Current version
636 637 label_preview: Preview
637 638 label_feed_plural: Feeds
638 639 label_changes_details: Details of all changes
639 640 label_issue_tracking: Issue tracking
640 641 label_spent_time: Spent time
641 642 label_overall_spent_time: Overall spent time
642 643 label_f_hour: "{{value}} hour"
643 644 label_f_hour_plural: "{{value}} hours"
644 645 label_time_tracking: Time tracking
645 646 label_change_plural: Changes
646 647 label_statistics: Statistics
647 648 label_commits_per_month: Commits per month
648 649 label_commits_per_author: Commits per author
649 650 label_view_diff: View differences
650 651 label_diff_inline: inline
651 652 label_diff_side_by_side: side by side
652 653 label_options: Options
653 654 label_copy_workflow_from: Copy workflow from
654 655 label_permissions_report: Permissions report
655 656 label_watched_issues: Watched issues
656 657 label_related_issues: Related issues
657 658 label_applied_status: Applied status
658 659 label_loading: Loading...
659 660 label_relation_new: New relation
660 661 label_relation_delete: Delete relation
661 662 label_relates_to: related to
662 663 label_duplicates: duplicates
663 664 label_duplicated_by: duplicated by
664 665 label_blocks: blocks
665 666 label_blocked_by: blocked by
666 667 label_precedes: precedes
667 668 label_follows: follows
668 669 label_end_to_start: end to start
669 670 label_end_to_end: end to end
670 671 label_start_to_start: start to start
671 672 label_start_to_end: start to end
672 673 label_stay_logged_in: Stay logged in
673 674 label_disabled: disabled
674 675 label_show_completed_versions: Show completed versions
675 676 label_me: me
676 677 label_board: Forum
677 678 label_board_new: New forum
678 679 label_board_plural: Forums
679 680 label_board_locked: Locked
680 681 label_board_sticky: Sticky
681 682 label_topic_plural: Topics
682 683 label_message_plural: Messages
683 684 label_message_last: Last message
684 685 label_message_new: New message
685 686 label_message_posted: Message added
686 687 label_reply_plural: Replies
687 688 label_send_information: Send account information to the user
688 689 label_year: Year
689 690 label_month: Month
690 691 label_week: Week
691 692 label_date_from: From
692 693 label_date_to: To
693 694 label_language_based: Based on user's language
694 695 label_sort_by: "Sort by {{value}}"
695 696 label_send_test_email: Send a test email
696 697 label_feeds_access_key: RSS access key
697 698 label_missing_feeds_access_key: Missing a RSS access key
698 699 label_feeds_access_key_created_on: "RSS access key created {{value}} ago"
699 700 label_module_plural: Modules
700 701 label_added_time_by: "Added by {{author}} {{age}} ago"
701 702 label_updated_time_by: "Updated by {{author}} {{age}} ago"
702 703 label_updated_time: "Updated {{value}} ago"
703 704 label_jump_to_a_project: Jump to a project...
704 705 label_file_plural: Files
705 706 label_changeset_plural: Changesets
706 707 label_default_columns: Default columns
707 708 label_no_change_option: (No change)
708 709 label_bulk_edit_selected_issues: Bulk edit selected issues
709 710 label_theme: Theme
710 711 label_default: Default
711 712 label_search_titles_only: Search titles only
712 713 label_user_mail_option_all: "For any event on all my projects"
713 714 label_user_mail_option_selected: "For any event on the selected projects only..."
714 715 label_user_mail_option_none: "Only for things I watch or I'm involved in"
715 716 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
716 717 label_registration_activation_by_email: account activation by email
717 718 label_registration_manual_activation: manual account activation
718 719 label_registration_automatic_activation: automatic account activation
719 720 label_display_per_page: "Per page: {{value}}"
720 721 label_age: Age
721 722 label_change_properties: Change properties
722 723 label_general: General
723 724 label_more: More
724 725 label_scm: SCM
725 726 label_plugins: Plugins
726 727 label_ldap_authentication: LDAP authentication
727 728 label_downloads_abbr: D/L
728 729 label_optional_description: Optional description
729 730 label_add_another_file: Add another file
730 731 label_preferences: Preferences
731 732 label_chronological_order: In chronological order
732 733 label_reverse_chronological_order: In reverse chronological order
733 734 label_planning: Planning
734 735 label_incoming_emails: Incoming emails
735 736 label_generate_key: Generate a key
736 737 label_issue_watchers: Watchers
737 738 label_example: Example
738 739 label_display: Display
739 740 label_sort: Sort
740 741 label_ascending: Ascending
741 742 label_descending: Descending
742 743 label_date_from_to: From {{start}} to {{end}}
743 744 label_wiki_content_added: Wiki page added
744 745 label_wiki_content_updated: Wiki page updated
745 746 label_group: Group
746 747 label_group_plural: Groups
747 748 label_group_new: New group
748 749 label_time_entry_plural: Spent time
749 750 label_version_sharing_none: Not shared
750 751 label_version_sharing_descendants: With subprojects
751 752 label_version_sharing_hierarchy: With project hierarchy
752 753 label_version_sharing_tree: With project tree
753 754 label_version_sharing_system: With all projects
754 755 label_update_issue_done_ratios: Update issue done ratios
755 756 label_copy_source: Source
756 757 label_copy_target: Target
757 758 label_copy_same_as_target: Same as target
758 759 label_display_used_statuses_only: Only display statuses that are used by this tracker
759 760 label_api_access_key: API access key
760 761 label_missing_api_access_key: Missing an API access key
761 762 label_api_access_key_created_on: "API access key created {{value}} ago"
762 763 label_profile: Profile
763 764 label_subtask_plural: Subtasks
764 765 label_project_copy_notifications: Send email notifications during the project copy
765 766
766 767 button_login: Login
767 768 button_submit: Submit
768 769 button_save: Save
769 770 button_check_all: Check all
770 771 button_uncheck_all: Uncheck all
771 772 button_delete: Delete
772 773 button_create: Create
773 774 button_create_and_continue: Create and continue
774 775 button_test: Test
775 776 button_edit: Edit
776 777 button_add: Add
777 778 button_change: Change
778 779 button_apply: Apply
779 780 button_clear: Clear
780 781 button_lock: Lock
781 782 button_unlock: Unlock
782 783 button_download: Download
783 784 button_list: List
784 785 button_view: View
785 786 button_move: Move
786 787 button_move_and_follow: Move and follow
787 788 button_back: Back
788 789 button_cancel: Cancel
789 790 button_activate: Activate
790 791 button_sort: Sort
791 792 button_log_time: Log time
792 793 button_rollback: Rollback to this version
793 794 button_watch: Watch
794 795 button_unwatch: Unwatch
795 796 button_reply: Reply
796 797 button_archive: Archive
797 798 button_unarchive: Unarchive
798 799 button_reset: Reset
799 800 button_rename: Rename
800 801 button_change_password: Change password
801 802 button_copy: Copy
802 803 button_copy_and_follow: Copy and follow
803 804 button_annotate: Annotate
804 805 button_update: Update
805 806 button_configure: Configure
806 807 button_quote: Quote
807 808 button_duplicate: Duplicate
808 809 button_show: Show
809 810
810 811 status_active: active
811 812 status_registered: registered
812 813 status_locked: locked
813 814
814 815 version_status_open: open
815 816 version_status_locked: locked
816 817 version_status_closed: closed
817 818
818 819 field_active: Active
819 820
820 821 text_select_mail_notifications: Select actions for which email notifications should be sent.
821 822 text_regexp_info: eg. ^[A-Z0-9]+$
822 823 text_min_max_length_info: 0 means no restriction
823 824 text_project_destroy_confirmation: Are you sure you want to delete this project and related data ?
824 825 text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted."
825 826 text_workflow_edit: Select a role and a tracker to edit the workflow
826 827 text_are_you_sure: Are you sure ?
827 828 text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
828 829 text_journal_set_to: "{{label}} set to {{value}}"
829 830 text_journal_deleted: "{{label}} deleted ({{old}})"
830 831 text_journal_added: "{{label}} {{value}} added"
831 832 text_tip_task_begin_day: task beginning this day
832 833 text_tip_task_end_day: task ending this day
833 834 text_tip_task_begin_end_day: task beginning and ending this day
834 835 text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.<br />Once saved, the identifier can not be changed.'
835 836 text_caracters_maximum: "{{count}} characters maximum."
836 837 text_caracters_minimum: "Must be at least {{count}} characters long."
837 838 text_length_between: "Length between {{min}} and {{max}} characters."
838 839 text_tracker_no_workflow: No workflow defined for this tracker
839 840 text_unallowed_characters: Unallowed characters
840 841 text_comma_separated: Multiple values allowed (comma separated).
841 842 text_line_separated: Multiple values allowed (one line for each value).
842 843 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
843 844 text_issue_added: "Issue {{id}} has been reported by {{author}}."
844 845 text_issue_updated: "Issue {{id}} has been updated by {{author}}."
845 846 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
846 847 text_issue_category_destroy_question: "Some issues ({{count}}) are assigned to this category. What do you want to do ?"
847 848 text_issue_category_destroy_assignments: Remove category assignments
848 849 text_issue_category_reassign_to: Reassign issues to this category
849 850 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)."
850 851 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."
851 852 text_load_default_configuration: Load the default configuration
852 853 text_status_changed_by_changeset: "Applied in changeset {{value}}."
853 854 text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
854 855 text_select_project_modules: 'Select modules to enable for this project:'
855 856 text_default_administrator_account_changed: Default administrator account changed
856 857 text_file_repository_writable: Attachments directory writable
857 858 text_plugin_assets_writable: Plugin assets directory writable
858 859 text_rmagick_available: RMagick available (optional)
859 860 text_destroy_time_entries_question: "{{hours}} hours were reported on the issues you are about to delete. What do you want to do ?"
860 861 text_destroy_time_entries: Delete reported hours
861 862 text_assign_time_entries_to_project: Assign reported hours to the project
862 863 text_reassign_time_entries: 'Reassign reported hours to this issue:'
863 864 text_user_wrote: "{{value}} wrote:"
864 865 text_enumeration_destroy_question: "{{count}} objects are assigned to this value."
865 866 text_enumeration_category_reassign_to: 'Reassign them to this value:'
866 867 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."
867 868 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."
868 869 text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
869 870 text_custom_field_possible_values_info: 'One line for each value'
870 871 text_wiki_page_destroy_question: "This page has {{descendants}} child page(s) and descendant(s). What do you want to do?"
871 872 text_wiki_page_nullify_children: "Keep child pages as root pages"
872 873 text_wiki_page_destroy_children: "Delete child pages and all their descendants"
873 874 text_wiki_page_reassign_children: "Reassign child pages to this parent page"
874 875 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?"
875 876 text_zoom_in: Zoom in
876 877 text_zoom_out: Zoom out
877 878
878 879 default_role_manager: Manager
879 880 default_role_developper: Developer
880 881 default_role_reporter: Reporter
881 882 default_tracker_bug: Bug
882 883 default_tracker_feature: Feature
883 884 default_tracker_support: Support
884 885 default_issue_status_new: New
885 886 default_issue_status_in_progress: In Progress
886 887 default_issue_status_resolved: Resolved
887 888 default_issue_status_feedback: Feedback
888 889 default_issue_status_closed: Closed
889 890 default_issue_status_rejected: Rejected
890 891 default_doc_category_user: User documentation
891 892 default_doc_category_tech: Technical documentation
892 893 default_priority_low: Low
893 894 default_priority_normal: Normal
894 895 default_priority_high: High
895 896 default_priority_urgent: Urgent
896 897 default_priority_immediate: Immediate
897 898 default_activity_design: Design
898 899 default_activity_development: Development
899 900
900 901 enumeration_issue_priorities: Issue priorities
901 902 enumeration_doc_categories: Document categories
902 903 enumeration_activities: Activities (time tracking)
903 904 enumeration_system_activity: System Activity
904 905
@@ -1,340 +1,358
1 1 # -*- coding: utf-8 -*-
2 2 # redMine - project management software
3 3 # Copyright (C) 2006-2007 Jean-Philippe Lang
4 4 #
5 5 # This program is free software; you can redistribute it and/or
6 6 # modify it under the terms of the GNU General Public License
7 7 # as published by the Free Software Foundation; either version 2
8 8 # of the License, or (at your option) any later version.
9 9 #
10 10 # This program is distributed in the hope that it will be useful,
11 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 # GNU General Public License for more details.
14 14 #
15 15 # You should have received a copy of the GNU General Public License
16 16 # along with this program; if not, write to the Free Software
17 17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 18
19 19 require File.dirname(__FILE__) + '/../test_helper'
20 20 require 'timelog_controller'
21 21
22 22 # Re-raise errors caught by the controller.
23 23 class TimelogController; def rescue_action(e) raise e end; end
24 24
25 25 class TimelogControllerTest < ActionController::TestCase
26 26 fixtures :projects, :enabled_modules, :roles, :members, :member_roles, :issues, :time_entries, :users, :trackers, :enumerations, :issue_statuses, :custom_fields, :custom_values
27 27
28 28 def setup
29 29 @controller = TimelogController.new
30 30 @request = ActionController::TestRequest.new
31 31 @response = ActionController::TestResponse.new
32 32 end
33 33
34 34 def test_get_edit
35 35 @request.session[:user_id] = 3
36 36 get :edit, :project_id => 1
37 37 assert_response :success
38 38 assert_template 'edit'
39 39 # Default activity selected
40 40 assert_tag :tag => 'option', :attributes => { :selected => 'selected' },
41 41 :content => 'Development'
42 42 end
43 43
44 44 def test_get_edit_existing_time
45 45 @request.session[:user_id] = 2
46 46 get :edit, :id => 2, :project_id => nil
47 47 assert_response :success
48 48 assert_template 'edit'
49 49 # Default activity selected
50 50 assert_tag :tag => 'form', :attributes => { :action => '/projects/ecookbook/timelog/edit/2' }
51 51 end
52 52
53 53 def test_get_edit_should_only_show_active_time_entry_activities
54 54 @request.session[:user_id] = 3
55 55 get :edit, :project_id => 1
56 56 assert_response :success
57 57 assert_template 'edit'
58 58 assert_no_tag :tag => 'option', :content => 'Inactive Activity'
59 59
60 60 end
61 61
62 62 def test_get_edit_with_an_existing_time_entry_with_inactive_activity
63 63 te = TimeEntry.find(1)
64 64 te.activity = TimeEntryActivity.find_by_name("Inactive Activity")
65 65 te.save!
66 66
67 67 @request.session[:user_id] = 1
68 68 get :edit, :project_id => 1, :id => 1
69 69 assert_response :success
70 70 assert_template 'edit'
71 71 # Blank option since nothing is pre-selected
72 72 assert_tag :tag => 'option', :content => '--- Please select ---'
73 73 end
74 74
75 75 def test_post_edit
76 76 # TODO: should POST to issues’ time log instead of project. change form
77 77 # and routing
78 78 @request.session[:user_id] = 3
79 79 post :edit, :project_id => 1,
80 80 :time_entry => {:comments => 'Some work on TimelogControllerTest',
81 81 # Not the default activity
82 82 :activity_id => '11',
83 83 :spent_on => '2008-03-14',
84 84 :issue_id => '1',
85 85 :hours => '7.3'}
86 86 assert_redirected_to :action => 'details', :project_id => 'ecookbook'
87 87
88 88 i = Issue.find(1)
89 89 t = TimeEntry.find_by_comments('Some work on TimelogControllerTest')
90 90 assert_not_nil t
91 91 assert_equal 11, t.activity_id
92 92 assert_equal 7.3, t.hours
93 93 assert_equal 3, t.user_id
94 94 assert_equal i, t.issue
95 95 assert_equal i.project, t.project
96 96 end
97 97
98 98 def test_update
99 99 entry = TimeEntry.find(1)
100 100 assert_equal 1, entry.issue_id
101 101 assert_equal 2, entry.user_id
102 102
103 103 @request.session[:user_id] = 1
104 104 post :edit, :id => 1,
105 105 :time_entry => {:issue_id => '2',
106 106 :hours => '8'}
107 107 assert_redirected_to :action => 'details', :project_id => 'ecookbook'
108 108 entry.reload
109 109
110 110 assert_equal 8, entry.hours
111 111 assert_equal 2, entry.issue_id
112 112 assert_equal 2, entry.user_id
113 113 end
114 114
115 115 def test_destroy
116 116 @request.session[:user_id] = 2
117 117 post :destroy, :id => 1
118 118 assert_redirected_to :action => 'details', :project_id => 'ecookbook'
119 assert_equal I18n.t(:notice_successful_delete), flash[:notice]
119 120 assert_nil TimeEntry.find_by_id(1)
120 121 end
121 122
123 def test_destroy_should_fail
124 # simulate that this fails (e.g. due to a plugin), see #5700
125 TimeEntry.class_eval do
126 before_destroy :stop_callback_chain
127 def stop_callback_chain ; return false ; end
128 end
129
130 @request.session[:user_id] = 2
131 post :destroy, :id => 1
132 assert_redirected_to :action => 'details', :project_id => 'ecookbook'
133 assert_equal I18n.t(:notice_unable_delete_time_entry), flash[:error]
134 assert_not_nil TimeEntry.find_by_id(1)
135
136 # remove the simulation
137 TimeEntry.before_destroy.reject! {|callback| callback.method == :stop_callback_chain }
138 end
139
122 140 def test_report_no_criteria
123 141 get :report, :project_id => 1
124 142 assert_response :success
125 143 assert_template 'report'
126 144 end
127 145
128 146 def test_report_all_projects
129 147 get :report
130 148 assert_response :success
131 149 assert_template 'report'
132 150 end
133 151
134 152 def test_report_all_projects_denied
135 153 r = Role.anonymous
136 154 r.permissions.delete(:view_time_entries)
137 155 r.permissions_will_change!
138 156 r.save
139 157 get :report
140 158 assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Ftime_entries%2Freport'
141 159 end
142 160
143 161 def test_report_all_projects_one_criteria
144 162 get :report, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criterias => ['project']
145 163 assert_response :success
146 164 assert_template 'report'
147 165 assert_not_nil assigns(:total_hours)
148 166 assert_equal "8.65", "%.2f" % assigns(:total_hours)
149 167 end
150 168
151 169 def test_report_all_time
152 170 get :report, :project_id => 1, :criterias => ['project', 'issue']
153 171 assert_response :success
154 172 assert_template 'report'
155 173 assert_not_nil assigns(:total_hours)
156 174 assert_equal "162.90", "%.2f" % assigns(:total_hours)
157 175 end
158 176
159 177 def test_report_all_time_by_day
160 178 get :report, :project_id => 1, :criterias => ['project', 'issue'], :columns => 'day'
161 179 assert_response :success
162 180 assert_template 'report'
163 181 assert_not_nil assigns(:total_hours)
164 182 assert_equal "162.90", "%.2f" % assigns(:total_hours)
165 183 assert_tag :tag => 'th', :content => '2007-03-12'
166 184 end
167 185
168 186 def test_report_one_criteria
169 187 get :report, :project_id => 1, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criterias => ['project']
170 188 assert_response :success
171 189 assert_template 'report'
172 190 assert_not_nil assigns(:total_hours)
173 191 assert_equal "8.65", "%.2f" % assigns(:total_hours)
174 192 end
175 193
176 194 def test_report_two_criterias
177 195 get :report, :project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criterias => ["member", "activity"]
178 196 assert_response :success
179 197 assert_template 'report'
180 198 assert_not_nil assigns(:total_hours)
181 199 assert_equal "162.90", "%.2f" % assigns(:total_hours)
182 200 end
183 201
184 202 def test_report_one_day
185 203 get :report, :project_id => 1, :columns => 'day', :from => "2007-03-23", :to => "2007-03-23", :criterias => ["member", "activity"]
186 204 assert_response :success
187 205 assert_template 'report'
188 206 assert_not_nil assigns(:total_hours)
189 207 assert_equal "4.25", "%.2f" % assigns(:total_hours)
190 208 end
191 209
192 210 def test_report_at_issue_level
193 211 get :report, :project_id => 1, :issue_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criterias => ["member", "activity"]
194 212 assert_response :success
195 213 assert_template 'report'
196 214 assert_not_nil assigns(:total_hours)
197 215 assert_equal "154.25", "%.2f" % assigns(:total_hours)
198 216 end
199 217
200 218 def test_report_custom_field_criteria
201 219 get :report, :project_id => 1, :criterias => ['project', 'cf_1', 'cf_7']
202 220 assert_response :success
203 221 assert_template 'report'
204 222 assert_not_nil assigns(:total_hours)
205 223 assert_not_nil assigns(:criterias)
206 224 assert_equal 3, assigns(:criterias).size
207 225 assert_equal "162.90", "%.2f" % assigns(:total_hours)
208 226 # Custom field column
209 227 assert_tag :tag => 'th', :content => 'Database'
210 228 # Custom field row
211 229 assert_tag :tag => 'td', :content => 'MySQL',
212 230 :sibling => { :tag => 'td', :attributes => { :class => 'hours' },
213 231 :child => { :tag => 'span', :attributes => { :class => 'hours hours-int' },
214 232 :content => '1' }}
215 233 # Second custom field column
216 234 assert_tag :tag => 'th', :content => 'Billable'
217 235 end
218 236
219 237 def test_report_one_criteria_no_result
220 238 get :report, :project_id => 1, :columns => 'week', :from => "1998-04-01", :to => "1998-04-30", :criterias => ['project']
221 239 assert_response :success
222 240 assert_template 'report'
223 241 assert_not_nil assigns(:total_hours)
224 242 assert_equal "0.00", "%.2f" % assigns(:total_hours)
225 243 end
226 244
227 245 def test_report_all_projects_csv_export
228 246 get :report, :columns => 'month', :from => "2007-01-01", :to => "2007-06-30", :criterias => ["project", "member", "activity"], :format => "csv"
229 247 assert_response :success
230 248 assert_equal 'text/csv', @response.content_type
231 249 lines = @response.body.chomp.split("\n")
232 250 # Headers
233 251 assert_equal 'Project,Member,Activity,2007-1,2007-2,2007-3,2007-4,2007-5,2007-6,Total', lines.first
234 252 # Total row
235 253 assert_equal 'Total,"","","","",154.25,8.65,"","",162.90', lines.last
236 254 end
237 255
238 256 def test_report_csv_export
239 257 get :report, :project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-06-30", :criterias => ["project", "member", "activity"], :format => "csv"
240 258 assert_response :success
241 259 assert_equal 'text/csv', @response.content_type
242 260 lines = @response.body.chomp.split("\n")
243 261 # Headers
244 262 assert_equal 'Project,Member,Activity,2007-1,2007-2,2007-3,2007-4,2007-5,2007-6,Total', lines.first
245 263 # Total row
246 264 assert_equal 'Total,"","","","",154.25,8.65,"","",162.90', lines.last
247 265 end
248 266
249 267 def test_details_all_projects
250 268 get :details
251 269 assert_response :success
252 270 assert_template 'details'
253 271 assert_not_nil assigns(:total_hours)
254 272 assert_equal "162.90", "%.2f" % assigns(:total_hours)
255 273 end
256 274
257 275 def test_details_at_project_level
258 276 get :details, :project_id => 1
259 277 assert_response :success
260 278 assert_template 'details'
261 279 assert_not_nil assigns(:entries)
262 280 assert_equal 4, assigns(:entries).size
263 281 # project and subproject
264 282 assert_equal [1, 3], assigns(:entries).collect(&:project_id).uniq.sort
265 283 assert_not_nil assigns(:total_hours)
266 284 assert_equal "162.90", "%.2f" % assigns(:total_hours)
267 285 # display all time by default
268 286 assert_equal '2007-03-11'.to_date, assigns(:from)
269 287 assert_equal '2007-04-22'.to_date, assigns(:to)
270 288 end
271 289
272 290 def test_details_at_project_level_with_date_range
273 291 get :details, :project_id => 1, :from => '2007-03-20', :to => '2007-04-30'
274 292 assert_response :success
275 293 assert_template 'details'
276 294 assert_not_nil assigns(:entries)
277 295 assert_equal 3, assigns(:entries).size
278 296 assert_not_nil assigns(:total_hours)
279 297 assert_equal "12.90", "%.2f" % assigns(:total_hours)
280 298 assert_equal '2007-03-20'.to_date, assigns(:from)
281 299 assert_equal '2007-04-30'.to_date, assigns(:to)
282 300 end
283 301
284 302 def test_details_at_project_level_with_period
285 303 get :details, :project_id => 1, :period => '7_days'
286 304 assert_response :success
287 305 assert_template 'details'
288 306 assert_not_nil assigns(:entries)
289 307 assert_not_nil assigns(:total_hours)
290 308 assert_equal Date.today - 7, assigns(:from)
291 309 assert_equal Date.today, assigns(:to)
292 310 end
293 311
294 312 def test_details_one_day
295 313 get :details, :project_id => 1, :from => "2007-03-23", :to => "2007-03-23"
296 314 assert_response :success
297 315 assert_template 'details'
298 316 assert_not_nil assigns(:total_hours)
299 317 assert_equal "4.25", "%.2f" % assigns(:total_hours)
300 318 end
301 319
302 320 def test_details_at_issue_level
303 321 get :details, :issue_id => 1
304 322 assert_response :success
305 323 assert_template 'details'
306 324 assert_not_nil assigns(:entries)
307 325 assert_equal 2, assigns(:entries).size
308 326 assert_not_nil assigns(:total_hours)
309 327 assert_equal 154.25, assigns(:total_hours)
310 328 # display all time by default
311 329 assert_equal '2007-03-11'.to_date, assigns(:from)
312 330 assert_equal '2007-04-22'.to_date, assigns(:to)
313 331 end
314 332
315 333 def test_details_atom_feed
316 334 get :details, :project_id => 1, :format => 'atom'
317 335 assert_response :success
318 336 assert_equal 'application/atom+xml', @response.content_type
319 337 assert_not_nil assigns(:items)
320 338 assert assigns(:items).first.is_a?(TimeEntry)
321 339 end
322 340
323 341 def test_details_all_projects_csv_export
324 342 Setting.date_format = '%m/%d/%Y'
325 343 get :details, :format => 'csv'
326 344 assert_response :success
327 345 assert_equal 'text/csv', @response.content_type
328 346 assert @response.body.include?("Date,User,Activity,Project,Issue,Tracker,Subject,Hours,Comment\n")
329 347 assert @response.body.include?("\n04/21/2007,redMine Admin,Design,eCookbook,3,Bug,Error 281 when updating a recipe,1.0,\"\"\n")
330 348 end
331 349
332 350 def test_details_csv_export
333 351 Setting.date_format = '%m/%d/%Y'
334 352 get :details, :project_id => 1, :format => 'csv'
335 353 assert_response :success
336 354 assert_equal 'text/csv', @response.content_type
337 355 assert @response.body.include?("Date,User,Activity,Project,Issue,Tracker,Subject,Hours,Comment\n")
338 356 assert @response.body.include?("\n04/21/2007,redMine Admin,Design,eCookbook,3,Bug,Error 281 when updating a recipe,1.0,\"\"\n")
339 357 end
340 358 end
General Comments 0
You need to be logged in to leave comments. Login now