Compare commits

..
26 Commits
Author SHA1 Message Date
Liwiusz Ociepa 131b15fc7a Fix access to Repository Parent Path (FORBIDEN instead of AUTH_REQUIRED).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/swistak@2058 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-11-27 14:51:14 +00:00
Liwiusz Ociepa f6b1583a1a If project_id is uninitialized, initialize it.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/swistak@2050 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-11-20 13:46:06 +00:00
Liwiusz Ociepa 5bea900443 Some debug added.
There is a bug - don't know if in Redmine.pm or in Netbeans svn client.
In logs:
Use of uninitialized value $project_id in concatenation (.) or string at 
/usr/lib/perl5/Apache/Authn/Redmine.pm line 306, ....


git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/swistak@2049 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-11-20 11:21:14 +00:00
Liwiusz Ociepa 81baddad00 - Disable debug,
- Fix namespace set condition (setting namespace, without 
  configured memcached, should segfault apache before).


git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1646 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-07-08 15:06:41 +00:00
Liwiusz Ociepa f6b5632fec Remove default Memcached namespace.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-07-07 21:34:43 +00:00
Liwiusz Ociepa f7ede727fd Initial support for caching credentials in Memcached (debug is enabled).
Support for caching in Apache memory pools has been dropped.


git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-07-07 17:26:39 +00:00
Liwiusz Ociepa b870417860 Merge changes from trunk.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1618 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-07-04 13:25:32 +00:00
Liwiusz Ociepa 25a7838e0a Memory leak (postgres -> zlib + ssl) has been fixed by apache developers.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1438 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-19 12:41:40 +00:00
Liwiusz Ociepa 7c3ddf2bc0 Simple change to allow multiple RedmineDbWhereClause and added errmsg for RedmineCacheCredsMax
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1424 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-13 09:06:11 +00:00
Liwiusz Ociepa 0f8df81b87 Do not crash on reload.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1423 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-08 22:06:44 +00:00
Liwiusz Ociepa c5121d804d Fix when you don't define RedmineDbWhereClause
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1422 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-08 17:10:25 +00:00
Liwiusz Ociepa 8bcbbebf65 Small fix for not read-only methods.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1421 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-07 09:22:50 +00:00
Liwiusz Ociepa 2d2afab549 Fix comment about configuration.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1420 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-06 19:51:34 +00:00
Liwiusz Ociepa 35f601e769 Cache Credentials added (login:proj -> "sha1_hex(pass))
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1419 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-06 15:14:58 +00:00
Liwiusz Ociepa b84cffd62e Strip extra whitespaces from query in apache config object.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1418 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-05 15:00:50 +00:00
Liwiusz Ociepa 2eba0b66d4 Comment to memory leak with Postgres and ssl.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1417 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-05 13:35:56 +00:00
Liwiusz Ociepa eb2d814344 http://perl.apache.org/docs/2.0/user/config/custom.html#Description
Rewrite module not to use PerlSetVar


git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1416 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-05-05 13:18:41 +00:00
Liwiusz Ociepa d9385ce9a2 Add support for db_where_clause - that variable is appended to password query.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1378 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-04-28 17:49:49 +00:00
Liwiusz Ociepa d3522c10e4 Sync Redmine.pm with trunk.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1377 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-04-28 17:44:00 +00:00
Jean-Philippe Lang b9957264eb swistak branch added.
git-svn-id: http://redmine.rubyforge.org/svn/branches/swistak@1313 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-03-31 17:01:50 +00:00
Jean-Philippe Lang da641f4122 Global queries can be saved from the global issue list (follows r1311 and closes #897).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1312 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-03-30 14:20:07 +00:00
Jean-Philippe Lang 287d86e363 Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list (#897, closes #671).
Only admin users can create/edit queries that are public and for all projects.
Note: this change does not allow to save a query from the global issue list. You have to be inside a project but then you can mark the query as 'For all projects'.

git-svn-id: http://redmine.rubyforge.org/svn/trunk@1311 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-03-30 12:29:07 +00:00
Jean-Philippe Lang faf1f1e812 Fixed: Feed content limit setting has no effect (closes #954).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1310 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-03-30 08:33:04 +00:00
Jean-Philippe Lang cd64338a7f Fixed: Priorities not ordered when displayed as a filter in issue list (#956).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1309 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-03-30 08:19:56 +00:00
Jean-Philippe Lang 1b8c5d4058 Fixed: can not display attached images inline in message replies.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1308 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-03-29 22:35:04 +00:00
Jean-Philippe Lang 5ccbeba5c2 Use #blank? instead of #empty? in news/show view.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1307 e93f8b46-1217-0410-a6f0-8f06a7374b81
2008-03-29 20:03:20 +00:00
180 changed files with 2167 additions and 4810 deletions
-2
View File
@@ -56,8 +56,6 @@ class AccountController < ApplicationController
flash.now[:error] = l(:notice_account_invalid_creditentials) flash.now[:error] = l(:notice_account_invalid_creditentials)
end end
end end
rescue User::OnTheFlyCreationFailure
flash.now[:error] = 'Redmine could not retrieve the required information from the LDAP to create your account. Please, contact your Redmine administrator.'
end end
# Log out current user and redirect to welcome page # Log out current user and redirect to welcome page
+3 -3
View File
@@ -61,11 +61,11 @@ class ApplicationController < ActionController::Base
def set_localization def set_localization
User.current.language = nil unless User.current.logged? User.current.language = nil unless User.current.logged?
lang = begin lang = begin
if !User.current.language.blank? && GLoc.valid_language?(User.current.language) if !User.current.language.blank? and GLoc.valid_languages.include? User.current.language.to_sym
User.current.language User.current.language
elsif request.env['HTTP_ACCEPT_LANGUAGE'] elsif request.env['HTTP_ACCEPT_LANGUAGE']
accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.downcase accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.split('-').first
if !accept_lang.blank? && (GLoc.valid_language?(accept_lang) || GLoc.valid_language?(accept_lang = accept_lang.split('-').first)) if accept_lang and !accept_lang.empty? and GLoc.valid_languages.include? accept_lang.to_sym
User.current.language = accept_lang User.current.language = accept_lang
end end
end end
+7 -11
View File
@@ -102,7 +102,6 @@ class IssuesController < ApplicationController
@edit_allowed = User.current.allowed_to?(:edit_issues, @project) @edit_allowed = User.current.allowed_to?(:edit_issues, @project)
@activities = Enumeration::get_values('ACTI') @activities = Enumeration::get_values('ACTI')
@priorities = Enumeration::get_values('IPRI') @priorities = Enumeration::get_values('IPRI')
@time_entry = TimeEntry.new
respond_to do |format| respond_to do |format|
format.html { render :template => 'issues/show.rhtml' } format.html { render :template => 'issues/show.rhtml' }
format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' } format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' }
@@ -138,18 +137,16 @@ class IssuesController < ApplicationController
@project.custom_fields_for_issues(@issue.tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue) } : @project.custom_fields_for_issues(@issue.tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue) } :
@issue.custom_values @issue.custom_values
else else
requested_status = (params[:issue] && params[:issue][:status_id] ? IssueStatus.find_by_id(params[:issue][:status_id]) : default_status) requested_status = IssueStatus.find_by_id(params[:issue][:status_id])
# Check that the user is allowed to apply the requested status # Check that the user is allowed to apply the requested status
@issue.status = (@allowed_statuses.include? requested_status) ? requested_status : default_status @issue.status = (@allowed_statuses.include? requested_status) ? requested_status : default_status
@custom_values = @project.custom_fields_for_issues(@issue.tracker).collect { |x| CustomValue.new(:custom_field => x, @custom_values = @project.custom_fields_for_issues(@issue.tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue, :value => params["custom_fields"][x.id.to_s]) }
:customized => @issue,
:value => (params[:custom_fields] ? params[:custom_fields][x.id.to_s] : nil)) }
@issue.custom_values = @custom_values @issue.custom_values = @custom_values
if @issue.save if @issue.save
attach_files(@issue, params[:attachments]) attach_files(@issue, params[:attachments])
flash[:notice] = l(:notice_successful_create) flash[:notice] = l(:notice_successful_create)
Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added')
redirect_to :controller => 'issues', :action => 'show', :id => @issue redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project
return return
end end
end end
@@ -186,13 +183,13 @@ class IssuesController < ApplicationController
@custom_values = @project.custom_fields_for_issues(@issue.tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue, :value => params["custom_fields"][x.id.to_s]) } @custom_values = @project.custom_fields_for_issues(@issue.tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue, :value => params["custom_fields"][x.id.to_s]) }
@issue.custom_values = @custom_values @issue.custom_values = @custom_values
end end
@time_entry = TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today)
@time_entry.attributes = params[:time_entry]
attachments = attach_files(@issue, params[:attachments]) attachments = attach_files(@issue, params[:attachments])
attachments.each {|a| journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)} attachments.each {|a| journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)}
if @issue.save if @issue.save
# Log spend time # Log spend time
if current_role.allowed_to?(:log_time) if current_role.allowed_to?(:log_time)
@time_entry = TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today)
@time_entry.attributes = params[:time_entry]
@time_entry.save @time_entry.save
end end
if !journal.new_record? if !journal.new_record?
@@ -345,8 +342,8 @@ class IssuesController < ApplicationController
end end
def preview def preview
@issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank? issue = @project.issues.find_by_id(params[:id])
@attachements = @issue.attachments if @issue @attachements = issue.attachments if issue
@text = params[:notes] || (params[:issue] ? params[:issue][:description] : nil) @text = params[:notes] || (params[:issue] ? params[:issue][:description] : nil)
render :partial => 'common/preview' render :partial => 'common/preview'
end end
@@ -414,7 +411,6 @@ private
else else
@query = Query.find_by_id(session[:query][:id]) if session[:query][:id] @query = Query.find_by_id(session[:query][:id]) if session[:query][:id]
@query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters]) @query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters])
@query.project = @project
end end
end end
end end
+7 -12
View File
@@ -66,20 +66,20 @@ class ProjectsController < ApplicationController
:conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}", :conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}",
:order => 'name') :order => 'name')
@project = Project.new(params[:project]) @project = Project.new(params[:project])
@project.enabled_module_names = Redmine::AccessControl.available_project_modules
if request.get? if request.get?
@custom_values = ProjectCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @project) } @custom_values = ProjectCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @project) }
@project.trackers = Tracker.all @project.trackers = Tracker.all
@project.is_public = Setting.default_projects_public? @project.is_public = Setting.default_projects_public?
@project.enabled_module_names = Redmine::AccessControl.available_project_modules
else else
@project.custom_fields = CustomField.find(params[:custom_field_ids]) if params[:custom_field_ids] @project.custom_fields = CustomField.find(params[:custom_field_ids]) if params[:custom_field_ids]
@custom_values = ProjectCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @project, :value => (params[:custom_fields] ? params["custom_fields"][x.id.to_s] : nil)) } @custom_values = ProjectCustomField.find(:all, :order => "#{CustomField.table_name}.position").collect { |x| CustomValue.new(:custom_field => x, :customized => @project, :value => (params[:custom_fields] ? params["custom_fields"][x.id.to_s] : nil)) }
@project.custom_values = @custom_values @project.custom_values = @custom_values
@project.enabled_module_names = params[:enabled_modules]
if @project.save if @project.save
@project.enabled_module_names = params[:enabled_modules]
flash[:notice] = l(:notice_successful_create) flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'admin', :action => 'projects' redirect_to :controller => 'admin', :action => 'projects'
end end
end end
end end
@@ -87,7 +87,7 @@ class ProjectsController < ApplicationController
def show def show
@custom_values = @project.custom_values.find(:all, :include => :custom_field, :order => "#{CustomField.table_name}.position") @custom_values = @project.custom_values.find(:all, :include => :custom_field, :order => "#{CustomField.table_name}.position")
@members_by_role = @project.members.find(:all, :include => [:user, :role], :order => 'position').group_by {|m| m.role} @members_by_role = @project.members.find(:all, :include => [:user, :role], :order => 'position').group_by {|m| m.role}
@subprojects = @project.children.find(:all, :conditions => Project.visible_by(User.current)) @subprojects = @project.active_children
@news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC") @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
@trackers = @project.rolled_up_trackers @trackers = @project.rolled_up_trackers
@@ -204,10 +204,7 @@ class ProjectsController < ApplicationController
end end
def list_files def list_files
sort_init "#{Attachment.table_name}.filename", "asc" @versions = @project.versions.sort.reverse
sort_update
@versions = @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
render :layout => !request.xhr?
end end
# Show changelog for @project # Show changelog for @project
@@ -341,9 +338,8 @@ class ProjectsController < ApplicationController
:include => [:tracker, :status, :assigned_to, :priority, :project], :include => [:tracker, :status, :assigned_to, :priority, :project],
:conditions => ["((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?)) AND #{Issue.table_name}.tracker_id IN (#{@selected_tracker_ids.join(',')})", @calendar.startdt, @calendar.enddt, @calendar.startdt, @calendar.enddt] :conditions => ["((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?)) AND #{Issue.table_name}.tracker_id IN (#{@selected_tracker_ids.join(',')})", @calendar.startdt, @calendar.enddt, @calendar.startdt, @calendar.enddt]
) unless @selected_tracker_ids.empty? ) unless @selected_tracker_ids.empty?
events += Version.find(:all, :include => :project,
:conditions => ["effective_date BETWEEN ? AND ?", @calendar.startdt, @calendar.enddt])
end end
events += @project.versions.find(:all, :conditions => ["effective_date BETWEEN ? AND ?", @calendar.startdt, @calendar.enddt])
@calendar.events = events @calendar.events = events
render :layout => false if request.xhr? render :layout => false if request.xhr?
@@ -387,9 +383,8 @@ class ProjectsController < ApplicationController
:include => [:tracker, :status, :assigned_to, :priority, :project], :include => [:tracker, :status, :assigned_to, :priority, :project],
:conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null and #{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')}))", @date_from, @date_to, @date_from, @date_to, @date_from, @date_to] :conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null and #{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')}))", @date_from, @date_to, @date_from, @date_to, @date_from, @date_to]
) unless @selected_tracker_ids.empty? ) unless @selected_tracker_ids.empty?
@events += Version.find(:all, :include => :project,
:conditions => ["effective_date BETWEEN ? AND ?", @date_from, @date_to])
end end
@events += @project.versions.find(:all, :conditions => ["effective_date BETWEEN ? AND ?", @date_from, @date_to])
@events.sort! {|x,y| x.start_date <=> y.start_date } @events.sort! {|x,y| x.start_date <=> y.start_date }
if params[:format]=='pdf' if params[:format]=='pdf'
+6 -21
View File
@@ -19,8 +19,8 @@ require 'SVG/Graph/Bar'
require 'SVG/Graph/BarHorizontal' require 'SVG/Graph/BarHorizontal'
require 'digest/sha1' require 'digest/sha1'
class ChangesetNotFound < Exception; end class ChangesetNotFound < Exception
class InvalidRevisionParam < Exception; end end
class RepositoriesController < ApplicationController class RepositoriesController < ApplicationController
layout 'base' layout 'base'
@@ -51,8 +51,8 @@ class RepositoriesController < ApplicationController
def show def show
# check if new revisions have been committed in the repository # check if new revisions have been committed in the repository
@repository.fetch_changesets if Setting.autofetch_changesets? @repository.fetch_changesets if Setting.autofetch_changesets?
# root entries # get entries for the browse frame
@entries = @repository.entries('', @rev) @entries = @repository.entries('')
# latest changesets # latest changesets
@changesets = @repository.changesets.find(:all, :limit => 10, :order => "committed_on DESC") @changesets = @repository.changesets.find(:all, :limit => 10, :order => "committed_on DESC")
show_error_not_found unless @entries || @changesets.any? show_error_not_found unless @entries || @changesets.any?
@@ -65,8 +65,7 @@ class RepositoriesController < ApplicationController
if request.xhr? if request.xhr?
@entries ? render(:partial => 'dir_list_content') : render(:nothing => true) @entries ? render(:partial => 'dir_list_content') : render(:nothing => true)
else else
show_error_not_found and return unless @entries show_error_not_found unless @entries
render :action => 'browse'
end end
rescue Redmine::Scm::Adapters::CommandFailed => e rescue Redmine::Scm::Adapters::CommandFailed => e
show_error_command_failed(e.message) show_error_command_failed(e.message)
@@ -96,12 +95,6 @@ class RepositoriesController < ApplicationController
end end
def entry def entry
@entry = @repository.scm.entry(@path, @rev)
show_error_not_found and return unless @entry
# If the entry is a dir, show the browser
browse and return if @entry.is_dir?
@content = @repository.scm.cat(@path, @rev) @content = @repository.scm.cat(@path, @rev)
show_error_not_found and return unless @content show_error_not_found and return unless @content
if 'raw' == params[:format] || @content.is_binary_data? if 'raw' == params[:format] || @content.is_binary_data?
@@ -142,6 +135,7 @@ class RepositoriesController < ApplicationController
end end
def diff def diff
@rev_to = params[:rev_to]
@diff_type = params[:type] || User.current.pref[:diff_type] || 'inline' @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline'
@diff_type = 'inline' unless %w(inline sbs).include?(@diff_type) @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type)
@@ -186,8 +180,6 @@ private
render_404 render_404
end end
REV_PARAM_RE = %r{^[a-f0-9]*$}
def find_repository def find_repository
@project = Project.find(params[:id]) @project = Project.find(params[:id])
@repository = @project.repository @repository = @project.repository
@@ -195,12 +187,8 @@ private
@path = params[:path].join('/') unless params[:path].nil? @path = params[:path].join('/') unless params[:path].nil?
@path ||= '' @path ||= ''
@rev = params[:rev] @rev = params[:rev]
@rev_to = params[:rev_to]
raise InvalidRevisionParam unless @rev.to_s.match(REV_PARAM_RE) && @rev.to_s.match(REV_PARAM_RE)
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
render_404 render_404
rescue InvalidRevisionParam
show_error_not_found
end end
def show_error_not_found def show_error_not_found
@@ -267,9 +255,6 @@ private
commits_data = commits_data + [0]*(10 - commits_data.length) if commits_data.length<10 commits_data = commits_data + [0]*(10 - commits_data.length) if commits_data.length<10
changes_data = changes_data + [0]*(10 - changes_data.length) if changes_data.length<10 changes_data = changes_data + [0]*(10 - changes_data.length) if changes_data.length<10
# Remove email adress in usernames
fields = fields.collect {|c| c.gsub(%r{<.+@.+>}, '') }
graph = SVG::Graph::BarHorizontal.new( graph = SVG::Graph::BarHorizontal.new(
:height => 300, :height => 300,
:width => 500, :width => 500,
+110 -123
View File
@@ -26,8 +26,6 @@ class TimelogController < ApplicationController
include SortHelper include SortHelper
helper :issues helper :issues
include TimelogHelper include TimelogHelper
helper :custom_fields
include CustomFieldsHelper
def report def report
@available_criterias = { 'project' => {:sql => "#{TimeEntry.table_name}.project_id", @available_criterias = { 'project' => {:sql => "#{TimeEntry.table_name}.project_id",
@@ -47,40 +45,37 @@ class TimelogController < ApplicationController
:label => :label_tracker}, :label => :label_tracker},
'activity' => {:sql => "#{TimeEntry.table_name}.activity_id", 'activity' => {:sql => "#{TimeEntry.table_name}.activity_id",
:klass => Enumeration, :klass => Enumeration,
:label => :label_activity}, :label => :label_activity}
'issue' => {:sql => "#{TimeEntry.table_name}.issue_id",
:klass => Issue,
:label => :label_issue}
} }
# Add list and boolean custom fields as available criterias
@project.all_custom_fields.select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
@available_criterias["cf_#{cf.id}"] = {:sql => "(SELECT c.value FROM custom_values c WHERE c.custom_field_id = #{cf.id} AND c.customized_type = 'Issue' AND c.customized_id = issues.id)",
:format => cf.field_format,
:label => cf.name}
end
@criterias = params[:criterias] || [] @criterias = params[:criterias] || []
@criterias = @criterias.select{|criteria| @available_criterias.has_key? criteria} @criterias = @criterias.select{|criteria| @available_criterias.has_key? criteria}
@criterias.uniq! @criterias.uniq!
@criterias = @criterias[0,3] @criterias = @criterias[0,3]
@columns = (params[:columns] && %w(year month week day).include?(params[:columns])) ? params[:columns] : 'month' @columns = (params[:period] && %w(year month week).include?(params[:period])) ? params[:period] : 'month'
retrieve_date_range if params[:date_from]
begin; @date_from = params[:date_from].to_date; rescue; end
end
if params[:date_to]
begin; @date_to = params[:date_to].to_date; rescue; end
end
@date_from ||= Date.civil(Date.today.year, 1, 1)
@date_to ||= (Date.civil(Date.today.year, Date.today.month, 1) >> 1) - 1
unless @criterias.empty? unless @criterias.empty?
sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ') sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ')
sql_group_by = @criterias.collect{|criteria| @available_criterias[criteria][:sql]}.join(', ') sql_group_by = @criterias.collect{|criteria| @available_criterias[criteria][:sql]}.join(', ')
sql = "SELECT #{sql_select}, tyear, tmonth, tweek, spent_on, SUM(hours) AS hours" sql = "SELECT #{sql_select}, tyear, tmonth, tweek, SUM(hours) AS hours"
sql << " FROM #{TimeEntry.table_name}" sql << " FROM #{TimeEntry.table_name}"
sql << " LEFT JOIN #{Issue.table_name} ON #{TimeEntry.table_name}.issue_id = #{Issue.table_name}.id" sql << " LEFT JOIN #{Issue.table_name} ON #{TimeEntry.table_name}.issue_id = #{Issue.table_name}.id"
sql << " LEFT JOIN #{Project.table_name} ON #{TimeEntry.table_name}.project_id = #{Project.table_name}.id" sql << " LEFT JOIN #{Project.table_name} ON #{TimeEntry.table_name}.project_id = #{Project.table_name}.id"
sql << " WHERE (%s)" % @project.project_condition(Setting.display_subprojects_issues?) sql << " WHERE (%s)" % @project.project_condition(Setting.display_subprojects_issues?)
sql << " AND (%s)" % Project.allowed_to_condition(User.current, :view_time_entries) sql << " AND (%s)" % Project.allowed_to_condition(User.current, :view_time_entries)
sql << " AND spent_on BETWEEN '%s' AND '%s'" % [ActiveRecord::Base.connection.quoted_date(@from.to_time), ActiveRecord::Base.connection.quoted_date(@to.to_time)] sql << " AND spent_on BETWEEN '%s' AND '%s'" % [ActiveRecord::Base.connection.quoted_date(@date_from.to_time), ActiveRecord::Base.connection.quoted_date(@date_to.to_time)]
sql << " GROUP BY #{sql_group_by}, tyear, tmonth, tweek, spent_on" sql << " GROUP BY #{sql_group_by}, tyear, tmonth, tweek"
@hours = ActiveRecord::Base.connection.select_all(sql) @hours = ActiveRecord::Base.connection.select_all(sql)
@@ -92,122 +87,36 @@ class TimelogController < ApplicationController
row['month'] = "#{row['tyear']}-#{row['tmonth']}" row['month'] = "#{row['tyear']}-#{row['tmonth']}"
when 'week' when 'week'
row['week'] = "#{row['tyear']}-#{row['tweek']}" row['week'] = "#{row['tyear']}-#{row['tweek']}"
when 'day'
row['day'] = "#{row['spent_on']}"
end end
end end
@total_hours = @hours.inject(0) {|s,k| s = s + k['hours'].to_f} @total_hours = @hours.inject(0) {|s,k| s = s + k['hours'].to_f}
end
@periods = []
# Date#at_beginning_of_ not supported in Rails 1.2.x @periods = []
date_from = @from.to_time date_from = @date_from
# 100 columns max # 100 columns max
while date_from <= @to.to_time && @periods.length < 100 while date_from < @date_to && @periods.length < 100
case @columns case @columns
when 'year' when 'year'
@periods << "#{date_from.year}" @periods << "#{date_from.year}"
date_from = (date_from + 1.year).at_beginning_of_year date_from = date_from >> 12
when 'month' when 'month'
@periods << "#{date_from.year}-#{date_from.month}" @periods << "#{date_from.year}-#{date_from.month}"
date_from = (date_from + 1.month).at_beginning_of_month date_from = date_from >> 1
when 'week' when 'week'
@periods << "#{date_from.year}-#{date_from.to_date.cweek}" @periods << "#{date_from.year}-#{date_from.cweek}"
date_from = (date_from + 7.day).at_beginning_of_week date_from = date_from + 7
when 'day'
@periods << "#{date_from.to_date}"
date_from = date_from + 1.day
end
end end
end end
respond_to do |format| render :layout => false if request.xhr?
format.html { render :layout => !request.xhr? }
format.csv { send_data(report_to_csv(@criterias, @periods, @hours).read, :type => 'text/csv; header=present', :filename => 'timelog.csv') }
end
end end
def details def details
sort_init 'spent_on', 'desc' sort_init 'spent_on', 'desc'
sort_update sort_update
cond = ARCondition.new
cond << (@issue.nil? ? @project.project_condition(Setting.display_subprojects_issues?) :
["#{TimeEntry.table_name}.issue_id = ?", @issue.id])
retrieve_date_range
cond << ['spent_on BETWEEN ? AND ?', @from, @to]
TimeEntry.visible_by(User.current) do
respond_to do |format|
format.html {
# Paginate results
@entry_count = TimeEntry.count(:include => :project, :conditions => cond.conditions)
@entry_pages = Paginator.new self, @entry_count, per_page_option, params['page']
@entries = TimeEntry.find(:all,
:include => [:project, :activity, :user, {:issue => :tracker}],
:conditions => cond.conditions,
:order => sort_clause,
:limit => @entry_pages.items_per_page,
:offset => @entry_pages.current.offset)
@total_hours = TimeEntry.sum(:hours, :include => :project, :conditions => cond.conditions).to_f
render :layout => !request.xhr?
}
format.csv {
# Export all entries
@entries = TimeEntry.find(:all,
:include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
:conditions => cond.conditions,
:order => sort_clause)
send_data(entries_to_csv(@entries).read, :type => 'text/csv; header=present', :filename => 'timelog.csv')
}
end
end
end
def edit
render_403 and return if @time_entry && !@time_entry.editable_by?(User.current)
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today)
@time_entry.attributes = params[:time_entry]
if request.post? and @time_entry.save
flash[:notice] = l(:notice_successful_update)
redirect_to(params[:back_url] || {:action => 'details', :project_id => @time_entry.project})
return
end
@activities = Enumeration::get_values('ACTI')
end
def destroy
render_404 and return unless @time_entry
render_403 and return unless @time_entry.editable_by?(User.current)
@time_entry.destroy
flash[:notice] = l(:notice_successful_delete)
redirect_to :back
rescue RedirectBackError
redirect_to :action => 'details', :project_id => @time_entry.project
end
private
def find_project
if params[:id]
@time_entry = TimeEntry.find(params[:id])
@project = @time_entry.project
elsif params[:issue_id]
@issue = Issue.find(params[:issue_id])
@project = @issue.project
elsif params[:project_id]
@project = Project.find(params[:project_id])
else
render_404
return false
end
rescue ActiveRecord::RecordNotFound
render_404
end
# Retrieves the date range based on predefined ranges or specific from/to param dates
def retrieve_date_range
@free_period = false @free_period = false
@from, @to = nil, nil @from, @to = nil, nil
@@ -248,7 +157,85 @@ private
end end
@from, @to = @to, @from if @from && @to && @from > @to @from, @to = @to, @from if @from && @to && @from > @to
@from ||= (TimeEntry.minimum(:spent_on, :include => :project, :conditions => @project.project_condition(Setting.display_subprojects_issues?)) || Date.today) - 1
@to ||= (TimeEntry.maximum(:spent_on, :include => :project, :conditions => @project.project_condition(Setting.display_subprojects_issues?)) || Date.today) cond = ARCondition.new
cond << (@issue.nil? ? @project.project_condition(Setting.display_subprojects_issues?) :
["#{TimeEntry.table_name}.issue_id = ?", @issue.id])
if @from
if @to
cond << ['spent_on BETWEEN ? AND ?', @from, @to]
else
cond << ['spent_on >= ?', @from]
end
elsif @to
cond << ['spent_on <= ?', @to]
end
TimeEntry.visible_by(User.current) do
respond_to do |format|
format.html {
# Paginate results
@entry_count = TimeEntry.count(:include => :project, :conditions => cond.conditions)
@entry_pages = Paginator.new self, @entry_count, per_page_option, params['page']
@entries = TimeEntry.find(:all,
:include => [:project, :activity, :user, {:issue => :tracker}],
:conditions => cond.conditions,
:order => sort_clause,
:limit => @entry_pages.items_per_page,
:offset => @entry_pages.current.offset)
@total_hours = TimeEntry.sum(:hours, :include => :project, :conditions => cond.conditions).to_f
render :layout => !request.xhr?
}
format.csv {
# Export all entries
@entries = TimeEntry.find(:all,
:include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
:conditions => cond.conditions,
:order => sort_clause)
send_data(entries_to_csv(@entries).read, :type => 'text/csv; header=present', :filename => 'timelog.csv')
}
end
end
end
def edit
render_403 and return if @time_entry && !@time_entry.editable_by?(User.current)
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today)
@time_entry.attributes = params[:time_entry]
if request.post? and @time_entry.save
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'details', :project_id => @time_entry.project
return
end
@activities = Enumeration::get_values('ACTI')
end
def destroy
render_404 and return unless @time_entry
render_403 and return unless @time_entry.editable_by?(User.current)
@time_entry.destroy
flash[:notice] = l(:notice_successful_delete)
redirect_to :back
rescue RedirectBackError
redirect_to :action => 'details', :project_id => @time_entry.project
end
private
def find_project
if params[:id]
@time_entry = TimeEntry.find(params[:id])
@project = @time_entry.project
elsif params[:issue_id]
@issue = Issue.find(params[:issue_id])
@project = @issue.project
elsif params[:project_id]
@project = Project.find(params[:project_id])
else
render_404
return false
end
rescue ActiveRecord::RecordNotFound
render_404
end end
end end
+1 -2
View File
@@ -83,8 +83,7 @@ class UsersController < ApplicationController
end end
if @user.update_attributes(params[:user]) if @user.update_attributes(params[:user])
flash[:notice] = l(:notice_successful_update) flash[:notice] = l(:notice_successful_update)
# Give a string to redirect_to otherwise it would use status param as the response code redirect_to :action => 'list'
redirect_to(url_for(:action => 'list', :status => params[:status], :page => params[:page]))
end end
end end
@auth_sources = AuthSource.find(:all) @auth_sources = AuthSource.find(:all)
+5 -31
View File
@@ -90,11 +90,6 @@ module ApplicationHelper
include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format) include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format)
end end
# Truncates and returns the string as a single line
def truncate_single_line(string, *args)
truncate(string, *args).gsub(%r{[\r\n]+}m, ' ')
end
def html_hours(text) def html_hours(text)
text.gsub(%r{(\d+)\.(\d+)}, '<span class="hours hours-int">\1</span><span class="hours hours-dec">.\2</span>') text.gsub(%r{(\d+)\.(\d+)}, '<span class="hours hours-int">\1</span><span class="hours hours-dec">.\2</span>')
end end
@@ -212,10 +207,8 @@ module ApplicationHelper
rf = Regexp.new(filename, Regexp::IGNORECASE) rf = Regexp.new(filename, Regexp::IGNORECASE)
# search for the picture in attachments # search for the picture in attachments
if found = attachments.detect { |att| att.filename =~ rf } if found = attachments.detect { |att| att.filename =~ rf }
image_url = url_for :only_path => only_path, :controller => 'attachments', :action => 'download', :id => found image_url = url_for :only_path => only_path, :controller => 'attachments', :action => 'download', :id => found.id
desc = found.description.to_s.gsub(/^([^\(\)]*).*$/, "\\1") "!#{style}#{image_url}!"
alt = desc.blank? ? nil : "(#{desc})"
"!#{style}#{image_url}#{alt}!"
else else
"!#{style}#{filename}!" "!#{style}#{filename}!"
end end
@@ -298,7 +291,7 @@ module ApplicationHelper
# source:some/file#L120 -> Link to line 120 of the file # source:some/file#L120 -> Link to line 120 of the file
# source:some/file@52#L120 -> Link to line 120 of the file's revision 52 # source:some/file@52#L120 -> Link to line 120 of the file's revision 52
# export:some/file -> Force the download of the file # export:some/file -> Force the download of the file
text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*|"[^"]+"))(?=[[:punct:]]|\s|<|$)}) do |m| text = text.gsub(%r{([\s\(,-^])(!)?(attachment|document|version|commit|source|export)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*|"[^"]+"))(?=[[:punct:]]|\s|<|$)}) do |m|
leading, esc, prefix, sep, oid = $1, $2, $3, $5 || $7, $6 || $8 leading, esc, prefix, sep, oid = $1, $2, $3, $5 || $7, $6 || $8
link = nil link = nil
if esc.nil? if esc.nil?
@@ -306,7 +299,7 @@ module ApplicationHelper
if project && (changeset = project.changesets.find_by_revision(oid)) if project && (changeset = project.changesets.find_by_revision(oid))
link = link_to("r#{oid}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => oid}, link = link_to("r#{oid}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => oid},
:class => 'changeset', :class => 'changeset',
:title => truncate_single_line(changeset.comments, 100)) :title => truncate(changeset.comments, 100))
end end
elsif sep == '#' elsif sep == '#'
oid = oid.to_i oid = oid.to_i
@@ -345,9 +338,7 @@ module ApplicationHelper
end end
when 'commit' when 'commit'
if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"])) if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"]))
link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, :class => 'changeset', :title => truncate(changeset.comments, 100)
:class => 'changeset',
:title => truncate_single_line(changeset.comments, 100)
end end
when 'source', 'export' when 'source', 'export'
if project && project.repository if project && project.repository
@@ -434,10 +425,6 @@ module ApplicationHelper
form_for(name, object, options.merge({ :builder => TabularFormBuilder, :lang => current_language}), &proc) form_for(name, object, options.merge({ :builder => TabularFormBuilder, :lang => current_language}), &proc)
end end
def back_url_hidden_field_tag
hidden_field_tag 'back_url', (params[:back_url] || request.env['HTTP_REFERER'])
end
def check_all_links(form_name) def check_all_links(form_name)
link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") + link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") +
" | " + " | " +
@@ -476,22 +463,9 @@ module ApplicationHelper
end end
def calendar_for(field_id) def calendar_for(field_id)
include_calendar_headers_tags
image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) + image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) +
javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });") javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });")
end end
def include_calendar_headers_tags
unless @calendar_headers_tags_included
@calendar_headers_tags_included = true
content_for :header_tags do
javascript_include_tag('calendar/calendar') +
javascript_include_tag("calendar/lang/calendar-#{current_language}.js") +
javascript_include_tag('calendar/calendar-setup') +
stylesheet_link_tag('calendar')
end
end
end
def wikitoolbar_for(field_id) def wikitoolbar_for(field_id)
return '' unless Setting.text_formatting == 'textile' return '' unless Setting.text_formatting == 'textile'
-4
View File
@@ -21,10 +21,6 @@ module ProjectsHelper
link_to h(version.name), { :controller => 'versions', :action => 'show', :id => version }, options link_to h(version.name), { :controller => 'versions', :action => 'show', :id => version }, options
end end
def format_activity_title(text)
h(truncate_single_line(text, 100))
end
def format_activity_day(date) def format_activity_day(date)
date == Date.today ? l(:label_today).titleize : format_date(date) date == Date.today ? l(:label_today).titleize : format_date(date)
end end
+2 -5
View File
@@ -58,11 +58,8 @@ module RepositoriesHelper
end end
def with_leading_slash(path) def with_leading_slash(path)
path.to_s.starts_with?('/') ? path : "/#{path}" path ||= ''
end path.starts_with?('/') ? path : "/#{path}"
def without_leading_slash(path)
path.gsub(%r{^/+}, '')
end end
def subversion_field_tags(form, repository) def subversion_field_tags(form, repository)
+1 -1
View File
@@ -83,7 +83,7 @@ module SortHelper
# Use this to sort the controller's table items collection. # Use this to sort the controller's table items collection.
# #
def sort_clause() def sort_clause()
session[@sort_name][:key] + ' ' + (session[@sort_name][:order] || 'ASC') session[@sort_name][:key] + ' ' + session[@sort_name][:order]
end end
# Returns a link which sorts by the named column. # Returns a link which sorts by the named column.
-56
View File
@@ -76,60 +76,4 @@ module TimelogHelper
export.rewind export.rewind
export export
end end
def format_criteria_value(criteria, value)
value.blank? ? l(:label_none) : ((k = @available_criterias[criteria][:klass]) ? k.find_by_id(value.to_i) : format_value(value, @available_criterias[criteria][:format]))
end
def report_to_csv(criterias, periods, hours)
export = StringIO.new
CSV::Writer.generate(export, l(:general_csv_separator)) do |csv|
# Column headers
headers = criterias.collect {|criteria| l(@available_criterias[criteria][:label]) }
headers += periods
headers << l(:label_total)
csv << headers.collect {|c| to_utf8(c) }
# Content
report_criteria_to_csv(csv, criterias, periods, hours)
# Total row
row = [ l(:label_total) ] + [''] * (criterias.size - 1)
total = 0
periods.each do |period|
sum = sum_hours(select_hours(hours, @columns, period.to_s))
total += sum
row << (sum > 0 ? "%.2f" % sum : '')
end
row << "%.2f" %total
csv << row
end
export.rewind
export
end
def report_criteria_to_csv(csv, criterias, periods, hours, level=0)
hours.collect {|h| h[criterias[level]].to_s}.uniq.each do |value|
hours_for_value = select_hours(hours, criterias[level], value)
next if hours_for_value.empty?
row = [''] * level
row << to_utf8(format_criteria_value(criterias[level], value))
row += [''] * (criterias.length - level - 1)
total = 0
periods.each do |period|
sum = sum_hours(select_hours(hours_for_value, @columns, period.to_s))
total += sum
row << (sum > 0 ? "%.2f" % sum : '')
end
row << "%.2f" %total
csv << row
if criterias.length > level + 1
report_criteria_to_csv(csv, criterias, periods, hours_for_value, level + 1)
end
end
end
def to_utf8(s)
@ic ||= Iconv.new(l(:general_csv_encoding), 'UTF-8')
begin; @ic.iconv(s.to_s); rescue; s.to_s; end
end
end end
-12
View File
@@ -22,16 +22,4 @@ module UsersHelper
[l(:status_registered), 2], [l(:status_registered), 2],
[l(:status_locked), 3]], selected) [l(:status_locked), 3]], selected)
end end
def change_status_link(user)
url = {:action => 'edit', :id => user, :page => params[:page], :status => params[:status]}
if user.locked?
link_to l(:button_unlock), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :post, :class => 'icon icon-unlock'
elsif user.registered?
link_to l(:button_activate), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :post, :class => 'icon icon-unlock'
elsif user != User.current
link_to l(:button_lock), url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :post, :class => 'icon icon-lock'
end
end
end end
+49 -61
View File
@@ -35,48 +35,48 @@ class Attachment < ActiveRecord::Base
errors.add_to_base :too_long if self.filesize > Setting.attachment_max_size.to_i.kilobytes errors.add_to_base :too_long if self.filesize > Setting.attachment_max_size.to_i.kilobytes
end end
def file=(incoming_file) def file=(incomming_file)
unless incoming_file.nil? unless incomming_file.nil?
@temp_file = incoming_file @temp_file = incomming_file
if @temp_file.size > 0 if @temp_file.size > 0
self.filename = sanitize_filename(@temp_file.original_filename) self.filename = sanitize_filename(@temp_file.original_filename)
self.disk_filename = Attachment.disk_filename(filename) self.disk_filename = DateTime.now.strftime("%y%m%d%H%M%S") + "_" + self.filename
self.content_type = @temp_file.content_type.to_s.chomp self.content_type = @temp_file.content_type.to_s.chomp
self.filesize = @temp_file.size self.filesize = @temp_file.size
end end
end end
end end
def file def file
nil nil
end end
# Copy temp file to its final location # Copy temp file to its final location
def before_save def before_save
if @temp_file && (@temp_file.size > 0) if @temp_file && (@temp_file.size > 0)
logger.debug("saving '#{self.diskfile}'") logger.debug("saving '#{self.diskfile}'")
File.open(diskfile, "wb") do |f| File.open(diskfile, "wb") do |f|
f.write(@temp_file.read) f.write(@temp_file.read)
end end
self.digest = Digest::MD5.hexdigest(File.read(diskfile)) self.digest = Digest::MD5.hexdigest(File.read(diskfile))
end end
# Don't save the content type if it's longer than the authorized length # Don't save the content type if it's longer than the authorized length
if self.content_type && self.content_type.length > 255 if self.content_type && self.content_type.length > 255
self.content_type = nil self.content_type = nil
end end
end end
# Deletes file on the disk # Deletes file on the disk
def after_destroy def after_destroy
if self.filename? if self.filename?
File.delete(diskfile) if File.exist?(diskfile) File.delete(diskfile) if File.exist?(diskfile)
end end
end end
# Returns file's location on disk # Returns file's location on disk
def diskfile def diskfile
"#{@@storage_path}/#{self.disk_filename}" "#{@@storage_path}/#{self.disk_filename}"
end end
def increment_download def increment_download
increment!(:downloads) increment!(:downloads)
@@ -87,30 +87,18 @@ class Attachment < ActiveRecord::Base
end end
def image? def image?
self.filename =~ /\.(jpe?g|gif|png)$/i self.filename =~ /\.(jpeg|jpg|gif|png)$/i
end end
private private
def sanitize_filename(value) def sanitize_filename(value)
# get only the filename, not the whole path # get only the filename, not the whole path
just_filename = value.gsub(/^.*(\\|\/)/, '') just_filename = value.gsub(/^.*(\\|\/)/, '')
# NOTE: File.basename doesn't work right with Windows paths on Unix # NOTE: File.basename doesn't work right with Windows paths on Unix
# INCORRECT: just_filename = File.basename(value.gsub('\\\\', '/')) # INCORRECT: just_filename = File.basename(value.gsub('\\\\', '/'))
# Finally, replace all non alphanumeric, hyphens or periods with underscore # Finally, replace all non alphanumeric, underscore or periods with underscore
@filename = just_filename.gsub(/[^\w\.\-]/,'_') @filename = just_filename.gsub(/[^\w\.\-]/,'_')
end
# Returns an ASCII or hashed filename
def self.disk_filename(filename)
df = DateTime.now.strftime("%y%m%d%H%M%S") + "_"
if filename =~ %r{^[a-zA-Z0-9_\.\-]*$}
df << filename
else
df << Digest::MD5.hexdigest(filename)
# keep the extension if any
df << $1 if filename =~ %r{(\.[a-zA-Z0-9]+)$}
end
df
end end
end end
-4
View File
@@ -19,8 +19,4 @@ class Change < ActiveRecord::Base
belongs_to :changeset belongs_to :changeset
validates_presence_of :changeset_id, :action, :path validates_presence_of :changeset_id, :action, :path
def relative_path
changeset.repository.relative_path(path)
end
end end
+1 -5
View File
@@ -35,10 +35,6 @@ class Changeset < ActiveRecord::Base
validates_uniqueness_of :revision, :scope => :repository_id validates_uniqueness_of :revision, :scope => :repository_id
validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true
def revision=(r)
write_attribute :revision, (r.nil? ? nil : r.to_s)
end
def comments=(comment) def comments=(comment)
write_attribute(:comments, comment.strip) write_attribute(:comments, comment.strip)
end end
@@ -75,7 +71,7 @@ class Changeset < ActiveRecord::Base
if ref_keywords.delete('*') if ref_keywords.delete('*')
# find any issue ID in the comments # find any issue ID in the comments
target_issue_ids = [] target_issue_ids = []
comments.scan(%r{([\s\(,-]|^)#(\d+)(?=[[:punct:]]|\s|<|$)}).each { |m| target_issue_ids << m[1] } comments.scan(%r{([\s\(,-^])#(\d+)(?=[[:punct:]]|\s|<|$)}).each { |m| target_issue_ids << m[1] }
referenced_issues += repository.project.issues.find_all_by_id(target_issue_ids) referenced_issues += repository.project.issues.find_all_by_id(target_issue_ids)
end end
+1
View File
@@ -23,6 +23,7 @@ class Enumeration < ActiveRecord::Base
validates_presence_of :opt, :name validates_presence_of :opt, :name
validates_uniqueness_of :name, :scope => [:opt] validates_uniqueness_of :name, :scope => [:opt]
validates_length_of :name, :maximum => 30 validates_length_of :name, :maximum => 30
validates_format_of :name, :with => /^[\w\s\'\-]*$/i
OPTIONS = { OPTIONS = {
"IPRI" => :enumeration_issue_priorities, "IPRI" => :enumeration_issue_priorities,
+1 -11
View File
@@ -93,11 +93,7 @@ class Issue < ActiveRecord::Base
self.priority = nil self.priority = nil
write_attribute(:priority_id, pid) write_attribute(:priority_id, pid)
end end
def estimated_hours=(h)
write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h)
end
def validate def validate
if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty? if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty?
errors.add :due_date, :activerecord_error_not_a_date errors.add :due_date, :activerecord_error_not_a_date
@@ -157,8 +153,6 @@ class Issue < ActiveRecord::Base
# Close duplicates if the issue was closed # Close duplicates if the issue was closed
if @issue_before_change && !@issue_before_change.closed? && self.closed? if @issue_before_change && !@issue_before_change.closed? && self.closed?
duplicates.each do |duplicate| duplicates.each do |duplicate|
# Reload is need in case the duplicate was updated by a previous duplicate
duplicate.reload
# Don't re-close it if it's already closed # Don't re-close it if it's already closed
next if duplicate.closed? next if duplicate.closed?
# Same user and notes # Same user and notes
@@ -243,8 +237,4 @@ class Issue < ActiveRecord::Base
yield yield
end end
end end
def to_s
"#{tracker} ##{id}: #{subject}"
end
end end
+1 -2
View File
@@ -30,10 +30,9 @@ class Journal < ActiveRecord::Base
:project_key => "#{Issue.table_name}.project_id", :project_key => "#{Issue.table_name}.project_id",
:date_column => "#{Issue.table_name}.created_on" :date_column => "#{Issue.table_name}.created_on"
acts_as_event :title => Proc.new {|o| status = ((s = o.new_status) ? " (#{s})" : nil); "#{o.issue.tracker} ##{o.issue.id}#{status}: #{o.issue.subject}" }, acts_as_event :title => Proc.new {|o| "#{o.issue.tracker.name} ##{o.issue.id}: #{o.issue.subject}" + ((s = o.new_status) ? " (#{s})" : '') },
:description => :notes, :description => :notes,
:author => :user, :author => :user,
:type => Proc.new {|o| (s = o.new_status) && s.is_closed? ? 'issue-closed' : 'issue-edit' },
:url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.issue.id, :anchor => "change-#{o.id}"}} :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.issue.id, :anchor => "change-#{o.id}"}}
def save def save
-1
View File
@@ -28,7 +28,6 @@ class Message < ActiveRecord::Base
:date_column => 'created_on' :date_column => 'created_on'
acts_as_event :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"}, acts_as_event :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"},
:description => :content, :description => :content,
:type => Proc.new {|o| o.parent_id.nil? ? 'message' : 'reply'},
:url => Proc.new {|o| {:controller => 'messages', :action => 'show', :board_id => o.board_id, :id => o.id}} :url => Proc.new {|o| {:controller => 'messages', :action => 'show', :board_id => o.board_id, :id => o.id}}
attr_protected :locked, :sticky attr_protected :locked, :sticky
-2
View File
@@ -21,8 +21,6 @@ class MessageObserver < ActiveRecord::Observer
recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author && m.author.active?} recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author && m.author.active?}
# send notification to the board watchers # send notification to the board watchers
recipients += message.board.watcher_recipients recipients += message.board.watcher_recipients
# send notification to project members who want to be notified
recipients += message.board.project.recipients
recipients = recipients.compact.uniq recipients = recipients.compact.uniq
Mailer.deliver_message_posted(message, recipients) if !recipients.empty? && Setting.notified_events.include?('message_posted') Mailer.deliver_message_posted(message, recipients) if !recipients.empty? && Setting.notified_events.include?('message_posted')
end end
+7 -11
View File
@@ -33,7 +33,7 @@ class Project < ActiveRecord::Base
has_many :documents, :dependent => :destroy has_many :documents, :dependent => :destroy
has_many :news, :dependent => :delete_all, :include => :author has_many :news, :dependent => :delete_all, :include => :author
has_many :issue_categories, :dependent => :delete_all, :order => "#{IssueCategory.table_name}.name" has_many :issue_categories, :dependent => :delete_all, :order => "#{IssueCategory.table_name}.name"
has_many :boards, :dependent => :destroy, :order => "position ASC" has_many :boards, :order => "position ASC"
has_one :repository, :dependent => :destroy has_one :repository, :dependent => :destroy
has_many :changesets, :through => :repository has_many :changesets, :through => :repository
has_one :wiki, :dependent => :destroy has_one :wiki, :dependent => :destroy
@@ -73,16 +73,14 @@ class Project < ActiveRecord::Base
def issues_with_subprojects(include_subprojects=false) def issues_with_subprojects(include_subprojects=false)
conditions = nil conditions = nil
if include_subprojects if include_subprojects && !active_children.empty?
ids = [id] + child_ids ids = [id] + active_children.collect {|c| c.id}
conditions = ["#{Project.table_name}.id IN (#{ids.join(',')}) AND #{Project.visible_by}"] conditions = ["#{Issue.table_name}.project_id IN (#{ids.join(',')})"]
end end
conditions ||= ["#{Project.table_name}.id = ?", id] conditions ||= ["#{Issue.table_name}.project_id = ?", id]
# Quick and dirty fix for Rails 2 compatibility # Quick and dirty fix for Rails 2 compatibility
Issue.send(:with_scope, :find => { :conditions => conditions }) do Issue.send(:with_scope, :find => { :conditions => conditions }) do
Version.send(:with_scope, :find => { :conditions => conditions }) do yield
yield
end
end end
end end
@@ -93,7 +91,6 @@ class Project < ActiveRecord::Base
end end
def self.visible_by(user=nil) def self.visible_by(user=nil)
user ||= User.current
if user && user.admin? if user && user.admin?
return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}" return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"
elsif user && user.memberships.any? elsif user && user.memberships.any?
@@ -144,8 +141,7 @@ class Project < ActiveRecord::Base
end end
def to_param def to_param
# id is used for projects with a numeric identifier (compatibility) identifier
@to_param ||= (identifier.to_s =~ %r{^\d*$} ? id : identifier)
end end
def active? def active?
+14 -15
View File
@@ -125,7 +125,7 @@ class Query < ActiveRecord::Base
filters.each_key do |field| filters.each_key do |field|
errors.add label_for(field), :activerecord_error_blank unless errors.add label_for(field), :activerecord_error_blank unless
# filter requires one or more values # filter requires one or more values
(values_for(field) and !values_for(field).first.blank?) or (values_for(field) and !values_for(field).first.empty?) or
# filter doesn't require any value # filter doesn't require any value
["o", "c", "!*", "*", "t", "w"].include? operator_for(field) ["o", "c", "!*", "*", "t", "w"].include? operator_for(field)
end if filters end if filters
@@ -227,7 +227,7 @@ class Query < ActiveRecord::Base
end end
def label_for(field) def label_for(field)
label = available_filters[field][:name] if available_filters.has_key?(field) label = @available_filters[field][:name] if @available_filters.has_key?(field)
label ||= field.gsub(/\_id$/, "") label ||= field.gsub(/\_id$/, "")
end end
@@ -265,7 +265,7 @@ class Query < ActiveRecord::Base
def statement def statement
# project/subprojects clause # project/subprojects clause
project_clauses = [] clause = ''
if project && !@project.active_children.empty? if project && !@project.active_children.empty?
ids = [project.id] ids = [project.id]
if has_filter?("subproject_id") if has_filter?("subproject_id")
@@ -277,16 +277,17 @@ class Query < ActiveRecord::Base
# main project only # main project only
else else
# all subprojects # all subprojects
ids += project.child_ids ids += project.active_children.collect{|p| p.id}
end end
elsif Setting.display_subprojects_issues? elsif Setting.display_subprojects_issues?
ids += project.child_ids ids += project.active_children.collect{|p| p.id}
end end
project_clauses << "#{Issue.table_name}.project_id IN (%s)" % ids.join(',') clause << "#{Issue.table_name}.project_id IN (%s)" % ids.join(',')
elsif project elsif project
project_clauses << "#{Issue.table_name}.project_id = %d" % project.id clause << "#{Issue.table_name}.project_id = %d" % project.id
else
clause << Project.visible_by(User.current)
end end
project_clauses << Project.visible_by(User.current)
# filters clauses # filters clauses
filters_clauses = [] filters_clauses = []
@@ -295,14 +296,12 @@ class Query < ActiveRecord::Base
v = values_for(field).clone v = values_for(field).clone
next unless v and !v.empty? next unless v and !v.empty?
sql = '' sql = ''
is_custom_filter = false
if field =~ /^cf_(\d+)$/ if field =~ /^cf_(\d+)$/
# custom field # custom field
db_table = CustomValue.table_name db_table = CustomValue.table_name
db_field = 'value' db_field = 'value'
is_custom_filter = true sql << "#{Issue.table_name}.id IN (SELECT #{db_table}.customized_id FROM #{db_table} where #{db_table}.customized_type='Issue' AND #{db_table}.customized_id=#{Issue.table_name}.id AND #{db_table}.custom_field_id=#{$1} AND "
sql << "#{Issue.table_name}.id IN (SELECT #{Issue.table_name}.id FROM #{Issue.table_name} LEFT OUTER JOIN #{db_table} ON #{db_table}.customized_type='Issue' AND #{db_table}.customized_id=#{Issue.table_name}.id AND #{db_table}.custom_field_id=#{$1} WHERE "
else else
# regular field # regular field
db_table = Issue.table_name db_table = Issue.table_name
@@ -322,10 +321,8 @@ class Query < ActiveRecord::Base
sql = sql + "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" sql = sql + "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
when "!*" when "!*"
sql = sql + "#{db_table}.#{db_field} IS NULL" sql = sql + "#{db_table}.#{db_field} IS NULL"
sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter
when "*" when "*"
sql = sql + "#{db_table}.#{db_field} IS NOT NULL" sql = sql + "#{db_table}.#{db_field} IS NOT NULL"
sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter
when ">=" when ">="
sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}" sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}"
when "<=" when "<="
@@ -364,6 +361,8 @@ class Query < ActiveRecord::Base
filters_clauses << sql filters_clauses << sql
end if filters and valid? end if filters and valid?
(project_clauses + filters_clauses).join(' AND ') clause << ' AND ' unless clause.empty?
clause << filters_clauses.join(' AND ') unless filters_clauses.empty?
clause
end end
end end
-5
View File
@@ -64,11 +64,6 @@ class Repository < ActiveRecord::Base
:order => "committed_on DESC, #{Changeset.table_name}.id DESC").collect(&:changeset) :order => "committed_on DESC, #{Changeset.table_name}.id DESC").collect(&:changeset)
end end
# Returns a path relative to the url of the repository
def relative_path(path)
path
end
def latest_changeset def latest_changeset
@latest_changeset ||= changesets.find(:first) @latest_changeset ||= changesets.find(:first)
end end
+6 -14
View File
@@ -35,8 +35,7 @@ class Repository::Cvs < Repository
end end
def entries(path=nil, identifier=nil) def entries(path=nil, identifier=nil)
rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) entries=scm.entries(path, identifier)
entries = scm.entries(path, rev.nil? ? nil : rev.committed_on)
if entries if entries
entries.each() do |entry| entries.each() do |entry|
unless entry.lastrev.nil? || entry.lastrev.identifier unless entry.lastrev.nil? || entry.lastrev.identifier
@@ -76,8 +75,7 @@ class Repository::Cvs < Repository
unless revision_to unless revision_to
revision_to=scm.get_previous_revision(revision_from) revision_to=scm.get_previous_revision(revision_from)
end end
file_diff = scm.diff(change_from.path, revision_from, revision_to) diff=diff+scm.diff(change_from.path, revision_from, revision_to, type)
diff = diff + file_diff unless file_diff.nil?
end end
end end
return diff return diff
@@ -139,18 +137,12 @@ class Repository::Cvs < Repository
end end
# Renumber new changesets in chronological order # Renumber new changesets in chronological order
c = changesets.find(:first, :order => 'committed_on DESC, id DESC', :conditions => "revision NOT LIKE '_%'")
next_rev = c.nil? ? 1 : (c.revision.to_i + 1)
changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset| changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset|
changeset.update_attribute :revision, next_revision_number changeset.update_attribute :revision, next_rev
next_rev += 1
end end
end # transaction end # transaction
end end
private
# Returns the next revision number to assign to a CVS changeset
def next_revision_number
# Need to retrieve existing revision numbers to sort them as integers
@current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0)
@current_revision_number += 1
end
end end
+1 -2
View File
@@ -29,8 +29,7 @@ class Repository::Darcs < Repository
end end
def entries(path=nil, identifier=nil) def entries(path=nil, identifier=nil)
patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) entries=scm.entries(path, identifier)
entries = scm.entries(path, patch.nil? ? nil : patch.scmid)
if entries if entries
entries.each do |entry| entries.each do |entry|
# Search the DB for the entry's last change # Search the DB for the entry's last change
+1 -8
View File
@@ -34,11 +34,6 @@ class Repository::Mercurial < Repository
if entries if entries
entries.each do |entry| entries.each do |entry|
next unless entry.is_file? next unless entry.is_file?
# Set the filesize unless browsing a specific revision
if identifier.nil?
full_path = File.join(root_url, entry.path)
entry.size = File.stat(full_path).size if File.file?(full_path)
end
# Search the DB for the entry's last change # Search the DB for the entry's last change
change = changes.find(:first, :conditions => ["path = ?", scm.with_leading_slash(entry.path)], :order => "#{Changeset.table_name}.committed_on DESC") change = changes.find(:first, :conditions => ["path = ?", scm.with_leading_slash(entry.path)], :order => "#{Changeset.table_name}.committed_on DESC")
if change if change
@@ -58,9 +53,7 @@ class Repository::Mercurial < Repository
# latest revision found in database # latest revision found in database
db_revision = latest_changeset ? latest_changeset.revision.to_i : -1 db_revision = latest_changeset ? latest_changeset.revision.to_i : -1
# latest revision in the repository # latest revision in the repository
latest_revision = scm_info.lastrev scm_revision = scm_info.lastrev.identifier.to_i
return if latest_revision.nil?
scm_revision = latest_revision.identifier.to_i
if db_revision < scm_revision if db_revision < scm_revision
logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug? logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug?
identifier_from = db_revision + 1 identifier_from = db_revision + 1
-15
View File
@@ -35,11 +35,6 @@ class Repository::Subversion < Repository
revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC") : [] revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC") : []
end end
# Returns a path relative to the url of the repository
def relative_path(path)
path.gsub(Regexp.new("^\/?#{Regexp.escape(relative_url)}"), '')
end
def fetch_changesets def fetch_changesets
scm_info = scm.info scm_info = scm.info
if scm_info if scm_info
@@ -76,14 +71,4 @@ class Repository::Subversion < Repository
end end
end end
end end
private
# Returns the relative url of the repository
# Eg: root_url = file:///var/svn/foo
# url = file:///var/svn/foo/bar
# => returns /bar
def relative_url
@relative_url ||= url.gsub(Regexp.new("^#{Regexp.escape(root_url)}"), '')
end
end end
+1 -13
View File
@@ -1,5 +1,5 @@
# redMine - project management software # redMine - project management software
# Copyright (C) 2006-2008 Jean-Philippe Lang # Copyright (C) 2006-2007 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -29,14 +29,6 @@ class TimeEntry < ActiveRecord::Base
validates_numericality_of :hours, :allow_nil => true validates_numericality_of :hours, :allow_nil => true
validates_length_of :comments, :maximum => 255 validates_length_of :comments, :maximum => 255
def after_initialize
if new_record? && self.activity.nil?
if default_activity = Enumeration.default('ACTI')
self.activity_id = default_activity.id
end
end
end
def before_validation def before_validation
self.project = issue.project if issue && project.nil? self.project = issue.project if issue && project.nil?
end end
@@ -47,10 +39,6 @@ class TimeEntry < ActiveRecord::Base
errors.add :issue_id, :activerecord_error_invalid if (issue_id && !issue) || (issue && project!=issue.project) errors.add :issue_id, :activerecord_error_invalid if (issue_id && !issue) || (issue && project!=issue.project)
end end
def hours=(h)
write_attribute :hours, (h.is_a?(String) ? h.to_hours : h)
end
# tyear, tmonth, tweek assigned where setting spent_on attributes # tyear, tmonth, tweek assigned where setting spent_on attributes
# these attributes make time aggregations easier # these attributes make time aggregations easier
def spent_on=(date) def spent_on=(date)
+6 -10
View File
@@ -18,9 +18,6 @@
require "digest/sha1" require "digest/sha1"
class User < ActiveRecord::Base class User < ActiveRecord::Base
class OnTheFlyCreationFailure < Exception; end
# Account statuses # Account statuses
STATUS_ANONYMOUS = 0 STATUS_ANONYMOUS = 0
STATUS_ACTIVE = 1 STATUS_ACTIVE = 1
@@ -108,17 +105,15 @@ class User < ActiveRecord::Base
onthefly.language = Setting.default_language onthefly.language = Setting.default_language
if onthefly.save if onthefly.save
user = find(:first, :conditions => ["login=?", login]) user = find(:first, :conditions => ["login=?", login])
logger.info("User '#{user.login}' created from the LDAP") if logger logger.info("User '#{user.login}' created on the fly.") if logger
else
logger.error("User '#{onthefly.login}' found in LDAP but could not be created (#{onthefly.errors.full_messages.join(', ')})") if logger
raise OnTheFlyCreationFailure.new
end end
end end
end end
user.update_attribute(:last_login_on, Time.now) if user user.update_attribute(:last_login_on, Time.now) if user
user user
rescue => text
raise text rescue => text
raise text
end end
# Return user's full name for display # Return user's full name for display
@@ -258,12 +253,13 @@ class User < ActiveRecord::Base
end end
def self.anonymous def self.anonymous
return @anonymous_user if @anonymous_user
anonymous_user = AnonymousUser.find(:first) anonymous_user = AnonymousUser.find(:first)
if anonymous_user.nil? if anonymous_user.nil?
anonymous_user = AnonymousUser.create(:lastname => 'Anonymous', :firstname => '', :mail => '', :login => '', :status => 0) anonymous_user = AnonymousUser.create(:lastname => 'Anonymous', :firstname => '', :mail => '', :login => '', :status => 0)
raise 'Unable to create the anonymous user.' if anonymous_user.new_record? raise 'Unable to create the anonymous user.' if anonymous_user.new_record?
end end
anonymous_user @anonymous_user = anonymous_user
end end
private private
-1
View File
@@ -32,7 +32,6 @@ class WikiContent < ActiveRecord::Base
acts_as_event :title => Proc.new {|o| "#{l(:label_wiki_edit)}: #{o.page.title} (##{o.version})"}, acts_as_event :title => Proc.new {|o| "#{l(:label_wiki_edit)}: #{o.page.title} (##{o.version})"},
:description => :comments, :description => :comments,
:datetime => :updated_on, :datetime => :updated_on,
:type => 'wiki-page',
:url => Proc.new {|o| {:controller => 'wiki', :id => o.page.wiki.project_id, :page => o.page.title, :version => o.version}} :url => Proc.new {|o| {:controller => 'wiki', :id => o.page.wiki.project_id, :page => o.page.title, :version => o.version}}
def text=(plain) def text=(plain)
+7
View File
@@ -35,3 +35,10 @@
<%= submit_tag l(:button_submit) %> <%= submit_tag l(:button_submit) %>
<% end %> <% end %>
<% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+2 -5
View File
@@ -19,15 +19,12 @@ while day <= calendar.enddt %>
elsif day == i.due_date elsif day == i.due_date
image_tag('arrow_to.png') image_tag('arrow_to.png')
end %> end %>
<%= h("#{i.project} -") unless @project && @project == i.project %> <%= h("#{i.project.name} -") unless @project && @project == i.project %>
<%= link_to_issue i %>: <%= h(truncate(i.subject, 30)) %> <%= link_to_issue i %>: <%= h(truncate(i.subject, 30)) %>
<span class="tip"><%= render_issue_tooltip i %></span> <span class="tip"><%= render_issue_tooltip i %></span>
</div> </div>
<% else %> <% else %>
<span class="icon icon-package"> <%= link_to_version i, :class => "icon icon-package" %>
<%= h("#{i.project} -") unless @project && @project == i.project %>
<%= link_to_version i%>
</span>
<% end %> <% end %>
<% end %> <% end %>
</td> </td>
+3 -3
View File
@@ -1,6 +1,6 @@
xml.instruct! xml.instruct!
xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
xml.title truncate_single_line(@title, 100) xml.title @title
xml.link "rel" => "self", "href" => url_for(params.merge({:format => nil, :only_path => false})) xml.link "rel" => "self", "href" => url_for(params.merge({:format => nil, :only_path => false}))
xml.link "rel" => "alternate", "href" => url_for(:controller => 'welcome', :only_path => false) xml.link "rel" => "alternate", "href" => url_for(:controller => 'welcome', :only_path => false)
xml.id url_for(:controller => 'welcome', :only_path => false) xml.id url_for(:controller => 'welcome', :only_path => false)
@@ -10,11 +10,11 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
@items.each do |item| @items.each do |item|
xml.entry do xml.entry do
url = url_for(item.event_url(:only_path => false)) url = url_for(item.event_url(:only_path => false))
xml.title truncate_single_line(item.event_title, 100) xml.title truncate(item.event_title, 100)
xml.link "rel" => "alternate", "href" => url xml.link "rel" => "alternate", "href" => url
xml.id url xml.id url
xml.updated item.event_datetime.xmlschema xml.updated item.event_datetime.xmlschema
author = item.event_author if item.respond_to?(:event_author) author = item.event_author if item.respond_to?(:author)
xml.author do xml.author do
xml.name(author) xml.name(author)
xml.email(author.mail) if author.respond_to?(:mail) && !author.mail.blank? xml.email(author.mail) if author.respond_to?(:mail) && !author.mail.blank?
+1 -1
View File
@@ -8,7 +8,7 @@
<table class="list"> <table class="list">
<% enumerations.each do |enumeration| %> <% enumerations.each do |enumeration| %>
<tr class="<%= cycle('odd', 'even') %>"> <tr class="<%= cycle('odd', 'even') %>">
<td><%= link_to h(enumeration), :action => 'edit', :id => enumeration %></td> <td><%= link_to enumeration.name, :action => 'edit', :id => enumeration %></td>
<td style="width:15%;"><%= image_tag('true.png') if enumeration.is_default? %></td> <td style="width:15%;"><%= image_tag('true.png') if enumeration.is_default? %></td>
<td style="width:15%;"> <td style="width:15%;">
<%= link_to image_tag('2uparrow.png', :alt => l(:label_sort_highest)), {:action => 'move', :id => enumeration, :position => 'highest'}, :method => :post, :title => l(:label_sort_highest) %> <%= link_to image_tag('2uparrow.png', :alt => l(:label_sort_highest)), {:action => 'move', :id => enumeration, :position => 'highest'}, :method => :post, :title => l(:label_sort_highest) %>
+1 -1
View File
@@ -21,9 +21,9 @@
<p><%= time_entry.text_field :hours, :size => 6, :label => :label_spent_time %> <%= l(:field_hours) %></p> <p><%= time_entry.text_field :hours, :size => 6, :label => :label_spent_time %> <%= l(:field_hours) %></p>
</div> </div>
<div class="splitcontentright"> <div class="splitcontentright">
<p><%= time_entry.text_field :comments, :size => 40 %></p>
<p><%= time_entry.select :activity_id, (@activities.collect {|p| [p.name, p.id]}) %></p> <p><%= time_entry.select :activity_id, (@activities.collect {|p| [p.name, p.id]}) %></p>
</div> </div>
<p><%= time_entry.text_field :comments, :size => 60 %></p>
<% end %> <% end %>
</fieldset> </fieldset>
<% end %> <% end %>
+7
View File
@@ -49,3 +49,10 @@
<% end %> <% end %>
<%= wikitoolbar_for 'issue_description' %> <%= wikitoolbar_for 'issue_description' %>
<% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+1 -1
View File
@@ -1,5 +1,5 @@
<% for journal in journals %> <% for journal in journals %>
<div id="change-<%= journal.id %>" class="journal"> <div id="change-<%= journal.id %>">
<h4><div style="float:right;"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div> <h4><div style="float:right;"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
<%= content_tag('a', '', :name => "note-#{journal.indice}")%> <%= content_tag('a', '', :name => "note-#{journal.indice}")%>
<%= format_time(journal.created_on) %> - <%= journal.user.name %></h4> <%= format_time(journal.created_on) %> - <%= journal.user.name %></h4>
+7
View File
@@ -47,3 +47,10 @@
<p><%= submit_tag l(:button_submit) %> <p><%= submit_tag l(:button_submit) %>
<% end %> <% end %>
<% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+1 -1
View File
@@ -6,7 +6,7 @@
<a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a> <a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a>
<ul> <ul>
<% @statuses.each do |s| -%> <% @statuses.each do |s| -%>
<li><%= context_menu_link s.name, {:controller => 'issues', :action => 'edit', :id => @issue, :issue => {:status_id => s}, :back_to => @back}, :method => :post, <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'edit', :id => @issue, :issue => {:status_id => s}},
:selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li> :selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
<% end -%> <% end -%>
</ul> </ul>
+1 -1
View File
@@ -45,7 +45,7 @@
<p class="other-formats"> <p class="other-formats">
<%= l(:label_export_to) %> <%= l(:label_export_to) %>
<span><%= link_to 'Atom', {:query_id => @query, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span> <span><%= link_to 'Atom', {:format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>
<span><%= link_to 'CSV', {:format => 'csv'}, :class => 'csv' %></span> <span><%= link_to 'CSV', {:format => 'csv'}, :class => 'csv' %></span>
<span><%= link_to 'PDF', {:format => 'pdf'}, :class => 'pdf' %></span> <span><%= link_to 'PDF', {:format => 'pdf'}, :class => 'pdf' %></span>
</p> </p>
+1 -1
View File
@@ -8,7 +8,7 @@
</div> </div>
<%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create) %>
<%= link_to_remote l(:label_preview), <%= link_to_remote l(:label_preview),
{ :url => { :controller => 'issues', :action => 'preview', :project_id => @project }, { :url => { :controller => 'issues', :action => 'preview', :project_id => @project, :id => @issue },
:method => 'post', :method => 'post',
:update => 'preview', :update => 'preview',
:with => "Form.serialize('issue-form')", :with => "Form.serialize('issue-form')",
+1 -1
View File
@@ -13,7 +13,7 @@
<h3><%=h @issue.subject %></h3> <h3><%=h @issue.subject %></h3>
<p class="author"> <p class="author">
<%= authoring @issue.created_on, @issue.author %>. <%= authoring @issue.created_on, @issue.author %>.
<%= l(:label_updated_time, distance_of_time_in_words(Time.now, @issue.updated_on)) + '.' if @issue.created_on != @issue.updated_on %> <%= l(:label_updated_time, distance_of_time_in_words(Time.now, @issue.updated_on)) if @issue.created_on != @issue.updated_on %>.
</p> </p>
<table width="100%"> <table width="100%">
+1 -1
View File
@@ -36,7 +36,7 @@
<%= render :partial => 'layouts/project_selector' if User.current.memberships.any? %> <%= render :partial => 'layouts/project_selector' if User.current.memberships.any? %>
</div> </div>
<h1><%= h(@project && !@project.new_record? ? @project.name : Setting.app_title) %></h1> <h1><%= h(@project ? @project.name : Setting.app_title) %></h1>
<div id="main-menu"> <div id="main-menu">
<%= render_main_menu(@project) %> <%= render_main_menu(@project) %>
-2
View File
@@ -17,7 +17,6 @@
</div> </div>
<br /> <br />
<% unless @replies.empty? %>
<h3 class="icon22 icon22-comment"><%= l(:label_reply_plural) %></h3> <h3 class="icon22 icon22-comment"><%= l(:label_reply_plural) %></h3>
<% @replies.each do |message| %> <% @replies.each do |message| %>
<a name="<%= "message-#{message.id}" %>"></a> <a name="<%= "message-#{message.id}" %>"></a>
@@ -31,7 +30,6 @@
<%= link_to_attachments message.attachments, :no_author => true %> <%= link_to_attachments message.attachments, :no_author => true %>
</div> </div>
<% end %> <% end %>
<% end %>
<% if !@topic.locked? && authorize_for('messages', 'reply') %> <% if !@topic.locked? && authorize_for('messages', 'reply') %>
<p><%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %></p> <p><%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %></p>
+8
View File
@@ -46,3 +46,11 @@
</fieldset> </fieldset>
<% end %> <% end %>
<!--[eoform:project]--> <!--[eoform:project]-->
<% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+2 -3
View File
@@ -6,9 +6,8 @@
<h3><%= format_activity_day(day) %></h3> <h3><%= format_activity_day(day) %></h3>
<dl> <dl>
<% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%> <% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
<dt class="<%= e.event_type %>"><span class="time"><%= format_time(e.event_datetime, false) %></span> <dt class="<%= e.class.name.downcase %>"><span class="time"><%= format_time(e.event_datetime, false) %></span>
<%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %> <%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %> <%= link_to h(truncate(e.event_title, 100)), e.event_url %></dt>
<%= link_to format_activity_title(e.event_title), e.event_url %></dt>
<dd><% unless e.event_description.blank? -%> <dd><% unless e.event_description.blank? -%>
<span class="description"><%= format_activity_description(e.event_description) %></span><br /> <span class="description"><%= format_activity_description(e.event_description) %></span><br />
<% end %> <% end %>
+7 -9
View File
@@ -1,16 +1,14 @@
<h2><%=l(:label_confirmation)%></h2> <h2><%=l(:label_confirmation)%></h2>
<div class="warning"> <div class="box">
<p><strong><%=h @project_to_destroy %></strong><br /> <center>
<%=l(:text_project_destroy_confirmation)%> <p><strong><%=h @project_to_destroy.name %></strong><br />
<%=l(:text_project_destroy_confirmation)%></p>
<% if @project_to_destroy.children.any? %>
<br /><%= l(:text_subprojects_destroy_warning, content_tag('strong', h(@project_to_destroy.children.sort.collect{|p| p.to_s}.join(', ')))) %>
<% end %>
</p>
<p> <p>
<% form_tag({:controller => 'projects', :action => 'destroy', :id => @project_to_destroy}) do %> <% form_tag({:controller => 'projects', :action => 'destroy', :id => @project_to_destroy}) do %>
<label><%= check_box_tag 'confirm', 1 %> <%= l(:general_text_Yes) %></label> <%= hidden_field_tag "confirm", 1 %>
<%= submit_tag l(:button_delete) %> <%= submit_tag l(:button_delete) %>
<% end %> <% end %>
</p> </p>
</div> </center>
</div>
+3 -7
View File
@@ -70,13 +70,10 @@ top = headers_height + 8
@events.each do |i| %> @events.each do |i| %>
<div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:4px;overflow:hidden;"><small> <div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:4px;overflow:hidden;"><small>
<% if i.is_a? Issue %> <% if i.is_a? Issue %>
<%= h("#{i.project} -") unless @project && @project == i.project %> <%= h("#{i.project.name} -") unless @project && @project == i.project %>
<%= link_to_issue i %>: <%=h i.subject %> <%= link_to_issue i %>: <%=h i.subject %>
<% else %> <% else %>
<span class="icon icon-package"> <%= link_to_version i, :class => "icon icon-package" %>
<%= h("#{i.project} -") unless @project && @project == i.project %>
<%= link_to_version i %>
</span>
<% end %> <% end %>
</small></div> </small></div>
<% top = top + 20 <% top = top + 20
@@ -200,8 +197,7 @@ top = headers_height + 10
%> %>
<div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div> <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
<div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task"> <div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
<%= h("#{i.project} -") unless @project && @project == i.project %> <strong><%= i.name %></strong>
<strong><%=h i %></strong>
</div> </div>
<% end %> <% end %>
<% top = top + 20 <% top = top + 20
+4 -4
View File
@@ -9,10 +9,10 @@
<table class="list"> <table class="list">
<thead><tr> <thead><tr>
<th><%=l(:field_version)%></th> <th><%=l(:field_version)%></th>
<%= sort_header_tag("#{Attachment.table_name}.filename", :caption => l(:field_filename)) %> <th><%=l(:field_filename)%></th>
<%= sort_header_tag("#{Attachment.table_name}.created_on", :caption => l(:label_date), :default_order => 'desc') %> <th><%=l(:label_date)%></th>
<%= sort_header_tag("#{Attachment.table_name}.filesize", :caption => l(:field_filesize), :default_order => 'desc') %> <th><%=l(:field_filesize)%></th>
<%= sort_header_tag("#{Attachment.table_name}.downloads", :caption => l(:label_downloads_abbr), :default_order => 'desc') %> <th><%=l(:label_downloads_abbr)%></th>
<th>MD5</th> <th>MD5</th>
<% if delete_allowed %><th></th><% end %> <% if delete_allowed %><th></th><% end %>
</tr></thead> </tr></thead>
+1 -1
View File
@@ -43,7 +43,7 @@
<h3><%= l(:label_version_plural) %></h3> <h3><%= l(:label_version_plural) %></h3>
<% @versions.each do |version| %> <% @versions.each do |version| %>
<%= link_to version.name, "##{version.name}" %><br /> <%= link_to version.name, :anchor => version.name %><br />
<% end %> <% end %>
<% end %> <% end %>
+6 -6
View File
@@ -59,19 +59,19 @@ function toggle_multi_select(field) {
<table width="100%"> <table width="100%">
<tr> <tr>
<td> <td>
<table> <table style="padding:0;">
<% query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.each do |filter| %> <% query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.each do |filter| %>
<% field = filter[0] <% field = filter[0]
options = filter[1] %> options = filter[1] %>
<tr <%= 'style="display:none;"' unless query.has_filter?(field) %> id="tr_<%= field %>" class="filter"> <tr <%= 'style="display:none;"' unless query.has_filter?(field) %> id="tr_<%= field %>">
<td style="width:200px;"> <td valign="top" style="width:200px;">
<%= check_box_tag 'fields[]', field, query.has_filter?(field), :onclick => "toggle_filter('#{field}');", :id => "cb_#{field}" %> <%= check_box_tag 'fields[]', field, query.has_filter?(field), :onclick => "toggle_filter('#{field}');", :id => "cb_#{field}" %>
<label for="cb_<%= field %>"><%= filter[1][:name] || l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) %></label> <label for="cb_<%= field %>"><%= filter[1][:name] || l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) %></label>
</td> </td>
<td style="width:150px;"> <td valign="top" style="width:150px;">
<%= select_tag "operators[#{field}]", options_for_select(operators_for_select(options[:type]), query.operator_for(field)), :id => "operators_#{field}", :onchange => "toggle_operator('#{field}');", :class => "select-small", :style => "vertical-align: top;" %> <%= select_tag "operators[#{field}]", options_for_select(operators_for_select(options[:type]), query.operator_for(field)), :id => "operators_#{field}", :onchange => "toggle_operator('#{field}');", :class => "select-small", :style => "vertical-align: top;" %>
</td> </td>
<td> <td valign="top">
<div id="div_values_<%= field %>" style="display:none;"> <div id="div_values_<%= field %>" style="display:none;">
<% case options[:type] <% case options[:type]
when :list, :list_optional, :list_status, :list_subprojects %> when :list, :list_optional, :list_status, :list_subprojects %>
@@ -93,7 +93,7 @@ function toggle_multi_select(field) {
<% end %> <% end %>
</table> </table>
</td> </td>
<td class="add-filter"> <td align="right" valign="top">
<%= l(:label_filter_add) %>: <%= l(:label_filter_add) %>:
<%= select_tag 'add_filter_select', options_for_select([["",""]] + query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.collect{|field| [ field[1][:name] || l(("field_"+field[0].to_s.gsub(/\_id$/, "")).to_sym), field[0]] unless query.has_filter?(field[0])}.compact), :onchange => "add_filter();", :class => "select-small" %> <%= select_tag 'add_filter_select', options_for_select([["",""]] + query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.collect{|field| [ field[1][:name] || l(("field_"+field[0].to_s.gsub(/\_id$/, "")).to_sym), field[0]] unless query.has_filter?(field[0])}.compact), :onchange => "add_filter();", :class => "select-small" %>
</td> </td>
+17 -9
View File
@@ -1,24 +1,32 @@
<% @entries.each do |entry| %> <% @entries.each do |entry| %>
<% tr_id = Digest::MD5.hexdigest(entry.path) <% tr_id = Digest::MD5.hexdigest(entry.path)
depth = params[:depth].to_i %> depth = params[:depth].to_i %>
<tr id="<%= tr_id %>" class="<%= params[:parent_id] %> entry <%= entry.kind %>"> <tr id="<%= tr_id %>" class="<%= params[:parent_id] %> entry">
<td style="padding-left: <%=18 * depth%>px;" class="filename"> <td class="filename">
<% if entry.is_dir? %> <%= if entry.is_dir?
<span class="expander" onclick="<%= remote_function :url => {:action => 'browse', :id => @project, :path => entry.path, :rev => @rev, :depth => (depth + 1), :parent_id => tr_id}, link_to_remote h(entry.name),
{:url => {:action => 'browse', :id => @project, :path => entry.path, :rev => @rev, :depth => (depth + 1), :parent_id => tr_id},
:update => { :success => tr_id }, :update => { :success => tr_id },
:position => :after, :position => :after,
:success => "scmEntryLoaded('#{tr_id}')", :success => "scmEntryLoaded('#{tr_id}')",
:condition => "scmEntryClick('#{tr_id}')"%>">&nbsp</span> :condition => "scmEntryClick('#{tr_id}')"
<% end %> },
<%= link_to h(entry.name), {:href => url_for({:action => 'browse', :id => @project, :path => entry.path, :rev => @rev}),
:class => ('icon icon-folder'),
:style => "margin-left: #{18 * depth}px;"
}
else
link_to h(entry.name),
{:action => (entry.is_dir? ? 'browse' : 'changes'), :id => @project, :path => entry.path, :rev => @rev}, {:action => (entry.is_dir? ? 'browse' : 'changes'), :id => @project, :path => entry.path, :rev => @rev},
:class => (entry.is_dir? ? 'icon icon-folder' : 'icon icon-file')%> :class => 'icon icon-file',
:style => "margin-left: #{18 * depth}px;"
end %>
</td> </td>
<td class="size"><%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %></td> <td class="size"><%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %></td>
<td class="revision"><%= link_to(format_revision(entry.lastrev.name), :action => 'revision', :id => @project, :rev => entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %></td> <td class="revision"><%= link_to(format_revision(entry.lastrev.name), :action => 'revision', :id => @project, :rev => entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %></td>
<td class="age"><%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %></td> <td class="age"><%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %></td>
<td class="author"><%=h(entry.lastrev.author.to_s.split('<').first) if entry.lastrev %></td> <td class="author"><%=h(entry.lastrev.author.to_s.split('<').first) if entry.lastrev %></td>
<% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %> <% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier) if entry.lastrev %>
<td class="comments"><%=h truncate(changeset.comments, 50) unless changeset.nil? %></td> <td class="comments"><%=h truncate(changeset.comments, 50) unless changeset.nil? %></td>
</tr> </tr>
<% end %> <% end %>
+1 -2
View File
@@ -13,7 +13,6 @@
<%= "(#{number_to_human_size(@entry.size)})" if @entry.size %> <%= "(#{number_to_human_size(@entry.size)})" if @entry.size %>
</p> </p>
<%= render(:partial => 'revisions', <%= render :partial => 'revisions', :locals => {:project => @project, :path => @path, :revisions => @changesets, :entry => @entry }%>
:locals => {:project => @project, :path => @path, :revisions => @changesets, :entry => @entry }) unless @changesets.empty? %>
<% html_title(l(:label_change_plural)) -%> <% html_title(l(:label_change_plural)) -%>
+73 -69
View File
@@ -11,78 +11,82 @@
<%= select_tag 'type', options_for_select([[l(:label_diff_inline), "inline"], [l(:label_diff_side_by_side), "sbs"]], @diff_type), :onchange => "if (this.value != '') {this.form.submit()}" %></p> <%= select_tag 'type', options_for_select([[l(:label_diff_inline), "inline"], [l(:label_diff_side_by_side), "sbs"]], @diff_type), :onchange => "if (this.value != '') {this.form.submit()}" %></p>
<% end %> <% end %>
<% cache(@cache_key) do -%> <% cache(@cache_key) do %>
<% @diff.each do |table_file| -%> <% @diff.each do |table_file| %>
<div class="autoscroll"> <div class="autoscroll">
<% if @diff_type == 'sbs' -%> <% if @diff_type == 'sbs' %>
<table class="filecontent CodeRay"> <table class="filecontent CodeRay">
<thead> <thead>
<tr><th colspan="4" class="filename"><%= table_file.file_name %></th></tr> <tr>
<tr> <th colspan="4" class="filename">
<th colspan="2">@<%= format_revision @rev %></th> <%= table_file.file_name %>
<th colspan="2">@<%= format_revision @rev_to %></th> </th>
</tr> </tr>
</thead> <tr>
<tbody> <th colspan="2">@<%= format_revision @rev %></th>
<% prev_line_left, prev_line_right = nil, nil -%> <th colspan="2">@<%= format_revision @rev_to %></th>
<% table_file.keys.sort.each do |key| -%> </tr>
<% if prev_line_left && prev_line_right && (table_file[key].nb_line_left != prev_line_left+1) && (table_file[key].nb_line_right != prev_line_right+1) -%> </thead>
<tr class="spacing"><td colspan="4"></td></tr> <tbody>
<% end -%> <% table_file.keys.sort.each do |key| %>
<tr> <tr>
<th class="line-num"><%= table_file[key].nb_line_left %></th> <th class="line-num">
<td class="line-code <%= table_file[key].type_diff_left %>"> <%= table_file[key].nb_line_left %>
<pre><%=to_utf8 table_file[key].line_left %></pre> </th>
</td> <td class="line-code <%= table_file[key].type_diff_left %>">
<th class="line-num"><%= table_file[key].nb_line_right %></th> <pre><%=to_utf8 table_file[key].line_left %></pre>
<td class="line-code <%= table_file[key].type_diff_right %>"> </td>
<pre><%=to_utf8 table_file[key].line_right %></pre> <th class="line-num">
</td> <%= table_file[key].nb_line_right %>
</tr> </th>
<% prev_line_left, prev_line_right = table_file[key].nb_line_left.to_i, table_file[key].nb_line_right.to_i -%> <td class="line-code <%= table_file[key].type_diff_right %>">
<% end -%> <pre><%=to_utf8 table_file[key].line_right %></pre>
</tbody> </td>
</table> </tr>
<% end %>
<% else -%> </tbody>
<table class="filecontent CodeRay"> </table>
<thead>
<tr><th colspan="3" class="filename"><%= table_file.file_name %></th></tr>
<tr>
<th>@<%= format_revision @rev %></th>
<th>@<%= format_revision @rev_to %></th>
<th></th>
</tr>
</thead>
<tbody>
<% prev_line_left, prev_line_right = nil, nil -%>
<% table_file.keys.sort.each do |key, line| %>
<% if prev_line_left && prev_line_right && (table_file[key].nb_line_left != prev_line_left+1) && (table_file[key].nb_line_right != prev_line_right+1) -%>
<tr class="spacing"><td colspan="3"></td></tr>
<% end -%>
<tr>
<th class="line-num"><%= table_file[key].nb_line_left %></th>
<th class="line-num"><%= table_file[key].nb_line_right %></th>
<% if table_file[key].line_left.empty? -%>
<td class="line-code <%= table_file[key].type_diff_right %>">
<pre><%=to_utf8 table_file[key].line_right %></pre>
</td>
<% else -%>
<td class="line-code <%= table_file[key].type_diff_left %>">
<pre><%=to_utf8 table_file[key].line_left %></pre>
</td>
<% end -%>
</tr>
<% prev_line_left = table_file[key].nb_line_left.to_i if table_file[key].nb_line_left.to_i > 0 -%>
<% prev_line_right = table_file[key].nb_line_right.to_i if table_file[key].nb_line_right.to_i > 0 -%>
<% end -%>
</tbody>
</table>
<% end -%>
<% else %>
<table class="filecontent CodeRay">
<thead>
<tr>
<th colspan="3" class="filename">
<%= table_file.file_name %>
</th>
</tr>
<tr>
<th>@<%= format_revision @rev %></th>
<th>@<%= format_revision @rev_to %></th>
<th></th>
</tr>
</thead>
<tbody>
<% table_file.keys.sort.each do |key, line| %>
<tr>
<th class="line-num">
<%= table_file[key].nb_line_left %>
</th>
<th class="line-num">
<%= table_file[key].nb_line_right %>
</th>
<% if table_file[key].line_left.empty? %>
<td class="line-code <%= table_file[key].type_diff_right %>">
<pre><%=to_utf8 table_file[key].line_right %></pre>
</td>
<% else %>
<td class="line-code <%= table_file[key].type_diff_left %>">
<pre><%=to_utf8 table_file[key].line_left %></pre>
</td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
<% end %>
</div> </div>
<% end -%> <% end %>
<% end -%> <% end %>
<% html_title(with_leading_slash(@path), 'Diff') -%> <% html_title(with_leading_slash(@path), 'Diff') -%>
+1 -1
View File
@@ -49,7 +49,7 @@
<td><div class="square action_<%= change.action %>"></div> <%= change.path %> <%= "(#{change.revision})" unless change.revision.blank? %></td> <td><div class="square action_<%= change.action %>"></div> <%= change.path %> <%= "(#{change.revision})" unless change.revision.blank? %></td>
<td align="right"> <td align="right">
<% if change.action == "M" %> <% if change.action == "M" %>
<%= link_to l(:label_view_diff), :action => 'diff', :id => @project, :path => without_leading_slash(change.relative_path), :rev => @changeset.revision %> <%= link_to l(:label_view_diff), :action => 'diff', :id => @project, :path => change.path, :rev => @changeset.revision %>
<% end %> <% end %>
</td> </td>
</tr> </tr>
+2 -2
View File
@@ -12,7 +12,7 @@
<% end %> <% end %>
<h3><%= l(:label_permissions) %></h3> <h3><%= l(:label_permissions) %></h3>
<div class="box" id="permissions"> <div class="box">
<% perms_by_module = @permissions.group_by {|p| p.project_module.to_s} %> <% perms_by_module = @permissions.group_by {|p| p.project_module.to_s} %>
<% perms_by_module.keys.sort.each do |mod| %> <% perms_by_module.keys.sort.each do |mod| %>
<fieldset><legend><%= mod.blank? ? l(:label_project) : mod.humanize %></legend> <fieldset><legend><%= mod.blank? ? l(:label_project) : mod.humanize %></legend>
@@ -24,6 +24,6 @@
<% end %> <% end %>
</fieldset> </fieldset>
<% end %> <% end %>
<br /><%= check_all_links 'permissions' %> <br /><%= check_all_links 'role_form' %>
<%= hidden_field_tag 'role[permissions][]', '' %> <%= hidden_field_tag 'role[permissions][]', '' %>
</div> </div>
+2 -2
View File
@@ -9,13 +9,13 @@
<%= hidden_field_tag 'settings[bcc_recipients]', 0 %></p> <%= hidden_field_tag 'settings[bcc_recipients]', 0 %></p>
</div> </div>
<fieldset class="box" id="notified_events"><legend><%=l(:text_select_mail_notifications)%></legend> <fieldset class="box"><legend><%=l(:text_select_mail_notifications)%></legend>
<% @notifiables.each do |notifiable| %> <% @notifiables.each do |notifiable| %>
<label><%= check_box_tag 'settings[notified_events][]', notifiable, Setting.notified_events.include?(notifiable) %> <label><%= check_box_tag 'settings[notified_events][]', notifiable, Setting.notified_events.include?(notifiable) %>
<%= l_or_humanize(notifiable) %></label><br /> <%= l_or_humanize(notifiable) %></label><br />
<% end %> <% end %>
<%= hidden_field_tag 'settings[notified_events][]', '' %> <%= hidden_field_tag 'settings[notified_events][]', '' %>
<p><%= check_all_links('notified_events') %></p> <p><%= check_all_links('mail-options-form') %></p>
</fieldset> </fieldset>
<fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend> <fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend>
-28
View File
@@ -1,28 +0,0 @@
<fieldset id="filters"><legend><%= l(:label_date_range) %></legend>
<p>
<%= radio_button_tag 'period_type', '1', !@free_period %>
<%= select_tag 'period', options_for_period_select(params[:period]),
:onchange => 'this.form.onsubmit();',
:onfocus => '$("period_type_1").checked = true;' %>
</p>
<p>
<%= radio_button_tag 'period_type', '2', @free_period %>
<span onclick="$('period_type_2').checked = true;">
<%= l(:label_date_from) %>
<%= text_field_tag 'from', @from, :size => 10 %> <%= calendar_for('from') %>
<%= l(:label_date_to) %>
<%= text_field_tag 'to', @to, :size => 10 %> <%= calendar_for('to') %>
</span>
<%= submit_tag l(:button_apply), :name => nil %>
</p>
</fieldset>
<div class="tabs">
<% url_params = @free_period ? { :from => @from, :to => @to } : { :period => params[:period] } %>
<ul>
<li><%= link_to(l(:label_details), url_params.merge({:controller => 'timelog', :action => 'details', :project_id => @project }),
:class => (@controller.action_name == 'details' ? 'selected' : nil)) %></li>
<li><%= link_to(l(:label_report), url_params.merge({:controller => 'timelog', :action => 'report', :project_id => @project}),
:class => (@controller.action_name == 'report' ? 'selected' : nil)) %></li>
</ul>
</div>
+1 -3
View File
@@ -1,6 +1,5 @@
<table class="list time-entries"> <table class="list time-entries">
<thead> <thead>
<tr>
<%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %> <%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %>
<%= sort_header_tag('user_id', :caption => l(:label_member)) %> <%= sort_header_tag('user_id', :caption => l(:label_member)) %>
<%= sort_header_tag('activity_id', :caption => l(:label_activity)) %> <%= sort_header_tag('activity_id', :caption => l(:label_activity)) %>
@@ -9,7 +8,6 @@
<th><%= l(:field_comments) %></th> <th><%= l(:field_comments) %></th>
<%= sort_header_tag('hours', :caption => l(:field_hours)) %> <%= sort_header_tag('hours', :caption => l(:field_hours)) %>
<th></th> <th></th>
</tr>
</thead> </thead>
<tbody> <tbody>
<% entries.each do |entry| -%> <% entries.each do |entry| -%>
@@ -37,5 +35,5 @@
</td> </td>
</tr> </tr>
<% end -%> <% end -%>
</tbody> </tbdoy>
</table> </table>
+3 -5
View File
@@ -1,16 +1,14 @@
<% @hours.collect {|h| h[criterias[level]].to_s}.uniq.each do |value| %> <% @hours.collect {|h| h[criterias[level]]}.uniq.each do |value| %>
<% hours_for_value = select_hours(hours, criterias[level], value) -%> <% hours_for_value = select_hours(hours, criterias[level], value) -%>
<% next if hours_for_value.empty? -%> <% next if hours_for_value.empty? -%>
<tr class="<%= cycle('odd', 'even') %> <%= 'last-level' unless criterias.length > level+1 %>"> <tr class="<%= cycle('odd', 'even') %> <%= 'last-level' unless criterias.length > level+1 %>">
<%= '<td></td>' * level %> <%= '<td></td>' * level %>
<td><%= h(format_criteria_value(criterias[level], value)) %></td> <td><%= value.nil? ? l(:label_none) : @available_criterias[criterias[level]][:klass].find_by_id(value) %></td>
<%= '<td></td>' * (criterias.length - level - 1) -%> <%= '<td></td>' * (criterias.length - level - 1) -%>
<% total = 0 -%>
<% @periods.each do |period| -%> <% @periods.each do |period| -%>
<% sum = sum_hours(select_hours(hours_for_value, @columns, period.to_s)); total += sum -%> <% sum = sum_hours(select_hours(hours_for_value, @columns, period.to_s)) %>
<td class="hours"><%= html_hours("%.2f" % sum) if sum > 0 %></td> <td class="hours"><%= html_hours("%.2f" % sum) if sum > 0 %></td>
<% end -%> <% end -%>
<td class="hours"><%= html_hours("%.2f" % total) if total > 0 %></td>
</tr> </tr>
<% if criterias.length > level+1 -%> <% if criterias.length > level+1 -%>
<%= render(:partial => 'report_criteria', :locals => {:criterias => criterias, :hours => hours_for_value, :level => (level + 1)}) %> <%= render(:partial => 'report_criteria', :locals => {:criterias => criterias, :hours => hours_for_value, :level => (level + 1)}) %>
+24 -2
View File
@@ -1,4 +1,5 @@
<div class="contextual"> <div class="contextual">
<%= link_to(l(:label_report), {:controller => 'timelog', :action => 'report', :project_id => @project}, :class => 'icon icon-report') %>
<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time' %> <%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time' %>
</div> </div>
@@ -11,7 +12,23 @@
<% form_remote_tag( :url => {}, :method => :get, :update => 'content' ) do %> <% form_remote_tag( :url => {}, :method => :get, :update => 'content' ) do %>
<%= hidden_field_tag 'project_id', params[:project_id] %> <%= hidden_field_tag 'project_id', params[:project_id] %>
<%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %> <%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>
<%= render :partial => 'date_range' %>
<fieldset><legend><%= l(:label_date_range) %></legend>
<p>
<%= radio_button_tag 'period_type', '1', !@free_period %>
<%= select_tag 'period', options_for_period_select(params[:period]),
:onchange => 'this.form.onsubmit();',
:onfocus => '$("period_type_1").checked = true;' %>
</p>
<p>
<%= radio_button_tag 'period_type', '2', @free_period %>
<%= l(:label_date_from) %>
<%= text_field_tag 'from', @from, :size => 10, :onfocus => '$("period_type_2").checked = true;' %> <%= calendar_for('from') %>
<%= l(:label_date_to) %>
<%= text_field_tag 'to', @to, :size => 10, :onfocus => '$("period_type_2").checked = true;' %> <%= calendar_for('to') %>
<%= submit_tag l(:button_apply), :name => nil, :onclick => '$("period_type_2").checked = true;' %>
</p>
</fieldset>
<% end %> <% end %>
<div class="total-hours"> <div class="total-hours">
@@ -28,4 +45,9 @@
</p> </p>
<% end %> <% end %>
<% html_title l(:label_spent_time), l(:label_details) %> <% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+7 -1
View File
@@ -2,7 +2,6 @@
<% labelled_tabular_form_for :time_entry, @time_entry, :url => {:action => 'edit', :project_id => @time_entry.project} do |f| %> <% labelled_tabular_form_for :time_entry, @time_entry, :url => {:action => 'edit', :project_id => @time_entry.project} do |f| %>
<%= error_messages_for 'time_entry' %> <%= error_messages_for 'time_entry' %>
<%= back_url_hidden_field_tag %>
<div class="box"> <div class="box">
<p><%= f.text_field :issue_id, :size => 6 %> <em><%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %></em></p> <p><%= f.text_field :issue_id, :size => 6 %> <em><%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %></em></p>
@@ -15,3 +14,10 @@
<%= submit_tag l(:button_save) %> <%= submit_tag l(:button_save) %>
<% end %> <% end %>
<% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+31 -31
View File
@@ -1,32 +1,36 @@
<div class="contextual"> <div class="contextual">
<%= link_to(l(:label_details), {:controller => 'timelog', :action => 'details', :project_id => @project}, :class => 'icon icon-details') %>
<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time' %> <%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time' %>
</div> </div>
<h2><%= l(:label_spent_time) %></h2> <h2><%= l(:label_spent_time) %></h2>
<% form_remote_tag(:url => {}, :update => 'content') do %> <% form_remote_tag(:url => {:project_id => @project}, :update => 'content') do %>
<% @criterias.each do |criteria| %> <% @criterias.each do |criteria| %>
<%= hidden_field_tag 'criterias[]', criteria, :id => nil %> <%= hidden_field_tag 'criterias[]', criteria %>
<% end %> <% end %>
<%= hidden_field_tag 'project_id', params[:project_id] %> <fieldset><legend><%= l(:label_date_range) %></legend>
<%= render :partial => 'date_range' %> <p>
<%= l(:label_date_from) %>
<%= text_field_tag 'date_from', @date_from, :size => 10 %><%= calendar_for('date_from') %>
<%= l(:label_date_to) %>
<%= text_field_tag 'date_to', @date_to, :size => 10 %><%= calendar_for('date_to') %>
<%= l(:label_details) %>
<%= select_tag 'period', options_for_select([[l(:label_year), 'year'],
[l(:label_month), 'month'],
[l(:label_week), 'week']], @columns) %>
&nbsp;
<%= submit_tag l(:button_apply) %>
</p>
</fieldset>
<p><%= l(:label_details) %>: <%= select_tag 'columns', options_for_select([[l(:label_year), 'year'], <p><%= l(:button_add) %>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l(@available_criterias[k][:label]), k]}),
[l(:label_month), 'month'],
[l(:label_week), 'week'],
[l(:label_day_plural).titleize, 'day']], @columns),
:onchange => "this.form.onsubmit();" %>
<%= l(:button_add) %>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l(@available_criterias[k][:label]), k]}),
:onchange => "this.form.onsubmit();", :onchange => "this.form.onsubmit();",
:style => 'width: 200px', :style => 'width: 200px',
:id => nil,
:disabled => (@criterias.length >= 3)) %> :disabled => (@criterias.length >= 3)) %>
<%= link_to_remote l(:button_clear), {:url => {:project_id => @project, :period_type => params[:period_type], :period => params[:period], :from => @from, :to => @to, :columns => @columns}, <%= link_to_remote l(:button_clear), {:url => {:project_id => @project, :date_from => @date_from, :date_to => @date_to, :period => @columns}, :update => 'content'},
:update => 'content' :class => 'icon icon-reload' %></p>
}, :class => 'icon icon-reload' %></p>
<% end %>
<% unless @criterias.empty? %> <% unless @criterias.empty? %>
<div class="total-hours"> <div class="total-hours">
<p><%= l(:label_total) %>: <%= html_hours(lwr(:label_f_hour, @total_hours)) %></p> <p><%= l(:label_total) %>: <%= html_hours(lwr(:label_f_hour, @total_hours)) %></p>
@@ -37,13 +41,11 @@
<thead> <thead>
<tr> <tr>
<% @criterias.each do |criteria| %> <% @criterias.each do |criteria| %>
<th><%= l(@available_criterias[criteria][:label]) %></th> <th width="15%"><%= l(@available_criterias[criteria][:label]) %></th>
<% end %> <% end %>
<% columns_width = (40 / (@periods.length+1)).to_i %>
<% @periods.each do |period| %> <% @periods.each do |period| %>
<th class="period" width="<%= columns_width %>%"><%= period %></th> <th width="<%= ((100 - @criterias.length * 15 - 15 ) / @periods.length).to_i %>%"><%= period %></th>
<% end %> <% end %>
<th class="total" width="<%= columns_width %>%"><%= l(:label_total) %></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -51,22 +53,20 @@
<tr class="total"> <tr class="total">
<td><%= l(:label_total) %></td> <td><%= l(:label_total) %></td>
<%= '<td></td>' * (@criterias.size - 1) %> <%= '<td></td>' * (@criterias.size - 1) %>
<% total = 0 -%>
<% @periods.each do |period| -%> <% @periods.each do |period| -%>
<% sum = sum_hours(select_hours(@hours, @columns, period.to_s)); total += sum -%> <% sum = sum_hours(select_hours(@hours, @columns, period.to_s)) %>
<td class="hours"><%= html_hours("%.2f" % sum) if sum > 0 %></td> <td class="hours"><%= html_hours("%.2f" % sum) if sum > 0 %></td>
<% end -%> <% end -%>
<td class="hours"><%= html_hours("%.2f" % total) if total > 0 %></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<% end %>
<p class="other-formats">
<%= l(:label_export_to) %>
<span><%= link_to 'CSV', params.merge({:format => 'csv'}), :class => 'csv' %></span>
</p>
<% end %> <% end %>
<% end %> <% end %>
<% html_title l(:label_spent_time), l(:label_report) %> <% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+8 -1
View File
@@ -13,7 +13,7 @@
<p><%= custom_field_tag_with_label @custom_value %></p> <p><%= custom_field_tag_with_label @custom_value %></p>
<% end if @custom_values%> <% end if @custom_values%>
<p><%= f.check_box :admin, :disabled => (@user == User.current) %></p> <p><%= f.check_box :admin %></p>
</div> </div>
<div class="box"> <div class="box">
@@ -30,3 +30,10 @@
</div> </div>
</div> </div>
<!--[eoform:user]--> <!--[eoform:user]-->
<% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+11 -1
View File
@@ -33,7 +33,17 @@
<td align="center"><%= image_tag('true.png') if user.admin? %></td> <td align="center"><%= image_tag('true.png') if user.admin? %></td>
<td class="created_on" align="center"><%= format_time(user.created_on) %></td> <td class="created_on" align="center"><%= format_time(user.created_on) %></td>
<td class="last_login_on" align="center"><%= format_time(user.last_login_on) unless user.last_login_on.nil? %></td> <td class="last_login_on" align="center"><%= format_time(user.last_login_on) unless user.last_login_on.nil? %></td>
<td><small><%= change_status_link(user) %></small></td> <td>
<small>
<% if user.locked? -%>
<%= link_to l(:button_unlock), {:action => 'edit', :id => user, :user => {:status => User::STATUS_ACTIVE}}, :method => :post, :class => 'icon icon-unlock' %>
<% elsif user.registered? -%>
<%= link_to l(:button_activate), {:action => 'edit', :id => user, :user => {:status => User::STATUS_ACTIVE}}, :method => :post, :class => 'icon icon-unlock' %>
<% else -%>
<%= link_to l(:button_lock), {:action => 'edit', :id => user, :user => {:status => User::STATUS_LOCKED}}, :method => :post, :class => 'icon icon-lock' %>
<% end -%>
</small>
</td>
</tr> </tr>
<% end -%> <% end -%>
</tbody> </tbody>
+7
View File
@@ -6,3 +6,10 @@
<p><%= f.text_field :wiki_page_title, :label => :label_wiki_page, :size => 60, :disabled => @project.wiki.nil? %></p> <p><%= f.text_field :wiki_page_title, :label => :label_wiki_page, :size => 60, :disabled => @project.wiki.nil? %></p>
<p><%= f.text_field :effective_date, :size => 10 %><%= calendar_for('version_effective_date') %></p> <p><%= f.text_field :effective_date, :size => 10 %><%= calendar_for('version_effective_date') %></p>
</div> </div>
<% content_for :header_tags do %>
<%= javascript_include_tag 'calendar/calendar' %>
<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
<%= javascript_include_tag 'calendar/calendar-setup' %>
<%= stylesheet_link_tag 'calendar' %>
<% end %>
+1 -3
View File
@@ -12,7 +12,6 @@
</div> </div>
<div class="splitcontentright"> <div class="splitcontentright">
<% if @projects.any? %>
<div class="box"> <div class="box">
<h3 class="icon22 icon22-projects"><%=l(:label_project_latest)%></h3> <h3 class="icon22 icon22-projects"><%=l(:label_project_latest)%></h3>
<ul> <ul>
@@ -23,8 +22,7 @@
</li> </li>
<% end %> <% end %>
</ul> </ul>
</div> </div>
<% end %>
</div> </div>
<% content_for :header_tags do %> <% content_for :header_tags do %>
-3
View File
@@ -4,9 +4,6 @@
# you don't control web/app server and can't set it the proper way # you don't control web/app server and can't set it the proper way
# ENV['RAILS_ENV'] ||= 'production' # ENV['RAILS_ENV'] ||= 'production'
# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
# Bootstrap the Rails environment, frameworks, and default configuration # Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot') require File.join(File.dirname(__FILE__), 'boot')
-100
View File
@@ -5,106 +5,6 @@ Copyright (C) 2006-2008 Jean-Philippe Lang
http://www.redmine.org/ http://www.redmine.org/
== 2008-06-15 v0.7.2
* "New Project" link on Projects page
* Links to repository directories on the repo browser
* Move status to front in Activity View
* Remove edit step from Status context menu
* Fixed: No way to do textile horizontal rule
* Fixed: Repository: View differences doesn't work
* Fixed: attachement's name maybe invalid.
* Fixed: Error when creating a new issue
* Fixed: NoMethodError on @available_filters.has_key?
* Fixed: Check All / Uncheck All in Email Settings
* Fixed: "View differences" of one file at /repositories/revision/ fails
* Fixed: Column width in "my page"
* Fixed: private subprojects are listed on Issues view
* Fixed: Textile: bold, italics, underline, etc... not working after parentheses
* Fixed: Update issue form: comment field from log time end out of screen
* Fixed: Editing role: "issue can be assigned to this role" out of box
* Fixed: Unable use angular braces after include word
* Fixed: Using '*' as keyword for repository referencing keywords doesn't work
* Fixed: Subversion repository "View differences" on each file rise ERROR
* Fixed: View differences for individual file of a changeset fails if the repository URL doesn't point to the repository root
* Fixed: It is possible to lock out the last admin account
* Fixed: Wikis are viewable for anonymous users on public projects, despite not granting access
* Fixed: Issue number display clipped on 'my issues'
* Fixed: Roadmap version list links not carrying state
* Fixed: Log Time fieldset in IssueController#edit doesn't set default Activity as default
* Fixed: git's "get_rev" API should use repo's current branch instead of hardwiring "master"
* Fixed: browser's language subcodes ignored
* Fixed: Error on project selection with numeric (only) identifier.
* Fixed: Link to PDF doesn't work after creating new issue
* Fixed: "Replies" should not be shown on forum threads that are locked
* Fixed: SVN errors lead to svn username/password being displayed to end users (security issue)
* Fixed: http links containing hashes don't display correct
* Fixed: Allow ampersands in Enumeration names
* Fixed: Atom link on saved query does not include query_id
* Fixed: Logtime info lost when there's an error updating an issue
* Fixed: TOC does not parse colorization markups
* Fixed: CVS: add support for modules names with spaces
* Fixed: Bad rendering on projects/add
* Fixed: exception when viewing differences on cvs
* Fixed: export issue to pdf will messup when use Chinese language
* Fixed: Redmine::Scm::Adapters::GitAdapter#get_rev ignored GIT_BIN constant
* Fixed: Adding non-ASCII new issue type in the New Issue page have encoding error using IE
* Fixed: Importing from trac : some wiki links are messed
* Fixed: Incorrect weekend definition in Hebrew calendar locale
* Fixed: Atom feeds don't provide author section for repository revisions
* Fixed: In Activity views, changesets titles can be multiline while they should not
* Fixed: Ignore unreadable subversion directories (read disabled using authz)
* Fixed: lib/SVG/Graph/Graph.rb can't externalize stylesheets
* Fixed: Close statement handler in Redmine.pm
== 2008-05-04 v0.7.1
* Thai translation added (Gampol Thitinilnithi)
* Translations updates
* Escape HTML comment tags
* Prevent "can't convert nil into String" error when :sort_order param is not present
* Fixed: Updating tickets add a time log with zero hours
* Fixed: private subprojects names are revealed on the project overview
* Fixed: Search for target version of "none" fails with postgres 8.3
* Fixed: Home, Logout, Login links shouldn't be absolute links
* Fixed: 'Latest projects' box on the welcome screen should be hidden if there are no projects
* Fixed: error when using upcase language name in coderay
* Fixed: error on Trac import when :due attribute is nil
== 2008-04-28 v0.7.0
* Forces Redmine to use rails 2.0.2 gem when vendor/rails is not present
* Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list.
* Add predefined date ranges to the time report
* Time report can be done at issue level
* Various timelog report enhancements
* Accept the following formats for "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30
* Display the context menu above and/or to the left of the click if needed
* Make the admin project files list sortable
* Mercurial: display working directory files sizes unless browsing a specific revision
* Preserve status filter and page number when using lock/unlock/activate links on the users list
* Redmine.pm support for LDAP authentication
* Better error message and AR errors in log for failed LDAP on-the-fly user creation
* Redirected user to where he is coming from after logging hours
* Warn user that subprojects are also deleted when deleting a project
* Include subprojects versions on calendar and gantt
* Notify project members when a message is posted if they want to receive notifications
* Fixed: Feed content limit setting has no effect
* Fixed: Priorities not ordered when displayed as a filter in issue list
* Fixed: can not display attached images inline in message replies
* Fixed: Boards are not deleted when project is deleted
* Fixed: trying to preview a new issue raises an exception with postgresql
* Fixed: single file 'View difference' links do not work because of duplicate slashes in url
* Fixed: inline image not displayed when including a wiki page
* Fixed: CVS duplicate key violation
* Fixed: ActiveRecord::StaleObjectError exception on closing a set of circular duplicate issues
* Fixed: custom field filters behaviour
* Fixed: Postgresql 8.3 compatibility
* Fixed: Links to repository directories don't work
== 2008-03-29 v0.7.0-rc1 == 2008-03-29 v0.7.0-rc1
* Overall activity view and feed added, link is available on the project list * Overall activity view and feed added, link is available on the project list
+5 -14
View File
@@ -1,13 +1,13 @@
== Redmine installation == Redmine installation
Redmine - project management software Redmine - project management software
Copyright (C) 2006-2008 Jean-Philippe Lang Copyright (C) 2006-2007 Jean-Philippe Lang
http://www.redmine.org/ http://www.redmine.org/
== Requirements == Requirements
* Ruby on Rails 2.0.2 (not Rails 2.1) * Ruby on Rails 2.0.2
* A database (see compatibility below) * A database (see compatibility below)
Optional: Optional:
@@ -33,26 +33,17 @@ Supported databases:
rake db:migrate RAILS_ENV="production" rake db:migrate RAILS_ENV="production"
It will create tables and an administrator account. It will create tables and an administrator account.
5. Setting up permissions 5. Test the installation by running WEBrick web server:
The user who runs Redmine must have write permission on the following
subdirectories: files, log, tmp (create the last one if not present).
Assuming you run Redmine with a user named redmine:
mkdir tmp
sudo chown -R redmine:redmine files log tmp
sudo chmod -R 755 files log tmp
6. Test the installation by running WEBrick web server:
ruby script/server -e production ruby script/server -e production
Once WEBrick has started, point your browser to http://localhost:3000/ Once WEBrick has started, point your browser to http://localhost:3000/
You should now see the application welcome page You should now see the application welcome page
7. Use default administrator account to log in: 6. Use default administrator account to log in:
login: admin login: admin
password: admin password: admin
Go to "Administration" to load the default configuration data (roles, 7. Go to "Administration" to load the default configuration data (roles,
trackers, statuses, workflow) and adjust application settings trackers, statuses, workflow) and adjust application settings
+153 -18
View File
@@ -36,10 +36,9 @@ Authen::Simple::LDAP (and IO::Socket::SSL if LDAPS is used):
=head1 CONFIGURATION =head1 CONFIGURATION
## if the module isn't in your perl path ## This module has to be in your perl path
PerlRequire /usr/local/apache/Redmine.pm ## eg: /usr/lib/perl5/Apache/Authn/Redmine.pm
## else PerlLoadModule Apache::Authn::Redmine
# PerlModule Apache::Authn::Redmine
<Location /svn> <Location /svn>
DAV svn DAV svn
SVNParentPath "/var/svn" SVNParentPath "/var/svn"
@@ -52,12 +51,19 @@ Authen::Simple::LDAP (and IO::Socket::SSL if LDAPS is used):
PerlAuthenHandler Apache::Authn::Redmine::authen_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler
## for mysql ## for mysql
PerlSetVar dsn DBI:mysql:database=databasename;host=my.db.server RedmineDSN "DBI:mysql:database=databasename;host=my.db.server"
## for postgres ## for postgres
# PerlSetVar dsn DBI:Pg:dbname=databasename;host=my.db.server # RedmineDSN "DBI:Pg:dbname=databasename;host=my.db.server"
PerlSetVar db_user redmine RedmineDbUser "redmine"
PerlSetVar db_pass password RedmineDbPass "password"
## Optional where clause (fulltext search would be slow and
## database dependant).
# RedmineDbWhereClause "and members.role_id IN (1,2)"
## Configuration for memcached
# RedmineMemcacheServers "127.0.0.1:112211"
# RedmineMemcacheExpirySec "60"
# RedmineMemcacheNamespace "RedmineCreds:"
</Location> </Location>
To be able to browse repository inside redmine, you must add something To be able to browse repository inside redmine, you must add something
@@ -92,20 +98,119 @@ And you need to upgrade at least reposman.rb (after r860).
=cut =cut
use strict; use strict;
use warnings FATAL => 'all', NONFATAL => 'redefine';
use DBI; use DBI;
use Digest::SHA1; use Digest::SHA1;
# optional module for LDAP authentication # optional module for LDAP authentication
my $CanUseLDAPAuth = eval("use Authen::Simple::LDAP; 1"); my $CanUseLDAPAuth = eval("use Authen::Simple::LDAP; 1");
my $CanUseMemcached = eval("use Cache::Memcached; 1");
use Apache2::Module; use Apache2::Module;
use Apache2::Access; use Apache2::Access;
use Apache2::ServerRec qw(); use Apache2::ServerRec qw();
use Apache2::RequestRec qw(); use Apache2::RequestRec qw();
use Apache2::RequestUtil qw(); use Apache2::RequestUtil qw();
use Apache2::Const qw(:common); use Apache2::Const qw(:common :override :cmd_how);
# use Apache2::Directive qw(); # use Apache2::Directive qw();
my @directives = (
{
name => 'RedmineDSN',
req_override => OR_AUTHCFG,
args_how => TAKE1,
errmsg => 'Dsn in format used by Perl DBI. eg: "DBI:Pg:dbname=databasename;host=my.db.server"',
},
{
name => 'RedmineDbUser',
req_override => OR_AUTHCFG,
args_how => TAKE1,
},
{
name => 'RedmineDbPass',
req_override => OR_AUTHCFG,
args_how => TAKE1,
},
{
name => 'RedmineDbWhereClause',
req_override => OR_AUTHCFG,
args_how => TAKE1,
},
{
name => 'RedmineMemcacheServers',
req_override => OR_AUTHCFG,
args_how => TAKE1,
},
{
name => 'RedmineMemcacheExpirySec',
req_override => OR_AUTHCFG,
args_how => TAKE1,
},
{
name => 'RedmineMemcacheNamespace',
req_override => OR_AUTHCFG,
args_how => TAKE1,
},
);
sub RedmineDSN {
my ($self, $parms, $arg) = @_;
$self->{RedmineDSN} = $arg;
my $query = "SELECT
hashed_password, auth_source_id
FROM members, projects, users
WHERE
projects.id=members.project_id
AND users.id=members.user_id
AND users.status=1
AND login=?
AND identifier=? ";
$self->{RedmineQuery} = trim($query);
}
sub RedmineDbUser { set_val('RedmineDbUser', @_); }
sub RedmineDbPass { set_val('RedmineDbPass', @_); }
sub RedmineDbWhereClause {
my ($self, $parms, $arg) = @_;
$self->{RedmineQuery} = trim($self->{RedmineQuery}.($arg ? $arg : "")." ");
}
sub RedmineMemcacheServers {
my ($self, $parms, $arg) = @_;
if ($arg && $CanUseMemcached) {
$self->{RedmineMemcached} = new Cache::Memcached {
'servers' => [ $arg, ],
'debug' => 0,
};
$self->{RedmineMemcache} = 1;
}
}
sub RedmineMemcacheExpirySec { set_val('RedmineMemcacheExpirySec', @_); }
sub RedmineMemcacheNamespace {
my ($self, $parms, $arg) = @_;
if ($self->{RedmineMemcache}) {
# Undocumented feature of Cache::Memcached, please don't kill me
$self->{RedmineMemcached}->{namespace} = $arg;
$self->{RedmineMemcached}->{namespace_len} = length $self->{RedmineMemcached}->{namespace};
}
}
sub trim {
my $string = shift;
$string =~ s/\s{2,}/ /g;
return $string;
}
sub set_val {
my ($key, $self, $parms, $arg) = @_;
$self->{$key} = $arg;
}
Apache2::Module::add(__PACKAGE__, \@directives);
my %read_only_methods = map { $_ => 1 } qw/GET PROPFIND REPORT OPTIONS/; my %read_only_methods = map { $_ => 1 } qw/GET PROPFIND REPORT OPTIONS/;
sub access_handler { sub access_handler {
@@ -117,7 +222,7 @@ sub access_handler {
} }
my $method = $r->method; my $method = $r->method;
return OK unless 1 == $read_only_methods{$method}; return OK if defined $read_only_methods{$method};
my $project_id = get_project_identifier($r); my $project_id = get_project_identifier($r);
@@ -133,7 +238,11 @@ sub authen_handler {
my ($res, $redmine_pass) = $r->get_basic_auth_pw(); my ($res, $redmine_pass) = $r->get_basic_auth_pw();
return $res unless $res == OK; return $res unless $res == OK;
if (is_member($r->user, $redmine_pass, $r)) { my $project_id = get_project_identifier($r);
if (!$project_id) {
return FORBIDDEN;
}
if (is_member($r->user, $redmine_pass, $r, $project_id)) {
return OK; return OK;
} else { } else {
$r->note_auth_failure(); $r->note_auth_failure();
@@ -145,6 +254,10 @@ sub is_public_project {
my $project_id = shift; my $project_id = shift;
my $r = shift; my $r = shift;
my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config);
if ($cfg->{RedmineMemcache}) {
return 1 if ($cfg->{RedmineMemcached}->get($project_id));
}
my $dbh = connect_database($r); my $dbh = connect_database($r);
my $sth = $dbh->prepare( my $sth = $dbh->prepare(
"SELECT * FROM projects WHERE projects.identifier=? and projects.is_public=true;" "SELECT * FROM projects WHERE projects.identifier=? and projects.is_public=true;"
@@ -152,7 +265,16 @@ sub is_public_project {
$sth->execute($project_id); $sth->execute($project_id);
my $ret = $sth->fetchrow_array ? 1 : 0; my $ret = $sth->fetchrow_array ? 1 : 0;
$sth->finish();
$dbh->disconnect(); $dbh->disconnect();
if ($cfg->{RedmineMemcache}) {
if ($cfg->{RedmineMemcacheExpirySec}) {
$cfg->{RedmineMemcached}->set($project_id, $ret, $cfg->{RedmineMemcacheExpirySec});
} else {
$cfg->{RedmineMemcached}->set($project_id, $ret);
}
}
$ret; $ret;
} }
@@ -176,15 +298,20 @@ sub is_member {
my $redmine_user = shift; my $redmine_user = shift;
my $redmine_pass = shift; my $redmine_pass = shift;
my $r = shift; my $r = shift;
my $project_id = shift;
my $dbh = connect_database($r); my $dbh = connect_database($r);
my $project_id = get_project_identifier($r);
my $pass_digest = Digest::SHA1::sha1_hex($redmine_pass); my $pass_digest = Digest::SHA1::sha1_hex($redmine_pass);
my $sth = $dbh->prepare( my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config);
"SELECT hashed_password, auth_source_id FROM members, projects, users WHERE projects.id=members.project_id AND users.id=members.user_id AND users.status=1 AND login=? AND identifier=?;" my $usrprojpass;
); if ($cfg->{RedmineMemcache}) {
$usrprojpass = $cfg->{RedmineMemcached}->get($redmine_user.":".$project_id);
return 1 if (defined $usrprojpass and ($usrprojpass eq $pass_digest));
}
my $query = $cfg->{RedmineQuery};
my $sth = $dbh->prepare($query);
$sth->execute($redmine_user, $project_id); $sth->execute($redmine_user, $project_id);
my $ret; my $ret;
@@ -216,6 +343,14 @@ sub is_member {
$sth->finish(); $sth->finish();
$dbh->disconnect(); $dbh->disconnect();
if ($cfg->{RedmineMemcache} and $ret) {
if ($cfg->{RedmineMemcacheExpirySec}) {
$cfg->{RedmineMemcached}->set($redmine_user.":".$project_id, $pass_digest, $cfg->{RedmineMemcacheExpirySec});
} else {
$cfg->{RedmineMemcached}->set($redmine_user.":".$project_id, $pass_digest);
}
}
$ret; $ret;
} }
@@ -229,9 +364,9 @@ sub get_project_identifier {
sub connect_database { sub connect_database {
my $r = shift; my $r = shift;
my ($dsn, $db_user, $db_pass) = map { $r->dir_config($_) } qw/dsn db_user db_pass/; my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config);
return DBI->connect($dsn, $db_user, $db_pass); return DBI->connect($cfg->{RedmineDSN}, $cfg->{RedmineDbUser}, $cfg->{RedmineDbPass});
} }
1; 1;
+82 -83
View File
@@ -48,8 +48,8 @@ general_text_no: 'не'
general_text_yes: 'да' general_text_yes: 'да'
general_lang_name: 'Bulgarian' general_lang_name: 'Bulgarian'
general_csv_separator: ',' general_csv_separator: ','
general_csv_encoding: UTF-8 general_csv_encoding: cp1251
general_pdf_encoding: UTF-8 general_pdf_encoding: cp1251
general_day_names: Понеделник,Вторник,Сряда,Четвъртък,Петък,Събота,Неделя general_day_names: Понеделник,Вторник,Сряда,Четвъртък,Петък,Събота,Неделя
general_first_day_of_week: '1' general_first_day_of_week: '1'
@@ -57,11 +57,11 @@ notice_account_updated: Профилът е обновен успешно.
notice_account_invalid_creditentials: Невалиден потребител или парола. notice_account_invalid_creditentials: Невалиден потребител или парола.
notice_account_password_updated: Паролата е успешно променена. notice_account_password_updated: Паролата е успешно променена.
notice_account_wrong_password: Грешна парола notice_account_wrong_password: Грешна парола
notice_account_register_done: Профилът е създаден успешно. notice_account_register_done: Акаунтът е създаден успешно.
notice_account_unknown_email: Непознат e-mail. notice_account_unknown_email: Непознат потребител.
notice_can_t_change_password: Този профил е с външен метод за оторизация. Невъзможна смяна на паролата. notice_can_t_change_password: Този акаунт е с външен метод за оторизация. Невъзможна смяна на паролата.
notice_account_lost_email_sent: Изпратен ви е e-mail с инструкции за избор на нова парола. notice_account_lost_email_sent: Изпратен ви е e-mail с инструкции за избор на нова парола.
notice_account_activated: Профилът ви е активиран. Вече може да влезете в системата. notice_account_activated: Акаунтът ви е активиран. Вече може да влезете.
notice_successful_create: Успешно създаване. notice_successful_create: Успешно създаване.
notice_successful_update: Успешно обновяване. notice_successful_update: Успешно обновяване.
notice_successful_delete: Успешно изтриване. notice_successful_delete: Успешно изтриване.
@@ -78,8 +78,8 @@ error_scm_command_failed: "Грешка при опит за комуникац
mail_subject_lost_password: Вашата парола (%s) mail_subject_lost_password: Вашата парола (%s)
mail_body_lost_password: 'За да смените паролата си, използвайте следния линк:' mail_body_lost_password: 'За да смените паролата си, използвайте следния линк:'
mail_subject_register: Активация на профил (%s) mail_subject_register: Активация на акаунт (%s)
mail_body_register: 'За да активирате профила си използвайте следния линк:' mail_body_register: 'За да активирате акаунта си използвайте следния линк:'
gui_validation_error: 1 грешка gui_validation_error: 1 грешка
gui_validation_error_plural: %d грешки gui_validation_error_plural: %d грешки
@@ -113,11 +113,11 @@ field_notes: Бележка
field_is_closed: Затворена задача field_is_closed: Затворена задача
field_is_default: Статус по подразбиране field_is_default: Статус по подразбиране
field_tracker: Тракер field_tracker: Тракер
field_subject: Относно field_subject: Тема
field_due_date: Крайна дата field_due_date: Крайна дата
field_assigned_to: Възложена на field_assigned_to: Възложена на
field_priority: Приоритет field_priority: Приоритет
field_fixed_version: Планувана версия field_fixed_version: Target version
field_user: Потребител field_user: Потребител
field_role: Роля field_role: Роля
field_homepage: Начална страница field_homepage: Начална страница
@@ -138,7 +138,7 @@ field_version: Версия
field_type: Тип field_type: Тип
field_host: Хост field_host: Хост
field_port: Порт field_port: Порт
field_account: Профил field_account: Акаунт
field_base_dn: Base DN field_base_dn: Base DN
field_attr_login: Login attribute field_attr_login: Login attribute
field_attr_firstname: Firstname attribute field_attr_firstname: Firstname attribute
@@ -163,7 +163,7 @@ field_delay: Отместване
field_assignable: Възможно е възлагане на задачи за тази роля field_assignable: Възможно е възлагане на задачи за тази роля
field_redirect_existing_links: Пренасочване на съществуващи линкове field_redirect_existing_links: Пренасочване на съществуващи линкове
field_estimated_hours: Изчислено време field_estimated_hours: Изчислено време
field_default_value: Стойност по подразбиране field_default_value: Статус по подразбиране
setting_app_title: Заглавие setting_app_title: Заглавие
setting_app_subtitle: Описание setting_app_subtitle: Описание
@@ -171,15 +171,15 @@ setting_welcome_text: Допълнителен текст
setting_default_language: Език по подразбиране setting_default_language: Език по подразбиране
setting_login_required: Изискване за вход в системата setting_login_required: Изискване за вход в системата
setting_self_registration: Регистрация от потребители setting_self_registration: Регистрация от потребители
setting_attachment_max_size: Максимална големина на прикачен файл setting_attachment_max_size: Максимално голям приложен файл
setting_issues_export_limit: Лимит за експорт на задачи setting_issues_export_limit: Лимит за експорт на задачи
setting_mail_from: E-mail адрес за емисии setting_mail_from: E-mail адрес за емисии
setting_host_name: Хост setting_host_name: Хост
setting_text_formatting: Форматиране на текста setting_text_formatting: Форматиране на текста
setting_wiki_compression: Wiki компресиране на историята setting_wiki_compression: Wiki компресиране на историята
setting_feeds_limit: Лимит на Feeds setting_feeds_limit: Лимит на Feeds
setting_autofetch_changesets: Автоматично обработване на ревизиите setting_autofetch_changesets: Автоматично обработване на commits в хранилището
setting_sys_api_enabled: Разрешаване на WS за управление setting_sys_api_enabled: Разрешаване на WS за управление на хранилището
setting_commit_ref_keywords: Отбелязващи ключови думи setting_commit_ref_keywords: Отбелязващи ключови думи
setting_commit_fix_keywords: Приключващи ключови думи setting_commit_fix_keywords: Приключващи ключови думи
setting_autologin: Автоматичен вход setting_autologin: Автоматичен вход
@@ -231,7 +231,7 @@ label_password_lost: Забравена парола
label_home: Начало label_home: Начало
label_my_page: Лична страница label_my_page: Лична страница
label_my_account: Профил label_my_account: Профил
label_my_projects: Проекти, в които участвам label_my_projects: Моите проекти
label_administration: Администрация label_administration: Администрация
label_login: Вход label_login: Вход
label_logout: Изход label_logout: Изход
@@ -375,8 +375,8 @@ label_f_hour_plural: %.2f часа
label_time_tracking: Отделяне на време label_time_tracking: Отделяне на време
label_change_plural: Промени label_change_plural: Промени
label_statistics: Статистики label_statistics: Статистики
label_commits_per_month: Ревизии по месеци label_commits_per_month: Commits за месец
label_commits_per_author: Ревизии по автор label_commits_per_author: Commits за автор
label_view_diff: Виж разликите label_view_diff: Виж разликите
label_diff_inline: хоризонтално label_diff_inline: хоризонтално
label_diff_side_by_side: вертикално label_diff_side_by_side: вертикално
@@ -389,7 +389,7 @@ label_applied_status: Промени статуса на
label_loading: Зареждане... label_loading: Зареждане...
label_relation_new: Нова релация label_relation_new: Нова релация
label_relation_delete: Изтриване на релация label_relation_delete: Изтриване на релация
label_relates_to: свързана със label_relates_to: Свързана със
label_duplicates: дублира label_duplicates: дублира
label_blocks: блокира label_blocks: блокира
label_blocked_by: блокирана от label_blocked_by: блокирана от
@@ -427,10 +427,10 @@ label_updated_time: Обновена преди %s
label_jump_to_a_project: Проект... label_jump_to_a_project: Проект...
button_login: Вход button_login: Вход
button_submit: Прикачване button_submit: Приложи
button_save: Запис button_save: Запис
button_check_all: Избор на всички button_check_all: Маркирай всички
button_uncheck_all: Изчистване на всички button_uncheck_all: Изчисти всички
button_delete: Изтриване button_delete: Изтриване
button_create: Създаване button_create: Създаване
button_test: Тест button_test: Тест
@@ -481,9 +481,9 @@ text_length_between: От %d до %d символа.
text_tracker_no_workflow: Няма дефиниран работен процес за този тракер text_tracker_no_workflow: Няма дефиниран работен процес за този тракер
text_unallowed_characters: Непозволени символи text_unallowed_characters: Непозволени символи
text_comma_separated: Позволено е изброяване (с разделител запетая). text_comma_separated: Позволено е изброяване (с разделител запетая).
text_issues_ref_in_commit_messages: Отбелязване и приключване на задачи от ревизии text_issues_ref_in_commit_messages: Отбелязване и приключване на задачи от commit съобщения
text_issue_added: Публикувана е нова задача с номер %s (от %s). text_issue_added: Публикувана е нова задача с номер %s (by %s).
text_issue_updated: Задача %s е обновена (от %s). text_issue_updated: Задача %s е обновена (by %s).
text_wiki_destroy_confirmation: Сигурни ли сте, че искате да изтриете това Wiki и цялото му съдържание? text_wiki_destroy_confirmation: Сигурни ли сте, че искате да изтриете това Wiki и цялото му съдържание?
text_issue_category_destroy_question: Има задачи (%d) обвързани с тази категория. Какво ще изберете? text_issue_category_destroy_question: Има задачи (%d) обвързани с тази категория. Какво ще изберете?
text_issue_category_destroy_assignments: Премахване на връзките с категорията text_issue_category_destroy_assignments: Премахване на връзките с категорията
@@ -515,11 +515,11 @@ enumeration_issue_priorities: Приоритети на задачи
enumeration_doc_categories: Категории документи enumeration_doc_categories: Категории документи
enumeration_activities: Дейности (time tracking) enumeration_activities: Дейности (time tracking)
label_file_plural: Файлове label_file_plural: Файлове
label_changeset_plural: Ревизии label_changeset_plural: Changesets
field_column_names: Колони field_column_names: Колони
label_default_columns: По подразбиране label_default_columns: По подразбиране
setting_issue_list_default_columns: Показвани колони по подразбиране setting_issue_list_default_columns: Показвани колони по подразбиране
setting_repositories_encodings: Кодови таблици setting_repositories_encodings: Кодови таблици на хранилищата
notice_no_issue_selected: "Няма избрани задачи." notice_no_issue_selected: "Няма избрани задачи."
label_bulk_edit_selected_issues: Редактиране на задачи label_bulk_edit_selected_issues: Редактиране на задачи
label_no_change_option: (Без промяна) label_no_change_option: (Без промяна)
@@ -536,20 +536,20 @@ label_user_mail_option_none: "Само за наблюдавани или в к
setting_emails_footer: Подтекст за e-mail setting_emails_footer: Подтекст за e-mail
label_float: Дробно label_float: Дробно
button_copy: Копиране button_copy: Копиране
mail_body_account_information_external: Можете да използвате вашия "%s" профил за вход. mail_body_account_information_external: Можете да използвате вашия "%s" акаунт за вход.
mail_body_account_information: Информацията за профила ви mail_body_account_information: Информацията за акаунта
setting_protocol: Протокол setting_protocol: Протокол
label_user_mail_no_self_notified: "Не искам известия за извършени от мен промени" label_user_mail_no_self_notified: "Не искам известия за извършени от мен промени"
setting_time_format: Формат на часа setting_time_format: Формат на часа
label_registration_activation_by_email: активиране на профила по email label_registration_activation_by_email: активиране на акаунта по email
mail_subject_account_activation_request: Заявка за активиране на профил в %s mail_subject_account_activation_request: Заявка за активиране на акаунт в %s
mail_body_account_activation_request: 'Има новорегистриран потребител (%s), очакващ вашето одобрение:' mail_body_account_activation_request: 'Има новорегистриран потребител (%s), очакващ вашето одобрение:'
label_registration_automatic_activation: автоматично активиране label_registration_automatic_activation: автоматично активиране
label_registration_manual_activation: ръчно активиране label_registration_manual_activation: ръчно активиране
notice_account_pending: "Профилът Ви е създаден и очаква одобрение от администратор." notice_account_pending: "Акаунтът Ви е създаден и очаква одобрение от администратор."
field_time_zone: Часова зона field_time_zone: Часова зона
text_caracters_minimum: Минимум %d символа. text_caracters_minimum: Минимум %d символа.
setting_bcc_recipients: Получатели на скрито копие (bcc) setting_bcc_recipients: Blind carbon copy (bcc) получатели
button_annotate: Анотация button_annotate: Анотация
label_issues_by: Задачи по %s label_issues_by: Задачи по %s
field_searchable: С възможност за търсене field_searchable: С възможност за търсене
@@ -566,55 +566,54 @@ label_general: Основни
label_repository_plural: Хранилища label_repository_plural: Хранилища
label_associated_revisions: Асоциирани ревизии label_associated_revisions: Асоциирани ревизии
setting_user_format: Потребителски формат setting_user_format: Потребителски формат
text_status_changed_by_changeset: Приложено с ревизия %s. text_status_changed_by_changeset: Applied in changeset %s.
label_more: Още label_more: More
text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?' text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
label_scm: SCM (Система за контрол на кода) label_scm: SCM
text_select_project_modules: 'Изберете активните модули за този проект:' text_select_project_modules: 'Select modules to enable for this project:'
label_issue_added: Добавена задача label_issue_added: Issue added
label_issue_updated: Обновена задача label_issue_updated: Issue updated
label_document_added: Добавен документ label_document_added: Document added
label_message_posted: Добавено съобщение label_message_posted: Message added
label_file_added: Добавен файл label_file_added: File added
label_news_added: Добавена новина label_news_added: News added
project_module_boards: Форуми project_module_boards: Boards
project_module_issue_tracking: Тракинг project_module_issue_tracking: Issue tracking
project_module_wiki: Wiki project_module_wiki: Wiki
project_module_files: Файлове project_module_files: Files
project_module_documents: Документи project_module_documents: Documents
project_module_repository: Хранилище project_module_repository: Repository
project_module_news: Новини project_module_news: News
project_module_time_tracking: Отделяне на време project_module_time_tracking: Time tracking
text_file_repository_writable: Възможност за писане в хранилището с файлове text_file_repository_writable: File repository writable
text_default_administrator_account_changed: Сменен фабричния администраторски профил text_default_administrator_account_changed: Default administrator account changed
text_rmagick_available: Наличен RMagick (по избор) text_rmagick_available: RMagick available (optional)
button_configure: Конфигуриране button_configure: Configure
label_plugins: Плъгини label_plugins: Plugins
label_ldap_authentication: LDAP оторизация label_ldap_authentication: LDAP authentication
label_downloads_abbr: D/L label_downloads_abbr: D/L
label_this_month: текущия месец label_this_month: this month
label_last_n_days: последните %d дни label_last_n_days: last %d days
label_all_time: всички label_all_time: all time
label_this_year: текущата година label_this_year: this year
label_date_range: Период label_date_range: Date range
label_last_week: последната седмица label_last_week: last week
label_yesterday: вчера label_yesterday: yesterday
label_last_month: последния месец label_last_month: last month
label_add_another_file: Добавяне на друг файл label_add_another_file: Add another file
label_optional_description: Незадължително описание label_optional_description: Optional description
text_destroy_time_entries_question: %.02f часа са отделени на задачите, които искате да изтриете. Какво избирате? text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
text_assign_time_entries_to_project: Прехвърляне на отделеното време към проект text_assign_time_entries_to_project: Assign reported hours to the project
text_destroy_time_entries: Изтриване на отделеното време text_destroy_time_entries: Delete reported hours
text_reassign_time_entries: 'Прехвърляне на отделеното време към задача:' text_reassign_time_entries: 'Reassign reported hours to this issue:'
setting_activity_days_default: Брой дни показвани на таб Дейност setting_activity_days_default: Days displayed on project activity
label_chronological_order: Хронологичен ред label_chronological_order: In chronological order
field_comments_sorting: Сортиране на коментарите field_comments_sorting: Display comments
label_reverse_chronological_order: Обратен хронологичен ред label_reverse_chronological_order: In reverse chronological order
label_preferences: Предпочитания label_preferences: Preferences
setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране setting_display_subprojects_issues: Display subprojects issues on main projects by default
label_overall_activity: Цялостна дейност label_overall_activity: Overall activity
setting_default_projects_public: Новите проекти са публични по подразбиране setting_default_projects_public: New projects are public by default
error_scm_annotate: "Обектът не съществува или не може да бъде анотиран." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Планиране label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
+17 -18
View File
@@ -10,16 +10,16 @@ actionview_datehelper_select_month_prefix:
actionview_datehelper_select_year_prefix: actionview_datehelper_select_year_prefix:
actionview_datehelper_time_in_words_day: 1 den actionview_datehelper_time_in_words_day: 1 den
actionview_datehelper_time_in_words_day_plural: %d dny actionview_datehelper_time_in_words_day_plural: %d dny
actionview_datehelper_time_in_words_hour_about: asi hodinou actionview_datehelper_time_in_words_hour_about: asi hodinu
actionview_datehelper_time_in_words_hour_about_plural: asi %d hodinami actionview_datehelper_time_in_words_hour_about_plural: asi %d hodin
actionview_datehelper_time_in_words_hour_about_single: asi hodinou actionview_datehelper_time_in_words_hour_about_single: asi hodinu
actionview_datehelper_time_in_words_minute: 1 minutou actionview_datehelper_time_in_words_minute: 1 minuta
actionview_datehelper_time_in_words_minute_half: půl minutou actionview_datehelper_time_in_words_minute_half: půl minuty
actionview_datehelper_time_in_words_minute_less_than: méně než minutou actionview_datehelper_time_in_words_minute_less_than: méně než minutu
actionview_datehelper_time_in_words_minute_plural: %d minutami actionview_datehelper_time_in_words_minute_plural: %d minut
actionview_datehelper_time_in_words_minute_single: 1 minutou actionview_datehelper_time_in_words_minute_single: 1 minuta
actionview_datehelper_time_in_words_second_less_than: méně než sekundou actionview_datehelper_time_in_words_second_less_than: méně než sekunda
actionview_datehelper_time_in_words_second_less_than_plural: méně než %d sekundami actionview_datehelper_time_in_words_second_less_than_plural: méně než %d sekund
actionview_instancetag_blank_option: Prosím vyberte actionview_instancetag_blank_option: Prosím vyberte
activerecord_error_inclusion: není zahrnuto v seznamu activerecord_error_inclusion: není zahrnuto v seznamu
@@ -98,7 +98,7 @@ mail_body_account_activation_request: Byl zaregistrován nový uživatel "%s". A
gui_validation_error: 1 chyba gui_validation_error: 1 chyba
gui_validation_error_plural: %d chyb(y) gui_validation_error_plural: %d chyb(y)
field_name: Název field_name: Jméno
field_description: Popis field_description: Popis
field_summary: Přehled field_summary: Přehled
field_is_required: Povinné pole field_is_required: Povinné pole
@@ -306,7 +306,7 @@ label_attribute: Atribut
label_attribute_plural: Atributy label_attribute_plural: Atributy
label_download: %d Download label_download: %d Download
label_download_plural: %d Downloads label_download_plural: %d Downloads
label_no_data: Žádné položky label_no_data: Žádná data k zobrazení
label_change_status: Změnit stav label_change_status: Změnit stav
label_history: Historie label_history: Historie
label_attachment: Soubor label_attachment: Soubor
@@ -480,8 +480,8 @@ label_sort_by: Seřadit podle %s
label_send_test_email: Poslat testovací email label_send_test_email: Poslat testovací email
label_feeds_access_key_created_on: Přístupový klíč pro RSS byl vytvořen před %s label_feeds_access_key_created_on: Přístupový klíč pro RSS byl vytvořen před %s
label_module_plural: Moduly label_module_plural: Moduly
label_added_time_by: 'Přidáno uživatelem %s před %s' label_added_time_by: 'Přidáno před: %s %s'
label_updated_time: 'Aktualizováno před %s' label_updated_time: 'Aktualizováno před: %s'
label_jump_to_a_project: Zvolit projekt... label_jump_to_a_project: Zvolit projekt...
label_file_plural: Soubory label_file_plural: Soubory
label_changeset_plural: Changesety label_changeset_plural: Changesety
@@ -586,7 +586,7 @@ text_no_configuration_data: "Role, fronty, stavy úkolů ani workflow nebyly zat
text_load_default_configuration: Nahrát výchozí konfiguraci text_load_default_configuration: Nahrát výchozí konfiguraci
text_status_changed_by_changeset: Použito v changesetu %s. text_status_changed_by_changeset: Použito v changesetu %s.
text_issues_destroy_confirmation: 'Opravdu si přejete odstranit všechny zvolené úkoly?' text_issues_destroy_confirmation: 'Opravdu si přejete odstranit všechny zvolené úkoly?'
text_select_project_modules: 'Aktivní moduly v tomto projektu:' text_select_project_modules: 'Zvolte moduly aktivní v tomto projektu:'
text_default_administrator_account_changed: Výchozí nastavení administrátorského účtu změněno text_default_administrator_account_changed: Výchozí nastavení administrátorského účtu změněno
text_file_repository_writable: Povolen zápis do repository text_file_repository_writable: Povolen zápis do repository
text_rmagick_available: RMagick k dispozici (volitelné) text_rmagick_available: RMagick k dispozici (volitelné)
@@ -620,6 +620,5 @@ default_activity_development: Vývoj
enumeration_issue_priorities: Priority úkolů enumeration_issue_priorities: Priority úkolů
enumeration_doc_categories: Kategorie dokumentů enumeration_doc_categories: Kategorie dokumentů
enumeration_activities: Aktivity (sledování času) enumeration_activities: Aktivity (sledování času)
error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Plánování label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-1
View File
@@ -619,4 +619,3 @@ label_overall_activity: Overordnet aktivitet
setting_default_projects_public: Nye projekter er offentlige som default setting_default_projects_public: Nye projekter er offentlige som default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planlægning label_planning: Planlægning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
+22 -23
View File
@@ -71,7 +71,7 @@ notice_locking_conflict: Datum wurde von einem anderen Benutzer geändert.
notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen. notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen.
notice_email_sent: Eine E-Mail wurde an %s gesendet. notice_email_sent: Eine E-Mail wurde an %s gesendet.
notice_email_error: Beim Senden einer E-Mail ist ein Fehler aufgetreten (%s). notice_email_error: Beim Senden einer E-Mail ist ein Fehler aufgetreten (%s).
notice_feeds_access_key_reseted: Ihr Atom-Zugriffsschlüssel wurde zurückgesetzt. notice_feeds_access_key_reseted: Ihr RSS-Zugriffsschlüssel wurde zurückgesetzt.
notice_failed_to_save_issues: "%d von %d ausgewählten Tickets konnte(n) nicht gespeichert werden: %s." notice_failed_to_save_issues: "%d von %d ausgewählten Tickets konnte(n) nicht gespeichert werden: %s."
notice_no_issue_selected: "Kein Ticket ausgewählt! Bitte wählen Sie die Tickets, die Sie bearbeiten möchten." notice_no_issue_selected: "Kein Ticket ausgewählt! Bitte wählen Sie die Tickets, die Sie bearbeiten möchten."
notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators." notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators."
@@ -80,7 +80,6 @@ notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen
error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %s" error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %s"
error_scm_not_found: Eintrag und/oder Revision besteht nicht im Projektarchiv. error_scm_not_found: Eintrag und/oder Revision besteht nicht im Projektarchiv.
error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %s" error_scm_command_failed: "Beim Zugriff auf das Projektarchiv ist ein Fehler aufgetreten: %s"
error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden."
error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.' error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.'
mail_subject_lost_password: Ihr %s Kennwort mail_subject_lost_password: Ihr %s Kennwort
@@ -121,8 +120,8 @@ field_project: Projekt
field_issue: Ticket field_issue: Ticket
field_status: Status field_status: Status
field_notes: Kommentare field_notes: Kommentare
field_is_closed: Ticket geschlossen field_is_closed: Problem erledigt
field_is_default: Standardeinstellung field_is_default: Default
field_tracker: Tracker field_tracker: Tracker
field_subject: Thema field_subject: Thema
field_due_date: Abgabedatum field_due_date: Abgabedatum
@@ -134,8 +133,8 @@ field_role: Rolle
field_homepage: Projekt-Homepage field_homepage: Projekt-Homepage
field_is_public: Öffentlich field_is_public: Öffentlich
field_parent: Unterprojekt von field_parent: Unterprojekt von
field_is_in_chlog: Im Change-Log anzeigen field_is_in_chlog: Ansicht im Change-Log
field_is_in_roadmap: In der Roadmap anzeigen field_is_in_roadmap: Ansicht in der Roadmap
field_login: Mitgliedsname field_login: Mitgliedsname
field_mail_notification: Mailbenachrichtigung field_mail_notification: Mailbenachrichtigung
field_admin: Administrator field_admin: Administrator
@@ -178,7 +177,6 @@ field_column_names: Spalten
field_time_zone: Zeitzone field_time_zone: Zeitzone
field_searchable: Durchsuchbar field_searchable: Durchsuchbar
field_default_value: Standardwert field_default_value: Standardwert
field_comments_sorting: Kommentare anzeigen
setting_app_title: Applikations-Titel setting_app_title: Applikations-Titel
setting_app_subtitle: Applikations-Untertitel setting_app_subtitle: Applikations-Untertitel
@@ -193,8 +191,7 @@ setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden
setting_host_name: Hostname setting_host_name: Hostname
setting_text_formatting: Textformatierung setting_text_formatting: Textformatierung
setting_wiki_compression: Wiki-Historie komprimieren setting_wiki_compression: Wiki-Historie komprimieren
setting_feeds_limit: Max. Anzahl Einträge pro Atom-Feed setting_feeds_limit: Feed-Inhalt begrenzen
setting_default_projects_public: Neue Projekte sind standardmäßig öffentlich
setting_autofetch_changesets: Changesets automatisch abrufen setting_autofetch_changesets: Changesets automatisch abrufen
setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen setting_sys_api_enabled: Webservice zur Verwaltung der Projektarchive benutzen
setting_commit_ref_keywords: Schlüsselwörter (Beziehungen) setting_commit_ref_keywords: Schlüsselwörter (Beziehungen)
@@ -209,8 +206,6 @@ setting_emails_footer: E-Mail-Fußzeile
setting_protocol: Protokoll setting_protocol: Protokoll
setting_per_page_options: Objekte pro Seite setting_per_page_options: Objekte pro Seite
setting_user_format: Benutzer-Anzeigeformat setting_user_format: Benutzer-Anzeigeformat
setting_activity_days_default: Anzahl Tage pro Seite der Projekt-Aktivität
setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen
project_module_issue_tracking: Ticket-Verfolgung project_module_issue_tracking: Ticket-Verfolgung
project_module_time_tracking: Zeiterfassung project_module_time_tracking: Zeiterfassung
@@ -232,7 +227,7 @@ label_project_latest: Neueste Projekte
label_issue: Ticket label_issue: Ticket
label_issue_new: Neues Ticket label_issue_new: Neues Ticket
label_issue_plural: Tickets label_issue_plural: Tickets
label_issue_view_all: Alle Tickets anzeigen label_issue_view_all: Alle Tickets ansehen
label_issues_by: Tickets von %s label_issues_by: Tickets von %s
label_issue_added: Ticket hinzugefügt label_issue_added: Ticket hinzugefügt
label_issue_updated: Ticket aktualisiert label_issue_updated: Ticket aktualisiert
@@ -282,7 +277,6 @@ label_last_updates: zuletzt aktualisiert
label_last_updates_plural: %d zuletzt aktualisierten label_last_updates_plural: %d zuletzt aktualisierten
label_registered_on: Angemeldet am label_registered_on: Angemeldet am
label_activity: Aktivität label_activity: Aktivität
label_overall_activity: Aktivität aller Projekte anzeigen
label_new: Neu label_new: Neu
label_logged_as: Angemeldet als label_logged_as: Angemeldet als
label_environment: Environment label_environment: Environment
@@ -326,7 +320,7 @@ label_version: Version
label_version_new: Neue Version label_version_new: Neue Version
label_version_plural: Versionen label_version_plural: Versionen
label_confirmation: Bestätigung label_confirmation: Bestätigung
label_export_to: "Auch abrufbar als:" label_export_to: Export zu
label_read: Lesen... label_read: Lesen...
label_public_projects: Öffentliche Projekte label_public_projects: Öffentliche Projekte
label_open_issues: offen label_open_issues: offen
@@ -351,7 +345,7 @@ label_months_from: Monate ab
label_gantt: Gantt label_gantt: Gantt
label_internal: Intern label_internal: Intern
label_last_changes: %d letzte Änderungen label_last_changes: %d letzte Änderungen
label_change_view_all: Alle Änderungen anzeigen label_change_view_all: Alle Änderungen ansehen
label_personalize_page: Diese Seite anpassen label_personalize_page: Diese Seite anpassen
label_comment: Kommentar label_comment: Kommentar
label_comment_plural: Kommentare label_comment_plural: Kommentare
@@ -475,7 +469,7 @@ label_date_to: Bis
label_language_based: Sprachabhängig label_language_based: Sprachabhängig
label_sort_by: Sortiert nach %s label_sort_by: Sortiert nach %s
label_send_test_email: Test-E-Mail senden label_send_test_email: Test-E-Mail senden
label_feeds_access_key_created_on: Atom-Zugriffsschlüssel vor %s erstellt label_feeds_access_key_created_on: RSS-Zugriffsschlüssel vor %s erstellt
label_module_plural: Module label_module_plural: Module
label_added_time_by: Von %s vor %s hinzugefügt label_added_time_by: Von %s vor %s hinzugefügt
label_updated_time: Vor %s aktualisiert label_updated_time: Vor %s aktualisiert
@@ -506,10 +500,6 @@ label_ldap_authentication: LDAP-Authentifizierung
label_downloads_abbr: D/L label_downloads_abbr: D/L
label_optional_description: Beschreibung (optional) label_optional_description: Beschreibung (optional)
label_add_another_file: Eine weitere Datei hinzufügen label_add_another_file: Eine weitere Datei hinzufügen
label_preferences: Präferenzen
label_chronological_order: in zeitlicher Reihenfolge
label_reverse_chronological_order: in umgekehrter zeitlicher Reihenfolge
label_planning: Terminplanung
button_login: Anmelden button_login: Anmelden
button_submit: OK button_submit: OK
@@ -528,7 +518,7 @@ button_lock: Sperren
button_unlock: Entsperren button_unlock: Entsperren
button_download: Download button_download: Download
button_list: Liste button_list: Liste
button_view: Anzeigen button_view: Ansehen
button_move: Verschieben button_move: Verschieben
button_back: Zurück button_back: Zurück
button_cancel: Abbrechen button_cancel: Abbrechen
@@ -545,7 +535,7 @@ button_reset: Zurücksetzen
button_rename: Umbenennen button_rename: Umbenennen
button_change_password: Kennwort ändern button_change_password: Kennwort ändern
button_copy: Kopieren button_copy: Kopieren
button_annotate: Annotieren button_annotate: Mit Anmerkungen versehen
button_update: Aktualisieren button_update: Aktualisieren
button_configure: Konfigurieren button_configure: Konfigurieren
@@ -618,4 +608,13 @@ default_activity_development: Entwicklung
enumeration_issue_priorities: Ticket-Prioritäten enumeration_issue_priorities: Ticket-Prioritäten
enumeration_doc_categories: Dokumentenkategorien enumeration_doc_categories: Dokumentenkategorien
enumeration_activities: Aktivitäten (Zeiterfassung) enumeration_activities: Aktivitäten (Zeiterfassung)
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' setting_activity_days_default: Days displayed on project activity
label_chronological_order: In chronological order
field_comments_sorting: Display comments
label_reverse_chronological_order: In reverse chronological order
label_preferences: Preferences
setting_display_subprojects_issues: Display subprojects issues on main projects by default
label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning
-1
View File
@@ -557,7 +557,6 @@ text_select_mail_notifications: Select actions for which email notifications sho
text_regexp_info: eg. ^[A-Z0-9]+$ text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 means no restriction text_min_max_length_info: 0 means no restriction
text_project_destroy_confirmation: Are you sure you want to delete this project and related data ? text_project_destroy_confirmation: Are you sure you want to delete this project and related data ?
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
text_workflow_edit: Select a role and a tracker to edit the workflow text_workflow_edit: Select a role and a tracker to edit the workflow
text_are_you_sure: Are you sure ? text_are_you_sure: Are you sure ?
text_journal_changed: changed from %s to %s text_journal_changed: changed from %s to %s
+62 -63
View File
@@ -333,8 +333,8 @@ label_revision_plural: Revisiones
label_added: añadido label_added: añadido
label_modified: modificado label_modified: modificado
label_deleted: suprimido label_deleted: suprimido
label_latest_revision: Última revisión label_latest_revision: La revisión más actual
label_latest_revision_plural: Últimas revisiones label_latest_revision_plural: Las revisiones más actuales
label_view_revisions: Ver las revisiones label_view_revisions: Ver las revisiones
label_max_size: Tamaño máximo label_max_size: Tamaño máximo
label_on: de label_on: de
@@ -372,7 +372,7 @@ label_view_diff: Ver diferencias
label_diff_inline: en línea label_diff_inline: en línea
label_diff_side_by_side: cara a cara label_diff_side_by_side: cara a cara
label_options: Opciones label_options: Opciones
label_copy_workflow_from: Copiar flujo de trabajo desde label_copy_workflow_from: Copiar workflow desde
label_permissions_report: Informe de permisos label_permissions_report: Informe de permisos
label_watched_issues: Peticiones monitorizadas label_watched_issues: Peticiones monitorizadas
label_related_issues: Peticiones relacionadas label_related_issues: Peticiones relacionadas
@@ -432,7 +432,7 @@ button_move: Mover
button_back: Atrás button_back: Atrás
button_cancel: Cancelar button_cancel: Cancelar
button_activate: Activar button_activate: Activar
button_sort: Ordenar button_sort: Clasificar
button_log_time: Tiempo dedicado button_log_time: Tiempo dedicado
button_rollback: Volver a esta versión button_rollback: Volver a esta versión
button_watch: Monitorizar button_watch: Monitorizar
@@ -448,7 +448,7 @@ status_locked: bloqueado
text_select_mail_notifications: Seleccionar los eventos a notificar text_select_mail_notifications: Seleccionar los eventos a notificar
text_regexp_info: eg. ^[A-Z0-9]+$ text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 para ninguna restricción text_min_max_length_info: 0 para ninguna restricción
text_project_destroy_confirmation: ¿Estás seguro de querer eliminar el proyecto? text_project_destroy_confirmation: ¿ Estás seguro de querer eliminar el proyecto ?
text_workflow_edit: Seleccionar un flujo de trabajo para actualizar text_workflow_edit: Seleccionar un flujo de trabajo para actualizar
text_are_you_sure: ¿ Estás seguro ? text_are_you_sure: ¿ Estás seguro ?
text_journal_changed: cambiado de %s a %s text_journal_changed: cambiado de %s a %s
@@ -460,7 +460,7 @@ text_tip_task_begin_end_day: tarea que comienza y termina este día
text_project_identifier_info: 'Letras minúsculas (a-z), números y signos de puntuación permitidos.<br />Una vez guardado, el identificador no puede modificarse.' text_project_identifier_info: 'Letras minúsculas (a-z), números y signos de puntuación permitidos.<br />Una vez guardado, el identificador no puede modificarse.'
text_caracters_maximum: %d carácteres como máximo. text_caracters_maximum: %d carácteres como máximo.
text_length_between: Longitud entre %d y %d carácteres. text_length_between: Longitud entre %d y %d carácteres.
text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tracker text_tracker_no_workflow: No hay ningún workflow definido para este tracker
text_unallowed_characters: Carácteres no permitidos text_unallowed_characters: Carácteres no permitidos
text_comma_separated: Múltiples valores permitidos (separados por coma). text_comma_separated: Múltiples valores permitidos (separados por coma).
text_issues_ref_in_commit_messages: Referencia y petición de corrección en los mensajes text_issues_ref_in_commit_messages: Referencia y petición de corrección en los mensajes
@@ -559,65 +559,64 @@ field_searchable: Incluir en las búsquedas
label_display_per_page: 'Por página: %s' label_display_per_page: 'Por página: %s'
setting_per_page_options: Objetos por página setting_per_page_options: Objetos por página
label_age: Edad label_age: Edad
notice_default_data_loaded: Configuración por defecto cargada correctamente. notice_default_data_loaded: Default configuration successfully loaded.
text_load_default_configuration: Cargar la configuración por defecto text_load_default_configuration: Load the default configuration
text_no_configuration_data: "Todavía no se han configurado roles, ni trackers, ni estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla." 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."
error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %s" error_can_t_load_default_data: "Default configuration could not be loaded: %s"
button_update: Actualizar button_update: Update
label_change_properties: Cambiar propiedades label_change_properties: Change properties
label_general: General label_general: General
label_repository_plural: Repositorios label_repository_plural: Repositories
label_associated_revisions: Revisiones asociadas label_associated_revisions: Associated revisions
setting_user_format: Formato de nombre de usuario setting_user_format: Users display format
text_status_changed_by_changeset: Aplicado en los cambios %s text_status_changed_by_changeset: Applied in changeset %s.
label_more: Más label_more: More
text_issues_destroy_confirmation: '¿Seguro que quiere borrar las peticiones seleccionadas?' text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
label_scm: SCM label_scm: SCM
text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:' text_select_project_modules: 'Select modules to enable for this project:'
label_issue_added: Petición añadida label_issue_added: Issue added
label_issue_updated: Petición actualizada label_issue_updated: Issue updated
label_document_added: Documento añadido label_document_added: Document added
label_message_posted: Mensaje añadido label_message_posted: Message added
label_file_added: Fichero añadido label_file_added: File added
label_news_added: Noticia añadida label_news_added: News added
project_module_boards: Foros project_module_boards: Boards
project_module_issue_tracking: Peticiones project_module_issue_tracking: Issue tracking
project_module_wiki: Wiki project_module_wiki: Wiki
project_module_files: Ficheros project_module_files: Files
project_module_documents: Documentos project_module_documents: Documents
project_module_repository: Repositorio project_module_repository: Repository
project_module_news: Noticias project_module_news: News
project_module_time_tracking: Control de tiempo project_module_time_tracking: Time tracking
text_file_repository_writable: Se puede escribir en el repositorio text_file_repository_writable: File repository writable
text_default_administrator_account_changed: Cuenta de administrador por defecto modificada text_default_administrator_account_changed: Default administrator account changed
text_rmagick_available: RMagick disponible (opcional) text_rmagick_available: RMagick available (optional)
button_configure: Configurar button_configure: Configure
label_plugins: Plugins label_plugins: Plugins
label_ldap_authentication: Autenticación LDAP label_ldap_authentication: LDAP authentication
label_downloads_abbr: D/L label_downloads_abbr: D/L
label_this_month: este mes label_this_month: this month
label_last_n_days: últimos %d días label_last_n_days: last %d days
label_all_time: todo el tiempo label_all_time: all time
label_this_year: este año label_this_year: this year
label_date_range: Rango de fechas label_date_range: Date range
label_last_week: última semana label_last_week: last week
label_yesterday: ayer label_yesterday: yesterday
label_last_month: último mes label_last_month: last month
label_add_another_file: Añadir otro fichero label_add_another_file: Add another file
label_optional_description: Descripción opcional label_optional_description: Optional description
text_destroy_time_entries_question: Existen %.02f horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer ? text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto' error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
text_assign_time_entries_to_project: Asignar las horas al proyecto text_assign_time_entries_to_project: Assign reported hours to the project
text_destroy_time_entries: Borrar las horas text_destroy_time_entries: Delete reported hours
text_reassign_time_entries: 'Reasignar las horas a esta petición:' text_reassign_time_entries: 'Reassign reported hours to this issue:'
setting_activity_days_default: Días a mostrar en la actividad de proyecto setting_activity_days_default: Days displayed on project activity
label_chronological_order: En orden cronológico label_chronological_order: In chronological order
field_comments_sorting: Mostrar comentarios field_comments_sorting: Display comments
label_reverse_chronological_order: En orden cronológico inverso label_reverse_chronological_order: In reverse chronological order
label_preferences: Preferencias label_preferences: Preferences
setting_display_subprojects_issues: Mostrar peticiones de un subproyecto en el proyecto padre por defecto setting_display_subprojects_issues: Display subprojects issues on main projects by default
label_overall_activity: Actividad global label_overall_activity: Overall activity
setting_default_projects_public: Los proyectos nuevos son públicos por defecto setting_default_projects_public: New projects are public by default
error_scm_annotate: "No existe la entrada o no ha podido ser anotada" error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planificación label_planning: Planning
text_subprojects_destroy_warning: 'Sus subprojectos: %s también se eliminarán'
+5 -6
View File
@@ -307,8 +307,8 @@ label_confirmation: Vahvistus
label_export_to: Vie label_export_to: Vie
label_read: Lukee... label_read: Lukee...
label_public_projects: Julkiset projektit label_public_projects: Julkiset projektit
label_open_issues: avoin, yhteensä label_open_issues: avoin
label_open_issues_plural: avointa, yhteensä label_open_issues_plural: avointa
label_closed_issues: suljettu label_closed_issues: suljettu
label_closed_issues_plural: suljettua label_closed_issues_plural: suljettua
label_total: Yhteensä label_total: Yhteensä
@@ -614,7 +614,6 @@ field_comments_sorting: Näytä kommentit
label_reverse_chronological_order: Käänteisessä aikajärjestyksessä label_reverse_chronological_order: Käänteisessä aikajärjestyksessä
label_preferences: Asetukset label_preferences: Asetukset
setting_default_projects_public: Uudet projektit ovat oletuksena julkisia setting_default_projects_public: Uudet projektit ovat oletuksena julkisia
label_overall_activity: Kokonaishistoria label_overall_activity: Kokonaisaktiviteetti
error_scm_annotate: "Merkintää ei ole tai siihen ei voi lisätä selityksiä." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Suunnittelu label_planning: Planning
text_subprojects_destroy_warning: 'Tämän alaprojekti(t): %s tullaan myös poistamaan.'
+1 -2
View File
@@ -556,8 +556,7 @@ status_locked: vérouillé
text_select_mail_notifications: Actions pour lesquelles une notification par e-mail est envoyée text_select_mail_notifications: Actions pour lesquelles une notification par e-mail est envoyée
text_regexp_info: ex. ^[A-Z0-9]+$ text_regexp_info: ex. ^[A-Z0-9]+$
text_min_max_length_info: 0 pour aucune restriction text_min_max_length_info: 0 pour aucune restriction
text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et toutes ses données ? text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et tout ce qui lui est rattaché ?
text_subprojects_destroy_warning: 'Ses sous-projets: %s seront également supprimés.'
text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow
text_are_you_sure: Etes-vous sûr ? text_are_you_sure: Etes-vous sûr ?
text_journal_changed: changé de %s à %s text_journal_changed: changé de %s à %s
+100 -101
View File
@@ -76,7 +76,7 @@ notice_failed_to_save_issues: "נכשרת בשמירת %d נושא\ים ב %d נ
notice_no_issue_selected: "לא נבחר אף נושא! בחר בבקשה את הנושאים שברצונך לערוך." notice_no_issue_selected: "לא נבחר אף נושא! בחר בבקשה את הנושאים שברצונך לערוך."
error_scm_not_found: כניסה ו\או גירסא אינם קיימים במאגר. error_scm_not_found: כניסה ו\או גירסא אינם קיימים במאגר.
error_scm_command_failed: "ארעה שגיאה בעת ניסון גישה למאגר: %s" error_scm_command_failed: "An error occurred when trying to access the repository: %s"
mail_subject_lost_password: סיסמת ה-%s שלך mail_subject_lost_password: סיסמת ה-%s שלך
mail_body_lost_password: 'לשינו סיסמת ה-Redmine שלך,לחץ על הקישור הבא:' mail_body_lost_password: 'לשינו סיסמת ה-Redmine שלך,לחץ על הקישור הבא:'
@@ -98,7 +98,7 @@ field_filesize: גודל
field_downloads: הורדות field_downloads: הורדות
field_author: כותב field_author: כותב
field_created_on: נוצר field_created_on: נוצר
field_updated_on: עודכן field_updated_on: עודגן
field_field_format: פורמט field_field_format: פורמט
field_is_for_all: לכל הפרויקטים field_is_for_all: לכל הפרויקטים
field_possible_values: ערכים אפשריים field_possible_values: ערכים אפשריים
@@ -119,7 +119,7 @@ field_subject: שם נושא
field_due_date: תאריך סיום field_due_date: תאריך סיום
field_assigned_to: מוצב ל field_assigned_to: מוצב ל
field_priority: עדיפות field_priority: עדיפות
field_fixed_version: גירסאת יעד field_fixed_version: Target version
field_user: מתשמש field_user: מתשמש
field_role: תפקיד field_role: תפקיד
field_homepage: דף הבית field_homepage: דף הבית
@@ -140,7 +140,7 @@ field_version: גירסא
field_type: סוג field_type: סוג
field_host: שרת field_host: שרת
field_port: פורט field_port: פורט
field_account: חשבון field_account: חשבום
field_base_dn: בסיס DN field_base_dn: בסיס DN
field_attr_login: תכונת התחברות field_attr_login: תכונת התחברות
field_attr_firstname: תכונת שם פרטים field_attr_firstname: תכונת שם פרטים
@@ -182,7 +182,7 @@ setting_text_formatting: עיצוב טקסט
setting_wiki_compression: כיווץ היסטורית WIKI setting_wiki_compression: כיווץ היסטורית WIKI
setting_feeds_limit: גבול תוכן הזנות setting_feeds_limit: גבול תוכן הזנות
setting_autofetch_changesets: משיכה אוטומתי של עידכונים setting_autofetch_changesets: משיכה אוטומתי של עידכונים
setting_sys_api_enabled: אפשר WS לניהול המאגר setting_sys_api_enabled: Enable WS for repository management
setting_commit_ref_keywords: מילות מפתח מקשרות setting_commit_ref_keywords: מילות מפתח מקשרות
setting_commit_fix_keywords: מילות מפתח מתקנות setting_commit_fix_keywords: מילות מפתח מתקנות
setting_autologin: חיבור אוטומטי setting_autologin: חיבור אוטומטי
@@ -233,7 +233,7 @@ label_information_plural: מידע
label_please_login: התחבר בבקשה label_please_login: התחבר בבקשה
label_register: הרשמה label_register: הרשמה
label_password_lost: אבדה הסיסמה? label_password_lost: אבדה הסיסמה?
label_home: דף הבית label_home: דך הבית
label_my_page: הדף שלי label_my_page: הדף שלי
label_my_account: השבון שלי label_my_account: השבון שלי
label_my_projects: הפרויקטים שלי label_my_projects: הפרויקטים שלי
@@ -259,7 +259,7 @@ label_subproject_plural: תת-פרויקטים
label_min_max_length: אורך מינימאלי - מקסימאלי label_min_max_length: אורך מינימאלי - מקסימאלי
label_list: רשימה label_list: רשימה
label_date: תאריך label_date: תאריך
label_integer: מספר שלם label_integer: מספר שלים
label_boolean: ערך בוליאני label_boolean: ערך בוליאני
label_string: טקסט label_string: טקסט
label_text: טקסט ארוך label_text: טקסט ארוך
@@ -269,7 +269,7 @@ label_download: הורדה %d
label_download_plural: %d הורדות label_download_plural: %d הורדות
label_no_data: אין מידע להציג label_no_data: אין מידע להציג
label_change_status: שנה מצב label_change_status: שנה מצב
label_history: היסטוריה label_history: הידטוריה
label_attachment: קובץ label_attachment: קובץ
label_attachment_new: קובץ חדש label_attachment_new: קובץ חדש
label_attachment_delete: מחק קובץ label_attachment_delete: מחק קובץ
@@ -279,7 +279,7 @@ label_report_plural: דו"חות
label_news: חדשות label_news: חדשות
label_news_new: הוסף חדשות label_news_new: הוסף חדשות
label_news_plural: חדשות label_news_plural: חדשות
label_news_latest: חדשות אחרונות label_news_latest: חדשות חדשות
label_news_view_all: צפה בכל החדשות label_news_view_all: צפה בכל החדשות
label_change_log: דו"ח שינויים label_change_log: דו"ח שינויים
label_settings: הגדרות label_settings: הגדרות
@@ -419,7 +419,7 @@ label_reply_plural: השבות
label_send_information: שלח מידע על חשבון למשתמש label_send_information: שלח מידע על חשבון למשתמש
label_year: שנה label_year: שנה
label_month: חודש label_month: חודש
label_week: שבוע label_week: שבו
label_date_from: מאת label_date_from: מאת
label_date_to: אל label_date_to: אל
label_language_based: מבוסס שפה label_language_based: מבוסס שפה
@@ -444,7 +444,7 @@ button_save: שמור
button_check_all: בחר הכל button_check_all: בחר הכל
button_uncheck_all: בחר כלום button_uncheck_all: בחר כלום
button_delete: מחק button_delete: מחק
button_create: צור button_create: צוק
button_test: בדוק button_test: בדוק
button_edit: ערוך button_edit: ערוך
button_add: הוסף button_add: הוסף
@@ -454,13 +454,13 @@ button_clear: נקה
button_lock: נעל button_lock: נעל
button_unlock: בטל נעילה button_unlock: בטל נעילה
button_download: הורד button_download: הורד
button_list: רשימה button_list: קשימה
button_view: צפה button_view: צפה
button_move: הזז button_move: הזז
button_back: הקודם button_back: הקודם
button_cancel: בטח button_cancel: בטח
button_activate: הפעל button_activate: הפעל
button_sort: מיין button_sort: מין
button_log_time: זמן לוג button_log_time: זמן לוג
button_rollback: חזור לגירסא זו button_rollback: חזור לגירסא זו
button_watch: צפה button_watch: צפה
@@ -526,95 +526,94 @@ default_activity_development: פיתוח
enumeration_issue_priorities: עדיפות נושאים enumeration_issue_priorities: עדיפות נושאים
enumeration_doc_categories: קטגוריות מסמכים enumeration_doc_categories: קטגוריות מסמכים
enumeration_activities: פעילויות (מעקב אחר זמנים) enumeration_activities: פעילויות (מעקב אחר זמנים)
label_search_titles_only: חפש בכותרות בלבד label_search_titles_only: Search titles only
label_nobody: אף אחד label_nobody: nobody
button_change_password: שנה סיסמא button_change_password: Change password
text_user_mail_option: "בפרויקטים שלא בחרת, אתה רק תקבל התרעות על שאתה צופה או קשור אליהם (לדוגמא:נושאים שאתה היוצר שלהם או מוצבים אליך)." 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)."
label_user_mail_option_selected: "לכל אירוע בפרויקטים שבחרתי בלבד..." label_user_mail_option_selected: "For any event on the selected projects only..."
label_user_mail_option_all: "לכל אירוע בכל הפרויקטים שלי" label_user_mail_option_all: "For any event on all my projects"
label_user_mail_option_none: "רק לנושאים שאני צופה או קשור אליהם" label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: תחתית דוא"ל setting_emails_footer: Emails footer
label_float: צף label_float: Float
button_copy: העתק button_copy: Copy
mail_body_account_information_external: אתה יכול להשתמש בחשבון "%s" כדי להתחבר mail_body_account_information_external: You can use your "%s" account to log in.
mail_body_account_information: פרטי החשבון שלך mail_body_account_information: Your account information
setting_protocol: פרוטוקול setting_protocol: Protocol
label_user_mail_no_self_notified: "אני לא רוצה שיודיעו לי על שינויים שאני מבצע" label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
setting_time_format: פורמט זמן setting_time_format: Time format
label_registration_activation_by_email: הפעל חשבון באמצעות דוא"ל label_registration_activation_by_email: account activation by email
mail_subject_account_activation_request: בקשת הפעלה לחשבון %s mail_subject_account_activation_request: %s account activation request
mail_body_account_activation_request: 'משתמש חדש (%s) נרשם. החשבון שלו מחכה לאישור שלך:' mail_body_account_activation_request: 'A new user (%s) has registered. His account his pending your approval:'
label_registration_automatic_activation: הפעלת חשבון אוטומטית label_registration_automatic_activation: automatic account activation
label_registration_manual_activation: הפעלת חשבון ידנית label_registration_manual_activation: manual account activation
notice_account_pending: "החשבון שלך נוצר ועתה מחכה לאישור מנהל המערכת." notice_account_pending: "Your account was created and is now pending administrator approval."
field_time_zone: איזור זמן field_time_zone: Time zone
text_caracters_minimum: חייב להיות לפחות באורך של %d תווים. text_caracters_minimum: Must be at least %d characters long.
setting_bcc_recipients: מוסתר (bcc) setting_bcc_recipients: Blind carbon copy recipients (bcc)
button_annotate: הוסף תיאור מסגרת button_annotate: Annotate
label_issues_by: נושאים של %s label_issues_by: Issues by %s
field_searchable: ניתן לחיפוש field_searchable: Searchable
label_display_per_page: 'לכל דף: %s' label_display_per_page: 'Per page: %s'
setting_per_page_options: אפשרויות אוביקטים לפי דף setting_per_page_options: Objects per page options
label_age: גיל label_age: Age
notice_default_data_loaded: אפשרויות ברירת מחדל מופעלות. notice_default_data_loaded: Default configuration successfully loaded.
text_load_default_configuration: טען את אפשרויות ברירת המחדל text_load_default_configuration: Load the default configuration
text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. יהיה באפשרותך לשנותו לאחר שיטען." 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."
error_can_t_load_default_data: "אפשרויות ברירת המחדל לא הצליחו להיטען: %s" error_can_t_load_default_data: "Default configuration could not be loaded: %s"
button_update: עדכן button_update: Update
label_change_properties: שנה מאפיינים label_change_properties: Change properties
label_general: כללי label_general: General
label_repository_plural: מאגרים label_repository_plural: Repositories
label_associated_revisions: שינויים קשורים label_associated_revisions: Associated revisions
setting_user_format: פורמט הצגת משתמשים setting_user_format: Users display format
text_status_changed_by_changeset: הוחל בסדרת השינויים %s. text_status_changed_by_changeset: Applied in changeset %s.
label_more: עוד label_more: More
text_issues_destroy_confirmation: 'האם את\ה בטוח שברצונך למחוק את הנושא\ים ?' text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
label_scm: SCM label_scm: SCM
text_select_project_modules: 'בחר מודולים להחיל על פקרויקט זה:' text_select_project_modules: 'Select modules to enable for this project:'
label_issue_added: נושא הוסף label_issue_added: Issue added
label_issue_updated: נושא עודכן label_issue_updated: Issue updated
label_document_added: מוסמך הוסף label_document_added: Document added
label_message_posted: הודעה הוספה label_message_posted: Message added
label_file_added: קובץ הוסף label_file_added: File added
label_news_added: חדשות הוספו label_news_added: News added
project_module_boards: לוחות project_module_boards: Boards
project_module_issue_tracking: מעקב נושאים project_module_issue_tracking: Issue tracking
project_module_wiki: Wiki project_module_wiki: Wiki
project_module_files: קבצים project_module_files: Files
project_module_documents: מסמכים project_module_documents: Documents
project_module_repository: מאגר project_module_repository: Repository
project_module_news: חדשות project_module_news: News
project_module_time_tracking: מעקב אחר זמנים project_module_time_tracking: Time tracking
text_file_repository_writable: מאגר הקבצים ניתן לכתיבה text_file_repository_writable: File repository writable
text_default_administrator_account_changed: מנהל המערכת ברירת המחדל שונה text_default_administrator_account_changed: Default administrator account changed
text_rmagick_available: RMagick available (optional) text_rmagick_available: RMagick available (optional)
button_configure: אפשרויות button_configure: Configure
label_plugins: פלאגינים label_plugins: Plugins
label_ldap_authentication: אימות LDAP label_ldap_authentication: LDAP authentication
label_downloads_abbr: D/L label_downloads_abbr: D/L
label_this_month: החודש label_this_month: this month
label_last_n_days: ב-%d ימים אחרונים label_last_n_days: last %d days
label_all_time: תמיד label_all_time: all time
label_this_year: השנה label_this_year: this year
label_date_range: טווח תאריכים label_date_range: Date range
label_last_week: שבוע שעבר label_last_week: last week
label_yesterday: אתמול label_yesterday: yesterday
label_last_month: חודש שעבר label_last_month: last month
label_add_another_file: הוסף עוד קובץ label_add_another_file: Add another file
label_optional_description: תיאור רשות label_optional_description: Optional description
text_destroy_time_entries_question: %.02f שעות דווחו על הנושים שאת\ה עומד\ת למחוק. מה ברצונך לעשות ? text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
error_issue_not_found_in_project: 'הנושאים לא נמצאו או אינם שיכים לפרויקט' error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
text_assign_time_entries_to_project: הצב שעות שדווחו לפרויקט הזה text_assign_time_entries_to_project: Assign reported hours to the project
text_destroy_time_entries: מחק שעות שדווחו text_destroy_time_entries: Delete reported hours
text_reassign_time_entries: 'הצב מחדש שעות שדווחו לפרויקט הזה:' text_reassign_time_entries: 'Reassign reported hours to this issue:'
setting_activity_days_default: ימים המוצגים על פעילות הפרויקט setting_activity_days_default: Days displayed on project activity
label_chronological_order: בסדר כרונולוגי label_chronological_order: In chronological order
field_comments_sorting: הצג הערות field_comments_sorting: Display comments
label_reverse_chronological_order: בסדר כרונולוגי הפוך label_reverse_chronological_order: In reverse chronological order
label_preferences: העדפות label_preferences: Preferences
setting_display_subprojects_issues: הצג נושאים של תת פרויקטים כברירת מחדל setting_display_subprojects_issues: Display subprojects issues on main projects by default
label_overall_activity: פעילות כוללת label_overall_activity: Overall activity
setting_default_projects_public: פרויקטים חדשים הינם פומביים כברירת מחדל setting_default_projects_public: New projects are public by default
error_scm_annotate: "הכניסה לא קיימת או שלא ניתן לתאר אותה." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: תכנון label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-626
View File
@@ -1,626 +0,0 @@
_gloc_rule_default: '|n| n==1 ? "" : "_plural" '
actionview_datehelper_select_day_prefix:
actionview_datehelper_select_month_names: Január,Február,Március,Április,Május,Június,Július,Augusztus,Szeptember,Október,November,December
actionview_datehelper_select_month_names_abbr: Jan,Feb,Már,Ápr,Máj,Jún,Júl,Aug,Szept,Okt,Nov,Dec
actionview_datehelper_select_month_prefix:
actionview_datehelper_select_year_prefix:
actionview_datehelper_time_in_words_day: 1 nap
actionview_datehelper_time_in_words_day_plural: %d nap
actionview_datehelper_time_in_words_hour_about: kb. 1 óra
actionview_datehelper_time_in_words_hour_about_plural: kb. %d óra
actionview_datehelper_time_in_words_hour_about_single: kb. 1 óra
actionview_datehelper_time_in_words_minute: 1 perc
actionview_datehelper_time_in_words_minute_half: fél perc
actionview_datehelper_time_in_words_minute_less_than: kevesebb, mint 1 perc
actionview_datehelper_time_in_words_minute_plural: %d perc
actionview_datehelper_time_in_words_minute_single: 1 perc
actionview_datehelper_time_in_words_second_less_than: kevesebb, mint 1 másodperc
actionview_datehelper_time_in_words_second_less_than_plural: kevesebb, mint %d másodperc
actionview_instancetag_blank_option: Kérem válasszon
activerecord_error_inclusion: nem található a listában
activerecord_error_exclusion: foglalt
activerecord_error_invalid: érvénytelen
activerecord_error_confirmation: jóváhagyás szükséges
activerecord_error_accepted: ell kell fogadni
activerecord_error_empty: nem lehet üres
activerecord_error_blank: nem lehet üres
activerecord_error_too_long: túl hosszú
activerecord_error_too_short: túl rövid
activerecord_error_wrong_length: hibás a hossza
activerecord_error_taken: már foglalt
activerecord_error_not_a_number: nem egy szám
activerecord_error_not_a_date: nem érvényes dátum
activerecord_error_greater_than_start_date: nagyobbnak kell lennie, mint az indítás dátuma
activerecord_error_not_same_project: nem azonos projekthez tartozik
activerecord_error_circular_dependency: Ez a kapcsolat egy körkörös függőséget eredményez
general_fmt_age: %d év
general_fmt_age_plural: %d év
general_fmt_date: %%Y.%%m.%%d
general_fmt_datetime: %%Y.%%m.%%d %%H:%%M:%%S
general_fmt_datetime_short: %%b %%d, %%H:%%M:%%S
general_fmt_time: %%H:%%M:%%S
general_text_No: 'Nem'
general_text_Yes: 'Igen'
general_text_no: 'nem'
general_text_yes: 'igen'
general_lang_name: 'Magyar'
general_csv_separator: ','
general_csv_encoding: ISO-8859-2
general_pdf_encoding: ISO-8859-2
general_day_names: Hétfő,Kedd,Szerda,Csütörtök,Péntek,Szombat,Vasárnap
general_first_day_of_week: '1'
notice_account_updated: A fiók adatai sikeresen frissítve.
notice_account_invalid_creditentials: Hibás felhasználói név, vagy jelszó
notice_account_password_updated: A jelszó módosítása megtörtént.
notice_account_wrong_password: Hibás jelszó
notice_account_register_done: A fiók sikeresen létrehozva. Aktiválásához kattints az e-mailben kapott linkre
notice_account_unknown_email: Ismeretlen felhasználó.
notice_can_t_change_password: A fiók külső azonosítási forrást használ. A jelszó megváltoztatása nem lehetséges.
notice_account_lost_email_sent: Egy e-mail üzenetben postáztunk Önnek egy leírást az új jelszó beállításáról.
notice_account_activated: Fiókját aktiváltuk. Most már be tud jelentkezni a rendszerbe.
notice_successful_create: Sikeres létrehozás.
notice_successful_update: Sikeres módosítás.
notice_successful_delete: Sikeres törlés.
notice_successful_connection: Sikeres bejelentkezés.
notice_file_not_found: Az oldal, amit meg szeretne nézni nem található, vagy átkerült egy másik helyre.
notice_locking_conflict: Az adatot egy másik felhasználó idő közben módosította.
notice_not_authorized: Nincs hozzáférési engedélye ehhez az oldalhoz.
notice_email_sent: Egy e-mail üzenetet küldtünk a következő címre %s
notice_email_error: Hiba történt a levél küldése közben (%s)
notice_feeds_access_key_reseted: Az RSS hozzáférési kulcsát újra generáltuk.
notice_failed_to_save_issues: "Nem sikerült a %d feladat(ok) mentése a %d -ban kiválasztva: %s."
notice_no_issue_selected: "Nincs feladat kiválasztva! Kérem jelölje meg melyik feladatot szeretné szerkeszteni!"
notice_account_pending: "A fiókja létrejött, és adminisztrátori jóváhagyásra vár."
notice_default_data_loaded: Az alapértelmezett konfiguráció betöltése sikeresen megtörtént.
error_can_t_load_default_data: "Az alapértelmezett konfiguráció betöltése nem lehetséges: %s"
error_scm_not_found: "A bejegyzés, vagy revízió nem található a tárolóban."
error_scm_command_failed: "A tároló elérése közben hiba lépett fel: %s"
error_scm_annotate: "A bejegyzés nem létezik, vagy nics jegyzetekkel ellátva."
error_issue_not_found_in_project: 'A feladat nem található, vagy nem ehhez a projekthez tartozik'
mail_subject_lost_password: Az Ön Redmine jelszava
mail_body_lost_password: 'A Redmine jelszó megváltoztatásához, kattintson a következő linkre:'
mail_subject_register: Redmine azonosító aktiválása
mail_body_register: 'A Redmine azonosítója aktiválásához, kattintson a következő linkre:'
mail_body_account_information_external: A "%s" azonosító használatával bejelentkezhet a Redmineba.
mail_body_account_information: Az Ön Redmine azonosítójának információi
mail_subject_account_activation_request: Redmine azonosító aktiválási kérelem
mail_body_account_activation_request: 'Egy új felhasználó (%s) regisztrált, azonosítója jóváhasgyásra várakozik:'
gui_validation_error: 1 hiba
gui_validation_error_plural: %d hiba
field_name: Név
field_description: Leírás
field_summary: Összegzés
field_is_required: Kötelező
field_firstname: Keresztnév
field_lastname: Vezetéknév
field_mail: E-mail
field_filename: Fájl
field_filesize: Méret
field_downloads: Letöltések
field_author: Szerző
field_created_on: Létrehozva
field_updated_on: Módosítva
field_field_format: Formátum
field_is_for_all: Minden projekthez
field_possible_values: Lehetséges értékek
field_regexp: Reguláris kifejezés
field_min_length: Minimum hossz
field_max_length: Maximum hossz
field_value: Érték
field_category: Kategória
field_title: Cím
field_project: Projekt
field_issue: Feladat
field_status: Státusz
field_notes: Feljegyzések
field_is_closed: Feladat lezárva
field_is_default: Alapértelmezett érték
field_tracker: Típus
field_subject: Tárgy
field_due_date: Befejezés dátuma
field_assigned_to: Felelős
field_priority: Prioritás
field_fixed_version: Cél verzió
field_user: Felhasználó
field_role: Szerepkör
field_homepage: Weboldal
field_is_public: Nyilvános
field_parent: Szülő projekt
field_is_in_chlog: Feladatok látszanak a változás naplóban
field_is_in_roadmap: Feladatok látszanak az életútban
field_login: Azonosító
field_mail_notification: E-mail értesítések
field_admin: Adminisztrátor
field_last_login_on: Utolsó bejelentkezés
field_language: Nyelv
field_effective_date: Dátum
field_password: Jelszó
field_new_password: Új jelszó
field_password_confirmation: Megerősítés
field_version: Verzió
field_type: Típus
field_host: Kiszolgáló
field_port: Port
field_account: Felhasználói fiók
field_base_dn: Base DN
field_attr_login: Bejelentkezési tulajdonság
field_attr_firstname: Családnév
field_attr_lastname: Utónév
field_attr_mail: E-mail
field_onthefly: On-the-fly felhasználó létrehozás
field_start_date: Kezdés dátuma
field_done_ratio: Elkészült (%%)
field_auth_source: Azonosítási mód
field_hide_mail: Rejtse el az e-mail címem
field_comments: Megjegyzés
field_url: URL
field_start_page: Kezdőlap
field_subproject: Alprojekt
field_hours: Óra
field_activity: Aktivitás
field_spent_on: Dátum
field_identifier: Azonosító
field_is_filter: Szűrőként használható
field_issue_to_id: Kapcsolódó feladat
field_delay: Késés
field_assignable: Feladat rendelhető ehhez a szerepkörhöz
field_redirect_existing_links: Létező linkek átirányítása
field_estimated_hours: Becsült idő
field_column_names: Oszlopok
field_time_zone: Időzóna
field_searchable: Kereshető
field_default_value: Alapértelmezett érték
field_comments_sorting: Feljegyzések megjelenítése
setting_app_title: Alkalmazás címe
setting_app_subtitle: Alkalmazás alcíme
setting_welcome_text: Üdvözlő üzenet
setting_default_language: Alapértelmezett nyelv
setting_login_required: Azonosítás szükséges
setting_self_registration: Regisztráció
setting_attachment_max_size: Melléklet max. mérete
setting_issues_export_limit: Feladatok exportálásának korlátja
setting_mail_from: Kibocsátó e-mail címe
setting_bcc_recipients: Titkos másolat címzet (bcc)
setting_host_name: Kiszolgáló neve
setting_text_formatting: Szöveg formázás
setting_wiki_compression: Wiki történet tömörítés
setting_feeds_limit: RSS tartalom korlát
setting_default_projects_public: Az új projektek alapértelmezés szerint nyilvánosak
setting_autofetch_changesets: Commitok automatikus lehúzása
setting_sys_api_enabled: WS engedélyezése a tárolók kezeléséhez
setting_commit_ref_keywords: Hivatkozó kulcsszavak
setting_commit_fix_keywords: Javítások kulcsszavai
setting_autologin: Automatikus bejelentkezés
setting_date_format: Dátum formátum
setting_time_format: Idő formátum
setting_cross_project_issue_relations: Kereszt-projekt feladat hivatkozások engedélyezése
setting_issue_list_default_columns: Az alapértelmezésként megjelenített oszlopok a feladat listában
setting_repositories_encodings: Tárolók kódolása
setting_emails_footer: E-mail lábléc
setting_protocol: Protokol
setting_per_page_options: Objektum / oldal opciók
setting_user_format: Felhasználók megjelenítésének formája
setting_activity_days_default: Napok megjelenítése a project aktivitásnál
setting_display_subprojects_issues: Alapértelmezettként mutassa az alprojektek feladatait is a projekteken
project_module_issue_tracking: Feladat követés
project_module_time_tracking: Idő rögzítés
project_module_news: Hírek
project_module_documents: Dokumentumok
project_module_files: Fájlok
project_module_wiki: Wiki
project_module_repository: Tároló
project_module_boards: Fórumok
label_user: Felhasználó
label_user_plural: Felhasználók
label_user_new: Új felhasználó
label_project: Projekt
label_project_new: Új projekt
label_project_plural: Projektek
label_project_all: Az összes projekt
label_project_latest: Legutóbbi projektek
label_issue: Feladat
label_issue_new: Új feladat
label_issue_plural: Feladatok
label_issue_view_all: Minden feladat megtekintése
label_issues_by: %s feladatai
label_issue_added: Feladat hozzáadva
label_issue_updated: Feladat frissítve
label_document: Dokumentum
label_document_new: Új dokumentum
label_document_plural: Dokumentumok
label_document_added: Dokumentum hozzáadva
label_role: Szerepkör
label_role_plural: Szerepkörök
label_role_new: Új szerepkör
label_role_and_permissions: Szerepkörök, és jogosultságok
label_member: Résztvevő
label_member_new: Új résztvevő
label_member_plural: Résztvevők
label_tracker: Feladat típus
label_tracker_plural: Feladat típusok
label_tracker_new: Új feladat típus
label_workflow: Workflow
label_issue_status: Feladat státusz
label_issue_status_plural: Feladat státuszok
label_issue_status_new: Új státusz
label_issue_category: Feladat kategória
label_issue_category_plural: Feladat kategóriák
label_issue_category_new: Új kategória
label_custom_field: Egyéni mező
label_custom_field_plural: Egyéni mezők
label_custom_field_new: Új egyéni mező
label_enumerations: Felsorolások
label_enumeration_new: Új érték
label_information: Információ
label_information_plural: Információk
label_please_login: Jelentkezzen be
label_register: Regisztráljon
label_password_lost: Elfelejtett jelszó
label_home: Kezdőlap
label_my_page: Saját kezdőlapom
label_my_account: Fiókom adatai
label_my_projects: Saját projektem
label_administration: Adminisztráció
label_login: Bejelentkezés
label_logout: Kijelentkezés
label_help: Súgó
label_reported_issues: Bejelentett feladatok
label_assigned_to_me_issues: A nekem kiosztott feladatok
label_last_login: Utolsó bejelentkezés
label_last_updates: Utoljára frissítve
label_last_updates_plural: Utoljára módosítva %d
label_registered_on: Regisztrált
label_activity: Tevékenységek
label_overall_activity: Teljes aktivitás
label_new: Új
label_logged_as: Bejelentkezve, mint
label_environment: Környezet
label_authentication: Azonosítás
label_auth_source: Azonosítás módja
label_auth_source_new: Új azonosítási mód
label_auth_source_plural: Azonosítási módok
label_subproject_plural: Alprojektek
label_and_its_subprojects: %s és alprojektjei
label_min_max_length: Min - Max hossz
label_list: Lista
label_date: Dátum
label_integer: Egész
label_float: Lebegőpontos
label_boolean: Logikai
label_string: Szöveg
label_text: Hosszú szöveg
label_attribute: Tulajdonság
label_attribute_plural: Tulajdonságok
label_download: %d Letöltés
label_download_plural: %d Letöltések
label_no_data: Nincs megjeleníthető adat
label_change_status: Státusz módosítása
label_history: Történet
label_attachment: Fájl
label_attachment_new: Új fájl
label_attachment_delete: Fájl törlése
label_attachment_plural: Fájlok
label_file_added: Fájl hozzáadva
label_report: Jelentés
label_report_plural: Jelentések
label_news: Hírek
label_news_new: Hír hozzáadása
label_news_plural: Hírek
label_news_latest: Legutóbbi hírek
label_news_view_all: Minden hír megtekintése
label_news_added: Hír hozzáadva
label_change_log: Változás napló
label_settings: Beállítások
label_overview: Áttekintés
label_version: Verzió
label_version_new: Új verzió
label_version_plural: Verziók
label_confirmation: Jóváhagyás
label_export_to: Exportálás
label_read: Olvas...
label_public_projects: Nyilvános projektek
label_open_issues: nyitott
label_open_issues_plural: nyitott
label_closed_issues: lezárt
label_closed_issues_plural: lezárt
label_total: Összesen
label_permissions: Jogosultságok
label_current_status: Jelenlegi státusz
label_new_statuses_allowed: Státusz változtatások engedélyei
label_all: mind
label_none: nincs
label_nobody: senki
label_next: Következő
label_previous: Előző
label_used_by: Használja
label_details: Részletek
label_add_note: Jegyzet hozzáadása
label_per_page: Oldalanként
label_calendar: Naptár
label_months_from: hónap, kezdve
label_gantt: Gantt
label_internal: Belső
label_last_changes: utolsó %d változás
label_change_view_all: Minden változás megtekintése
label_personalize_page: Az oldal testreszabása
label_comment: Megjegyzés
label_comment_plural: Megjegyzések
label_comment_add: Megjegyzés hozzáadása
label_comment_added: Megjegyzés hozzáadva
label_comment_delete: Megjegyzések törlése
label_query: Egyéni lekérdezés
label_query_plural: Egyéni lekérdezések
label_query_new: Új lekérdezés
label_filter_add: Szűrő hozzáadása
label_filter_plural: Szűrők
label_equals: egyenlő
label_not_equals: nem egyenlő
label_in_less_than: kevesebb, mint
label_in_more_than: több, mint
label_in: in
label_today: ma
label_all_time: mindenkor
label_yesterday: tegnap
label_this_week: aktuális hét
label_last_week: múlt hét
label_last_n_days: az elmúlt %d nap
label_this_month: aktuális hónap
label_last_month: múlt hónap
label_this_year: aktuális év
label_date_range: Dátum intervallum
label_less_than_ago: kevesebb, mint nappal ezelőtt
label_more_than_ago: több, mint nappal ezelőtt
label_ago: nappal ezelőtt
label_contains: tartalmazza
label_not_contains: nem tartalmazza
label_day_plural: nap
label_repository: Tároló
label_repository_plural: Tárolók
label_browse: Tallóz
label_modification: %d változás
label_modification_plural: %d változások
label_revision: Revízió
label_revision_plural: Revíziók
label_associated_revisions: Kapcsolt revíziók
label_added: hozzáadva
label_modified: módosítva
label_deleted: törölve
label_latest_revision: Legutolsó revízió
label_latest_revision_plural: Legutolsó revíziók
label_view_revisions: Revíziók megtekintése
label_max_size: Maximális méret
label_on: 'összesen'
label_sort_highest: Az elejére
label_sort_higher: Eggyel feljebb
label_sort_lower: Eggyel lejjebb
label_sort_lowest: Az aljára
label_roadmap: Életút
label_roadmap_due_in: Elkészültéig várhatóan még
label_roadmap_overdue: %s késésben
label_roadmap_no_issues: Nincsenek feladatok ehhez a verzióhoz
label_search: Keresés
label_result_plural: Találatok
label_all_words: Minden szó
label_wiki: Wiki
label_wiki_edit: Wiki szerkesztés
label_wiki_edit_plural: Wiki szerkesztések
label_wiki_page: Wiki oldal
label_wiki_page_plural: Wiki oldalak
label_index_by_title: Cím szerint indexelve
label_index_by_date: Dátum szerint indexelve
label_current_version: Jelenlegi verzió
label_preview: Előnézet
label_feed_plural: Visszajelzések
label_changes_details: Változások részletei
label_issue_tracking: Feladat követés
label_spent_time: Ráfordított idő
label_f_hour: %.2f óra
label_f_hour_plural: %.2f óra
label_time_tracking: Idő követés
label_change_plural: Változások
label_statistics: Statisztikák
label_commits_per_month: Commits havonta
label_commits_per_author: Commits szerzőnként
label_view_diff: Különbségek megtekintése
label_diff_inline: inline
label_diff_side_by_side: side by side
label_options: Opciók
label_copy_workflow_from: Workflow másolása innen
label_permissions_report: Jogosultsági riport
label_watched_issues: Megfigyelt feladatok
label_related_issues: Kapcsolódó feladatok
label_applied_status: Alkalmazandó státusz
label_loading: Betöltés...
label_relation_new: Új kapcsolat
label_relation_delete: Kapcsolat törlése
label_relates_to: kapcsolódik
label_duplicates: duplikálja
label_blocks: zárolja
label_blocked_by: zárolta
label_precedes: megelőzi
label_follows: követi
label_end_to_start: végétől indulásig
label_end_to_end: végétől végéig
label_start_to_start: indulástól indulásig
label_start_to_end: indulástól végéig
label_stay_logged_in: Emlékezzen rám
label_disabled: kikapcsolva
label_show_completed_versions: A kész verziók mutatása
label_me: én
label_board: Fórum
label_board_new: Új fórum
label_board_plural: Fórumok
label_topic_plural: Témák
label_message_plural: Üzenetek
label_message_last: Utolsó üzenet
label_message_new: Új üzenet
label_message_posted: Üzenet hozzáadva
label_reply_plural: Válaszok
label_send_information: Fiók infomációk küldése a felhasználónak
label_year: Év
label_month: Hónap
label_week: Hét
label_date_from: 'Kezdet:'
label_date_to: 'Vége:'
label_language_based: A felhasználó nyelve alapján
label_sort_by: %s szerint rendezve
label_send_test_email: Teszt e-mail küldése
label_feeds_access_key_created_on: 'RSS hozzáférési kulcs létrehozva ennyivel ezelőtt: %s'
label_module_plural: Modulok
label_added_time_by: '%s adta hozzá ennyivel ezelőtt: %s'
label_updated_time: 'Utolsó módosítás ennyivel ezelőtt: %s'
label_jump_to_a_project: Ugrás projekthez...
label_file_plural: Fájlok
label_changeset_plural: Changesets
label_default_columns: Alapértelmezett oszlopok
label_no_change_option: (Nincs változás)
label_bulk_edit_selected_issues: A kiválasztott feladatok kötegelt szerkesztése
label_theme: Téma
label_default: Alapértelmezett
label_search_titles_only: Keresés csak a címekben
label_user_mail_option_all: "Minden eseményről minden saját projektemben"
label_user_mail_option_selected: "Minden eseményről a kiválasztott projektekben..."
label_user_mail_option_none: "Csak a megfigyelt dolgokról, vagy, amiben részt veszek"
label_user_mail_no_self_notified: "Nem kérek értesítést az általam végzett módosításokról"
label_registration_activation_by_email: Fiók aktiválása e-mailben
label_registration_manual_activation: Manuális fiók aktiválás
label_registration_automatic_activation: Automatikus fiók aktiválás
label_display_per_page: 'Oldalanként: %s'
label_age: Kor
label_change_properties: Tulajdonságok változtatása
label_general: Általános
label_more: továbbiak
label_scm: SCM
label_plugins: Pluginek
label_ldap_authentication: LDAP azonosítás
label_downloads_abbr: D/L
label_optional_description: Opcionális leírás
label_add_another_file: Újabb fájl hozzáadása
label_preferences: Tulajdonságok
label_chronological_order: Időrendben
label_reverse_chronological_order: Fordított időrendben
label_planning: Tervezés
button_login: Bejelentkezés
button_submit: Elfogad
button_save: Mentés
button_check_all: Mindent kijelöl
button_uncheck_all: Kijelölés törlése
button_delete: Töröl
button_create: Létrehoz
button_test: Teszt
button_edit: Szerkeszt
button_add: Hozzáad
button_change: Változtat
button_apply: Alkalmaz
button_clear: Töröl
button_lock: Zárol
button_unlock: Felold
button_download: Letöltés
button_list: Lista
button_view: Megnéz
button_move: Mozgat
button_back: Vissza
button_cancel: Mégse
button_activate: Aktivál
button_sort: Rendezés
button_log_time: Idő rögzítés
button_rollback: Visszaáll erre a verzióra
button_watch: Megfigyel
button_unwatch: Megfigyelés törlése
button_reply: Válasz
button_archive: Archivál
button_unarchive: Dearchivál
button_reset: Reset
button_rename: Átnevez
button_change_password: Jelszó megváltoztatása
button_copy: Másol
button_annotate: Jegyzetel
button_update: Módosít
button_configure: Konfigurál
status_active: aktív
status_registered: regisztrált
status_locked: zárolt
text_select_mail_notifications: Válasszon eseményeket, amelyekről e-mail értesítést kell küldeni.
text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 = nincs korlátozás
text_project_destroy_confirmation: Biztosan törölni szeretné a projektet és vele együtt minden kapcsolódó adatot ?
text_subprojects_destroy_warning: 'Az alprojekt(ek): %s szintén törlésre kerülnek.'
text_workflow_edit: Válasszon egy szerepkört, és egy trackert a workflow szerkesztéséhez
text_are_you_sure: Biztos benne ?
text_journal_changed: "változás: %s volt, %s lett"
text_journal_set_to: "beállítva: %s"
text_journal_deleted: törölve
text_tip_task_begin_day: a feladat ezen a napon kezdődik
text_tip_task_end_day: a feladat ezen a napon ér véget
text_tip_task_begin_end_day: a feladat ezen a napon kezdődik és ér véget
text_project_identifier_info: 'Kis betűk (a-z), számok és kötőjel megengedett.<br />Mentés után az azonosítót megváltoztatni nem lehet.'
text_caracters_maximum: maximum %d karakter.
text_caracters_minimum: Legkevesebb %d karakter hosszúnek kell lennie.
text_length_between: Legalább %d és legfeljebb %d hosszú karakter.
text_tracker_no_workflow: Nincs workflow definiálva ehhez a tracker-hez
text_unallowed_characters: Tiltott karakterek
text_comma_separated: Több érték megengedett (vesszővel elválasztva)
text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben
text_issue_added: %s feladat bejelentve.
text_issue_updated: %s feladat frissítve.
text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ?
text_issue_category_destroy_question: Néhány feladat (%d) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ?
text_issue_category_destroy_assignments: Kategória hozzárendelés megszűntetése
text_issue_category_reassign_to: Feladatok újra hozzárendelése a kategóriához
text_user_mail_option: "A nem kiválasztott projektekről csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelő)"
text_no_configuration_data: "Szerepkörök, trackerek, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErősen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt."
text_load_default_configuration: Alapértelmezett konfiguráció betöltése
text_status_changed_by_changeset: Applied in changeset %s.
text_issues_destroy_confirmation: 'Biztos benne, hogy törölni szeretné a kijelölt feladato(ka)t ?'
text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:'
text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva
text_file_repository_writable: Fájl tároló írható
text_rmagick_available: RMagick elérhető (opcionális)
text_destroy_time_entries_question: %.02f órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ?
text_destroy_time_entries: A rögzített órák törlése
text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez
text_reassign_time_entries: 'A rögzített órák újra hozzárendelése ehhez a feladathoz:'
default_role_manager: Vezető
default_role_developper: Fejlesztő
default_role_reporter: Bejelentő
default_tracker_bug: Hiba
default_tracker_feature: Fejlesztés
default_tracker_support: Support
default_issue_status_new: Új
default_issue_status_assigned: Kiosztva
default_issue_status_resolved: Megoldva
default_issue_status_feedback: Visszajelzés
default_issue_status_closed: Lezárt
default_issue_status_rejected: Elutasított
default_doc_category_user: Felhasználói dokumentáció
default_doc_category_tech: Technikai dokumentáció
default_priority_low: Alacsony
default_priority_normal: Normál
default_priority_high: Magas
default_priority_urgent: Sürgős
default_priority_immediate: Azonnal
default_activity_design: Tervezés
default_activity_development: Fejlesztés
enumeration_issue_priorities: Feladat prioritások
enumeration_doc_categories: Dokumentum kategóriák
enumeration_activities: Tevékenységek (idő rögzítés)
mail_body_reminder: "%d neked kiosztott feladat határidős az elkövetkező %d napban:"
mail_subject_reminder: "%d feladat határidős az elkövetkező napokban"
text_user_wrote: '%s írta:'
label_duplicated_by: duplikálta
-1
View File
@@ -617,4 +617,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-1
View File
@@ -618,4 +618,3 @@ label_overall_activity: 全ての活動
setting_default_projects_public: デフォルトで新しいプロジェクトは公開にする setting_default_projects_public: デフォルトで新しいプロジェクトは公開にする
error_scm_annotate: "エントリが存在しない、もしくはアノテートできません。" error_scm_annotate: "エントリが存在しない、もしくはアノテートできません。"
label_planning: 計画 label_planning: 計画
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-1
View File
@@ -617,4 +617,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
+39 -42
View File
@@ -554,7 +554,7 @@ enumeration_issue_priorities: Darbo prioritetai
enumeration_doc_categories: Dokumento kategorijos enumeration_doc_categories: Dokumento kategorijos
enumeration_activities: Veiklos (laiko sekimas) enumeration_activities: Veiklos (laiko sekimas)
label_display_per_page: '%s įrašų puslapyje' label_display_per_page: '%s įrašų puslapyje'
setting_per_page_options: Įrašų puslapyje nustatimas setting_per_page_options: Objects per page options
notice_default_data_loaded: Numatytoji konfiguracija sėkmingai užkrauta. notice_default_data_loaded: Numatytoji konfiguracija sėkmingai užkrauta.
label_age: Amžius label_age: Amžius
label_general: Bendri label_general: Bendri
@@ -578,46 +578,43 @@ label_document_added: Dokumentas pridėtas
label_message_posted: Pranešimas pridėtas label_message_posted: Pranešimas pridėtas
label_file_added: Byla pridėta label_file_added: Byla pridėta
label_news_added: Naujiena pridėta label_news_added: Naujiena pridėta
project_module_boards: Forumai project_module_boards: Boards
project_module_issue_tracking: Darbu pėdsekys project_module_issue_tracking: Issue tracking
project_module_wiki: Wiki project_module_wiki: Wiki
project_module_files: Rinkmenos project_module_files: Files
project_module_documents: Dokumentai project_module_documents: Documents
project_module_repository: Saugykla project_module_repository: Repository
project_module_news: Žinios project_module_news: News
project_module_time_tracking: Laiko pėdsekys project_module_time_tracking: Time tracking
text_file_repository_writable: Į rinkmenu saugyklą galima saugoti (RW) text_file_repository_writable: File repository writable
text_default_administrator_account_changed: Administratoriaus numatyta paskyra pakeista text_default_administrator_account_changed: Default administrator account changed
text_rmagick_available: RMagick pasiekiamas (pasirinktinai) text_rmagick_available: RMagick available (optional)
button_configure: Konfiguruoti button_configure: Configure
label_plugins: Plugins label_plugins: Plugins
label_ldap_authentication: LDAP autentifikacija label_ldap_authentication: LDAP authentication
label_downloads_abbr: siunt. label_downloads_abbr: D/L
label_this_month: šis menuo label_this_month: this month
label_last_n_days: paskutinių %d dienų label_last_n_days: last %d days
label_all_time: visas laikas label_all_time: all time
label_this_year: šiemet label_this_year: this year
label_date_range: Dienų diapazonas label_date_range: Date range
label_last_week: paskutinė savaitė label_last_week: last week
label_yesterday: vakar label_yesterday: yesterday
label_last_month: paskutinis menuo label_last_month: last month
label_add_another_file: Pridėti kitą bylą label_add_another_file: Add another file
label_optional_description: Apibūdinimas (laisvai pasirenkamas) label_optional_description: Optional description
text_destroy_time_entries_question: Naikinamam darbui paskelbta %.02f valandų. Ką jūs noryte su jomis daryti? text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
error_issue_not_found_in_project: 'Darbas nerastas arba nesurištas su šiuo projektu' error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
text_assign_time_entries_to_project: Priskirti valandas prie projekto text_assign_time_entries_to_project: Assign reported hours to the project
text_destroy_time_entries: Ištrinti paskelbtas valandas text_destroy_time_entries: Delete reported hours
text_reassign_time_entries: 'Priskirti paskelbtas valandas šiam darbui:' text_reassign_time_entries: 'Reassign reported hours to this issue:'
setting_activity_days_default: Atvaizduojamos dienos projekto veikloje setting_activity_days_default: Days displayed on project activity
label_chronological_order: Chronologine tvarka label_chronological_order: In chronological order
field_comments_sorting: rodyti komentarus field_comments_sorting: Display comments
label_reverse_chronological_order: Atbuline chronologine tvarka label_reverse_chronological_order: In reverse chronological order
label_preferences: Savybės label_preferences: Preferences
setting_display_subprojects_issues: Pagal nutylėjimą rodyti subprojektų darbus pagrindiniame projekte setting_display_subprojects_issues: Display subprojects issues on main projects by default
label_overall_activity: Visa veikla label_overall_activity: Overall activity
setting_default_projects_public: Naujas projektas viešas pagal nutylėjimą setting_default_projects_public: New projects are public by default
error_scm_annotate: "Įrašas neegzituoja arba negalima jo atvaizduoti." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planavimas label_planning: Planning
text_subprojects_destroy_warning: 'Šis(ie) subprojektas(ai): %s taip pat bus ištrintas(i).'
label_and_its_subprojects: %s projektas ir jo subprojektai
-1
View File
@@ -618,4 +618,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
+10 -16
View File
@@ -80,7 +80,7 @@ notice_default_data_loaded: Standardkonfigurasjonen lastet inn.
error_can_t_load_default_data: "Standardkonfigurasjonen kunne ikke lastes inn: %s" error_can_t_load_default_data: "Standardkonfigurasjonen kunne ikke lastes inn: %s"
error_scm_not_found: "Elementet og/eller revisjonen eksisterer ikke i depoet." error_scm_not_found: "Elementet og/eller revisjonen eksisterer ikke i depoet."
error_scm_command_failed: "En feil oppstod under tilkobling til depoet: %s" error_scm_command_failed: "En feil oppstod under tilkobling til depoet: %s"
error_scm_annotate: "Elementet eksisterer ikke, eller kan ikke noteres." error_scm_annotate: "Elementet eksisterer ikke, eller kan ikke annoteres."
error_issue_not_found_in_project: 'Saken eksisterer ikke, eller hører ikke til dette prosjektet' error_issue_not_found_in_project: 'Saken eksisterer ikke, eller hører ikke til dette prosjektet'
mail_subject_lost_password: Ditt %s passord mail_subject_lost_password: Ditt %s passord
@@ -91,8 +91,6 @@ mail_body_account_information_external: Du kan bruke din "%s"-konto for å logge
mail_body_account_information: Informasjon om din konto mail_body_account_information: Informasjon om din konto
mail_subject_account_activation_request: %s kontoaktivering mail_subject_account_activation_request: %s kontoaktivering
mail_body_account_activation_request: 'En ny bruker (%s) er registrert, og avventer din godkjenning:' mail_body_account_activation_request: 'En ny bruker (%s) er registrert, og avventer din godkjenning:'
mail_subject_reminder: "%d sak(er) har frist de kommende dagene"
mail_body_reminder: "%d sak(er) som er tildelt deg har frist de kommende %d dager:"
gui_validation_error: 1 feil gui_validation_error: 1 feil
gui_validation_error_plural: %d feil gui_validation_error_plural: %d feil
@@ -139,7 +137,7 @@ field_parent: Underprosjekt til
field_is_in_chlog: Vises i endringslogg field_is_in_chlog: Vises i endringslogg
field_is_in_roadmap: Vises i veikart field_is_in_roadmap: Vises i veikart
field_login: Brukernavn field_login: Brukernavn
field_mail_notification: E-post-varsling field_mail_notification: E-post varsling
field_admin: Administrator field_admin: Administrator
field_last_login_on: Sist innlogget field_last_login_on: Sist innlogget
field_language: Språk field_language: Språk
@@ -167,7 +165,7 @@ field_url: URL
field_start_page: Startside field_start_page: Startside
field_subproject: Underprosjekt field_subproject: Underprosjekt
field_hours: Timer field_hours: Timer
field_activity: Aktivitet field_activity: Activitet
field_spent_on: Dato field_spent_on: Dato
field_identifier: Identifikasjon field_identifier: Identifikasjon
field_is_filter: Brukes som filter field_is_filter: Brukes som filter
@@ -284,7 +282,7 @@ label_last_updates: Sist oppdatert
label_last_updates_plural: %d siste oppdaterte label_last_updates_plural: %d siste oppdaterte
label_registered_on: Registrert label_registered_on: Registrert
label_activity: Aktivitet label_activity: Aktivitet
label_overall_activity: All aktivitet label_overall_activity: Total aktivitet
label_new: Ny label_new: Ny
label_logged_as: Innlogget som label_logged_as: Innlogget som
label_environment: Miljø label_environment: Miljø
@@ -293,7 +291,6 @@ label_auth_source: Autentifikasjonsmodus
label_auth_source_new: Ny autentifikasjonmodus label_auth_source_new: Ny autentifikasjonmodus
label_auth_source_plural: Autentifikasjonsmoduser label_auth_source_plural: Autentifikasjonsmoduser
label_subproject_plural: Underprosjekter label_subproject_plural: Underprosjekter
label_and_its_subprojects: %s og dets underprosjekter
label_min_max_length: Min.-maks. lengde label_min_max_length: Min.-maks. lengde
label_list: Liste label_list: Liste
label_date: Dato label_date: Dato
@@ -355,7 +352,7 @@ label_gantt: Gantt
label_internal: Intern label_internal: Intern
label_last_changes: siste %d endringer label_last_changes: siste %d endringer
label_change_view_all: Vis alle endringer label_change_view_all: Vis alle endringer
label_personalize_page: Tilpass denne siden label_personalize_page: Tilrettelegg denne siden
label_comment: Kommentar label_comment: Kommentar
label_comment_plural: Kommentarer label_comment_plural: Kommentarer
label_comment_add: Legg til kommentar label_comment_add: Legg til kommentar
@@ -447,8 +444,7 @@ label_loading: Laster...
label_relation_new: Ny relasjon label_relation_new: Ny relasjon
label_relation_delete: Slett relasjon label_relation_delete: Slett relasjon
label_relates_to: relatert til label_relates_to: relatert til
label_duplicates: dupliserer label_duplicates: duplikater
label_duplicated_by: duplisert av
label_blocks: blokkerer label_blocks: blokkerer
label_blocked_by: blokkert av label_blocked_by: blokkert av
label_precedes: kommer før label_precedes: kommer før
@@ -549,7 +545,7 @@ button_reset: Nullstill
button_rename: Endre navn button_rename: Endre navn
button_change_password: Endre passord button_change_password: Endre passord
button_copy: Kopier button_copy: Kopier
button_annotate: Notér button_annotate: Annotér
button_update: Oppdater button_update: Oppdater
button_configure: Konfigurer button_configure: Konfigurer
@@ -561,7 +557,6 @@ text_select_mail_notifications: Velg hendelser som skal varsles med e-post.
text_regexp_info: eg. ^[A-Z0-9]+$ text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 betyr ingen begrensning text_min_max_length_info: 0 betyr ingen begrensning
text_project_destroy_confirmation: Er du sikker på at du vil slette dette prosjekter og alle relatert data ? text_project_destroy_confirmation: Er du sikker på at du vil slette dette prosjekter og alle relatert data ?
text_subprojects_destroy_warning: 'Underprojekt(ene): %s vil også bli slettet.'
text_workflow_edit: Velg en rolle og en sakstype for å endre arbeidsflyten text_workflow_edit: Velg en rolle og en sakstype for å endre arbeidsflyten
text_are_you_sure: Er du sikker ? text_are_you_sure: Er du sikker ?
text_journal_changed: endret fra %s til %s text_journal_changed: endret fra %s til %s
@@ -570,7 +565,7 @@ text_journal_deleted: slettet
text_tip_task_begin_day: oppgaven starter denne dagen text_tip_task_begin_day: oppgaven starter denne dagen
text_tip_task_end_day: oppgaven avsluttes denne dagen text_tip_task_end_day: oppgaven avsluttes denne dagen
text_tip_task_begin_end_day: oppgaven starter og avsluttes denne dagen text_tip_task_begin_end_day: oppgaven starter og avsluttes denne dagen
text_project_identifier_info: 'Små bokstaver (a-z), nummer og bindestrek tillatt.<br />Identifikatoren kan ikke endres etter den er lagret.' text_project_identifier_info: 'Små bokstaver (a-z), nummer og binde-/understrek tillat.<br />Identifikatoren kan ikke endres etter den er lagret.'
text_caracters_maximum: %d tegn maksimum. text_caracters_maximum: %d tegn maksimum.
text_caracters_minimum: Må være minst %d tegn langt. text_caracters_minimum: Må være minst %d tegn langt.
text_length_between: Lengde mellom %d og %d tegn. text_length_between: Lengde mellom %d og %d tegn.
@@ -591,13 +586,12 @@ text_status_changed_by_changeset: Brukt i endringssett %s.
text_issues_destroy_confirmation: 'Er du sikker på at du vil slette valgte sak(er) ?' text_issues_destroy_confirmation: 'Er du sikker på at du vil slette valgte sak(er) ?'
text_select_project_modules: 'Velg moduler du vil aktivere for dette prosjektet:' text_select_project_modules: 'Velg moduler du vil aktivere for dette prosjektet:'
text_default_administrator_account_changed: Standard administrator-konto er endret text_default_administrator_account_changed: Standard administrator-konto er endret
text_file_repository_writable: Fil-arkivet er skrivbart text_file_repository_writable: Fil-depotet er skrivbart
text_rmagick_available: RMagick er tilgjengelig (valgfritt) text_rmagick_available: RMagick tilgjengelig (valgfritt)
text_destroy_time_entries_question: %.02f timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ? text_destroy_time_entries_question: %.02f timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ?
text_destroy_time_entries: Slett førte timer text_destroy_time_entries: Slett førte timer
text_assign_time_entries_to_project: Overfør førte timer til prosjektet text_assign_time_entries_to_project: Overfør førte timer til prosjektet
text_reassign_time_entries: 'Overfør førte timer til denne saken:' text_reassign_time_entries: 'Overfør førte timer til denne saken:'
text_user_wrote: '%s skrev:'
default_role_manager: Leder default_role_manager: Leder
default_role_developper: Utvikler default_role_developper: Utvikler
+17 -18
View File
@@ -70,7 +70,7 @@ notice_file_not_found: Strona do której próbujesz się dostać nie istnieje lu
notice_locking_conflict: Dane poprawione przez innego użytkownika. notice_locking_conflict: Dane poprawione przez innego użytkownika.
notice_not_authorized: Nie jesteś autoryzowany by zobaczyć stronę. notice_not_authorized: Nie jesteś autoryzowany by zobaczyć stronę.
error_scm_not_found: "Obiekt lub wersja nie zostały znalezione w repozytorium." error_scm_not_found: "Wejście i/lub zmiana nie istnieje w repozytorium."
error_scm_command_failed: "An error occurred when trying to access the repository: %s" error_scm_command_failed: "An error occurred when trying to access the repository: %s"
mail_subject_lost_password: Twoje hasło do %s mail_subject_lost_password: Twoje hasło do %s
@@ -114,12 +114,12 @@ field_subject: Temat
field_due_date: Data oddania field_due_date: Data oddania
field_assigned_to: Przydzielony do field_assigned_to: Przydzielony do
field_priority: Priorytet field_priority: Priorytet
field_fixed_version: Wersja docelowa field_fixed_version: Target version
field_user: Użytkownik field_user: Użytkownik
field_role: Rola field_role: Rola
field_homepage: Strona www field_homepage: Strona www
field_is_public: Publiczny field_is_public: Publiczny
field_parent: Nadprojekt field_parent: Podprojekt
field_is_in_chlog: Zagadnienie pokazywane w zapisie zmian field_is_in_chlog: Zagadnienie pokazywane w zapisie zmian
field_is_in_roadmap: Zagadnienie pokazywane na mapie field_is_in_roadmap: Zagadnienie pokazywane na mapie
field_login: Login field_login: Login
@@ -172,10 +172,10 @@ setting_host_name: Nazwa hosta
setting_text_formatting: Formatowanie tekstu setting_text_formatting: Formatowanie tekstu
setting_wiki_compression: Kompresja historii Wiki setting_wiki_compression: Kompresja historii Wiki
setting_feeds_limit: Limit danych RSS setting_feeds_limit: Limit danych RSS
setting_autofetch_changesets: Automatyczne pobieranie zmian setting_autofetch_changesets: Auto-odświeżanie CVS
setting_sys_api_enabled: Włączenie WS do zarządzania repozytorium setting_sys_api_enabled: Włączenie WS do zarządzania repozytorium
setting_commit_ref_keywords: Słowa tworzące powiązania setting_commit_ref_keywords: Terminy odnoszące (CVS)
setting_commit_fix_keywords: Słowa zmieniające status setting_commit_fix_keywords: Terminy ustalające (CVS)
setting_autologin: Auto logowanie setting_autologin: Auto logowanie
setting_date_format: Format daty setting_date_format: Format daty
@@ -328,14 +328,14 @@ label_repository: Repozytorium
label_browse: Przegląd label_browse: Przegląd
label_modification: %d modyfikacja label_modification: %d modyfikacja
label_modification_plural: %d modyfikacja label_modification_plural: %d modyfikacja
label_revision: Rewizja label_revision: Zmiana
label_revision_plural: Rewizje label_revision_plural: Zmiany
label_added: dodane label_added: dodane
label_modified: zmodyfikowane label_modified: zmodufikowane
label_deleted: usunięte label_deleted: usunięte
label_latest_revision: Najnowsza rewizja label_latest_revision: Ostatnia zmiana
label_latest_revision_plural: Najnowsze rewizje label_latest_revision_plural: Ostatnie zmiany
label_view_revisions: Pokaż rewizje label_view_revisions: Pokaż zmiany
label_max_size: Maksymalny rozmiar label_max_size: Maksymalny rozmiar
label_on: 'z' label_on: 'z'
label_sort_highest: Przesuń na górę label_sort_highest: Przesuń na górę
@@ -366,8 +366,8 @@ label_f_hour_plural: %.2f godzin
label_time_tracking: Śledzenie czasu label_time_tracking: Śledzenie czasu
label_change_plural: Zmiany label_change_plural: Zmiany
label_statistics: Statystyki label_statistics: Statystyki
label_commits_per_month: Zatwierdzenia według miesięcy label_commits_per_month: Wrzutek CVS w miesiącu
label_commits_per_author: Zatwierdzenia według autorów label_commits_per_author: Wrzutek CVS przez autora
label_view_diff: Pokaż różnice label_view_diff: Pokaż różnice
label_diff_inline: w linii label_diff_inline: w linii
label_diff_side_by_side: obok siebie label_diff_side_by_side: obok siebie
@@ -463,13 +463,13 @@ text_length_between: Długość pomiędzy %d i %d znaków.
text_tracker_no_workflow: Brak przepływu zefiniowanego dla tego typu zagadnienia text_tracker_no_workflow: Brak przepływu zefiniowanego dla tego typu zagadnienia
text_unallowed_characters: Niedozwolone znaki text_unallowed_characters: Niedozwolone znaki
text_comma_separated: Wielokrotne wartości dozwolone (rozdzielone przecinkami). text_comma_separated: Wielokrotne wartości dozwolone (rozdzielone przecinkami).
text_issues_ref_in_commit_messages: Odwołania do zagadnień w komentarzach zatwierdzeń text_issues_ref_in_commit_messages: Zagadnienia odnoszące i ustalające we wrzutkach CVS
default_role_manager: Kierownik default_role_manager: Kierownik
default_role_developper: Programista default_role_developper: Programista
default_role_reporter: Wprowadzajacy default_role_reporter: Wprowadzajacy
default_tracker_bug: Błąd default_tracker_bug: Błąd
default_tracker_feature: Zadanie default_tracker_feature: Cecha
default_tracker_support: Wsparcie default_tracker_support: Wsparcie
default_issue_status_new: Nowy default_issue_status_new: Nowy
default_issue_status_assigned: Przypisany default_issue_status_assigned: Przypisany
@@ -483,7 +483,7 @@ default_priority_low: Niski
default_priority_normal: Normalny default_priority_normal: Normalny
default_priority_high: Wysoki default_priority_high: Wysoki
default_priority_urgent: Pilny default_priority_urgent: Pilny
default_priority_immediate: Natychmiastowy default_priority_immediate: Natyczmiastowy
default_activity_design: Projektowanie default_activity_design: Projektowanie
default_activity_development: Rozwój default_activity_development: Rozwój
@@ -617,4 +617,3 @@ label_overall_activity: Ogólna aktywność
setting_default_projects_public: Nowe projekty są domyślnie publiczne setting_default_projects_public: Nowe projekty są domyślnie publiczne
error_scm_annotate: "Wpis nie istnieje lub nie można do niego dodawać adnotacji." error_scm_annotate: "Wpis nie istnieje lub nie można do niego dodawać adnotacji."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
+400 -401
View File
@@ -1,140 +1,140 @@
_gloc_rule_default: '|n| n==1 ? "" : "_plural" ' _gloc_rule_default: '|n| n==1 ? "" : "_plural" '
actionview_datehelper_select_day_prefix: actionview_datehelper_select_day_prefix:
actionview_datehelper_select_month_names: Janeiro,Fevereiro,Março,Abrill,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro actionview_datehelper_select_month_names: Janeiro,Fevereiro,Marco,Abrill,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro
actionview_datehelper_select_month_names_abbr: Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez actionview_datehelper_select_month_names_abbr: Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez
actionview_datehelper_select_month_prefix: actionview_datehelper_select_month_prefix:
actionview_datehelper_select_year_prefix: actionview_datehelper_select_year_prefix:
actionview_datehelper_time_in_words_day: 1 dia actionview_datehelper_time_in_words_day: 1 dia
actionview_datehelper_time_in_words_day_plural: %d dias actionview_datehelper_time_in_words_day_plural: %d dias
actionview_datehelper_time_in_words_hour_about: aproximadamente uma hora actionview_datehelper_time_in_words_hour_about: sobre uma hora
actionview_datehelper_time_in_words_hour_about_plural: aproximadamente %d horas actionview_datehelper_time_in_words_hour_about_plural: sobra %d horas
actionview_datehelper_time_in_words_hour_about_single: aproximadamente uma hora actionview_datehelper_time_in_words_hour_about_single: sobre uma hora
actionview_datehelper_time_in_words_minute: 1 minuto actionview_datehelper_time_in_words_minute: 1 minuto
actionview_datehelper_time_in_words_minute_half: meio minuto actionview_datehelper_time_in_words_minute_half: meio minuto
actionview_datehelper_time_in_words_minute_less_than: menos de um minuto actionview_datehelper_time_in_words_minute_less_than: menos que um minuto
actionview_datehelper_time_in_words_minute_plural: %d minutos actionview_datehelper_time_in_words_minute_plural: %d minutos
actionview_datehelper_time_in_words_minute_single: 1 minuto actionview_datehelper_time_in_words_minute_single: 1 minuto
actionview_datehelper_time_in_words_second_less_than: menos de um segundo actionview_datehelper_time_in_words_second_less_than: menos que um segundo
actionview_datehelper_time_in_words_second_less_than_plural: menos de %d segundos actionview_datehelper_time_in_words_second_less_than_plural: menos que %d segundos
actionview_instancetag_blank_option: Selecione actionview_instancetag_blank_option: Selecione
activerecord_error_inclusion: não está incluso na lista activerecord_error_inclusion: nao esta incluido na lista
activerecord_error_exclusion: está reservado activerecord_error_exclusion: esta reservado
activerecord_error_invalid: é inválido activerecord_error_invalid: e invalido
activerecord_error_confirmation: confirmação não confere activerecord_error_confirmation: confirmacao nao confere
activerecord_error_accepted: deve ser aceito activerecord_error_accepted: deve ser aceito
activerecord_error_empty: não pode ser vazio activerecord_error_empty: nao pode ser vazio
activerecord_error_blank: não pode estar em branco activerecord_error_blank: nao pode estar em branco
activerecord_error_too_long: é muito longo activerecord_error_too_long: e muito longo
activerecord_error_too_short: é muito curto activerecord_error_too_short: e muito comprido
activerecord_error_wrong_length: esta com o tamanho errado activerecord_error_wrong_length: esta com o comprimento errado
activerecord_error_taken: já foi obtido activerecord_error_taken: ja esta examinado
activerecord_error_not_a_number: não é um numero activerecord_error_not_a_number: nao e um numero
activerecord_error_not_a_date: não é uma data valida activerecord_error_not_a_date: nao e uma data valida
activerecord_error_greater_than_start_date: deve ser maior que a data inicial activerecord_error_greater_than_start_date: deve ser maior que a data inicial
activerecord_error_not_same_project: não pode pertencer ao mesmo projeto activerecord_error_not_same_project: doesn't belong to the same project
activerecord_error_circular_dependency: Esta relação geraria uma dependência circular activerecord_error_circular_dependency: This relation would create a circular dependency
general_fmt_age: %d ano general_fmt_age: %d yr
general_fmt_age_plural: %d anos general_fmt_age_plural: %d yrs
general_fmt_date: %%d/%%m/%%Y general_fmt_date: %%m/%%d/%%Y
general_fmt_datetime: %%d/%%m/%%Y %%I:%%M %%p general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
general_fmt_datetime_short: %%b %%d, %%I:%%M %%p general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
general_fmt_time: %%I:%%M %%p general_fmt_time: %%I:%%M %%p
general_text_No: 'Não' general_text_No: 'Nao'
general_text_Yes: 'Sim' general_text_Yes: 'Sim'
general_text_no: 'não' general_text_no: 'nao'
general_text_yes: 'sim' general_text_yes: 'sim'
general_lang_name: 'Português(Brasil)' general_lang_name: 'Portugues Brasileiro'
general_csv_separator: ',' general_csv_separator: ','
general_csv_encoding: ISO-8859-1 general_csv_encoding: ISO-8859-1
general_pdf_encoding: ISO-8859-1 general_pdf_encoding: ISO-8859-1
general_day_names: Segunda,Terça,Quarta,Quinta,Sexta,Sabado,Domingo general_day_names: Segunda,Terca,Quarta,Quinta,Sexta,Sabado,Domingo
general_first_day_of_week: '1' general_first_day_of_week: '1'
notice_account_updated: Conta foi alterada com sucesso. notice_account_updated: Conta foi alterada com sucesso.
notice_account_invalid_creditentials: Usuário ou senha inválido. notice_account_invalid_creditentials: Usuario ou senha invalido.
notice_account_password_updated: Senha alterada com sucesso. notice_account_password_updated: Senha foi alterada com sucesso.
notice_account_wrong_password: Senha inválida. notice_account_wrong_password: Senha errada.
notice_account_register_done: Conta criada com sucesso. notice_account_register_done: Conta foi criada com sucesso.
notice_account_unknown_email: Usuário desconhecido. notice_account_unknown_email: Usuario desconhecido.
notice_can_t_change_password: Esta conta usa autenticação externa. E impossível alterar a senha. notice_can_t_change_password: Esta conta usa autenticacao externa. E impossivel trocar a senha.
notice_account_lost_email_sent: Um email com instruções para escolher uma nova senha foi enviado para você. notice_account_lost_email_sent: Um email com instrucoes para escolher uma nova senha foi enviado para voce.
notice_account_activated: Sua conta foi ativada. Você pode acessá-la agora. notice_account_activated: Sua conta foi ativada. Voce pode logar agora
notice_successful_create: Criado com sucesso. notice_successful_create: Criado com sucesso.
notice_successful_update: Alterado com sucesso. notice_successful_update: Alterado com sucesso.
notice_successful_delete: Excluído com sucesso. notice_successful_delete: Apagado com sucesso.
notice_successful_connection: Conectado com sucesso. notice_successful_connection: Conectado com sucesso.
notice_file_not_found: A página que você está tentando acessar não existe ou foi excluída. notice_file_not_found: A pagina que voce esta tentando acessar nao existe ou foi excluida.
notice_locking_conflict: Os dados foram atualizados por outro usuário. notice_locking_conflict: Os dados foram atualizados por um outro usuario.
notice_not_authorized: Você não está autorizado a acessar esta página. notice_not_authorized: You are not authorized to access this page.
notice_email_sent: Um email foi enviado para %s notice_email_sent: An email was sent to %s
notice_email_error: Um erro ocorreu ao enviar o email (%s) notice_email_error: An error occurred while sending mail (%s)
notice_feeds_access_key_reseted: Sua chave RSS foi reconfigurada. notice_feeds_access_key_reseted: Your RSS access key was reseted.
error_scm_not_found: "A entrada e/ou a revisão não existe no repositório." error_scm_not_found: "A entrada e/ou a revisao nao existem no repositorio."
error_scm_command_failed: "Ocorreu um erro ao tentar acessar o repositório: %s" error_scm_command_failed: "An error occurred when trying to access the repository: %s"
mail_subject_lost_password: Sua senha do %s. mail_subject_lost_password: Sua senha do %s.
mail_body_lost_password: 'Para mudar sua senha, clique no link abaixo:' mail_body_lost_password: 'Para mudar sua senha, clique no link abaixo:'
mail_subject_register: Ativação de conta do %s. mail_subject_register: Ativacao de conta do %s.
mail_body_register: 'Para ativar sua conta, clique no link abaixo:' mail_body_register: 'Para ativar sua conta, clique no link abaixo:'
gui_validation_error: 1 erro gui_validation_error: 1 erro
gui_validation_error_plural: %d erros gui_validation_error_plural: %d erros
field_name: Nome field_name: Nome
field_description: Descrição field_description: Descricao
field_summary: Resumo field_summary: Sumario
field_is_required: Obrigatório field_is_required: Obrigatorio
field_firstname: Primeiro nome field_firstname: Primeiro nome
field_lastname: Último nome field_lastname: Ultimo nome
field_mail: Email field_mail: Email
field_filename: Arquivo field_filename: Arquivo
field_filesize: Tamanho field_filesize: Tamanho
field_downloads: Downloads field_downloads: Downloads
field_author: Autor field_author: Autor
field_created_on: Criado em field_created_on: Criado
field_updated_on: Alterado em field_updated_on: Alterado
field_field_format: Formato field_field_format: Formato
field_is_for_all: Para todos os projetos field_is_for_all: Para todos os projetos
field_possible_values: Possíveis valores field_possible_values: Possiveis valores
field_regexp: Expressão regular field_regexp: Expressao regular
field_min_length: Tamanho mínimo field_min_length: Tamanho minimo
field_max_length: Tamanho máximo field_max_length: Tamanho maximo
field_value: Valor field_value: Valor
field_category: Categoria field_category: Categoria
field_title: Título field_title: Titulo
field_project: Projeto field_project: Projeto
field_issue: Ticket field_issue: Tarefa
field_status: Status field_status: Status
field_notes: Notas field_notes: Notas
field_is_closed: Ticket fechado field_is_closed: Tarefa fechada
field_is_default: Status padrão field_is_default: Status padrao
field_tracker: Tipo field_tracker: Tipo
field_subject: Título field_subject: Titulo
field_due_date: Data prevista field_due_date: Data devida
field_assigned_to: Atribuído para field_assigned_to: Atribuido para
field_priority: Prioridade field_priority: Prioridade
field_fixed_version: Versão field_fixed_version: Target version
field_user: Usuário field_user: Usuario
field_role: Papel field_role: Regra
field_homepage: Página inicial field_homepage: Pagina inicial
field_is_public: Público field_is_public: Publico
field_parent: Sub-projeto de field_parent: Sub-projeto de
field_is_in_chlog: Tarefas exibidas no registro de alterações field_is_in_chlog: Tarefas mostradas no changelog
field_is_in_roadmap: Tarefas exibidas no planejamento field_is_in_roadmap: Tarefas mostradas no roadmap
field_login: Login field_login: Login
field_mail_notification: Notificações por email field_mail_notification: Notificacoes por email
field_admin: Administrador field_admin: Administrador
field_last_login_on: Última conexão field_last_login_on: Ultima conexao
field_language: Idioma field_language: Lingua
field_effective_date: Data field_effective_date: Data
field_password: Senha field_password: Senha
field_new_password: Nova senha field_new_password: Nova senha
field_password_confirmation: Confirmação field_password_confirmation: Confirmacao
field_version: Versão field_version: Versao
field_type: Tipo field_type: Tipo
field_host: Servidor field_host: Servidor
field_port: Porta field_port: Porta
@@ -142,116 +142,116 @@ field_account: Conta
field_base_dn: Base DN field_base_dn: Base DN
field_attr_login: Atributo login field_attr_login: Atributo login
field_attr_firstname: Atributo primeiro nome field_attr_firstname: Atributo primeiro nome
field_attr_lastname: Atributo último nome field_attr_lastname: Atributo ultimo nome
field_attr_mail: Atributo email field_attr_mail: Atributo email
field_onthefly: Criação automática de usuário field_onthefly: Criacao de usuario on-the-fly
field_start_date: Início field_start_date: Inicio
field_done_ratio: %% Terminado field_done_ratio: %% Terminado
field_auth_source: Modo de autenticação field_auth_source: Modo de autenticacao
field_hide_mail: Ocultar meu email field_hide_mail: Esconder meu email
field_comments: Comentário field_comments: Comentario
field_url: URL field_url: URL
field_start_page: Página inicial field_start_page: Pagina inicial
field_subproject: Sub-projeto field_subproject: Sub-projeto
field_hours: Horas field_hours: Horas
field_activity: Atividade field_activity: Atividade
field_spent_on: Data field_spent_on: Data
field_identifier: Identificador field_identifier: Identificador
field_is_filter: É um filtro field_is_filter: Used as a filter
field_issue_to_id: Ticket relacionado field_issue_to_id: Related issue
field_delay: Espera field_delay: Delay
field_assignable: Tickets podem ser atribuídos para este papel field_assignable: Issues can be assigned to this role
field_redirect_existing_links: Redirecionar links existentes field_redirect_existing_links: Redirect existing links
field_estimated_hours: Tempo estimado field_estimated_hours: Estimated time
field_default_value: Padrão field_default_value: Padrao
setting_app_title: Título da aplicação setting_app_title: Titulo da aplicacao
setting_app_subtitle: Sub-título da aplicação setting_app_subtitle: Sub-titulo da aplicacao
setting_welcome_text: Texto de boas-vindas setting_welcome_text: Texto de boa-vinda
setting_default_language: Idioma padrão setting_default_language: Lingua padrao
setting_login_required: Autenticação obrigatória setting_login_required: Autenticacao obrigatoria
setting_self_registration: Permitido Auto-registro setting_self_registration: Registro de si mesmo permitido
setting_attachment_max_size: Tamanho máximo do anexo setting_attachment_max_size: Tamanho maximo do anexo
setting_issues_export_limit: Limite de exportação das tarefas setting_issues_export_limit: Limite de exportacao das tarefas
setting_mail_from: Email enviado de setting_mail_from: Email enviado de
setting_host_name: Servidor setting_host_name: Servidor
setting_text_formatting: Formato do texto setting_text_formatting: Formato do texto
setting_wiki_compression: Compactação de histórico do Wiki setting_wiki_compression: Compactacao do historio do Wiki
setting_feeds_limit: Limite do Feed setting_feeds_limit: Limite do Feed
setting_autofetch_changesets: Auto-obter commits setting_autofetch_changesets: Autofetch commits
setting_sys_api_enabled: Ativa WS para gerenciamento do repositório setting_sys_api_enabled: Ativa WS para gerenciamento do repositorio
setting_commit_ref_keywords: Palavras de referência setting_commit_ref_keywords: Referencing keywords
setting_commit_fix_keywords: Palavras de fechamento setting_commit_fix_keywords: Fixing keywords
setting_autologin: Auto-login setting_autologin: Autologin
setting_date_format: Formato da data setting_date_format: Date format
setting_cross_project_issue_relations: Permitir relacionar tickets entre projetos setting_cross_project_issue_relations: Allow cross-project issue relations
label_user: Usuário label_user: Usuario
label_user_plural: Usuários label_user_plural: Usuarios
label_user_new: Novo usuário label_user_new: Novo usuario
label_project: Projeto label_project: Projeto
label_project_new: Novo projeto label_project_new: Novo projeto
label_project_plural: Projetos label_project_plural: Projetos
label_project_all: Todos os projetos label_project_all: All Projects
label_project_latest: Últimos projetos label_project_latest: Ultimos projetos
label_issue: Ticket label_issue: Tarefa
label_issue_new: Novo ticket label_issue_new: Nova tarefa
label_issue_plural: Tickets label_issue_plural: Tarefas
label_issue_view_all: Ver todos os tickets label_issue_view_all: Ver todas as tarefas
label_document: Documento label_document: Documento
label_document_new: Novo documento label_document_new: Novo documento
label_document_plural: Documentos label_document_plural: Documentos
label_role: Papel label_role: Regra
label_role_plural: Papéis label_role_plural: Regras
label_role_new: Novo papel label_role_new: Nova regra
label_role_and_permissions: Papéis e permissões label_role_and_permissions: Regras e permissoes
label_member: Membro label_member: Membro
label_member_new: Novo membro label_member_new: Novo membro
label_member_plural: Membros label_member_plural: Membros
label_tracker: Tipo de ticket label_tracker: Tipo
label_tracker_plural: Tipos de ticket label_tracker_plural: Tipos
label_tracker_new: Novo tipo label_tracker_new: Novo tipo
label_workflow: Workflow label_workflow: Workflow
label_issue_status: Status do ticket label_issue_status: Status da tarefa
label_issue_status_plural: Status dos tickets label_issue_status_plural: Status das tarefas
label_issue_status_new: Novo status label_issue_status_new: Novo status
label_issue_category: Categoria de ticket label_issue_category: Categoria de tarefa
label_issue_category_plural: Categorias de tickets label_issue_category_plural: Categorias de tarefa
label_issue_category_new: Nova categoria label_issue_category_new: Nova categoria
label_custom_field: Campo personalizado label_custom_field: Campo personalizado
label_custom_field_plural: Campos personalizados label_custom_field_plural: Campos personalizado
label_custom_field_new: Novo campo personalizado label_custom_field_new: Novo campo personalizado
label_enumerations: 'Tipos & Categorias' label_enumerations: Enumeracao
label_enumeration_new: Novo label_enumeration_new: Novo valor
label_information: Informação label_information: Informacao
label_information_plural: Informações label_information_plural: Informacoes
label_please_login: Efetue o login label_please_login: Efetue login
label_register: Registre-se label_register: Registre-se
label_password_lost: Perdi minha senha label_password_lost: Perdi a senha
label_home: Página inicial label_home: Pagina inicial
label_my_page: Minha página label_my_page: Minha pagina
label_my_account: Minha conta label_my_account: Minha conta
label_my_projects: Meus projetos label_my_projects: Meus projetos
label_administration: Administração label_administration: Administracao
label_login: Entrar label_login: Login
label_logout: Sair label_logout: Logout
label_help: Ajuda label_help: Ajuda
label_reported_issues: Tickets reportados label_reported_issues: Tarefas reportadas
label_assigned_to_me_issues: Meus tickets label_assigned_to_me_issues: Tarefas atribuidas a mim
label_last_login: Última conexao label_last_login: Utima conexao
label_last_updates: Última alteração label_last_updates: Ultima alteracao
label_last_updates_plural: %d Últimas alterações label_last_updates_plural: %d Ultimas alteracoes
label_registered_on: Registrado em label_registered_on: Registrado em
label_activity: Atividade label_activity: Atividade
label_new: Novo label_new: Novo
label_logged_as: "Acessando como:" label_logged_as: Logado como
label_environment: Ambiente label_environment: Ambiente
label_authentication: Autenticação label_authentication: Autenticacao
label_auth_source: Modo de autenticação label_auth_source: Modo de autenticacao
label_auth_source_new: Novo modo de autenticação label_auth_source_new: Novo modo de autenticacao
label_auth_source_plural: Modos de autenticação label_auth_source_plural: Modos de autenticacao
label_subproject_plural: Sub-projetos label_subproject_plural: Sub-projetos
label_min_max_length: Tamanho mín-máx label_min_max_length: Tamanho min-max
label_list: Lista label_list: Lista
label_date: Data label_date: Data
label_integer: Inteiro label_integer: Inteiro
@@ -262,169 +262,169 @@ label_attribute: Atributo
label_attribute_plural: Atributos label_attribute_plural: Atributos
label_download: %d Download label_download: %d Download
label_download_plural: %d Downloads label_download_plural: %d Downloads
label_no_data: Nenhuma informação disponível label_no_data: Sem dados para mostrar
label_change_status: Alterar status label_change_status: Mudar status
label_history: Histórico label_history: Historico
label_attachment: Arquivo label_attachment: Arquivo
label_attachment_new: Novo arquivo label_attachment_new: Novo arquivo
label_attachment_delete: Apagar arquivo label_attachment_delete: Apagar arquivo
label_attachment_plural: Arquivos label_attachment_plural: Arquivos
label_report: Relatório label_report: Relatorio
label_report_plural: Relatório label_report_plural: Relatorio
label_news: Notícia label_news: Noticias
label_news_new: Adicionar notícias label_news_new: Adicionar noticias
label_news_plural: Notícias label_news_plural: Noticias
label_news_latest: Últimas notícias label_news_latest: Ultimas noticias
label_news_view_all: Ver todas as notícias label_news_view_all: Ver todas as noticias
label_change_log: Registro de alterações label_change_log: Change log
label_settings: Configurações label_settings: Ajustes
label_overview: Visão geral label_overview: Visao geral
label_version: Versão label_version: Versao
label_version_new: Nova versão label_version_new: Nova versao
label_version_plural: Versões label_version_plural: Versoes
label_confirmation: Confirmação label_confirmation: Confirmacao
label_export_to: Exportar para label_export_to: Exportar para
label_read: Ler... label_read: Ler...
label_public_projects: Projetos públicos label_public_projects: Projetos publicos
label_open_issues: Aberto label_open_issues: Aberto
label_open_issues_plural: Abertos label_open_issues_plural: Abertos
label_closed_issues: Fechado label_closed_issues: Fechado
label_closed_issues_plural: Fechados label_closed_issues_plural: Fechados
label_total: Total label_total: Total
label_permissions: Permissões label_permissions: Permissoes
label_current_status: Status atual label_current_status: Status atual
label_new_statuses_allowed: Novo status permitido label_new_statuses_allowed: Novo status permitido
label_all: todos label_all: todos
label_none: nenhum label_none: nenhum
label_next: Próximo label_next: Proximo
label_previous: Anterior label_previous: Anterior
label_used_by: Usado por label_used_by: Usado por
label_details: Detalhes label_details: Detalhes
label_add_note: Adicionar nota label_add_note: Adicionar nota
label_per_page: Por página label_per_page: Por pagina
label_calendar: Calendário label_calendar: Calendario
label_months_from: meses a partir de label_months_from: Meses de
label_gantt: Gantt label_gantt: Gantt
label_internal: Interno label_internal: Interno
label_last_changes: últimas %d alteraçoes label_last_changes: utlimas %d mudancas
label_change_view_all: Mostrar todas as alteraçoes label_change_view_all: Mostrar todas as mudancas
label_personalize_page: Personalizar esta página label_personalize_page: Personalizar esta pagina
label_comment: Comentário label_comment: Comentario
label_comment_plural: Comentários label_comment_plural: Comentarios
label_comment_add: Adicionar comentário label_comment_add: Adicionar comentario
label_comment_added: Comentário adicionado label_comment_added: Comentario adicionado
label_comment_delete: Apagar comentário label_comment_delete: Apagar comentario
label_query: Consulta personalizada label_query: Consulta personalizada
label_query_plural: Consultas personalizadas label_query_plural: Consultas personalizadas
label_query_new: Nova consulta label_query_new: Nova consulta
label_filter_add: Adicionar filtro label_filter_add: Adicionar filtro
label_filter_plural: Filtros label_filter_plural: Filtros
label_equals: é label_equals: e
label_not_equals: não é label_not_equals: nao e
label_in_less_than: é maior que label_in_less_than: e maior que
label_in_more_than: é menor que label_in_more_than: e menor que
label_in: em label_in: em
label_today: hoje label_today: hoje
label_this_week: esta semana label_this_week: this week
label_less_than_ago: faz menos de label_less_than_ago: faz menos de
label_more_than_ago: faz mais de label_more_than_ago: faz mais de
label_ago: dias atrás label_ago: dias atras
label_contains: contém label_contains: contem
label_not_contains: não contem label_not_contains: nao contem
label_day_plural: dias label_day_plural: dias
label_repository: Repositório label_repository: Repository
label_browse: Procurar label_browse: Browse
label_modification: %d alteração label_modification: %d change
label_modification_plural: %d alterações label_modification_plural: %d changes
label_revision: Revisão label_revision: Revision
label_revision_plural: Revisões label_revision_plural: Revisions
label_added: adicionado label_added: added
label_modified: modificado label_modified: modified
label_deleted: excluído label_deleted: deleted
label_latest_revision: Última revisão label_latest_revision: Latest revision
label_latest_revision_plural: Últimas revisões label_latest_revision_plural: Latest revisions
label_view_revisions: Visualizar revisões label_view_revisions: View revisions
label_max_size: Tamanho máximo label_max_size: Maximum size
label_on: 'em' label_on: 'em'
label_sort_highest: Mover para o início label_sort_highest: Mover para o inicio
label_sort_higher: Mover para cima label_sort_higher: Mover para cima
label_sort_lower: Mover para baixo label_sort_lower: Mover para baixo
label_sort_lowest: Mover para o fim label_sort_lowest: Mover para o fim
label_roadmap: Planejamento label_roadmap: Roadmap
label_roadmap_due_in: Previsão em label_roadmap_due_in: Due in
label_roadmap_overdue: %s atrasado label_roadmap_overdue: %s late
label_roadmap_no_issues: Sem tickets para esta versão label_roadmap_no_issues: Sem tarefas para essa versao
label_search: Busca label_search: Busca
label_result_plural: Resultados label_result_plural: Resultados
label_all_words: Todas as palavras label_all_words: Todas as palavras
label_wiki: Wiki label_wiki: Wiki
label_wiki_edit: Editar Wiki label_wiki_edit: Wiki edit
label_wiki_edit_plural: Edições Wiki label_wiki_edit_plural: Wiki edits
label_wiki_page: Página Wiki label_wiki_page: Wiki page
label_wiki_page_plural: Páginas Wiki label_wiki_page_plural: Wiki pages
label_index_by_title: Índice por título label_index_by_title: Index by title
label_index_by_date: Índice por data label_index_by_date: Index by date
label_current_version: Versão atual label_current_version: Versao atual
label_preview: Pré-visualizar label_preview: Previa
label_feed_plural: Feeds label_feed_plural: Feeds
label_changes_details: Detalhes de todas as alterações label_changes_details: Detalhes de todas as mudancas
label_issue_tracking: Tickets label_issue_tracking: Tarefas
label_spent_time: Tempo gasto label_spent_time: Tempo gasto
label_f_hour: %.2f hora label_f_hour: %.2f hora
label_f_hour_plural: %.2f horas label_f_hour_plural: %.2f horas
label_time_tracking: Tempo trabalhado label_time_tracking: Tempo trabalhado
label_change_plural: Mudanças label_change_plural: Mudancas
label_statistics: Estatísticas label_statistics: Estatisticas
label_commits_per_month: Commits por mês label_commits_per_month: Commits por mes
label_commits_per_author: Commits por autor label_commits_per_author: Commits por autor
label_view_diff: Ver diferenças label_view_diff: Ver diferencas
label_diff_inline: inline label_diff_inline: inline
label_diff_side_by_side: lado a lado label_diff_side_by_side: side by side
label_options: Opções label_options: Opcoes
label_copy_workflow_from: Copiar workflow de label_copy_workflow_from: Copiar workflow de
label_permissions_report: Relatório de permissões label_permissions_report: Relatorio de permissoes
label_watched_issues: Tickes acompanhados label_watched_issues: Watched issues
label_related_issues: Tickets relacionados label_related_issues: Related issues
label_applied_status: Status aplicado label_applied_status: Applied status
label_loading: Carregando... label_loading: Loading...
label_relation_new: Nova relação label_relation_new: New relation
label_relation_delete: Excluir relação label_relation_delete: Delete relation
label_relates_to: relacionado a label_relates_to: related to
label_duplicates: duplicado de label_duplicates: duplicates
label_blocks: bloqueia label_blocks: blocks
label_blocked_by: bloqueado por label_blocked_by: blocked by
label_precedes: precede label_precedes: precedes
label_follows: segue label_follows: follows
label_end_to_start: fim para o início label_end_to_start: end to start
label_end_to_end: fim para fim label_end_to_end: end to end
label_start_to_start: início para início label_start_to_start: start to start
label_start_to_end: início para fim label_start_to_end: start to end
label_stay_logged_in: Permanecer logado label_stay_logged_in: Stay logged in
label_disabled: desabilitado label_disabled: disabled
label_show_completed_versions: Exibir versões completas label_show_completed_versions: Show completed versions
label_me: eu label_me: me
label_board: Fórum label_board: Forum
label_board_new: Novo fórum label_board_new: New forum
label_board_plural: Fóruns label_board_plural: Forums
label_topic_plural: Tópicos label_topic_plural: Topics
label_message_plural: Mensagens label_message_plural: Messages
label_message_last: Última mensagem label_message_last: Last message
label_message_new: Nova mensagem label_message_new: New message
label_reply_plural: Respostas label_reply_plural: Replies
label_send_information: Enviar informação de conta para o usuário label_send_information: Send account information to the user
label_year: Ano label_year: Year
label_month: Mês label_month: Month
label_week: Semana label_week: Week
label_date_from: De label_date_from: From
label_date_to: Para label_date_to: To
label_language_based: Com base no idioma label_language_based: Language based
label_sort_by: Ordenar por %s label_sort_by: Sort by %s
label_send_test_email: Enviar um email de teste label_send_test_email: Send a test email
label_feeds_access_key_created_on: chave de acesso RSS criada %s atrás label_feeds_access_key_created_on: RSS access key created %s ago
label_module_plural: Módulos label_module_plural: Modules
label_added_time_by: Adicionado por %s %s atrás label_added_time_by: Added by %s %s ago
label_updated_time: Atualizado %s atrás label_updated_time: Updated %s ago
label_jump_to_a_project: Ir para o projeto... label_jump_to_a_project: Jump to a project...
button_login: Login button_login: Login
button_submit: Enviar button_submit: Enviar
@@ -436,7 +436,7 @@ button_create: Criar
button_test: Testar button_test: Testar
button_edit: Editar button_edit: Editar
button_add: Adicionar button_add: Adicionar
button_change: Alterar button_change: Mudar
button_apply: Aplicar button_apply: Aplicar
button_clear: Limpar button_clear: Limpar
button_lock: Bloquear button_lock: Bloquear
@@ -450,59 +450,59 @@ button_cancel: Cancelar
button_activate: Ativar button_activate: Ativar
button_sort: Ordenar button_sort: Ordenar
button_log_time: Tempo de trabalho button_log_time: Tempo de trabalho
button_rollback: Voltar para esta versão button_rollback: Voltar para esta versao
button_watch: Acompanhar button_watch: Watch
button_unwatch: Não Acompanhar button_unwatch: Unwatch
button_reply: Responder button_reply: Reply
button_archive: Arquivar button_archive: Archive
button_unarchive: Desarquivar button_unarchive: Unarchive
button_reset: Redefinir button_reset: Reset
button_rename: Renomear button_rename: Rename
status_active: ativo status_active: ativo
status_registered: registrado status_registered: registrado
status_locked: bloqueado status_locked: bloqueado
text_select_mail_notifications: Selecionar ações para ser enviado uma notificação por email text_select_mail_notifications: Selecionar acoes para ser enviado uma notificacao por email
text_regexp_info: ex. ^[A-Z0-9]+$ text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 siginifica sem restrição text_min_max_length_info: 0 siginifica sem restricao
text_project_destroy_confirmation: Você tem certeza que deseja excluir este projeto e todos os dados relacionados? text_project_destroy_confirmation: Voce tem certeza que deseja deletar este projeto e todas os dados relacionados?
text_workflow_edit: Selecione uma regra e um tipo de tarefa para editar o workflow text_workflow_edit: Selecione uma regra e um tipo de tarefa para editar o workflow
text_are_you_sure: Você tem certeza? text_are_you_sure: Voce tem certeza ?
text_journal_changed: alterado de %s para %s text_journal_changed: alterado de %s para %s
text_journal_set_to: setar para %s text_journal_set_to: setar para %s
text_journal_deleted: apagado text_journal_deleted: apagado
text_tip_task_begin_day: tarefa inicia neste dia text_tip_task_begin_day: tarefa comeca neste dia
text_tip_task_end_day: tarefa termina neste dia text_tip_task_end_day: tarefa termina neste dia
text_tip_task_begin_end_day: tarefa inicia e termina neste dia text_tip_task_begin_end_day: tarefa comeca e termina neste dia
text_project_identifier_info: 'Letras minúsculas (a-z), números e traços permitidos.<br />Uma vez salvo, o identificador não pode ser alterado.' text_project_identifier_info: 'Letras minusculas (a-z), numeros e tracos permitido.<br />Uma vez salvo, o identificador nao pode ser mudado.'
text_caracters_maximum: máximo %d caracteres text_caracters_maximum: %d maximo de caracteres
text_length_between: Tamanho entre %d e %d caracteres. text_length_between: Tamanho entre %d e %d caracteres.
text_tracker_no_workflow: Sem workflow definido para este tipo. text_tracker_no_workflow: Sem workflow definido para este tipo.
text_unallowed_characters: Caracteres não permitidos text_unallowed_characters: Unallowed characters
text_comma_separated: Múltiplos valores são permitidos (separados por vírgula). text_comma_separated: Multiple values allowed (comma separated).
text_issues_ref_in_commit_messages: Referenciando e fixando tickets nas mensagens de commit text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
text_issue_added: Tarefa %s foi incluída (por %s). text_issue_added: Tarefa %s foi incluída (by %s).
text_issue_updated: Tarefa %s foi alterada (por %s). text_issue_updated: Tarefa %s foi alterada (by %s).
text_wiki_destroy_confirmation: Você tem certeza que deseja excluir este wiki e todo o seu conteúdo? text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
text_issue_category_destroy_question: Alguns tickets (%d) estão atribuídos a esta categoria. O que você deseja fazer? text_issue_category_destroy_question: Some issues (%d) are assigned to this category. What do you want to do ?
text_issue_category_destroy_assignments: Remover atribuições da categoria text_issue_category_destroy_assignments: Remove category assignments
text_issue_category_reassign_to: Redefinir tickets para esta categoria text_issue_category_reassign_to: Reassing issues to this category
default_role_manager: Gerente default_role_manager: Analista de Negocio ou Gerente de Projeto
default_role_developper: Desenvolvedor default_role_developper: Desenvolvedor
default_role_reporter: Informante default_role_reporter: Analista de Suporte
default_tracker_bug: Problema default_tracker_bug: Bug
default_tracker_feature: Implementação default_tracker_feature: Implementacao
default_tracker_support: Suporte default_tracker_support: Suporte
default_issue_status_new: Novo default_issue_status_new: Novo
default_issue_status_assigned: Atribuído default_issue_status_assigned: Atribuido
default_issue_status_resolved: Resolvido default_issue_status_resolved: Resolvido
default_issue_status_feedback: Feedback default_issue_status_feedback: Feedback
default_issue_status_closed: Fechado default_issue_status_closed: Fechado
default_issue_status_rejected: Rejeitado default_issue_status_rejected: Rejeitado
default_doc_category_user: Documentação do usuário default_doc_category_user: Documentacao do usuario
default_doc_category_tech: Documentação técnica default_doc_category_tech: Documentacao do tecnica
default_priority_low: Baixo default_priority_low: Baixo
default_priority_normal: Normal default_priority_normal: Normal
default_priority_high: Alto default_priority_high: Alto
@@ -514,107 +514,106 @@ default_activity_development: Desenvolvimento
enumeration_issue_priorities: Prioridade das tarefas enumeration_issue_priorities: Prioridade das tarefas
enumeration_doc_categories: Categorias de documento enumeration_doc_categories: Categorias de documento
enumeration_activities: Atividades (time tracking) enumeration_activities: Atividades (time tracking)
label_file_plural: Arquivos label_file_plural: Files
label_changeset_plural: Changesets label_changeset_plural: Changesets
field_column_names: Colunas field_column_names: Columns
label_default_columns: Colunas padrão label_default_columns: Default columns
setting_issue_list_default_columns: Colunas padrão visíveis na lista de tickets setting_issue_list_default_columns: Default columns displayed on the issue list
setting_repositories_encodings: Codificação dos repositórios setting_repositories_encodings: Repositories encodings
notice_no_issue_selected: "Nenhum ticket está selecionado! Por favor, marque os tickets que você deseja alterar." notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
label_bulk_edit_selected_issues: Edição em massa dos tickets selecionados. label_bulk_edit_selected_issues: Bulk edit selected issues
label_no_change_option: (Sem alteração) label_no_change_option: (No change)
notice_failed_to_save_issues: "Problema ao salvar %d ticket(s) no %d selecionado: %s." notice_failed_to_save_issues: "Failed to save %d issue(s) on %d selected: %s."
label_theme: Tema label_theme: Theme
label_default: Padrão label_default: Default
label_search_titles_only: Pesquisar somente títulos label_search_titles_only: Search titles only
label_nobody: ninguém label_nobody: nobody
button_change_password: Alterar senha button_change_password: Change password
text_user_mail_option: "Para projetos não selecionados, você somente receberá notificações sobre o que você acompanha ou está envolvido (ex. tickets que você é autor ou está atribuído)" 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)."
label_user_mail_option_selected: "Para qualquer evento somente no(s) projeto(s) selecionado(s)..." label_user_mail_option_selected: "For any event on the selected projects only..."
label_user_mail_option_all: "Para qualquer evento em todos os meus projetos" label_user_mail_option_all: "For any event on all my projects"
label_user_mail_option_none: "Somente eventos que eu acompanho ou estou envolvido" label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Rodapé dos emails setting_emails_footer: Emails footer
label_float: Flutuante label_float: Float
button_copy: Copiar button_copy: Copy
mail_body_account_information_external: Você pode usar sua conta "%s" para entrar. mail_body_account_information_external: You can use your "%s" account to log in.
mail_body_account_information: Informações de sua conta mail_body_account_information: Your account information
setting_protocol: Protocolo setting_protocol: Protocol
label_user_mail_no_self_notified: "Eu não desejo ser notificado de minhas próprias modificações" label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
setting_time_format: Formato de data setting_time_format: Time format
label_registration_activation_by_email: ativação de conta por email label_registration_activation_by_email: account activation by email
mail_subject_account_activation_request: %s requisição de ativação de conta mail_subject_account_activation_request: %s account activation request
mail_body_account_activation_request: 'Um novo usuário (%s) se registrou. A conta está aguardando sua aprovação:' mail_body_account_activation_request: 'A new user (%s) has registered. His account his pending your approval:'
label_registration_automatic_activation: ativação automática de conta label_registration_automatic_activation: automatic account activation
label_registration_manual_activation: ativação manual de conta label_registration_manual_activation: manual account activation
notice_account_pending: "Sua conta foi criada e está aguardando aprovação do administrador." notice_account_pending: "Your account was created and is now pending administrator approval."
field_time_zone: Fuso-horário field_time_zone: Time zone
text_caracters_minimum: Precisa ter ao menos %d caracteres. text_caracters_minimum: Must be at least %d characters long.
setting_bcc_recipients: Destinatários com cópia oculta (cco) setting_bcc_recipients: Blind carbon copy recipients (bcc)
button_annotate: Anotar button_annotate: Annotate
label_issues_by: Tickets por %s label_issues_by: Issues by %s
field_searchable: Pesquisável field_searchable: Searchable
label_display_per_page: 'Por página: %s' label_display_per_page: 'Per page: %s'
setting_per_page_options: Opções de itens por página setting_per_page_options: Objects per page options
notice_default_data_loaded: Configuração padrão carregada com sucesso.
text_load_default_configuration: Carregar a configuração padrão
text_no_configuration_data: "Os Papéis, tipos de tickets, status de tickets e workflows não foram configurados ainda.\nÉ altamente recomendado carregar as configurações padrão. Você poderá modificar estas configurações assim que carregadas."
error_can_t_load_default_data: "Configuração padrão não pôde ser carregada: %s"
button_update: Atualizar
label_change_properties: Alterar propriedades
label_general: Geral
label_repository_plural: Repositórios
label_associated_revisions: Revisões associadas
setting_user_format: Formato de visualização dos usuários
text_status_changed_by_changeset: Aplicado no changeset %s.
label_more: Mais
text_issues_destroy_confirmation: 'Você tem certeza que deseja excluir o(s) ticket(s) selecionado(s)?'
label_scm: SCM
text_select_project_modules: 'Selecione módulos para habilitar para este projeto:'
label_issue_added: Ticket adicionado
label_issue_updated: Ticket atualizado
label_document_added: Documento adicionado
label_message_posted: Mensagem enviada
label_file_added: Arquivo adicionado
label_news_added: Notícia adicionada
project_module_boards: Fóruns
project_module_issue_tracking: Gerenciamento de Tickets
project_module_wiki: Wiki
project_module_files: Arquivos
project_module_documents: Documentos
project_module_repository: Repositório
project_module_news: Notícias
project_module_time_tracking: Gerenciamento de tempo
text_file_repository_writable: Repositório de arquivos gravável
text_default_administrator_account_changed: Conta de administrador padrão modificada
text_rmagick_available: RMagick disponível (opcional)
button_configure: Configuração
label_plugins: Plugins
label_ldap_authentication: autenticação LDAP
label_downloads_abbr: D/L
label_this_month: este mês
label_last_n_days: últimos %d dias
label_all_time: todo o tempo
label_this_year: este ano
label_date_range: Intervalo de datas
label_last_week: última semana
label_yesterday: ontem
label_last_month: último mês
label_add_another_file: Adicionar outro arquivo
label_optional_description: Descrição opcional
text_destroy_time_entries_question: %.02f horas foram reportadas neste ticket que você está excluindo. O que você deseja fazer?
error_issue_not_found_in_project: 'O ticket não foi encontrado ou não pertence a este projeto'
text_assign_time_entries_to_project: Atribuir horas reportadas para o projeto
text_destroy_time_entries: Excluir horas reportadas
text_reassign_time_entries: 'Redefinir horas reportadas para este ticket:'
setting_activity_days_default: Dias visualizados na atividade do projeto
label_chronological_order: Em ordem cronológica
field_comments_sorting: Visualizar comentários
label_reverse_chronological_order: Em order cronológica reversa
label_preferences: Preferências
setting_display_subprojects_issues: Visualizar tickets dos subprojetos nos projetos principais por padrão
label_overall_activity: Atividade geral
setting_default_projects_public: Novos projetos são públicos por padrão
error_scm_annotate: "Esta entrada não existe ou não pode ser anotada."
label_planning: Planejamento
text_subprojects_destroy_warning: 'Seu(s) subprojeto(s): %s também serão excluídos.'
label_age: Age label_age: Age
notice_default_data_loaded: Default configuration successfully loaded.
text_load_default_configuration: Load the default configuration
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."
error_can_t_load_default_data: "Default configuration could not be loaded: %s"
button_update: Update
label_change_properties: Change properties
label_general: General
label_repository_plural: Repositories
label_associated_revisions: Associated revisions
setting_user_format: Users display format
text_status_changed_by_changeset: Applied in changeset %s.
label_more: More
text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
label_scm: SCM
text_select_project_modules: 'Select modules to enable for this project:'
label_issue_added: Issue added
label_issue_updated: Issue updated
label_document_added: Document added
label_message_posted: Message added
label_file_added: File added
label_news_added: News added
project_module_boards: Boards
project_module_issue_tracking: Issue tracking
project_module_wiki: Wiki
project_module_files: Files
project_module_documents: Documents
project_module_repository: Repository
project_module_news: News
project_module_time_tracking: Time tracking
text_file_repository_writable: File repository writable
text_default_administrator_account_changed: Default administrator account changed
text_rmagick_available: RMagick available (optional)
button_configure: Configure
label_plugins: Plugins
label_ldap_authentication: LDAP authentication
label_downloads_abbr: D/L
label_this_month: this month
label_last_n_days: last %d days
label_all_time: all time
label_this_year: this year
label_date_range: Date range
label_last_week: last week
label_yesterday: yesterday
label_last_month: last month
label_add_another_file: Add another file
label_optional_description: Optional description
text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
text_assign_time_entries_to_project: Assign reported hours to the project
text_destroy_time_entries: Delete reported hours
text_reassign_time_entries: 'Reassign reported hours to this issue:'
setting_activity_days_default: Days displayed on project activity
label_chronological_order: In chronological order
field_comments_sorting: Display comments
label_reverse_chronological_order: In reverse chronological order
label_preferences: Preferences
setting_display_subprojects_issues: Display subprojects issues on main projects by default
label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning
-1
View File
@@ -617,4 +617,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-1
View File
@@ -617,4 +617,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
+3 -9
View File
@@ -332,7 +332,7 @@ label_internal: Внутренний
label_last_changes: менее %d изменений label_last_changes: менее %d изменений
label_change_view_all: Просмотреть все изменения label_change_view_all: Просмотреть все изменения
label_personalize_page: Персонализировать данную страницу label_personalize_page: Персонализировать данную страницу
label_comment: комментарий label_comment: Комментировать
label_comment_plural: Комментарии label_comment_plural: Комментарии
label_comment_add: Оставить комментарий label_comment_add: Оставить комментарий
label_comment_added: Добавленный комментарий label_comment_added: Добавленный комментарий
@@ -619,11 +619,5 @@ label_preferences: Предпочтения
setting_display_subprojects_issues: Отображение подпроектов по умолчанию setting_display_subprojects_issues: Отображение подпроектов по умолчанию
label_overall_activity: Сводная активность label_overall_activity: Сводная активность
setting_default_projects_public: Новые проекты являются публичными setting_default_projects_public: Новые проекты являются публичными
error_scm_annotate: "Данные отсутствуют или не могут быть подписаны." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Планирование label_planning: Planning
text_subprojects_destroy_warning: 'Подпроекты: %s также будут удалены.'
label_and_its_subprojects: %s и все подпроекты
mail_body_reminder: "%d назначенных на вас задач на следующие %d дней:"
mail_subject_reminder: "%d назначенных на вас задач в ближайшие дни"
text_user_wrote: '%s написал:'
label_duplicated_by: duplicated by
-1
View File
@@ -618,4 +618,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-1
View File
@@ -618,4 +618,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
-623
View File
@@ -1,623 +0,0 @@
_gloc_rule_default: '|n| n==1 ? "" : "_plural" '
actionview_datehelper_select_day_prefix:
actionview_datehelper_select_month_names: มกราคม,กุมภาพันธ์,มีนาคม,เมษายน,พฤษภาคม,มิถุนายน,กรกฎาคม,สิงหาคม,กันยายน,ตุลาคม,พฤศจิกายน,ธันวาคม
actionview_datehelper_select_month_names_abbr: ม.ค.,ก.พ.,มี.ค.,เม.ย.,พ.ค.,มิ.ย.,ก.ค.,ส.ค.,ก.ย.,ต.ค.,พ.ย.,ธ.ค.
actionview_datehelper_select_month_prefix:
actionview_datehelper_select_year_prefix:
actionview_datehelper_time_in_words_day: 1 วัน
actionview_datehelper_time_in_words_day_plural: %d วัน
actionview_datehelper_time_in_words_hour_about: ประมาณ 1 ชั่วโมง
actionview_datehelper_time_in_words_hour_about_plural: ประมาณ %d ชั่วโมง
actionview_datehelper_time_in_words_hour_about_single: ประมาณ 1 ชั่วโมง
actionview_datehelper_time_in_words_minute: 1 นาที
actionview_datehelper_time_in_words_minute_half: ครึ่งนาที
actionview_datehelper_time_in_words_minute_less_than: ไม่ถึงนาที
actionview_datehelper_time_in_words_minute_plural: %d นาที
actionview_datehelper_time_in_words_minute_single: 1 นาที
actionview_datehelper_time_in_words_second_less_than: ไม่ถึงวินาที
actionview_datehelper_time_in_words_second_less_than_plural: ไม่ถึง %d วินาที
actionview_instancetag_blank_option: กรุณาเลือก
activerecord_error_inclusion: ไม่อยู่ในรายการ
activerecord_error_exclusion: ถูกสงวนไว้
activerecord_error_invalid: ไม่ถูกต้อง
activerecord_error_confirmation: พิมพ์ไม่เหมือนเดิม
activerecord_error_accepted: ต้องยอมรับ
activerecord_error_empty: ต้องเติม
activerecord_error_blank: ต้องเติม
activerecord_error_too_long: ยาวเกินไป
activerecord_error_too_short: สั้นเกินไป
activerecord_error_wrong_length: ความยาวไม่ถูกต้อง
activerecord_error_taken: ถูกใช้ไปแล้ว
activerecord_error_not_a_number: ไม่ใช่ตัวเลข
activerecord_error_not_a_date: ไม่ใช่วันที่ ที่ถูกต้อง
activerecord_error_greater_than_start_date: ต้องมากกว่าวันเริ่ม
activerecord_error_not_same_project: ไม่ได้อยู่ในโครงการเดียวกัน
activerecord_error_circular_dependency: ความสัมพันธ์อ้างอิงเป็นวงกลม
general_fmt_age: %d ปี
general_fmt_age_plural: %d ปี
general_fmt_date: %%d/%%B/%%Y
general_fmt_datetime: %%d/%%B/%%Y %%H:%%M
general_fmt_datetime_short: %%d %%b, %%H:%%M
general_fmt_time: %%H:%%M
general_text_No: 'ไม่'
general_text_Yes: 'ใช่'
general_text_no: 'ไม่'
general_text_yes: 'ใช่'
general_lang_name: 'Thai (ไทย)'
general_csv_separator: ','
general_csv_encoding: Windows-874
general_pdf_encoding: cp874
general_day_names: จันทร์,อังคาร,พุธ,พฤหัสบดี,ศุกร์,เสาร์,อาทิตย์
general_first_day_of_week: '1'
notice_account_updated: บัญชีได้ถูกปรับปรุงแล้ว.
notice_account_invalid_creditentials: ชื้ผู้ใช้หรือรหัสผ่านไม่ถูกต้อง
notice_account_password_updated: รหัสได้ถูกปรับปรุงแล้ว.
notice_account_wrong_password: รหัสผ่านไม่ถูกต้อง
notice_account_register_done: บัญชีถูกสร้างแล้ว. กรุณาเช็คเมล์ แล้วคลิ๊กที่ลิงค์ในอีเมล์เพื่อเปิดใช้บัญชี
notice_account_unknown_email: ไม่มีผู้ใช้ที่ใช้อีเมล์นี้.
notice_can_t_change_password: บัญชีนี้ใช้การยืนยันตัวตนจากแหล่งภายนอก. ไม่สามารถปลี่ยนรหัสผ่านได้.
notice_account_lost_email_sent: เราได้ส่งอีเมล์พร้อมวิธีการสร้างรหัีสผ่านใหม่ให้คุณแล้ว กรุณาเช็คเมล์.
notice_account_activated: บัญชีของคุณได้เปิดใช้แล้ว. ตอนนี้คุณสามารถเข้าสู่ระบบได้แล้ว.
notice_successful_create: สร้างเสร็จแล้ว.
notice_successful_update: ปรับปรุงเสร็จแล้ว.
notice_successful_delete: ลบเสร็จแล้ว.
notice_successful_connection: ติดต่อสำเร็จแล้ว.
notice_file_not_found: หน้าที่คุณต้องการดูไม่มีอยู่จริง หรือถูกลบไปแล้ว.
notice_locking_conflict: ข้อมูลถูกปรับปรุงโดยผู้ใช้คนอื่น.
notice_not_authorized: คุณไม่มีสิทธิเข้าถึงหน้านี้.
notice_email_sent: อีเมล์ได้ถูกส่งถึง %s
notice_email_error: เกิดความผิดพลาดขณะกำส่งอีเมล์ (%s)
notice_feeds_access_key_reseted: RSS access key ของคุณถูก reset แล้ว.
notice_failed_to_save_issues: "%d ปัญหาจาก %d ปัญหาที่ถูกเลือกไม่สามารถจัดเก็บ: %s."
notice_no_issue_selected: "ไม่มีปัญหาที่ถูกเลือก! กรุณาเลือกปัญหาที่คุณต้องการแก้ไข."
notice_account_pending: "บัญชีของคุณสร้างเสร็จแล้ว ขณะนี้รอการอนุมัติจากผู้บริหารจัดการ."
notice_default_data_loaded: ค่าเริ่มต้นโหลดเสร็จแล้ว.
error_can_t_load_default_data: "ค่าเริ่มต้นโหลดไม่สำเร็จ: %s"
error_scm_not_found: "ไม่พบรุ่นที่ต้องการในแหล่งเก็บต้นฉบับ."
error_scm_command_failed: "เกิดความผิดพลาดในการเข้าถึงแหล่งเก็บต้นฉบับ: %s"
error_scm_annotate: "entry ไม่มีอยู่จริง หรือไม่สามารถเขียนหมายเหตุประกอบ."
error_issue_not_found_in_project: 'ไม่พบปัญหานี้ หรือปัญหาไม่ได้อยู่ในโครงการนี้'
mail_subject_lost_password: รหัสผ่าน %s ของคุณ
mail_body_lost_password: 'คลิ๊กที่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:'
mail_subject_register: เปิดบัญชี %s ของคุณ
mail_body_register: 'คลิ๊กที่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:'
mail_body_account_information_external: คุณสามารถใช้บัญชี "%s" เพื่อเข้าสู่ระบบ.
mail_body_account_information: ข้อมูลบัญชีของคุณ
mail_subject_account_activation_request: กรุณาเปิดบัญชี %s
mail_body_account_activation_request: 'ผู้ใช้ใหม่ (%s) ได้ลงทะเบียน. บัญชีของเขากำลังรออนุมัติ:'
gui_validation_error: 1 ข้อผิดพลาด
gui_validation_error_plural: %d ข้อผิดพลาด
field_name: ชื่อ
field_description: รายละเอียด
field_summary: สรุปย่อ
field_is_required: ต้องใส่
field_firstname: ชื่อ
field_lastname: นามสกุล
field_mail: อีเมล์
field_filename: แฟ้ม
field_filesize: ขนาด
field_downloads: ดาวน์โหลด
field_author: ผู้แต่ง
field_created_on: สร้าง
field_updated_on: ปรับปรุง
field_field_format: รูปแบบ
field_is_for_all: สำหรับทุกโครงการ
field_possible_values: ค่าที่เป็นไปได้
field_regexp: Regular expression
field_min_length: สั้นสุด
field_max_length: ยาวสุด
field_value: ค่า
field_category: ประเภท
field_title: ชื่อเรื่อง
field_project: โครงการ
field_issue: ปัญหา
field_status: สถานะ
field_notes: บันทึก
field_is_closed: ปัญหาจบ
field_is_default: ค่าเริ่มต้น
field_tracker: การติดตาม
field_subject: เรื่อง
field_due_date: วันครบกำหนด
field_assigned_to: มอบหมายให้
field_priority: ความสำคัญ
field_fixed_version: รุ่น
field_user: ผู้ใช้
field_role: บทบาท
field_homepage: หน้าแรก
field_is_public: สาธารณะ
field_parent: โครงการย่อยของ
field_is_in_chlog: ปัญหาแสดงใน รายกาเปลี่ยนแปลง
field_is_in_roadmap: ปัญหาแสดงใน แผนงาน
field_login: ชื่อที่ใช้เข้าระบบ
field_mail_notification: การแจ้งเตือนทางอีเมล์
field_admin: ผู้บริหารจัดการ
field_last_login_on: เข้าระบบครั้งสุดท้าย
field_language: ภาษา
field_effective_date: วันที่
field_password: รหัสผ่าน
field_new_password: รหัสผ่านใหม่
field_password_confirmation: ยืนยันรหัสผ่าน
field_version: รุ่น
field_type: ชนิด
field_host: โฮสต์
field_port: พอร์ต
field_account: บัญชี
field_base_dn: Base DN
field_attr_login: เข้าระบบ attribute
field_attr_firstname: ชื่อ attribute
field_attr_lastname: นามสกุล attribute
field_attr_mail: อีเมล์ attribute
field_onthefly: สร้างผู้ใช้ทันที
field_start_date: เริ่ม
field_done_ratio: %% สำเร็จ
field_auth_source: วิธีการยืนยันตัวตน
field_hide_mail: ซ่อนอีเมล์ของฉัน
field_comments: ความเห็น
field_url: URL
field_start_page: หน้าเริ่มต้น
field_subproject: โครงการย่อย
field_hours: ชั่วโมง
field_activity: กิจกรรม
field_spent_on: วันที่
field_identifier: ชื่อเฉพาะ
field_is_filter: ใช้เป็นตัวกรอง
field_issue_to_id: ปัญหาที่เกี่ยวข้อง
field_delay: เลื่อน
field_assignable: ปัญหาสามารถมอบหมายให้คนที่ทำบทบาทนี้
field_redirect_existing_links: ย้ายจุดเชื่อมโยงนี้
field_estimated_hours: เวลาที่ใช้โดยประมาณ
field_column_names: สดมภ์
field_time_zone: ย่านเวลา
field_searchable: ค้นหาได้
field_default_value: ค่าเริ่มต้น
field_comments_sorting: แสดงความเห็น
setting_app_title: ชื่อโปรแกรม
setting_app_subtitle: ชื่อโปรแกรมรอง
setting_welcome_text: ข้อความต้อนรับ
setting_default_language: ภาษาเริ่มต้น
setting_login_required: ต้องป้อนผู้ใช้-รหัสผ่าน
setting_self_registration: ลงทะเบียนด้วยตนเอง
setting_attachment_max_size: ขนาดแฟ้มแนบสูงสุด
setting_issues_export_limit: การส่งออกปัญหาสูงสุด
setting_mail_from: อีเมล์ที่ใช้ส่ง
setting_bcc_recipients: ไม่ระบุชื่อผู้รับ (bcc)
setting_host_name: ชื่อโฮสต์
setting_text_formatting: การจัดรูปแบบข้อความ
setting_wiki_compression: บีบอัดประวัติ Wiki
setting_feeds_limit: จำนวน Feed
setting_default_projects_public: โครงการใหม่มีค่าเริ่มต้นเป็น สาธารณะ
setting_autofetch_changesets: ดึง commits อัตโนมัติ
setting_sys_api_enabled: เปิดใช้ WS สำหรับการจัดการที่เก็บต้นฉบับ
setting_commit_ref_keywords: คำสำคัญ Referencing
setting_commit_fix_keywords: คำสำคัญ Fixing
setting_autologin: เข้าระบบอัตโนมัติ
setting_date_format: รูปแบบวันที่
setting_time_format: รูปแบบเวลา
setting_cross_project_issue_relations: อนุญาตให้ระบุปัญหาข้ามโครงการ
setting_issue_list_default_columns: สดมภ์เริ่มต้นแสดงในรายการปัญหา
setting_repositories_encodings: การเข้ารหัสที่เก็บต้นฉบับ
setting_emails_footer: คำลงท้ายอีเมล์
setting_protocol: Protocol
setting_per_page_options: ตัวเลือกจำนวนต่อหน้า
setting_user_format: รูปแบบการแสดงชื่อผู้ใช้
setting_activity_days_default: จำนวนวันที่แสดงในกิจกรรมของโครงการ
setting_display_subprojects_issues: แสดงปัญหาของโครงการย่อยในโครงการหลัก
project_module_issue_tracking: การติดตามปัญหา
project_module_time_tracking: การใช้เวลา
project_module_news: ข่าว
project_module_documents: เอกสาร
project_module_files: แฟ้ม
project_module_wiki: Wiki
project_module_repository: ที่เก็บต้นฉบับ
project_module_boards: กระดานข้อความ
label_user: ผู้ใช้
label_user_plural: ผู้ใช้
label_user_new: ผู้ใช้ใหม่
label_project: โครงการ
label_project_new: โครงการใหม่
label_project_plural: โครงการ
label_project_all: โครงการทั้งหมด
label_project_latest: โครงการล่าสุด
label_issue: ปัญหา
label_issue_new: ปัญหาใหม่
label_issue_plural: ปัญหา
label_issue_view_all: ดูปัญหาทั้งหมด
label_issues_by: ปัญหาโดย %s
label_issue_added: ปัญหาถูกเพิ่ม
label_issue_updated: ปัญหาถูกปรับปรุง
label_document: เอกสาร
label_document_new: เอกสารใหม่
label_document_plural: เอกสาร
label_document_added: เอกสารถูกเพิ่ม
label_role: บทบาท
label_role_plural: บทบาท
label_role_new: บทบาทใหม่
label_role_and_permissions: บทบาทและสิทธิ
label_member: สมาชิก
label_member_new: สมาชิกใหม่
label_member_plural: สมาชิก
label_tracker: การติดตาม
label_tracker_plural: การติดตาม
label_tracker_new: การติดตามใหม่
label_workflow: ลำดับงาน
label_issue_status: สถานะของปัญหา
label_issue_status_plural: สถานะของปัญหา
label_issue_status_new: สถานะใหม
label_issue_category: ประเภทของปัญหา
label_issue_category_plural: ประเภทของปัญหา
label_issue_category_new: ประเภทใหม่
label_custom_field: เขตข้อมูลแบบระบุเอง
label_custom_field_plural: เขตข้อมูลแบบระบุเอง
label_custom_field_new: สร้างเขตข้อมูลแบบระบุเอง
label_enumerations: รายการ
label_enumeration_new: สร้างใหม่
label_information: ข้อมูล
label_information_plural: ข้อมูล
label_please_login: กรุณาเข้าระบบก่อน
label_register: ลงทะเบียน
label_password_lost: ลืมรหัสผ่าน
label_home: หน้าแรก
label_my_page: หน้าของฉัน
label_my_account: บัญชีของฉัน
label_my_projects: โครงการของฉัน
label_administration: บริหารจัดการ
label_login: เข้าระบบ
label_logout: ออกระบบ
label_help: ช่วยเหลือ
label_reported_issues: ปัญหาที่แจ้งไว้
label_assigned_to_me_issues: ปัญหาที่มอบหมายให้ฉัน
label_last_login: ติดต่อครั้งสุดท้าย
label_last_updates: ปรับปรุงครั้งสุดท้าย
label_last_updates_plural: %d ปรับปรุงครั้งสุดท้าย
label_registered_on: ลงทะเบียนเมื่อ
label_activity: กิจกรรม
label_activity_plural: กิจกรรม
label_activity_latest: กิจกรรมล่าสุด
label_overall_activity: กิจกรรมโดยรวม
label_new: ใหม่
label_logged_as: เข้าระบบในชื่อ
label_environment: สภาพแวดล้อม
label_authentication: การยืนยันตัวตน
label_auth_source: วิธีการการยืนยันตัวตน
label_auth_source_new: สร้างวิธีการยืนยันตัวตนใหม่
label_auth_source_plural: วิธีการ Authentication
label_subproject_plural: โครงการย่อย
label_min_max_length: สั้น-ยาว สุดที่
label_list: รายการ
label_date: วันที่
label_integer: จำนวนเต็ม
label_float: จำนวนจริง
label_boolean: ถูกผิด
label_string: ข้อความ
label_text: ข้อความขนาดยาว
label_attribute: คุณลักษณะ
label_attribute_plural: คุณลักษณะ
label_download: %d ดาวน์โหลด
label_download_plural: %d ดาวน์โหลด
label_no_data: จำนวนข้อมูลที่แสดง
label_change_status: เปลี่ยนสถานะ
label_history: ประวัติ
label_attachment: แฟ้ม
label_attachment_new: แฟ้มใหม่
label_attachment_delete: ลบแฟ้ม
label_attachment_plural: แฟ้ม
label_file_added: แฟ้มถูกเพิ่ม
label_report: รายงาน
label_report_plural: รายงาน
label_news: ข่าว
label_news_new: เพิ่มข่าว
label_news_plural: ข่าว
label_news_latest: ข่าวล่าสุด
label_news_view_all: ดูข่าวทั้งหมด
label_news_added: ข่าวถูกเพิ่ม
label_change_log: บันทึกการเปลี่ยนแปลง
label_settings: ปรับแต่ง
label_overview: ภาพรวม
label_version: รุ่น
label_version_new: รุ่นใหม่
label_version_plural: รุ่น
label_confirmation: ยืนยัน
label_export_to: 'รูปแบบอื่นๆ :'
label_read: อ่าน...
label_public_projects: โครงการสาธารณะ
label_open_issues: เปิด
label_open_issues_plural: เปิด
label_closed_issues: ปิด
label_closed_issues_plural: ปิด
label_total: จำนวนรวม
label_permissions: สิทธิ
label_current_status: สถานะปัจจุบัน
label_new_statuses_allowed: อนุญาตให้มีสถานะใหม่
label_all: ทั้งหมด
label_none: ไม่มี
label_nobody: ไม่มีใคร
label_next: ต่อไป
label_previous: ก่อนหน้า
label_used_by: ถูกใช้โดย
label_details: รายละเอียด
label_add_note: เพิ่มบันทึก
label_per_page: ต่อหน้า
label_calendar: ปฏิทิน
label_months_from: เดือนจาก
label_gantt: Gantt
label_internal: ภายใน
label_last_changes: last %d เปลี่ยนแปลง
label_change_view_all: ดูการเปลี่ยนแปลงทั้งหมด
label_personalize_page: ปรับแต่งหน้านี้
label_comment: ความเห็น
label_comment_plural: ความเห็น
label_comment_add: เพิ่มความเห็น
label_comment_added: ความเห็นถูกเพิ่ม
label_comment_delete: ลบความเห็น
label_query: แบบสอบถามแบบกำหนดเอง
label_query_plural: แบบสอบถามแบบกำหนดเอง
label_query_new: แบบสอบถามใหม่
label_filter_add: เพิ่มตัวกรอง
label_filter_plural: ตัวกรอง
label_equals: คือ
label_not_equals: ไม่ใช่
label_in_less_than: น้อยกว่า
label_in_more_than: มากกว่า
label_in: ในช่วง
label_today: วันนี้
label_all_time: ตลอดเวลา
label_yesterday: เมื่อวาน
label_this_week: อาทิตย์นี้
label_last_week: อาทิตย์ที่แล้ว
label_last_n_days: %d วันย้อนหลัง
label_this_month: เดือนนี้
label_last_month: เดือนที่แล้ว
label_this_year: ปีนี้
label_date_range: ช่วงวันที่
label_less_than_ago: น้อยกว่าหนึ่งวัน
label_more_than_ago: มากกว่าหนึ่งวัน
label_ago: วันผ่านมาแล้ว
label_contains: มี...
label_not_contains: ไม่มี...
label_day_plural: วัน
label_repository: ที่เก็บต้นฉบับ
label_repository_plural: ที่เก็บต้นฉบับ
label_browse: เปิดหา
label_modification: %d เปลี่ยนแปลง
label_modification_plural: %d เปลี่ยนแปลง
label_revision: การแก้ไข
label_revision_plural: การแก้ไข
label_associated_revisions: การแก้ไขที่เกี่ยวข้อง
label_added: ถูกเพิ่ม
label_modified: ถูกแก้ไข
label_deleted: ถูกลบ
label_latest_revision: รุ่นการแก้ไขล่าสุด
label_latest_revision_plural: รุ่นการแก้ไขล่าสุด
label_view_revisions: ดูการแก้ไข
label_max_size: ขนาดใหญ่สุด
label_on: 'ใน'
label_sort_highest: ย้ายไปบนสุด
label_sort_higher: ย้ายขึ้น
label_sort_lower: ย้ายลง
label_sort_lowest: ย้ายไปล่างสุด
label_roadmap: แผนงาน
label_roadmap_due_in: ถึงกำหนดใน
label_roadmap_overdue: %s ช้ากว่ากำหนด
label_roadmap_no_issues: ไม่มีปัญหาสำหรับรุ่นนี้
label_search: ค้นหา
label_result_plural: ผลการค้นหา
label_all_words: ทุกคำ
label_wiki: Wiki
label_wiki_edit: แก้ไข Wiki
label_wiki_edit_plural: แก้ไข Wiki
label_wiki_page: หน้า Wiki
label_wiki_page_plural: หน้า Wiki
label_index_by_title: เรียงตามชื่อเรื่อง
label_index_by_date: เรียงตามวัน
label_current_version: รุ่นปัจจุบัน
label_preview: ตัวอย่างก่อนจัดเก็บ
label_feed_plural: Feeds
label_changes_details: รายละเอียดการเปลี่ยนแปลงทั้งหมด
label_issue_tracking: ติดตามปัญหา
label_spent_time: เวลาที่ใช้
label_f_hour: %.2f ชั่วโมง
label_f_hour_plural: %.2f ชั่วโมง
label_time_tracking: ติดตามการใช้เวลา
label_change_plural: เปลี่ยนแปลง
label_statistics: สถิติ
label_commits_per_month: Commits ต่อเดือน
label_commits_per_author: Commits ต่อผู้แต่ง
label_view_diff: ดูความแตกต่าง
label_diff_inline: inline
label_diff_side_by_side: side by side
label_options: ตัวเลือก
label_copy_workflow_from: คัดลอกลำดับงานจาก
label_permissions_report: รายงานสิทธิ
label_watched_issues: เฝ้าดูปัญหา
label_related_issues: ปัญหาที่เกี่ยวข้อง
label_applied_status: จัดเก็บสถานะ
label_loading: กำลังโหลด...
label_relation_new: ความสัมพันธ์ใหม่
label_relation_delete: ลบความสัมพันธ์
label_relates_to: สัมพันธ์กับ
label_duplicates: ซ้ำ
label_blocks: กีดกัน
label_blocked_by: กีดกันโดย
label_precedes: นำหน้า
label_follows: ตามหลัง
label_end_to_start: จบ-เริ่ม
label_end_to_end: จบ-จบ
label_start_to_start: เริ่ม-เริ่ม
label_start_to_end: เริ่ม-จบ
label_stay_logged_in: อยู่ในระบบต่อ
label_disabled: ไม่ใช้งาน
label_show_completed_versions: แสดงรุ่นที่สมบูรณ์
label_me: ฉัน
label_board: สภากาแฟ
label_board_new: สร้างสภากาแฟ
label_board_plural: สภากาแฟ
label_topic_plural: หัวข้อ
label_message_plural: ข้อความ
label_message_last: ข้อความล่าสุด
label_message_new: เขียนข้อความใหม่
label_message_posted: ข้อความถูกเพิ่มแล้ว
label_reply_plural: ตอบกลับ
label_send_information: ส่งรายละเอียดของบัญชีให้ผู้ใช้
label_year: ปี
label_month: เดือน
label_week: สัปดาห์
label_date_from: จาก
label_date_to: ถึง
label_language_based: ขึ้นอยู่กับภาษาของผู้ใช้
label_sort_by: เรียงโดย %s
label_send_test_email: ส่งจดหมายทดสอบ
label_feeds_access_key_created_on: RSS access key สร้างเมื่อ %s ที่ผ่านมา
label_module_plural: ส่วนประกอบ
label_added_time_by: เพิ่มโดย %s %s ที่ผ่านมา
label_updated_time: ปรับปรุง %s ที่ผ่านมา
label_jump_to_a_project: ไปที่โครงการ...
label_file_plural: แฟ้ม
label_changeset_plural: กลุ่มการเปลี่ยนแปลง
label_default_columns: สดมภ์เริ่มต้น
label_no_change_option: (ไม่เปลี่ยนแปลง)
label_bulk_edit_selected_issues: แก้ไขปัญหาที่เลือกทั้งหมด
label_theme: ชุดรูปแบบ
label_default: ค่าเริ่มต้น
label_search_titles_only: ค้นหาจากชื่อเรื่องเท่านั้น
label_user_mail_option_all: "ทุกๆ เหตุการณ์ในโครงการของฉัน"
label_user_mail_option_selected: "ทุกๆ เหตุการณ์ในโครงการที่เลือก..."
label_user_mail_option_none: "เฉพาะสิ่งที่ฉันเลือกหรือมีส่วนเกี่ยวข้อง"
label_user_mail_no_self_notified: "ฉันไม่ต้องการได้รับการแจ้งเตือนในสิ่งที่ฉันทำเอง"
label_registration_activation_by_email: เปิดบัญชีผ่านอีเมล์
label_registration_manual_activation: อนุมัติโดยผู้บริหารจัดการ
label_registration_automatic_activation: เปิดบัญชีอัตโนมัติ
label_display_per_page: 'ต่อหน้า: %s'
label_age: อายุ
label_change_properties: เปลี่ยนคุณสมบัติ
label_general: ทั่วๆ ไป
label_more: อื่น ๆ
label_scm: ตัวจัดการต้นฉบับ
label_plugins: ส่วนเสริม
label_ldap_authentication: การยืนยันตัวตนโดยใช้ LDAP
label_downloads_abbr: D/L
label_optional_description: รายละเอียดเพิ่มเติม
label_add_another_file: เพิ่มแฟ้มอื่นๆ
label_preferences: ค่าที่ชอบใจ
label_chronological_order: เรียงจากเก่าไปใหม่
label_reverse_chronological_order: เรียงจากใหม่ไปเก่า
label_planning: การวางแผน
button_login: เข้าระบบ
button_submit: จัดส่งข้อมูล
button_save: จัดเก็บ
button_check_all: เลือกทั้งหมด
button_uncheck_all: ไม่เลือกทั้งหมด
button_delete: ลบ
button_create: สร้าง
button_test: ทดสอบ
button_edit: แก้ไข
button_add: เพิ่ม
button_change: เปลี่ยนแปลง
button_apply: ประยุกต์ใช้
button_clear: ล้างข้อความ
button_lock: ล็อค
button_unlock: ยกเลิกการล็อค
button_download: ดาวน์โหลด
button_list: รายการ
button_view: มุมมอง
button_move: ย้าย
button_back: กลับ
button_cancel: ยกเลิก
button_activate: เปิดใช้
button_sort: จัดเรียง
button_log_time: บันทึกเวลา
button_rollback: ถอยกลับมาที่รุ่นนี้
button_watch: เฝ้าดู
button_unwatch: เลิกเฝ้าดู
button_reply: ตอบกลับ
button_archive: เก็บเข้าโกดัง
button_unarchive: เอาออกจากโกดัง
button_reset: เริ่มใหมท
button_rename: เปลี่ยนชื่อ
button_change_password: เปลี่ยนรหัสผ่าน
button_copy: คัดลอก
button_annotate: หมายเหตุประกอบ
button_update: ปรับปรุง
button_configure: ปรับแต่ง
status_active: เปิดใช้งานแล้ว
status_registered: รอการอนุมัติ
status_locked: ล็อค
text_select_mail_notifications: เลือกการกระทำที่ต้องการให้ส่งอีเมล์แจ้ง.
text_regexp_info: ตัวอย่าง ^[A-Z0-9]+$
text_min_max_length_info: 0 หมายถึงไม่จำกัด
text_project_destroy_confirmation: คุณแน่ใจไหมว่าต้องการลบโครงการและข้อมูลที่เกี่ยวข้่อง ?
text_subprojects_destroy_warning: 'โครงการย่อย: %s จะถูกลบด้วย.'
text_workflow_edit: เลือกบทบาทและการติดตาม เพื่อแก้ไขลำดับงาน
text_are_you_sure: คุณแน่ใจไหม ?
text_journal_changed: เปลี่ยนแปลงจาก %s เป็น %s
text_journal_set_to: ตั้งค่าเป็น %s
text_journal_deleted: ถูกลบ
text_tip_task_begin_day: งานที่เริ่มวันนี้
text_tip_task_end_day: งานที่จบวันนี้
text_tip_task_begin_end_day: งานที่เริ่มและจบวันนี้
text_project_identifier_info: 'ภาษาอังกฤษตัวเล็ก(a-z), ตัวเลข(0-9) และขีด (-) เท่านั้น.<br />เมื่อจัดเก็บแล้ว, ชื่อเฉพาะไม่สามารถเปลี่ยนแปลงได้'
text_caracters_maximum: สูงสุด %d ตัวอักษร.
text_caracters_minimum: ต้องยาวอย่างน้อย %d ตัวอักษร.
text_length_between: ความยาวระหว่าง %d ถึง %d ตัวอักษร.
text_tracker_no_workflow: ไม่ได้บัญญัติลำดับงานสำหรับการติดตามนี้
text_unallowed_characters: ตัวอักษรต้องห้าม
text_comma_separated: ใส่ได้หลายค่า โดยคั่นด้วยลูกน้ำ( ,).
text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
text_issue_added: ปัญหา %s ถูกแจ้งโดย %s.
text_issue_updated: ปัญหา %s ถูกปรับปรุงโดย %s.
text_wiki_destroy_confirmation: คุณแน่ใจหรือว่าต้องการลบ wiki นี้พร้อมทั้งเนี้อหา?
text_issue_category_destroy_question: บางปัญหา (%d) อยู่ในประเภทนี้. คุณต้องการทำอย่างไร ?
text_issue_category_destroy_assignments: ลบประเภทนี้
text_issue_category_reassign_to: ระบุปัญหาในประเภทนี้
text_user_mail_option: "ในโครงการที่ไม่ได้เลือก, คุณจะได้รับการแจ้งเกี่ยวกับสิ่งที่คุณเฝ้าดูหรือมีส่วนเกี่ยวข้อง (เช่นปัญหาที่คุณแจ้งไว้หรือได้รับมอบหมาย)."
text_no_configuration_data: "บทบาท, การติดตาม, สถานะปัญหา และลำดับงานยังไม่ได้ถูกตั้งค่า.\nขอแนะนำให้โหลดค่าเริ่มต้น. คุณสามารถแก้ไขค่าได้หลังจากโหลดแล้ว."
text_load_default_configuration: โหลดค่าเริ่มต้น
text_status_changed_by_changeset: ประยุกต์ใช้ในกลุ่มการเปลี่ยนแปลง %s.
text_issues_destroy_confirmation: 'คุณแน่ใจไหมว่าต้องการลบปัญหา(ทั้งหลาย)ที่เลือกไว้?'
text_select_project_modules: 'เลือกส่วนประกอบที่ต้องการใช้งานสำหรับโครงการนี้:'
text_default_administrator_account_changed: ค่าเริ่มต้นของบัญชีผู้บริหารจัดการถูกเปลี่ยนแปลง
text_file_repository_writable: ที่เก็บต้นฉบับสามารถเขียนได้
text_rmagick_available: RMagick มีให้ใช้ (เป็นตัวเลือก)
text_destroy_time_entries_question: %.02f ชั่วโมงที่ถูกแจ้งในปัญหานี้จะโดนลบ. คุณต้องการทำอย่างไร?
text_destroy_time_entries: ลบเวลาที่รายงานไว้
text_assign_time_entries_to_project: ระบุเวลาที่ใช้ในโครงการนี้
text_reassign_time_entries: 'ระบุเวลาที่ใช้ในโครงการนี่อีกครั้ง:'
default_role_manager: ผู้จัดการ
default_role_developper: ผู้พัฒนา
default_role_reporter: ผู้รายงาน
default_tracker_bug: บั๊ก
default_tracker_feature: ลักษณะเด่น
default_tracker_support: สนับสนุน
default_issue_status_new: เกิดขึ้น
default_issue_status_assigned: รับมอบหมาย
default_issue_status_resolved: ดำเนินการ
default_issue_status_feedback: รอคำตอบ
default_issue_status_closed: จบ
default_issue_status_rejected: ยกเลิก
default_doc_category_user: เอกสารของผู้ใช้
default_doc_category_tech: เอกสารทางเทคนิค
default_priority_low: ต่ำ
default_priority_normal: ปกติ
default_priority_high: สูง
default_priority_urgent: เร่งด่วน
default_priority_immediate: ด่วนมาก
default_activity_design: ออกแบบ
default_activity_development: พัฒนา
enumeration_issue_priorities: ความสำคัญของปัญหา
enumeration_doc_categories: ประเภทเอกสาร
enumeration_activities: กิจกรรม (ใช้ในการติดตามเวลา)
-1
View File
@@ -619,4 +619,3 @@ label_overall_activity: Overall activity
setting_default_projects_public: New projects are public by default setting_default_projects_public: New projects are public by default
error_scm_annotate: "The entry does not exist or can not be annotated." error_scm_annotate: "The entry does not exist or can not be annotated."
label_planning: Planning label_planning: Planning
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
+1 -7
View File
@@ -91,8 +91,6 @@ mail_body_account_information_external: 您可以使用 "%s" 帳號登入 Redmin
mail_body_account_information: 您的 Redmine 帳號資訊 mail_body_account_information: 您的 Redmine 帳號資訊
mail_subject_account_activation_request: Redmine 帳號啟用需求通知 mail_subject_account_activation_request: Redmine 帳號啟用需求通知
mail_body_account_activation_request: '有位新用戶 (%s) 已經完成註冊,正等候您的審核:' mail_body_account_activation_request: '有位新用戶 (%s) 已經完成註冊,正等候您的審核:'
mail_subject_reminder: "您有 %d 個項目即將到期"
mail_body_reminder: "%d 個指派給您的項目,將於 %d 天之內到期:"
gui_validation_error: 1 個錯誤 gui_validation_error: 1 個錯誤
gui_validation_error_plural: %d 個錯誤 gui_validation_error_plural: %d 個錯誤
@@ -212,7 +210,7 @@ setting_protocol: 協定
setting_per_page_options: 每頁顯示個數選項 setting_per_page_options: 每頁顯示個數選項
setting_user_format: 使用者顯示格式 setting_user_format: 使用者顯示格式
setting_activity_days_default: 專案活動顯示天數 setting_activity_days_default: 專案活動顯示天數
setting_display_subprojects_issues: 預設於父專案中顯示子專案的項目 setting_display_subprojects_issues: 預設於主控專案中顯示從屬專案的項目
project_module_issue_tracking: 項目追蹤 project_module_issue_tracking: 項目追蹤
project_module_time_tracking: 工時追蹤 project_module_time_tracking: 工時追蹤
@@ -293,7 +291,6 @@ label_auth_source: 認證模式
label_auth_source_new: 建立新認證模式 label_auth_source_new: 建立新認證模式
label_auth_source_plural: 認證模式清單 label_auth_source_plural: 認證模式清單
label_subproject_plural: 子專案 label_subproject_plural: 子專案
label_and_its_subprojects: %s 與其子專案
label_min_max_length: 最小 - 最大 長度 label_min_max_length: 最小 - 最大 長度
label_list: 清單 label_list: 清單
label_date: 日期 label_date: 日期
@@ -448,7 +445,6 @@ label_relation_new: 建立新關聯
label_relation_delete: 刪除關聯 label_relation_delete: 刪除關聯
label_relates_to: 關聯至 label_relates_to: 關聯至
label_duplicates: 已重複 label_duplicates: 已重複
label_duplicated_by: 與後面所列項目重複
label_blocks: 阻擋 label_blocks: 阻擋
label_blocked_by: 被阻擋 label_blocked_by: 被阻擋
label_precedes: 優先於 label_precedes: 優先於
@@ -561,7 +557,6 @@ text_select_mail_notifications: 選擇欲寄送提醒通知郵件之動作
text_regexp_info: eg. ^[A-Z0-9]+$ text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 代表「不限制」 text_min_max_length_info: 0 代表「不限制」
text_project_destroy_confirmation: 您確定要刪除這個專案和其他相關資料? text_project_destroy_confirmation: 您確定要刪除這個專案和其他相關資料?
text_subprojects_destroy_warning: '下列子專案: %s 將一併被刪除。'
text_workflow_edit: 選擇角色與追蹤標籤以設定其工作流程 text_workflow_edit: 選擇角色與追蹤標籤以設定其工作流程
text_are_you_sure: 確定執行? text_are_you_sure: 確定執行?
text_journal_changed: 從 %s 變更為 %s text_journal_changed: 從 %s 變更為 %s
@@ -597,7 +592,6 @@ text_destroy_time_entries_question: 您即將刪除的項目已報工 %.02f 小
text_destroy_time_entries: 刪除已報工的時數 text_destroy_time_entries: 刪除已報工的時數
text_assign_time_entries_to_project: 指定已報工的時數至專案中 text_assign_time_entries_to_project: 指定已報工的時數至專案中
text_reassign_time_entries: '重新指定已報工的時數至此項目:' text_reassign_time_entries: '重新指定已報工的時數至此項目:'
text_user_wrote: '%s 先前提到:'
default_role_manager: 管理人員 default_role_manager: 管理人員
default_role_developper: 開發人員 default_role_developper: 開發人員
+6 -12
View File
@@ -91,8 +91,6 @@ mail_body_account_information_external: 您可以使用您的 "%s" 帐号来登
mail_body_account_information: 您的帐号信息 mail_body_account_information: 您的帐号信息
mail_subject_account_activation_request: %s帐号激活请求 mail_subject_account_activation_request: %s帐号激活请求
mail_body_account_activation_request: '新用户(%s)已完成注册,正在等候您的审核:' mail_body_account_activation_request: '新用户(%s)已完成注册,正在等候您的审核:'
mail_subject_reminder: "%d 个问题需要尽快解决"
mail_body_reminder: "指派给您的 %d 个问题需要在 %d 天内完成:"
gui_validation_error: 1 个错误 gui_validation_error: 1 个错误
gui_validation_error_plural: %d 个错误 gui_validation_error_plural: %d 个错误
@@ -200,7 +198,7 @@ setting_default_projects_public: 新建项目默认为公开项目
setting_autofetch_changesets: 自动获取程序变更 setting_autofetch_changesets: 自动获取程序变更
setting_sys_api_enabled: 启用用于版本库管理的Web Service setting_sys_api_enabled: 启用用于版本库管理的Web Service
setting_commit_ref_keywords: 用于引用问题的关键字 setting_commit_ref_keywords: 用于引用问题的关键字
setting_commit_fix_keywords: 用于解决问题的关键字 setting_commit_fix_keywords: 用于修订问题的关键字
setting_autologin: 自动登录 setting_autologin: 自动登录
setting_date_format: 日期格式 setting_date_format: 日期格式
setting_time_format: 时间格式 setting_time_format: 时间格式
@@ -259,9 +257,9 @@ label_issue_status_new: 新建问题状态
label_issue_category: 问题类别 label_issue_category: 问题类别
label_issue_category_plural: 问题类别 label_issue_category_plural: 问题类别
label_issue_category_new: 新建问题类别 label_issue_category_new: 新建问题类别
label_custom_field: 自定义属性 label_custom_field: 自定义字段
label_custom_field_plural: 自定义属性 label_custom_field_plural: 自定义字段
label_custom_field_new: 新建自定义属性 label_custom_field_new: 新建自定义字段
label_enumerations: 枚举值 label_enumerations: 枚举值
label_enumeration_new: 新建枚举值 label_enumeration_new: 新建枚举值
label_information: 信息 label_information: 信息
@@ -293,7 +291,6 @@ label_auth_source: 认证模式
label_auth_source_new: 新建认证模式 label_auth_source_new: 新建认证模式
label_auth_source_plural: 认证模式 label_auth_source_plural: 认证模式
label_subproject_plural: 子项目 label_subproject_plural: 子项目
label_and_its_subprojects: %s 及其子项目
label_min_max_length: 最小 - 最大 长度 label_min_max_length: 最小 - 最大 长度
label_list: 列表 label_list: 列表
label_date: 日期 label_date: 日期
@@ -557,10 +554,9 @@ status_registered: 已注册
status_locked: 已锁定 status_locked: 已锁定
text_select_mail_notifications: 选择需要发送邮件通知的动作 text_select_mail_notifications: 选择需要发送邮件通知的动作
text_regexp_info: 例如:^[A-Z0-9]+$ text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 表示没有限制 text_min_max_length_info: 0 表示没有限制
text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗? text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗?
text_subprojects_destroy_warning: '以下子项目也将被同时删除:%s'
text_workflow_edit: 选择角色和跟踪标签来编辑工作流程 text_workflow_edit: 选择角色和跟踪标签来编辑工作流程
text_are_you_sure: 您确定? text_are_you_sure: 您确定?
text_journal_changed: 从 %s 变更为 %s text_journal_changed: 从 %s 变更为 %s
@@ -576,7 +572,7 @@ text_length_between: 长度必须在 %d 到 %d 个字符之间。
text_tracker_no_workflow: 此跟踪标签未定义工作流程 text_tracker_no_workflow: 此跟踪标签未定义工作流程
text_unallowed_characters: 非法字符 text_unallowed_characters: 非法字符
text_comma_separated: 可以使用多个值(用逗号,分开)。 text_comma_separated: 可以使用多个值(用逗号,分开)。
text_issues_ref_in_commit_messages: 在提交信息中引用和解决问题 text_issues_ref_in_commit_messages: 在提交信息中引用和修订问题
text_issue_added: 问题 %s 已由 %s 提交。 text_issue_added: 问题 %s 已由 %s 提交。
text_issue_updated: 问题 %s 已由 %s 更新。 text_issue_updated: 问题 %s 已由 %s 更新。
text_wiki_destroy_confirmation: 您确定要删除这个 wiki 及其所有内容吗? text_wiki_destroy_confirmation: 您确定要删除这个 wiki 及其所有内容吗?
@@ -596,7 +592,6 @@ text_destroy_time_entries_question: 您要删除的问题已经上报了 %.02f
text_destroy_time_entries: 删除上报的工作量 text_destroy_time_entries: 删除上报的工作量
text_assign_time_entries_to_project: 将已上报的工作量提交到项目中 text_assign_time_entries_to_project: 将已上报的工作量提交到项目中
text_reassign_time_entries: '将已上报的工作量指定到此问题:' text_reassign_time_entries: '将已上报的工作量指定到此问题:'
text_user_wrote: '%s 写到:'
default_role_manager: 管理人员 default_role_manager: 管理人员
default_role_developper: 开发人员 default_role_developper: 开发人员
@@ -623,4 +618,3 @@ default_activity_development: 开发
enumeration_issue_priorities: 问题优先级 enumeration_issue_priorities: 问题优先级
enumeration_doc_categories: 文档类别 enumeration_doc_categories: 文档类别
enumeration_activities: 活动(时间跟踪) enumeration_activities: 活动(时间跟踪)
label_duplicated_by: duplicated by
+1 -1
View File
@@ -829,7 +829,7 @@ module SVG
@doc << DocType.new( %q{svg PUBLIC "-//W3C//DTD SVG 1.0//EN" } + @doc << DocType.new( %q{svg PUBLIC "-//W3C//DTD SVG 1.0//EN" } +
%q{"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"} ) %q{"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"} )
if style_sheet && style_sheet != '' if style_sheet && style_sheet != ''
@doc << Instruction.new( "xml-stylesheet", @doc << ProcessingInstruction.new( "xml-stylesheet",
%Q{href="#{style_sheet}" type="text/css"} ) %Q{href="#{style_sheet}" type="text/css"} )
end end
@root = @doc.add_element( "svg", { @root = @doc.add_element( "svg", {

Some files were not shown because too many files have changed in this diff Show More