##// END OF EJS Templates
Add the ability to expire passwords after a configurable number of days (#19458)....
Jean-Philippe Lang -
r13882:51f7060aa846
parent child
Show More
@@ -1,659 +1,660
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require 'uri'
18 require 'uri'
19 require 'cgi'
19 require 'cgi'
20
20
21 class Unauthorized < Exception; end
21 class Unauthorized < Exception; end
22
22
23 class ApplicationController < ActionController::Base
23 class ApplicationController < ActionController::Base
24 include Redmine::I18n
24 include Redmine::I18n
25 include Redmine::Pagination
25 include Redmine::Pagination
26 include RoutesHelper
26 include RoutesHelper
27 helper :routes
27 helper :routes
28
28
29 class_attribute :accept_api_auth_actions
29 class_attribute :accept_api_auth_actions
30 class_attribute :accept_rss_auth_actions
30 class_attribute :accept_rss_auth_actions
31 class_attribute :model_object
31 class_attribute :model_object
32
32
33 layout 'base'
33 layout 'base'
34
34
35 protect_from_forgery
35 protect_from_forgery
36
36
37 def verify_authenticity_token
37 def verify_authenticity_token
38 unless api_request?
38 unless api_request?
39 super
39 super
40 end
40 end
41 end
41 end
42
42
43 def handle_unverified_request
43 def handle_unverified_request
44 unless api_request?
44 unless api_request?
45 super
45 super
46 cookies.delete(autologin_cookie_name)
46 cookies.delete(autologin_cookie_name)
47 self.logged_user = nil
47 self.logged_user = nil
48 set_localization
48 set_localization
49 render_error :status => 422, :message => "Invalid form authenticity token."
49 render_error :status => 422, :message => "Invalid form authenticity token."
50 end
50 end
51 end
51 end
52
52
53 before_filter :session_expiration, :user_setup, :force_logout_if_password_changed, :check_if_login_required, :check_password_change, :set_localization
53 before_filter :session_expiration, :user_setup, :force_logout_if_password_changed, :check_if_login_required, :check_password_change, :set_localization
54
54
55 rescue_from ::Unauthorized, :with => :deny_access
55 rescue_from ::Unauthorized, :with => :deny_access
56 rescue_from ::ActionView::MissingTemplate, :with => :missing_template
56 rescue_from ::ActionView::MissingTemplate, :with => :missing_template
57
57
58 include Redmine::Search::Controller
58 include Redmine::Search::Controller
59 include Redmine::MenuManager::MenuController
59 include Redmine::MenuManager::MenuController
60 helper Redmine::MenuManager::MenuHelper
60 helper Redmine::MenuManager::MenuHelper
61
61
62 def session_expiration
62 def session_expiration
63 if session[:user_id]
63 if session[:user_id]
64 if session_expired? && !try_to_autologin
64 if session_expired? && !try_to_autologin
65 set_localization(User.active.find_by_id(session[:user_id]))
65 set_localization(User.active.find_by_id(session[:user_id]))
66 self.logged_user = nil
66 self.logged_user = nil
67 flash[:error] = l(:error_session_expired)
67 flash[:error] = l(:error_session_expired)
68 require_login
68 require_login
69 else
69 else
70 session[:atime] = Time.now.utc.to_i
70 session[:atime] = Time.now.utc.to_i
71 end
71 end
72 end
72 end
73 end
73 end
74
74
75 def session_expired?
75 def session_expired?
76 if Setting.session_lifetime?
76 if Setting.session_lifetime?
77 unless session[:ctime] && (Time.now.utc.to_i - session[:ctime].to_i <= Setting.session_lifetime.to_i * 60)
77 unless session[:ctime] && (Time.now.utc.to_i - session[:ctime].to_i <= Setting.session_lifetime.to_i * 60)
78 return true
78 return true
79 end
79 end
80 end
80 end
81 if Setting.session_timeout?
81 if Setting.session_timeout?
82 unless session[:atime] && (Time.now.utc.to_i - session[:atime].to_i <= Setting.session_timeout.to_i * 60)
82 unless session[:atime] && (Time.now.utc.to_i - session[:atime].to_i <= Setting.session_timeout.to_i * 60)
83 return true
83 return true
84 end
84 end
85 end
85 end
86 false
86 false
87 end
87 end
88
88
89 def start_user_session(user)
89 def start_user_session(user)
90 session[:user_id] = user.id
90 session[:user_id] = user.id
91 session[:ctime] = Time.now.utc.to_i
91 session[:ctime] = Time.now.utc.to_i
92 session[:atime] = Time.now.utc.to_i
92 session[:atime] = Time.now.utc.to_i
93 if user.must_change_password?
93 if user.must_change_password?
94 session[:pwd] = '1'
94 session[:pwd] = '1'
95 end
95 end
96 end
96 end
97
97
98 def user_setup
98 def user_setup
99 # Check the settings cache for each request
99 # Check the settings cache for each request
100 Setting.check_cache
100 Setting.check_cache
101 # Find the current user
101 # Find the current user
102 User.current = find_current_user
102 User.current = find_current_user
103 logger.info(" Current user: " + (User.current.logged? ? "#{User.current.login} (id=#{User.current.id})" : "anonymous")) if logger
103 logger.info(" Current user: " + (User.current.logged? ? "#{User.current.login} (id=#{User.current.id})" : "anonymous")) if logger
104 end
104 end
105
105
106 # Returns the current user or nil if no user is logged in
106 # Returns the current user or nil if no user is logged in
107 # and starts a session if needed
107 # and starts a session if needed
108 def find_current_user
108 def find_current_user
109 user = nil
109 user = nil
110 unless api_request?
110 unless api_request?
111 if session[:user_id]
111 if session[:user_id]
112 # existing session
112 # existing session
113 user = (User.active.find(session[:user_id]) rescue nil)
113 user = (User.active.find(session[:user_id]) rescue nil)
114 elsif autologin_user = try_to_autologin
114 elsif autologin_user = try_to_autologin
115 user = autologin_user
115 user = autologin_user
116 elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
116 elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
117 # RSS key authentication does not start a session
117 # RSS key authentication does not start a session
118 user = User.find_by_rss_key(params[:key])
118 user = User.find_by_rss_key(params[:key])
119 end
119 end
120 end
120 end
121 if user.nil? && Setting.rest_api_enabled? && accept_api_auth?
121 if user.nil? && Setting.rest_api_enabled? && accept_api_auth?
122 if (key = api_key_from_request)
122 if (key = api_key_from_request)
123 # Use API key
123 # Use API key
124 user = User.find_by_api_key(key)
124 user = User.find_by_api_key(key)
125 elsif request.authorization.to_s =~ /\ABasic /i
125 elsif request.authorization.to_s =~ /\ABasic /i
126 # HTTP Basic, either username/password or API key/random
126 # HTTP Basic, either username/password or API key/random
127 authenticate_with_http_basic do |username, password|
127 authenticate_with_http_basic do |username, password|
128 user = User.try_to_login(username, password) || User.find_by_api_key(username)
128 user = User.try_to_login(username, password) || User.find_by_api_key(username)
129 end
129 end
130 if user && user.must_change_password?
130 if user && user.must_change_password?
131 render_error :message => 'You must change your password', :status => 403
131 render_error :message => 'You must change your password', :status => 403
132 return
132 return
133 end
133 end
134 end
134 end
135 # Switch user if requested by an admin user
135 # Switch user if requested by an admin user
136 if user && user.admin? && (username = api_switch_user_from_request)
136 if user && user.admin? && (username = api_switch_user_from_request)
137 su = User.find_by_login(username)
137 su = User.find_by_login(username)
138 if su && su.active?
138 if su && su.active?
139 logger.info(" User switched by: #{user.login} (id=#{user.id})") if logger
139 logger.info(" User switched by: #{user.login} (id=#{user.id})") if logger
140 user = su
140 user = su
141 else
141 else
142 render_error :message => 'Invalid X-Redmine-Switch-User header', :status => 412
142 render_error :message => 'Invalid X-Redmine-Switch-User header', :status => 412
143 end
143 end
144 end
144 end
145 end
145 end
146 user
146 user
147 end
147 end
148
148
149 def force_logout_if_password_changed
149 def force_logout_if_password_changed
150 passwd_changed_on = User.current.passwd_changed_on || Time.at(0)
150 passwd_changed_on = User.current.passwd_changed_on || Time.at(0)
151 # Make sure we force logout only for web browser sessions, not API calls
151 # Make sure we force logout only for web browser sessions, not API calls
152 # if the password was changed after the session creation.
152 # if the password was changed after the session creation.
153 if session[:user_id] && passwd_changed_on.utc.to_i > session[:ctime].to_i
153 if session[:user_id] && passwd_changed_on.utc.to_i > session[:ctime].to_i
154 reset_session
154 reset_session
155 set_localization
155 set_localization
156 flash[:error] = l(:error_session_expired)
156 flash[:error] = l(:error_session_expired)
157 redirect_to signin_url
157 redirect_to signin_url
158 end
158 end
159 end
159 end
160
160
161 def autologin_cookie_name
161 def autologin_cookie_name
162 Redmine::Configuration['autologin_cookie_name'].presence || 'autologin'
162 Redmine::Configuration['autologin_cookie_name'].presence || 'autologin'
163 end
163 end
164
164
165 def try_to_autologin
165 def try_to_autologin
166 if cookies[autologin_cookie_name] && Setting.autologin?
166 if cookies[autologin_cookie_name] && Setting.autologin?
167 # auto-login feature starts a new session
167 # auto-login feature starts a new session
168 user = User.try_to_autologin(cookies[autologin_cookie_name])
168 user = User.try_to_autologin(cookies[autologin_cookie_name])
169 if user
169 if user
170 reset_session
170 reset_session
171 start_user_session(user)
171 start_user_session(user)
172 end
172 end
173 user
173 user
174 end
174 end
175 end
175 end
176
176
177 # Sets the logged in user
177 # Sets the logged in user
178 def logged_user=(user)
178 def logged_user=(user)
179 reset_session
179 reset_session
180 if user && user.is_a?(User)
180 if user && user.is_a?(User)
181 User.current = user
181 User.current = user
182 start_user_session(user)
182 start_user_session(user)
183 else
183 else
184 User.current = User.anonymous
184 User.current = User.anonymous
185 end
185 end
186 end
186 end
187
187
188 # Logs out current user
188 # Logs out current user
189 def logout_user
189 def logout_user
190 if User.current.logged?
190 if User.current.logged?
191 cookies.delete(autologin_cookie_name)
191 cookies.delete(autologin_cookie_name)
192 Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
192 Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
193 self.logged_user = nil
193 self.logged_user = nil
194 end
194 end
195 end
195 end
196
196
197 # check if login is globally required to access the application
197 # check if login is globally required to access the application
198 def check_if_login_required
198 def check_if_login_required
199 # no check needed if user is already logged in
199 # no check needed if user is already logged in
200 return true if User.current.logged?
200 return true if User.current.logged?
201 require_login if Setting.login_required?
201 require_login if Setting.login_required?
202 end
202 end
203
203
204 def check_password_change
204 def check_password_change
205 if session[:pwd]
205 if session[:pwd]
206 if User.current.must_change_password?
206 if User.current.must_change_password?
207 flash[:error] = l(:error_password_expired)
207 redirect_to my_password_path
208 redirect_to my_password_path
208 else
209 else
209 session.delete(:pwd)
210 session.delete(:pwd)
210 end
211 end
211 end
212 end
212 end
213 end
213
214
214 def set_localization(user=User.current)
215 def set_localization(user=User.current)
215 lang = nil
216 lang = nil
216 if user && user.logged?
217 if user && user.logged?
217 lang = find_language(user.language)
218 lang = find_language(user.language)
218 end
219 end
219 if lang.nil? && !Setting.force_default_language_for_anonymous? && request.env['HTTP_ACCEPT_LANGUAGE']
220 if lang.nil? && !Setting.force_default_language_for_anonymous? && request.env['HTTP_ACCEPT_LANGUAGE']
220 accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first
221 accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first
221 if !accept_lang.blank?
222 if !accept_lang.blank?
222 accept_lang = accept_lang.downcase
223 accept_lang = accept_lang.downcase
223 lang = find_language(accept_lang) || find_language(accept_lang.split('-').first)
224 lang = find_language(accept_lang) || find_language(accept_lang.split('-').first)
224 end
225 end
225 end
226 end
226 lang ||= Setting.default_language
227 lang ||= Setting.default_language
227 set_language_if_valid(lang)
228 set_language_if_valid(lang)
228 end
229 end
229
230
230 def require_login
231 def require_login
231 if !User.current.logged?
232 if !User.current.logged?
232 # Extract only the basic url parameters on non-GET requests
233 # Extract only the basic url parameters on non-GET requests
233 if request.get?
234 if request.get?
234 url = url_for(params)
235 url = url_for(params)
235 else
236 else
236 url = url_for(:controller => params[:controller], :action => params[:action], :id => params[:id], :project_id => params[:project_id])
237 url = url_for(:controller => params[:controller], :action => params[:action], :id => params[:id], :project_id => params[:project_id])
237 end
238 end
238 respond_to do |format|
239 respond_to do |format|
239 format.html {
240 format.html {
240 if request.xhr?
241 if request.xhr?
241 head :unauthorized
242 head :unauthorized
242 else
243 else
243 redirect_to signin_path(:back_url => url)
244 redirect_to signin_path(:back_url => url)
244 end
245 end
245 }
246 }
246 format.any(:atom, :pdf, :csv) {
247 format.any(:atom, :pdf, :csv) {
247 redirect_to signin_path(:back_url => url)
248 redirect_to signin_path(:back_url => url)
248 }
249 }
249 format.xml { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
250 format.xml { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
250 format.js { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
251 format.js { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
251 format.json { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
252 format.json { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
252 format.any { head :unauthorized }
253 format.any { head :unauthorized }
253 end
254 end
254 return false
255 return false
255 end
256 end
256 true
257 true
257 end
258 end
258
259
259 def require_admin
260 def require_admin
260 return unless require_login
261 return unless require_login
261 if !User.current.admin?
262 if !User.current.admin?
262 render_403
263 render_403
263 return false
264 return false
264 end
265 end
265 true
266 true
266 end
267 end
267
268
268 def deny_access
269 def deny_access
269 User.current.logged? ? render_403 : require_login
270 User.current.logged? ? render_403 : require_login
270 end
271 end
271
272
272 # Authorize the user for the requested action
273 # Authorize the user for the requested action
273 def authorize(ctrl = params[:controller], action = params[:action], global = false)
274 def authorize(ctrl = params[:controller], action = params[:action], global = false)
274 allowed = User.current.allowed_to?({:controller => ctrl, :action => action}, @project || @projects, :global => global)
275 allowed = User.current.allowed_to?({:controller => ctrl, :action => action}, @project || @projects, :global => global)
275 if allowed
276 if allowed
276 true
277 true
277 else
278 else
278 if @project && @project.archived?
279 if @project && @project.archived?
279 render_403 :message => :notice_not_authorized_archived_project
280 render_403 :message => :notice_not_authorized_archived_project
280 else
281 else
281 deny_access
282 deny_access
282 end
283 end
283 end
284 end
284 end
285 end
285
286
286 # Authorize the user for the requested action outside a project
287 # Authorize the user for the requested action outside a project
287 def authorize_global(ctrl = params[:controller], action = params[:action], global = true)
288 def authorize_global(ctrl = params[:controller], action = params[:action], global = true)
288 authorize(ctrl, action, global)
289 authorize(ctrl, action, global)
289 end
290 end
290
291
291 # Find project of id params[:id]
292 # Find project of id params[:id]
292 def find_project
293 def find_project
293 @project = Project.find(params[:id])
294 @project = Project.find(params[:id])
294 rescue ActiveRecord::RecordNotFound
295 rescue ActiveRecord::RecordNotFound
295 render_404
296 render_404
296 end
297 end
297
298
298 # Find project of id params[:project_id]
299 # Find project of id params[:project_id]
299 def find_project_by_project_id
300 def find_project_by_project_id
300 @project = Project.find(params[:project_id])
301 @project = Project.find(params[:project_id])
301 rescue ActiveRecord::RecordNotFound
302 rescue ActiveRecord::RecordNotFound
302 render_404
303 render_404
303 end
304 end
304
305
305 # Find a project based on params[:project_id]
306 # Find a project based on params[:project_id]
306 # TODO: some subclasses override this, see about merging their logic
307 # TODO: some subclasses override this, see about merging their logic
307 def find_optional_project
308 def find_optional_project
308 @project = Project.find(params[:project_id]) unless params[:project_id].blank?
309 @project = Project.find(params[:project_id]) unless params[:project_id].blank?
309 allowed = User.current.allowed_to?({:controller => params[:controller], :action => params[:action]}, @project, :global => true)
310 allowed = User.current.allowed_to?({:controller => params[:controller], :action => params[:action]}, @project, :global => true)
310 allowed ? true : deny_access
311 allowed ? true : deny_access
311 rescue ActiveRecord::RecordNotFound
312 rescue ActiveRecord::RecordNotFound
312 render_404
313 render_404
313 end
314 end
314
315
315 # Finds and sets @project based on @object.project
316 # Finds and sets @project based on @object.project
316 def find_project_from_association
317 def find_project_from_association
317 render_404 unless @object.present?
318 render_404 unless @object.present?
318
319
319 @project = @object.project
320 @project = @object.project
320 end
321 end
321
322
322 def find_model_object
323 def find_model_object
323 model = self.class.model_object
324 model = self.class.model_object
324 if model
325 if model
325 @object = model.find(params[:id])
326 @object = model.find(params[:id])
326 self.instance_variable_set('@' + controller_name.singularize, @object) if @object
327 self.instance_variable_set('@' + controller_name.singularize, @object) if @object
327 end
328 end
328 rescue ActiveRecord::RecordNotFound
329 rescue ActiveRecord::RecordNotFound
329 render_404
330 render_404
330 end
331 end
331
332
332 def self.model_object(model)
333 def self.model_object(model)
333 self.model_object = model
334 self.model_object = model
334 end
335 end
335
336
336 # Find the issue whose id is the :id parameter
337 # Find the issue whose id is the :id parameter
337 # Raises a Unauthorized exception if the issue is not visible
338 # Raises a Unauthorized exception if the issue is not visible
338 def find_issue
339 def find_issue
339 # Issue.visible.find(...) can not be used to redirect user to the login form
340 # Issue.visible.find(...) can not be used to redirect user to the login form
340 # if the issue actually exists but requires authentication
341 # if the issue actually exists but requires authentication
341 @issue = Issue.find(params[:id])
342 @issue = Issue.find(params[:id])
342 raise Unauthorized unless @issue.visible?
343 raise Unauthorized unless @issue.visible?
343 @project = @issue.project
344 @project = @issue.project
344 rescue ActiveRecord::RecordNotFound
345 rescue ActiveRecord::RecordNotFound
345 render_404
346 render_404
346 end
347 end
347
348
348 # Find issues with a single :id param or :ids array param
349 # Find issues with a single :id param or :ids array param
349 # Raises a Unauthorized exception if one of the issues is not visible
350 # Raises a Unauthorized exception if one of the issues is not visible
350 def find_issues
351 def find_issues
351 @issues = Issue.where(:id => (params[:id] || params[:ids])).preload(:project, :status, :tracker, :priority, :author, :assigned_to, :relations_to).to_a
352 @issues = Issue.where(:id => (params[:id] || params[:ids])).preload(:project, :status, :tracker, :priority, :author, :assigned_to, :relations_to).to_a
352 raise ActiveRecord::RecordNotFound if @issues.empty?
353 raise ActiveRecord::RecordNotFound if @issues.empty?
353 raise Unauthorized unless @issues.all?(&:visible?)
354 raise Unauthorized unless @issues.all?(&:visible?)
354 @projects = @issues.collect(&:project).compact.uniq
355 @projects = @issues.collect(&:project).compact.uniq
355 @project = @projects.first if @projects.size == 1
356 @project = @projects.first if @projects.size == 1
356 rescue ActiveRecord::RecordNotFound
357 rescue ActiveRecord::RecordNotFound
357 render_404
358 render_404
358 end
359 end
359
360
360 def find_attachments
361 def find_attachments
361 if (attachments = params[:attachments]).present?
362 if (attachments = params[:attachments]).present?
362 att = attachments.values.collect do |attachment|
363 att = attachments.values.collect do |attachment|
363 Attachment.find_by_token( attachment[:token] ) if attachment[:token].present?
364 Attachment.find_by_token( attachment[:token] ) if attachment[:token].present?
364 end
365 end
365 att.compact!
366 att.compact!
366 end
367 end
367 @attachments = att || []
368 @attachments = att || []
368 end
369 end
369
370
370 # make sure that the user is a member of the project (or admin) if project is private
371 # make sure that the user is a member of the project (or admin) if project is private
371 # used as a before_filter for actions that do not require any particular permission on the project
372 # used as a before_filter for actions that do not require any particular permission on the project
372 def check_project_privacy
373 def check_project_privacy
373 if @project && !@project.archived?
374 if @project && !@project.archived?
374 if @project.visible?
375 if @project.visible?
375 true
376 true
376 else
377 else
377 deny_access
378 deny_access
378 end
379 end
379 else
380 else
380 @project = nil
381 @project = nil
381 render_404
382 render_404
382 false
383 false
383 end
384 end
384 end
385 end
385
386
386 def back_url
387 def back_url
387 url = params[:back_url]
388 url = params[:back_url]
388 if url.nil? && referer = request.env['HTTP_REFERER']
389 if url.nil? && referer = request.env['HTTP_REFERER']
389 url = CGI.unescape(referer.to_s)
390 url = CGI.unescape(referer.to_s)
390 end
391 end
391 url
392 url
392 end
393 end
393
394
394 def redirect_back_or_default(default, options={})
395 def redirect_back_or_default(default, options={})
395 back_url = params[:back_url].to_s
396 back_url = params[:back_url].to_s
396 if back_url.present? && valid_back_url?(back_url)
397 if back_url.present? && valid_back_url?(back_url)
397 redirect_to(back_url)
398 redirect_to(back_url)
398 return
399 return
399 elsif options[:referer]
400 elsif options[:referer]
400 redirect_to_referer_or default
401 redirect_to_referer_or default
401 return
402 return
402 end
403 end
403 redirect_to default
404 redirect_to default
404 false
405 false
405 end
406 end
406
407
407 # Returns true if back_url is a valid url for redirection, otherwise false
408 # Returns true if back_url is a valid url for redirection, otherwise false
408 def valid_back_url?(back_url)
409 def valid_back_url?(back_url)
409 if CGI.unescape(back_url).include?('..')
410 if CGI.unescape(back_url).include?('..')
410 return false
411 return false
411 end
412 end
412
413
413 begin
414 begin
414 uri = URI.parse(back_url)
415 uri = URI.parse(back_url)
415 rescue URI::InvalidURIError
416 rescue URI::InvalidURIError
416 return false
417 return false
417 end
418 end
418
419
419 if uri.host.present? && uri.host != request.host
420 if uri.host.present? && uri.host != request.host
420 return false
421 return false
421 end
422 end
422
423
423 if uri.path.match(%r{/(login|account/register)})
424 if uri.path.match(%r{/(login|account/register)})
424 return false
425 return false
425 end
426 end
426
427
427 if relative_url_root.present? && !uri.path.starts_with?(relative_url_root)
428 if relative_url_root.present? && !uri.path.starts_with?(relative_url_root)
428 return false
429 return false
429 end
430 end
430
431
431 return true
432 return true
432 end
433 end
433 private :valid_back_url?
434 private :valid_back_url?
434
435
435 # Redirects to the request referer if present, redirects to args or call block otherwise.
436 # Redirects to the request referer if present, redirects to args or call block otherwise.
436 def redirect_to_referer_or(*args, &block)
437 def redirect_to_referer_or(*args, &block)
437 redirect_to :back
438 redirect_to :back
438 rescue ::ActionController::RedirectBackError
439 rescue ::ActionController::RedirectBackError
439 if args.any?
440 if args.any?
440 redirect_to *args
441 redirect_to *args
441 elsif block_given?
442 elsif block_given?
442 block.call
443 block.call
443 else
444 else
444 raise "#redirect_to_referer_or takes arguments or a block"
445 raise "#redirect_to_referer_or takes arguments or a block"
445 end
446 end
446 end
447 end
447
448
448 def render_403(options={})
449 def render_403(options={})
449 @project = nil
450 @project = nil
450 render_error({:message => :notice_not_authorized, :status => 403}.merge(options))
451 render_error({:message => :notice_not_authorized, :status => 403}.merge(options))
451 return false
452 return false
452 end
453 end
453
454
454 def render_404(options={})
455 def render_404(options={})
455 render_error({:message => :notice_file_not_found, :status => 404}.merge(options))
456 render_error({:message => :notice_file_not_found, :status => 404}.merge(options))
456 return false
457 return false
457 end
458 end
458
459
459 # Renders an error response
460 # Renders an error response
460 def render_error(arg)
461 def render_error(arg)
461 arg = {:message => arg} unless arg.is_a?(Hash)
462 arg = {:message => arg} unless arg.is_a?(Hash)
462
463
463 @message = arg[:message]
464 @message = arg[:message]
464 @message = l(@message) if @message.is_a?(Symbol)
465 @message = l(@message) if @message.is_a?(Symbol)
465 @status = arg[:status] || 500
466 @status = arg[:status] || 500
466
467
467 respond_to do |format|
468 respond_to do |format|
468 format.html {
469 format.html {
469 render :template => 'common/error', :layout => use_layout, :status => @status
470 render :template => 'common/error', :layout => use_layout, :status => @status
470 }
471 }
471 format.any { head @status }
472 format.any { head @status }
472 end
473 end
473 end
474 end
474
475
475 # Handler for ActionView::MissingTemplate exception
476 # Handler for ActionView::MissingTemplate exception
476 def missing_template
477 def missing_template
477 logger.warn "Missing template, responding with 404"
478 logger.warn "Missing template, responding with 404"
478 @project = nil
479 @project = nil
479 render_404
480 render_404
480 end
481 end
481
482
482 # Filter for actions that provide an API response
483 # Filter for actions that provide an API response
483 # but have no HTML representation for non admin users
484 # but have no HTML representation for non admin users
484 def require_admin_or_api_request
485 def require_admin_or_api_request
485 return true if api_request?
486 return true if api_request?
486 if User.current.admin?
487 if User.current.admin?
487 true
488 true
488 elsif User.current.logged?
489 elsif User.current.logged?
489 render_error(:status => 406)
490 render_error(:status => 406)
490 else
491 else
491 deny_access
492 deny_access
492 end
493 end
493 end
494 end
494
495
495 # Picks which layout to use based on the request
496 # Picks which layout to use based on the request
496 #
497 #
497 # @return [boolean, string] name of the layout to use or false for no layout
498 # @return [boolean, string] name of the layout to use or false for no layout
498 def use_layout
499 def use_layout
499 request.xhr? ? false : 'base'
500 request.xhr? ? false : 'base'
500 end
501 end
501
502
502 def render_feed(items, options={})
503 def render_feed(items, options={})
503 @items = (items || []).to_a
504 @items = (items || []).to_a
504 @items.sort! {|x,y| y.event_datetime <=> x.event_datetime }
505 @items.sort! {|x,y| y.event_datetime <=> x.event_datetime }
505 @items = @items.slice(0, Setting.feeds_limit.to_i)
506 @items = @items.slice(0, Setting.feeds_limit.to_i)
506 @title = options[:title] || Setting.app_title
507 @title = options[:title] || Setting.app_title
507 render :template => "common/feed", :formats => [:atom], :layout => false,
508 render :template => "common/feed", :formats => [:atom], :layout => false,
508 :content_type => 'application/atom+xml'
509 :content_type => 'application/atom+xml'
509 end
510 end
510
511
511 def self.accept_rss_auth(*actions)
512 def self.accept_rss_auth(*actions)
512 if actions.any?
513 if actions.any?
513 self.accept_rss_auth_actions = actions
514 self.accept_rss_auth_actions = actions
514 else
515 else
515 self.accept_rss_auth_actions || []
516 self.accept_rss_auth_actions || []
516 end
517 end
517 end
518 end
518
519
519 def accept_rss_auth?(action=action_name)
520 def accept_rss_auth?(action=action_name)
520 self.class.accept_rss_auth.include?(action.to_sym)
521 self.class.accept_rss_auth.include?(action.to_sym)
521 end
522 end
522
523
523 def self.accept_api_auth(*actions)
524 def self.accept_api_auth(*actions)
524 if actions.any?
525 if actions.any?
525 self.accept_api_auth_actions = actions
526 self.accept_api_auth_actions = actions
526 else
527 else
527 self.accept_api_auth_actions || []
528 self.accept_api_auth_actions || []
528 end
529 end
529 end
530 end
530
531
531 def accept_api_auth?(action=action_name)
532 def accept_api_auth?(action=action_name)
532 self.class.accept_api_auth.include?(action.to_sym)
533 self.class.accept_api_auth.include?(action.to_sym)
533 end
534 end
534
535
535 # Returns the number of objects that should be displayed
536 # Returns the number of objects that should be displayed
536 # on the paginated list
537 # on the paginated list
537 def per_page_option
538 def per_page_option
538 per_page = nil
539 per_page = nil
539 if params[:per_page] && Setting.per_page_options_array.include?(params[:per_page].to_s.to_i)
540 if params[:per_page] && Setting.per_page_options_array.include?(params[:per_page].to_s.to_i)
540 per_page = params[:per_page].to_s.to_i
541 per_page = params[:per_page].to_s.to_i
541 session[:per_page] = per_page
542 session[:per_page] = per_page
542 elsif session[:per_page]
543 elsif session[:per_page]
543 per_page = session[:per_page]
544 per_page = session[:per_page]
544 else
545 else
545 per_page = Setting.per_page_options_array.first || 25
546 per_page = Setting.per_page_options_array.first || 25
546 end
547 end
547 per_page
548 per_page
548 end
549 end
549
550
550 # Returns offset and limit used to retrieve objects
551 # Returns offset and limit used to retrieve objects
551 # for an API response based on offset, limit and page parameters
552 # for an API response based on offset, limit and page parameters
552 def api_offset_and_limit(options=params)
553 def api_offset_and_limit(options=params)
553 if options[:offset].present?
554 if options[:offset].present?
554 offset = options[:offset].to_i
555 offset = options[:offset].to_i
555 if offset < 0
556 if offset < 0
556 offset = 0
557 offset = 0
557 end
558 end
558 end
559 end
559 limit = options[:limit].to_i
560 limit = options[:limit].to_i
560 if limit < 1
561 if limit < 1
561 limit = 25
562 limit = 25
562 elsif limit > 100
563 elsif limit > 100
563 limit = 100
564 limit = 100
564 end
565 end
565 if offset.nil? && options[:page].present?
566 if offset.nil? && options[:page].present?
566 offset = (options[:page].to_i - 1) * limit
567 offset = (options[:page].to_i - 1) * limit
567 offset = 0 if offset < 0
568 offset = 0 if offset < 0
568 end
569 end
569 offset ||= 0
570 offset ||= 0
570
571
571 [offset, limit]
572 [offset, limit]
572 end
573 end
573
574
574 # qvalues http header parser
575 # qvalues http header parser
575 # code taken from webrick
576 # code taken from webrick
576 def parse_qvalues(value)
577 def parse_qvalues(value)
577 tmp = []
578 tmp = []
578 if value
579 if value
579 parts = value.split(/,\s*/)
580 parts = value.split(/,\s*/)
580 parts.each {|part|
581 parts.each {|part|
581 if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
582 if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
582 val = m[1]
583 val = m[1]
583 q = (m[2] or 1).to_f
584 q = (m[2] or 1).to_f
584 tmp.push([val, q])
585 tmp.push([val, q])
585 end
586 end
586 }
587 }
587 tmp = tmp.sort_by{|val, q| -q}
588 tmp = tmp.sort_by{|val, q| -q}
588 tmp.collect!{|val, q| val}
589 tmp.collect!{|val, q| val}
589 end
590 end
590 return tmp
591 return tmp
591 rescue
592 rescue
592 nil
593 nil
593 end
594 end
594
595
595 # Returns a string that can be used as filename value in Content-Disposition header
596 # Returns a string that can be used as filename value in Content-Disposition header
596 def filename_for_content_disposition(name)
597 def filename_for_content_disposition(name)
597 request.env['HTTP_USER_AGENT'] =~ %r{(MSIE|Trident)} ? ERB::Util.url_encode(name) : name
598 request.env['HTTP_USER_AGENT'] =~ %r{(MSIE|Trident)} ? ERB::Util.url_encode(name) : name
598 end
599 end
599
600
600 def api_request?
601 def api_request?
601 %w(xml json).include? params[:format]
602 %w(xml json).include? params[:format]
602 end
603 end
603
604
604 # Returns the API key present in the request
605 # Returns the API key present in the request
605 def api_key_from_request
606 def api_key_from_request
606 if params[:key].present?
607 if params[:key].present?
607 params[:key].to_s
608 params[:key].to_s
608 elsif request.headers["X-Redmine-API-Key"].present?
609 elsif request.headers["X-Redmine-API-Key"].present?
609 request.headers["X-Redmine-API-Key"].to_s
610 request.headers["X-Redmine-API-Key"].to_s
610 end
611 end
611 end
612 end
612
613
613 # Returns the API 'switch user' value if present
614 # Returns the API 'switch user' value if present
614 def api_switch_user_from_request
615 def api_switch_user_from_request
615 request.headers["X-Redmine-Switch-User"].to_s.presence
616 request.headers["X-Redmine-Switch-User"].to_s.presence
616 end
617 end
617
618
618 # Renders a warning flash if obj has unsaved attachments
619 # Renders a warning flash if obj has unsaved attachments
619 def render_attachment_warning_if_needed(obj)
620 def render_attachment_warning_if_needed(obj)
620 flash[:warning] = l(:warning_attachments_not_saved, obj.unsaved_attachments.size) if obj.unsaved_attachments.present?
621 flash[:warning] = l(:warning_attachments_not_saved, obj.unsaved_attachments.size) if obj.unsaved_attachments.present?
621 end
622 end
622
623
623 # Rescues an invalid query statement. Just in case...
624 # Rescues an invalid query statement. Just in case...
624 def query_statement_invalid(exception)
625 def query_statement_invalid(exception)
625 logger.error "Query::StatementInvalid: #{exception.message}" if logger
626 logger.error "Query::StatementInvalid: #{exception.message}" if logger
626 session.delete(:query)
627 session.delete(:query)
627 sort_clear if respond_to?(:sort_clear)
628 sort_clear if respond_to?(:sort_clear)
628 render_error "An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator."
629 render_error "An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator."
629 end
630 end
630
631
631 # Renders a 200 response for successfull updates or deletions via the API
632 # Renders a 200 response for successfull updates or deletions via the API
632 def render_api_ok
633 def render_api_ok
633 render_api_head :ok
634 render_api_head :ok
634 end
635 end
635
636
636 # Renders a head API response
637 # Renders a head API response
637 def render_api_head(status)
638 def render_api_head(status)
638 # #head would return a response body with one space
639 # #head would return a response body with one space
639 render :text => '', :status => status, :layout => nil
640 render :text => '', :status => status, :layout => nil
640 end
641 end
641
642
642 # Renders API response on validation failure
643 # Renders API response on validation failure
643 # for an object or an array of objects
644 # for an object or an array of objects
644 def render_validation_errors(objects)
645 def render_validation_errors(objects)
645 messages = Array.wrap(objects).map {|object| object.errors.full_messages}.flatten
646 messages = Array.wrap(objects).map {|object| object.errors.full_messages}.flatten
646 render_api_errors(messages)
647 render_api_errors(messages)
647 end
648 end
648
649
649 def render_api_errors(*messages)
650 def render_api_errors(*messages)
650 @error_messages = messages.flatten
651 @error_messages = messages.flatten
651 render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil
652 render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil
652 end
653 end
653
654
654 # Overrides #_include_layout? so that #render with no arguments
655 # Overrides #_include_layout? so that #render with no arguments
655 # doesn't use the layout for api requests
656 # doesn't use the layout for api requests
656 def _include_layout?(*args)
657 def _include_layout?(*args)
657 api_request? ? false : super
658 api_request? ? false : super
658 end
659 end
659 end
660 end
@@ -1,835 +1,846
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require "digest/sha1"
18 require "digest/sha1"
19
19
20 class User < Principal
20 class User < Principal
21 include Redmine::SafeAttributes
21 include Redmine::SafeAttributes
22
22
23 # Different ways of displaying/sorting users
23 # Different ways of displaying/sorting users
24 USER_FORMATS = {
24 USER_FORMATS = {
25 :firstname_lastname => {
25 :firstname_lastname => {
26 :string => '#{firstname} #{lastname}',
26 :string => '#{firstname} #{lastname}',
27 :order => %w(firstname lastname id),
27 :order => %w(firstname lastname id),
28 :setting_order => 1
28 :setting_order => 1
29 },
29 },
30 :firstname_lastinitial => {
30 :firstname_lastinitial => {
31 :string => '#{firstname} #{lastname.to_s.chars.first}.',
31 :string => '#{firstname} #{lastname.to_s.chars.first}.',
32 :order => %w(firstname lastname id),
32 :order => %w(firstname lastname id),
33 :setting_order => 2
33 :setting_order => 2
34 },
34 },
35 :firstinitial_lastname => {
35 :firstinitial_lastname => {
36 :string => '#{firstname.to_s.gsub(/(([[:alpha:]])[[:alpha:]]*\.?)/, \'\2.\')} #{lastname}',
36 :string => '#{firstname.to_s.gsub(/(([[:alpha:]])[[:alpha:]]*\.?)/, \'\2.\')} #{lastname}',
37 :order => %w(firstname lastname id),
37 :order => %w(firstname lastname id),
38 :setting_order => 2
38 :setting_order => 2
39 },
39 },
40 :firstname => {
40 :firstname => {
41 :string => '#{firstname}',
41 :string => '#{firstname}',
42 :order => %w(firstname id),
42 :order => %w(firstname id),
43 :setting_order => 3
43 :setting_order => 3
44 },
44 },
45 :lastname_firstname => {
45 :lastname_firstname => {
46 :string => '#{lastname} #{firstname}',
46 :string => '#{lastname} #{firstname}',
47 :order => %w(lastname firstname id),
47 :order => %w(lastname firstname id),
48 :setting_order => 4
48 :setting_order => 4
49 },
49 },
50 :lastname_coma_firstname => {
50 :lastname_coma_firstname => {
51 :string => '#{lastname}, #{firstname}',
51 :string => '#{lastname}, #{firstname}',
52 :order => %w(lastname firstname id),
52 :order => %w(lastname firstname id),
53 :setting_order => 5
53 :setting_order => 5
54 },
54 },
55 :lastname => {
55 :lastname => {
56 :string => '#{lastname}',
56 :string => '#{lastname}',
57 :order => %w(lastname id),
57 :order => %w(lastname id),
58 :setting_order => 6
58 :setting_order => 6
59 },
59 },
60 :username => {
60 :username => {
61 :string => '#{login}',
61 :string => '#{login}',
62 :order => %w(login id),
62 :order => %w(login id),
63 :setting_order => 7
63 :setting_order => 7
64 },
64 },
65 }
65 }
66
66
67 MAIL_NOTIFICATION_OPTIONS = [
67 MAIL_NOTIFICATION_OPTIONS = [
68 ['all', :label_user_mail_option_all],
68 ['all', :label_user_mail_option_all],
69 ['selected', :label_user_mail_option_selected],
69 ['selected', :label_user_mail_option_selected],
70 ['only_my_events', :label_user_mail_option_only_my_events],
70 ['only_my_events', :label_user_mail_option_only_my_events],
71 ['only_assigned', :label_user_mail_option_only_assigned],
71 ['only_assigned', :label_user_mail_option_only_assigned],
72 ['only_owner', :label_user_mail_option_only_owner],
72 ['only_owner', :label_user_mail_option_only_owner],
73 ['none', :label_user_mail_option_none]
73 ['none', :label_user_mail_option_none]
74 ]
74 ]
75
75
76 has_and_belongs_to_many :groups,
76 has_and_belongs_to_many :groups,
77 :join_table => "#{table_name_prefix}groups_users#{table_name_suffix}",
77 :join_table => "#{table_name_prefix}groups_users#{table_name_suffix}",
78 :after_add => Proc.new {|user, group| group.user_added(user)},
78 :after_add => Proc.new {|user, group| group.user_added(user)},
79 :after_remove => Proc.new {|user, group| group.user_removed(user)}
79 :after_remove => Proc.new {|user, group| group.user_removed(user)}
80 has_many :changesets, :dependent => :nullify
80 has_many :changesets, :dependent => :nullify
81 has_one :preference, :dependent => :destroy, :class_name => 'UserPreference'
81 has_one :preference, :dependent => :destroy, :class_name => 'UserPreference'
82 has_one :rss_token, lambda {where "action='feeds'"}, :class_name => 'Token'
82 has_one :rss_token, lambda {where "action='feeds'"}, :class_name => 'Token'
83 has_one :api_token, lambda {where "action='api'"}, :class_name => 'Token'
83 has_one :api_token, lambda {where "action='api'"}, :class_name => 'Token'
84 has_one :email_address, lambda {where :is_default => true}, :autosave => true
84 has_one :email_address, lambda {where :is_default => true}, :autosave => true
85 has_many :email_addresses, :dependent => :delete_all
85 has_many :email_addresses, :dependent => :delete_all
86 belongs_to :auth_source
86 belongs_to :auth_source
87
87
88 scope :logged, lambda { where("#{User.table_name}.status <> #{STATUS_ANONYMOUS}") }
88 scope :logged, lambda { where("#{User.table_name}.status <> #{STATUS_ANONYMOUS}") }
89 scope :status, lambda {|arg| where(arg.blank? ? nil : {:status => arg.to_i}) }
89 scope :status, lambda {|arg| where(arg.blank? ? nil : {:status => arg.to_i}) }
90
90
91 acts_as_customizable
91 acts_as_customizable
92
92
93 attr_accessor :password, :password_confirmation, :generate_password
93 attr_accessor :password, :password_confirmation, :generate_password
94 attr_accessor :last_before_login_on
94 attr_accessor :last_before_login_on
95 # Prevents unauthorized assignments
95 # Prevents unauthorized assignments
96 attr_protected :login, :admin, :password, :password_confirmation, :hashed_password
96 attr_protected :login, :admin, :password, :password_confirmation, :hashed_password
97
97
98 LOGIN_LENGTH_LIMIT = 60
98 LOGIN_LENGTH_LIMIT = 60
99 MAIL_LENGTH_LIMIT = 60
99 MAIL_LENGTH_LIMIT = 60
100
100
101 validates_presence_of :login, :firstname, :lastname, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
101 validates_presence_of :login, :firstname, :lastname, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
102 validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, :case_sensitive => false
102 validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, :case_sensitive => false
103 # Login must contain letters, numbers, underscores only
103 # Login must contain letters, numbers, underscores only
104 validates_format_of :login, :with => /\A[a-z0-9_\-@\.]*\z/i
104 validates_format_of :login, :with => /\A[a-z0-9_\-@\.]*\z/i
105 validates_length_of :login, :maximum => LOGIN_LENGTH_LIMIT
105 validates_length_of :login, :maximum => LOGIN_LENGTH_LIMIT
106 validates_length_of :firstname, :lastname, :maximum => 30
106 validates_length_of :firstname, :lastname, :maximum => 30
107 validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true
107 validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true
108 validate :validate_password_length
108 validate :validate_password_length
109 validate do
109 validate do
110 if password_confirmation && password != password_confirmation
110 if password_confirmation && password != password_confirmation
111 errors.add(:password, :confirmation)
111 errors.add(:password, :confirmation)
112 end
112 end
113 end
113 end
114
114
115 before_validation :instantiate_email_address
115 before_validation :instantiate_email_address
116 before_create :set_mail_notification
116 before_create :set_mail_notification
117 before_save :generate_password_if_needed, :update_hashed_password
117 before_save :generate_password_if_needed, :update_hashed_password
118 before_destroy :remove_references_before_destroy
118 before_destroy :remove_references_before_destroy
119 after_save :update_notified_project_ids, :destroy_tokens
119 after_save :update_notified_project_ids, :destroy_tokens
120
120
121 scope :in_group, lambda {|group|
121 scope :in_group, lambda {|group|
122 group_id = group.is_a?(Group) ? group.id : group.to_i
122 group_id = group.is_a?(Group) ? group.id : group.to_i
123 where("#{User.table_name}.id IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id)
123 where("#{User.table_name}.id IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id)
124 }
124 }
125 scope :not_in_group, lambda {|group|
125 scope :not_in_group, lambda {|group|
126 group_id = group.is_a?(Group) ? group.id : group.to_i
126 group_id = group.is_a?(Group) ? group.id : group.to_i
127 where("#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id)
127 where("#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id)
128 }
128 }
129 scope :sorted, lambda { order(*User.fields_for_order_statement)}
129 scope :sorted, lambda { order(*User.fields_for_order_statement)}
130 scope :having_mail, lambda {|arg|
130 scope :having_mail, lambda {|arg|
131 addresses = Array.wrap(arg).map {|a| a.to_s.downcase}
131 addresses = Array.wrap(arg).map {|a| a.to_s.downcase}
132 if addresses.any?
132 if addresses.any?
133 joins(:email_addresses).where("LOWER(address) IN (?)", addresses).uniq
133 joins(:email_addresses).where("LOWER(address) IN (?)", addresses).uniq
134 else
134 else
135 none
135 none
136 end
136 end
137 }
137 }
138
138
139 def set_mail_notification
139 def set_mail_notification
140 self.mail_notification = Setting.default_notification_option if self.mail_notification.blank?
140 self.mail_notification = Setting.default_notification_option if self.mail_notification.blank?
141 true
141 true
142 end
142 end
143
143
144 def update_hashed_password
144 def update_hashed_password
145 # update hashed_password if password was set
145 # update hashed_password if password was set
146 if self.password && self.auth_source_id.blank?
146 if self.password && self.auth_source_id.blank?
147 salt_password(password)
147 salt_password(password)
148 end
148 end
149 end
149 end
150
150
151 alias :base_reload :reload
151 alias :base_reload :reload
152 def reload(*args)
152 def reload(*args)
153 @name = nil
153 @name = nil
154 @projects_by_role = nil
154 @projects_by_role = nil
155 @membership_by_project_id = nil
155 @membership_by_project_id = nil
156 @notified_projects_ids = nil
156 @notified_projects_ids = nil
157 @notified_projects_ids_changed = false
157 @notified_projects_ids_changed = false
158 @builtin_role = nil
158 @builtin_role = nil
159 @visible_project_ids = nil
159 @visible_project_ids = nil
160 base_reload(*args)
160 base_reload(*args)
161 end
161 end
162
162
163 def mail
163 def mail
164 email_address.try(:address)
164 email_address.try(:address)
165 end
165 end
166
166
167 def mail=(arg)
167 def mail=(arg)
168 email = email_address || build_email_address
168 email = email_address || build_email_address
169 email.address = arg
169 email.address = arg
170 end
170 end
171
171
172 def mail_changed?
172 def mail_changed?
173 email_address.try(:address_changed?)
173 email_address.try(:address_changed?)
174 end
174 end
175
175
176 def mails
176 def mails
177 email_addresses.pluck(:address)
177 email_addresses.pluck(:address)
178 end
178 end
179
179
180 def self.find_or_initialize_by_identity_url(url)
180 def self.find_or_initialize_by_identity_url(url)
181 user = where(:identity_url => url).first
181 user = where(:identity_url => url).first
182 unless user
182 unless user
183 user = User.new
183 user = User.new
184 user.identity_url = url
184 user.identity_url = url
185 end
185 end
186 user
186 user
187 end
187 end
188
188
189 def identity_url=(url)
189 def identity_url=(url)
190 if url.blank?
190 if url.blank?
191 write_attribute(:identity_url, '')
191 write_attribute(:identity_url, '')
192 else
192 else
193 begin
193 begin
194 write_attribute(:identity_url, OpenIdAuthentication.normalize_identifier(url))
194 write_attribute(:identity_url, OpenIdAuthentication.normalize_identifier(url))
195 rescue OpenIdAuthentication::InvalidOpenId
195 rescue OpenIdAuthentication::InvalidOpenId
196 # Invalid url, don't save
196 # Invalid url, don't save
197 end
197 end
198 end
198 end
199 self.read_attribute(:identity_url)
199 self.read_attribute(:identity_url)
200 end
200 end
201
201
202 # Returns the user that matches provided login and password, or nil
202 # Returns the user that matches provided login and password, or nil
203 def self.try_to_login(login, password, active_only=true)
203 def self.try_to_login(login, password, active_only=true)
204 login = login.to_s
204 login = login.to_s
205 password = password.to_s
205 password = password.to_s
206
206
207 # Make sure no one can sign in with an empty login or password
207 # Make sure no one can sign in with an empty login or password
208 return nil if login.empty? || password.empty?
208 return nil if login.empty? || password.empty?
209 user = find_by_login(login)
209 user = find_by_login(login)
210 if user
210 if user
211 # user is already in local database
211 # user is already in local database
212 return nil unless user.check_password?(password)
212 return nil unless user.check_password?(password)
213 return nil if !user.active? && active_only
213 return nil if !user.active? && active_only
214 else
214 else
215 # user is not yet registered, try to authenticate with available sources
215 # user is not yet registered, try to authenticate with available sources
216 attrs = AuthSource.authenticate(login, password)
216 attrs = AuthSource.authenticate(login, password)
217 if attrs
217 if attrs
218 user = new(attrs)
218 user = new(attrs)
219 user.login = login
219 user.login = login
220 user.language = Setting.default_language
220 user.language = Setting.default_language
221 if user.save
221 if user.save
222 user.reload
222 user.reload
223 logger.info("User '#{user.login}' created from external auth source: #{user.auth_source.type} - #{user.auth_source.name}") if logger && user.auth_source
223 logger.info("User '#{user.login}' created from external auth source: #{user.auth_source.type} - #{user.auth_source.name}") if logger && user.auth_source
224 end
224 end
225 end
225 end
226 end
226 end
227 user.update_column(:last_login_on, Time.now) if user && !user.new_record? && user.active?
227 user.update_column(:last_login_on, Time.now) if user && !user.new_record? && user.active?
228 user
228 user
229 rescue => text
229 rescue => text
230 raise text
230 raise text
231 end
231 end
232
232
233 # Returns the user who matches the given autologin +key+ or nil
233 # Returns the user who matches the given autologin +key+ or nil
234 def self.try_to_autologin(key)
234 def self.try_to_autologin(key)
235 user = Token.find_active_user('autologin', key, Setting.autologin.to_i)
235 user = Token.find_active_user('autologin', key, Setting.autologin.to_i)
236 if user
236 if user
237 user.update_column(:last_login_on, Time.now)
237 user.update_column(:last_login_on, Time.now)
238 user
238 user
239 end
239 end
240 end
240 end
241
241
242 def self.name_formatter(formatter = nil)
242 def self.name_formatter(formatter = nil)
243 USER_FORMATS[formatter || Setting.user_format] || USER_FORMATS[:firstname_lastname]
243 USER_FORMATS[formatter || Setting.user_format] || USER_FORMATS[:firstname_lastname]
244 end
244 end
245
245
246 # Returns an array of fields names than can be used to make an order statement for users
246 # Returns an array of fields names than can be used to make an order statement for users
247 # according to how user names are displayed
247 # according to how user names are displayed
248 # Examples:
248 # Examples:
249 #
249 #
250 # User.fields_for_order_statement => ['users.login', 'users.id']
250 # User.fields_for_order_statement => ['users.login', 'users.id']
251 # User.fields_for_order_statement('authors') => ['authors.login', 'authors.id']
251 # User.fields_for_order_statement('authors') => ['authors.login', 'authors.id']
252 def self.fields_for_order_statement(table=nil)
252 def self.fields_for_order_statement(table=nil)
253 table ||= table_name
253 table ||= table_name
254 name_formatter[:order].map {|field| "#{table}.#{field}"}
254 name_formatter[:order].map {|field| "#{table}.#{field}"}
255 end
255 end
256
256
257 # Return user's full name for display
257 # Return user's full name for display
258 def name(formatter = nil)
258 def name(formatter = nil)
259 f = self.class.name_formatter(formatter)
259 f = self.class.name_formatter(formatter)
260 if formatter
260 if formatter
261 eval('"' + f[:string] + '"')
261 eval('"' + f[:string] + '"')
262 else
262 else
263 @name ||= eval('"' + f[:string] + '"')
263 @name ||= eval('"' + f[:string] + '"')
264 end
264 end
265 end
265 end
266
266
267 def active?
267 def active?
268 self.status == STATUS_ACTIVE
268 self.status == STATUS_ACTIVE
269 end
269 end
270
270
271 def registered?
271 def registered?
272 self.status == STATUS_REGISTERED
272 self.status == STATUS_REGISTERED
273 end
273 end
274
274
275 def locked?
275 def locked?
276 self.status == STATUS_LOCKED
276 self.status == STATUS_LOCKED
277 end
277 end
278
278
279 def activate
279 def activate
280 self.status = STATUS_ACTIVE
280 self.status = STATUS_ACTIVE
281 end
281 end
282
282
283 def register
283 def register
284 self.status = STATUS_REGISTERED
284 self.status = STATUS_REGISTERED
285 end
285 end
286
286
287 def lock
287 def lock
288 self.status = STATUS_LOCKED
288 self.status = STATUS_LOCKED
289 end
289 end
290
290
291 def activate!
291 def activate!
292 update_attribute(:status, STATUS_ACTIVE)
292 update_attribute(:status, STATUS_ACTIVE)
293 end
293 end
294
294
295 def register!
295 def register!
296 update_attribute(:status, STATUS_REGISTERED)
296 update_attribute(:status, STATUS_REGISTERED)
297 end
297 end
298
298
299 def lock!
299 def lock!
300 update_attribute(:status, STATUS_LOCKED)
300 update_attribute(:status, STATUS_LOCKED)
301 end
301 end
302
302
303 # Returns true if +clear_password+ is the correct user's password, otherwise false
303 # Returns true if +clear_password+ is the correct user's password, otherwise false
304 def check_password?(clear_password)
304 def check_password?(clear_password)
305 if auth_source_id.present?
305 if auth_source_id.present?
306 auth_source.authenticate(self.login, clear_password)
306 auth_source.authenticate(self.login, clear_password)
307 else
307 else
308 User.hash_password("#{salt}#{User.hash_password clear_password}") == hashed_password
308 User.hash_password("#{salt}#{User.hash_password clear_password}") == hashed_password
309 end
309 end
310 end
310 end
311
311
312 # Generates a random salt and computes hashed_password for +clear_password+
312 # Generates a random salt and computes hashed_password for +clear_password+
313 # The hashed password is stored in the following form: SHA1(salt + SHA1(password))
313 # The hashed password is stored in the following form: SHA1(salt + SHA1(password))
314 def salt_password(clear_password)
314 def salt_password(clear_password)
315 self.salt = User.generate_salt
315 self.salt = User.generate_salt
316 self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}")
316 self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}")
317 self.passwd_changed_on = Time.now.change(:usec => 0)
317 self.passwd_changed_on = Time.now.change(:usec => 0)
318 end
318 end
319
319
320 # Does the backend storage allow this user to change their password?
320 # Does the backend storage allow this user to change their password?
321 def change_password_allowed?
321 def change_password_allowed?
322 return true if auth_source.nil?
322 return true if auth_source.nil?
323 return auth_source.allow_password_changes?
323 return auth_source.allow_password_changes?
324 end
324 end
325
325
326 def password_expired?
327 changed_on = self.passwd_changed_on || Time.at(0)
328 period = Setting.password_max_age.to_i
329
330 if period.zero?
331 false
332 else
333 changed_on < period.days.ago
334 end
335 end
336
326 def must_change_password?
337 def must_change_password?
327 must_change_passwd? && change_password_allowed?
338 (must_change_passwd? || password_expired?) && change_password_allowed?
328 end
339 end
329
340
330 def generate_password?
341 def generate_password?
331 generate_password == '1' || generate_password == true
342 generate_password == '1' || generate_password == true
332 end
343 end
333
344
334 # Generate and set a random password on given length
345 # Generate and set a random password on given length
335 def random_password(length=40)
346 def random_password(length=40)
336 chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
347 chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
337 chars -= %w(0 O 1 l)
348 chars -= %w(0 O 1 l)
338 password = ''
349 password = ''
339 length.times {|i| password << chars[SecureRandom.random_number(chars.size)] }
350 length.times {|i| password << chars[SecureRandom.random_number(chars.size)] }
340 self.password = password
351 self.password = password
341 self.password_confirmation = password
352 self.password_confirmation = password
342 self
353 self
343 end
354 end
344
355
345 def pref
356 def pref
346 self.preference ||= UserPreference.new(:user => self)
357 self.preference ||= UserPreference.new(:user => self)
347 end
358 end
348
359
349 def time_zone
360 def time_zone
350 @time_zone ||= (self.pref.time_zone.blank? ? nil : ActiveSupport::TimeZone[self.pref.time_zone])
361 @time_zone ||= (self.pref.time_zone.blank? ? nil : ActiveSupport::TimeZone[self.pref.time_zone])
351 end
362 end
352
363
353 def force_default_language?
364 def force_default_language?
354 Setting.force_default_language_for_loggedin?
365 Setting.force_default_language_for_loggedin?
355 end
366 end
356
367
357 def language
368 def language
358 if force_default_language?
369 if force_default_language?
359 Setting.default_language
370 Setting.default_language
360 else
371 else
361 super
372 super
362 end
373 end
363 end
374 end
364
375
365 def wants_comments_in_reverse_order?
376 def wants_comments_in_reverse_order?
366 self.pref[:comments_sorting] == 'desc'
377 self.pref[:comments_sorting] == 'desc'
367 end
378 end
368
379
369 # Return user's RSS key (a 40 chars long string), used to access feeds
380 # Return user's RSS key (a 40 chars long string), used to access feeds
370 def rss_key
381 def rss_key
371 if rss_token.nil?
382 if rss_token.nil?
372 create_rss_token(:action => 'feeds')
383 create_rss_token(:action => 'feeds')
373 end
384 end
374 rss_token.value
385 rss_token.value
375 end
386 end
376
387
377 # Return user's API key (a 40 chars long string), used to access the API
388 # Return user's API key (a 40 chars long string), used to access the API
378 def api_key
389 def api_key
379 if api_token.nil?
390 if api_token.nil?
380 create_api_token(:action => 'api')
391 create_api_token(:action => 'api')
381 end
392 end
382 api_token.value
393 api_token.value
383 end
394 end
384
395
385 # Return an array of project ids for which the user has explicitly turned mail notifications on
396 # Return an array of project ids for which the user has explicitly turned mail notifications on
386 def notified_projects_ids
397 def notified_projects_ids
387 @notified_projects_ids ||= memberships.select {|m| m.mail_notification?}.collect(&:project_id)
398 @notified_projects_ids ||= memberships.select {|m| m.mail_notification?}.collect(&:project_id)
388 end
399 end
389
400
390 def notified_project_ids=(ids)
401 def notified_project_ids=(ids)
391 @notified_projects_ids_changed = true
402 @notified_projects_ids_changed = true
392 @notified_projects_ids = ids.map(&:to_i).uniq.select {|n| n > 0}
403 @notified_projects_ids = ids.map(&:to_i).uniq.select {|n| n > 0}
393 end
404 end
394
405
395 # Updates per project notifications (after_save callback)
406 # Updates per project notifications (after_save callback)
396 def update_notified_project_ids
407 def update_notified_project_ids
397 if @notified_projects_ids_changed
408 if @notified_projects_ids_changed
398 ids = (mail_notification == 'selected' ? Array.wrap(notified_projects_ids).reject(&:blank?) : [])
409 ids = (mail_notification == 'selected' ? Array.wrap(notified_projects_ids).reject(&:blank?) : [])
399 members.update_all(:mail_notification => false)
410 members.update_all(:mail_notification => false)
400 members.where(:project_id => ids).update_all(:mail_notification => true) if ids.any?
411 members.where(:project_id => ids).update_all(:mail_notification => true) if ids.any?
401 end
412 end
402 end
413 end
403 private :update_notified_project_ids
414 private :update_notified_project_ids
404
415
405 def valid_notification_options
416 def valid_notification_options
406 self.class.valid_notification_options(self)
417 self.class.valid_notification_options(self)
407 end
418 end
408
419
409 # Only users that belong to more than 1 project can select projects for which they are notified
420 # Only users that belong to more than 1 project can select projects for which they are notified
410 def self.valid_notification_options(user=nil)
421 def self.valid_notification_options(user=nil)
411 # Note that @user.membership.size would fail since AR ignores
422 # Note that @user.membership.size would fail since AR ignores
412 # :include association option when doing a count
423 # :include association option when doing a count
413 if user.nil? || user.memberships.length < 1
424 if user.nil? || user.memberships.length < 1
414 MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'}
425 MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'}
415 else
426 else
416 MAIL_NOTIFICATION_OPTIONS
427 MAIL_NOTIFICATION_OPTIONS
417 end
428 end
418 end
429 end
419
430
420 # Find a user account by matching the exact login and then a case-insensitive
431 # Find a user account by matching the exact login and then a case-insensitive
421 # version. Exact matches will be given priority.
432 # version. Exact matches will be given priority.
422 def self.find_by_login(login)
433 def self.find_by_login(login)
423 login = Redmine::CodesetUtil.replace_invalid_utf8(login.to_s)
434 login = Redmine::CodesetUtil.replace_invalid_utf8(login.to_s)
424 if login.present?
435 if login.present?
425 # First look for an exact match
436 # First look for an exact match
426 user = where(:login => login).detect {|u| u.login == login}
437 user = where(:login => login).detect {|u| u.login == login}
427 unless user
438 unless user
428 # Fail over to case-insensitive if none was found
439 # Fail over to case-insensitive if none was found
429 user = where("LOWER(login) = ?", login.downcase).first
440 user = where("LOWER(login) = ?", login.downcase).first
430 end
441 end
431 user
442 user
432 end
443 end
433 end
444 end
434
445
435 def self.find_by_rss_key(key)
446 def self.find_by_rss_key(key)
436 Token.find_active_user('feeds', key)
447 Token.find_active_user('feeds', key)
437 end
448 end
438
449
439 def self.find_by_api_key(key)
450 def self.find_by_api_key(key)
440 Token.find_active_user('api', key)
451 Token.find_active_user('api', key)
441 end
452 end
442
453
443 # Makes find_by_mail case-insensitive
454 # Makes find_by_mail case-insensitive
444 def self.find_by_mail(mail)
455 def self.find_by_mail(mail)
445 having_mail(mail).first
456 having_mail(mail).first
446 end
457 end
447
458
448 # Returns true if the default admin account can no longer be used
459 # Returns true if the default admin account can no longer be used
449 def self.default_admin_account_changed?
460 def self.default_admin_account_changed?
450 !User.active.find_by_login("admin").try(:check_password?, "admin")
461 !User.active.find_by_login("admin").try(:check_password?, "admin")
451 end
462 end
452
463
453 def to_s
464 def to_s
454 name
465 name
455 end
466 end
456
467
457 CSS_CLASS_BY_STATUS = {
468 CSS_CLASS_BY_STATUS = {
458 STATUS_ANONYMOUS => 'anon',
469 STATUS_ANONYMOUS => 'anon',
459 STATUS_ACTIVE => 'active',
470 STATUS_ACTIVE => 'active',
460 STATUS_REGISTERED => 'registered',
471 STATUS_REGISTERED => 'registered',
461 STATUS_LOCKED => 'locked'
472 STATUS_LOCKED => 'locked'
462 }
473 }
463
474
464 def css_classes
475 def css_classes
465 "user #{CSS_CLASS_BY_STATUS[status]}"
476 "user #{CSS_CLASS_BY_STATUS[status]}"
466 end
477 end
467
478
468 # Returns the current day according to user's time zone
479 # Returns the current day according to user's time zone
469 def today
480 def today
470 if time_zone.nil?
481 if time_zone.nil?
471 Date.today
482 Date.today
472 else
483 else
473 Time.now.in_time_zone(time_zone).to_date
484 Time.now.in_time_zone(time_zone).to_date
474 end
485 end
475 end
486 end
476
487
477 # Returns the day of +time+ according to user's time zone
488 # Returns the day of +time+ according to user's time zone
478 def time_to_date(time)
489 def time_to_date(time)
479 if time_zone.nil?
490 if time_zone.nil?
480 time.to_date
491 time.to_date
481 else
492 else
482 time.in_time_zone(time_zone).to_date
493 time.in_time_zone(time_zone).to_date
483 end
494 end
484 end
495 end
485
496
486 def logged?
497 def logged?
487 true
498 true
488 end
499 end
489
500
490 def anonymous?
501 def anonymous?
491 !logged?
502 !logged?
492 end
503 end
493
504
494 # Returns user's membership for the given project
505 # Returns user's membership for the given project
495 # or nil if the user is not a member of project
506 # or nil if the user is not a member of project
496 def membership(project)
507 def membership(project)
497 project_id = project.is_a?(Project) ? project.id : project
508 project_id = project.is_a?(Project) ? project.id : project
498
509
499 @membership_by_project_id ||= Hash.new {|h, project_id|
510 @membership_by_project_id ||= Hash.new {|h, project_id|
500 h[project_id] = memberships.where(:project_id => project_id).first
511 h[project_id] = memberships.where(:project_id => project_id).first
501 }
512 }
502 @membership_by_project_id[project_id]
513 @membership_by_project_id[project_id]
503 end
514 end
504
515
505 # Returns the user's bult-in role
516 # Returns the user's bult-in role
506 def builtin_role
517 def builtin_role
507 @builtin_role ||= Role.non_member
518 @builtin_role ||= Role.non_member
508 end
519 end
509
520
510 # Return user's roles for project
521 # Return user's roles for project
511 def roles_for_project(project)
522 def roles_for_project(project)
512 # No role on archived projects
523 # No role on archived projects
513 return [] if project.nil? || project.archived?
524 return [] if project.nil? || project.archived?
514 if membership = membership(project)
525 if membership = membership(project)
515 membership.roles.dup
526 membership.roles.dup
516 elsif project.is_public?
527 elsif project.is_public?
517 project.override_roles(builtin_role)
528 project.override_roles(builtin_role)
518 else
529 else
519 []
530 []
520 end
531 end
521 end
532 end
522
533
523 # Returns a hash of user's projects grouped by roles
534 # Returns a hash of user's projects grouped by roles
524 def projects_by_role
535 def projects_by_role
525 return @projects_by_role if @projects_by_role
536 return @projects_by_role if @projects_by_role
526
537
527 hash = Hash.new([])
538 hash = Hash.new([])
528
539
529 group_class = anonymous? ? GroupAnonymous : GroupNonMember
540 group_class = anonymous? ? GroupAnonymous : GroupNonMember
530 members = Member.joins(:project, :principal).
541 members = Member.joins(:project, :principal).
531 where("#{Project.table_name}.status <> 9").
542 where("#{Project.table_name}.status <> 9").
532 where("#{Member.table_name}.user_id = ? OR (#{Project.table_name}.is_public = ? AND #{Principal.table_name}.type = ?)", self.id, true, group_class.name).
543 where("#{Member.table_name}.user_id = ? OR (#{Project.table_name}.is_public = ? AND #{Principal.table_name}.type = ?)", self.id, true, group_class.name).
533 preload(:project, :roles).
544 preload(:project, :roles).
534 to_a
545 to_a
535
546
536 members.reject! {|member| member.user_id != id && project_ids.include?(member.project_id)}
547 members.reject! {|member| member.user_id != id && project_ids.include?(member.project_id)}
537 members.each do |member|
548 members.each do |member|
538 if member.project
549 if member.project
539 member.roles.each do |role|
550 member.roles.each do |role|
540 hash[role] = [] unless hash.key?(role)
551 hash[role] = [] unless hash.key?(role)
541 hash[role] << member.project
552 hash[role] << member.project
542 end
553 end
543 end
554 end
544 end
555 end
545
556
546 hash.each do |role, projects|
557 hash.each do |role, projects|
547 projects.uniq!
558 projects.uniq!
548 end
559 end
549
560
550 @projects_by_role = hash
561 @projects_by_role = hash
551 end
562 end
552
563
553 # Returns the ids of visible projects
564 # Returns the ids of visible projects
554 def visible_project_ids
565 def visible_project_ids
555 @visible_project_ids ||= Project.visible(self).pluck(:id)
566 @visible_project_ids ||= Project.visible(self).pluck(:id)
556 end
567 end
557
568
558 # Returns true if user is arg or belongs to arg
569 # Returns true if user is arg or belongs to arg
559 def is_or_belongs_to?(arg)
570 def is_or_belongs_to?(arg)
560 if arg.is_a?(User)
571 if arg.is_a?(User)
561 self == arg
572 self == arg
562 elsif arg.is_a?(Group)
573 elsif arg.is_a?(Group)
563 arg.users.include?(self)
574 arg.users.include?(self)
564 else
575 else
565 false
576 false
566 end
577 end
567 end
578 end
568
579
569 # Return true if the user is allowed to do the specified action on a specific context
580 # Return true if the user is allowed to do the specified action on a specific context
570 # Action can be:
581 # Action can be:
571 # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit')
582 # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit')
572 # * a permission Symbol (eg. :edit_project)
583 # * a permission Symbol (eg. :edit_project)
573 # Context can be:
584 # Context can be:
574 # * a project : returns true if user is allowed to do the specified action on this project
585 # * a project : returns true if user is allowed to do the specified action on this project
575 # * an array of projects : returns true if user is allowed on every project
586 # * an array of projects : returns true if user is allowed on every project
576 # * nil with options[:global] set : check if user has at least one role allowed for this action,
587 # * nil with options[:global] set : check if user has at least one role allowed for this action,
577 # or falls back to Non Member / Anonymous permissions depending if the user is logged
588 # or falls back to Non Member / Anonymous permissions depending if the user is logged
578 def allowed_to?(action, context, options={}, &block)
589 def allowed_to?(action, context, options={}, &block)
579 if context && context.is_a?(Project)
590 if context && context.is_a?(Project)
580 return false unless context.allows_to?(action)
591 return false unless context.allows_to?(action)
581 # Admin users are authorized for anything else
592 # Admin users are authorized for anything else
582 return true if admin?
593 return true if admin?
583
594
584 roles = roles_for_project(context)
595 roles = roles_for_project(context)
585 return false unless roles
596 return false unless roles
586 roles.any? {|role|
597 roles.any? {|role|
587 (context.is_public? || role.member?) &&
598 (context.is_public? || role.member?) &&
588 role.allowed_to?(action) &&
599 role.allowed_to?(action) &&
589 (block_given? ? yield(role, self) : true)
600 (block_given? ? yield(role, self) : true)
590 }
601 }
591 elsif context && context.is_a?(Array)
602 elsif context && context.is_a?(Array)
592 if context.empty?
603 if context.empty?
593 false
604 false
594 else
605 else
595 # Authorize if user is authorized on every element of the array
606 # Authorize if user is authorized on every element of the array
596 context.map {|project| allowed_to?(action, project, options, &block)}.reduce(:&)
607 context.map {|project| allowed_to?(action, project, options, &block)}.reduce(:&)
597 end
608 end
598 elsif context
609 elsif context
599 raise ArgumentError.new("#allowed_to? context argument must be a Project, an Array of projects or nil")
610 raise ArgumentError.new("#allowed_to? context argument must be a Project, an Array of projects or nil")
600 elsif options[:global]
611 elsif options[:global]
601 # Admin users are always authorized
612 # Admin users are always authorized
602 return true if admin?
613 return true if admin?
603
614
604 # authorize if user has at least one role that has this permission
615 # authorize if user has at least one role that has this permission
605 roles = memberships.collect {|m| m.roles}.flatten.uniq
616 roles = memberships.collect {|m| m.roles}.flatten.uniq
606 roles << (self.logged? ? Role.non_member : Role.anonymous)
617 roles << (self.logged? ? Role.non_member : Role.anonymous)
607 roles.any? {|role|
618 roles.any? {|role|
608 role.allowed_to?(action) &&
619 role.allowed_to?(action) &&
609 (block_given? ? yield(role, self) : true)
620 (block_given? ? yield(role, self) : true)
610 }
621 }
611 else
622 else
612 false
623 false
613 end
624 end
614 end
625 end
615
626
616 # Is the user allowed to do the specified action on any project?
627 # Is the user allowed to do the specified action on any project?
617 # See allowed_to? for the actions and valid options.
628 # See allowed_to? for the actions and valid options.
618 #
629 #
619 # NB: this method is not used anywhere in the core codebase as of
630 # NB: this method is not used anywhere in the core codebase as of
620 # 2.5.2, but it's used by many plugins so if we ever want to remove
631 # 2.5.2, but it's used by many plugins so if we ever want to remove
621 # it it has to be carefully deprecated for a version or two.
632 # it it has to be carefully deprecated for a version or two.
622 def allowed_to_globally?(action, options={}, &block)
633 def allowed_to_globally?(action, options={}, &block)
623 allowed_to?(action, nil, options.reverse_merge(:global => true), &block)
634 allowed_to?(action, nil, options.reverse_merge(:global => true), &block)
624 end
635 end
625
636
626 # Returns true if the user is allowed to delete the user's own account
637 # Returns true if the user is allowed to delete the user's own account
627 def own_account_deletable?
638 def own_account_deletable?
628 Setting.unsubscribe? &&
639 Setting.unsubscribe? &&
629 (!admin? || User.active.where("admin = ? AND id <> ?", true, id).exists?)
640 (!admin? || User.active.where("admin = ? AND id <> ?", true, id).exists?)
630 end
641 end
631
642
632 safe_attributes 'login',
643 safe_attributes 'login',
633 'firstname',
644 'firstname',
634 'lastname',
645 'lastname',
635 'mail',
646 'mail',
636 'mail_notification',
647 'mail_notification',
637 'notified_project_ids',
648 'notified_project_ids',
638 'language',
649 'language',
639 'custom_field_values',
650 'custom_field_values',
640 'custom_fields',
651 'custom_fields',
641 'identity_url'
652 'identity_url'
642
653
643 safe_attributes 'status',
654 safe_attributes 'status',
644 'auth_source_id',
655 'auth_source_id',
645 'generate_password',
656 'generate_password',
646 'must_change_passwd',
657 'must_change_passwd',
647 :if => lambda {|user, current_user| current_user.admin?}
658 :if => lambda {|user, current_user| current_user.admin?}
648
659
649 safe_attributes 'group_ids',
660 safe_attributes 'group_ids',
650 :if => lambda {|user, current_user| current_user.admin? && !user.new_record?}
661 :if => lambda {|user, current_user| current_user.admin? && !user.new_record?}
651
662
652 # Utility method to help check if a user should be notified about an
663 # Utility method to help check if a user should be notified about an
653 # event.
664 # event.
654 #
665 #
655 # TODO: only supports Issue events currently
666 # TODO: only supports Issue events currently
656 def notify_about?(object)
667 def notify_about?(object)
657 if mail_notification == 'all'
668 if mail_notification == 'all'
658 true
669 true
659 elsif mail_notification.blank? || mail_notification == 'none'
670 elsif mail_notification.blank? || mail_notification == 'none'
660 false
671 false
661 else
672 else
662 case object
673 case object
663 when Issue
674 when Issue
664 case mail_notification
675 case mail_notification
665 when 'selected', 'only_my_events'
676 when 'selected', 'only_my_events'
666 # user receives notifications for created/assigned issues on unselected projects
677 # user receives notifications for created/assigned issues on unselected projects
667 object.author == self || is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was)
678 object.author == self || is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was)
668 when 'only_assigned'
679 when 'only_assigned'
669 is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was)
680 is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was)
670 when 'only_owner'
681 when 'only_owner'
671 object.author == self
682 object.author == self
672 end
683 end
673 when News
684 when News
674 # always send to project members except when mail_notification is set to 'none'
685 # always send to project members except when mail_notification is set to 'none'
675 true
686 true
676 end
687 end
677 end
688 end
678 end
689 end
679
690
680 def self.current=(user)
691 def self.current=(user)
681 RequestStore.store[:current_user] = user
692 RequestStore.store[:current_user] = user
682 end
693 end
683
694
684 def self.current
695 def self.current
685 RequestStore.store[:current_user] ||= User.anonymous
696 RequestStore.store[:current_user] ||= User.anonymous
686 end
697 end
687
698
688 # Returns the anonymous user. If the anonymous user does not exist, it is created. There can be only
699 # Returns the anonymous user. If the anonymous user does not exist, it is created. There can be only
689 # one anonymous user per database.
700 # one anonymous user per database.
690 def self.anonymous
701 def self.anonymous
691 anonymous_user = AnonymousUser.first
702 anonymous_user = AnonymousUser.first
692 if anonymous_user.nil?
703 if anonymous_user.nil?
693 anonymous_user = AnonymousUser.create(:lastname => 'Anonymous', :firstname => '', :login => '', :status => 0)
704 anonymous_user = AnonymousUser.create(:lastname => 'Anonymous', :firstname => '', :login => '', :status => 0)
694 raise 'Unable to create the anonymous user.' if anonymous_user.new_record?
705 raise 'Unable to create the anonymous user.' if anonymous_user.new_record?
695 end
706 end
696 anonymous_user
707 anonymous_user
697 end
708 end
698
709
699 # Salts all existing unsalted passwords
710 # Salts all existing unsalted passwords
700 # It changes password storage scheme from SHA1(password) to SHA1(salt + SHA1(password))
711 # It changes password storage scheme from SHA1(password) to SHA1(salt + SHA1(password))
701 # This method is used in the SaltPasswords migration and is to be kept as is
712 # This method is used in the SaltPasswords migration and is to be kept as is
702 def self.salt_unsalted_passwords!
713 def self.salt_unsalted_passwords!
703 transaction do
714 transaction do
704 User.where("salt IS NULL OR salt = ''").find_each do |user|
715 User.where("salt IS NULL OR salt = ''").find_each do |user|
705 next if user.hashed_password.blank?
716 next if user.hashed_password.blank?
706 salt = User.generate_salt
717 salt = User.generate_salt
707 hashed_password = User.hash_password("#{salt}#{user.hashed_password}")
718 hashed_password = User.hash_password("#{salt}#{user.hashed_password}")
708 User.where(:id => user.id).update_all(:salt => salt, :hashed_password => hashed_password)
719 User.where(:id => user.id).update_all(:salt => salt, :hashed_password => hashed_password)
709 end
720 end
710 end
721 end
711 end
722 end
712
723
713 protected
724 protected
714
725
715 def validate_password_length
726 def validate_password_length
716 return if password.blank? && generate_password?
727 return if password.blank? && generate_password?
717 # Password length validation based on setting
728 # Password length validation based on setting
718 if !password.nil? && password.size < Setting.password_min_length.to_i
729 if !password.nil? && password.size < Setting.password_min_length.to_i
719 errors.add(:password, :too_short, :count => Setting.password_min_length.to_i)
730 errors.add(:password, :too_short, :count => Setting.password_min_length.to_i)
720 end
731 end
721 end
732 end
722
733
723 def instantiate_email_address
734 def instantiate_email_address
724 email_address || build_email_address
735 email_address || build_email_address
725 end
736 end
726
737
727 private
738 private
728
739
729 def generate_password_if_needed
740 def generate_password_if_needed
730 if generate_password? && auth_source.nil?
741 if generate_password? && auth_source.nil?
731 length = [Setting.password_min_length.to_i + 2, 10].max
742 length = [Setting.password_min_length.to_i + 2, 10].max
732 random_password(length)
743 random_password(length)
733 end
744 end
734 end
745 end
735
746
736 # Delete all outstanding password reset tokens on password change.
747 # Delete all outstanding password reset tokens on password change.
737 # Delete the autologin tokens on password change to prohibit session leakage.
748 # Delete the autologin tokens on password change to prohibit session leakage.
738 # This helps to keep the account secure in case the associated email account
749 # This helps to keep the account secure in case the associated email account
739 # was compromised.
750 # was compromised.
740 def destroy_tokens
751 def destroy_tokens
741 if hashed_password_changed?
752 if hashed_password_changed?
742 tokens = ['recovery', 'autologin']
753 tokens = ['recovery', 'autologin']
743 Token.where(:user_id => id, :action => tokens).delete_all
754 Token.where(:user_id => id, :action => tokens).delete_all
744 end
755 end
745 end
756 end
746
757
747 # Removes references that are not handled by associations
758 # Removes references that are not handled by associations
748 # Things that are not deleted are reassociated with the anonymous user
759 # Things that are not deleted are reassociated with the anonymous user
749 def remove_references_before_destroy
760 def remove_references_before_destroy
750 return if self.id.nil?
761 return if self.id.nil?
751
762
752 substitute = User.anonymous
763 substitute = User.anonymous
753 Attachment.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
764 Attachment.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
754 Comment.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
765 Comment.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
755 Issue.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
766 Issue.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
756 Issue.where(['assigned_to_id = ?', id]).update_all('assigned_to_id = NULL')
767 Issue.where(['assigned_to_id = ?', id]).update_all('assigned_to_id = NULL')
757 Journal.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id])
768 Journal.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id])
758 JournalDetail.
769 JournalDetail.
759 where(["property = 'attr' AND prop_key = 'assigned_to_id' AND old_value = ?", id.to_s]).
770 where(["property = 'attr' AND prop_key = 'assigned_to_id' AND old_value = ?", id.to_s]).
760 update_all(['old_value = ?', substitute.id.to_s])
771 update_all(['old_value = ?', substitute.id.to_s])
761 JournalDetail.
772 JournalDetail.
762 where(["property = 'attr' AND prop_key = 'assigned_to_id' AND value = ?", id.to_s]).
773 where(["property = 'attr' AND prop_key = 'assigned_to_id' AND value = ?", id.to_s]).
763 update_all(['value = ?', substitute.id.to_s])
774 update_all(['value = ?', substitute.id.to_s])
764 Message.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
775 Message.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
765 News.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
776 News.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
766 # Remove private queries and keep public ones
777 # Remove private queries and keep public ones
767 ::Query.delete_all ['user_id = ? AND visibility = ?', id, ::Query::VISIBILITY_PRIVATE]
778 ::Query.delete_all ['user_id = ? AND visibility = ?', id, ::Query::VISIBILITY_PRIVATE]
768 ::Query.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id])
779 ::Query.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id])
769 TimeEntry.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id])
780 TimeEntry.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id])
770 Token.delete_all ['user_id = ?', id]
781 Token.delete_all ['user_id = ?', id]
771 Watcher.delete_all ['user_id = ?', id]
782 Watcher.delete_all ['user_id = ?', id]
772 WikiContent.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
783 WikiContent.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
773 WikiContent::Version.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
784 WikiContent::Version.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id])
774 end
785 end
775
786
776 # Return password digest
787 # Return password digest
777 def self.hash_password(clear_password)
788 def self.hash_password(clear_password)
778 Digest::SHA1.hexdigest(clear_password || "")
789 Digest::SHA1.hexdigest(clear_password || "")
779 end
790 end
780
791
781 # Returns a 128bits random salt as a hex string (32 chars long)
792 # Returns a 128bits random salt as a hex string (32 chars long)
782 def self.generate_salt
793 def self.generate_salt
783 Redmine::Utils.random_hex(16)
794 Redmine::Utils.random_hex(16)
784 end
795 end
785
796
786 end
797 end
787
798
788 class AnonymousUser < User
799 class AnonymousUser < User
789 validate :validate_anonymous_uniqueness, :on => :create
800 validate :validate_anonymous_uniqueness, :on => :create
790
801
791 def validate_anonymous_uniqueness
802 def validate_anonymous_uniqueness
792 # There should be only one AnonymousUser in the database
803 # There should be only one AnonymousUser in the database
793 errors.add :base, 'An anonymous user already exists.' if AnonymousUser.exists?
804 errors.add :base, 'An anonymous user already exists.' if AnonymousUser.exists?
794 end
805 end
795
806
796 def available_custom_fields
807 def available_custom_fields
797 []
808 []
798 end
809 end
799
810
800 # Overrides a few properties
811 # Overrides a few properties
801 def logged?; false end
812 def logged?; false end
802 def admin; false end
813 def admin; false end
803 def name(*args); I18n.t(:label_user_anonymous) end
814 def name(*args); I18n.t(:label_user_anonymous) end
804 def mail=(*args); nil end
815 def mail=(*args); nil end
805 def mail; nil end
816 def mail; nil end
806 def time_zone; nil end
817 def time_zone; nil end
807 def rss_key; nil end
818 def rss_key; nil end
808
819
809 def pref
820 def pref
810 UserPreference.new(:user => self)
821 UserPreference.new(:user => self)
811 end
822 end
812
823
813 # Returns the user's bult-in role
824 # Returns the user's bult-in role
814 def builtin_role
825 def builtin_role
815 @builtin_role ||= Role.anonymous
826 @builtin_role ||= Role.anonymous
816 end
827 end
817
828
818 def membership(*args)
829 def membership(*args)
819 nil
830 nil
820 end
831 end
821
832
822 def member_of?(*args)
833 def member_of?(*args)
823 false
834 false
824 end
835 end
825
836
826 # Anonymous user can not be destroyed
837 # Anonymous user can not be destroyed
827 def destroy
838 def destroy
828 false
839 false
829 end
840 end
830
841
831 protected
842 protected
832
843
833 def instantiate_email_address
844 def instantiate_email_address
834 end
845 end
835 end
846 end
@@ -1,24 +1,24
1 <h2><%=l(:button_change_password)%></h2>
1 <h2><%=l(:button_change_password)%></h2>
2
2
3 <%= error_messages_for 'user' %>
3 <%= error_messages_for 'user' %>
4
4
5 <%= form_tag({}, :class => "tabular") do %>
5 <%= form_tag({}, :class => "tabular") do %>
6 <div class="box">
6 <div class="box">
7 <p><label for="password"><%=l(:field_password)%> <span class="required">*</span></label>
7 <p><label for="password"><%=l(:field_password)%> <span class="required">*</span></label>
8 <%= password_field_tag 'password', nil, :size => 25 %></p>
8 <%= password_field_tag 'password', nil, :size => 25 %></p>
9
9
10 <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label>
10 <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label>
11 <%= password_field_tag 'new_password', nil, :size => 25 %>
11 <%= password_field_tag 'new_password', nil, :size => 25 %>
12 <em class="info"><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
12 <em class="info"><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
13
13
14 <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
14 <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
15 <%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p>
15 <%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p>
16 </div>
16 </div>
17 <%= submit_tag l(:button_apply) %>
17 <%= submit_tag l(:button_apply) %>
18 <% end %>
18 <% end %>
19
19
20 <% unless @user.must_change_passwd? %>
20 <% unless @user.must_change_passwd? || @user.password_expired? %>
21 <% content_for :sidebar do %>
21 <% content_for :sidebar do %>
22 <%= render :partial => 'sidebar' %>
22 <%= render :partial => 'sidebar' %>
23 <% end %>
23 <% end %>
24 <% end %>
24 <% end %>
@@ -1,40 +1,44
1 <%= form_tag({:action => 'edit', :tab => 'authentication'}) do %>
1 <%= form_tag({:action => 'edit', :tab => 'authentication'}) do %>
2
2
3 <div class="box tabular settings">
3 <div class="box tabular settings">
4 <p><%= setting_check_box :login_required %></p>
4 <p><%= setting_check_box :login_required %></p>
5
5
6 <p><%= setting_select :autologin, [[l(:label_disabled), 0]] + [1, 7, 30, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), days.to_s]} %></p>
6 <p><%= setting_select :autologin, [[l(:label_disabled), 0]] + [1, 7, 30, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), days.to_s]} %></p>
7
7
8 <p><%= setting_select :self_registration, [[l(:label_disabled), "0"],
8 <p><%= setting_select :self_registration, [[l(:label_disabled), "0"],
9 [l(:label_registration_activation_by_email), "1"],
9 [l(:label_registration_activation_by_email), "1"],
10 [l(:label_registration_manual_activation), "2"],
10 [l(:label_registration_manual_activation), "2"],
11 [l(:label_registration_automatic_activation), "3"]] %></p>
11 [l(:label_registration_automatic_activation), "3"]] %></p>
12
12
13 <p><%= setting_check_box :unsubscribe %></p>
13 <p><%= setting_check_box :unsubscribe %></p>
14
14
15 <p><%= setting_text_field :password_min_length, :size => 6 %></p>
15 <p><%= setting_text_field :password_min_length, :size => 6 %></p>
16
16
17 <p>
18 <%= setting_select :password_max_age, [[l(:label_disabled), 0]] + [7, 30, 60, 90, 180, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), days.to_s]} %>
19 </p>
20
17 <p><%= setting_check_box :lost_password, :label => :label_password_lost %></p>
21 <p><%= setting_check_box :lost_password, :label => :label_password_lost %></p>
18
22
19 <p><%= setting_text_field :max_additional_emails, :size => 6 %></p>
23 <p><%= setting_text_field :max_additional_emails, :size => 6 %></p>
20
24
21 <p><%= setting_check_box :openid, :disabled => !Object.const_defined?(:OpenID) %></p>
25 <p><%= setting_check_box :openid, :disabled => !Object.const_defined?(:OpenID) %></p>
22
26
23 <p><%= setting_check_box :rest_api_enabled %></p>
27 <p><%= setting_check_box :rest_api_enabled %></p>
24
28
25 <p><%= setting_check_box :jsonp_enabled %></p>
29 <p><%= setting_check_box :jsonp_enabled %></p>
26 </div>
30 </div>
27
31
28 <fieldset class="box">
32 <fieldset class="box">
29 <legend><%= l(:label_session_expiration) %></legend>
33 <legend><%= l(:label_session_expiration) %></legend>
30
34
31 <div class="tabular settings">
35 <div class="tabular settings">
32 <p><%= setting_select :session_lifetime, [[l(:label_disabled), 0]] + [1, 7, 30, 60, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), (days * 60 * 24).to_s]} %></p>
36 <p><%= setting_select :session_lifetime, [[l(:label_disabled), 0]] + [1, 7, 30, 60, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), (days * 60 * 24).to_s]} %></p>
33 <p><%= setting_select :session_timeout, [[l(:label_disabled), 0]] + [1, 2, 4, 8, 12, 24, 48].collect{|hours| [l('datetime.distance_in_words.x_hours', :count => hours), (hours * 60).to_s]} %></p>
37 <p><%= setting_select :session_timeout, [[l(:label_disabled), 0]] + [1, 2, 4, 8, 12, 24, 48].collect{|hours| [l('datetime.distance_in_words.x_hours', :count => hours), (hours * 60).to_s]} %></p>
34 </div>
38 </div>
35
39
36 <p><em class="info"><%= l(:text_session_expiration_settings) %></em></p>
40 <p><em class="info"><%= l(:text_session_expiration_settings) %></em></p>
37 </fieldset>
41 </fieldset>
38
42
39 <%= submit_tag l(:button_save) %>
43 <%= submit_tag l(:button_save) %>
40 <% end %>
44 <% end %>
@@ -1,1152 +1,1153
1 # German translations for Ruby on Rails
1 # German translations for Ruby on Rails
2 # by Clemens Kofler (clemens@railway.at)
2 # by Clemens Kofler (clemens@railway.at)
3 # additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com)
3 # additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com)
4
4
5 de:
5 de:
6 direction: ltr
6 direction: ltr
7 date:
7 date:
8 formats:
8 formats:
9 # Use the strftime parameters for formats.
9 # Use the strftime parameters for formats.
10 # When no format has been given, it uses default.
10 # When no format has been given, it uses default.
11 # You can provide other formats here if you like!
11 # You can provide other formats here if you like!
12 default: "%d.%m.%Y"
12 default: "%d.%m.%Y"
13 short: "%e. %b"
13 short: "%e. %b"
14 long: "%e. %B %Y"
14 long: "%e. %B %Y"
15
15
16 day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
16 day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
17 abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa]
17 abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa]
18
18
19 # Don't forget the nil at the beginning; there's no such thing as a 0th month
19 # Don't forget the nil at the beginning; there's no such thing as a 0th month
20 month_names: [~, Januar, Februar, MΓ€rz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
20 month_names: [~, Januar, Februar, MΓ€rz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
21 abbr_month_names: [~, Jan, Feb, MΓ€r, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez]
21 abbr_month_names: [~, Jan, Feb, MΓ€r, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez]
22 # Used in date_select and datime_select.
22 # Used in date_select and datime_select.
23 order:
23 order:
24 - :day
24 - :day
25 - :month
25 - :month
26 - :year
26 - :year
27
27
28 time:
28 time:
29 formats:
29 formats:
30 default: "%d.%m.%Y %H:%M"
30 default: "%d.%m.%Y %H:%M"
31 time: "%H:%M"
31 time: "%H:%M"
32 short: "%e. %b %H:%M"
32 short: "%e. %b %H:%M"
33 long: "%A, %e. %B %Y, %H:%M Uhr"
33 long: "%A, %e. %B %Y, %H:%M Uhr"
34 am: "vormittags"
34 am: "vormittags"
35 pm: "nachmittags"
35 pm: "nachmittags"
36
36
37 datetime:
37 datetime:
38 distance_in_words:
38 distance_in_words:
39 half_a_minute: 'eine halbe Minute'
39 half_a_minute: 'eine halbe Minute'
40 less_than_x_seconds:
40 less_than_x_seconds:
41 one: 'weniger als 1 Sekunde'
41 one: 'weniger als 1 Sekunde'
42 other: 'weniger als %{count} Sekunden'
42 other: 'weniger als %{count} Sekunden'
43 x_seconds:
43 x_seconds:
44 one: '1 Sekunde'
44 one: '1 Sekunde'
45 other: '%{count} Sekunden'
45 other: '%{count} Sekunden'
46 less_than_x_minutes:
46 less_than_x_minutes:
47 one: 'weniger als 1 Minute'
47 one: 'weniger als 1 Minute'
48 other: 'weniger als %{count} Minuten'
48 other: 'weniger als %{count} Minuten'
49 x_minutes:
49 x_minutes:
50 one: '1 Minute'
50 one: '1 Minute'
51 other: '%{count} Minuten'
51 other: '%{count} Minuten'
52 about_x_hours:
52 about_x_hours:
53 one: 'etwa 1 Stunde'
53 one: 'etwa 1 Stunde'
54 other: 'etwa %{count} Stunden'
54 other: 'etwa %{count} Stunden'
55 x_hours:
55 x_hours:
56 one: "1 Stunde"
56 one: "1 Stunde"
57 other: "%{count} Stunden"
57 other: "%{count} Stunden"
58 x_days:
58 x_days:
59 one: '1 Tag'
59 one: '1 Tag'
60 other: '%{count} Tagen'
60 other: '%{count} Tagen'
61 about_x_months:
61 about_x_months:
62 one: 'etwa 1 Monat'
62 one: 'etwa 1 Monat'
63 other: 'etwa %{count} Monaten'
63 other: 'etwa %{count} Monaten'
64 x_months:
64 x_months:
65 one: '1 Monat'
65 one: '1 Monat'
66 other: '%{count} Monaten'
66 other: '%{count} Monaten'
67 about_x_years:
67 about_x_years:
68 one: 'etwa 1 Jahr'
68 one: 'etwa 1 Jahr'
69 other: 'etwa %{count} Jahren'
69 other: 'etwa %{count} Jahren'
70 over_x_years:
70 over_x_years:
71 one: 'mehr als 1 Jahr'
71 one: 'mehr als 1 Jahr'
72 other: 'mehr als %{count} Jahren'
72 other: 'mehr als %{count} Jahren'
73 almost_x_years:
73 almost_x_years:
74 one: "fast 1 Jahr"
74 one: "fast 1 Jahr"
75 other: "fast %{count} Jahren"
75 other: "fast %{count} Jahren"
76
76
77 number:
77 number:
78 # Default format for numbers
78 # Default format for numbers
79 format:
79 format:
80 separator: ','
80 separator: ','
81 delimiter: '.'
81 delimiter: '.'
82 precision: 2
82 precision: 2
83 currency:
83 currency:
84 format:
84 format:
85 unit: '€'
85 unit: '€'
86 format: '%n %u'
86 format: '%n %u'
87 delimiter: ''
87 delimiter: ''
88 percentage:
88 percentage:
89 format:
89 format:
90 delimiter: ""
90 delimiter: ""
91 precision:
91 precision:
92 format:
92 format:
93 delimiter: ""
93 delimiter: ""
94 human:
94 human:
95 format:
95 format:
96 delimiter: ""
96 delimiter: ""
97 precision: 3
97 precision: 3
98 storage_units:
98 storage_units:
99 format: "%n %u"
99 format: "%n %u"
100 units:
100 units:
101 byte:
101 byte:
102 one: "Byte"
102 one: "Byte"
103 other: "Bytes"
103 other: "Bytes"
104 kb: "KB"
104 kb: "KB"
105 mb: "MB"
105 mb: "MB"
106 gb: "GB"
106 gb: "GB"
107 tb: "TB"
107 tb: "TB"
108
108
109 # Used in array.to_sentence.
109 # Used in array.to_sentence.
110 support:
110 support:
111 array:
111 array:
112 sentence_connector: "und"
112 sentence_connector: "und"
113 skip_last_comma: true
113 skip_last_comma: true
114
114
115 activerecord:
115 activerecord:
116 errors:
116 errors:
117 template:
117 template:
118 header:
118 header:
119 one: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler."
119 one: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler."
120 other: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler."
120 other: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler."
121 body: "Bitte ΓΌberprΓΌfen Sie die folgenden Felder:"
121 body: "Bitte ΓΌberprΓΌfen Sie die folgenden Felder:"
122
122
123 messages:
123 messages:
124 inclusion: "ist kein gΓΌltiger Wert"
124 inclusion: "ist kein gΓΌltiger Wert"
125 exclusion: "ist nicht verfΓΌgbar"
125 exclusion: "ist nicht verfΓΌgbar"
126 invalid: "ist nicht gΓΌltig"
126 invalid: "ist nicht gΓΌltig"
127 confirmation: "stimmt nicht mit der BestΓ€tigung ΓΌberein"
127 confirmation: "stimmt nicht mit der BestΓ€tigung ΓΌberein"
128 accepted: "muss akzeptiert werden"
128 accepted: "muss akzeptiert werden"
129 empty: "muss ausgefΓΌllt werden"
129 empty: "muss ausgefΓΌllt werden"
130 blank: "muss ausgefΓΌllt werden"
130 blank: "muss ausgefΓΌllt werden"
131 too_long: "ist zu lang (nicht mehr als %{count} Zeichen)"
131 too_long: "ist zu lang (nicht mehr als %{count} Zeichen)"
132 too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)"
132 too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)"
133 wrong_length: "hat die falsche LΓ€nge (muss genau %{count} Zeichen haben)"
133 wrong_length: "hat die falsche LΓ€nge (muss genau %{count} Zeichen haben)"
134 taken: "ist bereits vergeben"
134 taken: "ist bereits vergeben"
135 not_a_number: "ist keine Zahl"
135 not_a_number: "ist keine Zahl"
136 not_a_date: "ist kein gΓΌltiges Datum"
136 not_a_date: "ist kein gΓΌltiges Datum"
137 greater_than: "muss grâßer als %{count} sein"
137 greater_than: "muss grâßer als %{count} sein"
138 greater_than_or_equal_to: "muss grâßer oder gleich %{count} sein"
138 greater_than_or_equal_to: "muss grâßer oder gleich %{count} sein"
139 equal_to: "muss genau %{count} sein"
139 equal_to: "muss genau %{count} sein"
140 less_than: "muss kleiner als %{count} sein"
140 less_than: "muss kleiner als %{count} sein"
141 less_than_or_equal_to: "muss kleiner oder gleich %{count} sein"
141 less_than_or_equal_to: "muss kleiner oder gleich %{count} sein"
142 odd: "muss ungerade sein"
142 odd: "muss ungerade sein"
143 even: "muss gerade sein"
143 even: "muss gerade sein"
144 greater_than_start_date: "muss grâßer als Anfangsdatum sein"
144 greater_than_start_date: "muss grâßer als Anfangsdatum sein"
145 not_same_project: "gehΓΆrt nicht zum selben Projekt"
145 not_same_project: "gehΓΆrt nicht zum selben Projekt"
146 circular_dependency: "Diese Beziehung wΓΌrde eine zyklische AbhΓ€ngigkeit erzeugen"
146 circular_dependency: "Diese Beziehung wΓΌrde eine zyklische AbhΓ€ngigkeit erzeugen"
147 cant_link_an_issue_with_a_descendant: "Ein Ticket kann nicht mit einer Ihrer Unteraufgaben verlinkt werden"
147 cant_link_an_issue_with_a_descendant: "Ein Ticket kann nicht mit einer Ihrer Unteraufgaben verlinkt werden"
148 earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues"
148 earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues"
149
149
150 actionview_instancetag_blank_option: Bitte auswΓ€hlen
150 actionview_instancetag_blank_option: Bitte auswΓ€hlen
151
151
152 button_activate: Aktivieren
152 button_activate: Aktivieren
153 button_add: HinzufΓΌgen
153 button_add: HinzufΓΌgen
154 button_annotate: Annotieren
154 button_annotate: Annotieren
155 button_apply: Anwenden
155 button_apply: Anwenden
156 button_archive: Archivieren
156 button_archive: Archivieren
157 button_back: ZurΓΌck
157 button_back: ZurΓΌck
158 button_cancel: Abbrechen
158 button_cancel: Abbrechen
159 button_change: Wechseln
159 button_change: Wechseln
160 button_change_password: Kennwort Γ€ndern
160 button_change_password: Kennwort Γ€ndern
161 button_check_all: Alles auswΓ€hlen
161 button_check_all: Alles auswΓ€hlen
162 button_clear: ZurΓΌcksetzen
162 button_clear: ZurΓΌcksetzen
163 button_close: Schließen
163 button_close: Schließen
164 button_collapse_all: Alle einklappen
164 button_collapse_all: Alle einklappen
165 button_configure: Konfigurieren
165 button_configure: Konfigurieren
166 button_copy: Kopieren
166 button_copy: Kopieren
167 button_copy_and_follow: Kopieren und Ticket anzeigen
167 button_copy_and_follow: Kopieren und Ticket anzeigen
168 button_create: Anlegen
168 button_create: Anlegen
169 button_create_and_continue: Anlegen und weiter
169 button_create_and_continue: Anlegen und weiter
170 button_delete: LΓΆschen
170 button_delete: LΓΆschen
171 button_delete_my_account: Mein Benutzerkonto lΓΆschen
171 button_delete_my_account: Mein Benutzerkonto lΓΆschen
172 button_download: Download
172 button_download: Download
173 button_duplicate: Duplizieren
173 button_duplicate: Duplizieren
174 button_edit: Bearbeiten
174 button_edit: Bearbeiten
175 button_edit_associated_wikipage: "ZugehΓΆrige Wikiseite bearbeiten: %{page_title}"
175 button_edit_associated_wikipage: "ZugehΓΆrige Wikiseite bearbeiten: %{page_title}"
176 button_edit_section: Diesen Bereich bearbeiten
176 button_edit_section: Diesen Bereich bearbeiten
177 button_expand_all: Alle ausklappen
177 button_expand_all: Alle ausklappen
178 button_export: Exportieren
178 button_export: Exportieren
179 button_hide: Verstecken
179 button_hide: Verstecken
180 button_list: Liste
180 button_list: Liste
181 button_lock: Sperren
181 button_lock: Sperren
182 button_log_time: Aufwand buchen
182 button_log_time: Aufwand buchen
183 button_login: Anmelden
183 button_login: Anmelden
184 button_move: Verschieben
184 button_move: Verschieben
185 button_move_and_follow: Verschieben und Ticket anzeigen
185 button_move_and_follow: Verschieben und Ticket anzeigen
186 button_quote: Zitieren
186 button_quote: Zitieren
187 button_rename: Umbenennen
187 button_rename: Umbenennen
188 button_reopen: Γ–ffnen
188 button_reopen: Γ–ffnen
189 button_reply: Antworten
189 button_reply: Antworten
190 button_reset: ZurΓΌcksetzen
190 button_reset: ZurΓΌcksetzen
191 button_rollback: Auf diese Version zurΓΌcksetzen
191 button_rollback: Auf diese Version zurΓΌcksetzen
192 button_save: Speichern
192 button_save: Speichern
193 button_show: Anzeigen
193 button_show: Anzeigen
194 button_sort: Sortieren
194 button_sort: Sortieren
195 button_submit: OK
195 button_submit: OK
196 button_test: Testen
196 button_test: Testen
197 button_unarchive: Entarchivieren
197 button_unarchive: Entarchivieren
198 button_uncheck_all: Alles abwΓ€hlen
198 button_uncheck_all: Alles abwΓ€hlen
199 button_unlock: Entsperren
199 button_unlock: Entsperren
200 button_unwatch: Nicht beobachten
200 button_unwatch: Nicht beobachten
201 button_update: Aktualisieren
201 button_update: Aktualisieren
202 button_view: Anzeigen
202 button_view: Anzeigen
203 button_watch: Beobachten
203 button_watch: Beobachten
204
204
205 default_activity_design: Design
205 default_activity_design: Design
206 default_activity_development: Entwicklung
206 default_activity_development: Entwicklung
207 default_doc_category_tech: Technische Dokumentation
207 default_doc_category_tech: Technische Dokumentation
208 default_doc_category_user: Benutzerdokumentation
208 default_doc_category_user: Benutzerdokumentation
209 default_issue_status_closed: Erledigt
209 default_issue_status_closed: Erledigt
210 default_issue_status_feedback: Feedback
210 default_issue_status_feedback: Feedback
211 default_issue_status_in_progress: In Bearbeitung
211 default_issue_status_in_progress: In Bearbeitung
212 default_issue_status_new: Neu
212 default_issue_status_new: Neu
213 default_issue_status_rejected: Abgewiesen
213 default_issue_status_rejected: Abgewiesen
214 default_issue_status_resolved: GelΓΆst
214 default_issue_status_resolved: GelΓΆst
215 default_priority_high: Hoch
215 default_priority_high: Hoch
216 default_priority_immediate: Sofort
216 default_priority_immediate: Sofort
217 default_priority_low: Niedrig
217 default_priority_low: Niedrig
218 default_priority_normal: Normal
218 default_priority_normal: Normal
219 default_priority_urgent: Dringend
219 default_priority_urgent: Dringend
220 default_role_developer: Entwickler
220 default_role_developer: Entwickler
221 default_role_manager: Manager
221 default_role_manager: Manager
222 default_role_reporter: Reporter
222 default_role_reporter: Reporter
223 default_tracker_bug: Fehler
223 default_tracker_bug: Fehler
224 default_tracker_feature: Feature
224 default_tracker_feature: Feature
225 default_tracker_support: UnterstΓΌtzung
225 default_tracker_support: UnterstΓΌtzung
226
226
227 description_all_columns: Alle Spalten
227 description_all_columns: Alle Spalten
228 description_available_columns: VerfΓΌgbare Spalten
228 description_available_columns: VerfΓΌgbare Spalten
229 description_choose_project: Projekte
229 description_choose_project: Projekte
230 description_date_from: Startdatum eintragen
230 description_date_from: Startdatum eintragen
231 description_date_range_interval: Zeitraum durch Start- und Enddatum festlegen
231 description_date_range_interval: Zeitraum durch Start- und Enddatum festlegen
232 description_date_range_list: Zeitraum aus einer Liste wΓ€hlen
232 description_date_range_list: Zeitraum aus einer Liste wΓ€hlen
233 description_date_to: Enddatum eintragen
233 description_date_to: Enddatum eintragen
234 description_filter: Filter
234 description_filter: Filter
235 description_issue_category_reassign: Neue Kategorie wΓ€hlen
235 description_issue_category_reassign: Neue Kategorie wΓ€hlen
236 description_message_content: Nachrichteninhalt
236 description_message_content: Nachrichteninhalt
237 description_notes: Kommentare
237 description_notes: Kommentare
238 description_project_scope: Suchbereich
238 description_project_scope: Suchbereich
239 description_query_sort_criteria_attribute: Sortierattribut
239 description_query_sort_criteria_attribute: Sortierattribut
240 description_query_sort_criteria_direction: Sortierrichtung
240 description_query_sort_criteria_direction: Sortierrichtung
241 description_search: Suchfeld
241 description_search: Suchfeld
242 description_selected_columns: AusgewΓ€hlte Spalten
242 description_selected_columns: AusgewΓ€hlte Spalten
243
243
244 description_user_mail_notification: Mailbenachrichtigungseinstellung
244 description_user_mail_notification: Mailbenachrichtigungseinstellung
245 description_wiki_subpages_reassign: Neue Elternseite wΓ€hlen
245 description_wiki_subpages_reassign: Neue Elternseite wΓ€hlen
246
246
247 enumeration_activities: AktivitΓ€ten (Zeiterfassung)
247 enumeration_activities: AktivitΓ€ten (Zeiterfassung)
248 enumeration_doc_categories: Dokumentenkategorien
248 enumeration_doc_categories: Dokumentenkategorien
249 enumeration_issue_priorities: Ticket-PrioritΓ€ten
249 enumeration_issue_priorities: Ticket-PrioritΓ€ten
250 enumeration_system_activity: System-AktivitΓ€t
250 enumeration_system_activity: System-AktivitΓ€t
251
251
252 error_attachment_too_big: Diese Datei kann nicht hochgeladen werden, da sie die maximale Dateigrâße von (%{max_size}) überschreitet.
252 error_attachment_too_big: Diese Datei kann nicht hochgeladen werden, da sie die maximale Dateigrâße von (%{max_size}) überschreitet.
253 error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden.
253 error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden.
254 error_can_not_delete_custom_field: Kann das benutzerdefinierte Feld nicht lΓΆschen.
254 error_can_not_delete_custom_field: Kann das benutzerdefinierte Feld nicht lΓΆschen.
255 error_can_not_delete_tracker: Dieser Tracker enthΓ€lt Tickets und kann nicht gelΓΆscht werden.
255 error_can_not_delete_tracker: Dieser Tracker enthΓ€lt Tickets und kann nicht gelΓΆscht werden.
256 error_can_not_remove_role: Diese Rolle wird verwendet und kann nicht gelΓΆscht werden.
256 error_can_not_remove_role: Diese Rolle wird verwendet und kann nicht gelΓΆscht werden.
257 error_can_not_reopen_issue_on_closed_version: Das Ticket ist einer abgeschlossenen Version zugeordnet und kann daher nicht wieder geΓΆffnet werden.
257 error_can_not_reopen_issue_on_closed_version: Das Ticket ist einer abgeschlossenen Version zugeordnet und kann daher nicht wieder geΓΆffnet werden.
258 error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %{value}"
258 error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %{value}"
259 error_issue_done_ratios_not_updated: Der Ticket-Fortschritt wurde nicht aktualisiert.
259 error_issue_done_ratios_not_updated: Der Ticket-Fortschritt wurde nicht aktualisiert.
260 error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehΓΆrt nicht zu diesem Projekt.'
260 error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehΓΆrt nicht zu diesem Projekt.'
261 error_no_default_issue_status: Es ist kein Status als Standard definiert. Bitte ΓΌberprΓΌfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status").
261 error_no_default_issue_status: Es ist kein Status als Standard definiert. Bitte ΓΌberprΓΌfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status").
262 error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte ΓΌberprΓΌfen Sie die Projekteinstellungen.
262 error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte ΓΌberprΓΌfen Sie die Projekteinstellungen.
263 error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden."
263 error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden."
264 error_scm_annotate_big_text_file: Der Eintrag kann nicht umgesetzt werden, da er die maximale TextlΓ€nge ΓΌberschreitet.
264 error_scm_annotate_big_text_file: Der Eintrag kann nicht umgesetzt werden, da er die maximale TextlΓ€nge ΓΌberschreitet.
265 error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %{value}"
265 error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %{value}"
266 error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv.
266 error_scm_not_found: Eintrag und/oder Revision existiert nicht im Projektarchiv.
267 error_session_expired: Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.
267 error_session_expired: Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.
268 error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelΓΆscht werden."
268 error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelΓΆscht werden."
269 error_unable_to_connect: Fehler beim Verbinden (%{value})
269 error_unable_to_connect: Fehler beim Verbinden (%{value})
270 error_workflow_copy_source: Bitte wΓ€hlen Sie einen Quell-Tracker und eine Quell-Rolle.
270 error_workflow_copy_source: Bitte wΓ€hlen Sie einen Quell-Tracker und eine Quell-Rolle.
271 error_workflow_copy_target: Bitte wΓ€hlen Sie die Ziel-Tracker und -Rollen.
271 error_workflow_copy_target: Bitte wΓ€hlen Sie die Ziel-Tracker und -Rollen.
272
272
273 field_account: Konto
273 field_account: Konto
274 field_active: Aktiv
274 field_active: Aktiv
275 field_activity: AktivitΓ€t
275 field_activity: AktivitΓ€t
276 field_admin: Administrator
276 field_admin: Administrator
277 field_assignable: Tickets kΓΆnnen dieser Rolle zugewiesen werden
277 field_assignable: Tickets kΓΆnnen dieser Rolle zugewiesen werden
278 field_assigned_to: Zugewiesen an
278 field_assigned_to: Zugewiesen an
279 field_assigned_to_role: ZustΓ€ndigkeitsrolle
279 field_assigned_to_role: ZustΓ€ndigkeitsrolle
280 field_attr_firstname: Vorname-Attribut
280 field_attr_firstname: Vorname-Attribut
281 field_attr_lastname: Name-Attribut
281 field_attr_lastname: Name-Attribut
282 field_attr_login: Mitgliedsname-Attribut
282 field_attr_login: Mitgliedsname-Attribut
283 field_attr_mail: E-Mail-Attribut
283 field_attr_mail: E-Mail-Attribut
284 field_auth_source: Authentifizierungs-Modus
284 field_auth_source: Authentifizierungs-Modus
285 field_auth_source_ldap_filter: LDAP-Filter
285 field_auth_source_ldap_filter: LDAP-Filter
286 field_author: Autor
286 field_author: Autor
287 field_base_dn: Base DN
287 field_base_dn: Base DN
288 field_board_parent: Übergeordnetes Forum
288 field_board_parent: Übergeordnetes Forum
289 field_category: Kategorie
289 field_category: Kategorie
290 field_column_names: Spalten
290 field_column_names: Spalten
291 field_closed_on: Geschlossen am
291 field_closed_on: Geschlossen am
292 field_comments: Kommentar
292 field_comments: Kommentar
293 field_comments_sorting: Kommentare anzeigen
293 field_comments_sorting: Kommentare anzeigen
294 field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen
294 field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen
295 field_content: Inhalt
295 field_content: Inhalt
296 field_core_fields: Standardwerte
296 field_core_fields: Standardwerte
297 field_created_on: Angelegt
297 field_created_on: Angelegt
298 field_cvs_module: Modul
298 field_cvs_module: Modul
299 field_cvsroot: CVSROOT
299 field_cvsroot: CVSROOT
300 field_default_value: Standardwert
300 field_default_value: Standardwert
301 field_default_status: Standardstatus
301 field_default_status: Standardstatus
302 field_delay: Pufferzeit
302 field_delay: Pufferzeit
303 field_description: Beschreibung
303 field_description: Beschreibung
304 field_done_ratio: "% erledigt"
304 field_done_ratio: "% erledigt"
305 field_downloads: Downloads
305 field_downloads: Downloads
306 field_due_date: Abgabedatum
306 field_due_date: Abgabedatum
307 field_editable: Bearbeitbar
307 field_editable: Bearbeitbar
308 field_effective_date: Datum
308 field_effective_date: Datum
309 field_estimated_hours: GeschΓ€tzter Aufwand
309 field_estimated_hours: GeschΓ€tzter Aufwand
310 field_field_format: Format
310 field_field_format: Format
311 field_filename: Datei
311 field_filename: Datei
312 field_filesize: Grâße
312 field_filesize: Grâße
313 field_firstname: Vorname
313 field_firstname: Vorname
314 field_fixed_version: Zielversion
314 field_fixed_version: Zielversion
315 field_generate_password: Passwort generieren
315 field_generate_password: Passwort generieren
316 field_group_by: Gruppiere Ergebnisse nach
316 field_group_by: Gruppiere Ergebnisse nach
317 field_hide_mail: E-Mail-Adresse nicht anzeigen
317 field_hide_mail: E-Mail-Adresse nicht anzeigen
318 field_homepage: Projekt-Homepage
318 field_homepage: Projekt-Homepage
319 field_host: Host
319 field_host: Host
320 field_hours: Stunden
320 field_hours: Stunden
321 field_identifier: Kennung
321 field_identifier: Kennung
322 field_identity_url: OpenID-URL
322 field_identity_url: OpenID-URL
323 field_inherit_members: Benutzer erben
323 field_inherit_members: Benutzer erben
324 field_is_closed: Ticket geschlossen
324 field_is_closed: Ticket geschlossen
325 field_is_default: Standardeinstellung
325 field_is_default: Standardeinstellung
326 field_is_filter: Als Filter benutzen
326 field_is_filter: Als Filter benutzen
327 field_is_for_all: FΓΌr alle Projekte
327 field_is_for_all: FΓΌr alle Projekte
328 field_is_in_roadmap: In der Roadmap anzeigen
328 field_is_in_roadmap: In der Roadmap anzeigen
329 field_is_private: Privat
329 field_is_private: Privat
330 field_is_public: Γ–ffentlich
330 field_is_public: Γ–ffentlich
331 field_is_required: Erforderlich
331 field_is_required: Erforderlich
332 field_issue: Ticket
332 field_issue: Ticket
333 field_issue_to: ZugehΓΆriges Ticket
333 field_issue_to: ZugehΓΆriges Ticket
334 field_issues_visibility: Ticket Sichtbarkeit
334 field_issues_visibility: Ticket Sichtbarkeit
335 field_language: Sprache
335 field_language: Sprache
336 field_last_login_on: Letzte Anmeldung
336 field_last_login_on: Letzte Anmeldung
337 field_lastname: Nachname
337 field_lastname: Nachname
338 field_login: Mitgliedsname
338 field_login: Mitgliedsname
339 field_mail: E-Mail
339 field_mail: E-Mail
340 field_mail_notification: Mailbenachrichtigung
340 field_mail_notification: Mailbenachrichtigung
341 field_max_length: Maximale LΓ€nge
341 field_max_length: Maximale LΓ€nge
342 field_member_of_group: ZustΓ€ndigkeitsgruppe
342 field_member_of_group: ZustΓ€ndigkeitsgruppe
343 field_min_length: Minimale LΓ€nge
343 field_min_length: Minimale LΓ€nge
344 field_multiple: Mehrere Werte
344 field_multiple: Mehrere Werte
345 field_must_change_passwd: Passwort beim nΓ€chsten Login Γ€ndern
345 field_must_change_passwd: Passwort beim nΓ€chsten Login Γ€ndern
346 field_name: Name
346 field_name: Name
347 field_new_password: Neues Kennwort
347 field_new_password: Neues Kennwort
348 field_notes: Kommentare
348 field_notes: Kommentare
349 field_onthefly: On-the-fly-Benutzererstellung
349 field_onthefly: On-the-fly-Benutzererstellung
350 field_parent: Unterprojekt von
350 field_parent: Unterprojekt von
351 field_parent_issue: Übergeordnete Aufgabe
351 field_parent_issue: Übergeordnete Aufgabe
352 field_parent_title: Übergeordnete Seite
352 field_parent_title: Übergeordnete Seite
353 field_password: Kennwort
353 field_password: Kennwort
354 field_password_confirmation: BestΓ€tigung
354 field_password_confirmation: BestΓ€tigung
355 field_path_to_repository: Pfad zum Repository
355 field_path_to_repository: Pfad zum Repository
356 field_port: Port
356 field_port: Port
357 field_possible_values: MΓΆgliche Werte
357 field_possible_values: MΓΆgliche Werte
358 field_principal: Auftraggeber
358 field_principal: Auftraggeber
359 field_priority: PrioritΓ€t
359 field_priority: PrioritΓ€t
360 field_private_notes: Privater Kommentar
360 field_private_notes: Privater Kommentar
361 field_project: Projekt
361 field_project: Projekt
362 field_redirect_existing_links: Existierende Links umleiten
362 field_redirect_existing_links: Existierende Links umleiten
363 field_regexp: RegulΓ€rer Ausdruck
363 field_regexp: RegulΓ€rer Ausdruck
364 field_repository_is_default: Haupt-Repository
364 field_repository_is_default: Haupt-Repository
365 field_role: Rolle
365 field_role: Rolle
366 field_root_directory: Wurzelverzeichnis
366 field_root_directory: Wurzelverzeichnis
367 field_scm_path_encoding: Pfad-Kodierung
367 field_scm_path_encoding: Pfad-Kodierung
368 field_searchable: Durchsuchbar
368 field_searchable: Durchsuchbar
369 field_sharing: Gemeinsame Verwendung
369 field_sharing: Gemeinsame Verwendung
370 field_spent_on: Datum
370 field_spent_on: Datum
371 field_start_date: Beginn
371 field_start_date: Beginn
372 field_start_page: Hauptseite
372 field_start_page: Hauptseite
373 field_status: Status
373 field_status: Status
374 field_subject: Thema
374 field_subject: Thema
375 field_subproject: Unterprojekt von
375 field_subproject: Unterprojekt von
376 field_summary: Zusammenfassung
376 field_summary: Zusammenfassung
377 field_text: Textfeld
377 field_text: Textfeld
378 field_time_entries: Logzeit
378 field_time_entries: Logzeit
379 field_time_zone: Zeitzone
379 field_time_zone: Zeitzone
380 field_timeout: Auszeit (in Sekunden)
380 field_timeout: Auszeit (in Sekunden)
381 field_title: Titel
381 field_title: Titel
382 field_tracker: Tracker
382 field_tracker: Tracker
383 field_type: Typ
383 field_type: Typ
384 field_updated_on: Aktualisiert
384 field_updated_on: Aktualisiert
385 field_url: URL
385 field_url: URL
386 field_user: Benutzer
386 field_user: Benutzer
387 field_users_visibility: Benutzer Sichtbarkeit
387 field_users_visibility: Benutzer Sichtbarkeit
388 field_value: Wert
388 field_value: Wert
389 field_version: Version
389 field_version: Version
390 field_visible: Sichtbar
390 field_visible: Sichtbar
391 field_warn_on_leaving_unsaved: Vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen
391 field_warn_on_leaving_unsaved: Vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen
392 field_watcher: Beobachter
392 field_watcher: Beobachter
393
393
394 general_csv_decimal_separator: ','
394 general_csv_decimal_separator: ','
395 general_csv_encoding: ISO-8859-1
395 general_csv_encoding: ISO-8859-1
396 general_csv_separator: ';'
396 general_csv_separator: ';'
397 general_pdf_fontname: freesans
397 general_pdf_fontname: freesans
398 general_first_day_of_week: '1'
398 general_first_day_of_week: '1'
399 general_lang_name: 'German (Deutsch)'
399 general_lang_name: 'German (Deutsch)'
400 general_text_No: 'Nein'
400 general_text_No: 'Nein'
401 general_text_Yes: 'Ja'
401 general_text_Yes: 'Ja'
402 general_text_no: 'nein'
402 general_text_no: 'nein'
403 general_text_yes: 'ja'
403 general_text_yes: 'ja'
404
404
405 label_activity: AktivitΓ€t
405 label_activity: AktivitΓ€t
406 label_add_another_file: Eine weitere Datei hinzufΓΌgen
406 label_add_another_file: Eine weitere Datei hinzufΓΌgen
407 label_add_note: Kommentar hinzufΓΌgen
407 label_add_note: Kommentar hinzufΓΌgen
408 label_add_projects: Projekt hinzufΓΌgen
408 label_add_projects: Projekt hinzufΓΌgen
409 label_added: hinzugefΓΌgt
409 label_added: hinzugefΓΌgt
410 label_added_time_by: "Von %{author} vor %{age} hinzugefΓΌgt"
410 label_added_time_by: "Von %{author} vor %{age} hinzugefΓΌgt"
411 label_additional_workflow_transitions_for_assignee: ZusΓ€tzliche Berechtigungen wenn der Benutzer der Zugewiesene ist
411 label_additional_workflow_transitions_for_assignee: ZusΓ€tzliche Berechtigungen wenn der Benutzer der Zugewiesene ist
412 label_additional_workflow_transitions_for_author: ZusΓ€tzliche Berechtigungen wenn der Benutzer der Autor ist
412 label_additional_workflow_transitions_for_author: ZusΓ€tzliche Berechtigungen wenn der Benutzer der Autor ist
413 label_administration: Administration
413 label_administration: Administration
414 label_age: GeΓ€ndert vor
414 label_age: GeΓ€ndert vor
415 label_ago: vor
415 label_ago: vor
416 label_all: alle
416 label_all: alle
417 label_all_time: gesamter Zeitraum
417 label_all_time: gesamter Zeitraum
418 label_all_words: Alle WΓΆrter
418 label_all_words: Alle WΓΆrter
419 label_and_its_subprojects: "%{value} und dessen Unterprojekte"
419 label_and_its_subprojects: "%{value} und dessen Unterprojekte"
420 label_any: alle
420 label_any: alle
421 label_any_issues_in_project: irgendein Ticket im Projekt
421 label_any_issues_in_project: irgendein Ticket im Projekt
422 label_any_issues_not_in_project: irgendein Ticket nicht im Projekt
422 label_any_issues_not_in_project: irgendein Ticket nicht im Projekt
423 label_api_access_key: API-ZugriffsschlΓΌssel
423 label_api_access_key: API-ZugriffsschlΓΌssel
424 label_api_access_key_created_on: Der API-ZugriffsschlΓΌssel wurde vor %{value} erstellt
424 label_api_access_key_created_on: Der API-ZugriffsschlΓΌssel wurde vor %{value} erstellt
425 label_applied_status: Zugewiesener Status
425 label_applied_status: Zugewiesener Status
426 label_ascending: Aufsteigend
426 label_ascending: Aufsteigend
427 label_ask: Nachfragen
427 label_ask: Nachfragen
428 label_assigned_to_me_issues: Mir zugewiesene Tickets
428 label_assigned_to_me_issues: Mir zugewiesene Tickets
429 label_associated_revisions: ZugehΓΆrige Revisionen
429 label_associated_revisions: ZugehΓΆrige Revisionen
430 label_attachment: Datei
430 label_attachment: Datei
431 label_attachment_delete: Anhang lΓΆschen
431 label_attachment_delete: Anhang lΓΆschen
432 label_attachment_new: Neue Datei
432 label_attachment_new: Neue Datei
433 label_attachment_plural: Dateien
433 label_attachment_plural: Dateien
434 label_attribute: Attribut
434 label_attribute: Attribut
435 label_attribute_of_assigned_to: "%{name} des Bearbeiters"
435 label_attribute_of_assigned_to: "%{name} des Bearbeiters"
436 label_attribute_of_author: "%{name} des Autors"
436 label_attribute_of_author: "%{name} des Autors"
437 label_attribute_of_fixed_version: "%{name} der Zielversion"
437 label_attribute_of_fixed_version: "%{name} der Zielversion"
438 label_attribute_of_issue: "%{name} des Tickets"
438 label_attribute_of_issue: "%{name} des Tickets"
439 label_attribute_of_project: "%{name} des Projekts"
439 label_attribute_of_project: "%{name} des Projekts"
440 label_attribute_of_user: "%{name} des Benutzers"
440 label_attribute_of_user: "%{name} des Benutzers"
441 label_attribute_plural: Attribute
441 label_attribute_plural: Attribute
442 label_auth_source: Authentifizierungs-Modus
442 label_auth_source: Authentifizierungs-Modus
443 label_auth_source_new: Neuer Authentifizierungs-Modus
443 label_auth_source_new: Neuer Authentifizierungs-Modus
444 label_auth_source_plural: Authentifizierungs-Arten
444 label_auth_source_plural: Authentifizierungs-Arten
445 label_authentication: Authentifizierung
445 label_authentication: Authentifizierung
446 label_between: zwischen
446 label_between: zwischen
447 label_blocked_by: Blockiert durch
447 label_blocked_by: Blockiert durch
448 label_blocks: Blockiert
448 label_blocks: Blockiert
449 label_board: Forum
449 label_board: Forum
450 label_board_locked: Gesperrt
450 label_board_locked: Gesperrt
451 label_board_new: Neues Forum
451 label_board_new: Neues Forum
452 label_board_plural: Foren
452 label_board_plural: Foren
453 label_board_sticky: Wichtig (immer oben)
453 label_board_sticky: Wichtig (immer oben)
454 label_boolean: Boolean
454 label_boolean: Boolean
455 label_branch: Zweig
455 label_branch: Zweig
456 label_browse: Codebrowser
456 label_browse: Codebrowser
457 label_bulk_edit_selected_issues: Alle ausgewΓ€hlten Tickets bearbeiten
457 label_bulk_edit_selected_issues: Alle ausgewΓ€hlten Tickets bearbeiten
458 label_bulk_edit_selected_time_entries: AusgewΓ€hlte ZeitaufwΓ€nde bearbeiten
458 label_bulk_edit_selected_time_entries: AusgewΓ€hlte ZeitaufwΓ€nde bearbeiten
459 label_calendar: Kalender
459 label_calendar: Kalender
460 label_change_plural: Γ„nderungen
460 label_change_plural: Γ„nderungen
461 label_change_properties: Eigenschaften Γ€ndern
461 label_change_properties: Eigenschaften Γ€ndern
462 label_change_status: Statuswechsel
462 label_change_status: Statuswechsel
463 label_change_view_all: Alle Γ„nderungen anzeigen
463 label_change_view_all: Alle Γ„nderungen anzeigen
464 label_changes_details: Details aller Γ„nderungen
464 label_changes_details: Details aller Γ„nderungen
465 label_changeset_plural: Changesets
465 label_changeset_plural: Changesets
466 label_checkboxes: Checkboxen
466 label_checkboxes: Checkboxen
467 label_check_for_updates: Auf Updates prΓΌfen
467 label_check_for_updates: Auf Updates prΓΌfen
468 label_child_revision: Nachfolger
468 label_child_revision: Nachfolger
469 label_chronological_order: in zeitlicher Reihenfolge
469 label_chronological_order: in zeitlicher Reihenfolge
470 label_close_versions: VollstÀndige Versionen schließen
470 label_close_versions: VollstÀndige Versionen schließen
471 label_closed_issues: geschlossen
471 label_closed_issues: geschlossen
472 label_closed_issues_plural: geschlossen
472 label_closed_issues_plural: geschlossen
473 label_comment: Kommentar
473 label_comment: Kommentar
474 label_comment_add: Kommentar hinzufΓΌgen
474 label_comment_add: Kommentar hinzufΓΌgen
475 label_comment_added: Kommentar hinzugefΓΌgt
475 label_comment_added: Kommentar hinzugefΓΌgt
476 label_comment_delete: Kommentar lΓΆschen
476 label_comment_delete: Kommentar lΓΆschen
477 label_comment_plural: Kommentare
477 label_comment_plural: Kommentare
478 label_commits_per_author: Übertragungen pro Autor
478 label_commits_per_author: Übertragungen pro Autor
479 label_commits_per_month: Übertragungen pro Monat
479 label_commits_per_month: Übertragungen pro Monat
480 label_completed_versions: Abgeschlossene Versionen
480 label_completed_versions: Abgeschlossene Versionen
481 label_confirmation: BestΓ€tigung
481 label_confirmation: BestΓ€tigung
482 label_contains: enthΓ€lt
482 label_contains: enthΓ€lt
483 label_copied: kopiert
483 label_copied: kopiert
484 label_copied_from: Kopiert von
484 label_copied_from: Kopiert von
485 label_copied_to: Kopiert nach
485 label_copied_to: Kopiert nach
486 label_copy_attachments: AnhΓ€nge kopieren
486 label_copy_attachments: AnhΓ€nge kopieren
487 label_copy_same_as_target: So wie das Ziel
487 label_copy_same_as_target: So wie das Ziel
488 label_copy_source: Quelle
488 label_copy_source: Quelle
489 label_copy_subtasks: Unteraufgaben kopieren
489 label_copy_subtasks: Unteraufgaben kopieren
490 label_copy_target: Ziel
490 label_copy_target: Ziel
491 label_copy_workflow_from: Workflow kopieren von
491 label_copy_workflow_from: Workflow kopieren von
492 label_cross_project_descendants: Mit Unterprojekten
492 label_cross_project_descendants: Mit Unterprojekten
493 label_cross_project_hierarchy: Mit Projekthierarchie
493 label_cross_project_hierarchy: Mit Projekthierarchie
494 label_cross_project_system: Mit allen Projekten
494 label_cross_project_system: Mit allen Projekten
495 label_cross_project_tree: Mit Projektbaum
495 label_cross_project_tree: Mit Projektbaum
496 label_current_status: GegenwΓ€rtiger Status
496 label_current_status: GegenwΓ€rtiger Status
497 label_current_version: GegenwΓ€rtige Version
497 label_current_version: GegenwΓ€rtige Version
498 label_custom_field: Benutzerdefiniertes Feld
498 label_custom_field: Benutzerdefiniertes Feld
499 label_custom_field_new: Neues Feld
499 label_custom_field_new: Neues Feld
500 label_custom_field_plural: Benutzerdefinierte Felder
500 label_custom_field_plural: Benutzerdefinierte Felder
501 label_custom_field_select_type: Bitte wΓ€hlen Sie den Objekttyp, zu dem das benutzerdefinierte Feld hinzugefΓΌgt werden soll
501 label_custom_field_select_type: Bitte wΓ€hlen Sie den Objekttyp, zu dem das benutzerdefinierte Feld hinzugefΓΌgt werden soll
502 label_date: Datum
502 label_date: Datum
503 label_date_from: Von
503 label_date_from: Von
504 label_date_from_to: von %{start} bis %{end}
504 label_date_from_to: von %{start} bis %{end}
505 label_date_range: Zeitraum
505 label_date_range: Zeitraum
506 label_date_to: Bis
506 label_date_to: Bis
507 label_day_plural: Tage
507 label_day_plural: Tage
508 label_default: Standard
508 label_default: Standard
509 label_default_columns: Standard-Spalten
509 label_default_columns: Standard-Spalten
510 label_deleted: gelΓΆscht
510 label_deleted: gelΓΆscht
511 label_descending: Absteigend
511 label_descending: Absteigend
512 label_details: Details
512 label_details: Details
513 label_diff: diff
513 label_diff: diff
514 label_diff_inline: einspaltig
514 label_diff_inline: einspaltig
515 label_diff_side_by_side: nebeneinander
515 label_diff_side_by_side: nebeneinander
516 label_disabled: gesperrt
516 label_disabled: gesperrt
517 label_display: Anzeige
517 label_display: Anzeige
518 label_display_per_page: "Pro Seite: %{value}"
518 label_display_per_page: "Pro Seite: %{value}"
519 label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden
519 label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden
520 label_document: Dokument
520 label_document: Dokument
521 label_document_added: Dokument hinzugefΓΌgt
521 label_document_added: Dokument hinzugefΓΌgt
522 label_document_new: Neues Dokument
522 label_document_new: Neues Dokument
523 label_document_plural: Dokumente
523 label_document_plural: Dokumente
524 label_downloads_abbr: D/L
524 label_downloads_abbr: D/L
525 label_drop_down_list: Dropdown-Liste
525 label_drop_down_list: Dropdown-Liste
526 label_duplicated_by: Dupliziert durch
526 label_duplicated_by: Dupliziert durch
527 label_duplicates: Duplikat von
527 label_duplicates: Duplikat von
528 label_edit_attachments: AngehΓ€ngte Dateien bearbeiten
528 label_edit_attachments: AngehΓ€ngte Dateien bearbeiten
529 label_end_to_end: Ende - Ende
529 label_end_to_end: Ende - Ende
530 label_end_to_start: Ende - Anfang
530 label_end_to_start: Ende - Anfang
531 label_enumeration_new: Neuer Wert
531 label_enumeration_new: Neuer Wert
532 label_enumerations: AufzΓ€hlungen
532 label_enumerations: AufzΓ€hlungen
533 label_environment: Umgebung
533 label_environment: Umgebung
534 label_equals: ist
534 label_equals: ist
535 label_example: Beispiel
535 label_example: Beispiel
536 label_export_options: "%{export_format} Export-Eigenschaften"
536 label_export_options: "%{export_format} Export-Eigenschaften"
537 label_export_to: "Auch abrufbar als:"
537 label_export_to: "Auch abrufbar als:"
538 label_f_hour: "%{value} Stunde"
538 label_f_hour: "%{value} Stunde"
539 label_f_hour_plural: "%{value} Stunden"
539 label_f_hour_plural: "%{value} Stunden"
540 label_feed_plural: Feeds
540 label_feed_plural: Feeds
541 label_feeds_access_key: Atom-ZugriffsschlΓΌssel
541 label_feeds_access_key: Atom-ZugriffsschlΓΌssel
542 label_feeds_access_key_created_on: "Atom-ZugriffsschlΓΌssel vor %{value} erstellt"
542 label_feeds_access_key_created_on: "Atom-ZugriffsschlΓΌssel vor %{value} erstellt"
543 label_fields_permissions: Feldberechtigungen
543 label_fields_permissions: Feldberechtigungen
544 label_file_added: Datei hinzugefΓΌgt
544 label_file_added: Datei hinzugefΓΌgt
545 label_file_plural: Dateien
545 label_file_plural: Dateien
546 label_filter_add: Filter hinzufΓΌgen
546 label_filter_add: Filter hinzufΓΌgen
547 label_filter_plural: Filter
547 label_filter_plural: Filter
548 label_float: Fließkommazahl
548 label_float: Fließkommazahl
549 label_follows: Nachfolger von
549 label_follows: Nachfolger von
550 label_gantt: Gantt-Diagramm
550 label_gantt: Gantt-Diagramm
551 label_gantt_progress_line: Fortschrittslinie
551 label_gantt_progress_line: Fortschrittslinie
552 label_general: Allgemein
552 label_general: Allgemein
553 label_generate_key: Generieren
553 label_generate_key: Generieren
554 label_git_report_last_commit: Bericht des letzten Commits fΓΌr Dateien und Verzeichnisse
554 label_git_report_last_commit: Bericht des letzten Commits fΓΌr Dateien und Verzeichnisse
555 label_greater_or_equal: ">="
555 label_greater_or_equal: ">="
556 label_group: Gruppe
556 label_group: Gruppe
557 label_group_anonymous: Anonyme Benutzer
557 label_group_anonymous: Anonyme Benutzer
558 label_group_new: Neue Gruppe
558 label_group_new: Neue Gruppe
559 label_group_non_member: Nichtmitglieder
559 label_group_non_member: Nichtmitglieder
560 label_group_plural: Gruppen
560 label_group_plural: Gruppen
561 label_help: Hilfe
561 label_help: Hilfe
562 label_hidden: Versteckt
562 label_hidden: Versteckt
563 label_history: Historie
563 label_history: Historie
564 label_home: Hauptseite
564 label_home: Hauptseite
565 label_in: in
565 label_in: in
566 label_in_less_than: in weniger als
566 label_in_less_than: in weniger als
567 label_in_more_than: in mehr als
567 label_in_more_than: in mehr als
568 label_in_the_next_days: in den nΓ€chsten
568 label_in_the_next_days: in den nΓ€chsten
569 label_in_the_past_days: in den letzten
569 label_in_the_past_days: in den letzten
570 label_incoming_emails: Eingehende E-Mails
570 label_incoming_emails: Eingehende E-Mails
571 label_index_by_date: Seiten nach Datum sortiert
571 label_index_by_date: Seiten nach Datum sortiert
572 label_index_by_title: Seiten nach Titel sortiert
572 label_index_by_title: Seiten nach Titel sortiert
573 label_information: Information
573 label_information: Information
574 label_information_plural: Informationen
574 label_information_plural: Informationen
575 label_integer: Zahl
575 label_integer: Zahl
576 label_internal: Intern
576 label_internal: Intern
577 label_issue: Ticket
577 label_issue: Ticket
578 label_issue_added: Ticket hinzugefΓΌgt
578 label_issue_added: Ticket hinzugefΓΌgt
579 label_issue_assigned_to_updated: Bearbeiter aktualisiert
579 label_issue_assigned_to_updated: Bearbeiter aktualisiert
580 label_issue_category: Ticket-Kategorie
580 label_issue_category: Ticket-Kategorie
581 label_issue_category_new: Neue Kategorie
581 label_issue_category_new: Neue Kategorie
582 label_issue_category_plural: Ticket-Kategorien
582 label_issue_category_plural: Ticket-Kategorien
583 label_issue_new: Neues Ticket
583 label_issue_new: Neues Ticket
584 label_issue_note_added: Notiz hinzugefΓΌgt
584 label_issue_note_added: Notiz hinzugefΓΌgt
585 label_issue_plural: Tickets
585 label_issue_plural: Tickets
586 label_issue_priority_updated: PrioritΓ€t aktualisiert
586 label_issue_priority_updated: PrioritΓ€t aktualisiert
587 label_issue_status: Ticket-Status
587 label_issue_status: Ticket-Status
588 label_issue_status_new: Neuer Status
588 label_issue_status_new: Neuer Status
589 label_issue_status_plural: Ticket-Status
589 label_issue_status_plural: Ticket-Status
590 label_issue_status_updated: Status aktualisiert
590 label_issue_status_updated: Status aktualisiert
591 label_issue_tracking: Tickets
591 label_issue_tracking: Tickets
592 label_issue_updated: Ticket aktualisiert
592 label_issue_updated: Ticket aktualisiert
593 label_issue_view_all: Alle Tickets anzeigen
593 label_issue_view_all: Alle Tickets anzeigen
594 label_issue_watchers: Beobachter
594 label_issue_watchers: Beobachter
595 label_issues_by: "Tickets pro %{value}"
595 label_issues_by: "Tickets pro %{value}"
596 label_issues_visibility_all: Alle Tickets
596 label_issues_visibility_all: Alle Tickets
597 label_issues_visibility_own: Tickets die folgender Benutzer erstellt hat oder die ihm zugewiesen sind
597 label_issues_visibility_own: Tickets die folgender Benutzer erstellt hat oder die ihm zugewiesen sind
598 label_issues_visibility_public: Alle ΓΆffentlichen Tickets
598 label_issues_visibility_public: Alle ΓΆffentlichen Tickets
599 label_item_position: "%{position}/%{count}"
599 label_item_position: "%{position}/%{count}"
600 label_jump_to_a_project: Zu einem Projekt springen...
600 label_jump_to_a_project: Zu einem Projekt springen...
601 label_language_based: SprachabhΓ€ngig
601 label_language_based: SprachabhΓ€ngig
602 label_last_changes: "%{count} letzte Γ„nderungen"
602 label_last_changes: "%{count} letzte Γ„nderungen"
603 label_last_login: Letzte Anmeldung
603 label_last_login: Letzte Anmeldung
604 label_last_month: voriger Monat
604 label_last_month: voriger Monat
605 label_last_n_days: "die letzten %{count} Tage"
605 label_last_n_days: "die letzten %{count} Tage"
606 label_last_n_weeks: letzte %{count} Wochen
606 label_last_n_weeks: letzte %{count} Wochen
607 label_last_week: vorige Woche
607 label_last_week: vorige Woche
608 label_latest_compatible_version: Letzte kompatible Version
608 label_latest_compatible_version: Letzte kompatible Version
609 label_latest_revision: Aktuellste Revision
609 label_latest_revision: Aktuellste Revision
610 label_latest_revision_plural: Aktuellste Revisionen
610 label_latest_revision_plural: Aktuellste Revisionen
611 label_ldap_authentication: LDAP-Authentifizierung
611 label_ldap_authentication: LDAP-Authentifizierung
612 label_less_or_equal: "<="
612 label_less_or_equal: "<="
613 label_less_than_ago: vor weniger als
613 label_less_than_ago: vor weniger als
614 label_link: Link
614 label_link: Link
615 label_link_copied_issue: Kopierte Tickets verlinken
615 label_link_copied_issue: Kopierte Tickets verlinken
616 label_link_values_to: Werte mit URL verknΓΌpfen
616 label_link_values_to: Werte mit URL verknΓΌpfen
617 label_list: Liste
617 label_list: Liste
618 label_loading: Lade...
618 label_loading: Lade...
619 label_logged_as: Angemeldet als
619 label_logged_as: Angemeldet als
620 label_login: Anmelden
620 label_login: Anmelden
621 label_login_with_open_id_option: oder mit OpenID anmelden
621 label_login_with_open_id_option: oder mit OpenID anmelden
622 label_logout: Abmelden
622 label_logout: Abmelden
623 label_only: nur
623 label_only: nur
624 label_max_size: Maximale Grâße
624 label_max_size: Maximale Grâße
625 label_me: ich
625 label_me: ich
626 label_member: Mitglied
626 label_member: Mitglied
627 label_member_new: Neues Mitglied
627 label_member_new: Neues Mitglied
628 label_member_plural: Mitglieder
628 label_member_plural: Mitglieder
629 label_message_last: Letzter Forenbeitrag
629 label_message_last: Letzter Forenbeitrag
630 label_message_new: Neues Thema
630 label_message_new: Neues Thema
631 label_message_plural: ForenbeitrΓ€ge
631 label_message_plural: ForenbeitrΓ€ge
632 label_message_posted: Forenbeitrag hinzugefΓΌgt
632 label_message_posted: Forenbeitrag hinzugefΓΌgt
633 label_min_max_length: LΓ€nge (Min. - Max.)
633 label_min_max_length: LΓ€nge (Min. - Max.)
634 label_missing_api_access_key: Der API-ZugriffsschlΓΌssel fehlt.
634 label_missing_api_access_key: Der API-ZugriffsschlΓΌssel fehlt.
635 label_missing_feeds_access_key: Der Atom-ZugriffsschlΓΌssel fehlt.
635 label_missing_feeds_access_key: Der Atom-ZugriffsschlΓΌssel fehlt.
636 label_modified: geΓ€ndert
636 label_modified: geΓ€ndert
637 label_module_plural: Module
637 label_module_plural: Module
638 label_month: Monat
638 label_month: Monat
639 label_months_from: Monate ab
639 label_months_from: Monate ab
640 label_more: Mehr
640 label_more: Mehr
641 label_more_than_ago: vor mehr als
641 label_more_than_ago: vor mehr als
642 label_my_account: Mein Konto
642 label_my_account: Mein Konto
643 label_my_page: Meine Seite
643 label_my_page: Meine Seite
644 label_my_page_block: VerfΓΌgbare Widgets
644 label_my_page_block: VerfΓΌgbare Widgets
645 label_my_projects: Meine Projekte
645 label_my_projects: Meine Projekte
646 label_my_queries: Meine eigenen Abfragen
646 label_my_queries: Meine eigenen Abfragen
647 label_new: Neu
647 label_new: Neu
648 label_new_statuses_allowed: Neue Berechtigungen
648 label_new_statuses_allowed: Neue Berechtigungen
649 label_news: News
649 label_news: News
650 label_news_added: News hinzugefΓΌgt
650 label_news_added: News hinzugefΓΌgt
651 label_news_comment_added: Kommentar zu einer News hinzugefΓΌgt
651 label_news_comment_added: Kommentar zu einer News hinzugefΓΌgt
652 label_news_latest: Letzte News
652 label_news_latest: Letzte News
653 label_news_new: News hinzufΓΌgen
653 label_news_new: News hinzufΓΌgen
654 label_news_plural: News
654 label_news_plural: News
655 label_news_view_all: Alle News anzeigen
655 label_news_view_all: Alle News anzeigen
656 label_next: Weiter
656 label_next: Weiter
657 label_no_change_option: (Keine Γ„nderung)
657 label_no_change_option: (Keine Γ„nderung)
658 label_no_data: Nichts anzuzeigen
658 label_no_data: Nichts anzuzeigen
659 label_no_issues_in_project: keine Tickets im Projekt
659 label_no_issues_in_project: keine Tickets im Projekt
660 label_nobody: Niemand
660 label_nobody: Niemand
661 label_none: kein
661 label_none: kein
662 label_not_contains: enthΓ€lt nicht
662 label_not_contains: enthΓ€lt nicht
663 label_not_equals: ist nicht
663 label_not_equals: ist nicht
664 label_open_issues: offen
664 label_open_issues: offen
665 label_open_issues_plural: offen
665 label_open_issues_plural: offen
666 label_optional_description: Beschreibung (optional)
666 label_optional_description: Beschreibung (optional)
667 label_options: Optionen
667 label_options: Optionen
668 label_overall_activity: AktivitΓ€ten aller Projekte anzeigen
668 label_overall_activity: AktivitΓ€ten aller Projekte anzeigen
669 label_overall_spent_time: Aufgewendete Zeit aller Projekte anzeigen
669 label_overall_spent_time: Aufgewendete Zeit aller Projekte anzeigen
670 label_overview: Übersicht
670 label_overview: Übersicht
671 label_parent_revision: VorgΓ€nger
671 label_parent_revision: VorgΓ€nger
672 label_password_lost: Kennwort vergessen
672 label_password_lost: Kennwort vergessen
673 label_permissions: Berechtigungen
673 label_permissions: Berechtigungen
674 label_permissions_report: BerechtigungsΓΌbersicht
674 label_permissions_report: BerechtigungsΓΌbersicht
675 label_personalize_page: Diese Seite anpassen
675 label_personalize_page: Diese Seite anpassen
676 label_planning: Terminplanung
676 label_planning: Terminplanung
677 label_please_login: Anmelden
677 label_please_login: Anmelden
678 label_plugins: Plugins
678 label_plugins: Plugins
679 label_precedes: VorgΓ€nger von
679 label_precedes: VorgΓ€nger von
680 label_preferences: PrΓ€ferenzen
680 label_preferences: PrΓ€ferenzen
681 label_preview: Vorschau
681 label_preview: Vorschau
682 label_previous: ZurΓΌck
682 label_previous: ZurΓΌck
683 label_principal_search: "Nach Benutzer oder Gruppe suchen:"
683 label_principal_search: "Nach Benutzer oder Gruppe suchen:"
684 label_profile: Profil
684 label_profile: Profil
685 label_project: Projekt
685 label_project: Projekt
686 label_project_all: Alle Projekte
686 label_project_all: Alle Projekte
687 label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts.
687 label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts.
688 label_project_latest: Neueste Projekte
688 label_project_latest: Neueste Projekte
689 label_project_new: Neues Projekt
689 label_project_new: Neues Projekt
690 label_project_plural: Projekte
690 label_project_plural: Projekte
691 label_public_projects: Γ–ffentliche Projekte
691 label_public_projects: Γ–ffentliche Projekte
692 label_query: Benutzerdefinierte Abfrage
692 label_query: Benutzerdefinierte Abfrage
693 label_query_new: Neue Abfrage
693 label_query_new: Neue Abfrage
694 label_query_plural: Benutzerdefinierte Abfragen
694 label_query_plural: Benutzerdefinierte Abfragen
695 label_radio_buttons: Radio-Buttons
695 label_radio_buttons: Radio-Buttons
696 label_read: Lesen...
696 label_read: Lesen...
697 label_readonly: Nur-Lese-Zugriff
697 label_readonly: Nur-Lese-Zugriff
698 label_register: Registrieren
698 label_register: Registrieren
699 label_registered_on: Angemeldet am
699 label_registered_on: Angemeldet am
700 label_registration_activation_by_email: Kontoaktivierung durch E-Mail
700 label_registration_activation_by_email: Kontoaktivierung durch E-Mail
701 label_registration_automatic_activation: Automatische Kontoaktivierung
701 label_registration_automatic_activation: Automatische Kontoaktivierung
702 label_registration_manual_activation: Manuelle Kontoaktivierung
702 label_registration_manual_activation: Manuelle Kontoaktivierung
703 label_related_issues: ZugehΓΆrige Tickets
703 label_related_issues: ZugehΓΆrige Tickets
704 label_relates_to: Beziehung mit
704 label_relates_to: Beziehung mit
705 label_relation_delete: Beziehung lΓΆschen
705 label_relation_delete: Beziehung lΓΆschen
706 label_relation_new: Neue Beziehung
706 label_relation_new: Neue Beziehung
707 label_renamed: umbenannt
707 label_renamed: umbenannt
708 label_reply_plural: Antworten
708 label_reply_plural: Antworten
709 label_report: Bericht
709 label_report: Bericht
710 label_report_plural: Berichte
710 label_report_plural: Berichte
711 label_reported_issues: Erstellte Tickets
711 label_reported_issues: Erstellte Tickets
712 label_repository: Projektarchiv
712 label_repository: Projektarchiv
713 label_repository_new: Neues Repository
713 label_repository_new: Neues Repository
714 label_repository_plural: Projektarchive
714 label_repository_plural: Projektarchive
715 label_required: Erforderlich
715 label_required: Erforderlich
716 label_result_plural: Resultate
716 label_result_plural: Resultate
717 label_reverse_chronological_order: in umgekehrter zeitlicher Reihenfolge
717 label_reverse_chronological_order: in umgekehrter zeitlicher Reihenfolge
718 label_revision: Revision
718 label_revision: Revision
719 label_revision_id: Revision %{value}
719 label_revision_id: Revision %{value}
720 label_revision_plural: Revisionen
720 label_revision_plural: Revisionen
721 label_roadmap: Roadmap
721 label_roadmap: Roadmap
722 label_roadmap_due_in: "FΓ€llig in %{value}"
722 label_roadmap_due_in: "FΓ€llig in %{value}"
723 label_roadmap_no_issues: Keine Tickets fΓΌr diese Version
723 label_roadmap_no_issues: Keine Tickets fΓΌr diese Version
724 label_roadmap_overdue: "seit %{value} verspΓ€tet"
724 label_roadmap_overdue: "seit %{value} verspΓ€tet"
725 label_role: Rolle
725 label_role: Rolle
726 label_role_and_permissions: Rollen und Rechte
726 label_role_and_permissions: Rollen und Rechte
727 label_role_anonymous: Anonymous
727 label_role_anonymous: Anonymous
728 label_role_new: Neue Rolle
728 label_role_new: Neue Rolle
729 label_role_non_member: Nichtmitglied
729 label_role_non_member: Nichtmitglied
730 label_role_plural: Rollen
730 label_role_plural: Rollen
731 label_scm: Versionskontrollsystem
731 label_scm: Versionskontrollsystem
732 label_search: Suche
732 label_search: Suche
733 label_search_for_watchers: Nach hinzufΓΌgbaren Beobachtern suchen
733 label_search_for_watchers: Nach hinzufΓΌgbaren Beobachtern suchen
734 label_search_titles_only: Nur Titel durchsuchen
734 label_search_titles_only: Nur Titel durchsuchen
735 label_send_information: Sende Kontoinformationen an Benutzer
735 label_send_information: Sende Kontoinformationen an Benutzer
736 label_send_test_email: Test-E-Mail senden
736 label_send_test_email: Test-E-Mail senden
737 label_session_expiration: Ende einer Sitzung
737 label_session_expiration: Ende einer Sitzung
738 label_settings: Konfiguration
738 label_settings: Konfiguration
739 label_show_closed_projects: Geschlossene Projekte anzeigen
739 label_show_closed_projects: Geschlossene Projekte anzeigen
740 label_show_completed_versions: Abgeschlossene Versionen anzeigen
740 label_show_completed_versions: Abgeschlossene Versionen anzeigen
741 label_sort: Sortierung
741 label_sort: Sortierung
742 label_sort_by: "Sortiert nach %{value}"
742 label_sort_by: "Sortiert nach %{value}"
743 label_sort_higher: Eins hΓΆher
743 label_sort_higher: Eins hΓΆher
744 label_sort_highest: An den Anfang
744 label_sort_highest: An den Anfang
745 label_sort_lower: Eins tiefer
745 label_sort_lower: Eins tiefer
746 label_sort_lowest: Ans Ende
746 label_sort_lowest: Ans Ende
747 label_spent_time: Aufgewendete Zeit
747 label_spent_time: Aufgewendete Zeit
748 label_start_to_end: Anfang - Ende
748 label_start_to_end: Anfang - Ende
749 label_start_to_start: Anfang - Anfang
749 label_start_to_start: Anfang - Anfang
750 label_statistics: Statistiken
750 label_statistics: Statistiken
751 label_status_transitions: StatusΓ€nderungen
751 label_status_transitions: StatusΓ€nderungen
752 label_stay_logged_in: Angemeldet bleiben
752 label_stay_logged_in: Angemeldet bleiben
753 label_string: Text
753 label_string: Text
754 label_subproject_new: Neues Unterprojekt
754 label_subproject_new: Neues Unterprojekt
755 label_subproject_plural: Unterprojekte
755 label_subproject_plural: Unterprojekte
756 label_subtask_plural: Unteraufgaben
756 label_subtask_plural: Unteraufgaben
757 label_tag: Markierung
757 label_tag: Markierung
758 label_text: Langer Text
758 label_text: Langer Text
759 label_theme: Stil
759 label_theme: Stil
760 label_this_month: aktueller Monat
760 label_this_month: aktueller Monat
761 label_this_week: aktuelle Woche
761 label_this_week: aktuelle Woche
762 label_this_year: aktuelles Jahr
762 label_this_year: aktuelles Jahr
763 label_time_entry_plural: BenΓΆtigte Zeit
763 label_time_entry_plural: BenΓΆtigte Zeit
764 label_time_tracking: Zeiterfassung
764 label_time_tracking: Zeiterfassung
765 label_today: heute
765 label_today: heute
766 label_topic_plural: Themen
766 label_topic_plural: Themen
767 label_total: Gesamtzahl
767 label_total: Gesamtzahl
768 label_total_time: Gesamtzeit
768 label_total_time: Gesamtzeit
769 label_tracker: Tracker
769 label_tracker: Tracker
770 label_tracker_new: Neuer Tracker
770 label_tracker_new: Neuer Tracker
771 label_tracker_plural: Tracker
771 label_tracker_plural: Tracker
772 label_unknown_plugin: Unbekanntes Plugin
772 label_unknown_plugin: Unbekanntes Plugin
773 label_update_issue_done_ratios: Ticket-Fortschritt aktualisieren
773 label_update_issue_done_ratios: Ticket-Fortschritt aktualisieren
774 label_updated_time: "Vor %{value} aktualisiert"
774 label_updated_time: "Vor %{value} aktualisiert"
775 label_updated_time_by: "Von %{author} vor %{age} aktualisiert"
775 label_updated_time_by: "Von %{author} vor %{age} aktualisiert"
776 label_used_by: Benutzt von
776 label_used_by: Benutzt von
777 label_user: Benutzer
777 label_user: Benutzer
778 label_user_activity: "AktivitΓ€t von %{value}"
778 label_user_activity: "AktivitΓ€t von %{value}"
779 label_user_anonymous: Anonym
779 label_user_anonymous: Anonym
780 label_user_mail_no_self_notified: "Ich mΓΆchte nicht ΓΌber Γ„nderungen benachrichtigt werden, die ich selbst durchfΓΌhre."
780 label_user_mail_no_self_notified: "Ich mΓΆchte nicht ΓΌber Γ„nderungen benachrichtigt werden, die ich selbst durchfΓΌhre."
781 label_user_mail_option_all: "FΓΌr alle Ereignisse in all meinen Projekten"
781 label_user_mail_option_all: "FΓΌr alle Ereignisse in all meinen Projekten"
782 label_user_mail_option_none: Keine Ereignisse
782 label_user_mail_option_none: Keine Ereignisse
783 label_user_mail_option_only_assigned: Nur fΓΌr Aufgaben fΓΌr die ich zustΓ€ndig bin
783 label_user_mail_option_only_assigned: Nur fΓΌr Aufgaben fΓΌr die ich zustΓ€ndig bin
784 label_user_mail_option_only_my_events: Nur fΓΌr Aufgaben die ich beobachte oder an welchen ich mitarbeite
784 label_user_mail_option_only_my_events: Nur fΓΌr Aufgaben die ich beobachte oder an welchen ich mitarbeite
785 label_user_mail_option_only_owner: Nur fΓΌr Aufgaben die ich angelegt habe
785 label_user_mail_option_only_owner: Nur fΓΌr Aufgaben die ich angelegt habe
786 label_user_mail_option_selected: "FΓΌr alle Ereignisse in den ausgewΓ€hlten Projekten"
786 label_user_mail_option_selected: "FΓΌr alle Ereignisse in den ausgewΓ€hlten Projekten"
787 label_user_new: Neuer Benutzer
787 label_user_new: Neuer Benutzer
788 label_user_plural: Benutzer
788 label_user_plural: Benutzer
789 label_user_search: "Nach Benutzer suchen:"
789 label_user_search: "Nach Benutzer suchen:"
790 label_users_visibility_all: Alle aktiven Benutzer
790 label_users_visibility_all: Alle aktiven Benutzer
791 label_users_visibility_members_of_visible_projects: Mitglieder von sichtbaren Projekten
791 label_users_visibility_members_of_visible_projects: Mitglieder von sichtbaren Projekten
792 label_version: Version
792 label_version: Version
793 label_version_new: Neue Version
793 label_version_new: Neue Version
794 label_version_plural: Versionen
794 label_version_plural: Versionen
795 label_version_sharing_descendants: Mit Unterprojekten
795 label_version_sharing_descendants: Mit Unterprojekten
796 label_version_sharing_hierarchy: Mit Projekthierarchie
796 label_version_sharing_hierarchy: Mit Projekthierarchie
797 label_version_sharing_none: Nicht gemeinsam verwenden
797 label_version_sharing_none: Nicht gemeinsam verwenden
798 label_version_sharing_system: Mit allen Projekten
798 label_version_sharing_system: Mit allen Projekten
799 label_version_sharing_tree: Mit Projektbaum
799 label_version_sharing_tree: Mit Projektbaum
800 label_view_all_revisions: Alle Revisionen anzeigen
800 label_view_all_revisions: Alle Revisionen anzeigen
801 label_view_diff: Unterschiede anzeigen
801 label_view_diff: Unterschiede anzeigen
802 label_view_revisions: Revisionen anzeigen
802 label_view_revisions: Revisionen anzeigen
803 label_visibility_private: nur fΓΌr mich
803 label_visibility_private: nur fΓΌr mich
804 label_visibility_public: fΓΌr jeden Benutzer
804 label_visibility_public: fΓΌr jeden Benutzer
805 label_visibility_roles: nur fΓΌr diese Rollen
805 label_visibility_roles: nur fΓΌr diese Rollen
806 label_watched_issues: Beobachtete Tickets
806 label_watched_issues: Beobachtete Tickets
807 label_week: Woche
807 label_week: Woche
808 label_wiki: Wiki
808 label_wiki: Wiki
809 label_wiki_content_added: Wiki-Seite hinzugefΓΌgt
809 label_wiki_content_added: Wiki-Seite hinzugefΓΌgt
810 label_wiki_content_updated: Wiki-Seite aktualisiert
810 label_wiki_content_updated: Wiki-Seite aktualisiert
811 label_wiki_edit: Wiki-Bearbeitung
811 label_wiki_edit: Wiki-Bearbeitung
812 label_wiki_edit_plural: Wiki-Bearbeitungen
812 label_wiki_edit_plural: Wiki-Bearbeitungen
813 label_wiki_page: Wiki-Seite
813 label_wiki_page: Wiki-Seite
814 label_wiki_page_plural: Wiki-Seiten
814 label_wiki_page_plural: Wiki-Seiten
815 label_workflow: Workflow
815 label_workflow: Workflow
816 label_x_closed_issues_abbr:
816 label_x_closed_issues_abbr:
817 zero: 0 geschlossen
817 zero: 0 geschlossen
818 one: 1 geschlossen
818 one: 1 geschlossen
819 other: "%{count} geschlossen"
819 other: "%{count} geschlossen"
820 label_x_comments:
820 label_x_comments:
821 zero: keine Kommentare
821 zero: keine Kommentare
822 one: 1 Kommentar
822 one: 1 Kommentar
823 other: "%{count} Kommentare"
823 other: "%{count} Kommentare"
824 label_x_issues:
824 label_x_issues:
825 zero: 0 Tickets
825 zero: 0 Tickets
826 one: 1 Ticket
826 one: 1 Ticket
827 other: "%{count} Tickets"
827 other: "%{count} Tickets"
828 label_x_open_issues_abbr:
828 label_x_open_issues_abbr:
829 zero: 0 offen
829 zero: 0 offen
830 one: 1 offen
830 one: 1 offen
831 other: "%{count} offen"
831 other: "%{count} offen"
832 label_x_open_issues_abbr_on_total:
832 label_x_open_issues_abbr_on_total:
833 zero: 0 offen / %{total}
833 zero: 0 offen / %{total}
834 one: 1 offen / %{total}
834 one: 1 offen / %{total}
835 other: "%{count} offen / %{total}"
835 other: "%{count} offen / %{total}"
836 label_x_projects:
836 label_x_projects:
837 zero: keine Projekte
837 zero: keine Projekte
838 one: 1 Projekt
838 one: 1 Projekt
839 other: "%{count} Projekte"
839 other: "%{count} Projekte"
840 label_year: Jahr
840 label_year: Jahr
841 label_yesterday: gestern
841 label_yesterday: gestern
842
842
843 mail_body_account_activation_request: "Ein neuer Benutzer (%{value}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:"
843 mail_body_account_activation_request: "Ein neuer Benutzer (%{value}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:"
844 mail_body_account_information: Ihre Konto-Informationen
844 mail_body_account_information: Ihre Konto-Informationen
845 mail_body_account_information_external: "Sie kΓΆnnen sich mit Ihrem Konto %{value} anmelden."
845 mail_body_account_information_external: "Sie kΓΆnnen sich mit Ihrem Konto %{value} anmelden."
846 mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu Γ€ndern:'
846 mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Kennwort zu Γ€ndern:'
847 mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:'
847 mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:'
848 mail_body_reminder: "%{count} Tickets, die Ihnen zugewiesen sind, mΓΌssen in den nΓ€chsten %{days} Tagen abgegeben werden:"
848 mail_body_reminder: "%{count} Tickets, die Ihnen zugewiesen sind, mΓΌssen in den nΓ€chsten %{days} Tagen abgegeben werden:"
849 mail_body_wiki_content_added: "Die Wiki-Seite '%{id}' wurde von %{author} hinzugefΓΌgt."
849 mail_body_wiki_content_added: "Die Wiki-Seite '%{id}' wurde von %{author} hinzugefΓΌgt."
850 mail_body_wiki_content_updated: "Die Wiki-Seite '%{id}' wurde von %{author} aktualisiert."
850 mail_body_wiki_content_updated: "Die Wiki-Seite '%{id}' wurde von %{author} aktualisiert."
851 mail_subject_account_activation_request: "Antrag auf %{value} Kontoaktivierung"
851 mail_subject_account_activation_request: "Antrag auf %{value} Kontoaktivierung"
852 mail_subject_lost_password: "Ihr %{value} Kennwort"
852 mail_subject_lost_password: "Ihr %{value} Kennwort"
853 mail_subject_register: "%{value} Kontoaktivierung"
853 mail_subject_register: "%{value} Kontoaktivierung"
854 mail_subject_reminder: "%{count} Tickets mΓΌssen in den nΓ€chsten %{days} Tagen abgegeben werden"
854 mail_subject_reminder: "%{count} Tickets mΓΌssen in den nΓ€chsten %{days} Tagen abgegeben werden"
855 mail_subject_wiki_content_added: "Wiki-Seite '%{id}' hinzugefΓΌgt"
855 mail_subject_wiki_content_added: "Wiki-Seite '%{id}' hinzugefΓΌgt"
856 mail_subject_wiki_content_updated: "Wiki-Seite '%{id}' erfolgreich aktualisiert"
856 mail_subject_wiki_content_updated: "Wiki-Seite '%{id}' erfolgreich aktualisiert"
857
857
858 notice_account_activated: Ihr Konto ist aktiviert. Sie kΓΆnnen sich jetzt anmelden.
858 notice_account_activated: Ihr Konto ist aktiviert. Sie kΓΆnnen sich jetzt anmelden.
859 notice_account_deleted: Ihr Benutzerkonto wurde unwiderruflich gelΓΆscht.
859 notice_account_deleted: Ihr Benutzerkonto wurde unwiderruflich gelΓΆscht.
860 notice_account_invalid_creditentials: Benutzer oder Kennwort ist ungΓΌltig.
860 notice_account_invalid_creditentials: Benutzer oder Kennwort ist ungΓΌltig.
861 notice_account_lost_email_sent: Eine E-Mail mit Anweisungen, ein neues Kennwort zu wΓ€hlen, wurde Ihnen geschickt.
861 notice_account_lost_email_sent: Eine E-Mail mit Anweisungen, ein neues Kennwort zu wΓ€hlen, wurde Ihnen geschickt.
862 notice_account_locked: Ihr Konto ist gesperrt.
862 notice_account_locked: Ihr Konto ist gesperrt.
863 notice_account_not_activated_yet: Sie haben Ihr Konto noch nicht aktiviert. Wenn Sie die Aktivierungsmail erneut erhalten wollen, <a href="%{url}">klicken Sie bitte hier</a>.
863 notice_account_not_activated_yet: Sie haben Ihr Konto noch nicht aktiviert. Wenn Sie die Aktivierungsmail erneut erhalten wollen, <a href="%{url}">klicken Sie bitte hier</a>.
864 notice_account_password_updated: Kennwort wurde erfolgreich aktualisiert.
864 notice_account_password_updated: Kennwort wurde erfolgreich aktualisiert.
865 notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators."
865 notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators."
866 notice_account_register_done: Konto wurde erfolgreich angelegt. Eine E-Mail mit weiteren Instruktionen zur Kontoaktivierung wurde an %{email} gesendet.
866 notice_account_register_done: Konto wurde erfolgreich angelegt. Eine E-Mail mit weiteren Instruktionen zur Kontoaktivierung wurde an %{email} gesendet.
867 notice_account_unknown_email: Unbekannter Benutzer.
867 notice_account_unknown_email: Unbekannter Benutzer.
868 notice_account_updated: Konto wurde erfolgreich aktualisiert.
868 notice_account_updated: Konto wurde erfolgreich aktualisiert.
869 notice_account_wrong_password: Falsches Kennwort.
869 notice_account_wrong_password: Falsches Kennwort.
870 notice_api_access_key_reseted: Ihr API-ZugriffsschlΓΌssel wurde zurΓΌckgesetzt.
870 notice_api_access_key_reseted: Ihr API-ZugriffsschlΓΌssel wurde zurΓΌckgesetzt.
871 notice_can_t_change_password: Dieses Konto verwendet eine externe Authentifizierungs-Quelle. UnmΓΆglich, das Kennwort zu Γ€ndern.
871 notice_can_t_change_password: Dieses Konto verwendet eine externe Authentifizierungs-Quelle. UnmΓΆglich, das Kennwort zu Γ€ndern.
872 notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen.
872 notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen.
873 notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten (%{value})."
873 notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten (%{value})."
874 notice_email_sent: "Eine E-Mail wurde an %{value} gesendet."
874 notice_email_sent: "Eine E-Mail wurde an %{value} gesendet."
875 notice_failed_to_save_issues: "%{count} von %{total} ausgewΓ€hlten Tickets konnte(n) nicht gespeichert werden: %{ids}."
875 notice_failed_to_save_issues: "%{count} von %{total} ausgewΓ€hlten Tickets konnte(n) nicht gespeichert werden: %{ids}."
876 notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: %{errors}."
876 notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: %{errors}."
877 notice_failed_to_save_time_entries: "Gescheitert %{count} ZeiteintrΓ€ge fΓΌr %{total} von ausgewΓ€hlten: %{ids} zu speichern."
877 notice_failed_to_save_time_entries: "Gescheitert %{count} ZeiteintrΓ€ge fΓΌr %{total} von ausgewΓ€hlten: %{ids} zu speichern."
878 notice_feeds_access_key_reseted: Ihr Atom-ZugriffsschlΓΌssel wurde zurΓΌckgesetzt.
878 notice_feeds_access_key_reseted: Ihr Atom-ZugriffsschlΓΌssel wurde zurΓΌckgesetzt.
879 notice_file_not_found: Anhang existiert nicht oder ist gelΓΆscht worden.
879 notice_file_not_found: Anhang existiert nicht oder ist gelΓΆscht worden.
880 notice_gantt_chart_truncated: Die Grafik ist unvollstΓ€ndig, da das Maximum der anzeigbaren Aufgaben ΓΌberschritten wurde (%{max})
880 notice_gantt_chart_truncated: Die Grafik ist unvollstΓ€ndig, da das Maximum der anzeigbaren Aufgaben ΓΌberschritten wurde (%{max})
881 notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert.
881 notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert.
882 notice_issue_successful_create: Ticket %{id} erstellt.
882 notice_issue_successful_create: Ticket %{id} erstellt.
883 notice_issue_update_conflict: Das Ticket wurde wΓ€hrend Ihrer Bearbeitung von einem anderen Nutzer ΓΌberarbeitet.
883 notice_issue_update_conflict: Das Ticket wurde wΓ€hrend Ihrer Bearbeitung von einem anderen Nutzer ΓΌberarbeitet.
884 notice_locking_conflict: Datum wurde von einem anderen Benutzer geΓ€ndert.
884 notice_locking_conflict: Datum wurde von einem anderen Benutzer geΓ€ndert.
885 notice_new_password_must_be_different: Das neue Passwort muss sich vom dem aktuellen
885 notice_new_password_must_be_different: Das neue Passwort muss sich vom dem aktuellen
886 unterscheiden
886 unterscheiden
887 notice_no_issue_selected: "Kein Ticket ausgewΓ€hlt! Bitte wΓ€hlen Sie die Tickets, die Sie bearbeiten mΓΆchten."
887 notice_no_issue_selected: "Kein Ticket ausgewΓ€hlt! Bitte wΓ€hlen Sie die Tickets, die Sie bearbeiten mΓΆchten."
888 notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen.
888 notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen.
889 notice_not_authorized_archived_project: Das Projekt wurde archiviert und ist daher nicht nicht verfΓΌgbar.
889 notice_not_authorized_archived_project: Das Projekt wurde archiviert und ist daher nicht nicht verfΓΌgbar.
890 notice_successful_connection: Verbindung erfolgreich.
890 notice_successful_connection: Verbindung erfolgreich.
891 notice_successful_create: Erfolgreich angelegt
891 notice_successful_create: Erfolgreich angelegt
892 notice_successful_delete: Erfolgreich gelΓΆscht.
892 notice_successful_delete: Erfolgreich gelΓΆscht.
893 notice_successful_update: Erfolgreich aktualisiert.
893 notice_successful_update: Erfolgreich aktualisiert.
894 notice_unable_delete_time_entry: Der Zeiterfassungseintrag konnte nicht gelΓΆscht werden.
894 notice_unable_delete_time_entry: Der Zeiterfassungseintrag konnte nicht gelΓΆscht werden.
895 notice_unable_delete_version: Die Version konnte nicht gelΓΆscht werden.
895 notice_unable_delete_version: Die Version konnte nicht gelΓΆscht werden.
896 notice_user_successful_create: Benutzer %{id} angelegt.
896 notice_user_successful_create: Benutzer %{id} angelegt.
897
897
898 permission_add_issue_notes: Kommentare hinzufΓΌgen
898 permission_add_issue_notes: Kommentare hinzufΓΌgen
899 permission_add_issue_watchers: Beobachter hinzufΓΌgen
899 permission_add_issue_watchers: Beobachter hinzufΓΌgen
900 permission_add_issues: Tickets hinzufΓΌgen
900 permission_add_issues: Tickets hinzufΓΌgen
901 permission_add_messages: ForenbeitrΓ€ge hinzufΓΌgen
901 permission_add_messages: ForenbeitrΓ€ge hinzufΓΌgen
902 permission_add_project: Projekt erstellen
902 permission_add_project: Projekt erstellen
903 permission_add_subprojects: Unterprojekte erstellen
903 permission_add_subprojects: Unterprojekte erstellen
904 permission_add_documents: Dokumente hinzufΓΌgen
904 permission_add_documents: Dokumente hinzufΓΌgen
905 permission_browse_repository: Projektarchiv ansehen
905 permission_browse_repository: Projektarchiv ansehen
906 permission_close_project: Schließen / erneutes Γ–ffnen eines Projekts
906 permission_close_project: Schließen / erneutes Γ–ffnen eines Projekts
907 permission_comment_news: News kommentieren
907 permission_comment_news: News kommentieren
908 permission_commit_access: Commit-Zugriff
908 permission_commit_access: Commit-Zugriff
909 permission_delete_issue_watchers: Beobachter lΓΆschen
909 permission_delete_issue_watchers: Beobachter lΓΆschen
910 permission_delete_issues: Tickets lΓΆschen
910 permission_delete_issues: Tickets lΓΆschen
911 permission_delete_messages: ForenbeitrΓ€ge lΓΆschen
911 permission_delete_messages: ForenbeitrΓ€ge lΓΆschen
912 permission_delete_own_messages: Eigene ForenbeitrΓ€ge lΓΆschen
912 permission_delete_own_messages: Eigene ForenbeitrΓ€ge lΓΆschen
913 permission_delete_wiki_pages: Wiki-Seiten lΓΆschen
913 permission_delete_wiki_pages: Wiki-Seiten lΓΆschen
914 permission_delete_wiki_pages_attachments: AnhΓ€nge lΓΆschen
914 permission_delete_wiki_pages_attachments: AnhΓ€nge lΓΆschen
915 permission_delete_documents: Dokumente lΓΆschen
915 permission_delete_documents: Dokumente lΓΆschen
916 permission_edit_issue_notes: Kommentare bearbeiten
916 permission_edit_issue_notes: Kommentare bearbeiten
917 permission_edit_issues: Tickets bearbeiten
917 permission_edit_issues: Tickets bearbeiten
918 permission_edit_messages: ForenbeitrΓ€ge bearbeiten
918 permission_edit_messages: ForenbeitrΓ€ge bearbeiten
919 permission_edit_own_issue_notes: Eigene Kommentare bearbeiten
919 permission_edit_own_issue_notes: Eigene Kommentare bearbeiten
920 permission_edit_own_messages: Eigene ForenbeitrΓ€ge bearbeiten
920 permission_edit_own_messages: Eigene ForenbeitrΓ€ge bearbeiten
921 permission_edit_own_time_entries: Selbst gebuchte AufwΓ€nde bearbeiten
921 permission_edit_own_time_entries: Selbst gebuchte AufwΓ€nde bearbeiten
922 permission_edit_project: Projekt bearbeiten
922 permission_edit_project: Projekt bearbeiten
923 permission_edit_time_entries: Gebuchte AufwΓ€nde bearbeiten
923 permission_edit_time_entries: Gebuchte AufwΓ€nde bearbeiten
924 permission_edit_wiki_pages: Wiki-Seiten bearbeiten
924 permission_edit_wiki_pages: Wiki-Seiten bearbeiten
925 permission_edit_documents: Dokumente bearbeiten
925 permission_edit_documents: Dokumente bearbeiten
926 permission_export_wiki_pages: Wiki-Seiten exportieren
926 permission_export_wiki_pages: Wiki-Seiten exportieren
927 permission_log_time: AufwΓ€nde buchen
927 permission_log_time: AufwΓ€nde buchen
928 permission_manage_boards: Foren verwalten
928 permission_manage_boards: Foren verwalten
929 permission_manage_categories: Ticket-Kategorien verwalten
929 permission_manage_categories: Ticket-Kategorien verwalten
930 permission_manage_files: Dateien verwalten
930 permission_manage_files: Dateien verwalten
931 permission_manage_issue_relations: Ticket-Beziehungen verwalten
931 permission_manage_issue_relations: Ticket-Beziehungen verwalten
932 permission_manage_members: Mitglieder verwalten
932 permission_manage_members: Mitglieder verwalten
933 permission_manage_news: News verwalten
933 permission_manage_news: News verwalten
934 permission_manage_project_activities: AktivitΓ€ten (Zeiterfassung) verwalten
934 permission_manage_project_activities: AktivitΓ€ten (Zeiterfassung) verwalten
935 permission_manage_public_queries: Γ–ffentliche Filter verwalten
935 permission_manage_public_queries: Γ–ffentliche Filter verwalten
936 permission_manage_related_issues: ZugehΓΆrige Tickets verwalten
936 permission_manage_related_issues: ZugehΓΆrige Tickets verwalten
937 permission_manage_repository: Projektarchiv verwalten
937 permission_manage_repository: Projektarchiv verwalten
938 permission_manage_subtasks: Unteraufgaben verwalten
938 permission_manage_subtasks: Unteraufgaben verwalten
939 permission_manage_versions: Versionen verwalten
939 permission_manage_versions: Versionen verwalten
940 permission_manage_wiki: Wiki verwalten
940 permission_manage_wiki: Wiki verwalten
941 permission_move_issues: Tickets verschieben
941 permission_move_issues: Tickets verschieben
942 permission_protect_wiki_pages: Wiki-Seiten schΓΌtzen
942 permission_protect_wiki_pages: Wiki-Seiten schΓΌtzen
943 permission_rename_wiki_pages: Wiki-Seiten umbenennen
943 permission_rename_wiki_pages: Wiki-Seiten umbenennen
944 permission_save_queries: Filter speichern
944 permission_save_queries: Filter speichern
945 permission_select_project_modules: Projektmodule auswΓ€hlen
945 permission_select_project_modules: Projektmodule auswΓ€hlen
946 permission_set_issues_private: Tickets privat oder ΓΆffentlich markieren
946 permission_set_issues_private: Tickets privat oder ΓΆffentlich markieren
947 permission_set_notes_private: Kommentar als privat markieren
947 permission_set_notes_private: Kommentar als privat markieren
948 permission_set_own_issues_private: Eigene Tickets privat oder ΓΆffentlich markieren
948 permission_set_own_issues_private: Eigene Tickets privat oder ΓΆffentlich markieren
949 permission_view_calendar: Kalender ansehen
949 permission_view_calendar: Kalender ansehen
950 permission_view_changesets: Changesets ansehen
950 permission_view_changesets: Changesets ansehen
951 permission_view_documents: Dokumente ansehen
951 permission_view_documents: Dokumente ansehen
952 permission_view_files: Dateien ansehen
952 permission_view_files: Dateien ansehen
953 permission_view_gantt: Gantt-Diagramm ansehen
953 permission_view_gantt: Gantt-Diagramm ansehen
954 permission_view_issue_watchers: Liste der Beobachter ansehen
954 permission_view_issue_watchers: Liste der Beobachter ansehen
955 permission_view_issues: Tickets anzeigen
955 permission_view_issues: Tickets anzeigen
956 permission_view_messages: ForenbeitrΓ€ge ansehen
956 permission_view_messages: ForenbeitrΓ€ge ansehen
957 permission_view_private_notes: Private Kommentare sehen
957 permission_view_private_notes: Private Kommentare sehen
958 permission_view_time_entries: Gebuchte AufwΓ€nde ansehen
958 permission_view_time_entries: Gebuchte AufwΓ€nde ansehen
959 permission_view_wiki_edits: Wiki-Versionsgeschichte ansehen
959 permission_view_wiki_edits: Wiki-Versionsgeschichte ansehen
960 permission_view_wiki_pages: Wiki ansehen
960 permission_view_wiki_pages: Wiki ansehen
961
961
962 project_module_boards: Foren
962 project_module_boards: Foren
963 project_module_calendar: Kalender
963 project_module_calendar: Kalender
964 project_module_documents: Dokumente
964 project_module_documents: Dokumente
965 project_module_files: Dateien
965 project_module_files: Dateien
966 project_module_gantt: Gantt
966 project_module_gantt: Gantt
967 project_module_issue_tracking: Ticket-Verfolgung
967 project_module_issue_tracking: Ticket-Verfolgung
968 project_module_news: News
968 project_module_news: News
969 project_module_repository: Projektarchiv
969 project_module_repository: Projektarchiv
970 project_module_time_tracking: Zeiterfassung
970 project_module_time_tracking: Zeiterfassung
971 project_module_wiki: Wiki
971 project_module_wiki: Wiki
972 project_status_active: aktiv
972 project_status_active: aktiv
973 project_status_archived: archiviert
973 project_status_archived: archiviert
974 project_status_closed: geschlossen
974 project_status_closed: geschlossen
975
975
976 setting_activity_days_default: Anzahl Tage pro Seite der Projekt-AktivitΓ€t
976 setting_activity_days_default: Anzahl Tage pro Seite der Projekt-AktivitΓ€t
977 setting_app_subtitle: Applikations-Untertitel
977 setting_app_subtitle: Applikations-Untertitel
978 setting_app_title: Applikations-Titel
978 setting_app_title: Applikations-Titel
979 setting_attachment_max_size: Max. Dateigrâße
979 setting_attachment_max_size: Max. Dateigrâße
980 setting_autofetch_changesets: Changesets automatisch abrufen
980 setting_autofetch_changesets: Changesets automatisch abrufen
981 setting_autologin: Automatische Anmeldung lΓ€uft ab nach
981 setting_autologin: Automatische Anmeldung lΓ€uft ab nach
982 setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden
982 setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden
983 setting_cache_formatted_text: Formatierten Text im Cache speichern
983 setting_cache_formatted_text: Formatierten Text im Cache speichern
984 setting_commit_cross_project_ref: Erlauben auf Tickets aller anderen Projekte zu referenzieren
984 setting_commit_cross_project_ref: Erlauben auf Tickets aller anderen Projekte zu referenzieren
985 setting_commit_fix_keywords: SchlΓΌsselwΓΆrter (Status)
985 setting_commit_fix_keywords: SchlΓΌsselwΓΆrter (Status)
986 setting_commit_logtime_activity_id: AktivitΓ€t fΓΌr die Zeiterfassung
986 setting_commit_logtime_activity_id: AktivitΓ€t fΓΌr die Zeiterfassung
987 setting_commit_logtime_enabled: Aktiviere Zeitlogging
987 setting_commit_logtime_enabled: Aktiviere Zeitlogging
988 setting_commit_ref_keywords: SchlΓΌsselwΓΆrter (Beziehungen)
988 setting_commit_ref_keywords: SchlΓΌsselwΓΆrter (Beziehungen)
989 setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben
989 setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben
990 setting_cross_project_subtasks: ProjektΓΌbergreifende Unteraufgaben erlauben
990 setting_cross_project_subtasks: ProjektΓΌbergreifende Unteraufgaben erlauben
991 setting_date_format: Datumsformat
991 setting_date_format: Datumsformat
992 setting_default_issue_start_date_to_creation_date: Aktuelles Datum als Beginn fΓΌr neue Tickets verwenden
992 setting_default_issue_start_date_to_creation_date: Aktuelles Datum als Beginn fΓΌr neue Tickets verwenden
993 setting_default_language: Standardsprache
993 setting_default_language: Standardsprache
994 setting_default_notification_option: Standard Benachrichtigungsoptionen
994 setting_default_notification_option: Standard Benachrichtigungsoptionen
995 setting_default_projects_modules: StandardmÀßig aktivierte Module für neue Projekte
995 setting_default_projects_modules: StandardmÀßig aktivierte Module für neue Projekte
996 setting_default_projects_public: Neue Projekte sind standardmÀßig âffentlich
996 setting_default_projects_public: Neue Projekte sind standardmÀßig âffentlich
997 setting_default_projects_tracker_ids: StandardmÀßig aktivierte Tracker für neue Projekte
997 setting_default_projects_tracker_ids: StandardmÀßig aktivierte Tracker für neue Projekte
998 setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen
998 setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen
999 setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen
999 setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen
1000 setting_emails_footer: E-Mail-Fußzeile
1000 setting_emails_footer: E-Mail-Fußzeile
1001 setting_emails_header: E-Mail-Kopfzeile
1001 setting_emails_header: E-Mail-Kopfzeile
1002 setting_enabled_scm: Aktivierte Versionskontrollsysteme
1002 setting_enabled_scm: Aktivierte Versionskontrollsysteme
1003 setting_feeds_limit: Max. Anzahl EintrΓ€ge pro Atom-Feed
1003 setting_feeds_limit: Max. Anzahl EintrΓ€ge pro Atom-Feed
1004 setting_file_max_size_displayed: Maximale Grâße inline angezeigter Textdateien
1004 setting_file_max_size_displayed: Maximale Grâße inline angezeigter Textdateien
1005 setting_force_default_language_for_anonymous: Standardsprache fΓΌr anonyme Benutzer erzwingen
1005 setting_force_default_language_for_anonymous: Standardsprache fΓΌr anonyme Benutzer erzwingen
1006 setting_force_default_language_for_loggedin: Standardsprache fΓΌr angemeldete Benutzer erzwingen
1006 setting_force_default_language_for_loggedin: Standardsprache fΓΌr angemeldete Benutzer erzwingen
1007 setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden
1007 setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden
1008 setting_gravatar_default: Standard-Gravatar-Bild
1008 setting_gravatar_default: Standard-Gravatar-Bild
1009 setting_gravatar_enabled: Gravatar-Benutzerbilder benutzen
1009 setting_gravatar_enabled: Gravatar-Benutzerbilder benutzen
1010 setting_host_name: Hostname
1010 setting_host_name: Hostname
1011 setting_issue_done_ratio: Berechne den Ticket-Fortschritt mittels
1011 setting_issue_done_ratio: Berechne den Ticket-Fortschritt mittels
1012 setting_issue_done_ratio_issue_field: Ticket-Feld %-erledigt
1012 setting_issue_done_ratio_issue_field: Ticket-Feld %-erledigt
1013 setting_issue_done_ratio_issue_status: Ticket-Status
1013 setting_issue_done_ratio_issue_status: Ticket-Status
1014 setting_issue_group_assignment: Ticketzuweisung an Gruppen erlauben
1014 setting_issue_group_assignment: Ticketzuweisung an Gruppen erlauben
1015 setting_issue_list_default_columns: Standard-Spalten in der Ticket-Auflistung
1015 setting_issue_list_default_columns: Standard-Spalten in der Ticket-Auflistung
1016 setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export
1016 setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export
1017 setting_jsonp_enabled: JSONP UnterstΓΌtzung aktivieren
1017 setting_jsonp_enabled: JSONP UnterstΓΌtzung aktivieren
1018 setting_link_copied_issue: Tickets beim kopieren verlinken
1018 setting_link_copied_issue: Tickets beim kopieren verlinken
1019 setting_login_required: Authentifizierung erforderlich
1019 setting_login_required: Authentifizierung erforderlich
1020 setting_mail_from: E-Mail-Absender
1020 setting_mail_from: E-Mail-Absender
1021 setting_mail_handler_api_enabled: Abruf eingehender E-Mails aktivieren
1021 setting_mail_handler_api_enabled: Abruf eingehender E-Mails aktivieren
1022 setting_mail_handler_api_key: API-SchlΓΌssel
1022 setting_mail_handler_api_key: API-SchlΓΌssel
1023 setting_mail_handler_body_delimiters: "Schneide E-Mails nach einer dieser Zeilen ab"
1023 setting_mail_handler_body_delimiters: "Schneide E-Mails nach einer dieser Zeilen ab"
1024 setting_mail_handler_excluded_filenames: AnhÀnge nach Namen ausschließen
1024 setting_mail_handler_excluded_filenames: AnhÀnge nach Namen ausschließen
1025 setting_new_project_user_role_id: Rolle, die einem Nicht-Administrator zugeordnet wird, der ein Projekt erstellt
1025 setting_new_project_user_role_id: Rolle, die einem Nicht-Administrator zugeordnet wird, der ein Projekt erstellt
1026 setting_non_working_week_days: Arbeitsfreie Tage
1026 setting_non_working_week_days: Arbeitsfreie Tage
1027 setting_openid: Erlaube OpenID-Anmeldung und -Registrierung
1027 setting_openid: Erlaube OpenID-Anmeldung und -Registrierung
1028 setting_password_min_length: MindestlΓ€nge des Kennworts
1028 setting_password_min_length: MindestlΓ€nge des Kennworts
1029 setting_password_max_age: Erzwinge Passwortwechsel nach
1029 setting_per_page_options: Objekte pro Seite
1030 setting_per_page_options: Objekte pro Seite
1030 setting_plain_text_mail: Nur reinen Text (kein HTML) senden
1031 setting_plain_text_mail: Nur reinen Text (kein HTML) senden
1031 setting_protocol: Protokoll
1032 setting_protocol: Protokoll
1032 setting_repositories_encodings: Enkodierung von AnhΓ€ngen und Repositories
1033 setting_repositories_encodings: Enkodierung von AnhΓ€ngen und Repositories
1033 setting_repository_log_display_limit: Maximale Anzahl anzuzeigender Revisionen in der Historie einer Datei
1034 setting_repository_log_display_limit: Maximale Anzahl anzuzeigender Revisionen in der Historie einer Datei
1034 setting_rest_api_enabled: REST-Schnittstelle aktivieren
1035 setting_rest_api_enabled: REST-Schnittstelle aktivieren
1035 setting_self_registration: Registrierung ermΓΆglichen
1036 setting_self_registration: Registrierung ermΓΆglichen
1036 setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren
1037 setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren
1037 setting_session_lifetime: LΓ€ngste Dauer einer Sitzung
1038 setting_session_lifetime: LΓ€ngste Dauer einer Sitzung
1038 setting_session_timeout: ZeitΓΌberschreitung bei InaktivitΓ€t
1039 setting_session_timeout: ZeitΓΌberschreitung bei InaktivitΓ€t
1039 setting_start_of_week: Wochenanfang
1040 setting_start_of_week: Wochenanfang
1040 setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen
1041 setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen
1041 setting_text_formatting: Textformatierung
1042 setting_text_formatting: Textformatierung
1042 setting_thumbnails_enabled: Vorschaubilder von DateianhΓ€ngen anzeigen
1043 setting_thumbnails_enabled: Vorschaubilder von DateianhΓ€ngen anzeigen
1043 setting_thumbnails_size: Grâße der Vorschaubilder (in Pixel)
1044 setting_thumbnails_size: Grâße der Vorschaubilder (in Pixel)
1044 setting_time_format: Zeitformat
1045 setting_time_format: Zeitformat
1045 setting_unsubscribe: Erlaubt Benutzern das eigene Benutzerkonto zu lΓΆschen
1046 setting_unsubscribe: Erlaubt Benutzern das eigene Benutzerkonto zu lΓΆschen
1046 setting_user_format: Benutzer-Anzeigeformat
1047 setting_user_format: Benutzer-Anzeigeformat
1047 setting_welcome_text: Willkommenstext
1048 setting_welcome_text: Willkommenstext
1048 setting_wiki_compression: Wiki-Historie komprimieren
1049 setting_wiki_compression: Wiki-Historie komprimieren
1049
1050
1050 status_active: aktiv
1051 status_active: aktiv
1051 status_locked: gesperrt
1052 status_locked: gesperrt
1052 status_registered: nicht aktivierte
1053 status_registered: nicht aktivierte
1053
1054
1054 text_account_destroy_confirmation: "MΓΆchten Sie wirklich fortfahren?\nIhr Benutzerkonto wird fΓΌr immer gelΓΆscht und kann nicht wiederhergestellt werden."
1055 text_account_destroy_confirmation: "MΓΆchten Sie wirklich fortfahren?\nIhr Benutzerkonto wird fΓΌr immer gelΓΆscht und kann nicht wiederhergestellt werden."
1055 text_are_you_sure: Sind Sie sicher?
1056 text_are_you_sure: Sind Sie sicher?
1056 text_assign_time_entries_to_project: Gebuchte AufwΓ€nde dem Projekt zuweisen
1057 text_assign_time_entries_to_project: Gebuchte AufwΓ€nde dem Projekt zuweisen
1057 text_caracters_maximum: "Max. %{count} Zeichen."
1058 text_caracters_maximum: "Max. %{count} Zeichen."
1058 text_caracters_minimum: "Muss mindestens %{count} Zeichen lang sein."
1059 text_caracters_minimum: "Muss mindestens %{count} Zeichen lang sein."
1059 text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt).
1060 text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt).
1060 text_convert_available: ImageMagick Konvertierung verfΓΌgbar (optional)
1061 text_convert_available: ImageMagick Konvertierung verfΓΌgbar (optional)
1061 text_custom_field_possible_values_info: 'Eine Zeile pro Wert'
1062 text_custom_field_possible_values_info: 'Eine Zeile pro Wert'
1062 text_default_administrator_account_changed: Administrator-Kennwort geΓ€ndert
1063 text_default_administrator_account_changed: Administrator-Kennwort geΓ€ndert
1063 text_destroy_time_entries: Gebuchte AufwΓ€nde lΓΆschen
1064 text_destroy_time_entries: Gebuchte AufwΓ€nde lΓΆschen
1064 text_destroy_time_entries_question: Es wurden bereits %{hours} Stunden auf dieses Ticket gebucht. Was soll mit den AufwΓ€nden geschehen?
1065 text_destroy_time_entries_question: Es wurden bereits %{hours} Stunden auf dieses Ticket gebucht. Was soll mit den AufwΓ€nden geschehen?
1065 text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen ΓΌberschreitet.'
1066 text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen ΓΌberschreitet.'
1066 text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen fΓΌr Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu."
1067 text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen fΓΌr Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu."
1067 text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
1068 text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
1068 text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet."
1069 text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet."
1069 text_file_repository_writable: Verzeichnis fΓΌr Dateien beschreibbar
1070 text_file_repository_writable: Verzeichnis fΓΌr Dateien beschreibbar
1070 text_git_repository_note: Repository steht fΓΌr sich alleine (bare) und liegt lokal (z.B. /gitrepo, c:\gitrepo)
1071 text_git_repository_note: Repository steht fΓΌr sich alleine (bare) und liegt lokal (z.B. /gitrepo, c:\gitrepo)
1071 text_issue_added: "Ticket %{id} wurde erstellt von %{author}."
1072 text_issue_added: "Ticket %{id} wurde erstellt von %{author}."
1072 text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen
1073 text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen
1073 text_issue_category_destroy_question: "Einige Tickets (%{count}) sind dieser Kategorie zugeodnet. Was mΓΆchten Sie tun?"
1074 text_issue_category_destroy_question: "Einige Tickets (%{count}) sind dieser Kategorie zugeodnet. Was mΓΆchten Sie tun?"
1074 text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen
1075 text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen
1075 text_issue_conflict_resolution_add_notes: Meine Γ„nderungen ΓΌbernehmen und alle anderen Γ„nderungen verwerfen
1076 text_issue_conflict_resolution_add_notes: Meine Γ„nderungen ΓΌbernehmen und alle anderen Γ„nderungen verwerfen
1076 text_issue_conflict_resolution_cancel: Meine Γ„nderungen verwerfen und %{link} neu anzeigen
1077 text_issue_conflict_resolution_cancel: Meine Γ„nderungen verwerfen und %{link} neu anzeigen
1077 text_issue_conflict_resolution_overwrite: Meine Γ„nderungen trotzdem ΓΌbernehmen (vorherige Notizen bleiben erhalten aber manche kΓΆnnen ΓΌberschrieben werden)
1078 text_issue_conflict_resolution_overwrite: Meine Γ„nderungen trotzdem ΓΌbernehmen (vorherige Notizen bleiben erhalten aber manche kΓΆnnen ΓΌberschrieben werden)
1078 text_issue_updated: "Ticket %{id} wurde aktualisiert von %{author}."
1079 text_issue_updated: "Ticket %{id} wurde aktualisiert von %{author}."
1079 text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewΓ€hlten Tickets lΓΆschen mΓΆchten?'
1080 text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewΓ€hlten Tickets lΓΆschen mΓΆchten?'
1080 text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n lΓΆschen.
1081 text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n lΓΆschen.
1081 text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen
1082 text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Log-Meldungen
1082 text_journal_added: "%{label} %{value} wurde hinzugefΓΌgt"
1083 text_journal_added: "%{label} %{value} wurde hinzugefΓΌgt"
1083 text_journal_changed: "%{label} wurde von %{old} zu %{new} geΓ€ndert"
1084 text_journal_changed: "%{label} wurde von %{old} zu %{new} geΓ€ndert"
1084 text_journal_changed_no_detail: "%{label} aktualisiert"
1085 text_journal_changed_no_detail: "%{label} aktualisiert"
1085 text_journal_deleted: "%{label} %{old} wurde gelΓΆscht"
1086 text_journal_deleted: "%{label} %{old} wurde gelΓΆscht"
1086 text_journal_set_to: "%{label} wurde auf %{value} gesetzt"
1087 text_journal_set_to: "%{label} wurde auf %{value} gesetzt"
1087 text_length_between: "LΓ€nge zwischen %{min} und %{max} Zeichen."
1088 text_length_between: "LΓ€nge zwischen %{min} und %{max} Zeichen."
1088 text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert).
1089 text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert).
1089 text_load_default_configuration: Standard-Konfiguration laden
1090 text_load_default_configuration: Standard-Konfiguration laden
1090 text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo)
1091 text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo)
1091 text_min_max_length_info: 0 heißt keine BeschrÀnkung
1092 text_min_max_length_info: 0 heißt keine BeschrÀnkung
1092 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 diese abΓ€ndern."
1093 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 diese abΓ€ndern."
1093 text_own_membership_delete_confirmation: "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.\nSind Sie sicher, dass Sie dies tun mΓΆchten?"
1094 text_own_membership_delete_confirmation: "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.\nSind Sie sicher, dass Sie dies tun mΓΆchten?"
1094 text_plugin_assets_writable: Verzeichnis fΓΌr Plugin-Assets beschreibbar
1095 text_plugin_assets_writable: Verzeichnis fΓΌr Plugin-Assets beschreibbar
1095 text_project_closed: Dieses Projekt ist geschlossen und kann nicht bearbeitet werden.
1096 text_project_closed: Dieses Projekt ist geschlossen und kann nicht bearbeitet werden.
1096 text_project_destroy_confirmation: Sind Sie sicher, dass Sie das Projekt lΓΆschen wollen?
1097 text_project_destroy_confirmation: Sind Sie sicher, dass Sie das Projekt lΓΆschen wollen?
1097 text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt, muss mit einem Kleinbuchstaben beginnen.<br />Einmal gespeichert, kann die Kennung nicht mehr geΓ€ndert werden.'
1098 text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt, muss mit einem Kleinbuchstaben beginnen.<br />Einmal gespeichert, kann die Kennung nicht mehr geΓ€ndert werden.'
1098 text_reassign_time_entries: 'Gebuchte AufwΓ€nde diesem Ticket zuweisen:'
1099 text_reassign_time_entries: 'Gebuchte AufwΓ€nde diesem Ticket zuweisen:'
1099 text_regexp_info: z. B. ^[A-Z0-9]+$
1100 text_regexp_info: z. B. ^[A-Z0-9]+$
1100 text_repository_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.<br />Einmal gespeichert, kann die Kennung nicht mehr geΓ€ndert werden.'
1101 text_repository_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.<br />Einmal gespeichert, kann die Kennung nicht mehr geΓ€ndert werden.'
1101 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."
1102 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."
1102 text_rmagick_available: RMagick verfΓΌgbar (optional)
1103 text_rmagick_available: RMagick verfΓΌgbar (optional)
1103 text_scm_command: Kommando
1104 text_scm_command: Kommando
1104 text_scm_command_not_available: SCM-Kommando ist nicht verfΓΌgbar. Bitte prΓΌfen Sie die Einstellungen im Administrationspanel.
1105 text_scm_command_not_available: SCM-Kommando ist nicht verfΓΌgbar. Bitte prΓΌfen Sie die Einstellungen im Administrationspanel.
1105 text_scm_command_version: Version
1106 text_scm_command_version: Version
1106 text_scm_config: Die SCM-Kommandos kânnen in der in config/configuration.yml konfiguriert werden. Redmine muss anschließend neu gestartet werden.
1107 text_scm_config: Die SCM-Kommandos kânnen in der in config/configuration.yml konfiguriert werden. Redmine muss anschließend neu gestartet werden.
1107 text_scm_path_encoding_note: "Standard: UTF-8"
1108 text_scm_path_encoding_note: "Standard: UTF-8"
1108 text_select_mail_notifications: Bitte wΓ€hlen Sie die Aktionen aus, fΓΌr die eine Mailbenachrichtigung gesendet werden soll.
1109 text_select_mail_notifications: Bitte wΓ€hlen Sie die Aktionen aus, fΓΌr die eine Mailbenachrichtigung gesendet werden soll.
1109 text_select_project_modules: 'Bitte wΓ€hlen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:'
1110 text_select_project_modules: 'Bitte wΓ€hlen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:'
1110 text_session_expiration_settings: "Achtung: Γ„nderungen kΓΆnnen aktuelle Sitzungen beenden, Ihre eingeschlossen!"
1111 text_session_expiration_settings: "Achtung: Γ„nderungen kΓΆnnen aktuelle Sitzungen beenden, Ihre eingeschlossen!"
1111 text_status_changed_by_changeset: "Status geΓ€ndert durch Changeset %{value}."
1112 text_status_changed_by_changeset: "Status geΓ€ndert durch Changeset %{value}."
1112 text_subprojects_destroy_warning: "Dessen Unterprojekte (%{value}) werden ebenfalls gelΓΆscht."
1113 text_subprojects_destroy_warning: "Dessen Unterprojekte (%{value}) werden ebenfalls gelΓΆscht."
1113 text_subversion_repository_note: 'Beispiele: file:///, http://, https://, svn://, svn+[tunnelscheme]://'
1114 text_subversion_repository_note: 'Beispiele: file:///, http://, https://, svn://, svn+[tunnelscheme]://'
1114 text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewΓ€hlten ZeitaufwΓ€nde lΓΆschen mΓΆchten?
1115 text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewΓ€hlten ZeitaufwΓ€nde lΓΆschen mΓΆchten?
1115 text_time_logged_by_changeset: Angewendet in Changeset %{value}.
1116 text_time_logged_by_changeset: Angewendet in Changeset %{value}.
1116 text_tip_issue_begin_day: Aufgabe, die an diesem Tag beginnt
1117 text_tip_issue_begin_day: Aufgabe, die an diesem Tag beginnt
1117 text_tip_issue_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet
1118 text_tip_issue_begin_end_day: Aufgabe, die an diesem Tag beginnt und endet
1118 text_tip_issue_end_day: Aufgabe, die an diesem Tag endet
1119 text_tip_issue_end_day: Aufgabe, die an diesem Tag endet
1119 text_tracker_no_workflow: Kein Workflow fΓΌr diesen Tracker definiert.
1120 text_tracker_no_workflow: Kein Workflow fΓΌr diesen Tracker definiert.
1120 text_turning_multiple_off: Wenn Sie die Mehrfachauswahl deaktivieren, werden Felder mit Mehrfachauswahl bereinigt.
1121 text_turning_multiple_off: Wenn Sie die Mehrfachauswahl deaktivieren, werden Felder mit Mehrfachauswahl bereinigt.
1121 Dadurch wird sichergestellt, dass lediglich ein Wert pro Feld ausgewΓ€hlt ist.
1122 Dadurch wird sichergestellt, dass lediglich ein Wert pro Feld ausgewΓ€hlt ist.
1122 text_unallowed_characters: Nicht erlaubte Zeichen
1123 text_unallowed_characters: Nicht erlaubte Zeichen
1123 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)."
1124 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)."
1124 text_user_wrote: "%{value} schrieb:"
1125 text_user_wrote: "%{value} schrieb:"
1125 text_warn_on_leaving_unsaved: Die aktuellen Γ„nderungen gehen verloren, wenn Sie diese Seite verlassen.
1126 text_warn_on_leaving_unsaved: Die aktuellen Γ„nderungen gehen verloren, wenn Sie diese Seite verlassen.
1126 text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sΓ€mtlichem Inhalt lΓΆschen mΓΆchten?
1127 text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sΓ€mtlichem Inhalt lΓΆschen mΓΆchten?
1127 text_wiki_page_destroy_children: LΓΆsche alle Unterseiten
1128 text_wiki_page_destroy_children: LΓΆsche alle Unterseiten
1128 text_wiki_page_destroy_question: "Diese Seite hat %{descendants} Unterseite(n). Was mΓΆchten Sie tun?"
1129 text_wiki_page_destroy_question: "Diese Seite hat %{descendants} Unterseite(n). Was mΓΆchten Sie tun?"
1129 text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene
1130 text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene
1130 text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu
1131 text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu
1131 text_workflow_edit: Workflow zum Bearbeiten auswΓ€hlen
1132 text_workflow_edit: Workflow zum Bearbeiten auswΓ€hlen
1132 text_zoom_in: Ansicht vergrâßern
1133 text_zoom_in: Ansicht vergrâßern
1133 text_zoom_out: Ansicht verkleinern
1134 text_zoom_out: Ansicht verkleinern
1134
1135
1135 version_status_closed: abgeschlossen
1136 version_status_closed: abgeschlossen
1136 version_status_locked: gesperrt
1137 version_status_locked: gesperrt
1137 version_status_open: offen
1138 version_status_open: offen
1138
1139
1139 warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden."
1140 warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden."
1140 label_search_attachments_yes: Namen und Beschreibungen von AnhΓ€ngen durchsuchen
1141 label_search_attachments_yes: Namen und Beschreibungen von AnhΓ€ngen durchsuchen
1141 label_search_attachments_no: Keine AnhΓ€nge suchen
1142 label_search_attachments_no: Keine AnhΓ€nge suchen
1142 label_search_attachments_only: Nur AnhΓ€nge suchen
1143 label_search_attachments_only: Nur AnhΓ€nge suchen
1143 label_search_open_issues_only: Nur offene Tickets
1144 label_search_open_issues_only: Nur offene Tickets
1144 field_address: E-Mail
1145 field_address: E-Mail
1145 setting_max_additional_emails: Maximale Anzahl zusΓ€tzlicher E-Mailadressen
1146 setting_max_additional_emails: Maximale Anzahl zusΓ€tzlicher E-Mailadressen
1146 label_email_address_plural: E-Mails
1147 label_email_address_plural: E-Mails
1147 label_email_address_add: E-Mailadresse hinzufΓΌgen
1148 label_email_address_add: E-Mailadresse hinzufΓΌgen
1148 label_enable_notifications: Benachrichtigungen aktivieren
1149 label_enable_notifications: Benachrichtigungen aktivieren
1149 label_disable_notifications: Benachrichtigungen deaktivieren
1150 label_disable_notifications: Benachrichtigungen deaktivieren
1150 setting_search_results_per_page: Suchergebnisse pro Seite
1151 setting_search_results_per_page: Suchergebnisse pro Seite
1151 label_blank_value: leer
1152 label_blank_value: leer
1152 permission_copy_issues: Tickets kopieren
1153 permission_copy_issues: Tickets kopieren
@@ -1,1133 +1,1135
1 en:
1 en:
2 # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
2 # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
3 direction: ltr
3 direction: ltr
4 date:
4 date:
5 formats:
5 formats:
6 # Use the strftime parameters for formats.
6 # Use the strftime parameters for formats.
7 # When no format has been given, it uses default.
7 # When no format has been given, it uses default.
8 # You can provide other formats here if you like!
8 # You can provide other formats here if you like!
9 default: "%m/%d/%Y"
9 default: "%m/%d/%Y"
10 short: "%b %d"
10 short: "%b %d"
11 long: "%B %d, %Y"
11 long: "%B %d, %Y"
12
12
13 day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
13 day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
14 abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
14 abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
15
15
16 # Don't forget the nil at the beginning; there's no such thing as a 0th month
16 # Don't forget the nil at the beginning; there's no such thing as a 0th month
17 month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
17 month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
18 abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
18 abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
19 # Used in date_select and datime_select.
19 # Used in date_select and datime_select.
20 order:
20 order:
21 - :year
21 - :year
22 - :month
22 - :month
23 - :day
23 - :day
24
24
25 time:
25 time:
26 formats:
26 formats:
27 default: "%m/%d/%Y %I:%M %p"
27 default: "%m/%d/%Y %I:%M %p"
28 time: "%I:%M %p"
28 time: "%I:%M %p"
29 short: "%d %b %H:%M"
29 short: "%d %b %H:%M"
30 long: "%B %d, %Y %H:%M"
30 long: "%B %d, %Y %H:%M"
31 am: "am"
31 am: "am"
32 pm: "pm"
32 pm: "pm"
33
33
34 datetime:
34 datetime:
35 distance_in_words:
35 distance_in_words:
36 half_a_minute: "half a minute"
36 half_a_minute: "half a minute"
37 less_than_x_seconds:
37 less_than_x_seconds:
38 one: "less than 1 second"
38 one: "less than 1 second"
39 other: "less than %{count} seconds"
39 other: "less than %{count} seconds"
40 x_seconds:
40 x_seconds:
41 one: "1 second"
41 one: "1 second"
42 other: "%{count} seconds"
42 other: "%{count} seconds"
43 less_than_x_minutes:
43 less_than_x_minutes:
44 one: "less than a minute"
44 one: "less than a minute"
45 other: "less than %{count} minutes"
45 other: "less than %{count} minutes"
46 x_minutes:
46 x_minutes:
47 one: "1 minute"
47 one: "1 minute"
48 other: "%{count} minutes"
48 other: "%{count} minutes"
49 about_x_hours:
49 about_x_hours:
50 one: "about 1 hour"
50 one: "about 1 hour"
51 other: "about %{count} hours"
51 other: "about %{count} hours"
52 x_hours:
52 x_hours:
53 one: "1 hour"
53 one: "1 hour"
54 other: "%{count} hours"
54 other: "%{count} hours"
55 x_days:
55 x_days:
56 one: "1 day"
56 one: "1 day"
57 other: "%{count} days"
57 other: "%{count} days"
58 about_x_months:
58 about_x_months:
59 one: "about 1 month"
59 one: "about 1 month"
60 other: "about %{count} months"
60 other: "about %{count} months"
61 x_months:
61 x_months:
62 one: "1 month"
62 one: "1 month"
63 other: "%{count} months"
63 other: "%{count} months"
64 about_x_years:
64 about_x_years:
65 one: "about 1 year"
65 one: "about 1 year"
66 other: "about %{count} years"
66 other: "about %{count} years"
67 over_x_years:
67 over_x_years:
68 one: "over 1 year"
68 one: "over 1 year"
69 other: "over %{count} years"
69 other: "over %{count} years"
70 almost_x_years:
70 almost_x_years:
71 one: "almost 1 year"
71 one: "almost 1 year"
72 other: "almost %{count} years"
72 other: "almost %{count} years"
73
73
74 number:
74 number:
75 format:
75 format:
76 separator: "."
76 separator: "."
77 delimiter: ""
77 delimiter: ""
78 precision: 3
78 precision: 3
79
79
80 human:
80 human:
81 format:
81 format:
82 delimiter: ""
82 delimiter: ""
83 precision: 3
83 precision: 3
84 storage_units:
84 storage_units:
85 format: "%n %u"
85 format: "%n %u"
86 units:
86 units:
87 byte:
87 byte:
88 one: "Byte"
88 one: "Byte"
89 other: "Bytes"
89 other: "Bytes"
90 kb: "KB"
90 kb: "KB"
91 mb: "MB"
91 mb: "MB"
92 gb: "GB"
92 gb: "GB"
93 tb: "TB"
93 tb: "TB"
94
94
95 # Used in array.to_sentence.
95 # Used in array.to_sentence.
96 support:
96 support:
97 array:
97 array:
98 sentence_connector: "and"
98 sentence_connector: "and"
99 skip_last_comma: false
99 skip_last_comma: false
100
100
101 activerecord:
101 activerecord:
102 errors:
102 errors:
103 template:
103 template:
104 header:
104 header:
105 one: "1 error prohibited this %{model} from being saved"
105 one: "1 error prohibited this %{model} from being saved"
106 other: "%{count} errors prohibited this %{model} from being saved"
106 other: "%{count} errors prohibited this %{model} from being saved"
107 messages:
107 messages:
108 inclusion: "is not included in the list"
108 inclusion: "is not included in the list"
109 exclusion: "is reserved"
109 exclusion: "is reserved"
110 invalid: "is invalid"
110 invalid: "is invalid"
111 confirmation: "doesn't match confirmation"
111 confirmation: "doesn't match confirmation"
112 accepted: "must be accepted"
112 accepted: "must be accepted"
113 empty: "cannot be empty"
113 empty: "cannot be empty"
114 blank: "cannot be blank"
114 blank: "cannot be blank"
115 too_long: "is too long (maximum is %{count} characters)"
115 too_long: "is too long (maximum is %{count} characters)"
116 too_short: "is too short (minimum is %{count} characters)"
116 too_short: "is too short (minimum is %{count} characters)"
117 wrong_length: "is the wrong length (should be %{count} characters)"
117 wrong_length: "is the wrong length (should be %{count} characters)"
118 taken: "has already been taken"
118 taken: "has already been taken"
119 not_a_number: "is not a number"
119 not_a_number: "is not a number"
120 not_a_date: "is not a valid date"
120 not_a_date: "is not a valid date"
121 greater_than: "must be greater than %{count}"
121 greater_than: "must be greater than %{count}"
122 greater_than_or_equal_to: "must be greater than or equal to %{count}"
122 greater_than_or_equal_to: "must be greater than or equal to %{count}"
123 equal_to: "must be equal to %{count}"
123 equal_to: "must be equal to %{count}"
124 less_than: "must be less than %{count}"
124 less_than: "must be less than %{count}"
125 less_than_or_equal_to: "must be less than or equal to %{count}"
125 less_than_or_equal_to: "must be less than or equal to %{count}"
126 odd: "must be odd"
126 odd: "must be odd"
127 even: "must be even"
127 even: "must be even"
128 greater_than_start_date: "must be greater than start date"
128 greater_than_start_date: "must be greater than start date"
129 not_same_project: "doesn't belong to the same project"
129 not_same_project: "doesn't belong to the same project"
130 circular_dependency: "This relation would create a circular dependency"
130 circular_dependency: "This relation would create a circular dependency"
131 cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks"
131 cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks"
132 earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues"
132 earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues"
133
133
134 actionview_instancetag_blank_option: Please select
134 actionview_instancetag_blank_option: Please select
135
135
136 general_text_No: 'No'
136 general_text_No: 'No'
137 general_text_Yes: 'Yes'
137 general_text_Yes: 'Yes'
138 general_text_no: 'no'
138 general_text_no: 'no'
139 general_text_yes: 'yes'
139 general_text_yes: 'yes'
140 general_lang_name: 'English'
140 general_lang_name: 'English'
141 general_csv_separator: ','
141 general_csv_separator: ','
142 general_csv_decimal_separator: '.'
142 general_csv_decimal_separator: '.'
143 general_csv_encoding: ISO-8859-1
143 general_csv_encoding: ISO-8859-1
144 general_pdf_fontname: freesans
144 general_pdf_fontname: freesans
145 general_first_day_of_week: '7'
145 general_first_day_of_week: '7'
146
146
147 notice_account_updated: Account was successfully updated.
147 notice_account_updated: Account was successfully updated.
148 notice_account_invalid_creditentials: Invalid user or password
148 notice_account_invalid_creditentials: Invalid user or password
149 notice_account_password_updated: Password was successfully updated.
149 notice_account_password_updated: Password was successfully updated.
150 notice_account_wrong_password: Wrong password
150 notice_account_wrong_password: Wrong password
151 notice_account_register_done: Account was successfully created. An email containing the instructions to activate your account was sent to %{email}.
151 notice_account_register_done: Account was successfully created. An email containing the instructions to activate your account was sent to %{email}.
152 notice_account_unknown_email: Unknown user.
152 notice_account_unknown_email: Unknown user.
153 notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please <a href="%{url}">click this link</a>.
153 notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please <a href="%{url}">click this link</a>.
154 notice_account_locked: Your account is locked.
154 notice_account_locked: Your account is locked.
155 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
155 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
156 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
156 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
157 notice_account_activated: Your account has been activated. You can now log in.
157 notice_account_activated: Your account has been activated. You can now log in.
158 notice_successful_create: Successful creation.
158 notice_successful_create: Successful creation.
159 notice_successful_update: Successful update.
159 notice_successful_update: Successful update.
160 notice_successful_delete: Successful deletion.
160 notice_successful_delete: Successful deletion.
161 notice_successful_connection: Successful connection.
161 notice_successful_connection: Successful connection.
162 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
162 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
163 notice_locking_conflict: Data has been updated by another user.
163 notice_locking_conflict: Data has been updated by another user.
164 notice_not_authorized: You are not authorized to access this page.
164 notice_not_authorized: You are not authorized to access this page.
165 notice_not_authorized_archived_project: The project you're trying to access has been archived.
165 notice_not_authorized_archived_project: The project you're trying to access has been archived.
166 notice_email_sent: "An email was sent to %{value}"
166 notice_email_sent: "An email was sent to %{value}"
167 notice_email_error: "An error occurred while sending mail (%{value})"
167 notice_email_error: "An error occurred while sending mail (%{value})"
168 notice_feeds_access_key_reseted: Your Atom access key was reset.
168 notice_feeds_access_key_reseted: Your Atom access key was reset.
169 notice_api_access_key_reseted: Your API access key was reset.
169 notice_api_access_key_reseted: Your API access key was reset.
170 notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}."
170 notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}."
171 notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
171 notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
172 notice_failed_to_save_members: "Failed to save member(s): %{errors}."
172 notice_failed_to_save_members: "Failed to save member(s): %{errors}."
173 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
173 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
174 notice_account_pending: "Your account was created and is now pending administrator approval."
174 notice_account_pending: "Your account was created and is now pending administrator approval."
175 notice_default_data_loaded: Default configuration successfully loaded.
175 notice_default_data_loaded: Default configuration successfully loaded.
176 notice_unable_delete_version: Unable to delete version.
176 notice_unable_delete_version: Unable to delete version.
177 notice_unable_delete_time_entry: Unable to delete time log entry.
177 notice_unable_delete_time_entry: Unable to delete time log entry.
178 notice_issue_done_ratios_updated: Issue done ratios updated.
178 notice_issue_done_ratios_updated: Issue done ratios updated.
179 notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})"
179 notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})"
180 notice_issue_successful_create: "Issue %{id} created."
180 notice_issue_successful_create: "Issue %{id} created."
181 notice_issue_update_conflict: "The issue has been updated by an other user while you were editing it."
181 notice_issue_update_conflict: "The issue has been updated by an other user while you were editing it."
182 notice_account_deleted: "Your account has been permanently deleted."
182 notice_account_deleted: "Your account has been permanently deleted."
183 notice_user_successful_create: "User %{id} created."
183 notice_user_successful_create: "User %{id} created."
184 notice_new_password_must_be_different: The new password must be different from the current password
184 notice_new_password_must_be_different: The new password must be different from the current password
185
185
186 error_can_t_load_default_data: "Default configuration could not be loaded: %{value}"
186 error_can_t_load_default_data: "Default configuration could not be loaded: %{value}"
187 error_scm_not_found: "The entry or revision was not found in the repository."
187 error_scm_not_found: "The entry or revision was not found in the repository."
188 error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
188 error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
189 error_scm_annotate: "The entry does not exist or cannot be annotated."
189 error_scm_annotate: "The entry does not exist or cannot be annotated."
190 error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size."
190 error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size."
191 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
191 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
192 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
192 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
193 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
193 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
194 error_can_not_delete_custom_field: Unable to delete custom field
194 error_can_not_delete_custom_field: Unable to delete custom field
195 error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted."
195 error_can_not_delete_tracker: "This tracker contains issues and cannot be deleted."
196 error_can_not_remove_role: "This role is in use and cannot be deleted."
196 error_can_not_remove_role: "This role is in use and cannot be deleted."
197 error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened'
197 error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened'
198 error_can_not_archive_project: This project cannot be archived
198 error_can_not_archive_project: This project cannot be archived
199 error_issue_done_ratios_not_updated: "Issue done ratios not updated."
199 error_issue_done_ratios_not_updated: "Issue done ratios not updated."
200 error_workflow_copy_source: 'Please select a source tracker or role'
200 error_workflow_copy_source: 'Please select a source tracker or role'
201 error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
201 error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
202 error_unable_delete_issue_status: 'Unable to delete issue status'
202 error_unable_delete_issue_status: 'Unable to delete issue status'
203 error_unable_to_connect: "Unable to connect (%{value})"
203 error_unable_to_connect: "Unable to connect (%{value})"
204 error_attachment_too_big: "This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})"
204 error_attachment_too_big: "This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})"
205 error_session_expired: "Your session has expired. Please login again."
205 error_session_expired: "Your session has expired. Please login again."
206 warning_attachments_not_saved: "%{count} file(s) could not be saved."
206 warning_attachments_not_saved: "%{count} file(s) could not be saved."
207 error_password_expired: "Your password has expired or the administrator requires you to change it."
207
208
208 mail_subject_lost_password: "Your %{value} password"
209 mail_subject_lost_password: "Your %{value} password"
209 mail_body_lost_password: 'To change your password, click on the following link:'
210 mail_body_lost_password: 'To change your password, click on the following link:'
210 mail_subject_register: "Your %{value} account activation"
211 mail_subject_register: "Your %{value} account activation"
211 mail_body_register: 'To activate your account, click on the following link:'
212 mail_body_register: 'To activate your account, click on the following link:'
212 mail_body_account_information_external: "You can use your %{value} account to log in."
213 mail_body_account_information_external: "You can use your %{value} account to log in."
213 mail_body_account_information: Your account information
214 mail_body_account_information: Your account information
214 mail_subject_account_activation_request: "%{value} account activation request"
215 mail_subject_account_activation_request: "%{value} account activation request"
215 mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:"
216 mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:"
216 mail_subject_reminder: "%{count} issue(s) due in the next %{days} days"
217 mail_subject_reminder: "%{count} issue(s) due in the next %{days} days"
217 mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:"
218 mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:"
218 mail_subject_wiki_content_added: "'%{id}' wiki page has been added"
219 mail_subject_wiki_content_added: "'%{id}' wiki page has been added"
219 mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}."
220 mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}."
220 mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
221 mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
221 mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}."
222 mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}."
222
223
223 field_name: Name
224 field_name: Name
224 field_description: Description
225 field_description: Description
225 field_summary: Summary
226 field_summary: Summary
226 field_is_required: Required
227 field_is_required: Required
227 field_firstname: First name
228 field_firstname: First name
228 field_lastname: Last name
229 field_lastname: Last name
229 field_mail: Email
230 field_mail: Email
230 field_address: Email
231 field_address: Email
231 field_filename: File
232 field_filename: File
232 field_filesize: Size
233 field_filesize: Size
233 field_downloads: Downloads
234 field_downloads: Downloads
234 field_author: Author
235 field_author: Author
235 field_created_on: Created
236 field_created_on: Created
236 field_updated_on: Updated
237 field_updated_on: Updated
237 field_closed_on: Closed
238 field_closed_on: Closed
238 field_field_format: Format
239 field_field_format: Format
239 field_is_for_all: For all projects
240 field_is_for_all: For all projects
240 field_possible_values: Possible values
241 field_possible_values: Possible values
241 field_regexp: Regular expression
242 field_regexp: Regular expression
242 field_min_length: Minimum length
243 field_min_length: Minimum length
243 field_max_length: Maximum length
244 field_max_length: Maximum length
244 field_value: Value
245 field_value: Value
245 field_category: Category
246 field_category: Category
246 field_title: Title
247 field_title: Title
247 field_project: Project
248 field_project: Project
248 field_issue: Issue
249 field_issue: Issue
249 field_status: Status
250 field_status: Status
250 field_notes: Notes
251 field_notes: Notes
251 field_is_closed: Issue closed
252 field_is_closed: Issue closed
252 field_is_default: Default value
253 field_is_default: Default value
253 field_tracker: Tracker
254 field_tracker: Tracker
254 field_subject: Subject
255 field_subject: Subject
255 field_due_date: Due date
256 field_due_date: Due date
256 field_assigned_to: Assignee
257 field_assigned_to: Assignee
257 field_priority: Priority
258 field_priority: Priority
258 field_fixed_version: Target version
259 field_fixed_version: Target version
259 field_user: User
260 field_user: User
260 field_principal: Principal
261 field_principal: Principal
261 field_role: Role
262 field_role: Role
262 field_homepage: Homepage
263 field_homepage: Homepage
263 field_is_public: Public
264 field_is_public: Public
264 field_parent: Subproject of
265 field_parent: Subproject of
265 field_is_in_roadmap: Issues displayed in roadmap
266 field_is_in_roadmap: Issues displayed in roadmap
266 field_login: Login
267 field_login: Login
267 field_mail_notification: Email notifications
268 field_mail_notification: Email notifications
268 field_admin: Administrator
269 field_admin: Administrator
269 field_last_login_on: Last connection
270 field_last_login_on: Last connection
270 field_language: Language
271 field_language: Language
271 field_effective_date: Date
272 field_effective_date: Date
272 field_password: Password
273 field_password: Password
273 field_new_password: New password
274 field_new_password: New password
274 field_password_confirmation: Confirmation
275 field_password_confirmation: Confirmation
275 field_version: Version
276 field_version: Version
276 field_type: Type
277 field_type: Type
277 field_host: Host
278 field_host: Host
278 field_port: Port
279 field_port: Port
279 field_account: Account
280 field_account: Account
280 field_base_dn: Base DN
281 field_base_dn: Base DN
281 field_attr_login: Login attribute
282 field_attr_login: Login attribute
282 field_attr_firstname: Firstname attribute
283 field_attr_firstname: Firstname attribute
283 field_attr_lastname: Lastname attribute
284 field_attr_lastname: Lastname attribute
284 field_attr_mail: Email attribute
285 field_attr_mail: Email attribute
285 field_onthefly: On-the-fly user creation
286 field_onthefly: On-the-fly user creation
286 field_start_date: Start date
287 field_start_date: Start date
287 field_done_ratio: "% Done"
288 field_done_ratio: "% Done"
288 field_auth_source: Authentication mode
289 field_auth_source: Authentication mode
289 field_hide_mail: Hide my email address
290 field_hide_mail: Hide my email address
290 field_comments: Comment
291 field_comments: Comment
291 field_url: URL
292 field_url: URL
292 field_start_page: Start page
293 field_start_page: Start page
293 field_subproject: Subproject
294 field_subproject: Subproject
294 field_hours: Hours
295 field_hours: Hours
295 field_activity: Activity
296 field_activity: Activity
296 field_spent_on: Date
297 field_spent_on: Date
297 field_identifier: Identifier
298 field_identifier: Identifier
298 field_is_filter: Used as a filter
299 field_is_filter: Used as a filter
299 field_issue_to: Related issue
300 field_issue_to: Related issue
300 field_delay: Delay
301 field_delay: Delay
301 field_assignable: Issues can be assigned to this role
302 field_assignable: Issues can be assigned to this role
302 field_redirect_existing_links: Redirect existing links
303 field_redirect_existing_links: Redirect existing links
303 field_estimated_hours: Estimated time
304 field_estimated_hours: Estimated time
304 field_column_names: Columns
305 field_column_names: Columns
305 field_time_entries: Log time
306 field_time_entries: Log time
306 field_time_zone: Time zone
307 field_time_zone: Time zone
307 field_searchable: Searchable
308 field_searchable: Searchable
308 field_default_value: Default value
309 field_default_value: Default value
309 field_comments_sorting: Display comments
310 field_comments_sorting: Display comments
310 field_parent_title: Parent page
311 field_parent_title: Parent page
311 field_editable: Editable
312 field_editable: Editable
312 field_watcher: Watcher
313 field_watcher: Watcher
313 field_identity_url: OpenID URL
314 field_identity_url: OpenID URL
314 field_content: Content
315 field_content: Content
315 field_group_by: Group results by
316 field_group_by: Group results by
316 field_sharing: Sharing
317 field_sharing: Sharing
317 field_parent_issue: Parent task
318 field_parent_issue: Parent task
318 field_member_of_group: "Assignee's group"
319 field_member_of_group: "Assignee's group"
319 field_assigned_to_role: "Assignee's role"
320 field_assigned_to_role: "Assignee's role"
320 field_text: Text field
321 field_text: Text field
321 field_visible: Visible
322 field_visible: Visible
322 field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text"
323 field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text"
323 field_issues_visibility: Issues visibility
324 field_issues_visibility: Issues visibility
324 field_is_private: Private
325 field_is_private: Private
325 field_commit_logs_encoding: Commit messages encoding
326 field_commit_logs_encoding: Commit messages encoding
326 field_scm_path_encoding: Path encoding
327 field_scm_path_encoding: Path encoding
327 field_path_to_repository: Path to repository
328 field_path_to_repository: Path to repository
328 field_root_directory: Root directory
329 field_root_directory: Root directory
329 field_cvsroot: CVSROOT
330 field_cvsroot: CVSROOT
330 field_cvs_module: Module
331 field_cvs_module: Module
331 field_repository_is_default: Main repository
332 field_repository_is_default: Main repository
332 field_multiple: Multiple values
333 field_multiple: Multiple values
333 field_auth_source_ldap_filter: LDAP filter
334 field_auth_source_ldap_filter: LDAP filter
334 field_core_fields: Standard fields
335 field_core_fields: Standard fields
335 field_timeout: "Timeout (in seconds)"
336 field_timeout: "Timeout (in seconds)"
336 field_board_parent: Parent forum
337 field_board_parent: Parent forum
337 field_private_notes: Private notes
338 field_private_notes: Private notes
338 field_inherit_members: Inherit members
339 field_inherit_members: Inherit members
339 field_generate_password: Generate password
340 field_generate_password: Generate password
340 field_must_change_passwd: Must change password at next logon
341 field_must_change_passwd: Must change password at next logon
341 field_default_status: Default status
342 field_default_status: Default status
342 field_users_visibility: Users visibility
343 field_users_visibility: Users visibility
343
344
344 setting_app_title: Application title
345 setting_app_title: Application title
345 setting_app_subtitle: Application subtitle
346 setting_app_subtitle: Application subtitle
346 setting_welcome_text: Welcome text
347 setting_welcome_text: Welcome text
347 setting_default_language: Default language
348 setting_default_language: Default language
348 setting_login_required: Authentication required
349 setting_login_required: Authentication required
349 setting_self_registration: Self-registration
350 setting_self_registration: Self-registration
350 setting_attachment_max_size: Maximum attachment size
351 setting_attachment_max_size: Maximum attachment size
351 setting_issues_export_limit: Issues export limit
352 setting_issues_export_limit: Issues export limit
352 setting_mail_from: Emission email address
353 setting_mail_from: Emission email address
353 setting_bcc_recipients: Blind carbon copy recipients (bcc)
354 setting_bcc_recipients: Blind carbon copy recipients (bcc)
354 setting_plain_text_mail: Plain text mail (no HTML)
355 setting_plain_text_mail: Plain text mail (no HTML)
355 setting_host_name: Host name and path
356 setting_host_name: Host name and path
356 setting_text_formatting: Text formatting
357 setting_text_formatting: Text formatting
357 setting_wiki_compression: Wiki history compression
358 setting_wiki_compression: Wiki history compression
358 setting_feeds_limit: Maximum number of items in Atom feeds
359 setting_feeds_limit: Maximum number of items in Atom feeds
359 setting_default_projects_public: New projects are public by default
360 setting_default_projects_public: New projects are public by default
360 setting_autofetch_changesets: Fetch commits automatically
361 setting_autofetch_changesets: Fetch commits automatically
361 setting_sys_api_enabled: Enable WS for repository management
362 setting_sys_api_enabled: Enable WS for repository management
362 setting_commit_ref_keywords: Referencing keywords
363 setting_commit_ref_keywords: Referencing keywords
363 setting_commit_fix_keywords: Fixing keywords
364 setting_commit_fix_keywords: Fixing keywords
364 setting_autologin: Autologin
365 setting_autologin: Autologin
365 setting_date_format: Date format
366 setting_date_format: Date format
366 setting_time_format: Time format
367 setting_time_format: Time format
367 setting_cross_project_issue_relations: Allow cross-project issue relations
368 setting_cross_project_issue_relations: Allow cross-project issue relations
368 setting_cross_project_subtasks: Allow cross-project subtasks
369 setting_cross_project_subtasks: Allow cross-project subtasks
369 setting_issue_list_default_columns: Default columns displayed on the issue list
370 setting_issue_list_default_columns: Default columns displayed on the issue list
370 setting_repositories_encodings: Attachments and repositories encodings
371 setting_repositories_encodings: Attachments and repositories encodings
371 setting_emails_header: Email header
372 setting_emails_header: Email header
372 setting_emails_footer: Email footer
373 setting_emails_footer: Email footer
373 setting_protocol: Protocol
374 setting_protocol: Protocol
374 setting_per_page_options: Objects per page options
375 setting_per_page_options: Objects per page options
375 setting_user_format: Users display format
376 setting_user_format: Users display format
376 setting_activity_days_default: Days displayed on project activity
377 setting_activity_days_default: Days displayed on project activity
377 setting_display_subprojects_issues: Display subprojects issues on main projects by default
378 setting_display_subprojects_issues: Display subprojects issues on main projects by default
378 setting_enabled_scm: Enabled SCM
379 setting_enabled_scm: Enabled SCM
379 setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
380 setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
380 setting_mail_handler_api_enabled: Enable WS for incoming emails
381 setting_mail_handler_api_enabled: Enable WS for incoming emails
381 setting_mail_handler_api_key: API key
382 setting_mail_handler_api_key: API key
382 setting_sequential_project_identifiers: Generate sequential project identifiers
383 setting_sequential_project_identifiers: Generate sequential project identifiers
383 setting_gravatar_enabled: Use Gravatar user icons
384 setting_gravatar_enabled: Use Gravatar user icons
384 setting_gravatar_default: Default Gravatar image
385 setting_gravatar_default: Default Gravatar image
385 setting_diff_max_lines_displayed: Maximum number of diff lines displayed
386 setting_diff_max_lines_displayed: Maximum number of diff lines displayed
386 setting_file_max_size_displayed: Maximum size of text files displayed inline
387 setting_file_max_size_displayed: Maximum size of text files displayed inline
387 setting_repository_log_display_limit: Maximum number of revisions displayed on file log
388 setting_repository_log_display_limit: Maximum number of revisions displayed on file log
388 setting_openid: Allow OpenID login and registration
389 setting_openid: Allow OpenID login and registration
390 setting_password_max_age: Require password change after
389 setting_password_min_length: Minimum password length
391 setting_password_min_length: Minimum password length
390 setting_new_project_user_role_id: Role given to a non-admin user who creates a project
392 setting_new_project_user_role_id: Role given to a non-admin user who creates a project
391 setting_default_projects_modules: Default enabled modules for new projects
393 setting_default_projects_modules: Default enabled modules for new projects
392 setting_issue_done_ratio: Calculate the issue done ratio with
394 setting_issue_done_ratio: Calculate the issue done ratio with
393 setting_issue_done_ratio_issue_field: Use the issue field
395 setting_issue_done_ratio_issue_field: Use the issue field
394 setting_issue_done_ratio_issue_status: Use the issue status
396 setting_issue_done_ratio_issue_status: Use the issue status
395 setting_start_of_week: Start calendars on
397 setting_start_of_week: Start calendars on
396 setting_rest_api_enabled: Enable REST web service
398 setting_rest_api_enabled: Enable REST web service
397 setting_cache_formatted_text: Cache formatted text
399 setting_cache_formatted_text: Cache formatted text
398 setting_default_notification_option: Default notification option
400 setting_default_notification_option: Default notification option
399 setting_commit_logtime_enabled: Enable time logging
401 setting_commit_logtime_enabled: Enable time logging
400 setting_commit_logtime_activity_id: Activity for logged time
402 setting_commit_logtime_activity_id: Activity for logged time
401 setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
403 setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
402 setting_issue_group_assignment: Allow issue assignment to groups
404 setting_issue_group_assignment: Allow issue assignment to groups
403 setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
405 setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
404 setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed
406 setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed
405 setting_unsubscribe: Allow users to delete their own account
407 setting_unsubscribe: Allow users to delete their own account
406 setting_session_lifetime: Session maximum lifetime
408 setting_session_lifetime: Session maximum lifetime
407 setting_session_timeout: Session inactivity timeout
409 setting_session_timeout: Session inactivity timeout
408 setting_thumbnails_enabled: Display attachment thumbnails
410 setting_thumbnails_enabled: Display attachment thumbnails
409 setting_thumbnails_size: Thumbnails size (in pixels)
411 setting_thumbnails_size: Thumbnails size (in pixels)
410 setting_non_working_week_days: Non-working days
412 setting_non_working_week_days: Non-working days
411 setting_jsonp_enabled: Enable JSONP support
413 setting_jsonp_enabled: Enable JSONP support
412 setting_default_projects_tracker_ids: Default trackers for new projects
414 setting_default_projects_tracker_ids: Default trackers for new projects
413 setting_mail_handler_excluded_filenames: Exclude attachments by name
415 setting_mail_handler_excluded_filenames: Exclude attachments by name
414 setting_force_default_language_for_anonymous: Force default language for anonymous users
416 setting_force_default_language_for_anonymous: Force default language for anonymous users
415 setting_force_default_language_for_loggedin: Force default language for logged-in users
417 setting_force_default_language_for_loggedin: Force default language for logged-in users
416 setting_link_copied_issue: Link issues on copy
418 setting_link_copied_issue: Link issues on copy
417 setting_max_additional_emails: Maximum number of additional email addresses
419 setting_max_additional_emails: Maximum number of additional email addresses
418 setting_search_results_per_page: Search results per page
420 setting_search_results_per_page: Search results per page
419
421
420 permission_add_project: Create project
422 permission_add_project: Create project
421 permission_add_subprojects: Create subprojects
423 permission_add_subprojects: Create subprojects
422 permission_edit_project: Edit project
424 permission_edit_project: Edit project
423 permission_close_project: Close / reopen the project
425 permission_close_project: Close / reopen the project
424 permission_select_project_modules: Select project modules
426 permission_select_project_modules: Select project modules
425 permission_manage_members: Manage members
427 permission_manage_members: Manage members
426 permission_manage_project_activities: Manage project activities
428 permission_manage_project_activities: Manage project activities
427 permission_manage_versions: Manage versions
429 permission_manage_versions: Manage versions
428 permission_manage_categories: Manage issue categories
430 permission_manage_categories: Manage issue categories
429 permission_view_issues: View Issues
431 permission_view_issues: View Issues
430 permission_add_issues: Add issues
432 permission_add_issues: Add issues
431 permission_edit_issues: Edit issues
433 permission_edit_issues: Edit issues
432 permission_copy_issues: Copy issues
434 permission_copy_issues: Copy issues
433 permission_manage_issue_relations: Manage issue relations
435 permission_manage_issue_relations: Manage issue relations
434 permission_set_issues_private: Set issues public or private
436 permission_set_issues_private: Set issues public or private
435 permission_set_own_issues_private: Set own issues public or private
437 permission_set_own_issues_private: Set own issues public or private
436 permission_add_issue_notes: Add notes
438 permission_add_issue_notes: Add notes
437 permission_edit_issue_notes: Edit notes
439 permission_edit_issue_notes: Edit notes
438 permission_edit_own_issue_notes: Edit own notes
440 permission_edit_own_issue_notes: Edit own notes
439 permission_view_private_notes: View private notes
441 permission_view_private_notes: View private notes
440 permission_set_notes_private: Set notes as private
442 permission_set_notes_private: Set notes as private
441 permission_move_issues: Move issues
443 permission_move_issues: Move issues
442 permission_delete_issues: Delete issues
444 permission_delete_issues: Delete issues
443 permission_manage_public_queries: Manage public queries
445 permission_manage_public_queries: Manage public queries
444 permission_save_queries: Save queries
446 permission_save_queries: Save queries
445 permission_view_gantt: View gantt chart
447 permission_view_gantt: View gantt chart
446 permission_view_calendar: View calendar
448 permission_view_calendar: View calendar
447 permission_view_issue_watchers: View watchers list
449 permission_view_issue_watchers: View watchers list
448 permission_add_issue_watchers: Add watchers
450 permission_add_issue_watchers: Add watchers
449 permission_delete_issue_watchers: Delete watchers
451 permission_delete_issue_watchers: Delete watchers
450 permission_log_time: Log spent time
452 permission_log_time: Log spent time
451 permission_view_time_entries: View spent time
453 permission_view_time_entries: View spent time
452 permission_edit_time_entries: Edit time logs
454 permission_edit_time_entries: Edit time logs
453 permission_edit_own_time_entries: Edit own time logs
455 permission_edit_own_time_entries: Edit own time logs
454 permission_manage_news: Manage news
456 permission_manage_news: Manage news
455 permission_comment_news: Comment news
457 permission_comment_news: Comment news
456 permission_view_documents: View documents
458 permission_view_documents: View documents
457 permission_add_documents: Add documents
459 permission_add_documents: Add documents
458 permission_edit_documents: Edit documents
460 permission_edit_documents: Edit documents
459 permission_delete_documents: Delete documents
461 permission_delete_documents: Delete documents
460 permission_manage_files: Manage files
462 permission_manage_files: Manage files
461 permission_view_files: View files
463 permission_view_files: View files
462 permission_manage_wiki: Manage wiki
464 permission_manage_wiki: Manage wiki
463 permission_rename_wiki_pages: Rename wiki pages
465 permission_rename_wiki_pages: Rename wiki pages
464 permission_delete_wiki_pages: Delete wiki pages
466 permission_delete_wiki_pages: Delete wiki pages
465 permission_view_wiki_pages: View wiki
467 permission_view_wiki_pages: View wiki
466 permission_view_wiki_edits: View wiki history
468 permission_view_wiki_edits: View wiki history
467 permission_edit_wiki_pages: Edit wiki pages
469 permission_edit_wiki_pages: Edit wiki pages
468 permission_delete_wiki_pages_attachments: Delete attachments
470 permission_delete_wiki_pages_attachments: Delete attachments
469 permission_protect_wiki_pages: Protect wiki pages
471 permission_protect_wiki_pages: Protect wiki pages
470 permission_manage_repository: Manage repository
472 permission_manage_repository: Manage repository
471 permission_browse_repository: Browse repository
473 permission_browse_repository: Browse repository
472 permission_view_changesets: View changesets
474 permission_view_changesets: View changesets
473 permission_commit_access: Commit access
475 permission_commit_access: Commit access
474 permission_manage_boards: Manage forums
476 permission_manage_boards: Manage forums
475 permission_view_messages: View messages
477 permission_view_messages: View messages
476 permission_add_messages: Post messages
478 permission_add_messages: Post messages
477 permission_edit_messages: Edit messages
479 permission_edit_messages: Edit messages
478 permission_edit_own_messages: Edit own messages
480 permission_edit_own_messages: Edit own messages
479 permission_delete_messages: Delete messages
481 permission_delete_messages: Delete messages
480 permission_delete_own_messages: Delete own messages
482 permission_delete_own_messages: Delete own messages
481 permission_export_wiki_pages: Export wiki pages
483 permission_export_wiki_pages: Export wiki pages
482 permission_manage_subtasks: Manage subtasks
484 permission_manage_subtasks: Manage subtasks
483 permission_manage_related_issues: Manage related issues
485 permission_manage_related_issues: Manage related issues
484
486
485 project_module_issue_tracking: Issue tracking
487 project_module_issue_tracking: Issue tracking
486 project_module_time_tracking: Time tracking
488 project_module_time_tracking: Time tracking
487 project_module_news: News
489 project_module_news: News
488 project_module_documents: Documents
490 project_module_documents: Documents
489 project_module_files: Files
491 project_module_files: Files
490 project_module_wiki: Wiki
492 project_module_wiki: Wiki
491 project_module_repository: Repository
493 project_module_repository: Repository
492 project_module_boards: Forums
494 project_module_boards: Forums
493 project_module_calendar: Calendar
495 project_module_calendar: Calendar
494 project_module_gantt: Gantt
496 project_module_gantt: Gantt
495
497
496 label_user: User
498 label_user: User
497 label_user_plural: Users
499 label_user_plural: Users
498 label_user_new: New user
500 label_user_new: New user
499 label_user_anonymous: Anonymous
501 label_user_anonymous: Anonymous
500 label_project: Project
502 label_project: Project
501 label_project_new: New project
503 label_project_new: New project
502 label_project_plural: Projects
504 label_project_plural: Projects
503 label_x_projects:
505 label_x_projects:
504 zero: no projects
506 zero: no projects
505 one: 1 project
507 one: 1 project
506 other: "%{count} projects"
508 other: "%{count} projects"
507 label_project_all: All Projects
509 label_project_all: All Projects
508 label_project_latest: Latest projects
510 label_project_latest: Latest projects
509 label_issue: Issue
511 label_issue: Issue
510 label_issue_new: New issue
512 label_issue_new: New issue
511 label_issue_plural: Issues
513 label_issue_plural: Issues
512 label_issue_view_all: View all issues
514 label_issue_view_all: View all issues
513 label_issues_by: "Issues by %{value}"
515 label_issues_by: "Issues by %{value}"
514 label_issue_added: Issue added
516 label_issue_added: Issue added
515 label_issue_updated: Issue updated
517 label_issue_updated: Issue updated
516 label_issue_note_added: Note added
518 label_issue_note_added: Note added
517 label_issue_status_updated: Status updated
519 label_issue_status_updated: Status updated
518 label_issue_assigned_to_updated: Assignee updated
520 label_issue_assigned_to_updated: Assignee updated
519 label_issue_priority_updated: Priority updated
521 label_issue_priority_updated: Priority updated
520 label_document: Document
522 label_document: Document
521 label_document_new: New document
523 label_document_new: New document
522 label_document_plural: Documents
524 label_document_plural: Documents
523 label_document_added: Document added
525 label_document_added: Document added
524 label_role: Role
526 label_role: Role
525 label_role_plural: Roles
527 label_role_plural: Roles
526 label_role_new: New role
528 label_role_new: New role
527 label_role_and_permissions: Roles and permissions
529 label_role_and_permissions: Roles and permissions
528 label_role_anonymous: Anonymous
530 label_role_anonymous: Anonymous
529 label_role_non_member: Non member
531 label_role_non_member: Non member
530 label_member: Member
532 label_member: Member
531 label_member_new: New member
533 label_member_new: New member
532 label_member_plural: Members
534 label_member_plural: Members
533 label_tracker: Tracker
535 label_tracker: Tracker
534 label_tracker_plural: Trackers
536 label_tracker_plural: Trackers
535 label_tracker_new: New tracker
537 label_tracker_new: New tracker
536 label_workflow: Workflow
538 label_workflow: Workflow
537 label_issue_status: Issue status
539 label_issue_status: Issue status
538 label_issue_status_plural: Issue statuses
540 label_issue_status_plural: Issue statuses
539 label_issue_status_new: New status
541 label_issue_status_new: New status
540 label_issue_category: Issue category
542 label_issue_category: Issue category
541 label_issue_category_plural: Issue categories
543 label_issue_category_plural: Issue categories
542 label_issue_category_new: New category
544 label_issue_category_new: New category
543 label_custom_field: Custom field
545 label_custom_field: Custom field
544 label_custom_field_plural: Custom fields
546 label_custom_field_plural: Custom fields
545 label_custom_field_new: New custom field
547 label_custom_field_new: New custom field
546 label_enumerations: Enumerations
548 label_enumerations: Enumerations
547 label_enumeration_new: New value
549 label_enumeration_new: New value
548 label_information: Information
550 label_information: Information
549 label_information_plural: Information
551 label_information_plural: Information
550 label_please_login: Please log in
552 label_please_login: Please log in
551 label_register: Register
553 label_register: Register
552 label_login_with_open_id_option: or login with OpenID
554 label_login_with_open_id_option: or login with OpenID
553 label_password_lost: Lost password
555 label_password_lost: Lost password
554 label_home: Home
556 label_home: Home
555 label_my_page: My page
557 label_my_page: My page
556 label_my_account: My account
558 label_my_account: My account
557 label_my_projects: My projects
559 label_my_projects: My projects
558 label_my_page_block: My page block
560 label_my_page_block: My page block
559 label_administration: Administration
561 label_administration: Administration
560 label_login: Sign in
562 label_login: Sign in
561 label_logout: Sign out
563 label_logout: Sign out
562 label_help: Help
564 label_help: Help
563 label_reported_issues: Reported issues
565 label_reported_issues: Reported issues
564 label_assigned_to_me_issues: Issues assigned to me
566 label_assigned_to_me_issues: Issues assigned to me
565 label_last_login: Last connection
567 label_last_login: Last connection
566 label_registered_on: Registered on
568 label_registered_on: Registered on
567 label_activity: Activity
569 label_activity: Activity
568 label_overall_activity: Overall activity
570 label_overall_activity: Overall activity
569 label_user_activity: "%{value}'s activity"
571 label_user_activity: "%{value}'s activity"
570 label_new: New
572 label_new: New
571 label_logged_as: Logged in as
573 label_logged_as: Logged in as
572 label_environment: Environment
574 label_environment: Environment
573 label_authentication: Authentication
575 label_authentication: Authentication
574 label_auth_source: Authentication mode
576 label_auth_source: Authentication mode
575 label_auth_source_new: New authentication mode
577 label_auth_source_new: New authentication mode
576 label_auth_source_plural: Authentication modes
578 label_auth_source_plural: Authentication modes
577 label_subproject_plural: Subprojects
579 label_subproject_plural: Subprojects
578 label_subproject_new: New subproject
580 label_subproject_new: New subproject
579 label_and_its_subprojects: "%{value} and its subprojects"
581 label_and_its_subprojects: "%{value} and its subprojects"
580 label_min_max_length: Min - Max length
582 label_min_max_length: Min - Max length
581 label_list: List
583 label_list: List
582 label_date: Date
584 label_date: Date
583 label_integer: Integer
585 label_integer: Integer
584 label_float: Float
586 label_float: Float
585 label_boolean: Boolean
587 label_boolean: Boolean
586 label_string: Text
588 label_string: Text
587 label_text: Long text
589 label_text: Long text
588 label_attribute: Attribute
590 label_attribute: Attribute
589 label_attribute_plural: Attributes
591 label_attribute_plural: Attributes
590 label_no_data: No data to display
592 label_no_data: No data to display
591 label_change_status: Change status
593 label_change_status: Change status
592 label_history: History
594 label_history: History
593 label_attachment: File
595 label_attachment: File
594 label_attachment_new: New file
596 label_attachment_new: New file
595 label_attachment_delete: Delete file
597 label_attachment_delete: Delete file
596 label_attachment_plural: Files
598 label_attachment_plural: Files
597 label_file_added: File added
599 label_file_added: File added
598 label_report: Report
600 label_report: Report
599 label_report_plural: Reports
601 label_report_plural: Reports
600 label_news: News
602 label_news: News
601 label_news_new: Add news
603 label_news_new: Add news
602 label_news_plural: News
604 label_news_plural: News
603 label_news_latest: Latest news
605 label_news_latest: Latest news
604 label_news_view_all: View all news
606 label_news_view_all: View all news
605 label_news_added: News added
607 label_news_added: News added
606 label_news_comment_added: Comment added to a news
608 label_news_comment_added: Comment added to a news
607 label_settings: Settings
609 label_settings: Settings
608 label_overview: Overview
610 label_overview: Overview
609 label_version: Version
611 label_version: Version
610 label_version_new: New version
612 label_version_new: New version
611 label_version_plural: Versions
613 label_version_plural: Versions
612 label_close_versions: Close completed versions
614 label_close_versions: Close completed versions
613 label_confirmation: Confirmation
615 label_confirmation: Confirmation
614 label_export_to: 'Also available in:'
616 label_export_to: 'Also available in:'
615 label_read: Read...
617 label_read: Read...
616 label_public_projects: Public projects
618 label_public_projects: Public projects
617 label_open_issues: open
619 label_open_issues: open
618 label_open_issues_plural: open
620 label_open_issues_plural: open
619 label_closed_issues: closed
621 label_closed_issues: closed
620 label_closed_issues_plural: closed
622 label_closed_issues_plural: closed
621 label_x_open_issues_abbr_on_total:
623 label_x_open_issues_abbr_on_total:
622 zero: 0 open / %{total}
624 zero: 0 open / %{total}
623 one: 1 open / %{total}
625 one: 1 open / %{total}
624 other: "%{count} open / %{total}"
626 other: "%{count} open / %{total}"
625 label_x_open_issues_abbr:
627 label_x_open_issues_abbr:
626 zero: 0 open
628 zero: 0 open
627 one: 1 open
629 one: 1 open
628 other: "%{count} open"
630 other: "%{count} open"
629 label_x_closed_issues_abbr:
631 label_x_closed_issues_abbr:
630 zero: 0 closed
632 zero: 0 closed
631 one: 1 closed
633 one: 1 closed
632 other: "%{count} closed"
634 other: "%{count} closed"
633 label_x_issues:
635 label_x_issues:
634 zero: 0 issues
636 zero: 0 issues
635 one: 1 issue
637 one: 1 issue
636 other: "%{count} issues"
638 other: "%{count} issues"
637 label_total: Total
639 label_total: Total
638 label_total_time: Total time
640 label_total_time: Total time
639 label_permissions: Permissions
641 label_permissions: Permissions
640 label_current_status: Current status
642 label_current_status: Current status
641 label_new_statuses_allowed: New statuses allowed
643 label_new_statuses_allowed: New statuses allowed
642 label_all: all
644 label_all: all
643 label_any: any
645 label_any: any
644 label_none: none
646 label_none: none
645 label_nobody: nobody
647 label_nobody: nobody
646 label_next: Next
648 label_next: Next
647 label_previous: Previous
649 label_previous: Previous
648 label_used_by: Used by
650 label_used_by: Used by
649 label_details: Details
651 label_details: Details
650 label_add_note: Add a note
652 label_add_note: Add a note
651 label_calendar: Calendar
653 label_calendar: Calendar
652 label_months_from: months from
654 label_months_from: months from
653 label_gantt: Gantt
655 label_gantt: Gantt
654 label_internal: Internal
656 label_internal: Internal
655 label_last_changes: "last %{count} changes"
657 label_last_changes: "last %{count} changes"
656 label_change_view_all: View all changes
658 label_change_view_all: View all changes
657 label_personalize_page: Personalize this page
659 label_personalize_page: Personalize this page
658 label_comment: Comment
660 label_comment: Comment
659 label_comment_plural: Comments
661 label_comment_plural: Comments
660 label_x_comments:
662 label_x_comments:
661 zero: no comments
663 zero: no comments
662 one: 1 comment
664 one: 1 comment
663 other: "%{count} comments"
665 other: "%{count} comments"
664 label_comment_add: Add a comment
666 label_comment_add: Add a comment
665 label_comment_added: Comment added
667 label_comment_added: Comment added
666 label_comment_delete: Delete comments
668 label_comment_delete: Delete comments
667 label_query: Custom query
669 label_query: Custom query
668 label_query_plural: Custom queries
670 label_query_plural: Custom queries
669 label_query_new: New query
671 label_query_new: New query
670 label_my_queries: My custom queries
672 label_my_queries: My custom queries
671 label_filter_add: Add filter
673 label_filter_add: Add filter
672 label_filter_plural: Filters
674 label_filter_plural: Filters
673 label_equals: is
675 label_equals: is
674 label_not_equals: is not
676 label_not_equals: is not
675 label_in_less_than: in less than
677 label_in_less_than: in less than
676 label_in_more_than: in more than
678 label_in_more_than: in more than
677 label_in_the_next_days: in the next
679 label_in_the_next_days: in the next
678 label_in_the_past_days: in the past
680 label_in_the_past_days: in the past
679 label_greater_or_equal: '>='
681 label_greater_or_equal: '>='
680 label_less_or_equal: '<='
682 label_less_or_equal: '<='
681 label_between: between
683 label_between: between
682 label_in: in
684 label_in: in
683 label_today: today
685 label_today: today
684 label_all_time: all time
686 label_all_time: all time
685 label_yesterday: yesterday
687 label_yesterday: yesterday
686 label_this_week: this week
688 label_this_week: this week
687 label_last_week: last week
689 label_last_week: last week
688 label_last_n_weeks: "last %{count} weeks"
690 label_last_n_weeks: "last %{count} weeks"
689 label_last_n_days: "last %{count} days"
691 label_last_n_days: "last %{count} days"
690 label_this_month: this month
692 label_this_month: this month
691 label_last_month: last month
693 label_last_month: last month
692 label_this_year: this year
694 label_this_year: this year
693 label_date_range: Date range
695 label_date_range: Date range
694 label_less_than_ago: less than days ago
696 label_less_than_ago: less than days ago
695 label_more_than_ago: more than days ago
697 label_more_than_ago: more than days ago
696 label_ago: days ago
698 label_ago: days ago
697 label_contains: contains
699 label_contains: contains
698 label_not_contains: doesn't contain
700 label_not_contains: doesn't contain
699 label_any_issues_in_project: any issues in project
701 label_any_issues_in_project: any issues in project
700 label_any_issues_not_in_project: any issues not in project
702 label_any_issues_not_in_project: any issues not in project
701 label_no_issues_in_project: no issues in project
703 label_no_issues_in_project: no issues in project
702 label_day_plural: days
704 label_day_plural: days
703 label_repository: Repository
705 label_repository: Repository
704 label_repository_new: New repository
706 label_repository_new: New repository
705 label_repository_plural: Repositories
707 label_repository_plural: Repositories
706 label_browse: Browse
708 label_browse: Browse
707 label_branch: Branch
709 label_branch: Branch
708 label_tag: Tag
710 label_tag: Tag
709 label_revision: Revision
711 label_revision: Revision
710 label_revision_plural: Revisions
712 label_revision_plural: Revisions
711 label_revision_id: "Revision %{value}"
713 label_revision_id: "Revision %{value}"
712 label_associated_revisions: Associated revisions
714 label_associated_revisions: Associated revisions
713 label_added: added
715 label_added: added
714 label_modified: modified
716 label_modified: modified
715 label_copied: copied
717 label_copied: copied
716 label_renamed: renamed
718 label_renamed: renamed
717 label_deleted: deleted
719 label_deleted: deleted
718 label_latest_revision: Latest revision
720 label_latest_revision: Latest revision
719 label_latest_revision_plural: Latest revisions
721 label_latest_revision_plural: Latest revisions
720 label_view_revisions: View revisions
722 label_view_revisions: View revisions
721 label_view_all_revisions: View all revisions
723 label_view_all_revisions: View all revisions
722 label_max_size: Maximum size
724 label_max_size: Maximum size
723 label_sort_highest: Move to top
725 label_sort_highest: Move to top
724 label_sort_higher: Move up
726 label_sort_higher: Move up
725 label_sort_lower: Move down
727 label_sort_lower: Move down
726 label_sort_lowest: Move to bottom
728 label_sort_lowest: Move to bottom
727 label_roadmap: Roadmap
729 label_roadmap: Roadmap
728 label_roadmap_due_in: "Due in %{value}"
730 label_roadmap_due_in: "Due in %{value}"
729 label_roadmap_overdue: "%{value} late"
731 label_roadmap_overdue: "%{value} late"
730 label_roadmap_no_issues: No issues for this version
732 label_roadmap_no_issues: No issues for this version
731 label_search: Search
733 label_search: Search
732 label_result_plural: Results
734 label_result_plural: Results
733 label_all_words: All words
735 label_all_words: All words
734 label_wiki: Wiki
736 label_wiki: Wiki
735 label_wiki_edit: Wiki edit
737 label_wiki_edit: Wiki edit
736 label_wiki_edit_plural: Wiki edits
738 label_wiki_edit_plural: Wiki edits
737 label_wiki_page: Wiki page
739 label_wiki_page: Wiki page
738 label_wiki_page_plural: Wiki pages
740 label_wiki_page_plural: Wiki pages
739 label_index_by_title: Index by title
741 label_index_by_title: Index by title
740 label_index_by_date: Index by date
742 label_index_by_date: Index by date
741 label_current_version: Current version
743 label_current_version: Current version
742 label_preview: Preview
744 label_preview: Preview
743 label_feed_plural: Feeds
745 label_feed_plural: Feeds
744 label_changes_details: Details of all changes
746 label_changes_details: Details of all changes
745 label_issue_tracking: Issue tracking
747 label_issue_tracking: Issue tracking
746 label_spent_time: Spent time
748 label_spent_time: Spent time
747 label_overall_spent_time: Overall spent time
749 label_overall_spent_time: Overall spent time
748 label_f_hour: "%{value} hour"
750 label_f_hour: "%{value} hour"
749 label_f_hour_plural: "%{value} hours"
751 label_f_hour_plural: "%{value} hours"
750 label_time_tracking: Time tracking
752 label_time_tracking: Time tracking
751 label_change_plural: Changes
753 label_change_plural: Changes
752 label_statistics: Statistics
754 label_statistics: Statistics
753 label_commits_per_month: Commits per month
755 label_commits_per_month: Commits per month
754 label_commits_per_author: Commits per author
756 label_commits_per_author: Commits per author
755 label_diff: diff
757 label_diff: diff
756 label_view_diff: View differences
758 label_view_diff: View differences
757 label_diff_inline: inline
759 label_diff_inline: inline
758 label_diff_side_by_side: side by side
760 label_diff_side_by_side: side by side
759 label_options: Options
761 label_options: Options
760 label_copy_workflow_from: Copy workflow from
762 label_copy_workflow_from: Copy workflow from
761 label_permissions_report: Permissions report
763 label_permissions_report: Permissions report
762 label_watched_issues: Watched issues
764 label_watched_issues: Watched issues
763 label_related_issues: Related issues
765 label_related_issues: Related issues
764 label_applied_status: Applied status
766 label_applied_status: Applied status
765 label_loading: Loading...
767 label_loading: Loading...
766 label_relation_new: New relation
768 label_relation_new: New relation
767 label_relation_delete: Delete relation
769 label_relation_delete: Delete relation
768 label_relates_to: Related to
770 label_relates_to: Related to
769 label_duplicates: Duplicates
771 label_duplicates: Duplicates
770 label_duplicated_by: Duplicated by
772 label_duplicated_by: Duplicated by
771 label_blocks: Blocks
773 label_blocks: Blocks
772 label_blocked_by: Blocked by
774 label_blocked_by: Blocked by
773 label_precedes: Precedes
775 label_precedes: Precedes
774 label_follows: Follows
776 label_follows: Follows
775 label_copied_to: Copied to
777 label_copied_to: Copied to
776 label_copied_from: Copied from
778 label_copied_from: Copied from
777 label_end_to_start: end to start
779 label_end_to_start: end to start
778 label_end_to_end: end to end
780 label_end_to_end: end to end
779 label_start_to_start: start to start
781 label_start_to_start: start to start
780 label_start_to_end: start to end
782 label_start_to_end: start to end
781 label_stay_logged_in: Stay logged in
783 label_stay_logged_in: Stay logged in
782 label_disabled: disabled
784 label_disabled: disabled
783 label_show_completed_versions: Show completed versions
785 label_show_completed_versions: Show completed versions
784 label_me: me
786 label_me: me
785 label_board: Forum
787 label_board: Forum
786 label_board_new: New forum
788 label_board_new: New forum
787 label_board_plural: Forums
789 label_board_plural: Forums
788 label_board_locked: Locked
790 label_board_locked: Locked
789 label_board_sticky: Sticky
791 label_board_sticky: Sticky
790 label_topic_plural: Topics
792 label_topic_plural: Topics
791 label_message_plural: Messages
793 label_message_plural: Messages
792 label_message_last: Last message
794 label_message_last: Last message
793 label_message_new: New message
795 label_message_new: New message
794 label_message_posted: Message added
796 label_message_posted: Message added
795 label_reply_plural: Replies
797 label_reply_plural: Replies
796 label_send_information: Send account information to the user
798 label_send_information: Send account information to the user
797 label_year: Year
799 label_year: Year
798 label_month: Month
800 label_month: Month
799 label_week: Week
801 label_week: Week
800 label_date_from: From
802 label_date_from: From
801 label_date_to: To
803 label_date_to: To
802 label_language_based: Based on user's language
804 label_language_based: Based on user's language
803 label_sort_by: "Sort by %{value}"
805 label_sort_by: "Sort by %{value}"
804 label_send_test_email: Send a test email
806 label_send_test_email: Send a test email
805 label_feeds_access_key: Atom access key
807 label_feeds_access_key: Atom access key
806 label_missing_feeds_access_key: Missing a Atom access key
808 label_missing_feeds_access_key: Missing a Atom access key
807 label_feeds_access_key_created_on: "Atom access key created %{value} ago"
809 label_feeds_access_key_created_on: "Atom access key created %{value} ago"
808 label_module_plural: Modules
810 label_module_plural: Modules
809 label_added_time_by: "Added by %{author} %{age} ago"
811 label_added_time_by: "Added by %{author} %{age} ago"
810 label_updated_time_by: "Updated by %{author} %{age} ago"
812 label_updated_time_by: "Updated by %{author} %{age} ago"
811 label_updated_time: "Updated %{value} ago"
813 label_updated_time: "Updated %{value} ago"
812 label_jump_to_a_project: Jump to a project...
814 label_jump_to_a_project: Jump to a project...
813 label_file_plural: Files
815 label_file_plural: Files
814 label_changeset_plural: Changesets
816 label_changeset_plural: Changesets
815 label_default_columns: Default columns
817 label_default_columns: Default columns
816 label_no_change_option: (No change)
818 label_no_change_option: (No change)
817 label_bulk_edit_selected_issues: Bulk edit selected issues
819 label_bulk_edit_selected_issues: Bulk edit selected issues
818 label_bulk_edit_selected_time_entries: Bulk edit selected time entries
820 label_bulk_edit_selected_time_entries: Bulk edit selected time entries
819 label_theme: Theme
821 label_theme: Theme
820 label_default: Default
822 label_default: Default
821 label_search_titles_only: Search titles only
823 label_search_titles_only: Search titles only
822 label_user_mail_option_all: "For any event on all my projects"
824 label_user_mail_option_all: "For any event on all my projects"
823 label_user_mail_option_selected: "For any event on the selected projects only..."
825 label_user_mail_option_selected: "For any event on the selected projects only..."
824 label_user_mail_option_none: "No events"
826 label_user_mail_option_none: "No events"
825 label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in"
827 label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in"
826 label_user_mail_option_only_assigned: "Only for things I am assigned to"
828 label_user_mail_option_only_assigned: "Only for things I am assigned to"
827 label_user_mail_option_only_owner: "Only for things I am the owner of"
829 label_user_mail_option_only_owner: "Only for things I am the owner of"
828 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
830 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
829 label_registration_activation_by_email: account activation by email
831 label_registration_activation_by_email: account activation by email
830 label_registration_manual_activation: manual account activation
832 label_registration_manual_activation: manual account activation
831 label_registration_automatic_activation: automatic account activation
833 label_registration_automatic_activation: automatic account activation
832 label_display_per_page: "Per page: %{value}"
834 label_display_per_page: "Per page: %{value}"
833 label_age: Age
835 label_age: Age
834 label_change_properties: Change properties
836 label_change_properties: Change properties
835 label_general: General
837 label_general: General
836 label_more: More
838 label_more: More
837 label_scm: SCM
839 label_scm: SCM
838 label_plugins: Plugins
840 label_plugins: Plugins
839 label_ldap_authentication: LDAP authentication
841 label_ldap_authentication: LDAP authentication
840 label_downloads_abbr: D/L
842 label_downloads_abbr: D/L
841 label_optional_description: Optional description
843 label_optional_description: Optional description
842 label_add_another_file: Add another file
844 label_add_another_file: Add another file
843 label_preferences: Preferences
845 label_preferences: Preferences
844 label_chronological_order: In chronological order
846 label_chronological_order: In chronological order
845 label_reverse_chronological_order: In reverse chronological order
847 label_reverse_chronological_order: In reverse chronological order
846 label_planning: Planning
848 label_planning: Planning
847 label_incoming_emails: Incoming emails
849 label_incoming_emails: Incoming emails
848 label_generate_key: Generate a key
850 label_generate_key: Generate a key
849 label_issue_watchers: Watchers
851 label_issue_watchers: Watchers
850 label_example: Example
852 label_example: Example
851 label_display: Display
853 label_display: Display
852 label_sort: Sort
854 label_sort: Sort
853 label_ascending: Ascending
855 label_ascending: Ascending
854 label_descending: Descending
856 label_descending: Descending
855 label_date_from_to: From %{start} to %{end}
857 label_date_from_to: From %{start} to %{end}
856 label_wiki_content_added: Wiki page added
858 label_wiki_content_added: Wiki page added
857 label_wiki_content_updated: Wiki page updated
859 label_wiki_content_updated: Wiki page updated
858 label_group: Group
860 label_group: Group
859 label_group_plural: Groups
861 label_group_plural: Groups
860 label_group_new: New group
862 label_group_new: New group
861 label_group_anonymous: Anonymous users
863 label_group_anonymous: Anonymous users
862 label_group_non_member: Non member users
864 label_group_non_member: Non member users
863 label_time_entry_plural: Spent time
865 label_time_entry_plural: Spent time
864 label_version_sharing_none: Not shared
866 label_version_sharing_none: Not shared
865 label_version_sharing_descendants: With subprojects
867 label_version_sharing_descendants: With subprojects
866 label_version_sharing_hierarchy: With project hierarchy
868 label_version_sharing_hierarchy: With project hierarchy
867 label_version_sharing_tree: With project tree
869 label_version_sharing_tree: With project tree
868 label_version_sharing_system: With all projects
870 label_version_sharing_system: With all projects
869 label_update_issue_done_ratios: Update issue done ratios
871 label_update_issue_done_ratios: Update issue done ratios
870 label_copy_source: Source
872 label_copy_source: Source
871 label_copy_target: Target
873 label_copy_target: Target
872 label_copy_same_as_target: Same as target
874 label_copy_same_as_target: Same as target
873 label_display_used_statuses_only: Only display statuses that are used by this tracker
875 label_display_used_statuses_only: Only display statuses that are used by this tracker
874 label_api_access_key: API access key
876 label_api_access_key: API access key
875 label_missing_api_access_key: Missing an API access key
877 label_missing_api_access_key: Missing an API access key
876 label_api_access_key_created_on: "API access key created %{value} ago"
878 label_api_access_key_created_on: "API access key created %{value} ago"
877 label_profile: Profile
879 label_profile: Profile
878 label_subtask_plural: Subtasks
880 label_subtask_plural: Subtasks
879 label_project_copy_notifications: Send email notifications during the project copy
881 label_project_copy_notifications: Send email notifications during the project copy
880 label_principal_search: "Search for user or group:"
882 label_principal_search: "Search for user or group:"
881 label_user_search: "Search for user:"
883 label_user_search: "Search for user:"
882 label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
884 label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
883 label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
885 label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
884 label_issues_visibility_all: All issues
886 label_issues_visibility_all: All issues
885 label_issues_visibility_public: All non private issues
887 label_issues_visibility_public: All non private issues
886 label_issues_visibility_own: Issues created by or assigned to the user
888 label_issues_visibility_own: Issues created by or assigned to the user
887 label_git_report_last_commit: Report last commit for files and directories
889 label_git_report_last_commit: Report last commit for files and directories
888 label_parent_revision: Parent
890 label_parent_revision: Parent
889 label_child_revision: Child
891 label_child_revision: Child
890 label_export_options: "%{export_format} export options"
892 label_export_options: "%{export_format} export options"
891 label_copy_attachments: Copy attachments
893 label_copy_attachments: Copy attachments
892 label_copy_subtasks: Copy subtasks
894 label_copy_subtasks: Copy subtasks
893 label_item_position: "%{position} of %{count}"
895 label_item_position: "%{position} of %{count}"
894 label_completed_versions: Completed versions
896 label_completed_versions: Completed versions
895 label_search_for_watchers: Search for watchers to add
897 label_search_for_watchers: Search for watchers to add
896 label_session_expiration: Session expiration
898 label_session_expiration: Session expiration
897 label_show_closed_projects: View closed projects
899 label_show_closed_projects: View closed projects
898 label_status_transitions: Status transitions
900 label_status_transitions: Status transitions
899 label_fields_permissions: Fields permissions
901 label_fields_permissions: Fields permissions
900 label_readonly: Read-only
902 label_readonly: Read-only
901 label_required: Required
903 label_required: Required
902 label_hidden: Hidden
904 label_hidden: Hidden
903 label_attribute_of_project: "Project's %{name}"
905 label_attribute_of_project: "Project's %{name}"
904 label_attribute_of_issue: "Issue's %{name}"
906 label_attribute_of_issue: "Issue's %{name}"
905 label_attribute_of_author: "Author's %{name}"
907 label_attribute_of_author: "Author's %{name}"
906 label_attribute_of_assigned_to: "Assignee's %{name}"
908 label_attribute_of_assigned_to: "Assignee's %{name}"
907 label_attribute_of_user: "User's %{name}"
909 label_attribute_of_user: "User's %{name}"
908 label_attribute_of_fixed_version: "Target version's %{name}"
910 label_attribute_of_fixed_version: "Target version's %{name}"
909 label_cross_project_descendants: With subprojects
911 label_cross_project_descendants: With subprojects
910 label_cross_project_tree: With project tree
912 label_cross_project_tree: With project tree
911 label_cross_project_hierarchy: With project hierarchy
913 label_cross_project_hierarchy: With project hierarchy
912 label_cross_project_system: With all projects
914 label_cross_project_system: With all projects
913 label_gantt_progress_line: Progress line
915 label_gantt_progress_line: Progress line
914 label_visibility_private: to me only
916 label_visibility_private: to me only
915 label_visibility_roles: to these roles only
917 label_visibility_roles: to these roles only
916 label_visibility_public: to any users
918 label_visibility_public: to any users
917 label_link: Link
919 label_link: Link
918 label_only: only
920 label_only: only
919 label_drop_down_list: drop-down list
921 label_drop_down_list: drop-down list
920 label_checkboxes: checkboxes
922 label_checkboxes: checkboxes
921 label_radio_buttons: radio buttons
923 label_radio_buttons: radio buttons
922 label_link_values_to: Link values to URL
924 label_link_values_to: Link values to URL
923 label_custom_field_select_type: Select the type of object to which the custom field is to be attached
925 label_custom_field_select_type: Select the type of object to which the custom field is to be attached
924 label_check_for_updates: Check for updates
926 label_check_for_updates: Check for updates
925 label_latest_compatible_version: Latest compatible version
927 label_latest_compatible_version: Latest compatible version
926 label_unknown_plugin: Unknown plugin
928 label_unknown_plugin: Unknown plugin
927 label_add_projects: Add projects
929 label_add_projects: Add projects
928 label_users_visibility_all: All active users
930 label_users_visibility_all: All active users
929 label_users_visibility_members_of_visible_projects: Members of visible projects
931 label_users_visibility_members_of_visible_projects: Members of visible projects
930 label_edit_attachments: Edit attached files
932 label_edit_attachments: Edit attached files
931 label_link_copied_issue: Link copied issue
933 label_link_copied_issue: Link copied issue
932 label_ask: Ask
934 label_ask: Ask
933 label_search_attachments_yes: Search attachment filenames and descriptions
935 label_search_attachments_yes: Search attachment filenames and descriptions
934 label_search_attachments_no: Do not search attachments
936 label_search_attachments_no: Do not search attachments
935 label_search_attachments_only: Search attachments only
937 label_search_attachments_only: Search attachments only
936 label_search_open_issues_only: Open issues only
938 label_search_open_issues_only: Open issues only
937 label_email_address_plural: Emails
939 label_email_address_plural: Emails
938 label_email_address_add: Add email address
940 label_email_address_add: Add email address
939 label_enable_notifications: Enable notifications
941 label_enable_notifications: Enable notifications
940 label_disable_notifications: Disable notifications
942 label_disable_notifications: Disable notifications
941 label_blank_value: blank
943 label_blank_value: blank
942
944
943 button_login: Login
945 button_login: Login
944 button_submit: Submit
946 button_submit: Submit
945 button_save: Save
947 button_save: Save
946 button_check_all: Check all
948 button_check_all: Check all
947 button_uncheck_all: Uncheck all
949 button_uncheck_all: Uncheck all
948 button_collapse_all: Collapse all
950 button_collapse_all: Collapse all
949 button_expand_all: Expand all
951 button_expand_all: Expand all
950 button_delete: Delete
952 button_delete: Delete
951 button_create: Create
953 button_create: Create
952 button_create_and_continue: Create and continue
954 button_create_and_continue: Create and continue
953 button_test: Test
955 button_test: Test
954 button_edit: Edit
956 button_edit: Edit
955 button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
957 button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
956 button_add: Add
958 button_add: Add
957 button_change: Change
959 button_change: Change
958 button_apply: Apply
960 button_apply: Apply
959 button_clear: Clear
961 button_clear: Clear
960 button_lock: Lock
962 button_lock: Lock
961 button_unlock: Unlock
963 button_unlock: Unlock
962 button_download: Download
964 button_download: Download
963 button_list: List
965 button_list: List
964 button_view: View
966 button_view: View
965 button_move: Move
967 button_move: Move
966 button_move_and_follow: Move and follow
968 button_move_and_follow: Move and follow
967 button_back: Back
969 button_back: Back
968 button_cancel: Cancel
970 button_cancel: Cancel
969 button_activate: Activate
971 button_activate: Activate
970 button_sort: Sort
972 button_sort: Sort
971 button_log_time: Log time
973 button_log_time: Log time
972 button_rollback: Rollback to this version
974 button_rollback: Rollback to this version
973 button_watch: Watch
975 button_watch: Watch
974 button_unwatch: Unwatch
976 button_unwatch: Unwatch
975 button_reply: Reply
977 button_reply: Reply
976 button_archive: Archive
978 button_archive: Archive
977 button_unarchive: Unarchive
979 button_unarchive: Unarchive
978 button_reset: Reset
980 button_reset: Reset
979 button_rename: Rename
981 button_rename: Rename
980 button_change_password: Change password
982 button_change_password: Change password
981 button_copy: Copy
983 button_copy: Copy
982 button_copy_and_follow: Copy and follow
984 button_copy_and_follow: Copy and follow
983 button_annotate: Annotate
985 button_annotate: Annotate
984 button_update: Update
986 button_update: Update
985 button_configure: Configure
987 button_configure: Configure
986 button_quote: Quote
988 button_quote: Quote
987 button_duplicate: Duplicate
989 button_duplicate: Duplicate
988 button_show: Show
990 button_show: Show
989 button_hide: Hide
991 button_hide: Hide
990 button_edit_section: Edit this section
992 button_edit_section: Edit this section
991 button_export: Export
993 button_export: Export
992 button_delete_my_account: Delete my account
994 button_delete_my_account: Delete my account
993 button_close: Close
995 button_close: Close
994 button_reopen: Reopen
996 button_reopen: Reopen
995
997
996 status_active: active
998 status_active: active
997 status_registered: registered
999 status_registered: registered
998 status_locked: locked
1000 status_locked: locked
999
1001
1000 project_status_active: active
1002 project_status_active: active
1001 project_status_closed: closed
1003 project_status_closed: closed
1002 project_status_archived: archived
1004 project_status_archived: archived
1003
1005
1004 version_status_open: open
1006 version_status_open: open
1005 version_status_locked: locked
1007 version_status_locked: locked
1006 version_status_closed: closed
1008 version_status_closed: closed
1007
1009
1008 field_active: Active
1010 field_active: Active
1009
1011
1010 text_select_mail_notifications: Select actions for which email notifications should be sent.
1012 text_select_mail_notifications: Select actions for which email notifications should be sent.
1011 text_regexp_info: eg. ^[A-Z0-9]+$
1013 text_regexp_info: eg. ^[A-Z0-9]+$
1012 text_min_max_length_info: 0 means no restriction
1014 text_min_max_length_info: 0 means no restriction
1013 text_project_destroy_confirmation: Are you sure you want to delete this project and related data?
1015 text_project_destroy_confirmation: Are you sure you want to delete this project and related data?
1014 text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted."
1016 text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted."
1015 text_workflow_edit: Select a role and a tracker to edit the workflow
1017 text_workflow_edit: Select a role and a tracker to edit the workflow
1016 text_are_you_sure: Are you sure?
1018 text_are_you_sure: Are you sure?
1017 text_journal_changed: "%{label} changed from %{old} to %{new}"
1019 text_journal_changed: "%{label} changed from %{old} to %{new}"
1018 text_journal_changed_no_detail: "%{label} updated"
1020 text_journal_changed_no_detail: "%{label} updated"
1019 text_journal_set_to: "%{label} set to %{value}"
1021 text_journal_set_to: "%{label} set to %{value}"
1020 text_journal_deleted: "%{label} deleted (%{old})"
1022 text_journal_deleted: "%{label} deleted (%{old})"
1021 text_journal_added: "%{label} %{value} added"
1023 text_journal_added: "%{label} %{value} added"
1022 text_tip_issue_begin_day: issue beginning this day
1024 text_tip_issue_begin_day: issue beginning this day
1023 text_tip_issue_end_day: issue ending this day
1025 text_tip_issue_end_day: issue ending this day
1024 text_tip_issue_begin_end_day: issue beginning and ending this day
1026 text_tip_issue_begin_end_day: issue beginning and ending this day
1025 text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter.<br />Once saved, the identifier cannot be changed.'
1027 text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter.<br />Once saved, the identifier cannot be changed.'
1026 text_caracters_maximum: "%{count} characters maximum."
1028 text_caracters_maximum: "%{count} characters maximum."
1027 text_caracters_minimum: "Must be at least %{count} characters long."
1029 text_caracters_minimum: "Must be at least %{count} characters long."
1028 text_length_between: "Length between %{min} and %{max} characters."
1030 text_length_between: "Length between %{min} and %{max} characters."
1029 text_tracker_no_workflow: No workflow defined for this tracker
1031 text_tracker_no_workflow: No workflow defined for this tracker
1030 text_unallowed_characters: Unallowed characters
1032 text_unallowed_characters: Unallowed characters
1031 text_comma_separated: Multiple values allowed (comma separated).
1033 text_comma_separated: Multiple values allowed (comma separated).
1032 text_line_separated: Multiple values allowed (one line for each value).
1034 text_line_separated: Multiple values allowed (one line for each value).
1033 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
1035 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
1034 text_issue_added: "Issue %{id} has been reported by %{author}."
1036 text_issue_added: "Issue %{id} has been reported by %{author}."
1035 text_issue_updated: "Issue %{id} has been updated by %{author}."
1037 text_issue_updated: "Issue %{id} has been updated by %{author}."
1036 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content?
1038 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content?
1037 text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?"
1039 text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?"
1038 text_issue_category_destroy_assignments: Remove category assignments
1040 text_issue_category_destroy_assignments: Remove category assignments
1039 text_issue_category_reassign_to: Reassign issues to this category
1041 text_issue_category_reassign_to: Reassign issues to this category
1040 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)."
1042 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)."
1041 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."
1043 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."
1042 text_load_default_configuration: Load the default configuration
1044 text_load_default_configuration: Load the default configuration
1043 text_status_changed_by_changeset: "Applied in changeset %{value}."
1045 text_status_changed_by_changeset: "Applied in changeset %{value}."
1044 text_time_logged_by_changeset: "Applied in changeset %{value}."
1046 text_time_logged_by_changeset: "Applied in changeset %{value}."
1045 text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?'
1047 text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?'
1046 text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)."
1048 text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)."
1047 text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?'
1049 text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?'
1048 text_select_project_modules: 'Select modules to enable for this project:'
1050 text_select_project_modules: 'Select modules to enable for this project:'
1049 text_default_administrator_account_changed: Default administrator account changed
1051 text_default_administrator_account_changed: Default administrator account changed
1050 text_file_repository_writable: Attachments directory writable
1052 text_file_repository_writable: Attachments directory writable
1051 text_plugin_assets_writable: Plugin assets directory writable
1053 text_plugin_assets_writable: Plugin assets directory writable
1052 text_rmagick_available: RMagick available (optional)
1054 text_rmagick_available: RMagick available (optional)
1053 text_convert_available: ImageMagick convert available (optional)
1055 text_convert_available: ImageMagick convert available (optional)
1054 text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?"
1056 text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?"
1055 text_destroy_time_entries: Delete reported hours
1057 text_destroy_time_entries: Delete reported hours
1056 text_assign_time_entries_to_project: Assign reported hours to the project
1058 text_assign_time_entries_to_project: Assign reported hours to the project
1057 text_reassign_time_entries: 'Reassign reported hours to this issue:'
1059 text_reassign_time_entries: 'Reassign reported hours to this issue:'
1058 text_user_wrote: "%{value} wrote:"
1060 text_user_wrote: "%{value} wrote:"
1059 text_enumeration_destroy_question: "%{count} objects are assigned to this value."
1061 text_enumeration_destroy_question: "%{count} objects are assigned to this value."
1060 text_enumeration_category_reassign_to: 'Reassign them to this value:'
1062 text_enumeration_category_reassign_to: 'Reassign them to this value:'
1061 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
1063 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
1062 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."
1064 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."
1063 text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
1065 text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
1064 text_custom_field_possible_values_info: 'One line for each value'
1066 text_custom_field_possible_values_info: 'One line for each value'
1065 text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?"
1067 text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?"
1066 text_wiki_page_nullify_children: "Keep child pages as root pages"
1068 text_wiki_page_nullify_children: "Keep child pages as root pages"
1067 text_wiki_page_destroy_children: "Delete child pages and all their descendants"
1069 text_wiki_page_destroy_children: "Delete child pages and all their descendants"
1068 text_wiki_page_reassign_children: "Reassign child pages to this parent page"
1070 text_wiki_page_reassign_children: "Reassign child pages to this parent page"
1069 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?"
1071 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?"
1070 text_zoom_in: Zoom in
1072 text_zoom_in: Zoom in
1071 text_zoom_out: Zoom out
1073 text_zoom_out: Zoom out
1072 text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page."
1074 text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page."
1073 text_scm_path_encoding_note: "Default: UTF-8"
1075 text_scm_path_encoding_note: "Default: UTF-8"
1074 text_subversion_repository_note: "Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://"
1076 text_subversion_repository_note: "Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://"
1075 text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo)
1077 text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo)
1076 text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
1078 text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
1077 text_scm_command: Command
1079 text_scm_command: Command
1078 text_scm_command_version: Version
1080 text_scm_command_version: Version
1079 text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
1081 text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
1080 text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
1082 text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
1081 text_issue_conflict_resolution_overwrite: "Apply my changes anyway (previous notes will be kept but some changes may be overwritten)"
1083 text_issue_conflict_resolution_overwrite: "Apply my changes anyway (previous notes will be kept but some changes may be overwritten)"
1082 text_issue_conflict_resolution_add_notes: "Add my notes and discard my other changes"
1084 text_issue_conflict_resolution_add_notes: "Add my notes and discard my other changes"
1083 text_issue_conflict_resolution_cancel: "Discard all my changes and redisplay %{link}"
1085 text_issue_conflict_resolution_cancel: "Discard all my changes and redisplay %{link}"
1084 text_account_destroy_confirmation: "Are you sure you want to proceed?\nYour account will be permanently deleted, with no way to reactivate it."
1086 text_account_destroy_confirmation: "Are you sure you want to proceed?\nYour account will be permanently deleted, with no way to reactivate it."
1085 text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
1087 text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
1086 text_project_closed: This project is closed and read-only.
1088 text_project_closed: This project is closed and read-only.
1087 text_turning_multiple_off: "If you disable multiple values, multiple values will be removed in order to preserve only one value per item."
1089 text_turning_multiple_off: "If you disable multiple values, multiple values will be removed in order to preserve only one value per item."
1088
1090
1089 default_role_manager: Manager
1091 default_role_manager: Manager
1090 default_role_developer: Developer
1092 default_role_developer: Developer
1091 default_role_reporter: Reporter
1093 default_role_reporter: Reporter
1092 default_tracker_bug: Bug
1094 default_tracker_bug: Bug
1093 default_tracker_feature: Feature
1095 default_tracker_feature: Feature
1094 default_tracker_support: Support
1096 default_tracker_support: Support
1095 default_issue_status_new: New
1097 default_issue_status_new: New
1096 default_issue_status_in_progress: In Progress
1098 default_issue_status_in_progress: In Progress
1097 default_issue_status_resolved: Resolved
1099 default_issue_status_resolved: Resolved
1098 default_issue_status_feedback: Feedback
1100 default_issue_status_feedback: Feedback
1099 default_issue_status_closed: Closed
1101 default_issue_status_closed: Closed
1100 default_issue_status_rejected: Rejected
1102 default_issue_status_rejected: Rejected
1101 default_doc_category_user: User documentation
1103 default_doc_category_user: User documentation
1102 default_doc_category_tech: Technical documentation
1104 default_doc_category_tech: Technical documentation
1103 default_priority_low: Low
1105 default_priority_low: Low
1104 default_priority_normal: Normal
1106 default_priority_normal: Normal
1105 default_priority_high: High
1107 default_priority_high: High
1106 default_priority_urgent: Urgent
1108 default_priority_urgent: Urgent
1107 default_priority_immediate: Immediate
1109 default_priority_immediate: Immediate
1108 default_activity_design: Design
1110 default_activity_design: Design
1109 default_activity_development: Development
1111 default_activity_development: Development
1110
1112
1111 enumeration_issue_priorities: Issue priorities
1113 enumeration_issue_priorities: Issue priorities
1112 enumeration_doc_categories: Document categories
1114 enumeration_doc_categories: Document categories
1113 enumeration_activities: Activities (time tracking)
1115 enumeration_activities: Activities (time tracking)
1114 enumeration_system_activity: System Activity
1116 enumeration_system_activity: System Activity
1115 description_filter: Filter
1117 description_filter: Filter
1116 description_search: Searchfield
1118 description_search: Searchfield
1117 description_choose_project: Projects
1119 description_choose_project: Projects
1118 description_project_scope: Search scope
1120 description_project_scope: Search scope
1119 description_notes: Notes
1121 description_notes: Notes
1120 description_message_content: Message content
1122 description_message_content: Message content
1121 description_query_sort_criteria_attribute: Sort attribute
1123 description_query_sort_criteria_attribute: Sort attribute
1122 description_query_sort_criteria_direction: Sort direction
1124 description_query_sort_criteria_direction: Sort direction
1123 description_user_mail_notification: Mail notification settings
1125 description_user_mail_notification: Mail notification settings
1124 description_available_columns: Available Columns
1126 description_available_columns: Available Columns
1125 description_selected_columns: Selected Columns
1127 description_selected_columns: Selected Columns
1126 description_all_columns: All Columns
1128 description_all_columns: All Columns
1127 description_issue_category_reassign: Choose issue category
1129 description_issue_category_reassign: Choose issue category
1128 description_wiki_subpages_reassign: Choose new parent page
1130 description_wiki_subpages_reassign: Choose new parent page
1129 description_date_range_list: Choose range from list
1131 description_date_range_list: Choose range from list
1130 description_date_range_interval: Choose range by selecting start and end date
1132 description_date_range_interval: Choose range by selecting start and end date
1131 description_date_from: Enter start date
1133 description_date_from: Enter start date
1132 description_date_to: Enter end date
1134 description_date_to: Enter end date
1133 text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.'
1135 text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.'
@@ -1,1153 +1,1155
1 # French translations for Ruby on Rails
1 # French translations for Ruby on Rails
2 # by Christian Lescuyer (christian@flyingcoders.com)
2 # by Christian Lescuyer (christian@flyingcoders.com)
3 # contributor: Sebastien Grosjean - ZenCocoon.com
3 # contributor: Sebastien Grosjean - ZenCocoon.com
4 # contributor: Thibaut Cuvelier - Developpez.com
4 # contributor: Thibaut Cuvelier - Developpez.com
5
5
6 fr:
6 fr:
7 direction: ltr
7 direction: ltr
8 date:
8 date:
9 formats:
9 formats:
10 default: "%d/%m/%Y"
10 default: "%d/%m/%Y"
11 short: "%e %b"
11 short: "%e %b"
12 long: "%e %B %Y"
12 long: "%e %B %Y"
13 long_ordinal: "%e %B %Y"
13 long_ordinal: "%e %B %Y"
14 only_day: "%e"
14 only_day: "%e"
15
15
16 day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
16 day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
17 abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
17 abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
18
18
19 # Don't forget the nil at the beginning; there's no such thing as a 0th month
19 # Don't forget the nil at the beginning; there's no such thing as a 0th month
20 month_names: [~, janvier, fΓ©vrier, mars, avril, mai, juin, juillet, aoΓ»t, septembre, octobre, novembre, dΓ©cembre]
20 month_names: [~, janvier, fΓ©vrier, mars, avril, mai, juin, juillet, aoΓ»t, septembre, octobre, novembre, dΓ©cembre]
21 abbr_month_names: [~, jan., fΓ©v., mar., avr., mai, juin, juil., aoΓ»t, sept., oct., nov., dΓ©c.]
21 abbr_month_names: [~, jan., fΓ©v., mar., avr., mai, juin, juil., aoΓ»t, sept., oct., nov., dΓ©c.]
22 # Used in date_select and datime_select.
22 # Used in date_select and datime_select.
23 order:
23 order:
24 - :day
24 - :day
25 - :month
25 - :month
26 - :year
26 - :year
27
27
28 time:
28 time:
29 formats:
29 formats:
30 default: "%d/%m/%Y %H:%M"
30 default: "%d/%m/%Y %H:%M"
31 time: "%H:%M"
31 time: "%H:%M"
32 short: "%d %b %H:%M"
32 short: "%d %b %H:%M"
33 long: "%A %d %B %Y %H:%M:%S %Z"
33 long: "%A %d %B %Y %H:%M:%S %Z"
34 long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
34 long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
35 only_second: "%S"
35 only_second: "%S"
36 am: 'am'
36 am: 'am'
37 pm: 'pm'
37 pm: 'pm'
38
38
39 datetime:
39 datetime:
40 distance_in_words:
40 distance_in_words:
41 half_a_minute: "30 secondes"
41 half_a_minute: "30 secondes"
42 less_than_x_seconds:
42 less_than_x_seconds:
43 zero: "moins d'une seconde"
43 zero: "moins d'une seconde"
44 one: "moins d'uneΒ seconde"
44 one: "moins d'uneΒ seconde"
45 other: "moins de %{count}Β secondes"
45 other: "moins de %{count}Β secondes"
46 x_seconds:
46 x_seconds:
47 one: "1Β seconde"
47 one: "1Β seconde"
48 other: "%{count}Β secondes"
48 other: "%{count}Β secondes"
49 less_than_x_minutes:
49 less_than_x_minutes:
50 zero: "moins d'une minute"
50 zero: "moins d'une minute"
51 one: "moins d'uneΒ minute"
51 one: "moins d'uneΒ minute"
52 other: "moins de %{count}Β minutes"
52 other: "moins de %{count}Β minutes"
53 x_minutes:
53 x_minutes:
54 one: "1Β minute"
54 one: "1Β minute"
55 other: "%{count}Β minutes"
55 other: "%{count}Β minutes"
56 about_x_hours:
56 about_x_hours:
57 one: "environ une heure"
57 one: "environ une heure"
58 other: "environ %{count}Β heures"
58 other: "environ %{count}Β heures"
59 x_hours:
59 x_hours:
60 one: "une heure"
60 one: "une heure"
61 other: "%{count}Β heures"
61 other: "%{count}Β heures"
62 x_days:
62 x_days:
63 one: "unΒ jour"
63 one: "unΒ jour"
64 other: "%{count}Β jours"
64 other: "%{count}Β jours"
65 about_x_months:
65 about_x_months:
66 one: "environ un mois"
66 one: "environ un mois"
67 other: "environ %{count}Β mois"
67 other: "environ %{count}Β mois"
68 x_months:
68 x_months:
69 one: "unΒ mois"
69 one: "unΒ mois"
70 other: "%{count}Β mois"
70 other: "%{count}Β mois"
71 about_x_years:
71 about_x_years:
72 one: "environ un an"
72 one: "environ un an"
73 other: "environ %{count}Β ans"
73 other: "environ %{count}Β ans"
74 over_x_years:
74 over_x_years:
75 one: "plus d'un an"
75 one: "plus d'un an"
76 other: "plus de %{count}Β ans"
76 other: "plus de %{count}Β ans"
77 almost_x_years:
77 almost_x_years:
78 one: "presqu'un an"
78 one: "presqu'un an"
79 other: "presque %{count} ans"
79 other: "presque %{count} ans"
80 prompts:
80 prompts:
81 year: "AnnΓ©e"
81 year: "AnnΓ©e"
82 month: "Mois"
82 month: "Mois"
83 day: "Jour"
83 day: "Jour"
84 hour: "Heure"
84 hour: "Heure"
85 minute: "Minute"
85 minute: "Minute"
86 second: "Seconde"
86 second: "Seconde"
87
87
88 number:
88 number:
89 format:
89 format:
90 precision: 3
90 precision: 3
91 separator: ','
91 separator: ','
92 delimiter: 'Β '
92 delimiter: 'Β '
93 currency:
93 currency:
94 format:
94 format:
95 unit: '€'
95 unit: '€'
96 precision: 2
96 precision: 2
97 format: '%nΒ %u'
97 format: '%nΒ %u'
98 human:
98 human:
99 format:
99 format:
100 precision: 3
100 precision: 3
101 storage_units:
101 storage_units:
102 format: "%n %u"
102 format: "%n %u"
103 units:
103 units:
104 byte:
104 byte:
105 one: "octet"
105 one: "octet"
106 other: "octets"
106 other: "octets"
107 kb: "ko"
107 kb: "ko"
108 mb: "Mo"
108 mb: "Mo"
109 gb: "Go"
109 gb: "Go"
110 tb: "To"
110 tb: "To"
111
111
112 support:
112 support:
113 array:
113 array:
114 sentence_connector: 'et'
114 sentence_connector: 'et'
115 skip_last_comma: true
115 skip_last_comma: true
116 word_connector: ", "
116 word_connector: ", "
117 two_words_connector: " et "
117 two_words_connector: " et "
118 last_word_connector: " et "
118 last_word_connector: " et "
119
119
120 activerecord:
120 activerecord:
121 errors:
121 errors:
122 template:
122 template:
123 header:
123 header:
124 one: "Impossible d'enregistrer %{model} : une erreur"
124 one: "Impossible d'enregistrer %{model} : une erreur"
125 other: "Impossible d'enregistrer %{model} : %{count} erreurs."
125 other: "Impossible d'enregistrer %{model} : %{count} erreurs."
126 body: "Veuillez vΓ©rifier les champs suivantsΒ :"
126 body: "Veuillez vΓ©rifier les champs suivantsΒ :"
127 messages:
127 messages:
128 inclusion: "n'est pas inclus(e) dans la liste"
128 inclusion: "n'est pas inclus(e) dans la liste"
129 exclusion: "n'est pas disponible"
129 exclusion: "n'est pas disponible"
130 invalid: "n'est pas valide"
130 invalid: "n'est pas valide"
131 confirmation: "ne concorde pas avec la confirmation"
131 confirmation: "ne concorde pas avec la confirmation"
132 accepted: "doit Γͺtre acceptΓ©(e)"
132 accepted: "doit Γͺtre acceptΓ©(e)"
133 empty: "doit Γͺtre renseignΓ©(e)"
133 empty: "doit Γͺtre renseignΓ©(e)"
134 blank: "doit Γͺtre renseignΓ©(e)"
134 blank: "doit Γͺtre renseignΓ©(e)"
135 too_long: "est trop long (pas plus de %{count} caractères)"
135 too_long: "est trop long (pas plus de %{count} caractères)"
136 too_short: "est trop court (au moins %{count} caractères)"
136 too_short: "est trop court (au moins %{count} caractères)"
137 wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)"
137 wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)"
138 taken: "est dΓ©jΓ  utilisΓ©"
138 taken: "est dΓ©jΓ  utilisΓ©"
139 not_a_number: "n'est pas un nombre"
139 not_a_number: "n'est pas un nombre"
140 not_a_date: "n'est pas une date valide"
140 not_a_date: "n'est pas une date valide"
141 greater_than: "doit Γͺtre supΓ©rieur Γ  %{count}"
141 greater_than: "doit Γͺtre supΓ©rieur Γ  %{count}"
142 greater_than_or_equal_to: "doit Γͺtre supΓ©rieur ou Γ©gal Γ  %{count}"
142 greater_than_or_equal_to: "doit Γͺtre supΓ©rieur ou Γ©gal Γ  %{count}"
143 equal_to: "doit Γͺtre Γ©gal Γ  %{count}"
143 equal_to: "doit Γͺtre Γ©gal Γ  %{count}"
144 less_than: "doit Γͺtre infΓ©rieur Γ  %{count}"
144 less_than: "doit Γͺtre infΓ©rieur Γ  %{count}"
145 less_than_or_equal_to: "doit Γͺtre infΓ©rieur ou Γ©gal Γ  %{count}"
145 less_than_or_equal_to: "doit Γͺtre infΓ©rieur ou Γ©gal Γ  %{count}"
146 odd: "doit Γͺtre impair"
146 odd: "doit Γͺtre impair"
147 even: "doit Γͺtre pair"
147 even: "doit Γͺtre pair"
148 greater_than_start_date: "doit Γͺtre postΓ©rieure Γ  la date de dΓ©but"
148 greater_than_start_date: "doit Γͺtre postΓ©rieure Γ  la date de dΓ©but"
149 not_same_project: "n'appartient pas au mΓͺme projet"
149 not_same_project: "n'appartient pas au mΓͺme projet"
150 circular_dependency: "Cette relation crΓ©erait une dΓ©pendance circulaire"
150 circular_dependency: "Cette relation crΓ©erait une dΓ©pendance circulaire"
151 cant_link_an_issue_with_a_descendant: "Une demande ne peut pas Γͺtre liΓ©e Γ  l'une de ses sous-tΓ’ches"
151 cant_link_an_issue_with_a_descendant: "Une demande ne peut pas Γͺtre liΓ©e Γ  l'une de ses sous-tΓ’ches"
152 earlier_than_minimum_start_date: "ne peut pas Γͺtre antΓ©rieure au %{date} Γ  cause des demandes qui prΓ©cΓ¨dent"
152 earlier_than_minimum_start_date: "ne peut pas Γͺtre antΓ©rieure au %{date} Γ  cause des demandes qui prΓ©cΓ¨dent"
153
153
154 actionview_instancetag_blank_option: Choisir
154 actionview_instancetag_blank_option: Choisir
155
155
156 general_text_No: 'Non'
156 general_text_No: 'Non'
157 general_text_Yes: 'Oui'
157 general_text_Yes: 'Oui'
158 general_text_no: 'non'
158 general_text_no: 'non'
159 general_text_yes: 'oui'
159 general_text_yes: 'oui'
160 general_lang_name: 'French (FranΓ§ais)'
160 general_lang_name: 'French (FranΓ§ais)'
161 general_csv_separator: ';'
161 general_csv_separator: ';'
162 general_csv_decimal_separator: ','
162 general_csv_decimal_separator: ','
163 general_csv_encoding: ISO-8859-1
163 general_csv_encoding: ISO-8859-1
164 general_pdf_fontname: freesans
164 general_pdf_fontname: freesans
165 general_first_day_of_week: '1'
165 general_first_day_of_week: '1'
166
166
167 notice_account_updated: Le compte a été mis à jour avec succès.
167 notice_account_updated: Le compte a été mis à jour avec succès.
168 notice_account_invalid_creditentials: Identifiant ou mot de passe invalide.
168 notice_account_invalid_creditentials: Identifiant ou mot de passe invalide.
169 notice_account_password_updated: Mot de passe mis à jour avec succès.
169 notice_account_password_updated: Mot de passe mis à jour avec succès.
170 notice_account_wrong_password: Mot de passe incorrect
170 notice_account_wrong_password: Mot de passe incorrect
171 notice_account_register_done: Un message contenant les instructions pour activer votre compte vous a Γ©tΓ© envoyΓ© Γ  l'adresse %{email}.
171 notice_account_register_done: Un message contenant les instructions pour activer votre compte vous a Γ©tΓ© envoyΓ© Γ  l'adresse %{email}.
172 notice_account_unknown_email: Aucun compte ne correspond Γ  cette adresse.
172 notice_account_unknown_email: Aucun compte ne correspond Γ  cette adresse.
173 notice_account_not_activated_yet: Vous n'avez pas encore activΓ© votre compte. Si vous voulez recevoir un nouveau message d'activation, veuillez <a href="%{url}">cliquer sur ce lien</a>.
173 notice_account_not_activated_yet: Vous n'avez pas encore activΓ© votre compte. Si vous voulez recevoir un nouveau message d'activation, veuillez <a href="%{url}">cliquer sur ce lien</a>.
174 notice_account_locked: Votre compte est verrouillΓ©.
174 notice_account_locked: Votre compte est verrouillΓ©.
175 notice_can_t_change_password: Ce compte utilise une authentification externe. Impossible de changer le mot de passe.
175 notice_can_t_change_password: Ce compte utilise une authentification externe. Impossible de changer le mot de passe.
176 notice_account_lost_email_sent: Un message contenant les instructions pour choisir un nouveau mot de passe vous a Γ©tΓ© envoyΓ©.
176 notice_account_lost_email_sent: Un message contenant les instructions pour choisir un nouveau mot de passe vous a Γ©tΓ© envoyΓ©.
177 notice_account_activated: Votre compte a Γ©tΓ© activΓ©. Vous pouvez Γ  prΓ©sent vous connecter.
177 notice_account_activated: Votre compte a Γ©tΓ© activΓ©. Vous pouvez Γ  prΓ©sent vous connecter.
178 notice_successful_create: Création effectuée avec succès.
178 notice_successful_create: Création effectuée avec succès.
179 notice_successful_update: Mise à jour effectuée avec succès.
179 notice_successful_update: Mise à jour effectuée avec succès.
180 notice_successful_delete: Suppression effectuée avec succès.
180 notice_successful_delete: Suppression effectuée avec succès.
181 notice_successful_connection: Connexion rΓ©ussie.
181 notice_successful_connection: Connexion rΓ©ussie.
182 notice_file_not_found: "La page Γ  laquelle vous souhaitez accΓ©der n'existe pas ou a Γ©tΓ© supprimΓ©e."
182 notice_file_not_found: "La page Γ  laquelle vous souhaitez accΓ©der n'existe pas ou a Γ©tΓ© supprimΓ©e."
183 notice_locking_conflict: Les donnΓ©es ont Γ©tΓ© mises Γ  jour par un autre utilisateur. Mise Γ  jour impossible.
183 notice_locking_conflict: Les donnΓ©es ont Γ©tΓ© mises Γ  jour par un autre utilisateur. Mise Γ  jour impossible.
184 notice_not_authorized: "Vous n'Γͺtes pas autorisΓ© Γ  accΓ©der Γ  cette page."
184 notice_not_authorized: "Vous n'Γͺtes pas autorisΓ© Γ  accΓ©der Γ  cette page."
185 notice_not_authorized_archived_project: Le projet auquel vous tentez d'accΓ©der a Γ©tΓ© archivΓ©.
185 notice_not_authorized_archived_project: Le projet auquel vous tentez d'accΓ©der a Γ©tΓ© archivΓ©.
186 notice_email_sent: "Un email a Γ©tΓ© envoyΓ© Γ  %{value}"
186 notice_email_sent: "Un email a Γ©tΓ© envoyΓ© Γ  %{value}"
187 notice_email_error: "Erreur lors de l'envoi de l'email (%{value})"
187 notice_email_error: "Erreur lors de l'envoi de l'email (%{value})"
188 notice_feeds_access_key_reseted: "Votre clé d'accès aux flux Atom a été réinitialisée."
188 notice_feeds_access_key_reseted: "Votre clé d'accès aux flux Atom a été réinitialisée."
189 notice_api_access_key_reseted: Votre clé d'accès API a été réinitialisée.
189 notice_api_access_key_reseted: Votre clé d'accès API a été réinitialisée.
190 notice_failed_to_save_issues: "%{count} demande(s) sur les %{total} sΓ©lectionnΓ©es n'ont pas pu Γͺtre mise(s) Γ  jour : %{ids}."
190 notice_failed_to_save_issues: "%{count} demande(s) sur les %{total} sΓ©lectionnΓ©es n'ont pas pu Γͺtre mise(s) Γ  jour : %{ids}."
191 notice_failed_to_save_time_entries: "%{count} temps passΓ©(s) sur les %{total} sΓ©lectionnΓ©s n'ont pas pu Γͺtre mis Γ  jour: %{ids}."
191 notice_failed_to_save_time_entries: "%{count} temps passΓ©(s) sur les %{total} sΓ©lectionnΓ©s n'ont pas pu Γͺtre mis Γ  jour: %{ids}."
192 notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: %{errors}."
192 notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: %{errors}."
193 notice_no_issue_selected: "Aucune demande sΓ©lectionnΓ©e ! Cochez les demandes que vous voulez mettre Γ  jour."
193 notice_no_issue_selected: "Aucune demande sΓ©lectionnΓ©e ! Cochez les demandes que vous voulez mettre Γ  jour."
194 notice_account_pending: "Votre compte a été créé et attend l'approbation de l'administrateur."
194 notice_account_pending: "Votre compte a été créé et attend l'approbation de l'administrateur."
195 notice_default_data_loaded: Paramétrage par défaut chargé avec succès.
195 notice_default_data_loaded: Paramétrage par défaut chargé avec succès.
196 notice_unable_delete_version: Impossible de supprimer cette version.
196 notice_unable_delete_version: Impossible de supprimer cette version.
197 notice_unable_delete_time_entry: Impossible de supprimer le temps passΓ©.
197 notice_unable_delete_time_entry: Impossible de supprimer le temps passΓ©.
198 notice_issue_done_ratios_updated: L'avancement des demandes a Γ©tΓ© mis Γ  jour.
198 notice_issue_done_ratios_updated: L'avancement des demandes a Γ©tΓ© mis Γ  jour.
199 notice_gantt_chart_truncated: "Le diagramme a Γ©tΓ© tronquΓ© car il excΓ¨de le nombre maximal d'Γ©lΓ©ments pouvant Γͺtre affichΓ©s (%{max})"
199 notice_gantt_chart_truncated: "Le diagramme a Γ©tΓ© tronquΓ© car il excΓ¨de le nombre maximal d'Γ©lΓ©ments pouvant Γͺtre affichΓ©s (%{max})"
200 notice_issue_successful_create: "Demande %{id} créée."
200 notice_issue_successful_create: "Demande %{id} créée."
201 notice_issue_update_conflict: "La demande a Γ©tΓ© mise Γ  jour par un autre utilisateur pendant que vous la modifiez."
201 notice_issue_update_conflict: "La demande a Γ©tΓ© mise Γ  jour par un autre utilisateur pendant que vous la modifiez."
202 notice_account_deleted: "Votre compte a Γ©tΓ© dΓ©finitivement supprimΓ©."
202 notice_account_deleted: "Votre compte a Γ©tΓ© dΓ©finitivement supprimΓ©."
203 notice_user_successful_create: "Utilisateur %{id} créé."
203 notice_user_successful_create: "Utilisateur %{id} créé."
204 notice_new_password_must_be_different: Votre nouveau mot de passe doit Γͺtre diffΓ©rent de votre mot de passe actuel
204 notice_new_password_must_be_different: Votre nouveau mot de passe doit Γͺtre diffΓ©rent de votre mot de passe actuel
205
205
206 error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramΓ©trage : %{value}"
206 error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramΓ©trage : %{value}"
207 error_scm_not_found: "L'entrΓ©e et/ou la rΓ©vision demandΓ©e n'existe pas dans le dΓ©pΓ΄t."
207 error_scm_not_found: "L'entrΓ©e et/ou la rΓ©vision demandΓ©e n'existe pas dans le dΓ©pΓ΄t."
208 error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt : %{value}"
208 error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt : %{value}"
209 error_scm_annotate: "L'entrΓ©e n'existe pas ou ne peut pas Γͺtre annotΓ©e."
209 error_scm_annotate: "L'entrΓ©e n'existe pas ou ne peut pas Γͺtre annotΓ©e."
210 error_scm_annotate_big_text_file: Cette entrΓ©e ne peut pas Γͺtre annotΓ©e car elle excΓ¨de la taille maximale.
210 error_scm_annotate_big_text_file: Cette entrΓ©e ne peut pas Γͺtre annotΓ©e car elle excΓ¨de la taille maximale.
211 error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas Γ  ce projet"
211 error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas Γ  ce projet"
212 error_no_tracker_in_project: "Aucun tracker n'est associΓ© Γ  ce projet. VΓ©rifier la configuration du projet."
212 error_no_tracker_in_project: "Aucun tracker n'est associΓ© Γ  ce projet. VΓ©rifier la configuration du projet."
213 error_no_default_issue_status: "Aucun statut de demande n'est dΓ©fini par dΓ©faut. VΓ©rifier votre configuration (Administration -> Statuts de demandes)."
213 error_no_default_issue_status: "Aucun statut de demande n'est dΓ©fini par dΓ©faut. VΓ©rifier votre configuration (Administration -> Statuts de demandes)."
214 error_can_not_delete_custom_field: Impossible de supprimer le champ personnalisΓ©
214 error_can_not_delete_custom_field: Impossible de supprimer le champ personnalisΓ©
215 error_can_not_delete_tracker: Ce tracker contient des demandes et ne peut pas Γͺtre supprimΓ©.
215 error_can_not_delete_tracker: Ce tracker contient des demandes et ne peut pas Γͺtre supprimΓ©.
216 error_can_not_remove_role: Ce rΓ΄le est utilisΓ© et ne peut pas Γͺtre supprimΓ©.
216 error_can_not_remove_role: Ce rΓ΄le est utilisΓ© et ne peut pas Γͺtre supprimΓ©.
217 error_can_not_reopen_issue_on_closed_version: 'Une demande assignΓ©e Γ  une version fermΓ©e ne peut pas Γͺtre rΓ©ouverte'
217 error_can_not_reopen_issue_on_closed_version: 'Une demande assignΓ©e Γ  une version fermΓ©e ne peut pas Γͺtre rΓ©ouverte'
218 error_can_not_archive_project: "Ce projet ne peut pas Γͺtre archivΓ©"
218 error_can_not_archive_project: "Ce projet ne peut pas Γͺtre archivΓ©"
219 error_issue_done_ratios_not_updated: L'avancement des demandes n'a pas pu Γͺtre mis Γ  jour.
219 error_issue_done_ratios_not_updated: L'avancement des demandes n'a pas pu Γͺtre mis Γ  jour.
220 error_workflow_copy_source: 'Veuillez sΓ©lectionner un tracker et/ou un rΓ΄le source'
220 error_workflow_copy_source: 'Veuillez sΓ©lectionner un tracker et/ou un rΓ΄le source'
221 error_workflow_copy_target: 'Veuillez sΓ©lectionner les trackers et rΓ΄les cibles'
221 error_workflow_copy_target: 'Veuillez sΓ©lectionner les trackers et rΓ΄les cibles'
222 error_unable_delete_issue_status: Impossible de supprimer le statut de demande
222 error_unable_delete_issue_status: Impossible de supprimer le statut de demande
223 error_unable_to_connect: Connexion impossible (%{value})
223 error_unable_to_connect: Connexion impossible (%{value})
224 error_attachment_too_big: Ce fichier ne peut pas Γͺtre attachΓ© car il excΓ¨de la taille maximale autorisΓ©e (%{max_size})
224 error_attachment_too_big: Ce fichier ne peut pas Γͺtre attachΓ© car il excΓ¨de la taille maximale autorisΓ©e (%{max_size})
225 error_session_expired: "Votre session a expirΓ©. Veuillez vous reconnecter."
225 error_session_expired: "Votre session a expirΓ©. Veuillez vous reconnecter."
226 warning_attachments_not_saved: "%{count} fichier(s) n'ont pas pu Γͺtre sauvegardΓ©s."
226 warning_attachments_not_saved: "%{count} fichier(s) n'ont pas pu Γͺtre sauvegardΓ©s."
227 error_password_expired: "Votre mot de passe a expirΓ© ou nΓ©cessite d'Γͺtre changΓ©."
227
228
228 mail_subject_lost_password: "Votre mot de passe %{value}"
229 mail_subject_lost_password: "Votre mot de passe %{value}"
229 mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant :'
230 mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant :'
230 mail_subject_register: "Activation de votre compte %{value}"
231 mail_subject_register: "Activation de votre compte %{value}"
231 mail_body_register: 'Pour activer votre compte, cliquez sur le lien suivant :'
232 mail_body_register: 'Pour activer votre compte, cliquez sur le lien suivant :'
232 mail_body_account_information_external: "Vous pouvez utiliser votre compte %{value} pour vous connecter."
233 mail_body_account_information_external: "Vous pouvez utiliser votre compte %{value} pour vous connecter."
233 mail_body_account_information: Paramètres de connexion de votre compte
234 mail_body_account_information: Paramètres de connexion de votre compte
234 mail_subject_account_activation_request: "Demande d'activation d'un compte %{value}"
235 mail_subject_account_activation_request: "Demande d'activation d'un compte %{value}"
235 mail_body_account_activation_request: "Un nouvel utilisateur (%{value}) s'est inscrit. Son compte nΓ©cessite votre approbation :"
236 mail_body_account_activation_request: "Un nouvel utilisateur (%{value}) s'est inscrit. Son compte nΓ©cessite votre approbation :"
236 mail_subject_reminder: "%{count} demande(s) arrivent Γ  Γ©chΓ©ance (%{days})"
237 mail_subject_reminder: "%{count} demande(s) arrivent Γ  Γ©chΓ©ance (%{days})"
237 mail_body_reminder: "%{count} demande(s) qui vous sont assignΓ©es arrivent Γ  Γ©chΓ©ance dans les %{days} prochains jours :"
238 mail_body_reminder: "%{count} demande(s) qui vous sont assignΓ©es arrivent Γ  Γ©chΓ©ance dans les %{days} prochains jours :"
238 mail_subject_wiki_content_added: "Page wiki '%{id}' ajoutΓ©e"
239 mail_subject_wiki_content_added: "Page wiki '%{id}' ajoutΓ©e"
239 mail_body_wiki_content_added: "La page wiki '%{id}' a Γ©tΓ© ajoutΓ©e par %{author}."
240 mail_body_wiki_content_added: "La page wiki '%{id}' a Γ©tΓ© ajoutΓ©e par %{author}."
240 mail_subject_wiki_content_updated: "Page wiki '%{id}' mise Γ  jour"
241 mail_subject_wiki_content_updated: "Page wiki '%{id}' mise Γ  jour"
241 mail_body_wiki_content_updated: "La page wiki '%{id}' a Γ©tΓ© mise Γ  jour par %{author}."
242 mail_body_wiki_content_updated: "La page wiki '%{id}' a Γ©tΓ© mise Γ  jour par %{author}."
242
243
243 field_name: Nom
244 field_name: Nom
244 field_description: Description
245 field_description: Description
245 field_summary: RΓ©sumΓ©
246 field_summary: RΓ©sumΓ©
246 field_is_required: Obligatoire
247 field_is_required: Obligatoire
247 field_firstname: PrΓ©nom
248 field_firstname: PrΓ©nom
248 field_lastname: Nom
249 field_lastname: Nom
249 field_mail: Email
250 field_mail: Email
250 field_address: Email
251 field_address: Email
251 field_filename: Fichier
252 field_filename: Fichier
252 field_filesize: Taille
253 field_filesize: Taille
253 field_downloads: TΓ©lΓ©chargements
254 field_downloads: TΓ©lΓ©chargements
254 field_author: Auteur
255 field_author: Auteur
255 field_created_on: Créé
256 field_created_on: Créé
256 field_updated_on: Mis-Γ -jour
257 field_updated_on: Mis-Γ -jour
257 field_closed_on: FermΓ©
258 field_closed_on: FermΓ©
258 field_field_format: Format
259 field_field_format: Format
259 field_is_for_all: Pour tous les projets
260 field_is_for_all: Pour tous les projets
260 field_possible_values: Valeurs possibles
261 field_possible_values: Valeurs possibles
261 field_regexp: Expression régulière
262 field_regexp: Expression régulière
262 field_min_length: Longueur minimum
263 field_min_length: Longueur minimum
263 field_max_length: Longueur maximum
264 field_max_length: Longueur maximum
264 field_value: Valeur
265 field_value: Valeur
265 field_category: CatΓ©gorie
266 field_category: CatΓ©gorie
266 field_title: Titre
267 field_title: Titre
267 field_project: Projet
268 field_project: Projet
268 field_issue: Demande
269 field_issue: Demande
269 field_status: Statut
270 field_status: Statut
270 field_notes: Notes
271 field_notes: Notes
271 field_is_closed: Demande fermΓ©e
272 field_is_closed: Demande fermΓ©e
272 field_is_default: Valeur par dΓ©faut
273 field_is_default: Valeur par dΓ©faut
273 field_tracker: Tracker
274 field_tracker: Tracker
274 field_subject: Sujet
275 field_subject: Sujet
275 field_due_date: EchΓ©ance
276 field_due_date: EchΓ©ance
276 field_assigned_to: AssignΓ© Γ 
277 field_assigned_to: AssignΓ© Γ 
277 field_priority: PrioritΓ©
278 field_priority: PrioritΓ©
278 field_fixed_version: Version cible
279 field_fixed_version: Version cible
279 field_user: Utilisateur
280 field_user: Utilisateur
280 field_principal: Principal
281 field_principal: Principal
281 field_role: RΓ΄le
282 field_role: RΓ΄le
282 field_homepage: Site web
283 field_homepage: Site web
283 field_is_public: Public
284 field_is_public: Public
284 field_parent: Sous-projet de
285 field_parent: Sous-projet de
285 field_is_in_roadmap: Demandes affichΓ©es dans la roadmap
286 field_is_in_roadmap: Demandes affichΓ©es dans la roadmap
286 field_login: Identifiant
287 field_login: Identifiant
287 field_mail_notification: Notifications par mail
288 field_mail_notification: Notifications par mail
288 field_admin: Administrateur
289 field_admin: Administrateur
289 field_last_login_on: Dernière connexion
290 field_last_login_on: Dernière connexion
290 field_language: Langue
291 field_language: Langue
291 field_effective_date: Date
292 field_effective_date: Date
292 field_password: Mot de passe
293 field_password: Mot de passe
293 field_new_password: Nouveau mot de passe
294 field_new_password: Nouveau mot de passe
294 field_password_confirmation: Confirmation
295 field_password_confirmation: Confirmation
295 field_version: Version
296 field_version: Version
296 field_type: Type
297 field_type: Type
297 field_host: HΓ΄te
298 field_host: HΓ΄te
298 field_port: Port
299 field_port: Port
299 field_account: Compte
300 field_account: Compte
300 field_base_dn: Base DN
301 field_base_dn: Base DN
301 field_attr_login: Attribut Identifiant
302 field_attr_login: Attribut Identifiant
302 field_attr_firstname: Attribut PrΓ©nom
303 field_attr_firstname: Attribut PrΓ©nom
303 field_attr_lastname: Attribut Nom
304 field_attr_lastname: Attribut Nom
304 field_attr_mail: Attribut Email
305 field_attr_mail: Attribut Email
305 field_onthefly: CrΓ©ation des utilisateurs Γ  la volΓ©e
306 field_onthefly: CrΓ©ation des utilisateurs Γ  la volΓ©e
306 field_start_date: DΓ©but
307 field_start_date: DΓ©but
307 field_done_ratio: "% rΓ©alisΓ©"
308 field_done_ratio: "% rΓ©alisΓ©"
308 field_auth_source: Mode d'authentification
309 field_auth_source: Mode d'authentification
309 field_hide_mail: Cacher mon adresse mail
310 field_hide_mail: Cacher mon adresse mail
310 field_comments: Commentaire
311 field_comments: Commentaire
311 field_url: URL
312 field_url: URL
312 field_start_page: Page de dΓ©marrage
313 field_start_page: Page de dΓ©marrage
313 field_subproject: Sous-projet
314 field_subproject: Sous-projet
314 field_hours: Heures
315 field_hours: Heures
315 field_activity: ActivitΓ©
316 field_activity: ActivitΓ©
316 field_spent_on: Date
317 field_spent_on: Date
317 field_identifier: Identifiant
318 field_identifier: Identifiant
318 field_is_filter: UtilisΓ© comme filtre
319 field_is_filter: UtilisΓ© comme filtre
319 field_issue_to: Demande liΓ©e
320 field_issue_to: Demande liΓ©e
320 field_delay: Retard
321 field_delay: Retard
321 field_assignable: Demandes assignables Γ  ce rΓ΄le
322 field_assignable: Demandes assignables Γ  ce rΓ΄le
322 field_redirect_existing_links: Rediriger les liens existants
323 field_redirect_existing_links: Rediriger les liens existants
323 field_estimated_hours: Temps estimΓ©
324 field_estimated_hours: Temps estimΓ©
324 field_column_names: Colonnes
325 field_column_names: Colonnes
325 field_time_entries: Temps passΓ©
326 field_time_entries: Temps passΓ©
326 field_time_zone: Fuseau horaire
327 field_time_zone: Fuseau horaire
327 field_searchable: UtilisΓ© pour les recherches
328 field_searchable: UtilisΓ© pour les recherches
328 field_default_value: Valeur par dΓ©faut
329 field_default_value: Valeur par dΓ©faut
329 field_comments_sorting: Afficher les commentaires
330 field_comments_sorting: Afficher les commentaires
330 field_parent_title: Page parent
331 field_parent_title: Page parent
331 field_editable: Modifiable
332 field_editable: Modifiable
332 field_watcher: Observateur
333 field_watcher: Observateur
333 field_identity_url: URL OpenID
334 field_identity_url: URL OpenID
334 field_content: Contenu
335 field_content: Contenu
335 field_group_by: Grouper par
336 field_group_by: Grouper par
336 field_sharing: Partage
337 field_sharing: Partage
337 field_parent_issue: TΓ’che parente
338 field_parent_issue: TΓ’che parente
338 field_member_of_group: Groupe de l'assignΓ©
339 field_member_of_group: Groupe de l'assignΓ©
339 field_assigned_to_role: RΓ΄le de l'assignΓ©
340 field_assigned_to_role: RΓ΄le de l'assignΓ©
340 field_text: Champ texte
341 field_text: Champ texte
341 field_visible: Visible
342 field_visible: Visible
342 field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardΓ©"
343 field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardΓ©"
343 field_issues_visibility: VisibilitΓ© des demandes
344 field_issues_visibility: VisibilitΓ© des demandes
344 field_is_private: PrivΓ©e
345 field_is_private: PrivΓ©e
345 field_commit_logs_encoding: Encodage des messages de commit
346 field_commit_logs_encoding: Encodage des messages de commit
346 field_scm_path_encoding: Encodage des chemins
347 field_scm_path_encoding: Encodage des chemins
347 field_path_to_repository: Chemin du dΓ©pΓ΄t
348 field_path_to_repository: Chemin du dΓ©pΓ΄t
348 field_root_directory: RΓ©pertoire racine
349 field_root_directory: RΓ©pertoire racine
349 field_cvsroot: CVSROOT
350 field_cvsroot: CVSROOT
350 field_cvs_module: Module
351 field_cvs_module: Module
351 field_repository_is_default: DΓ©pΓ΄t principal
352 field_repository_is_default: DΓ©pΓ΄t principal
352 field_multiple: Valeurs multiples
353 field_multiple: Valeurs multiples
353 field_auth_source_ldap_filter: Filtre LDAP
354 field_auth_source_ldap_filter: Filtre LDAP
354 field_core_fields: Champs standards
355 field_core_fields: Champs standards
355 field_timeout: "Timeout (en secondes)"
356 field_timeout: "Timeout (en secondes)"
356 field_board_parent: Forum parent
357 field_board_parent: Forum parent
357 field_private_notes: Notes privΓ©es
358 field_private_notes: Notes privΓ©es
358 field_inherit_members: HΓ©riter les membres
359 field_inherit_members: HΓ©riter les membres
359 field_generate_password: GΓ©nΓ©rer un mot de passe
360 field_generate_password: GΓ©nΓ©rer un mot de passe
360 field_must_change_passwd: Doit changer de mot de passe Γ  la prochaine connexion
361 field_must_change_passwd: Doit changer de mot de passe Γ  la prochaine connexion
361 field_default_status: Statut par dΓ©faut
362 field_default_status: Statut par dΓ©faut
362 field_users_visibility: VisibilitΓ© des utilisateurs
363 field_users_visibility: VisibilitΓ© des utilisateurs
363
364
364 setting_app_title: Titre de l'application
365 setting_app_title: Titre de l'application
365 setting_app_subtitle: Sous-titre de l'application
366 setting_app_subtitle: Sous-titre de l'application
366 setting_welcome_text: Texte d'accueil
367 setting_welcome_text: Texte d'accueil
367 setting_default_language: Langue par dΓ©faut
368 setting_default_language: Langue par dΓ©faut
368 setting_login_required: Authentification obligatoire
369 setting_login_required: Authentification obligatoire
369 setting_self_registration: Inscription des nouveaux utilisateurs
370 setting_self_registration: Inscription des nouveaux utilisateurs
370 setting_attachment_max_size: Taille maximale des fichiers
371 setting_attachment_max_size: Taille maximale des fichiers
371 setting_issues_export_limit: Limite d'exportation des demandes
372 setting_issues_export_limit: Limite d'exportation des demandes
372 setting_mail_from: Adresse d'Γ©mission
373 setting_mail_from: Adresse d'Γ©mission
373 setting_bcc_recipients: Destinataires en copie cachΓ©e (cci)
374 setting_bcc_recipients: Destinataires en copie cachΓ©e (cci)
374 setting_plain_text_mail: Mail en texte brut (non HTML)
375 setting_plain_text_mail: Mail en texte brut (non HTML)
375 setting_host_name: Nom d'hΓ΄te et chemin
376 setting_host_name: Nom d'hΓ΄te et chemin
376 setting_text_formatting: Formatage du texte
377 setting_text_formatting: Formatage du texte
377 setting_wiki_compression: Compression de l'historique des pages wiki
378 setting_wiki_compression: Compression de l'historique des pages wiki
378 setting_feeds_limit: Nombre maximal d'Γ©lΓ©ments dans les flux Atom
379 setting_feeds_limit: Nombre maximal d'Γ©lΓ©ments dans les flux Atom
379 setting_default_projects_public: DΓ©finir les nouveaux projets comme publics par dΓ©faut
380 setting_default_projects_public: DΓ©finir les nouveaux projets comme publics par dΓ©faut
380 setting_autofetch_changesets: RΓ©cupΓ©ration automatique des commits
381 setting_autofetch_changesets: RΓ©cupΓ©ration automatique des commits
381 setting_sys_api_enabled: Activer les WS pour la gestion des dΓ©pΓ΄ts
382 setting_sys_api_enabled: Activer les WS pour la gestion des dΓ©pΓ΄ts
382 setting_commit_ref_keywords: Mots-clΓ©s de rΓ©fΓ©rencement
383 setting_commit_ref_keywords: Mots-clΓ©s de rΓ©fΓ©rencement
383 setting_commit_fix_keywords: Mots-clΓ©s de rΓ©solution
384 setting_commit_fix_keywords: Mots-clΓ©s de rΓ©solution
384 setting_autologin: DurΓ©e maximale de connexion automatique
385 setting_autologin: DurΓ©e maximale de connexion automatique
385 setting_date_format: Format de date
386 setting_date_format: Format de date
386 setting_time_format: Format d'heure
387 setting_time_format: Format d'heure
387 setting_cross_project_issue_relations: Autoriser les relations entre demandes de diffΓ©rents projets
388 setting_cross_project_issue_relations: Autoriser les relations entre demandes de diffΓ©rents projets
388 setting_cross_project_subtasks: Autoriser les sous-tΓ’ches dans des projets diffΓ©rents
389 setting_cross_project_subtasks: Autoriser les sous-tΓ’ches dans des projets diffΓ©rents
389 setting_issue_list_default_columns: Colonnes affichΓ©es par dΓ©faut sur la liste des demandes
390 setting_issue_list_default_columns: Colonnes affichΓ©es par dΓ©faut sur la liste des demandes
390 setting_repositories_encodings: Encodages des fichiers et des dΓ©pΓ΄ts
391 setting_repositories_encodings: Encodages des fichiers et des dΓ©pΓ΄ts
391 setting_emails_header: En-tΓͺte des emails
392 setting_emails_header: En-tΓͺte des emails
392 setting_emails_footer: Pied-de-page des emails
393 setting_emails_footer: Pied-de-page des emails
393 setting_protocol: Protocole
394 setting_protocol: Protocole
394 setting_per_page_options: Options d'objets affichΓ©s par page
395 setting_per_page_options: Options d'objets affichΓ©s par page
395 setting_user_format: Format d'affichage des utilisateurs
396 setting_user_format: Format d'affichage des utilisateurs
396 setting_activity_days_default: Nombre de jours affichΓ©s sur l'activitΓ© des projets
397 setting_activity_days_default: Nombre de jours affichΓ©s sur l'activitΓ© des projets
397 setting_display_subprojects_issues: Afficher par dΓ©faut les demandes des sous-projets sur les projets principaux
398 setting_display_subprojects_issues: Afficher par dΓ©faut les demandes des sous-projets sur les projets principaux
398 setting_enabled_scm: SCM activΓ©s
399 setting_enabled_scm: SCM activΓ©s
399 setting_mail_handler_body_delimiters: "Tronquer les emails après l'une de ces lignes"
400 setting_mail_handler_body_delimiters: "Tronquer les emails après l'une de ces lignes"
400 setting_mail_handler_api_enabled: "Activer le WS pour la rΓ©ception d'emails"
401 setting_mail_handler_api_enabled: "Activer le WS pour la rΓ©ception d'emails"
401 setting_mail_handler_api_key: ClΓ© de protection de l'API
402 setting_mail_handler_api_key: ClΓ© de protection de l'API
402 setting_sequential_project_identifiers: GΓ©nΓ©rer des identifiants de projet sΓ©quentiels
403 setting_sequential_project_identifiers: GΓ©nΓ©rer des identifiants de projet sΓ©quentiels
403 setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
404 setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
404 setting_gravatar_default: Image Gravatar par dΓ©faut
405 setting_gravatar_default: Image Gravatar par dΓ©faut
405 setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichΓ©es
406 setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichΓ©es
406 setting_file_max_size_displayed: Taille maximum des fichiers texte affichΓ©s en ligne
407 setting_file_max_size_displayed: Taille maximum des fichiers texte affichΓ©s en ligne
407 setting_repository_log_display_limit: "Nombre maximum de rΓ©visions affichΓ©es sur l'historique d'un fichier"
408 setting_repository_log_display_limit: "Nombre maximum de rΓ©visions affichΓ©es sur l'historique d'un fichier"
408 setting_openid: "Autoriser l'authentification et l'enregistrement OpenID"
409 setting_openid: "Autoriser l'authentification et l'enregistrement OpenID"
410 setting_password_max_age: Expiration des mots de passe après
409 setting_password_min_length: Longueur minimum des mots de passe
411 setting_password_min_length: Longueur minimum des mots de passe
410 setting_new_project_user_role_id: RΓ΄le donnΓ© Γ  un utilisateur non-administrateur qui crΓ©e un projet
412 setting_new_project_user_role_id: RΓ΄le donnΓ© Γ  un utilisateur non-administrateur qui crΓ©e un projet
411 setting_default_projects_modules: Modules activΓ©s par dΓ©faut pour les nouveaux projets
413 setting_default_projects_modules: Modules activΓ©s par dΓ©faut pour les nouveaux projets
412 setting_issue_done_ratio: Calcul de l'avancement des demandes
414 setting_issue_done_ratio: Calcul de l'avancement des demandes
413 setting_issue_done_ratio_issue_field: 'Utiliser le champ % effectuΓ©'
415 setting_issue_done_ratio_issue_field: 'Utiliser le champ % effectuΓ©'
414 setting_issue_done_ratio_issue_status: Utiliser le statut
416 setting_issue_done_ratio_issue_status: Utiliser le statut
415 setting_start_of_week: Jour de dΓ©but des calendriers
417 setting_start_of_week: Jour de dΓ©but des calendriers
416 setting_rest_api_enabled: Activer l'API REST
418 setting_rest_api_enabled: Activer l'API REST
417 setting_cache_formatted_text: Mettre en cache le texte formatΓ©
419 setting_cache_formatted_text: Mettre en cache le texte formatΓ©
418 setting_default_notification_option: Option de notification par dΓ©faut
420 setting_default_notification_option: Option de notification par dΓ©faut
419 setting_commit_logtime_enabled: Permettre la saisie de temps
421 setting_commit_logtime_enabled: Permettre la saisie de temps
420 setting_commit_logtime_activity_id: ActivitΓ© pour le temps saisi
422 setting_commit_logtime_activity_id: ActivitΓ© pour le temps saisi
421 setting_gantt_items_limit: Nombre maximum d'Γ©lΓ©ments affichΓ©s sur le gantt
423 setting_gantt_items_limit: Nombre maximum d'Γ©lΓ©ments affichΓ©s sur le gantt
422 setting_issue_group_assignment: Permettre l'assignement des demandes aux groupes
424 setting_issue_group_assignment: Permettre l'assignement des demandes aux groupes
423 setting_default_issue_start_date_to_creation_date: Donner Γ  la date de dΓ©but d'une nouvelle demande la valeur de la date du jour
425 setting_default_issue_start_date_to_creation_date: Donner Γ  la date de dΓ©but d'une nouvelle demande la valeur de la date du jour
424 setting_commit_cross_project_ref: Permettre le rΓ©fΓ©rencement et la rΓ©solution des demandes de tous les autres projets
426 setting_commit_cross_project_ref: Permettre le rΓ©fΓ©rencement et la rΓ©solution des demandes de tous les autres projets
425 setting_unsubscribe: Permettre aux utilisateurs de supprimer leur propre compte
427 setting_unsubscribe: Permettre aux utilisateurs de supprimer leur propre compte
426 setting_session_lifetime: DurΓ©e de vie maximale des sessions
428 setting_session_lifetime: DurΓ©e de vie maximale des sessions
427 setting_session_timeout: DurΓ©e maximale d'inactivitΓ©
429 setting_session_timeout: DurΓ©e maximale d'inactivitΓ©
428 setting_thumbnails_enabled: Afficher les vignettes des images
430 setting_thumbnails_enabled: Afficher les vignettes des images
429 setting_thumbnails_size: Taille des vignettes (en pixels)
431 setting_thumbnails_size: Taille des vignettes (en pixels)
430 setting_non_working_week_days: Jours non travaillΓ©s
432 setting_non_working_week_days: Jours non travaillΓ©s
431 setting_jsonp_enabled: Activer le support JSONP
433 setting_jsonp_enabled: Activer le support JSONP
432 setting_default_projects_tracker_ids: Trackers par dΓ©faut pour les nouveaux projets
434 setting_default_projects_tracker_ids: Trackers par dΓ©faut pour les nouveaux projets
433 setting_mail_handler_excluded_filenames: Exclure les fichiers attachΓ©s par leur nom
435 setting_mail_handler_excluded_filenames: Exclure les fichiers attachΓ©s par leur nom
434 setting_force_default_language_for_anonymous: Forcer la langue par dΓ©fault pour les utilisateurs anonymes
436 setting_force_default_language_for_anonymous: Forcer la langue par dΓ©fault pour les utilisateurs anonymes
435 setting_force_default_language_for_loggedin: Forcer la langue par dΓ©fault pour les utilisateurs identifiΓ©s
437 setting_force_default_language_for_loggedin: Forcer la langue par dΓ©fault pour les utilisateurs identifiΓ©s
436 setting_link_copied_issue: Lier les demandes lors de la copie
438 setting_link_copied_issue: Lier les demandes lors de la copie
437 setting_max_additional_emails: Nombre maximal d'adresses email additionnelles
439 setting_max_additional_emails: Nombre maximal d'adresses email additionnelles
438 setting_search_results_per_page: RΓ©sultats de recherche affichΓ©s par page
440 setting_search_results_per_page: RΓ©sultats de recherche affichΓ©s par page
439
441
440 permission_add_project: CrΓ©er un projet
442 permission_add_project: CrΓ©er un projet
441 permission_add_subprojects: CrΓ©er des sous-projets
443 permission_add_subprojects: CrΓ©er des sous-projets
442 permission_edit_project: Modifier le projet
444 permission_edit_project: Modifier le projet
443 permission_close_project: Fermer / rΓ©ouvrir le projet
445 permission_close_project: Fermer / rΓ©ouvrir le projet
444 permission_select_project_modules: Choisir les modules
446 permission_select_project_modules: Choisir les modules
445 permission_manage_members: GΓ©rer les membres
447 permission_manage_members: GΓ©rer les membres
446 permission_manage_project_activities: GΓ©rer les activitΓ©s
448 permission_manage_project_activities: GΓ©rer les activitΓ©s
447 permission_manage_versions: GΓ©rer les versions
449 permission_manage_versions: GΓ©rer les versions
448 permission_manage_categories: GΓ©rer les catΓ©gories de demandes
450 permission_manage_categories: GΓ©rer les catΓ©gories de demandes
449 permission_view_issues: Voir les demandes
451 permission_view_issues: Voir les demandes
450 permission_add_issues: CrΓ©er des demandes
452 permission_add_issues: CrΓ©er des demandes
451 permission_edit_issues: Modifier les demandes
453 permission_edit_issues: Modifier les demandes
452 permission_copy_issues: Copier les demandes
454 permission_copy_issues: Copier les demandes
453 permission_manage_issue_relations: GΓ©rer les relations
455 permission_manage_issue_relations: GΓ©rer les relations
454 permission_set_issues_private: Rendre les demandes publiques ou privΓ©es
456 permission_set_issues_private: Rendre les demandes publiques ou privΓ©es
455 permission_set_own_issues_private: Rendre ses propres demandes publiques ou privΓ©es
457 permission_set_own_issues_private: Rendre ses propres demandes publiques ou privΓ©es
456 permission_add_issue_notes: Ajouter des notes
458 permission_add_issue_notes: Ajouter des notes
457 permission_edit_issue_notes: Modifier les notes
459 permission_edit_issue_notes: Modifier les notes
458 permission_edit_own_issue_notes: Modifier ses propres notes
460 permission_edit_own_issue_notes: Modifier ses propres notes
459 permission_view_private_notes: Voir les notes privΓ©es
461 permission_view_private_notes: Voir les notes privΓ©es
460 permission_set_notes_private: Rendre les notes privΓ©es
462 permission_set_notes_private: Rendre les notes privΓ©es
461 permission_move_issues: DΓ©placer les demandes
463 permission_move_issues: DΓ©placer les demandes
462 permission_delete_issues: Supprimer les demandes
464 permission_delete_issues: Supprimer les demandes
463 permission_manage_public_queries: GΓ©rer les requΓͺtes publiques
465 permission_manage_public_queries: GΓ©rer les requΓͺtes publiques
464 permission_save_queries: Sauvegarder les requΓͺtes
466 permission_save_queries: Sauvegarder les requΓͺtes
465 permission_view_gantt: Voir le gantt
467 permission_view_gantt: Voir le gantt
466 permission_view_calendar: Voir le calendrier
468 permission_view_calendar: Voir le calendrier
467 permission_view_issue_watchers: Voir la liste des observateurs
469 permission_view_issue_watchers: Voir la liste des observateurs
468 permission_add_issue_watchers: Ajouter des observateurs
470 permission_add_issue_watchers: Ajouter des observateurs
469 permission_delete_issue_watchers: Supprimer des observateurs
471 permission_delete_issue_watchers: Supprimer des observateurs
470 permission_log_time: Saisir le temps passΓ©
472 permission_log_time: Saisir le temps passΓ©
471 permission_view_time_entries: Voir le temps passΓ©
473 permission_view_time_entries: Voir le temps passΓ©
472 permission_edit_time_entries: Modifier les temps passΓ©s
474 permission_edit_time_entries: Modifier les temps passΓ©s
473 permission_edit_own_time_entries: Modifier son propre temps passΓ©
475 permission_edit_own_time_entries: Modifier son propre temps passΓ©
474 permission_manage_news: GΓ©rer les annonces
476 permission_manage_news: GΓ©rer les annonces
475 permission_comment_news: Commenter les annonces
477 permission_comment_news: Commenter les annonces
476 permission_view_documents: Voir les documents
478 permission_view_documents: Voir les documents
477 permission_add_documents: Ajouter des documents
479 permission_add_documents: Ajouter des documents
478 permission_edit_documents: Modifier les documents
480 permission_edit_documents: Modifier les documents
479 permission_delete_documents: Supprimer les documents
481 permission_delete_documents: Supprimer les documents
480 permission_manage_files: GΓ©rer les fichiers
482 permission_manage_files: GΓ©rer les fichiers
481 permission_view_files: Voir les fichiers
483 permission_view_files: Voir les fichiers
482 permission_manage_wiki: GΓ©rer le wiki
484 permission_manage_wiki: GΓ©rer le wiki
483 permission_rename_wiki_pages: Renommer les pages
485 permission_rename_wiki_pages: Renommer les pages
484 permission_delete_wiki_pages: Supprimer les pages
486 permission_delete_wiki_pages: Supprimer les pages
485 permission_view_wiki_pages: Voir le wiki
487 permission_view_wiki_pages: Voir le wiki
486 permission_view_wiki_edits: "Voir l'historique des modifications"
488 permission_view_wiki_edits: "Voir l'historique des modifications"
487 permission_edit_wiki_pages: Modifier les pages
489 permission_edit_wiki_pages: Modifier les pages
488 permission_delete_wiki_pages_attachments: Supprimer les fichiers joints
490 permission_delete_wiki_pages_attachments: Supprimer les fichiers joints
489 permission_protect_wiki_pages: ProtΓ©ger les pages
491 permission_protect_wiki_pages: ProtΓ©ger les pages
490 permission_manage_repository: GΓ©rer le dΓ©pΓ΄t de sources
492 permission_manage_repository: GΓ©rer le dΓ©pΓ΄t de sources
491 permission_browse_repository: Parcourir les sources
493 permission_browse_repository: Parcourir les sources
492 permission_view_changesets: Voir les rΓ©visions
494 permission_view_changesets: Voir les rΓ©visions
493 permission_commit_access: Droit de commit
495 permission_commit_access: Droit de commit
494 permission_manage_boards: GΓ©rer les forums
496 permission_manage_boards: GΓ©rer les forums
495 permission_view_messages: Voir les messages
497 permission_view_messages: Voir les messages
496 permission_add_messages: Poster un message
498 permission_add_messages: Poster un message
497 permission_edit_messages: Modifier les messages
499 permission_edit_messages: Modifier les messages
498 permission_edit_own_messages: Modifier ses propres messages
500 permission_edit_own_messages: Modifier ses propres messages
499 permission_delete_messages: Supprimer les messages
501 permission_delete_messages: Supprimer les messages
500 permission_delete_own_messages: Supprimer ses propres messages
502 permission_delete_own_messages: Supprimer ses propres messages
501 permission_export_wiki_pages: Exporter les pages
503 permission_export_wiki_pages: Exporter les pages
502 permission_manage_subtasks: GΓ©rer les sous-tΓ’ches
504 permission_manage_subtasks: GΓ©rer les sous-tΓ’ches
503 permission_manage_related_issues: GΓ©rer les demandes associΓ©es
505 permission_manage_related_issues: GΓ©rer les demandes associΓ©es
504
506
505 project_module_issue_tracking: Suivi des demandes
507 project_module_issue_tracking: Suivi des demandes
506 project_module_time_tracking: Suivi du temps passΓ©
508 project_module_time_tracking: Suivi du temps passΓ©
507 project_module_news: Publication d'annonces
509 project_module_news: Publication d'annonces
508 project_module_documents: Publication de documents
510 project_module_documents: Publication de documents
509 project_module_files: Publication de fichiers
511 project_module_files: Publication de fichiers
510 project_module_wiki: Wiki
512 project_module_wiki: Wiki
511 project_module_repository: DΓ©pΓ΄t de sources
513 project_module_repository: DΓ©pΓ΄t de sources
512 project_module_boards: Forums de discussion
514 project_module_boards: Forums de discussion
513 project_module_calendar: Calendrier
515 project_module_calendar: Calendrier
514 project_module_gantt: Gantt
516 project_module_gantt: Gantt
515
517
516 label_user: Utilisateur
518 label_user: Utilisateur
517 label_user_plural: Utilisateurs
519 label_user_plural: Utilisateurs
518 label_user_new: Nouvel utilisateur
520 label_user_new: Nouvel utilisateur
519 label_user_anonymous: Anonyme
521 label_user_anonymous: Anonyme
520 label_project: Projet
522 label_project: Projet
521 label_project_new: Nouveau projet
523 label_project_new: Nouveau projet
522 label_project_plural: Projets
524 label_project_plural: Projets
523 label_x_projects:
525 label_x_projects:
524 zero: aucun projet
526 zero: aucun projet
525 one: un projet
527 one: un projet
526 other: "%{count} projets"
528 other: "%{count} projets"
527 label_project_all: Tous les projets
529 label_project_all: Tous les projets
528 label_project_latest: Derniers projets
530 label_project_latest: Derniers projets
529 label_issue: Demande
531 label_issue: Demande
530 label_issue_new: Nouvelle demande
532 label_issue_new: Nouvelle demande
531 label_issue_plural: Demandes
533 label_issue_plural: Demandes
532 label_issue_view_all: Voir toutes les demandes
534 label_issue_view_all: Voir toutes les demandes
533 label_issues_by: "Demandes par %{value}"
535 label_issues_by: "Demandes par %{value}"
534 label_issue_added: Demande ajoutΓ©e
536 label_issue_added: Demande ajoutΓ©e
535 label_issue_updated: Demande mise Γ  jour
537 label_issue_updated: Demande mise Γ  jour
536 label_issue_note_added: Note ajoutΓ©e
538 label_issue_note_added: Note ajoutΓ©e
537 label_issue_status_updated: Statut changΓ©
539 label_issue_status_updated: Statut changΓ©
538 label_issue_assigned_to_updated: AssignΓ© changΓ©
540 label_issue_assigned_to_updated: AssignΓ© changΓ©
539 label_issue_priority_updated: PrioritΓ© changΓ©e
541 label_issue_priority_updated: PrioritΓ© changΓ©e
540 label_document: Document
542 label_document: Document
541 label_document_new: Nouveau document
543 label_document_new: Nouveau document
542 label_document_plural: Documents
544 label_document_plural: Documents
543 label_document_added: Document ajoutΓ©
545 label_document_added: Document ajoutΓ©
544 label_role: RΓ΄le
546 label_role: RΓ΄le
545 label_role_plural: RΓ΄les
547 label_role_plural: RΓ΄les
546 label_role_new: Nouveau rΓ΄le
548 label_role_new: Nouveau rΓ΄le
547 label_role_and_permissions: RΓ΄les et permissions
549 label_role_and_permissions: RΓ΄les et permissions
548 label_role_anonymous: Anonyme
550 label_role_anonymous: Anonyme
549 label_role_non_member: Non membre
551 label_role_non_member: Non membre
550 label_member: Membre
552 label_member: Membre
551 label_member_new: Nouveau membre
553 label_member_new: Nouveau membre
552 label_member_plural: Membres
554 label_member_plural: Membres
553 label_tracker: Tracker
555 label_tracker: Tracker
554 label_tracker_plural: Trackers
556 label_tracker_plural: Trackers
555 label_tracker_new: Nouveau tracker
557 label_tracker_new: Nouveau tracker
556 label_workflow: Workflow
558 label_workflow: Workflow
557 label_issue_status: Statut de demandes
559 label_issue_status: Statut de demandes
558 label_issue_status_plural: Statuts de demandes
560 label_issue_status_plural: Statuts de demandes
559 label_issue_status_new: Nouveau statut
561 label_issue_status_new: Nouveau statut
560 label_issue_category: CatΓ©gorie de demandes
562 label_issue_category: CatΓ©gorie de demandes
561 label_issue_category_plural: CatΓ©gories de demandes
563 label_issue_category_plural: CatΓ©gories de demandes
562 label_issue_category_new: Nouvelle catΓ©gorie
564 label_issue_category_new: Nouvelle catΓ©gorie
563 label_custom_field: Champ personnalisΓ©
565 label_custom_field: Champ personnalisΓ©
564 label_custom_field_plural: Champs personnalisΓ©s
566 label_custom_field_plural: Champs personnalisΓ©s
565 label_custom_field_new: Nouveau champ personnalisΓ©
567 label_custom_field_new: Nouveau champ personnalisΓ©
566 label_enumerations: Listes de valeurs
568 label_enumerations: Listes de valeurs
567 label_enumeration_new: Nouvelle valeur
569 label_enumeration_new: Nouvelle valeur
568 label_information: Information
570 label_information: Information
569 label_information_plural: Informations
571 label_information_plural: Informations
570 label_please_login: Identification
572 label_please_login: Identification
571 label_register: S'enregistrer
573 label_register: S'enregistrer
572 label_login_with_open_id_option: S'authentifier avec OpenID
574 label_login_with_open_id_option: S'authentifier avec OpenID
573 label_password_lost: Mot de passe perdu
575 label_password_lost: Mot de passe perdu
574 label_home: Accueil
576 label_home: Accueil
575 label_my_page: Ma page
577 label_my_page: Ma page
576 label_my_account: Mon compte
578 label_my_account: Mon compte
577 label_my_projects: Mes projets
579 label_my_projects: Mes projets
578 label_my_page_block: Blocs disponibles
580 label_my_page_block: Blocs disponibles
579 label_administration: Administration
581 label_administration: Administration
580 label_login: Connexion
582 label_login: Connexion
581 label_logout: DΓ©connexion
583 label_logout: DΓ©connexion
582 label_help: Aide
584 label_help: Aide
583 label_reported_issues: Demandes soumises
585 label_reported_issues: Demandes soumises
584 label_assigned_to_me_issues: Demandes qui me sont assignΓ©es
586 label_assigned_to_me_issues: Demandes qui me sont assignΓ©es
585 label_last_login: Dernière connexion
587 label_last_login: Dernière connexion
586 label_registered_on: Inscrit le
588 label_registered_on: Inscrit le
587 label_activity: ActivitΓ©
589 label_activity: ActivitΓ©
588 label_overall_activity: ActivitΓ© globale
590 label_overall_activity: ActivitΓ© globale
589 label_user_activity: "ActivitΓ© de %{value}"
591 label_user_activity: "ActivitΓ© de %{value}"
590 label_new: Nouveau
592 label_new: Nouveau
591 label_logged_as: ConnectΓ© en tant que
593 label_logged_as: ConnectΓ© en tant que
592 label_environment: Environnement
594 label_environment: Environnement
593 label_authentication: Authentification
595 label_authentication: Authentification
594 label_auth_source: Mode d'authentification
596 label_auth_source: Mode d'authentification
595 label_auth_source_new: Nouveau mode d'authentification
597 label_auth_source_new: Nouveau mode d'authentification
596 label_auth_source_plural: Modes d'authentification
598 label_auth_source_plural: Modes d'authentification
597 label_subproject_plural: Sous-projets
599 label_subproject_plural: Sous-projets
598 label_subproject_new: Nouveau sous-projet
600 label_subproject_new: Nouveau sous-projet
599 label_and_its_subprojects: "%{value} et ses sous-projets"
601 label_and_its_subprojects: "%{value} et ses sous-projets"
600 label_min_max_length: Longueurs mini - maxi
602 label_min_max_length: Longueurs mini - maxi
601 label_list: Liste
603 label_list: Liste
602 label_date: Date
604 label_date: Date
603 label_integer: Entier
605 label_integer: Entier
604 label_float: Nombre dΓ©cimal
606 label_float: Nombre dΓ©cimal
605 label_boolean: BoolΓ©en
607 label_boolean: BoolΓ©en
606 label_string: Texte
608 label_string: Texte
607 label_text: Texte long
609 label_text: Texte long
608 label_attribute: Attribut
610 label_attribute: Attribut
609 label_attribute_plural: Attributs
611 label_attribute_plural: Attributs
610 label_no_data: Aucune donnΓ©e Γ  afficher
612 label_no_data: Aucune donnΓ©e Γ  afficher
611 label_change_status: Changer le statut
613 label_change_status: Changer le statut
612 label_history: Historique
614 label_history: Historique
613 label_attachment: Fichier
615 label_attachment: Fichier
614 label_attachment_new: Nouveau fichier
616 label_attachment_new: Nouveau fichier
615 label_attachment_delete: Supprimer le fichier
617 label_attachment_delete: Supprimer le fichier
616 label_attachment_plural: Fichiers
618 label_attachment_plural: Fichiers
617 label_file_added: Fichier ajoutΓ©
619 label_file_added: Fichier ajoutΓ©
618 label_report: Rapport
620 label_report: Rapport
619 label_report_plural: Rapports
621 label_report_plural: Rapports
620 label_news: Annonce
622 label_news: Annonce
621 label_news_new: Nouvelle annonce
623 label_news_new: Nouvelle annonce
622 label_news_plural: Annonces
624 label_news_plural: Annonces
623 label_news_latest: Dernières annonces
625 label_news_latest: Dernières annonces
624 label_news_view_all: Voir toutes les annonces
626 label_news_view_all: Voir toutes les annonces
625 label_news_added: Annonce ajoutΓ©e
627 label_news_added: Annonce ajoutΓ©e
626 label_news_comment_added: Commentaire ajoutΓ© Γ  une annonce
628 label_news_comment_added: Commentaire ajoutΓ© Γ  une annonce
627 label_settings: Configuration
629 label_settings: Configuration
628 label_overview: AperΓ§u
630 label_overview: AperΓ§u
629 label_version: Version
631 label_version: Version
630 label_version_new: Nouvelle version
632 label_version_new: Nouvelle version
631 label_version_plural: Versions
633 label_version_plural: Versions
632 label_close_versions: Fermer les versions terminΓ©es
634 label_close_versions: Fermer les versions terminΓ©es
633 label_confirmation: Confirmation
635 label_confirmation: Confirmation
634 label_export_to: 'Formats disponibles :'
636 label_export_to: 'Formats disponibles :'
635 label_read: Lire...
637 label_read: Lire...
636 label_public_projects: Projets publics
638 label_public_projects: Projets publics
637 label_open_issues: ouvert
639 label_open_issues: ouvert
638 label_open_issues_plural: ouverts
640 label_open_issues_plural: ouverts
639 label_closed_issues: fermΓ©
641 label_closed_issues: fermΓ©
640 label_closed_issues_plural: fermΓ©s
642 label_closed_issues_plural: fermΓ©s
641 label_x_open_issues_abbr_on_total:
643 label_x_open_issues_abbr_on_total:
642 zero: 0 ouverte sur %{total}
644 zero: 0 ouverte sur %{total}
643 one: 1 ouverte sur %{total}
645 one: 1 ouverte sur %{total}
644 other: "%{count} ouvertes sur %{total}"
646 other: "%{count} ouvertes sur %{total}"
645 label_x_open_issues_abbr:
647 label_x_open_issues_abbr:
646 zero: 0 ouverte
648 zero: 0 ouverte
647 one: 1 ouverte
649 one: 1 ouverte
648 other: "%{count} ouvertes"
650 other: "%{count} ouvertes"
649 label_x_closed_issues_abbr:
651 label_x_closed_issues_abbr:
650 zero: 0 fermΓ©e
652 zero: 0 fermΓ©e
651 one: 1 fermΓ©e
653 one: 1 fermΓ©e
652 other: "%{count} fermΓ©es"
654 other: "%{count} fermΓ©es"
653 label_x_issues:
655 label_x_issues:
654 zero: 0 demande
656 zero: 0 demande
655 one: 1 demande
657 one: 1 demande
656 other: "%{count} demandes"
658 other: "%{count} demandes"
657 label_total: Total
659 label_total: Total
658 label_total_time: Temps total
660 label_total_time: Temps total
659 label_permissions: Permissions
661 label_permissions: Permissions
660 label_current_status: Statut actuel
662 label_current_status: Statut actuel
661 label_new_statuses_allowed: Nouveaux statuts autorisΓ©s
663 label_new_statuses_allowed: Nouveaux statuts autorisΓ©s
662 label_all: tous
664 label_all: tous
663 label_any: tous
665 label_any: tous
664 label_none: aucun
666 label_none: aucun
665 label_nobody: personne
667 label_nobody: personne
666 label_next: Suivant
668 label_next: Suivant
667 label_previous: PrΓ©cΓ©dent
669 label_previous: PrΓ©cΓ©dent
668 label_used_by: UtilisΓ© par
670 label_used_by: UtilisΓ© par
669 label_details: DΓ©tails
671 label_details: DΓ©tails
670 label_add_note: Ajouter une note
672 label_add_note: Ajouter une note
671 label_calendar: Calendrier
673 label_calendar: Calendrier
672 label_months_from: mois depuis
674 label_months_from: mois depuis
673 label_gantt: Gantt
675 label_gantt: Gantt
674 label_internal: Interne
676 label_internal: Interne
675 label_last_changes: "%{count} derniers changements"
677 label_last_changes: "%{count} derniers changements"
676 label_change_view_all: Voir tous les changements
678 label_change_view_all: Voir tous les changements
677 label_personalize_page: Personnaliser cette page
679 label_personalize_page: Personnaliser cette page
678 label_comment: Commentaire
680 label_comment: Commentaire
679 label_comment_plural: Commentaires
681 label_comment_plural: Commentaires
680 label_x_comments:
682 label_x_comments:
681 zero: aucun commentaire
683 zero: aucun commentaire
682 one: un commentaire
684 one: un commentaire
683 other: "%{count} commentaires"
685 other: "%{count} commentaires"
684 label_comment_add: Ajouter un commentaire
686 label_comment_add: Ajouter un commentaire
685 label_comment_added: Commentaire ajoutΓ©
687 label_comment_added: Commentaire ajoutΓ©
686 label_comment_delete: Supprimer les commentaires
688 label_comment_delete: Supprimer les commentaires
687 label_query: Rapport personnalisΓ©
689 label_query: Rapport personnalisΓ©
688 label_query_plural: Rapports personnalisΓ©s
690 label_query_plural: Rapports personnalisΓ©s
689 label_query_new: Nouveau rapport
691 label_query_new: Nouveau rapport
690 label_my_queries: Mes rapports personnalisΓ©s
692 label_my_queries: Mes rapports personnalisΓ©s
691 label_filter_add: Ajouter le filtre
693 label_filter_add: Ajouter le filtre
692 label_filter_plural: Filtres
694 label_filter_plural: Filtres
693 label_equals: Γ©gal
695 label_equals: Γ©gal
694 label_not_equals: diffΓ©rent
696 label_not_equals: diffΓ©rent
695 label_in_less_than: dans moins de
697 label_in_less_than: dans moins de
696 label_in_more_than: dans plus de
698 label_in_more_than: dans plus de
697 label_in_the_next_days: dans les prochains jours
699 label_in_the_next_days: dans les prochains jours
698 label_in_the_past_days: dans les derniers jours
700 label_in_the_past_days: dans les derniers jours
699 label_greater_or_equal: '>='
701 label_greater_or_equal: '>='
700 label_less_or_equal: '<='
702 label_less_or_equal: '<='
701 label_between: entre
703 label_between: entre
702 label_in: dans
704 label_in: dans
703 label_today: aujourd'hui
705 label_today: aujourd'hui
704 label_all_time: toute la pΓ©riode
706 label_all_time: toute la pΓ©riode
705 label_yesterday: hier
707 label_yesterday: hier
706 label_this_week: cette semaine
708 label_this_week: cette semaine
707 label_last_week: la semaine dernière
709 label_last_week: la semaine dernière
708 label_last_n_weeks: "les %{count} dernières semaines"
710 label_last_n_weeks: "les %{count} dernières semaines"
709 label_last_n_days: "les %{count} derniers jours"
711 label_last_n_days: "les %{count} derniers jours"
710 label_this_month: ce mois-ci
712 label_this_month: ce mois-ci
711 label_last_month: le mois dernier
713 label_last_month: le mois dernier
712 label_this_year: cette annΓ©e
714 label_this_year: cette annΓ©e
713 label_date_range: PΓ©riode
715 label_date_range: PΓ©riode
714 label_less_than_ago: il y a moins de
716 label_less_than_ago: il y a moins de
715 label_more_than_ago: il y a plus de
717 label_more_than_ago: il y a plus de
716 label_ago: il y a
718 label_ago: il y a
717 label_contains: contient
719 label_contains: contient
718 label_not_contains: ne contient pas
720 label_not_contains: ne contient pas
719 label_any_issues_in_project: une demande du projet
721 label_any_issues_in_project: une demande du projet
720 label_any_issues_not_in_project: une demande hors du projet
722 label_any_issues_not_in_project: une demande hors du projet
721 label_no_issues_in_project: aucune demande du projet
723 label_no_issues_in_project: aucune demande du projet
722 label_day_plural: jours
724 label_day_plural: jours
723 label_repository: DΓ©pΓ΄t
725 label_repository: DΓ©pΓ΄t
724 label_repository_new: Nouveau dΓ©pΓ΄t
726 label_repository_new: Nouveau dΓ©pΓ΄t
725 label_repository_plural: DΓ©pΓ΄ts
727 label_repository_plural: DΓ©pΓ΄ts
726 label_browse: Parcourir
728 label_browse: Parcourir
727 label_branch: Branche
729 label_branch: Branche
728 label_tag: Tag
730 label_tag: Tag
729 label_revision: RΓ©vision
731 label_revision: RΓ©vision
730 label_revision_plural: RΓ©visions
732 label_revision_plural: RΓ©visions
731 label_revision_id: "RΓ©vision %{value}"
733 label_revision_id: "RΓ©vision %{value}"
732 label_associated_revisions: RΓ©visions associΓ©es
734 label_associated_revisions: RΓ©visions associΓ©es
733 label_added: ajoutΓ©
735 label_added: ajoutΓ©
734 label_modified: modifiΓ©
736 label_modified: modifiΓ©
735 label_copied: copiΓ©
737 label_copied: copiΓ©
736 label_renamed: renommΓ©
738 label_renamed: renommΓ©
737 label_deleted: supprimΓ©
739 label_deleted: supprimΓ©
738 label_latest_revision: Dernière révision
740 label_latest_revision: Dernière révision
739 label_latest_revision_plural: Dernières révisions
741 label_latest_revision_plural: Dernières révisions
740 label_view_revisions: Voir les rΓ©visions
742 label_view_revisions: Voir les rΓ©visions
741 label_view_all_revisions: Voir toutes les rΓ©visions
743 label_view_all_revisions: Voir toutes les rΓ©visions
742 label_max_size: Taille maximale
744 label_max_size: Taille maximale
743 label_sort_highest: Remonter en premier
745 label_sort_highest: Remonter en premier
744 label_sort_higher: Remonter
746 label_sort_higher: Remonter
745 label_sort_lower: Descendre
747 label_sort_lower: Descendre
746 label_sort_lowest: Descendre en dernier
748 label_sort_lowest: Descendre en dernier
747 label_roadmap: Roadmap
749 label_roadmap: Roadmap
748 label_roadmap_due_in: "Γ‰chΓ©ance dans %{value}"
750 label_roadmap_due_in: "Γ‰chΓ©ance dans %{value}"
749 label_roadmap_overdue: "En retard de %{value}"
751 label_roadmap_overdue: "En retard de %{value}"
750 label_roadmap_no_issues: Aucune demande pour cette version
752 label_roadmap_no_issues: Aucune demande pour cette version
751 label_search: Recherche
753 label_search: Recherche
752 label_result_plural: RΓ©sultats
754 label_result_plural: RΓ©sultats
753 label_all_words: Tous les mots
755 label_all_words: Tous les mots
754 label_wiki: Wiki
756 label_wiki: Wiki
755 label_wiki_edit: RΓ©vision wiki
757 label_wiki_edit: RΓ©vision wiki
756 label_wiki_edit_plural: RΓ©visions wiki
758 label_wiki_edit_plural: RΓ©visions wiki
757 label_wiki_page: Page wiki
759 label_wiki_page: Page wiki
758 label_wiki_page_plural: Pages wiki
760 label_wiki_page_plural: Pages wiki
759 label_index_by_title: Index par titre
761 label_index_by_title: Index par titre
760 label_index_by_date: Index par date
762 label_index_by_date: Index par date
761 label_current_version: Version actuelle
763 label_current_version: Version actuelle
762 label_preview: PrΓ©visualisation
764 label_preview: PrΓ©visualisation
763 label_feed_plural: Flux Atom
765 label_feed_plural: Flux Atom
764 label_changes_details: DΓ©tails de tous les changements
766 label_changes_details: DΓ©tails de tous les changements
765 label_issue_tracking: Suivi des demandes
767 label_issue_tracking: Suivi des demandes
766 label_spent_time: Temps passΓ©
768 label_spent_time: Temps passΓ©
767 label_overall_spent_time: Temps passΓ© global
769 label_overall_spent_time: Temps passΓ© global
768 label_f_hour: "%{value} heure"
770 label_f_hour: "%{value} heure"
769 label_f_hour_plural: "%{value} heures"
771 label_f_hour_plural: "%{value} heures"
770 label_time_tracking: Suivi du temps
772 label_time_tracking: Suivi du temps
771 label_change_plural: Changements
773 label_change_plural: Changements
772 label_statistics: Statistiques
774 label_statistics: Statistiques
773 label_commits_per_month: Commits par mois
775 label_commits_per_month: Commits par mois
774 label_commits_per_author: Commits par auteur
776 label_commits_per_author: Commits par auteur
775 label_diff: diff
777 label_diff: diff
776 label_view_diff: Voir les diffΓ©rences
778 label_view_diff: Voir les diffΓ©rences
777 label_diff_inline: en ligne
779 label_diff_inline: en ligne
778 label_diff_side_by_side: cΓ΄te Γ  cΓ΄te
780 label_diff_side_by_side: cΓ΄te Γ  cΓ΄te
779 label_options: Options
781 label_options: Options
780 label_copy_workflow_from: Copier le workflow de
782 label_copy_workflow_from: Copier le workflow de
781 label_permissions_report: Synthèse des permissions
783 label_permissions_report: Synthèse des permissions
782 label_watched_issues: Demandes surveillΓ©es
784 label_watched_issues: Demandes surveillΓ©es
783 label_related_issues: Demandes liΓ©es
785 label_related_issues: Demandes liΓ©es
784 label_applied_status: Statut appliquΓ©
786 label_applied_status: Statut appliquΓ©
785 label_loading: Chargement...
787 label_loading: Chargement...
786 label_relation_new: Nouvelle relation
788 label_relation_new: Nouvelle relation
787 label_relation_delete: Supprimer la relation
789 label_relation_delete: Supprimer la relation
788 label_relates_to: LiΓ© Γ 
790 label_relates_to: LiΓ© Γ 
789 label_duplicates: Duplique
791 label_duplicates: Duplique
790 label_duplicated_by: DupliquΓ© par
792 label_duplicated_by: DupliquΓ© par
791 label_blocks: Bloque
793 label_blocks: Bloque
792 label_blocked_by: BloquΓ© par
794 label_blocked_by: BloquΓ© par
793 label_precedes: Précède
795 label_precedes: Précède
794 label_follows: Suit
796 label_follows: Suit
795 label_copied_to: CopiΓ© vers
797 label_copied_to: CopiΓ© vers
796 label_copied_from: CopiΓ© depuis
798 label_copied_from: CopiΓ© depuis
797 label_end_to_start: fin Γ  dΓ©but
799 label_end_to_start: fin Γ  dΓ©but
798 label_end_to_end: fin Γ  fin
800 label_end_to_end: fin Γ  fin
799 label_start_to_start: dΓ©but Γ  dΓ©but
801 label_start_to_start: dΓ©but Γ  dΓ©but
800 label_start_to_end: dΓ©but Γ  fin
802 label_start_to_end: dΓ©but Γ  fin
801 label_stay_logged_in: Rester connectΓ©
803 label_stay_logged_in: Rester connectΓ©
802 label_disabled: dΓ©sactivΓ©
804 label_disabled: dΓ©sactivΓ©
803 label_show_completed_versions: Voir les versions passΓ©es
805 label_show_completed_versions: Voir les versions passΓ©es
804 label_me: moi
806 label_me: moi
805 label_board: Forum
807 label_board: Forum
806 label_board_new: Nouveau forum
808 label_board_new: Nouveau forum
807 label_board_plural: Forums
809 label_board_plural: Forums
808 label_board_locked: VerrouillΓ©
810 label_board_locked: VerrouillΓ©
809 label_board_sticky: Sticky
811 label_board_sticky: Sticky
810 label_topic_plural: Discussions
812 label_topic_plural: Discussions
811 label_message_plural: Messages
813 label_message_plural: Messages
812 label_message_last: Dernier message
814 label_message_last: Dernier message
813 label_message_new: Nouveau message
815 label_message_new: Nouveau message
814 label_message_posted: Message ajoutΓ©
816 label_message_posted: Message ajoutΓ©
815 label_reply_plural: RΓ©ponses
817 label_reply_plural: RΓ©ponses
816 label_send_information: Envoyer les informations Γ  l'utilisateur
818 label_send_information: Envoyer les informations Γ  l'utilisateur
817 label_year: AnnΓ©e
819 label_year: AnnΓ©e
818 label_month: Mois
820 label_month: Mois
819 label_week: Semaine
821 label_week: Semaine
820 label_date_from: Du
822 label_date_from: Du
821 label_date_to: Au
823 label_date_to: Au
822 label_language_based: BasΓ© sur la langue de l'utilisateur
824 label_language_based: BasΓ© sur la langue de l'utilisateur
823 label_sort_by: "Trier par %{value}"
825 label_sort_by: "Trier par %{value}"
824 label_send_test_email: Envoyer un email de test
826 label_send_test_email: Envoyer un email de test
825 label_feeds_access_key: Clé d'accès Atom
827 label_feeds_access_key: Clé d'accès Atom
826 label_missing_feeds_access_key: Clé d'accès Atom manquante
828 label_missing_feeds_access_key: Clé d'accès Atom manquante
827 label_feeds_access_key_created_on: "Clé d'accès Atom créée il y a %{value}"
829 label_feeds_access_key_created_on: "Clé d'accès Atom créée il y a %{value}"
828 label_module_plural: Modules
830 label_module_plural: Modules
829 label_added_time_by: "AjoutΓ© par %{author} il y a %{age}"
831 label_added_time_by: "AjoutΓ© par %{author} il y a %{age}"
830 label_updated_time_by: "Mis Γ  jour par %{author} il y a %{age}"
832 label_updated_time_by: "Mis Γ  jour par %{author} il y a %{age}"
831 label_updated_time: "Mis Γ  jour il y a %{value}"
833 label_updated_time: "Mis Γ  jour il y a %{value}"
832 label_jump_to_a_project: Aller Γ  un projet...
834 label_jump_to_a_project: Aller Γ  un projet...
833 label_file_plural: Fichiers
835 label_file_plural: Fichiers
834 label_changeset_plural: RΓ©visions
836 label_changeset_plural: RΓ©visions
835 label_default_columns: Colonnes par dΓ©faut
837 label_default_columns: Colonnes par dΓ©faut
836 label_no_change_option: (Pas de changement)
838 label_no_change_option: (Pas de changement)
837 label_bulk_edit_selected_issues: Modifier les demandes sΓ©lectionnΓ©es
839 label_bulk_edit_selected_issues: Modifier les demandes sΓ©lectionnΓ©es
838 label_bulk_edit_selected_time_entries: Modifier les temps passΓ©s sΓ©lectionnΓ©s
840 label_bulk_edit_selected_time_entries: Modifier les temps passΓ©s sΓ©lectionnΓ©s
839 label_theme: Thème
841 label_theme: Thème
840 label_default: DΓ©faut
842 label_default: DΓ©faut
841 label_search_titles_only: Uniquement dans les titres
843 label_search_titles_only: Uniquement dans les titres
842 label_user_mail_option_all: "Pour tous les Γ©vΓ©nements de tous mes projets"
844 label_user_mail_option_all: "Pour tous les Γ©vΓ©nements de tous mes projets"
843 label_user_mail_option_selected: "Pour tous les Γ©vΓ©nements des projets sΓ©lectionnΓ©s..."
845 label_user_mail_option_selected: "Pour tous les Γ©vΓ©nements des projets sΓ©lectionnΓ©s..."
844 label_user_mail_option_none: Aucune notification
846 label_user_mail_option_none: Aucune notification
845 label_user_mail_option_only_my_events: Seulement pour ce que je surveille
847 label_user_mail_option_only_my_events: Seulement pour ce que je surveille
846 label_user_mail_option_only_assigned: Seulement pour ce qui m'est assignΓ©
848 label_user_mail_option_only_assigned: Seulement pour ce qui m'est assignΓ©
847 label_user_mail_option_only_owner: Seulement pour ce que j'ai créé
849 label_user_mail_option_only_owner: Seulement pour ce que j'ai créé
848 label_user_mail_no_self_notified: "Je ne veux pas Γͺtre notifiΓ© des changements que j'effectue"
850 label_user_mail_no_self_notified: "Je ne veux pas Γͺtre notifiΓ© des changements que j'effectue"
849 label_registration_activation_by_email: activation du compte par email
851 label_registration_activation_by_email: activation du compte par email
850 label_registration_manual_activation: activation manuelle du compte
852 label_registration_manual_activation: activation manuelle du compte
851 label_registration_automatic_activation: activation automatique du compte
853 label_registration_automatic_activation: activation automatique du compte
852 label_display_per_page: "Par page : %{value}"
854 label_display_per_page: "Par page : %{value}"
853 label_age: Γ‚ge
855 label_age: Γ‚ge
854 label_change_properties: Changer les propriΓ©tΓ©s
856 label_change_properties: Changer les propriΓ©tΓ©s
855 label_general: GΓ©nΓ©ral
857 label_general: GΓ©nΓ©ral
856 label_more: Plus
858 label_more: Plus
857 label_scm: SCM
859 label_scm: SCM
858 label_plugins: Plugins
860 label_plugins: Plugins
859 label_ldap_authentication: Authentification LDAP
861 label_ldap_authentication: Authentification LDAP
860 label_downloads_abbr: D/L
862 label_downloads_abbr: D/L
861 label_optional_description: Description facultative
863 label_optional_description: Description facultative
862 label_add_another_file: Ajouter un autre fichier
864 label_add_another_file: Ajouter un autre fichier
863 label_preferences: PrΓ©fΓ©rences
865 label_preferences: PrΓ©fΓ©rences
864 label_chronological_order: Dans l'ordre chronologique
866 label_chronological_order: Dans l'ordre chronologique
865 label_reverse_chronological_order: Dans l'ordre chronologique inverse
867 label_reverse_chronological_order: Dans l'ordre chronologique inverse
866 label_planning: Planning
868 label_planning: Planning
867 label_incoming_emails: Emails entrants
869 label_incoming_emails: Emails entrants
868 label_generate_key: GΓ©nΓ©rer une clΓ©
870 label_generate_key: GΓ©nΓ©rer une clΓ©
869 label_issue_watchers: Observateurs
871 label_issue_watchers: Observateurs
870 label_example: Exemple
872 label_example: Exemple
871 label_display: Affichage
873 label_display: Affichage
872 label_sort: Tri
874 label_sort: Tri
873 label_ascending: Croissant
875 label_ascending: Croissant
874 label_descending: DΓ©croissant
876 label_descending: DΓ©croissant
875 label_date_from_to: Du %{start} au %{end}
877 label_date_from_to: Du %{start} au %{end}
876 label_wiki_content_added: Page wiki ajoutΓ©e
878 label_wiki_content_added: Page wiki ajoutΓ©e
877 label_wiki_content_updated: Page wiki mise Γ  jour
879 label_wiki_content_updated: Page wiki mise Γ  jour
878 label_group: Groupe
880 label_group: Groupe
879 label_group_plural: Groupes
881 label_group_plural: Groupes
880 label_group_new: Nouveau groupe
882 label_group_new: Nouveau groupe
881 label_group_anonymous: Utilisateurs anonymes
883 label_group_anonymous: Utilisateurs anonymes
882 label_group_non_member: Utilisateurs non membres
884 label_group_non_member: Utilisateurs non membres
883 label_time_entry_plural: Temps passΓ©
885 label_time_entry_plural: Temps passΓ©
884 label_version_sharing_none: Non partagΓ©
886 label_version_sharing_none: Non partagΓ©
885 label_version_sharing_descendants: Avec les sous-projets
887 label_version_sharing_descendants: Avec les sous-projets
886 label_version_sharing_hierarchy: Avec toute la hiΓ©rarchie
888 label_version_sharing_hierarchy: Avec toute la hiΓ©rarchie
887 label_version_sharing_tree: Avec tout l'arbre
889 label_version_sharing_tree: Avec tout l'arbre
888 label_version_sharing_system: Avec tous les projets
890 label_version_sharing_system: Avec tous les projets
889 label_update_issue_done_ratios: Mettre Γ  jour l'avancement des demandes
891 label_update_issue_done_ratios: Mettre Γ  jour l'avancement des demandes
890 label_copy_source: Source
892 label_copy_source: Source
891 label_copy_target: Cible
893 label_copy_target: Cible
892 label_copy_same_as_target: Comme la cible
894 label_copy_same_as_target: Comme la cible
893 label_display_used_statuses_only: N'afficher que les statuts utilisΓ©s dans ce tracker
895 label_display_used_statuses_only: N'afficher que les statuts utilisΓ©s dans ce tracker
894 label_api_access_key: Clé d'accès API
896 label_api_access_key: Clé d'accès API
895 label_missing_api_access_key: Clé d'accès API manquante
897 label_missing_api_access_key: Clé d'accès API manquante
896 label_api_access_key_created_on: Clé d'accès API créée il y a %{value}
898 label_api_access_key_created_on: Clé d'accès API créée il y a %{value}
897 label_profile: Profil
899 label_profile: Profil
898 label_subtask_plural: Sous-tΓ’ches
900 label_subtask_plural: Sous-tΓ’ches
899 label_project_copy_notifications: Envoyer les notifications durant la copie du projet
901 label_project_copy_notifications: Envoyer les notifications durant la copie du projet
900 label_principal_search: "Rechercher un utilisateur ou un groupe :"
902 label_principal_search: "Rechercher un utilisateur ou un groupe :"
901 label_user_search: "Rechercher un utilisateur :"
903 label_user_search: "Rechercher un utilisateur :"
902 label_additional_workflow_transitions_for_author: Autorisations supplémentaires lorsque l'utilisateur a créé la demande
904 label_additional_workflow_transitions_for_author: Autorisations supplémentaires lorsque l'utilisateur a créé la demande
903 label_additional_workflow_transitions_for_assignee: Autorisations supplΓ©mentaires lorsque la demande est assignΓ©e Γ  l'utilisateur
905 label_additional_workflow_transitions_for_assignee: Autorisations supplΓ©mentaires lorsque la demande est assignΓ©e Γ  l'utilisateur
904 label_issues_visibility_all: Toutes les demandes
906 label_issues_visibility_all: Toutes les demandes
905 label_issues_visibility_public: Toutes les demandes non privΓ©es
907 label_issues_visibility_public: Toutes les demandes non privΓ©es
906 label_issues_visibility_own: Demandes créées par ou assignées à l'utilisateur
908 label_issues_visibility_own: Demandes créées par ou assignées à l'utilisateur
907 label_git_report_last_commit: Afficher le dernier commit des fichiers et rΓ©pertoires
909 label_git_report_last_commit: Afficher le dernier commit des fichiers et rΓ©pertoires
908 label_parent_revision: Parent
910 label_parent_revision: Parent
909 label_child_revision: Enfant
911 label_child_revision: Enfant
910 label_export_options: Options d'exportation %{export_format}
912 label_export_options: Options d'exportation %{export_format}
911 label_copy_attachments: Copier les fichiers
913 label_copy_attachments: Copier les fichiers
912 label_copy_subtasks: Copier les sous-tΓ’ches
914 label_copy_subtasks: Copier les sous-tΓ’ches
913 label_item_position: "%{position} sur %{count}"
915 label_item_position: "%{position} sur %{count}"
914 label_completed_versions: Versions passΓ©es
916 label_completed_versions: Versions passΓ©es
915 label_search_for_watchers: Rechercher des observateurs
917 label_search_for_watchers: Rechercher des observateurs
916 label_session_expiration: Expiration des sessions
918 label_session_expiration: Expiration des sessions
917 label_show_closed_projects: Voir les projets fermΓ©s
919 label_show_closed_projects: Voir les projets fermΓ©s
918 label_status_transitions: Changements de statut
920 label_status_transitions: Changements de statut
919 label_fields_permissions: Permissions sur les champs
921 label_fields_permissions: Permissions sur les champs
920 label_readonly: Lecture
922 label_readonly: Lecture
921 label_required: Obligatoire
923 label_required: Obligatoire
922 label_hidden: CachΓ©
924 label_hidden: CachΓ©
923 label_attribute_of_project: "%{name} du projet"
925 label_attribute_of_project: "%{name} du projet"
924 label_attribute_of_issue: "%{name} de la demande"
926 label_attribute_of_issue: "%{name} de la demande"
925 label_attribute_of_author: "%{name} de l'auteur"
927 label_attribute_of_author: "%{name} de l'auteur"
926 label_attribute_of_assigned_to: "%{name} de l'assignΓ©"
928 label_attribute_of_assigned_to: "%{name} de l'assignΓ©"
927 label_attribute_of_user: "%{name} de l'utilisateur"
929 label_attribute_of_user: "%{name} de l'utilisateur"
928 label_attribute_of_fixed_version: "%{name} de la version cible"
930 label_attribute_of_fixed_version: "%{name} de la version cible"
929 label_cross_project_descendants: Avec les sous-projets
931 label_cross_project_descendants: Avec les sous-projets
930 label_cross_project_tree: Avec tout l'arbre
932 label_cross_project_tree: Avec tout l'arbre
931 label_cross_project_hierarchy: Avec toute la hiΓ©rarchie
933 label_cross_project_hierarchy: Avec toute la hiΓ©rarchie
932 label_cross_project_system: Avec tous les projets
934 label_cross_project_system: Avec tous les projets
933 label_gantt_progress_line: Ligne de progression
935 label_gantt_progress_line: Ligne de progression
934 label_visibility_private: par moi uniquement
936 label_visibility_private: par moi uniquement
935 label_visibility_roles: par ces rΓ΄les uniquement
937 label_visibility_roles: par ces rΓ΄les uniquement
936 label_visibility_public: par tout le monde
938 label_visibility_public: par tout le monde
937 label_link: Lien
939 label_link: Lien
938 label_only: seulement
940 label_only: seulement
939 label_drop_down_list: liste dΓ©roulante
941 label_drop_down_list: liste dΓ©roulante
940 label_checkboxes: cases Γ  cocher
942 label_checkboxes: cases Γ  cocher
941 label_radio_buttons: boutons radio
943 label_radio_buttons: boutons radio
942 label_link_values_to: Lier les valeurs vers l'URL
944 label_link_values_to: Lier les valeurs vers l'URL
943 label_custom_field_select_type: Selectionner le type d'objet auquel attacher le champ personnalisΓ©
945 label_custom_field_select_type: Selectionner le type d'objet auquel attacher le champ personnalisΓ©
944 label_check_for_updates: VΓ©rifier les mises Γ  jour
946 label_check_for_updates: VΓ©rifier les mises Γ  jour
945 label_latest_compatible_version: Dernière version compatible
947 label_latest_compatible_version: Dernière version compatible
946 label_unknown_plugin: Plugin inconnu
948 label_unknown_plugin: Plugin inconnu
947 label_add_projects: Ajouter des projets
949 label_add_projects: Ajouter des projets
948 label_users_visibility_all: Tous les utilisateurs actifs
950 label_users_visibility_all: Tous les utilisateurs actifs
949 label_users_visibility_members_of_visible_projects: Membres des projets visibles
951 label_users_visibility_members_of_visible_projects: Membres des projets visibles
950 label_edit_attachments: Modifier les fichiers attachΓ©s
952 label_edit_attachments: Modifier les fichiers attachΓ©s
951 label_link_copied_issue: Lier la demande copiΓ©e
953 label_link_copied_issue: Lier la demande copiΓ©e
952 label_ask: Demander
954 label_ask: Demander
953 label_search_attachments_yes: Rechercher les noms et descriptions de fichiers
955 label_search_attachments_yes: Rechercher les noms et descriptions de fichiers
954 label_search_attachments_no: Ne pas rechercher les fichiers
956 label_search_attachments_no: Ne pas rechercher les fichiers
955 label_search_attachments_only: Rechercher les fichiers uniquement
957 label_search_attachments_only: Rechercher les fichiers uniquement
956 label_search_open_issues_only: Demandes ouvertes uniquement
958 label_search_open_issues_only: Demandes ouvertes uniquement
957 label_email_address_plural: Emails
959 label_email_address_plural: Emails
958 label_email_address_add: Ajouter une adresse email
960 label_email_address_add: Ajouter une adresse email
959 label_enable_notifications: Activer les notifications
961 label_enable_notifications: Activer les notifications
960 label_disable_notifications: DΓ©sactiver les notifications
962 label_disable_notifications: DΓ©sactiver les notifications
961 label_blank_value: non renseignΓ©
963 label_blank_value: non renseignΓ©
962
964
963 button_login: Connexion
965 button_login: Connexion
964 button_submit: Soumettre
966 button_submit: Soumettre
965 button_save: Sauvegarder
967 button_save: Sauvegarder
966 button_check_all: Tout cocher
968 button_check_all: Tout cocher
967 button_uncheck_all: Tout dΓ©cocher
969 button_uncheck_all: Tout dΓ©cocher
968 button_collapse_all: Plier tout
970 button_collapse_all: Plier tout
969 button_expand_all: DΓ©plier tout
971 button_expand_all: DΓ©plier tout
970 button_delete: Supprimer
972 button_delete: Supprimer
971 button_create: CrΓ©er
973 button_create: CrΓ©er
972 button_create_and_continue: CrΓ©er et continuer
974 button_create_and_continue: CrΓ©er et continuer
973 button_test: Tester
975 button_test: Tester
974 button_edit: Modifier
976 button_edit: Modifier
975 button_edit_associated_wikipage: "Modifier la page wiki associΓ©e: %{page_title}"
977 button_edit_associated_wikipage: "Modifier la page wiki associΓ©e: %{page_title}"
976 button_add: Ajouter
978 button_add: Ajouter
977 button_change: Changer
979 button_change: Changer
978 button_apply: Appliquer
980 button_apply: Appliquer
979 button_clear: Effacer
981 button_clear: Effacer
980 button_lock: Verrouiller
982 button_lock: Verrouiller
981 button_unlock: DΓ©verrouiller
983 button_unlock: DΓ©verrouiller
982 button_download: TΓ©lΓ©charger
984 button_download: TΓ©lΓ©charger
983 button_list: Lister
985 button_list: Lister
984 button_view: Voir
986 button_view: Voir
985 button_move: DΓ©placer
987 button_move: DΓ©placer
986 button_move_and_follow: DΓ©placer et suivre
988 button_move_and_follow: DΓ©placer et suivre
987 button_back: Retour
989 button_back: Retour
988 button_cancel: Annuler
990 button_cancel: Annuler
989 button_activate: Activer
991 button_activate: Activer
990 button_sort: Trier
992 button_sort: Trier
991 button_log_time: Saisir temps
993 button_log_time: Saisir temps
992 button_rollback: Revenir Γ  cette version
994 button_rollback: Revenir Γ  cette version
993 button_watch: Surveiller
995 button_watch: Surveiller
994 button_unwatch: Ne plus surveiller
996 button_unwatch: Ne plus surveiller
995 button_reply: RΓ©pondre
997 button_reply: RΓ©pondre
996 button_archive: Archiver
998 button_archive: Archiver
997 button_unarchive: DΓ©sarchiver
999 button_unarchive: DΓ©sarchiver
998 button_reset: RΓ©initialiser
1000 button_reset: RΓ©initialiser
999 button_rename: Renommer
1001 button_rename: Renommer
1000 button_change_password: Changer de mot de passe
1002 button_change_password: Changer de mot de passe
1001 button_copy: Copier
1003 button_copy: Copier
1002 button_copy_and_follow: Copier et suivre
1004 button_copy_and_follow: Copier et suivre
1003 button_annotate: Annoter
1005 button_annotate: Annoter
1004 button_update: Mettre Γ  jour
1006 button_update: Mettre Γ  jour
1005 button_configure: Configurer
1007 button_configure: Configurer
1006 button_quote: Citer
1008 button_quote: Citer
1007 button_duplicate: Dupliquer
1009 button_duplicate: Dupliquer
1008 button_show: Afficher
1010 button_show: Afficher
1009 button_hide: Cacher
1011 button_hide: Cacher
1010 button_edit_section: Modifier cette section
1012 button_edit_section: Modifier cette section
1011 button_export: Exporter
1013 button_export: Exporter
1012 button_delete_my_account: Supprimer mon compte
1014 button_delete_my_account: Supprimer mon compte
1013 button_close: Fermer
1015 button_close: Fermer
1014 button_reopen: RΓ©ouvrir
1016 button_reopen: RΓ©ouvrir
1015
1017
1016 status_active: actif
1018 status_active: actif
1017 status_registered: enregistrΓ©
1019 status_registered: enregistrΓ©
1018 status_locked: verrouillΓ©
1020 status_locked: verrouillΓ©
1019
1021
1020 project_status_active: actif
1022 project_status_active: actif
1021 project_status_closed: fermΓ©
1023 project_status_closed: fermΓ©
1022 project_status_archived: archivΓ©
1024 project_status_archived: archivΓ©
1023
1025
1024 version_status_open: ouvert
1026 version_status_open: ouvert
1025 version_status_locked: verrouillΓ©
1027 version_status_locked: verrouillΓ©
1026 version_status_closed: fermΓ©
1028 version_status_closed: fermΓ©
1027
1029
1028 field_active: Actif
1030 field_active: Actif
1029
1031
1030 text_select_mail_notifications: Actions pour lesquelles une notification par e-mail est envoyΓ©e
1032 text_select_mail_notifications: Actions pour lesquelles une notification par e-mail est envoyΓ©e
1031 text_regexp_info: ex. ^[A-Z0-9]+$
1033 text_regexp_info: ex. ^[A-Z0-9]+$
1032 text_min_max_length_info: 0 pour aucune restriction
1034 text_min_max_length_info: 0 pour aucune restriction
1033 text_project_destroy_confirmation: Êtes-vous sûr de vouloir supprimer ce projet et toutes ses données ?
1035 text_project_destroy_confirmation: Êtes-vous sûr de vouloir supprimer ce projet et toutes ses données ?
1034 text_subprojects_destroy_warning: "Ses sous-projets : %{value} seront Γ©galement supprimΓ©s."
1036 text_subprojects_destroy_warning: "Ses sous-projets : %{value} seront Γ©galement supprimΓ©s."
1035 text_workflow_edit: SΓ©lectionner un tracker et un rΓ΄le pour Γ©diter le workflow
1037 text_workflow_edit: SΓ©lectionner un tracker et un rΓ΄le pour Γ©diter le workflow
1036 text_are_you_sure: Êtes-vous sûr ?
1038 text_are_you_sure: Êtes-vous sûr ?
1037 text_journal_changed: "%{label} changΓ© de %{old} Γ  %{new}"
1039 text_journal_changed: "%{label} changΓ© de %{old} Γ  %{new}"
1038 text_journal_changed_no_detail: "%{label} mis Γ  jour"
1040 text_journal_changed_no_detail: "%{label} mis Γ  jour"
1039 text_journal_set_to: "%{label} mis Γ  %{value}"
1041 text_journal_set_to: "%{label} mis Γ  %{value}"
1040 text_journal_deleted: "%{label} %{old} supprimΓ©"
1042 text_journal_deleted: "%{label} %{old} supprimΓ©"
1041 text_journal_added: "%{label} %{value} ajoutΓ©"
1043 text_journal_added: "%{label} %{value} ajoutΓ©"
1042 text_tip_issue_begin_day: tΓ’che commenΓ§ant ce jour
1044 text_tip_issue_begin_day: tΓ’che commenΓ§ant ce jour
1043 text_tip_issue_end_day: tΓ’che finissant ce jour
1045 text_tip_issue_end_day: tΓ’che finissant ce jour
1044 text_tip_issue_begin_end_day: tΓ’che commenΓ§ant et finissant ce jour
1046 text_tip_issue_begin_end_day: tΓ’che commenΓ§ant et finissant ce jour
1045 text_project_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et tirets bas sont autorisΓ©s, doit commencer par une minuscule.<br />Un fois sauvegardΓ©, l''identifiant ne pourra plus Γͺtre modifiΓ©.'
1047 text_project_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et tirets bas sont autorisΓ©s, doit commencer par une minuscule.<br />Un fois sauvegardΓ©, l''identifiant ne pourra plus Γͺtre modifiΓ©.'
1046 text_caracters_maximum: "%{count} caractères maximum."
1048 text_caracters_maximum: "%{count} caractères maximum."
1047 text_caracters_minimum: "%{count} caractères minimum."
1049 text_caracters_minimum: "%{count} caractères minimum."
1048 text_length_between: "Longueur comprise entre %{min} et %{max} caractères."
1050 text_length_between: "Longueur comprise entre %{min} et %{max} caractères."
1049 text_tracker_no_workflow: Aucun worflow n'est dΓ©fini pour ce tracker
1051 text_tracker_no_workflow: Aucun worflow n'est dΓ©fini pour ce tracker
1050 text_unallowed_characters: Caractères non autorisés
1052 text_unallowed_characters: Caractères non autorisés
1051 text_comma_separated: Plusieurs valeurs possibles (sΓ©parΓ©es par des virgules).
1053 text_comma_separated: Plusieurs valeurs possibles (sΓ©parΓ©es par des virgules).
1052 text_line_separated: Plusieurs valeurs possibles (une valeur par ligne).
1054 text_line_separated: Plusieurs valeurs possibles (une valeur par ligne).
1053 text_issues_ref_in_commit_messages: RΓ©fΓ©rencement et rΓ©solution des demandes dans les commentaires de commits
1055 text_issues_ref_in_commit_messages: RΓ©fΓ©rencement et rΓ©solution des demandes dans les commentaires de commits
1054 text_issue_added: "La demande %{id} a Γ©tΓ© soumise par %{author}."
1056 text_issue_added: "La demande %{id} a Γ©tΓ© soumise par %{author}."
1055 text_issue_updated: "La demande %{id} a Γ©tΓ© mise Γ  jour par %{author}."
1057 text_issue_updated: "La demande %{id} a Γ©tΓ© mise Γ  jour par %{author}."
1056 text_wiki_destroy_confirmation: Etes-vous sΓ»r de vouloir supprimer ce wiki et tout son contenu ?
1058 text_wiki_destroy_confirmation: Etes-vous sΓ»r de vouloir supprimer ce wiki et tout son contenu ?
1057 text_issue_category_destroy_question: "%{count} demandes sont affectΓ©es Γ  cette catΓ©gorie. Que voulez-vous faire ?"
1059 text_issue_category_destroy_question: "%{count} demandes sont affectΓ©es Γ  cette catΓ©gorie. Que voulez-vous faire ?"
1058 text_issue_category_destroy_assignments: N'affecter les demandes Γ  aucune autre catΓ©gorie
1060 text_issue_category_destroy_assignments: N'affecter les demandes Γ  aucune autre catΓ©gorie
1059 text_issue_category_reassign_to: RΓ©affecter les demandes Γ  cette catΓ©gorie
1061 text_issue_category_reassign_to: RΓ©affecter les demandes Γ  cette catΓ©gorie
1060 text_user_mail_option: "Pour les projets non sΓ©lectionnΓ©s, vous recevrez seulement des notifications pour ce que vous surveillez ou Γ  quoi vous participez (exemple: demandes dont vous Γͺtes l'auteur ou la personne assignΓ©e)."
1062 text_user_mail_option: "Pour les projets non sΓ©lectionnΓ©s, vous recevrez seulement des notifications pour ce que vous surveillez ou Γ  quoi vous participez (exemple: demandes dont vous Γͺtes l'auteur ou la personne assignΓ©e)."
1061 text_no_configuration_data: "Les rΓ΄les, trackers, statuts et le workflow ne sont pas encore paramΓ©trΓ©s.\nIl est vivement recommandΓ© de charger le paramΓ©trage par defaut. Vous pourrez le modifier une fois chargΓ©."
1063 text_no_configuration_data: "Les rΓ΄les, trackers, statuts et le workflow ne sont pas encore paramΓ©trΓ©s.\nIl est vivement recommandΓ© de charger le paramΓ©trage par defaut. Vous pourrez le modifier une fois chargΓ©."
1062 text_load_default_configuration: Charger le paramΓ©trage par dΓ©faut
1064 text_load_default_configuration: Charger le paramΓ©trage par dΓ©faut
1063 text_status_changed_by_changeset: "AppliquΓ© par commit %{value}."
1065 text_status_changed_by_changeset: "AppliquΓ© par commit %{value}."
1064 text_time_logged_by_changeset: "AppliquΓ© par commit %{value}"
1066 text_time_logged_by_changeset: "AppliquΓ© par commit %{value}"
1065 text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer la ou les demandes(s) selectionnée(s) ?'
1067 text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer la ou les demandes(s) selectionnée(s) ?'
1066 text_issues_destroy_descendants_confirmation: "Cela entrainera Γ©galement la suppression de %{count} sous-tΓ’che(s)."
1068 text_issues_destroy_descendants_confirmation: "Cela entrainera Γ©galement la suppression de %{count} sous-tΓ’che(s)."
1067 text_time_entries_destroy_confirmation: "Etes-vous sΓ»r de vouloir supprimer les temps passΓ©s sΓ©lectionnΓ©s ?"
1069 text_time_entries_destroy_confirmation: "Etes-vous sΓ»r de vouloir supprimer les temps passΓ©s sΓ©lectionnΓ©s ?"
1068 text_select_project_modules: 'SΓ©lectionner les modules Γ  activer pour ce projet :'
1070 text_select_project_modules: 'SΓ©lectionner les modules Γ  activer pour ce projet :'
1069 text_default_administrator_account_changed: Compte administrateur par dΓ©faut changΓ©
1071 text_default_administrator_account_changed: Compte administrateur par dΓ©faut changΓ©
1070 text_file_repository_writable: RΓ©pertoire de stockage des fichiers accessible en Γ©criture
1072 text_file_repository_writable: RΓ©pertoire de stockage des fichiers accessible en Γ©criture
1071 text_plugin_assets_writable: RΓ©pertoire public des plugins accessible en Γ©criture
1073 text_plugin_assets_writable: RΓ©pertoire public des plugins accessible en Γ©criture
1072 text_rmagick_available: Bibliothèque RMagick présente (optionnelle)
1074 text_rmagick_available: Bibliothèque RMagick présente (optionnelle)
1073 text_convert_available: Binaire convert de ImageMagick prΓ©sent (optionel)
1075 text_convert_available: Binaire convert de ImageMagick prΓ©sent (optionel)
1074 text_destroy_time_entries_question: "%{hours} heures ont Γ©tΓ© enregistrΓ©es sur les demandes Γ  supprimer. Que voulez-vous faire ?"
1076 text_destroy_time_entries_question: "%{hours} heures ont Γ©tΓ© enregistrΓ©es sur les demandes Γ  supprimer. Que voulez-vous faire ?"
1075 text_destroy_time_entries: Supprimer les heures
1077 text_destroy_time_entries: Supprimer les heures
1076 text_assign_time_entries_to_project: Reporter les heures sur le projet
1078 text_assign_time_entries_to_project: Reporter les heures sur le projet
1077 text_reassign_time_entries: 'Reporter les heures sur cette demande:'
1079 text_reassign_time_entries: 'Reporter les heures sur cette demande:'
1078 text_user_wrote: "%{value} a Γ©crit :"
1080 text_user_wrote: "%{value} a Γ©crit :"
1079 text_enumeration_destroy_question: "Cette valeur est affectΓ©e Γ  %{count} objets."
1081 text_enumeration_destroy_question: "Cette valeur est affectΓ©e Γ  %{count} objets."
1080 text_enumeration_category_reassign_to: 'RΓ©affecter les objets Γ  cette valeur:'
1082 text_enumeration_category_reassign_to: 'RΓ©affecter les objets Γ  cette valeur:'
1081 text_email_delivery_not_configured: "L'envoi de mail n'est pas configurΓ©, les notifications sont dΓ©sactivΓ©es.\nConfigurez votre serveur SMTP dans config/configuration.yml et redΓ©marrez l'application pour les activer."
1083 text_email_delivery_not_configured: "L'envoi de mail n'est pas configurΓ©, les notifications sont dΓ©sactivΓ©es.\nConfigurez votre serveur SMTP dans config/configuration.yml et redΓ©marrez l'application pour les activer."
1082 text_repository_usernames_mapping: "Vous pouvez sΓ©lectionner ou modifier l'utilisateur Redmine associΓ© Γ  chaque nom d'utilisateur figurant dans l'historique du dΓ©pΓ΄t.\nLes utilisateurs avec le mΓͺme identifiant ou la mΓͺme adresse mail seront automatiquement associΓ©s."
1084 text_repository_usernames_mapping: "Vous pouvez sΓ©lectionner ou modifier l'utilisateur Redmine associΓ© Γ  chaque nom d'utilisateur figurant dans l'historique du dΓ©pΓ΄t.\nLes utilisateurs avec le mΓͺme identifiant ou la mΓͺme adresse mail seront automatiquement associΓ©s."
1083 text_diff_truncated: '... Ce diffΓ©rentiel a Γ©tΓ© tronquΓ© car il excΓ¨de la taille maximale pouvant Γͺtre affichΓ©e.'
1085 text_diff_truncated: '... Ce diffΓ©rentiel a Γ©tΓ© tronquΓ© car il excΓ¨de la taille maximale pouvant Γͺtre affichΓ©e.'
1084 text_custom_field_possible_values_info: 'Une ligne par valeur'
1086 text_custom_field_possible_values_info: 'Une ligne par valeur'
1085 text_wiki_page_destroy_question: "Cette page possède %{descendants} sous-page(s) et descendante(s). Que voulez-vous faire ?"
1087 text_wiki_page_destroy_question: "Cette page possède %{descendants} sous-page(s) et descendante(s). Que voulez-vous faire ?"
1086 text_wiki_page_nullify_children: "Conserver les sous-pages en tant que pages racines"
1088 text_wiki_page_nullify_children: "Conserver les sous-pages en tant que pages racines"
1087 text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes"
1089 text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes"
1088 text_wiki_page_reassign_children: "RΓ©affecter les sous-pages Γ  cette page"
1090 text_wiki_page_reassign_children: "RΓ©affecter les sous-pages Γ  cette page"
1089 text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-Γͺtre plus autorisΓ© Γ  modifier ce projet.\nEtes-vous sΓ»r de vouloir continuer ?"
1091 text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-Γͺtre plus autorisΓ© Γ  modifier ce projet.\nEtes-vous sΓ»r de vouloir continuer ?"
1090 text_zoom_in: Zoom avant
1092 text_zoom_in: Zoom avant
1091 text_zoom_out: Zoom arrière
1093 text_zoom_out: Zoom arrière
1092 text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardΓ© qui sera perdu si vous quittez la page."
1094 text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardΓ© qui sera perdu si vous quittez la page."
1093 text_scm_path_encoding_note: "DΓ©faut : UTF-8"
1095 text_scm_path_encoding_note: "DΓ©faut : UTF-8"
1094 text_subversion_repository_note: "Exemples (en fonction des protocoles supportΓ©s) : file:///, http://, https://, svn://, svn+[tunnelscheme]://"
1096 text_subversion_repository_note: "Exemples (en fonction des protocoles supportΓ©s) : file:///, http://, https://, svn://, svn+[tunnelscheme]://"
1095 text_git_repository_note: "Chemin vers un dΓ©pΓ΄t vide et local (exemples : /gitrepo, c:\\gitrepo)"
1097 text_git_repository_note: "Chemin vers un dΓ©pΓ΄t vide et local (exemples : /gitrepo, c:\\gitrepo)"
1096 text_mercurial_repository_note: "Chemin vers un dΓ©pΓ΄t local (exemples : /hgrepo, c:\\hgrepo)"
1098 text_mercurial_repository_note: "Chemin vers un dΓ©pΓ΄t local (exemples : /hgrepo, c:\\hgrepo)"
1097 text_scm_command: Commande
1099 text_scm_command: Commande
1098 text_scm_command_version: Version
1100 text_scm_command_version: Version
1099 text_scm_config: Vous pouvez configurer les commandes des SCM dans config/configuration.yml. Redémarrer l'application après modification.
1101 text_scm_config: Vous pouvez configurer les commandes des SCM dans config/configuration.yml. Redémarrer l'application après modification.
1100 text_scm_command_not_available: Ce SCM n'est pas disponible. Vérifier les paramètres dans la section administration.
1102 text_scm_command_not_available: Ce SCM n'est pas disponible. Vérifier les paramètres dans la section administration.
1101 text_issue_conflict_resolution_overwrite: "Appliquer quand mΓͺme ma mise Γ  jour (les notes prΓ©cΓ©dentes seront conservΓ©es mais des changements pourront Γͺtre Γ©crasΓ©s)"
1103 text_issue_conflict_resolution_overwrite: "Appliquer quand mΓͺme ma mise Γ  jour (les notes prΓ©cΓ©dentes seront conservΓ©es mais des changements pourront Γͺtre Γ©crasΓ©s)"
1102 text_issue_conflict_resolution_add_notes: "Ajouter mes notes et ignorer mes autres changements"
1104 text_issue_conflict_resolution_add_notes: "Ajouter mes notes et ignorer mes autres changements"
1103 text_issue_conflict_resolution_cancel: "Annuler ma mise Γ  jour et rΓ©afficher %{link}"
1105 text_issue_conflict_resolution_cancel: "Annuler ma mise Γ  jour et rΓ©afficher %{link}"
1104 text_account_destroy_confirmation: "Êtes-vous sûr de vouloir continuer ?\nVotre compte sera définitivement supprimé, sans aucune possibilité de le réactiver."
1106 text_account_destroy_confirmation: "Êtes-vous sûr de vouloir continuer ?\nVotre compte sera définitivement supprimé, sans aucune possibilité de le réactiver."
1105 text_session_expiration_settings: "Attention : le changement de ces paramètres peut entrainer l'expiration des sessions utilisateurs en cours, y compris la vôtre."
1107 text_session_expiration_settings: "Attention : le changement de ces paramètres peut entrainer l'expiration des sessions utilisateurs en cours, y compris la vôtre."
1106 text_project_closed: Ce projet est fermΓ© et accessible en lecture seule.
1108 text_project_closed: Ce projet est fermΓ© et accessible en lecture seule.
1107 text_turning_multiple_off: "Si vous dΓ©sactivez les valeurs multiples, les valeurs multiples seront supprimΓ©es pour n'en conserver qu'une par objet."
1109 text_turning_multiple_off: "Si vous dΓ©sactivez les valeurs multiples, les valeurs multiples seront supprimΓ©es pour n'en conserver qu'une par objet."
1108
1110
1109 default_role_manager: Manager
1111 default_role_manager: Manager
1110 default_role_developer: DΓ©veloppeur
1112 default_role_developer: DΓ©veloppeur
1111 default_role_reporter: Rapporteur
1113 default_role_reporter: Rapporteur
1112 default_tracker_bug: Anomalie
1114 default_tracker_bug: Anomalie
1113 default_tracker_feature: Evolution
1115 default_tracker_feature: Evolution
1114 default_tracker_support: Assistance
1116 default_tracker_support: Assistance
1115 default_issue_status_new: Nouveau
1117 default_issue_status_new: Nouveau
1116 default_issue_status_in_progress: En cours
1118 default_issue_status_in_progress: En cours
1117 default_issue_status_resolved: RΓ©solu
1119 default_issue_status_resolved: RΓ©solu
1118 default_issue_status_feedback: Commentaire
1120 default_issue_status_feedback: Commentaire
1119 default_issue_status_closed: FermΓ©
1121 default_issue_status_closed: FermΓ©
1120 default_issue_status_rejected: RejetΓ©
1122 default_issue_status_rejected: RejetΓ©
1121 default_doc_category_user: Documentation utilisateur
1123 default_doc_category_user: Documentation utilisateur
1122 default_doc_category_tech: Documentation technique
1124 default_doc_category_tech: Documentation technique
1123 default_priority_low: Bas
1125 default_priority_low: Bas
1124 default_priority_normal: Normal
1126 default_priority_normal: Normal
1125 default_priority_high: Haut
1127 default_priority_high: Haut
1126 default_priority_urgent: Urgent
1128 default_priority_urgent: Urgent
1127 default_priority_immediate: ImmΓ©diat
1129 default_priority_immediate: ImmΓ©diat
1128 default_activity_design: Conception
1130 default_activity_design: Conception
1129 default_activity_development: DΓ©veloppement
1131 default_activity_development: DΓ©veloppement
1130
1132
1131 enumeration_issue_priorities: PrioritΓ©s des demandes
1133 enumeration_issue_priorities: PrioritΓ©s des demandes
1132 enumeration_doc_categories: CatΓ©gories des documents
1134 enumeration_doc_categories: CatΓ©gories des documents
1133 enumeration_activities: ActivitΓ©s (suivi du temps)
1135 enumeration_activities: ActivitΓ©s (suivi du temps)
1134 enumeration_system_activity: Activité système
1136 enumeration_system_activity: Activité système
1135 description_filter: Filtre
1137 description_filter: Filtre
1136 description_search: Champ de recherche
1138 description_search: Champ de recherche
1137 description_choose_project: Projets
1139 description_choose_project: Projets
1138 description_project_scope: Périmètre de recherche
1140 description_project_scope: Périmètre de recherche
1139 description_notes: Notes
1141 description_notes: Notes
1140 description_message_content: Contenu du message
1142 description_message_content: Contenu du message
1141 description_query_sort_criteria_attribute: Critère de tri
1143 description_query_sort_criteria_attribute: Critère de tri
1142 description_query_sort_criteria_direction: Ordre de tri
1144 description_query_sort_criteria_direction: Ordre de tri
1143 description_user_mail_notification: Option de notification
1145 description_user_mail_notification: Option de notification
1144 description_available_columns: Colonnes disponibles
1146 description_available_columns: Colonnes disponibles
1145 description_selected_columns: Colonnes sΓ©lectionnΓ©es
1147 description_selected_columns: Colonnes sΓ©lectionnΓ©es
1146 description_all_columns: Toutes les colonnes
1148 description_all_columns: Toutes les colonnes
1147 description_issue_category_reassign: Choisir une catΓ©gorie
1149 description_issue_category_reassign: Choisir une catΓ©gorie
1148 description_wiki_subpages_reassign: Choisir une nouvelle page parent
1150 description_wiki_subpages_reassign: Choisir une nouvelle page parent
1149 description_date_range_list: Choisir une pΓ©riode prΓ©dΓ©finie
1151 description_date_range_list: Choisir une pΓ©riode prΓ©dΓ©finie
1150 description_date_range_interval: Choisir une pΓ©riode
1152 description_date_range_interval: Choisir une pΓ©riode
1151 description_date_from: Date de dΓ©but
1153 description_date_from: Date de dΓ©but
1152 description_date_to: Date de fin
1154 description_date_to: Date de fin
1153 text_repository_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et tirets bas sont autorisΓ©s.<br />Un fois sauvegardΓ©, l''identifiant ne pourra plus Γͺtre modifiΓ©.'
1155 text_repository_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et tirets bas sont autorisΓ©s.<br />Un fois sauvegardΓ©, l''identifiant ne pourra plus Γͺtre modifiΓ©.'
@@ -1,242 +1,246
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18
18
19 # DO NOT MODIFY THIS FILE !!!
19 # DO NOT MODIFY THIS FILE !!!
20 # Settings can be defined through the application in Admin -> Settings
20 # Settings can be defined through the application in Admin -> Settings
21
21
22 app_title:
22 app_title:
23 default: Redmine
23 default: Redmine
24 app_subtitle:
24 app_subtitle:
25 default: Project management
25 default: Project management
26 welcome_text:
26 welcome_text:
27 default:
27 default:
28 login_required:
28 login_required:
29 default: 0
29 default: 0
30 self_registration:
30 self_registration:
31 default: '2'
31 default: '2'
32 lost_password:
32 lost_password:
33 default: 1
33 default: 1
34 unsubscribe:
34 unsubscribe:
35 default: 1
35 default: 1
36 password_min_length:
36 password_min_length:
37 format: int
37 format: int
38 default: 8
38 default: 8
39 # Maximum password age in days
40 password_max_age:
41 format: int
42 default: 0
39 # Maximum number of additional email addresses per user
43 # Maximum number of additional email addresses per user
40 max_additional_emails:
44 max_additional_emails:
41 format: int
45 format: int
42 default: 5
46 default: 5
43 # Maximum lifetime of user sessions in minutes
47 # Maximum lifetime of user sessions in minutes
44 session_lifetime:
48 session_lifetime:
45 format: int
49 format: int
46 default: 0
50 default: 0
47 # User session timeout in minutes
51 # User session timeout in minutes
48 session_timeout:
52 session_timeout:
49 format: int
53 format: int
50 default: 0
54 default: 0
51 attachment_max_size:
55 attachment_max_size:
52 format: int
56 format: int
53 default: 5120
57 default: 5120
54 issues_export_limit:
58 issues_export_limit:
55 format: int
59 format: int
56 default: 500
60 default: 500
57 activity_days_default:
61 activity_days_default:
58 format: int
62 format: int
59 default: 30
63 default: 30
60 per_page_options:
64 per_page_options:
61 default: '25,50,100'
65 default: '25,50,100'
62 search_results_per_page:
66 search_results_per_page:
63 default: 10
67 default: 10
64 mail_from:
68 mail_from:
65 default: redmine@example.net
69 default: redmine@example.net
66 bcc_recipients:
70 bcc_recipients:
67 default: 1
71 default: 1
68 plain_text_mail:
72 plain_text_mail:
69 default: 0
73 default: 0
70 text_formatting:
74 text_formatting:
71 default: textile
75 default: textile
72 cache_formatted_text:
76 cache_formatted_text:
73 default: 0
77 default: 0
74 wiki_compression:
78 wiki_compression:
75 default: ""
79 default: ""
76 default_language:
80 default_language:
77 default: en
81 default: en
78 force_default_language_for_anonymous:
82 force_default_language_for_anonymous:
79 default: 0
83 default: 0
80 force_default_language_for_loggedin:
84 force_default_language_for_loggedin:
81 default: 0
85 default: 0
82 host_name:
86 host_name:
83 default: localhost:3000
87 default: localhost:3000
84 protocol:
88 protocol:
85 default: http
89 default: http
86 feeds_limit:
90 feeds_limit:
87 format: int
91 format: int
88 default: 15
92 default: 15
89 gantt_items_limit:
93 gantt_items_limit:
90 format: int
94 format: int
91 default: 500
95 default: 500
92 # Maximum size of files that can be displayed
96 # Maximum size of files that can be displayed
93 # inline through the file viewer (in KB)
97 # inline through the file viewer (in KB)
94 file_max_size_displayed:
98 file_max_size_displayed:
95 format: int
99 format: int
96 default: 512
100 default: 512
97 diff_max_lines_displayed:
101 diff_max_lines_displayed:
98 format: int
102 format: int
99 default: 1500
103 default: 1500
100 enabled_scm:
104 enabled_scm:
101 serialized: true
105 serialized: true
102 default:
106 default:
103 - Subversion
107 - Subversion
104 - Darcs
108 - Darcs
105 - Mercurial
109 - Mercurial
106 - Cvs
110 - Cvs
107 - Bazaar
111 - Bazaar
108 - Git
112 - Git
109 autofetch_changesets:
113 autofetch_changesets:
110 default: 1
114 default: 1
111 sys_api_enabled:
115 sys_api_enabled:
112 default: 0
116 default: 0
113 sys_api_key:
117 sys_api_key:
114 default: ''
118 default: ''
115 commit_cross_project_ref:
119 commit_cross_project_ref:
116 default: 0
120 default: 0
117 commit_ref_keywords:
121 commit_ref_keywords:
118 default: 'refs,references,IssueID'
122 default: 'refs,references,IssueID'
119 commit_update_keywords:
123 commit_update_keywords:
120 serialized: true
124 serialized: true
121 default: []
125 default: []
122 commit_logtime_enabled:
126 commit_logtime_enabled:
123 default: 0
127 default: 0
124 commit_logtime_activity_id:
128 commit_logtime_activity_id:
125 format: int
129 format: int
126 default: 0
130 default: 0
127 # autologin duration in days
131 # autologin duration in days
128 # 0 means autologin is disabled
132 # 0 means autologin is disabled
129 autologin:
133 autologin:
130 format: int
134 format: int
131 default: 0
135 default: 0
132 # date format
136 # date format
133 date_format:
137 date_format:
134 default: ''
138 default: ''
135 time_format:
139 time_format:
136 default: ''
140 default: ''
137 user_format:
141 user_format:
138 default: :firstname_lastname
142 default: :firstname_lastname
139 format: symbol
143 format: symbol
140 cross_project_issue_relations:
144 cross_project_issue_relations:
141 default: 0
145 default: 0
142 # Enables subtasks to be in other projects
146 # Enables subtasks to be in other projects
143 cross_project_subtasks:
147 cross_project_subtasks:
144 default: 'tree'
148 default: 'tree'
145 link_copied_issue:
149 link_copied_issue:
146 default: 'ask'
150 default: 'ask'
147 issue_group_assignment:
151 issue_group_assignment:
148 default: 0
152 default: 0
149 default_issue_start_date_to_creation_date:
153 default_issue_start_date_to_creation_date:
150 default: 1
154 default: 1
151 notified_events:
155 notified_events:
152 serialized: true
156 serialized: true
153 default:
157 default:
154 - issue_added
158 - issue_added
155 - issue_updated
159 - issue_updated
156 mail_handler_body_delimiters:
160 mail_handler_body_delimiters:
157 default: ''
161 default: ''
158 mail_handler_excluded_filenames:
162 mail_handler_excluded_filenames:
159 default: ''
163 default: ''
160 mail_handler_api_enabled:
164 mail_handler_api_enabled:
161 default: 0
165 default: 0
162 mail_handler_api_key:
166 mail_handler_api_key:
163 default:
167 default:
164 issue_list_default_columns:
168 issue_list_default_columns:
165 serialized: true
169 serialized: true
166 default:
170 default:
167 - tracker
171 - tracker
168 - status
172 - status
169 - priority
173 - priority
170 - subject
174 - subject
171 - assigned_to
175 - assigned_to
172 - updated_on
176 - updated_on
173 display_subprojects_issues:
177 display_subprojects_issues:
174 default: 1
178 default: 1
175 issue_done_ratio:
179 issue_done_ratio:
176 default: 'issue_field'
180 default: 'issue_field'
177 default_projects_public:
181 default_projects_public:
178 default: 1
182 default: 1
179 default_projects_modules:
183 default_projects_modules:
180 serialized: true
184 serialized: true
181 default:
185 default:
182 - issue_tracking
186 - issue_tracking
183 - time_tracking
187 - time_tracking
184 - news
188 - news
185 - documents
189 - documents
186 - files
190 - files
187 - wiki
191 - wiki
188 - repository
192 - repository
189 - boards
193 - boards
190 - calendar
194 - calendar
191 - gantt
195 - gantt
192 default_projects_tracker_ids:
196 default_projects_tracker_ids:
193 serialized: true
197 serialized: true
194 default:
198 default:
195 # Role given to a non-admin user who creates a project
199 # Role given to a non-admin user who creates a project
196 new_project_user_role_id:
200 new_project_user_role_id:
197 format: int
201 format: int
198 default: ''
202 default: ''
199 sequential_project_identifiers:
203 sequential_project_identifiers:
200 default: 0
204 default: 0
201 # encodings used to convert repository files content to UTF-8
205 # encodings used to convert repository files content to UTF-8
202 # multiple values accepted, comma separated
206 # multiple values accepted, comma separated
203 repositories_encodings:
207 repositories_encodings:
204 default: ''
208 default: ''
205 # encoding used to convert commit logs to UTF-8
209 # encoding used to convert commit logs to UTF-8
206 commit_logs_encoding:
210 commit_logs_encoding:
207 default: 'UTF-8'
211 default: 'UTF-8'
208 repository_log_display_limit:
212 repository_log_display_limit:
209 format: int
213 format: int
210 default: 100
214 default: 100
211 ui_theme:
215 ui_theme:
212 default: ''
216 default: ''
213 emails_footer:
217 emails_footer:
214 default: |-
218 default: |-
215 You have received this notification because you have either subscribed to it, or are involved in it.
219 You have received this notification because you have either subscribed to it, or are involved in it.
216 To change your notification preferences, please click here: http://hostname/my/account
220 To change your notification preferences, please click here: http://hostname/my/account
217 gravatar_enabled:
221 gravatar_enabled:
218 default: 0
222 default: 0
219 openid:
223 openid:
220 default: 0
224 default: 0
221 gravatar_default:
225 gravatar_default:
222 default: ''
226 default: ''
223 start_of_week:
227 start_of_week:
224 default: ''
228 default: ''
225 rest_api_enabled:
229 rest_api_enabled:
226 default: 0
230 default: 0
227 jsonp_enabled:
231 jsonp_enabled:
228 default: 0
232 default: 0
229 default_notification_option:
233 default_notification_option:
230 default: 'only_my_events'
234 default: 'only_my_events'
231 emails_header:
235 emails_header:
232 default: ''
236 default: ''
233 thumbnails_enabled:
237 thumbnails_enabled:
234 default: 0
238 default: 0
235 thumbnails_size:
239 thumbnails_size:
236 format: int
240 format: int
237 default: 100
241 default: 100
238 non_working_week_days:
242 non_working_week_days:
239 serialized: true
243 serialized: true
240 default:
244 default:
241 - '6'
245 - '6'
242 - '7'
246 - '7'
@@ -1,291 +1,325
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
2 # Copyright (C) 2006-2015 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 class AccountTest < Redmine::IntegrationTest
20 class AccountTest < Redmine::IntegrationTest
21 fixtures :users, :email_addresses, :roles
21 fixtures :users, :email_addresses, :roles
22
22
23 def test_login
23 def test_login
24 get "/my/page"
24 get "/my/page"
25 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fmy%2Fpage"
25 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fmy%2Fpage"
26 log_user('jsmith', 'jsmith')
26 log_user('jsmith', 'jsmith')
27
27
28 get "/my/account"
28 get "/my/account"
29 assert_response :success
29 assert_response :success
30 assert_template "my/account"
30 assert_template "my/account"
31 end
31 end
32
32
33 def test_autologin
33 def test_autologin
34 user = User.find(1)
34 user = User.find(1)
35 Setting.autologin = "7"
35 Setting.autologin = "7"
36 Token.delete_all
36 Token.delete_all
37
37
38 # User logs in with 'autologin' checked
38 # User logs in with 'autologin' checked
39 post '/login', :username => user.login, :password => 'admin', :autologin => 1
39 post '/login', :username => user.login, :password => 'admin', :autologin => 1
40 assert_redirected_to '/my/page'
40 assert_redirected_to '/my/page'
41 token = Token.first
41 token = Token.first
42 assert_not_nil token
42 assert_not_nil token
43 assert_equal user, token.user
43 assert_equal user, token.user
44 assert_equal 'autologin', token.action
44 assert_equal 'autologin', token.action
45 assert_equal user.id, session[:user_id]
45 assert_equal user.id, session[:user_id]
46 assert_equal token.value, cookies['autologin']
46 assert_equal token.value, cookies['autologin']
47
47
48 # Session is cleared
48 # Session is cleared
49 reset!
49 reset!
50 User.current = nil
50 User.current = nil
51 # Clears user's last login timestamp
51 # Clears user's last login timestamp
52 user.update_attribute :last_login_on, nil
52 user.update_attribute :last_login_on, nil
53 assert_nil user.reload.last_login_on
53 assert_nil user.reload.last_login_on
54
54
55 # User comes back with user's autologin cookie
55 # User comes back with user's autologin cookie
56 cookies[:autologin] = token.value
56 cookies[:autologin] = token.value
57 get '/my/page'
57 get '/my/page'
58 assert_response :success
58 assert_response :success
59 assert_template 'my/page'
59 assert_template 'my/page'
60 assert_equal user.id, session[:user_id]
60 assert_equal user.id, session[:user_id]
61 assert_not_nil user.reload.last_login_on
61 assert_not_nil user.reload.last_login_on
62 end
62 end
63
63
64 def test_autologin_should_use_autologin_cookie_name
64 def test_autologin_should_use_autologin_cookie_name
65 Token.delete_all
65 Token.delete_all
66 Redmine::Configuration.stubs(:[]).with('autologin_cookie_name').returns('custom_autologin')
66 Redmine::Configuration.stubs(:[]).with('autologin_cookie_name').returns('custom_autologin')
67 Redmine::Configuration.stubs(:[]).with('autologin_cookie_path').returns('/')
67 Redmine::Configuration.stubs(:[]).with('autologin_cookie_path').returns('/')
68 Redmine::Configuration.stubs(:[]).with('autologin_cookie_secure').returns(false)
68 Redmine::Configuration.stubs(:[]).with('autologin_cookie_secure').returns(false)
69
69
70 with_settings :autologin => '7' do
70 with_settings :autologin => '7' do
71 assert_difference 'Token.count' do
71 assert_difference 'Token.count' do
72 post '/login', :username => 'admin', :password => 'admin', :autologin => 1
72 post '/login', :username => 'admin', :password => 'admin', :autologin => 1
73 end
73 end
74 assert_response 302
74 assert_response 302
75 assert cookies['custom_autologin'].present?
75 assert cookies['custom_autologin'].present?
76 token = cookies['custom_autologin']
76 token = cookies['custom_autologin']
77
77
78 # Session is cleared
78 # Session is cleared
79 reset!
79 reset!
80 cookies['custom_autologin'] = token
80 cookies['custom_autologin'] = token
81 get '/my/page'
81 get '/my/page'
82 assert_response :success
82 assert_response :success
83
83
84 assert_difference 'Token.count', -1 do
84 assert_difference 'Token.count', -1 do
85 post '/logout'
85 post '/logout'
86 end
86 end
87 assert cookies['custom_autologin'].blank?
87 assert cookies['custom_autologin'].blank?
88 end
88 end
89 end
89 end
90
90
91 def test_lost_password
91 def test_lost_password
92 Token.delete_all
92 Token.delete_all
93
93
94 get "/account/lost_password"
94 get "/account/lost_password"
95 assert_response :success
95 assert_response :success
96 assert_template "account/lost_password"
96 assert_template "account/lost_password"
97 assert_select 'input[name=mail]'
97 assert_select 'input[name=mail]'
98
98
99 post "/account/lost_password", :mail => 'jSmith@somenet.foo'
99 post "/account/lost_password", :mail => 'jSmith@somenet.foo'
100 assert_redirected_to "/login"
100 assert_redirected_to "/login"
101
101
102 token = Token.first
102 token = Token.first
103 assert_equal 'recovery', token.action
103 assert_equal 'recovery', token.action
104 assert_equal 'jsmith@somenet.foo', token.user.mail
104 assert_equal 'jsmith@somenet.foo', token.user.mail
105 assert !token.expired?
105 assert !token.expired?
106
106
107 get "/account/lost_password", :token => token.value
107 get "/account/lost_password", :token => token.value
108 assert_response :success
108 assert_response :success
109 assert_template "account/password_recovery"
109 assert_template "account/password_recovery"
110 assert_select 'input[type=hidden][name=token][value=?]', token.value
110 assert_select 'input[type=hidden][name=token][value=?]', token.value
111 assert_select 'input[name=new_password]'
111 assert_select 'input[name=new_password]'
112 assert_select 'input[name=new_password_confirmation]'
112 assert_select 'input[name=new_password_confirmation]'
113
113
114 post "/account/lost_password",
114 post "/account/lost_password",
115 :token => token.value, :new_password => 'newpass123',
115 :token => token.value, :new_password => 'newpass123',
116 :new_password_confirmation => 'newpass123'
116 :new_password_confirmation => 'newpass123'
117 assert_redirected_to "/login"
117 assert_redirected_to "/login"
118 assert_equal 'Password was successfully updated.', flash[:notice]
118 assert_equal 'Password was successfully updated.', flash[:notice]
119
119
120 log_user('jsmith', 'newpass123')
120 log_user('jsmith', 'newpass123')
121 assert_equal 0, Token.count
121 assert_equal 0, Token.count
122 end
122 end
123
123
124 def test_user_with_must_change_passwd_should_be_forced_to_change_its_password
124 def test_user_with_must_change_passwd_should_be_forced_to_change_its_password
125 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
125 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
126
126
127 post '/login', :username => 'jsmith', :password => 'jsmith'
127 post '/login', :username => 'jsmith', :password => 'jsmith'
128 assert_redirected_to '/my/page'
128 assert_redirected_to '/my/page'
129 follow_redirect!
129 follow_redirect!
130 assert_redirected_to '/my/password'
130 assert_redirected_to '/my/password'
131
131
132 get '/issues'
132 get '/issues'
133 assert_redirected_to '/my/password'
133 assert_redirected_to '/my/password'
134 end
134 end
135
135
136 def test_user_with_must_change_passwd_should_be_able_to_change_its_password
136 def test_user_with_must_change_passwd_should_be_able_to_change_its_password
137 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
137 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
138
138
139 post '/login', :username => 'jsmith', :password => 'jsmith'
139 post '/login', :username => 'jsmith', :password => 'jsmith'
140 assert_redirected_to '/my/page'
140 assert_redirected_to '/my/page'
141 follow_redirect!
141 follow_redirect!
142 assert_redirected_to '/my/password'
142 assert_redirected_to '/my/password'
143 follow_redirect!
143 follow_redirect!
144 assert_response :success
144 assert_response :success
145 post '/my/password', :password => 'jsmith', :new_password => 'newpassword', :new_password_confirmation => 'newpassword'
145 post '/my/password', :password => 'jsmith', :new_password => 'newpassword', :new_password_confirmation => 'newpassword'
146 assert_redirected_to '/my/account'
146 assert_redirected_to '/my/account'
147 follow_redirect!
147 follow_redirect!
148 assert_response :success
148 assert_response :success
149
149
150 assert_equal false, User.find_by_login('jsmith').must_change_passwd?
150 assert_equal false, User.find_by_login('jsmith').must_change_passwd?
151 end
151 end
152
152
153 def test_user_with_expired_password_should_be_forced_to_change_its_password
154 User.find_by_login('jsmith').update_attribute :passwd_changed_on, 14.days.ago
155
156 with_settings :password_max_age => 7 do
157 post '/login', :username => 'jsmith', :password => 'jsmith'
158 assert_redirected_to '/my/page'
159 follow_redirect!
160 assert_redirected_to '/my/password'
161
162 get '/issues'
163 assert_redirected_to '/my/password'
164 end
165 end
166
167 def test_user_with_expired_password_should_be_able_to_change_its_password
168 User.find_by_login('jsmith').update_attribute :passwd_changed_on, 14.days.ago
169
170 with_settings :password_max_age => 7 do
171 post '/login', :username => 'jsmith', :password => 'jsmith'
172 assert_redirected_to '/my/page'
173 follow_redirect!
174 assert_redirected_to '/my/password'
175 follow_redirect!
176 assert_response :success
177 post '/my/password', :password => 'jsmith', :new_password => 'newpassword', :new_password_confirmation => 'newpassword'
178 assert_redirected_to '/my/account'
179 follow_redirect!
180 assert_response :success
181
182 assert_equal false, User.find_by_login('jsmith').must_change_passwd?
183 end
184
185 end
186
153 def test_register_with_automatic_activation
187 def test_register_with_automatic_activation
154 Setting.self_registration = '3'
188 Setting.self_registration = '3'
155
189
156 get '/account/register'
190 get '/account/register'
157 assert_response :success
191 assert_response :success
158 assert_template 'account/register'
192 assert_template 'account/register'
159
193
160 post '/account/register',
194 post '/account/register',
161 :user => {:login => "newuser", :language => "en",
195 :user => {:login => "newuser", :language => "en",
162 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
196 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
163 :password => "newpass123", :password_confirmation => "newpass123"}
197 :password => "newpass123", :password_confirmation => "newpass123"}
164 assert_redirected_to '/my/account'
198 assert_redirected_to '/my/account'
165 follow_redirect!
199 follow_redirect!
166 assert_response :success
200 assert_response :success
167 assert_template 'my/account'
201 assert_template 'my/account'
168
202
169 user = User.find_by_login('newuser')
203 user = User.find_by_login('newuser')
170 assert_not_nil user
204 assert_not_nil user
171 assert user.active?
205 assert user.active?
172 assert_not_nil user.last_login_on
206 assert_not_nil user.last_login_on
173 end
207 end
174
208
175 def test_register_with_manual_activation
209 def test_register_with_manual_activation
176 Setting.self_registration = '2'
210 Setting.self_registration = '2'
177
211
178 post '/account/register',
212 post '/account/register',
179 :user => {:login => "newuser", :language => "en",
213 :user => {:login => "newuser", :language => "en",
180 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
214 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
181 :password => "newpass123", :password_confirmation => "newpass123"}
215 :password => "newpass123", :password_confirmation => "newpass123"}
182 assert_redirected_to '/login'
216 assert_redirected_to '/login'
183 assert !User.find_by_login('newuser').active?
217 assert !User.find_by_login('newuser').active?
184 end
218 end
185
219
186 def test_register_with_email_activation
220 def test_register_with_email_activation
187 Setting.self_registration = '1'
221 Setting.self_registration = '1'
188 Token.delete_all
222 Token.delete_all
189
223
190 post '/account/register',
224 post '/account/register',
191 :user => {:login => "newuser", :language => "en",
225 :user => {:login => "newuser", :language => "en",
192 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
226 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
193 :password => "newpass123", :password_confirmation => "newpass123"}
227 :password => "newpass123", :password_confirmation => "newpass123"}
194 assert_redirected_to '/login'
228 assert_redirected_to '/login'
195 assert !User.find_by_login('newuser').active?
229 assert !User.find_by_login('newuser').active?
196
230
197 token = Token.first
231 token = Token.first
198 assert_equal 'register', token.action
232 assert_equal 'register', token.action
199 assert_equal 'newuser@foo.bar', token.user.mail
233 assert_equal 'newuser@foo.bar', token.user.mail
200 assert !token.expired?
234 assert !token.expired?
201
235
202 get '/account/activate', :token => token.value
236 get '/account/activate', :token => token.value
203 assert_redirected_to '/login'
237 assert_redirected_to '/login'
204 log_user('newuser', 'newpass123')
238 log_user('newuser', 'newpass123')
205 end
239 end
206
240
207 def test_onthefly_registration
241 def test_onthefly_registration
208 # disable registration
242 # disable registration
209 Setting.self_registration = '0'
243 Setting.self_registration = '0'
210 AuthSource.expects(:authenticate).returns(
244 AuthSource.expects(:authenticate).returns(
211 {:login => 'foo', :firstname => 'Foo', :lastname => 'Smith',
245 {:login => 'foo', :firstname => 'Foo', :lastname => 'Smith',
212 :mail => 'foo@bar.com', :auth_source_id => 66})
246 :mail => 'foo@bar.com', :auth_source_id => 66})
213
247
214 post '/login', :username => 'foo', :password => 'bar'
248 post '/login', :username => 'foo', :password => 'bar'
215 assert_redirected_to '/my/page'
249 assert_redirected_to '/my/page'
216
250
217 user = User.find_by_login('foo')
251 user = User.find_by_login('foo')
218 assert user.is_a?(User)
252 assert user.is_a?(User)
219 assert_equal 66, user.auth_source_id
253 assert_equal 66, user.auth_source_id
220 assert user.hashed_password.blank?
254 assert user.hashed_password.blank?
221 end
255 end
222
256
223 def test_onthefly_registration_with_invalid_attributes
257 def test_onthefly_registration_with_invalid_attributes
224 # disable registration
258 # disable registration
225 Setting.self_registration = '0'
259 Setting.self_registration = '0'
226 AuthSource.expects(:authenticate).returns(
260 AuthSource.expects(:authenticate).returns(
227 {:login => 'foo', :lastname => 'Smith', :auth_source_id => 66})
261 {:login => 'foo', :lastname => 'Smith', :auth_source_id => 66})
228
262
229 post '/login', :username => 'foo', :password => 'bar'
263 post '/login', :username => 'foo', :password => 'bar'
230 assert_response :success
264 assert_response :success
231 assert_template 'account/register'
265 assert_template 'account/register'
232 assert_select 'input[name=?][value=""]', 'user[firstname]'
266 assert_select 'input[name=?][value=""]', 'user[firstname]'
233 assert_select 'input[name=?][value=Smith]', 'user[lastname]'
267 assert_select 'input[name=?][value=Smith]', 'user[lastname]'
234 assert_select 'input[name=?]', 'user[login]', 0
268 assert_select 'input[name=?]', 'user[login]', 0
235 assert_select 'input[name=?]', 'user[password]', 0
269 assert_select 'input[name=?]', 'user[password]', 0
236
270
237 post '/account/register',
271 post '/account/register',
238 :user => {:firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com'}
272 :user => {:firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com'}
239 assert_redirected_to '/my/account'
273 assert_redirected_to '/my/account'
240
274
241 user = User.find_by_login('foo')
275 user = User.find_by_login('foo')
242 assert user.is_a?(User)
276 assert user.is_a?(User)
243 assert_equal 66, user.auth_source_id
277 assert_equal 66, user.auth_source_id
244 assert user.hashed_password.blank?
278 assert user.hashed_password.blank?
245 end
279 end
246
280
247 def test_registered_user_should_be_able_to_get_a_new_activation_email
281 def test_registered_user_should_be_able_to_get_a_new_activation_email
248 Token.delete_all
282 Token.delete_all
249
283
250 with_settings :self_registration => '1', :default_language => 'en' do
284 with_settings :self_registration => '1', :default_language => 'en' do
251 # register a new account
285 # register a new account
252 assert_difference 'User.count' do
286 assert_difference 'User.count' do
253 assert_difference 'Token.count' do
287 assert_difference 'Token.count' do
254 post '/account/register',
288 post '/account/register',
255 :user => {:login => "newuser", :language => "en",
289 :user => {:login => "newuser", :language => "en",
256 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
290 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
257 :password => "newpass123", :password_confirmation => "newpass123"}
291 :password => "newpass123", :password_confirmation => "newpass123"}
258 end
292 end
259 end
293 end
260 user = User.order('id desc').first
294 user = User.order('id desc').first
261 assert_equal User::STATUS_REGISTERED, user.status
295 assert_equal User::STATUS_REGISTERED, user.status
262 reset!
296 reset!
263
297
264 # try to use "lost password"
298 # try to use "lost password"
265 assert_no_difference 'ActionMailer::Base.deliveries.size' do
299 assert_no_difference 'ActionMailer::Base.deliveries.size' do
266 post '/account/lost_password', :mail => 'newuser@foo.bar'
300 post '/account/lost_password', :mail => 'newuser@foo.bar'
267 end
301 end
268 assert_redirected_to '/account/lost_password'
302 assert_redirected_to '/account/lost_password'
269 follow_redirect!
303 follow_redirect!
270 assert_response :success
304 assert_response :success
271 assert_select 'div.flash', :text => /new activation email/
305 assert_select 'div.flash', :text => /new activation email/
272 assert_select 'div.flash a[href="/account/activation_email"]'
306 assert_select 'div.flash a[href="/account/activation_email"]'
273
307
274 # request a new action activation email
308 # request a new action activation email
275 assert_difference 'ActionMailer::Base.deliveries.size' do
309 assert_difference 'ActionMailer::Base.deliveries.size' do
276 get '/account/activation_email'
310 get '/account/activation_email'
277 end
311 end
278 assert_redirected_to '/login'
312 assert_redirected_to '/login'
279 token = Token.order('id desc').first
313 token = Token.order('id desc').first
280 activation_path = "/account/activate?token=#{token.value}"
314 activation_path = "/account/activate?token=#{token.value}"
281 assert_include activation_path, mail_body(ActionMailer::Base.deliveries.last)
315 assert_include activation_path, mail_body(ActionMailer::Base.deliveries.last)
282
316
283 # activate the account
317 # activate the account
284 get activation_path
318 get activation_path
285 assert_redirected_to '/login'
319 assert_redirected_to '/login'
286
320
287 post '/login', :username => 'newuser', :password => 'newpass123'
321 post '/login', :username => 'newuser', :password => 'newpass123'
288 assert_redirected_to '/my/page'
322 assert_redirected_to '/my/page'
289 end
323 end
290 end
324 end
291 end
325 end
General Comments 0
You need to be logged in to leave comments. Login now