1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-03-11 03:33:07 +00:00

Merge branch 'master' of github.com:meineerde/redmine into 5420-redmine-info

This commit is contained in:
Holger Just 2010-09-20 17:35:13 +02:00
commit 8190213e83
148 changed files with 4752 additions and 1529 deletions

View File

@ -0,0 +1,59 @@
class ActivitiesController < ApplicationController
menu_item :activity
before_filter :find_optional_project
accept_key_auth :index
def index
@days = Setting.activity_days_default.to_i
if params[:from]
begin; @date_to = params[:from].to_date + 1; rescue; end
end
@date_to ||= Date.today + 1
@date_from = @date_to - @days
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
@author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
@activity = Redmine::Activity::Fetcher.new(User.current, :project => @project,
:with_subprojects => @with_subprojects,
:author => @author)
@activity.scope_select {|t| !params["show_#{t}"].nil?}
@activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
events = @activity.events(@date_from, @date_to)
if events.empty? || stale?(:etag => [events.first, User.current])
respond_to do |format|
format.html {
@events_by_day = events.group_by(&:event_date)
render :layout => false if request.xhr?
}
format.atom {
title = l(:label_activity)
if @author
title = @author.name
elsif @activity.scope.size == 1
title = l("label_#{@activity.scope.first.singularize}_plural")
end
render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
}
end
end
rescue ActiveRecord::RecordNotFound
render_404
end
private
# TODO: refactor, duplicated in projects_controller
def find_optional_project
return true unless params[:id]
@project = Project.find(params[:id])
authorize
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@ -169,6 +169,13 @@ class ApplicationController < ActionController::Base
render_404
end
# Find project of id params[:project_id]
def find_project_by_project_id
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
render_404
end
# Find a project based on params[:project_id]
# TODO: some subclasses override this, see about merging their logic
def find_optional_project

View File

@ -32,8 +32,11 @@ class CalendarsController < ApplicationController
@calendar.events = events
end
render :layout => false if request.xhr?
render :action => 'show', :layout => false if request.xhr?
end
def update
show
end
end

View File

@ -6,9 +6,15 @@ class ContextMenusController < ApplicationController
if (@issues.size == 1)
@issue = @issues.first
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
else
@allowed_statuses = @issues.map do |i|
i.new_statuses_allowed_to(User.current)
end.inject do |memo,s|
memo & s
end
end
projects = @issues.collect(&:project).compact.uniq
@project = projects.first if projects.size == 1
@projects = @issues.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1
@can = {:edit => (@project && User.current.allowed_to?(:edit_issues, @project)),
:log_time => (@project && User.current.allowed_to?(:log_time, @project)),

View File

@ -0,0 +1,36 @@
class FilesController < ApplicationController
menu_item :files
before_filter :find_project_by_project_id
before_filter :authorize
helper :sort
include SortHelper
def index
sort_init 'filename', 'asc'
sort_update 'filename' => "#{Attachment.table_name}.filename",
'created_on' => "#{Attachment.table_name}.created_on",
'size' => "#{Attachment.table_name}.filesize",
'downloads' => "#{Attachment.table_name}.downloads"
@containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
@containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
render :layout => !request.xhr?
end
def new
@versions = @project.versions.sort
end
def create
container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
attachments = Attachment.attach_files(container, params[:attachments])
render_attachment_warning_if_needed(container)
if !attachments.empty? && Setting.notified_events.include?('file_added')
Mailer.deliver_attachments_added(attachments[:files])
end
redirect_to project_files_path(@project)
end
end

View File

@ -4,6 +4,7 @@ class GanttsController < ApplicationController
rescue_from Query::StatementInvalid, :with => :query_statement_invalid
helper :gantt
helper :issues
helper :projects
helper :queries
@ -14,33 +15,22 @@ class GanttsController < ApplicationController
def show
@gantt = Redmine::Helpers::Gantt.new(params)
@gantt.project = @project
retrieve_query
@query.group_by = nil
if @query.valid?
events = []
# Issues that have start and due dates
events += @query.issues(:include => [:tracker, :assigned_to, :priority],
:order => "start_date, due_date",
: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)", @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to]
)
# Issues that don't have a due date but that are assigned to a version with a date
events += @query.issues(:include => [:tracker, :assigned_to, :priority, :fixed_version],
:order => "start_date, effective_date",
:conditions => ["(((start_date>=? and start_date<=?) or (effective_date>=? and effective_date<=?) or (start_date<? and effective_date>?)) and start_date is not null and due_date is null and effective_date is not null)", @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to, @gantt.date_from, @gantt.date_to]
)
# Versions
events += @query.versions(:conditions => ["effective_date BETWEEN ? AND ?", @gantt.date_from, @gantt.date_to])
@gantt.events = events
end
@gantt.query = @query if @query.valid?
basename = (@project ? "#{@project.identifier}-" : '') + 'gantt'
respond_to do |format|
format.html { render :action => "show", :layout => !request.xhr? }
format.png { send_data(@gantt.to_image(@project), :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") } if @gantt.respond_to?('to_image')
format.pdf { send_data(gantt_to_pdf(@gantt, @project), :type => 'application/pdf', :filename => "#{basename}.pdf") }
format.png { send_data(@gantt.to_image, :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") } if @gantt.respond_to?('to_image')
format.pdf { send_data(@gantt.to_pdf, :type => 'application/pdf', :filename => "#{basename}.pdf") }
end
end
def update
show
end
end

View File

@ -20,7 +20,7 @@ class IssuesController < ApplicationController
default_search_scope :issues
before_filter :find_issue, :only => [:show, :edit, :update]
before_filter :find_issues, :only => [:bulk_edit, :move, :perform_move, :destroy]
before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :move, :perform_move, :destroy]
before_filter :find_project, :only => [:new, :create]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => [:index]
@ -47,6 +47,7 @@ class IssuesController < ApplicationController
include SortHelper
include IssuesHelper
helper :timelog
helper :gantt
include Redmine::Export::PDF
verify :method => [:post, :delete],
@ -54,6 +55,7 @@ class IssuesController < ApplicationController
:render => { :nothing => true, :status => :method_not_allowed }
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
verify :method => :post, :only => :bulk_update, :render => {:nothing => true, :status => :method_not_allowed }
verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
def index
@ -132,7 +134,7 @@ class IssuesController < ApplicationController
call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
respond_to do |format|
format.html {
redirect_to(params[:continue] ? { :action => 'new', :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
redirect_to(params[:continue] ? { :action => 'new', :project_id => @project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
{ :action => 'show', :id => @issue })
}
format.xml { render :action => 'show', :status => :created, :location => url_for(:controller => 'issues', :action => 'show', :id => @issue) }
@ -191,29 +193,28 @@ class IssuesController < ApplicationController
# Bulk edit a set of issues
def bulk_edit
@issues.sort!
if request.post?
attributes = (params[:issue] || {}).reject {|k,v| v.blank?}
attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'}
attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values]
unsaved_issue_ids = []
@issues.each do |issue|
issue.reload
journal = issue.init_journal(User.current, params[:notes])
issue.safe_attributes = attributes
call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue })
unless issue.save
# Keep unsaved issue ids to display them in flash error
unsaved_issue_ids << issue.id
end
end
set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids)
redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project})
return
end
@available_statuses = Workflow.available_statuses(@project)
@custom_fields = @project.all_issue_custom_fields
end
def bulk_update
@issues.sort!
attributes = parse_params_for_bulk_issue_attributes(params)
unsaved_issue_ids = []
@issues.each do |issue|
issue.reload
journal = issue.init_journal(User.current, params[:notes])
issue.safe_attributes = attributes
call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue })
unless issue.save
# Keep unsaved issue ids to display them in flash error
unsaved_issue_ids << issue.id
end
end
set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids)
redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project})
end
def destroy
@hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f
@ -270,7 +271,7 @@ private
@edit_allowed = User.current.allowed_to?(:edit_issues, @project)
@time_entry = TimeEntry.new
@notes = params[:notes]
@notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil)
@issue.init_journal(User.current, @notes)
# User can change issue attributes only if he has :edit permission or if a workflow transition is allowed
if (@edit_allowed || !@allowed_statuses.empty?) && params[:issue]
@ -315,4 +316,11 @@ private
return false
end
end
def parse_params_for_bulk_issue_attributes(params)
attributes = (params[:issue] || {}).reject {|k,v| v.blank?}
attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'}
attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values]
attributes
end
end

View File

@ -18,9 +18,9 @@
class NewsController < ApplicationController
default_search_scope :news
model_object News
before_filter :find_model_object, :except => [:new, :index, :preview]
before_filter :find_project_from_association, :except => [:new, :index, :preview]
before_filter :find_project, :only => [:new, :preview]
before_filter :find_model_object, :except => [:new, :create, :index, :preview]
before_filter :find_project_from_association, :except => [:new, :create, :index, :preview]
before_filter :find_project, :only => [:new, :create, :preview]
before_filter :authorize, :except => [:index, :preview]
before_filter :find_optional_project, :only => :index
accept_key_auth :index
@ -46,11 +46,17 @@ class NewsController < ApplicationController
def new
@news = News.new(:project => @project, :author => User.current)
end
def create
@news = News.new(:project => @project, :author => User.current)
if request.post?
@news.attributes = params[:news]
if @news.save
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'news', :action => 'index', :project_id => @project
else
render :action => 'new'
end
end
end

View File

@ -0,0 +1,26 @@
class ProjectEnumerationsController < ApplicationController
before_filter :find_project_by_project_id
before_filter :authorize
def update
if request.put? && params[:enumerations]
Project.transaction do
params[:enumerations].each do |id, activity|
@project.update_or_create_time_entry_activity(id, activity)
end
end
flash[:notice] = l(:notice_successful_update)
end
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
end
def destroy
@project.time_entry_activities.each do |time_entry_activity|
time_entry_activity.destroy(time_entry_activity.parent)
end
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
end
end

View File

@ -17,24 +17,24 @@
class ProjectsController < ApplicationController
menu_item :overview
menu_item :activity, :only => :activity
menu_item :roadmap, :only => :roadmap
menu_item :files, :only => [:list_files, :add_file]
menu_item :settings, :only => :settings
before_filter :find_project, :except => [ :index, :list, :add, :copy, :activity ]
before_filter :find_optional_project, :only => :activity
before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy, :activity ]
before_filter :authorize_global, :only => :add
before_filter :find_project, :except => [ :index, :list, :new, :create, :copy ]
before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
before_filter :authorize_global, :only => [:new, :create]
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
accept_key_auth :activity, :index
after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller|
accept_key_auth :index
after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
if controller.request.post?
controller.send :expire_action, :controller => 'welcome', :action => 'robots.txt'
end
end
# TODO: convert to PUT only
verify :method => [:post, :put], :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
helper :sort
include SortHelper
helper :custom_fields
@ -63,40 +63,45 @@ class ProjectsController < ApplicationController
end
end
# Add a new project
def add
def new
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@trackers = Tracker.all
@project = Project.new(params[:project])
if request.get?
@project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
@project.trackers = Tracker.all
@project.is_public = Setting.default_projects_public?
@project.enabled_module_names = Setting.default_projects_modules
else
@project.enabled_module_names = params[:enabled_modules]
if validate_parent_id && @project.save
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
# Add current user as a project member if he is not admin
unless User.current.admin?
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
m = Member.new(:user => User.current, :roles => [r])
@project.members << m
end
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'projects', :action => 'settings', :id => @project
}
format.xml { head :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
end
else
respond_to do |format|
format.html
format.xml { render :xml => @project.errors, :status => :unprocessable_entity }
end
@project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
@project.trackers = Tracker.all
@project.is_public = Setting.default_projects_public?
@project.enabled_module_names = Setting.default_projects_modules
end
def create
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@trackers = Tracker.all
@project = Project.new(params[:project])
@project.enabled_module_names = params[:enabled_modules]
if validate_parent_id && @project.save
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
# Add current user as a project member if he is not admin
unless User.current.admin?
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
m = Member.new(:user => User.current, :roles => [r])
@project.members << m
end
end
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'projects', :action => 'settings', :id => @project
}
format.xml { head :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
end
else
respond_to do |format|
format.html { render :action => 'new' }
format.xml { render :xml => @project.errors, :status => :unprocessable_entity }
end
end
end
def copy
@ -177,28 +182,27 @@ class ProjectsController < ApplicationController
@wiki ||= @project.wiki
end
# Edit @project
def edit
if request.get?
end
def update
@project.attributes = params[:project]
if validate_parent_id && @project.save
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'settings', :id => @project
}
format.xml { head :ok }
end
else
@project.attributes = params[:project]
if validate_parent_id && @project.save
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'settings', :id => @project
}
format.xml { head :ok }
end
else
respond_to do |format|
format.html {
settings
render :action => 'settings'
}
format.xml { render :xml => @project.errors, :status => :unprocessable_entity }
end
respond_to do |format|
format.html {
settings
render :action => 'settings'
}
format.xml { render :xml => @project.errors, :status => :unprocessable_entity }
end
end
end
@ -241,120 +245,6 @@ class ProjectsController < ApplicationController
@project = nil
end
def add_file
if request.post?
container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
attachments = Attachment.attach_files(container, params[:attachments])
render_attachment_warning_if_needed(container)
if !attachments.empty? && Setting.notified_events.include?('file_added')
Mailer.deliver_attachments_added(attachments[:files])
end
redirect_to :controller => 'projects', :action => 'list_files', :id => @project
return
end
@versions = @project.versions.sort
end
def save_activities
if request.post? && params[:enumerations]
Project.transaction do
params[:enumerations].each do |id, activity|
@project.update_or_create_time_entry_activity(id, activity)
end
end
flash[:notice] = l(:notice_successful_update)
end
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
end
def reset_activities
@project.time_entry_activities.each do |time_entry_activity|
time_entry_activity.destroy(time_entry_activity.parent)
end
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
end
def list_files
sort_init 'filename', 'asc'
sort_update 'filename' => "#{Attachment.table_name}.filename",
'created_on' => "#{Attachment.table_name}.created_on",
'size' => "#{Attachment.table_name}.filesize",
'downloads' => "#{Attachment.table_name}.downloads"
@containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
@containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
render :layout => !request.xhr?
end
def roadmap
@trackers = @project.trackers.find(:all, :order => 'position')
retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
@versions = @project.shared_versions || []
@versions += @project.rolled_up_versions.visible if @with_subprojects
@versions = @versions.uniq.sort
@versions.reject! {|version| version.closed? || version.completed? } unless params[:completed]
@issues_by_version = {}
unless @selected_tracker_ids.empty?
@versions.each do |version|
issues = version.fixed_issues.visible.find(:all,
:include => [:project, :status, :tracker, :priority],
:conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids},
:order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues_by_version[version] = issues
end
end
@versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
end
def activity
@days = Setting.activity_days_default.to_i
if params[:from]
begin; @date_to = params[:from].to_date + 1; rescue; end
end
@date_to ||= Date.today + 1
@date_from = @date_to - @days
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
@author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
@activity = Redmine::Activity::Fetcher.new(User.current, :project => @project,
:with_subprojects => @with_subprojects,
:author => @author)
@activity.scope_select {|t| !params["show_#{t}"].nil?}
@activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
events = @activity.events(@date_from, @date_to)
if events.empty? || stale?(:etag => [events.first, User.current])
respond_to do |format|
format.html {
@events_by_day = events.group_by(&:event_date)
render :layout => false if request.xhr?
}
format.atom {
title = l(:label_activity)
if @author
title = @author.name
elsif @activity.scope.size == 1
title = l("label_#{@activity.scope.first.singularize}_plural")
end
render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
}
end
end
rescue ActiveRecord::RecordNotFound
render_404
end
private
def find_optional_project
return true unless params[:id]
@ -364,14 +254,6 @@ private
render_404
end
def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
if ids = params[:tracker_ids]
@selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
else
@selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
end
end
# Validates parent_id param according to user's permissions
# TODO: move it to Project model in a validation that depends on User.current
def validate_parent_id

View File

@ -260,8 +260,8 @@ private
end
@from, @to = @to, @from if @from && @to && @from > @to
@from ||= (TimeEntry.minimum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today) - 1
@to ||= (TimeEntry.maximum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries)) || Date.today)
@from ||= (TimeEntry.earilest_date_for_project(@project) || Date.today)
@to ||= (TimeEntry.latest_date_for_project(@project) || Date.today)
end
def load_available_criterias

View File

@ -95,7 +95,9 @@ class UsersController < ApplicationController
if request.post?
@user.admin = params[:user][:admin] if params[:user][:admin]
@user.login = params[:user][:login] if params[:user][:login]
@user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless params[:password].nil? or params[:password].empty? or @user.auth_source_id
if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?)
@user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
end
@user.group_ids = params[:user][:group_ids] if params[:user][:group_ids]
@user.attributes = params[:user]
# Was the account actived ? (do it before User#save clears the change)

View File

@ -18,13 +18,37 @@
class VersionsController < ApplicationController
menu_item :roadmap
model_object Version
before_filter :find_model_object, :except => [:new, :close_completed]
before_filter :find_project_from_association, :except => [:new, :close_completed]
before_filter :find_project, :only => [:new, :close_completed]
before_filter :find_model_object, :except => [:index, :new, :create, :close_completed]
before_filter :find_project_from_association, :except => [:index, :new, :create, :close_completed]
before_filter :find_project, :only => [:index, :new, :create, :close_completed]
before_filter :authorize
helper :custom_fields
helper :projects
def index
@trackers = @project.trackers.find(:all, :order => 'position')
retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
@versions = @project.shared_versions || []
@versions += @project.rolled_up_versions.visible if @with_subprojects
@versions = @versions.uniq.sort
@versions.reject! {|version| version.closed? || version.completed? } unless params[:completed]
@issues_by_version = {}
unless @selected_tracker_ids.empty?
@versions.each do |version|
issues = version.fixed_issues.visible.find(:all,
:include => [:project, :status, :tracker, :priority],
:conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids},
:order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues_by_version[version] = issues
end
end
@versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
end
def show
@issues = @version.fixed_issues.visible.find(:all,
@ -39,6 +63,17 @@ class VersionsController < ApplicationController
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
@version.attributes = attributes
end
end
def create
# TODO: refactor with code above in #new
@version = @project.versions.build
if params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
@version.attributes = attributes
end
if request.post?
if @version.save
respond_to do |format|
@ -55,7 +90,7 @@ class VersionsController < ApplicationController
end
else
respond_to do |format|
format.html
format.html { render :action => 'new' }
format.js do
render(:update) {|page| page.alert(@version.errors.full_messages.join('\n')) }
end
@ -63,9 +98,12 @@ class VersionsController < ApplicationController
end
end
end
def edit
if request.post? && params[:version]
end
def update
if request.put? && params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless @version.allowed_sharings.include?(attributes['sharing'])
if @version.update_attributes(attributes)
@ -76,7 +114,7 @@ class VersionsController < ApplicationController
end
def close_completed
if request.post?
if request.put?
@project.close_completed_versions
end
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
@ -105,4 +143,13 @@ private
rescue ActiveRecord::RecordNotFound
render_404
end
def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
if ids = params[:tracker_ids]
@selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
else
@selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
end
end
end

View File

@ -20,12 +20,4 @@ module AdminHelper
options_for_select([[l(:label_all), ''],
[l(:status_active), 1]], selected)
end
def css_project_classes(project)
s = 'project'
s << ' root' if project.root?
s << ' child' if project.child?
s << (project.leaf? ? ' leaf' : ' parent')
s
end
end

View File

@ -32,8 +32,27 @@ module ApplicationHelper
end
# Display a link if user is authorized
#
# @param [String] name Anchor text (passed to link_to)
# @param [Hash, String] options Hash params or url for the link target (passed to link_to).
# This will checked by authorize_for to see if the user is authorized
# @param [optional, Hash] html_options Options passed to link_to
# @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to
def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference)
link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action])
if options.is_a?(String)
begin
route = ActionController::Routing::Routes.recognize_path(options.gsub(/\?.*/,''), :method => options[:method] || :get)
link_controller = route[:controller]
link_action = route[:action]
rescue ActionController::RoutingError # Parse failed, not a route
link_controller, link_action = nil, nil
end
else
link_controller = options[:controller] || params[:controller]
link_action = options[:action]
end
link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(link_controller, link_action)
end
# Display a link to remote if user is authorized
@ -102,6 +121,11 @@ module ApplicationHelper
link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => revision}, :title => l(:label_revision_id, revision))
end
def link_to_project(project, options={})
options[:class] ||= 'project'
link_to(h(project), {:controller => 'projects', :action => 'show', :id => project}, :class => options[:class])
end
# Generates a link to a project if active
# Examples:
@ -302,7 +326,7 @@ module ApplicationHelper
def time_tag(time)
text = distance_of_time_in_words(Time.now, time)
if @project
link_to(text, {:controller => 'projects', :action => 'activity', :id => @project, :from => time.to_date}, :title => format_time(time))
link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => time.to_date}, :title => format_time(time))
else
content_tag('acronym', text, :title => format_time(time))
end
@ -805,7 +829,7 @@ module ApplicationHelper
# +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
def avatar(user, options = { })
if Setting.gravatar_enabled?
options.merge!({:ssl => Setting.protocol == 'https', :default => Setting.gravatar_default})
options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
email = nil
if user.respond_to?(:mail)
email = user.mail
@ -813,6 +837,8 @@ module ApplicationHelper
email = $1
end
return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil
else
''
end
end

View File

@ -0,0 +1,45 @@
module CalendarsHelper
def link_to_previous_month(year, month, options={})
target_year, target_month = if month == 1
[year - 1, 12]
else
[year, month - 1]
end
name = if target_month == 12
"#{month_name(target_month)} #{target_year}"
else
"#{month_name(target_month)}"
end
link_to_month(('&#171; ' + name), target_year, target_month, options)
end
def link_to_next_month(year, month, options={})
target_year, target_month = if month == 12
[year + 1, 1]
else
[year, month + 1]
end
name = if target_month == 1
"#{month_name(target_month)} #{target_year}"
else
"#{month_name(target_month)}"
end
link_to_month((name + ' &#187;'), target_year, target_month, options)
end
def link_to_month(link_name, year, month, options={})
project_id = options[:project].present? ? options[:project].to_param : nil
link_target = calendar_path(:year => year, :month => month, :project_id => project_id)
link_to_remote(link_name,
{:update => "content", :url => link_target, :method => :put},
{:href => link_target})
end
end

View File

@ -0,0 +1,24 @@
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module GanttHelper
def number_of_issues_on_versions(gantt)
versions = gantt.events.collect {|event| (event.is_a? Version) ? event : nil}.compact
versions.sum {|v| v.fixed_issues.for_gantt.with_query(@query).count}
end
end

View File

@ -35,8 +35,10 @@ module IssuesHelper
@cached_label_due_date ||= l(:field_due_date)
@cached_label_assigned_to ||= l(:field_assigned_to)
@cached_label_priority ||= l(:field_priority)
@cached_label_project ||= l(:field_project)
link_to_issue(issue) + "<br /><br />" +
"<strong>#{@cached_label_project}</strong>: #{link_to_project(issue.project)}<br />" +
"<strong>#{@cached_label_status}</strong>: #{issue.status.name}<br />" +
"<strong>#{@cached_label_start_date}</strong>: #{format_date(issue.start_date)}<br />" +
"<strong>#{@cached_label_due_date}</strong>: #{format_date(issue.due_date)}<br />" +
@ -243,7 +245,7 @@ module IssuesHelper
when :in
if gantt.zoom < 4
link_to_remote(l(:text_zoom_in) + image_tag('zoom_in.png', img_attributes.merge(:alt => l(:text_zoom_in))),
{:url => gantt.params.merge(:zoom => (gantt.zoom+1)), :update => 'content'},
{:url => gantt.params.merge(:zoom => (gantt.zoom+1)), :method => :get, :update => 'content'},
{:href => url_for(gantt.params.merge(:zoom => (gantt.zoom+1)))})
else
l(:text_zoom_in) +
@ -253,7 +255,7 @@ module IssuesHelper
when :out
if gantt.zoom > 1
link_to_remote(l(:text_zoom_out) + image_tag('zoom_out.png', img_attributes.merge(:alt => l(:text_zoom_out))),
{:url => gantt.params.merge(:zoom => (gantt.zoom-1)), :update => 'content'},
{:url => gantt.params.merge(:zoom => (gantt.zoom-1)), :method => :get, :update => 'content'},
{:href => url_for(gantt.params.merge(:zoom => (gantt.zoom-1)))})
else
l(:text_zoom_out) +

View File

@ -62,10 +62,28 @@ class Issue < ActiveRecord::Base
named_scope :open, :conditions => ["#{IssueStatus.table_name}.is_closed = ?", false], :include => :status
named_scope :recently_updated, :order => "#{self.table_name}.updated_on DESC"
named_scope :recently_updated, :order => "#{Issue.table_name}.updated_on DESC"
named_scope :with_limit, lambda { |limit| { :limit => limit} }
named_scope :on_active_project, :include => [:status, :project, :tracker],
:conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"]
named_scope :for_gantt, lambda {
{
:include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version],
:order => "#{Issue.table_name}.due_date ASC, #{Issue.table_name}.start_date ASC, #{Issue.table_name}.id ASC"
}
}
named_scope :without_version, lambda {
{
:conditions => { :fixed_version_id => nil}
}
}
named_scope :with_query, lambda {|query|
{
:conditions => Query.merge_conditions(query.statement)
}
}
before_create :default_assign
before_save :reschedule_following_issues, :close_duplicates, :update_done_ratio_from_issue_status
@ -357,6 +375,18 @@ class Issue < ActiveRecord::Base
def overdue?
!due_date.nil? && (due_date < Date.today) && !status.is_closed?
end
# Is the amount of work done less than it should for the due date
def behind_schedule?
return false if start_date.nil? || due_date.nil?
done_date = start_date + ((due_date - start_date+1)* done_ratio/100).floor
return done_date <= Date.today
end
# Does this issue have children?
def children?
!leaf?
end
# Users the issue can be assigned to
def assignable_users
@ -821,7 +851,7 @@ class Issue < ActiveRecord::Base
j.id as #{select_field},
count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} as j
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{joins} j
where
i.status_id=s.id
and #{where}

View File

@ -65,4 +65,12 @@ class Journal < ActiveRecord::Base
def attachments
journalized.respond_to?(:attachments) ? journalized.attachments : nil
end
# Returns a string of css classes
def css_classes
s = 'journal'
s << ' has-notes' unless notes.blank?
s << ' has-details' unless details.blank?
s
end
end

View File

@ -33,7 +33,11 @@ class Principal < ActiveRecord::Base
}
before_create :set_default_empty_values
def name(formatter = nil)
to_s
end
def <=>(principal)
if self.class.name == principal.class.name
self.to_s.downcase <=> principal.to_s.downcase

View File

@ -412,6 +412,58 @@ class Project < ActiveRecord::Base
def short_description(length = 255)
description.gsub(/^(.{#{length}}[^\n\r]*).*$/m, '\1...').strip if description
end
def css_classes
s = 'project'
s << ' root' if root?
s << ' child' if child?
s << (leaf? ? ' leaf' : ' parent')
s
end
# The earliest start date of a project, based on it's issues and versions
def start_date
if module_enabled?(:issue_tracking)
[
issues.minimum('start_date'),
shared_versions.collect(&:effective_date),
shared_versions.collect {|v| v.fixed_issues.minimum('start_date')}
].flatten.compact.min
end
end
# The latest due date of an issue or version
def due_date
if module_enabled?(:issue_tracking)
[
issues.maximum('due_date'),
shared_versions.collect(&:effective_date),
shared_versions.collect {|v| v.fixed_issues.maximum('due_date')}
].flatten.compact.max
end
end
def overdue?
active? && !due_date.nil? && (due_date < Date.today)
end
# Returns the percent completed for this project, based on the
# progress on it's versions.
def completed_percent(options={:include_subprojects => false})
if options.delete(:include_subprojects)
total = self_and_descendants.collect(&:completed_percent).sum
total / self_and_descendants.count
else
if versions.count > 0
total = versions.collect(&:completed_pourcent).sum
total / versions.count
else
100
end
end
end
# Return true if this project is allowed to do the specified action.
# action can be:
@ -441,6 +493,15 @@ class Project < ActiveRecord::Base
enabled_modules.clear
end
end
# Returns an array of projects that are in this project's hierarchy
#
# Example: parents, children, siblings
def hierarchy
parents = project.self_and_ancestors || []
descendants = project.descendants || []
project_hierarchy = parents | descendants # Set union
end
# Returns an auto-generated project identifier based on the last identifier used
def self.next_identifier

View File

@ -195,6 +195,12 @@ class Query < ActiveRecord::Base
end
@available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty?
@available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } unless user_values.empty?
group_values = Group.all.collect {|g| [g.name, g.id] }
@available_filters["member_of_group"] = { :type => :list_optional, :order => 6, :values => group_values } unless group_values.empty?
role_values = Role.givable.collect {|r| [r.name, r.id] }
@available_filters["assigned_to_role"] = { :type => :list_optional, :order => 7, :values => role_values } unless role_values.empty?
if User.current.logged?
@available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] }
@ -432,6 +438,47 @@ class Query < ActiveRecord::Base
db_field = 'user_id'
sql << "#{Issue.table_name}.id #{ operator == '=' ? 'IN' : 'NOT IN' } (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND "
sql << sql_for_field(field, '=', v, db_table, db_field) + ')'
elsif field == "member_of_group" # named field
if operator == '*' # Any group
groups = Group.all
operator = '=' # Override the operator since we want to find by assigned_to
elsif operator == "!*"
groups = Group.all
operator = '!' # Override the operator since we want to find by assigned_to
else
groups = Group.find_all_by_id(v)
end
groups ||= []
members_of_groups = groups.inject([]) {|user_ids, group|
if group && group.user_ids.present?
user_ids << group.user_ids
end
user_ids.flatten.uniq.compact
}.sort.collect(&:to_s)
sql << '(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')'
elsif field == "assigned_to_role" # named field
if operator == "*" # Any Role
roles = Role.givable
operator = '=' # Override the operator since we want to find by assigned_to
elsif operator == "!*" # No role
roles = Role.givable
operator = '!' # Override the operator since we want to find by assigned_to
else
roles = Role.givable.find_all_by_id(v)
end
roles ||= []
members_of_roles = roles.inject([]) {|user_ids, role|
if role && role.members
user_ids << role.members.collect(&:user_id)
end
user_ids.flatten.uniq.compact
}.sort.collect(&:to_s)
sql << '(' + sql_for_field("assigned_to_id", operator, members_of_roles, Issue.table_name, "assigned_to_id", false) + ')'
else
# regular field
db_table = Issue.table_name

View File

@ -81,4 +81,20 @@ class TimeEntry < ActiveRecord::Base
yield
end
end
def self.earilest_date_for_project(project=nil)
finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
if project
finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
end
TimeEntry.minimum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
end
def self.latest_date_for_project(project=nil)
finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
if project
finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
end
TimeEntry.maximum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
end
end

View File

@ -73,6 +73,18 @@ class Version < ActiveRecord::Base
def completed?
effective_date && (effective_date <= Date.today) && (open_issues_count == 0)
end
def behind_schedule?
if completed_pourcent == 100
return false
elsif due_date && fixed_issues.present? && fixed_issues.minimum('start_date') # TODO: should use #start_date but that method is wrong...
start_date = fixed_issues.minimum('start_date')
done_date = start_date + ((due_date - start_date+1)* completed_pourcent/100).floor
return done_date <= Date.today
else
false # No issues so it's not late
end
end
# Returns the completion percentage of this version based on the amount of open/closed issues
# and the time spent on the open issues.
@ -123,6 +135,10 @@ class Version < ActiveRecord::Base
end
def to_s; name end
def to_s_with_project
"#{project} - #{name}"
end
# Versions are sorted by effective_date and "Project Name - Version name"
# Those with no effective_date are at the end, sorted by "Project Name - Version name"

View File

@ -1,5 +1,5 @@
<div class="contextual">
<%= link_to l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add' %>
<%= link_to l(:label_project_new), {:controller => 'projects', :action => 'new'}, :class => 'icon icon-add' %>
</div>
<h2><%=l(:label_project_plural)%></h2>
@ -26,7 +26,7 @@
</tr></thead>
<tbody>
<% project_tree(@projects) do |project, level| %>
<tr class="<%= cycle("odd", "even") %> <%= css_project_classes(project) %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
<tr class="<%= cycle("odd", "even") %> <%= project.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
<td class="name"><%= link_to_project(project, :action => 'settings') %></td>
<td><%= textilizable project.short_description, :project => project %></td>
<td align="center"><%= checked_image project.is_public? %></td>
@ -35,7 +35,7 @@
<%= link_to(l(:button_archive), { :controller => 'projects', :action => 'archive', :id => project, :status => params[:status] }, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-lock') if project.active? %>
<%= link_to(l(:button_unarchive), { :controller => 'projects', :action => 'unarchive', :id => project, :status => params[:status] }, :method => :post, :class => 'icon icon-unlock') if !project.active? && (project.parent.nil? || project.parent.active?) %>
<%= link_to(l(:button_copy), { :controller => 'projects', :action => 'copy', :id => project }, :class => 'icon icon-copy') %>
<%= link_to(l(:button_delete), { :controller => 'projects', :action => 'destroy', :id => project }, :class => 'icon icon-del') %>
<%= link_to(l(:button_delete), project_destroy_confirm_path(project), :class => 'icon icon-del') %>
</td>
</tr>
<% end %>

View File

@ -30,11 +30,11 @@
</table>
<% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_messages => 1, :key => User.current.rss_key} %>
<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_messages => 1, :key => User.current.rss_key} %>
<% end %>
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %>
<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %>
<% end %>
<% html_title l(:label_board_plural) %>

View File

@ -1,6 +1,7 @@
<h2><%= l(:label_calendar) %></h2>
<% form_tag({}, :id => 'query_form') do %>
<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %>
<%= hidden_field_tag('project_id', @project.to_param) if @project%>
<fieldset id="filters" class="collapsible">
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
<div>
@ -9,14 +10,7 @@
</fieldset>
<p style="float:right;">
<%= link_to_remote ('&#171; ' + (@month==1 ? "#{month_name(12)} #{@year-1}" : "#{month_name(@month-1)}")),
{:update => "content", :url => { :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1) }},
{:href => url_for(:action => 'show', :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1))}
%> |
<%= link_to_remote ((@month==12 ? "#{month_name(1)} #{@year+1}" : "#{month_name(@month+1)}") + ' &#187;'),
{:update => "content", :url => { :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1) }},
{:href => url_for(:action => 'show', :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1))}
%>
<%= link_to_previous_month(@year, @month, :project => @project) %> | <%= link_to_next_month(@year, @month, :project => @project) %>
</p>
<p class="buttons">

View File

@ -4,20 +4,23 @@
<% if !@issue.nil? -%>
<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'edit', :id => @issue},
:class => 'icon-edit', :disabled => !@can[:edit] %></li>
<li class="folder">
<a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a>
<ul>
<% @statuses.each do |s| -%>
<li><%= context_menu_link s.name, {:controller => 'issues', :action => 'update', :id => @issue, :issue => {:status_id => s}, :back_url => @back}, :method => :put,
:selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
<% end -%>
</ul>
</li>
<% else %>
<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id)},
:class => 'icon-edit', :disabled => !@can[:edit] %></li>
<% end %>
<% unless @allowed_statuses.empty? %>
<li class="folder">
<a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a>
<ul>
<% @statuses.each do |s| -%>
<li><%= context_menu_link s.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :issue => {:status_id => s}, :back_url => @back}, :method => :post,
:selected => (@issue && s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
<% end -%>
</ul>
</li>
<% end %>
<% unless @trackers.nil? %>
<li class="folder">
<a href="#" class="submenu"><%= l(:field_tracker) %></a>
@ -29,6 +32,8 @@
</ul>
</li>
<% end %>
<% if @projects.size == 1 %>
<li class="folder">
<a href="#" class="submenu"><%= l(:field_priority) %></a>
<ul>
@ -38,6 +43,8 @@
<% end -%>
</ul>
</li>
<% end %>
<% unless @project.nil? || @project.shared_versions.open.empty? -%>
<li class="folder">
<a href="#" class="submenu"><%= l(:field_fixed_version) %></a>
@ -77,7 +84,8 @@
</ul>
</li>
<% end -%>
<% if Issue.use_field_for_done_ratio? %>
<% if Issue.use_field_for_done_ratio? && @projects.size == 1 %>
<li class="folder">
<a href="#" class="submenu"><%= l(:field_done_ratio) %></a>
<ul>
@ -88,6 +96,7 @@
</ul>
</li>
<% end %>
<% if !@issue.nil? %>
<% if @can[:log_time] -%>
<li><%= context_menu_link l(:button_log_time), {:controller => 'timelog', :action => 'edit', :issue_id => @issue},

View File

@ -1,5 +1,5 @@
<div class="contextual">
<%= link_to_if_authorized l(:label_attachment_new), {:controller => 'projects', :action => 'add_file', :id => @project}, :class => 'icon icon-add' %>
<%= link_to_if_authorized l(:label_attachment_new), new_project_file_path(@project), :class => 'icon icon-add' %>
</div>
<h2><%=l(:label_attachment_plural)%></h2>

View File

@ -2,7 +2,7 @@
<%= error_messages_for 'attachment' %>
<div class="box">
<% form_tag({ :action => 'add_file', :id => @project }, :multipart => true, :class => "tabular") do %>
<% form_tag(project_files_path(@project), :multipart => true, :class => "tabular") do %>
<% if @versions.any? %>
<p><label for="version_id"><%=l(:field_version)%></label>

View File

@ -1,6 +1,8 @@
<% @gantt.view = self %>
<h2><%= l(:label_gantt) %></h2>
<% form_tag(params.merge(:month => nil, :year => nil, :months => nil), :id => 'query_form') do %>
<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %>
<%= hidden_field_tag('project_id', @project.to_param) if @project%>
<fieldset id="filters" class="collapsible">
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
<div>
@ -54,11 +56,12 @@ if @gantt.zoom >1
end
end
# Width of the entire chart
g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
g_height = [(20 * @gantt.events.length + 6)+150, 206].max
# Collect the number of issues on Versions
g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
t_height = g_height + headers_height
%>
<table width="100%" style="border:0; border-collapse: collapse;">
<tr>
<td style="width:<%= subject_width %>px; padding:0px;">
@ -66,26 +69,10 @@ t_height = g_height + headers_height
<div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width + 1 %>px;">
<div style="right:-2px;width:<%= subject_width %>px;height:<%= headers_height %>px;background: #eee;" class="gantt_hdr"></div>
<div style="right:-2px;width:<%= subject_width %>px;height:<%= t_height %>px;border-left: 1px solid #c0c0c0;overflow:hidden;" class="gantt_hdr"></div>
<%
#
# Tasks subjects
#
top = headers_height + 8
@gantt.events.each do |i|
left = 4 + (i.is_a?(Issue) ? i.level * 16 : 0)
%>
<div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:<%= left %>px;overflow:hidden;"><small>
<% if i.is_a? Issue %>
<%= h("#{i.project} -") unless @project && @project == i.project %>
<%= link_to_issue i %>
<% else %>
<span class="icon icon-package">
<%= link_to_version i %>
</span>
<% end %>
</small></div>
<% top = top + 20
end %>
<% top = headers_height + 8 %>
<%= @gantt.subjects(:headers_height => headers_height, :top => top, :g_width => g_width) %>
</div>
</td>
<td>
@ -163,53 +150,9 @@ if show_days
end
end %>
<%
#
# Tasks
#
top = headers_height + 10
@gantt.events.each do |i|
if i.is_a? Issue
i_start_date = (i.start_date >= @gantt.date_from ? i.start_date : @gantt.date_from )
i_end_date = (i.due_before <= @gantt.date_to ? i.due_before : @gantt.date_to )
i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
i_done_date = (i_done_date <= @gantt.date_from ? @gantt.date_from : i_done_date )
i_done_date = (i_done_date >= @gantt.date_to ? @gantt.date_to : i_done_date )
i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
i_left = ((i_start_date - @gantt.date_from)*zoom).floor
i_width = ((i_end_date - i_start_date + 1)*zoom).floor - 2 # total width of the issue (- 2 for left and right borders)
d_width = ((i_done_date - i_start_date)*zoom).floor - 2 # done width
l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor - 2 : 0 # delay width
css = "task " + (i.leaf? ? 'leaf' : 'parent')
%>
<div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;" class="<%= css %> task_todo"><div class="left"></div>&nbsp;<div class="right"></div></div>
<% if l_width > 0 %>
<div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= l_width %>px;" class="<%= css %> task_late">&nbsp;</div>
<% end %>
<% if d_width > 0 %>
<div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= d_width %>px;" class="<%= css %> task_done">&nbsp;</div>
<% end %>
<div style="top:<%= top %>px;left:<%= i_left + i_width + 8 %>px;background:#fff;" class="<%= css %>">
<%= i.status.name %>
<%= (i.done_ratio).to_i %>%
</div>
<div class="tooltip" style="position: absolute;top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;height:12px;">
<span class="tip">
<%= render_issue_tooltip i %>
</span></div>
<% else
i_left = ((i.start_date - @gantt.date_from)*zoom).floor
%>
<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">
<strong><%= format_version_name i %></strong>
</div>
<% end %>
<% top = top + 20
end %>
<% top = headers_height + 10 %>
<%= @gantt.lines(:top => top, :zoom => zoom, :g_width => g_width ) %>
<%
#
@ -226,8 +169,8 @@ if Date.today >= @gantt.date_from and Date.today <= @gantt.date_to %>
<table width="100%">
<tr>
<td align="left"><%= link_to_remote ('&#171; ' + l(:label_previous)), {:url => @gantt.params_previous, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %></td>
<td align="right"><%= link_to_remote (l(:label_next) + ' &#187;'), {:url => @gantt.params_next, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %></td>
<td align="left"><%= link_to_remote ('&#171; ' + l(:label_previous)), {:url => @gantt.params_previous, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %></td>
<td align="right"><%= link_to_remote (l(:label_next) + ' &#187;'), {:url => @gantt.params_next, :method => :get, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %></td>
</tr>
</table>

View File

@ -6,5 +6,5 @@
<%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %>
<%= link_to_if_authorized l(:button_copy), new_issue_move_path(:id => @issue, :copy_options => {:copy => 't'}), :class => 'icon icon-copy' %>
<%= link_to_if_authorized l(:button_move), new_issue_move_path(:id => @issue), :class => 'icon icon-move' %>
<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
<%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => (@issue.leaf? ? l(:text_are_you_sure) : l(:text_are_you_sure_with_children)), :method => :post, :class => 'icon icon-del' %>
</div>

View File

@ -23,7 +23,7 @@
<%= prompt_to_remote(image_tag('add.png', :style => 'vertical-align: middle;'),
l(:label_version_new),
'version[name]',
{:controller => 'versions', :action => 'new', :project_id => @project},
{:controller => 'versions', :action => 'create', :project_id => @project},
:title => l(:label_version_new),
:tabindex => 200) if authorize_for('versions', 'new') %>
</p>
@ -40,6 +40,6 @@
</div>
<div style="clear:both;"> </div>
<%= render :partial => 'form_custom_fields' %>
<%= render :partial => 'issues/form_custom_fields' %>
<% end %>

View File

@ -20,7 +20,7 @@
</div>
<div id="attributes" class="attributes">
<%= render :partial => 'attributes' %>
<%= render :partial => 'issues/attributes' %>
</div>
<% if @issue.new_record? %>

View File

@ -1,6 +1,6 @@
<% reply_links = authorize_for('issues', 'edit') -%>
<% for journal in journals %>
<div id="change-<%= journal.id %>" class="journal">
<div id="change-<%= journal.id %>" class="<%= journal.css_classes %>">
<h4><div class="journal-link"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
<%= avatar(journal.user, :size => "24") %>
<%= content_tag('a', '', :name => "note-#{journal.indice}")%>

View File

@ -3,7 +3,7 @@
<div class="autoscroll">
<table class="list issues">
<thead><tr>
<th><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
<th class="checkbox hide-when-print"><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
</th>
<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
@ -25,7 +25,7 @@
<% previous_group = group %>
<% end %>
<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
<td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
<td class="id"><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
<% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
</tr>

View File

@ -28,6 +28,7 @@
<% remote_form_for(:relation, @relation,
:url => {:controller => 'issue_relations', :action => 'new', :issue_id => @issue},
:method => :post,
:complete => "Form.Element.focus('relation_issue_to_id');",
:html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}) do |f| %>
<%= render :partial => 'issue_relations/form', :locals => {:f => f}%>
<% end %>

View File

@ -2,7 +2,7 @@
<ul><%= @issues.collect {|i| content_tag('li', link_to(h("#{i.tracker} ##{i.id}"), { :action => 'show', :id => i }) + h(": #{i.subject}")) }.join("\n") %></ul>
<% form_tag() do %>
<% form_tag(:action => 'bulk_update') do %>
<%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
<div class="box tabular">
<fieldset class="attributes">

View File

@ -39,6 +39,7 @@
{ :url => { :set_filter => 1 },
:before => 'selectAllOptions("selected_columns");',
:update => "content",
:complete => "apply_filters_observer()",
:with => "Form.serialize('query_form')"
}, :class => 'icon icon-checked' %>

View File

@ -12,3 +12,7 @@
}, :accesskey => accesskey(:preview) %>
<% end %>
<div id="preview" class="wiki"></div>
<% content_for :header_tags do %>
<%= stylesheet_link_tag 'scm' %>
<% end %>

View File

@ -7,7 +7,7 @@
<div id="add-news" style="display:none;">
<h2><%=l(:label_news_new)%></h2>
<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
:html => { :id => 'news-form' } do |f| %>
<%= render :partial => 'news/form', :locals => { :f => f } %>
<%= submit_tag l(:button_create) %>
@ -45,6 +45,7 @@
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :page => nil, :key => User.current.rss_key})) %>
<%= stylesheet_link_tag 'scm' %>
<% end %>
<% html_title(l(:label_news_plural)) -%>

View File

@ -1,6 +1,6 @@
<h2><%=l(:label_news_new)%></h2>
<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
:html => { :id => 'news-form' } do |f| %>
<%= render :partial => 'news/form', :locals => { :f => f } %>
<%= submit_tag l(:button_create) %>

View File

@ -1,4 +1,4 @@
<% labelled_tabular_form_for :project, @project, :url => { :action => "edit", :id => @project } do |f| %>
<% labelled_tabular_form_for :project, @project, :url => project_path(@project), :html => {:method => (@project.new_record? ? :post : :put) } do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= submit_tag l(:button_save) %>
<% end %>

View File

@ -8,7 +8,7 @@
<% end %>
</p>
<p>
<% form_tag({:controller => 'projects', :action => 'destroy', :id => @project_to_destroy}) do %>
<% form_tag(project_path(@project_to_destroy), :method => :delete) do %>
<label><%= check_box_tag 'confirm', 1 %> <%= l(:general_text_Yes) %></label>
<%= submit_tag l(:button_delete) %>
<% end %>

View File

@ -3,10 +3,10 @@
<% end %>
<div class="contextual">
<%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %>
<%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'new'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %>
<%= link_to(l(:label_issue_view_all), { :controller => 'issues' }) + ' |' if User.current.allowed_to?(:view_issues, nil, :global => true) %>
<%= link_to(l(:label_overall_spent_time), { :controller => 'time_entries' }) + ' |' if User.current.allowed_to?(:view_time_entries, nil, :global => true) %>
<%= link_to l(:label_overall_activity), { :controller => 'projects', :action => 'activity' }%>
<%= link_to l(:label_overall_activity), { :controller => 'activities', :action => 'index' }%>
</div>
<h2><%=l(:label_project_plural)%></h2>

View File

@ -1,6 +1,6 @@
<h2><%=l(:label_project_new)%></h2>
<% labelled_tabular_form_for :project, @project, :url => { :action => "add" } do |f| %>
<% labelled_tabular_form_for :project, @project, :url => { :action => "create" } do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<fieldset class="box"><legend><%= l(:label_module_plural) %></legend>

View File

@ -1,4 +1,4 @@
<% form_tag({:controller => 'projects', :action => 'save_activities', :id => @project}, :class => "tabular") do %>
<% form_tag(project_project_enumerations_path(@project), :method => :put, :class => "tabular") do %>
<table class="list">
<thead><tr>
@ -32,7 +32,7 @@
</table>
<div class="contextual">
<%= link_to(l(:button_reset), {:controller => 'projects', :action => 'reset_activities', :id => @project},
<%= link_to(l(:button_reset), project_project_enumerations_path(@project),
:method => :delete,
:confirm => l(:text_are_you_sure),
:class => 'icon icon-del') %>

View File

@ -21,7 +21,7 @@
<td class="buttons">
<% if version.project == @project %>
<%= link_to_if_authorized l(:button_edit), {:controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %>
<%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
<%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %>
<% end %>
</td>
</tr>
@ -34,7 +34,7 @@
<div class="contextual">
<% if @project.versions.any? %>
<%= link_to l(:label_close_versions), {:controller => 'versions', :action => 'close_completed', :project_id => @project}, :method => :post %>
<%= link_to l(:label_close_versions), close_completed_project_versions_path(@project), :method => :put %>
<% end %>
</div>

View File

@ -1,6 +1,6 @@
<div class="contextual">
<% if User.current.allowed_to?(:add_subprojects, @project) %>
<%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'add', :parent_id => @project}, :class => 'icon icon-add' %>
<%= link_to l(:label_subproject_new), {:controller => 'projects', :action => 'new', :parent_id => @project}, :class => 'icon icon-add' %>
<% end %>
</div>
@ -74,7 +74,7 @@
<% end %>
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, {:action => 'activity', :id => @project, :format => 'atom', :key => User.current.rss_key}) %>
<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :key => User.current.rss_key}) %>
<% end %>
<% html_title(l(:label_overview)) -%>

View File

@ -53,6 +53,18 @@ function toggle_multi_select(field) {
select.multiple = true;
}
}
function apply_filters_observer() {
$$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
if(e.keyCode == Event.KEY_RETURN) {
<%= remote_function(:url => { :set_filter => 1},
:update => "content",
:with => "Form.serialize('query_form')",
:complete => "e.stop(); apply_filters_observer()") %>
}
});
}
Event.observe(document,"dom:loaded", apply_filters_observer);
//]]>
</script>

View File

@ -1,7 +1,7 @@
<h2><%= l(:label_revision) %> <%= format_revision(@rev_to) + ':' if @rev_to %><%= format_revision(@rev) %> <%=h @path %></h2>
<!-- Choose view type -->
<% form_tag({:path => @path}, :method => 'get') do %>
<% form_tag({:path => to_path_param(@path)}, :method => 'get') do %>
<%= hidden_field_tag('rev', params[:rev]) if params[:rev] %>
<%= hidden_field_tag('rev_to', params[:rev_to]) if params[:rev_to] %>
<p><label><%= l(:label_view_diff) %></label>

View File

@ -35,7 +35,7 @@
<div class="splitcontentright">
<% unless @events_by_day.empty? %>
<h3><%= link_to l(:label_activity), :controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %></h3>
<h3><%= link_to l(:label_activity), :controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %></h3>
<p>
<%=l(:label_reported_issues)%>: <%= Issue.count(:conditions => ["author_id=?", @user.id]) %>
@ -57,11 +57,11 @@
</div>
<% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :key => User.current.rss_key} %>
<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :key => User.current.rss_key} %>
<% end %>
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :user_id => @user, :format => :atom, :key => User.current.rss_key) %>
<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :user_id => @user, :format => :atom, :key => User.current.rss_key) %>
<% end %>
<% end %>
<%= call_hook :view_account_right_bottom, :user => @user %>

View File

@ -5,7 +5,7 @@
select_tag('status_by',
status_by_options_for_select(criteria),
:id => 'status_by_select',
:onchange => remote_function(:url => { :action => :status_by, :id => version },
:onchange => remote_function(:url => status_by_project_version_path(version.project, version),
:with => "Form.serialize('status_by_form')"))) %>
</legend>
<% if counts.empty? %>

View File

@ -1,6 +1,6 @@
<h2><%=l(:label_version)%></h2>
<% labelled_tabular_form_for :version, @version, :url => { :action => 'edit' } do |f| %>
<% labelled_tabular_form_for :version, @version, :url => project_version_path(@project, @version), :html => {:method => :put} do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= submit_tag l(:button_save) %>
<% end %>

View File

@ -51,4 +51,4 @@
<% html_title(l(:label_roadmap)) %>
<%= context_menu :controller => 'issues', :action => 'context_menu' %>
<%= context_menu issues_context_menu_path %>

View File

@ -1,6 +1,6 @@
<h2><%=l(:label_version_new)%></h2>
<% labelled_tabular_form_for :version, @version, :url => { :action => 'new' } do |f| %>
<% labelled_tabular_form_for :version, @version, :url => project_versions_path(@project) do |f| %>
<%= render :partial => 'versions/form', :locals => { :f => f } %>
<%= submit_tag l(:button_create) %>
<% end %>
<% end %>

View File

@ -1,5 +1,6 @@
<div class="contextual">
<%= link_to_if_authorized l(:button_edit), {:controller => 'versions', :action => 'edit', :id => @version}, :class => 'icon icon-edit' %>
<%= link_to_if_authorized(l(:button_edit_associated_wikipage, :page_title => @version.wiki_page_title), {:controller => 'wiki', :action => 'edit', :page => Wiki.titleize(@version.wiki_page_title)}, :class => 'icon icon-edit') unless @version.wiki_page_title.blank? || @project.wiki.nil? %>
<%= call_hook(:view_versions_show_contextual, { :version => @version, :project => @project }) %>
</div>

View File

@ -34,6 +34,6 @@
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
:title => "#{Setting.app_title}: #{l(:label_news_latest)}") %>
<%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :key => User.current.rss_key, :format => 'atom'},
<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
:title => "#{Setting.app_title}: #{l(:label_activity)}") %>
<% end %>

View File

@ -23,11 +23,11 @@
<% unless @pages.empty? %>
<% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
<%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %>
<% end %>
<% end %>
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
<% end %>

View File

@ -16,11 +16,11 @@
<% unless @pages.empty? %>
<% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %>
<%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %>
<% end %>
<% end %>
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
<% end %>

View File

@ -4,9 +4,14 @@
# Code is not reloaded between requests
config.cache_classes = true
#####
# Customize the default logger (http://ruby-doc.org/core/classes/Logger.html)
#
# Use a different logger for distributed setups
# config.logger = SyslogLogger.new
#
# Rotate logs bigger than 1MB, keeps no more than 7 rotated logs around.
# config.logger = Logger.new(config.log_path, 7, 1048576)
# Full error reports are disabled and caching is turned on
config.action_controller.consider_all_requests_local = false

View File

@ -116,6 +116,7 @@ bg:
greater_than_start_date: "трябва да е след началната дата"
not_same_project: "не е от същия проект"
circular_dependency: "Тази релация ще доведе до безкрайна зависимост"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Изберете
@ -906,3 +907,7 @@ bg:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -130,6 +130,7 @@ bs:
greater_than_start_date: "mora biti veći nego početni datum"
not_same_project: "ne pripada istom projektu"
circular_dependency: "Ova relacija stvar cirkularnu zavisnost"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Molimo odaberite
@ -926,3 +927,7 @@ bs:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -1,4 +1,8 @@
# Redmine catalan translation:
# by Joan Duran
ca:
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
direction: ltr
date:
formats:
@ -65,6 +69,7 @@ ca:
other: "almost {{count}} years"
number:
# Default format for numbers
format:
separator: "."
delimiter: ""
@ -83,6 +88,7 @@ ca:
mb: "MB"
gb: "GB"
tb: "TB"
# Used in array.to_sentence.
support:
@ -116,6 +122,7 @@ ca:
greater_than_start_date: "ha de ser superior que la data inicial"
not_same_project: "no pertany al mateix projecte"
circular_dependency: "Aquesta relació crearia una dependència circular"
cant_link_an_issue_with_a_descendant: "Un assumpte no es pot enllaçar a una de les seves subtasques"
actionview_instancetag_blank_option: Seleccioneu
@ -149,18 +156,33 @@ ca:
notice_email_sent: "S'ha enviat un correu electrònic a {{value}}"
notice_email_error: "S'ha produït un error en enviar el correu ({{value}})"
notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del RSS."
notice_api_access_key_reseted: "S'ha reiniciat la clau d'accés a l'API."
notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de {{count}} seleccionats: {{ids}}."
notice_failed_to_save_members: "No s'han pogut desar els membres: {{errors}}."
notice_no_issue_selected: "No s'ha seleccionat cap assumpte. Activeu els assumptes que voleu editar."
notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador."
notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada."
notice_unable_delete_version: "No s'ha pogut suprimir la versió."
notice_unable_delete_time_entry: "No s'ha pogut suprimir l'entrada del registre de temps."
notice_issue_done_ratios_updated: "S'ha actualitzat el tant per cent dels assumptes."
error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: {{value}} "
error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el dipòsit."
error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: {{value}}"
error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar."
error_issue_not_found_in_project: "No s'ha trobat l'assumpte o no pertany a aquest projecte"
error_no_tracker_in_project: "Aquest projecte no té seguidor associat. Comproveu els paràmetres del projecte."
error_no_default_issue_status: "No s'ha definit cap estat d'assumpte predeterminat. Comproveu la configuració (aneu a «Administració -> Estats de l'assumpte»)."
error_can_not_delete_custom_field: "No s'ha pogut suprimir el camp personalitat"
error_can_not_delete_tracker: "Aquest seguidor conté assumptes i no es pot suprimir."
error_can_not_remove_role: "Aquest rol s'està utilitzant i no es pot suprimir."
error_can_not_reopen_issue_on_closed_version: "Un assumpte assignat a una versió tancada no es pot tornar a obrir"
error_can_not_archive_project: "Aquest projecte no es pot arxivar"
error_issue_done_ratios_not_updated: "No s'ha actualitza el tant per cent dels assumptes."
error_workflow_copy_source: "Seleccioneu un seguidor o rol font"
error_workflow_copy_target: "Seleccioneu seguidors i rols objectiu"
error_unable_delete_issue_status: "No s'ha pogut suprimir l'estat de l'assumpte"
error_unable_to_connect: "No s'ha pogut connectar ({{value}})"
warning_attachments_not_saved: "No s'han pogut desar {{count}} fitxers."
mail_subject_lost_password: "Contrasenya de {{value}}"
@ -173,6 +195,10 @@ ca:
mail_body_account_activation_request: "S'ha registrat un usuari nou ({{value}}). El seu compte està pendent d'aprovació:"
mail_subject_reminder: "{{count}} assumptes venceran els següents {{days}} dies"
mail_body_reminder: "{{count}} assumptes que teniu assignades venceran els següents {{days}} dies:"
mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «{{page}}»"
mail_body_wiki_content_added: "En {{author}} ha afegit la pàgina wiki «{{page}}»."
mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «{{page}}»"
mail_body_wiki_content_updated: "En {{author}} ha actualitzat la pàgina wiki «{{page}}»."
gui_validation_error: 1 error
gui_validation_error_plural: "{{count}} errors"
@ -212,6 +238,7 @@ ca:
field_priority: Prioritat
field_fixed_version: Versió objectiu
field_user: Usuari
field_principal: Principal
field_role: Rol
field_homepage: Pàgina web
field_is_public: Públic
@ -256,6 +283,7 @@ ca:
field_redirect_existing_links: Redirigeix els enllaços existents
field_estimated_hours: Temps previst
field_column_names: Columnes
field_time_entries: "Registre de temps"
field_time_zone: Zona horària
field_searchable: Es pot cercar
field_default_value: Valor predeterminat
@ -265,6 +293,9 @@ ca:
field_watcher: Vigilància
field_identity_url: URL OpenID
field_content: Contingut
field_group_by: "Agrupa els resultats per"
field_sharing: Compartició
field_parent_issue: "Tasca pare"
setting_app_title: "Títol de l'aplicació"
setting_app_subtitle: "Subtítol de l'aplicació"
@ -300,20 +331,35 @@ ca:
setting_activity_days_default: "Dies a mostrar l'activitat del projecte"
setting_display_subprojects_issues: "Mostra els assumptes d'un subprojecte en el projecte pare per defecte"
setting_enabled_scm: "Habilita l'SCM"
setting_mail_handler_body_delimiters: "Trunca els correus electrònics després d'una d'aquestes línies"
setting_mail_handler_api_enabled: "Habilita el WS per correus electrònics d'entrada"
setting_mail_handler_api_key: Clau API
setting_sequential_project_identifiers: Genera identificadors de projecte seqüencials
setting_gravatar_enabled: "Utilitza les icones d'usuari Gravatar"
setting_gravatar_default: "Imatge Gravatar predeterminada"
setting_diff_max_lines_displayed: Número màxim de línies amb diferències mostrades
setting_file_max_size_displayed: Mida màxima dels fitxers de text mostrats en línia
setting_repository_log_display_limit: Número màxim de revisions que es mostren al registre de fitxers
setting_openid: "Permet entrar i registrar-se amb l'OpenID"
setting_password_min_length: "Longitud mínima de la contrasenya"
setting_new_project_user_role_id: "Aquest rol es dóna a un usuari no administrador per a crear projectes"
setting_default_projects_modules: "Mòduls activats per defecte en els projectes nous"
setting_issue_done_ratio: "Calcula tant per cent realitzat de l'assumpte amb"
setting_issue_done_ratio_issue_status: "Utilitza l'estat de l'assumpte"
setting_issue_done_ratio_issue_field: "Utilitza el camp de l'assumpte"
setting_start_of_week: "Inicia les setmanes en"
setting_rest_api_enabled: "Habilita el servei web REST"
setting_cache_formatted_text: Cache formatted text
permission_add_project: "Crea projectes"
permission_add_subprojects: "Crea subprojectes"
permission_edit_project: Edita el projecte
permission_select_project_modules: Selecciona els mòduls del projecte
permission_manage_members: Gestiona els membres
permission_manage_project_activities: "Gestiona les activitats del projecte"
permission_manage_versions: Gestiona les versions
permission_manage_categories: Gestiona les categories dels assumptes
permission_view_issues: "Visualitza els assumptes"
permission_add_issues: Afegeix assumptes
permission_edit_issues: Edita els assumptes
permission_manage_issue_relations: Gestiona les relacions dels assumptes
@ -328,6 +374,7 @@ ca:
permission_view_calendar: Visualitza el calendari
permission_view_issue_watchers: Visualitza la llista de vigilàncies
permission_add_issue_watchers: Afegeix vigilàncies
permission_delete_issue_watchers: Suprimeix els vigilants
permission_log_time: Registra el temps invertit
permission_view_time_entries: Visualitza el temps invertit
permission_edit_time_entries: Edita els registres de temps
@ -357,6 +404,8 @@ ca:
permission_edit_own_messages: Edita els missatges propis
permission_delete_messages: Suprimeix els missatges
permission_delete_own_messages: Suprimeix els missatges propis
permission_export_wiki_pages: "Exporta les pàgines wiki"
permission_manage_subtasks: "Gestiona subtasques"
project_module_issue_tracking: "Seguidor d'assumptes"
project_module_time_tracking: Seguidor de temps
@ -366,10 +415,13 @@ ca:
project_module_wiki: Wiki
project_module_repository: Dipòsit
project_module_boards: Taulers
project_module_calendar: Calendari
project_module_gantt: Gantt
label_user: Usuari
label_user_plural: Usuaris
label_user_new: Usuari nou
label_user_anonymous: Anònim
label_project: Projecte
label_project_new: Projecte nou
label_project_plural: Projectes
@ -416,12 +468,13 @@ ca:
label_information_plural: Informació
label_please_login: Entreu
label_register: Registre
label_login_with_open_id_option: o entra amb l'OpenID
label_login_with_open_id_option: "o entra amb l'OpenID"
label_password_lost: Contrasenya perduda
label_home: Inici
label_my_page: La meva pàgina
label_my_account: El meu compte
label_my_projects: Els meus projectes
label_my_page_block: "Els meus blocs de pàgina"
label_administration: Administració
label_login: Entra
label_logout: Surt
@ -441,6 +494,7 @@ ca:
label_auth_source_new: "Mode d'autenticació nou"
label_auth_source_plural: "Modes d'autenticació"
label_subproject_plural: Subprojectes
label_subproject_new: "Subprojecte nou"
label_and_its_subprojects: "{{value}} i els seus subprojectes"
label_min_max_length: Longitud mín - max
label_list: Llist
@ -475,8 +529,9 @@ ca:
label_version: Versió
label_version_new: Versió nova
label_version_plural: Versions
label_close_versions: "Tanca les versions completades"
label_confirmation: Confirmació
label_export_to: 'També disponible a:'
label_export_to: "També disponible a:"
label_read: Llegeix...
label_public_projects: Projectes públics
label_open_issues: obert
@ -533,6 +588,8 @@ ca:
label_not_equals: no és
label_in_less_than: en menys de
label_in_more_than: en més de
label_greater_or_equal: ">="
label_less_or_equal: <=
label_in: en
label_today: avui
label_all_time: tot el temps
@ -555,17 +612,21 @@ ca:
label_browse: Navega
label_modification: "{{count}} canvi"
label_modification_plural: "{{count}} canvis"
label_branch: Branca
label_tag: Etiqueta
label_revision: Revisió
label_revision_plural: Revisions
label_revision_id: "Revisió {{value}}"
label_associated_revisions: Revisions associades
label_added: afegit
label_modified: modificat
label_renamed: reanomenat
label_copied: copiat
label_renamed: reanomenat
label_deleted: suprimit
label_latest_revision: Última revisió
label_latest_revision_plural: Últimes revisions
label_view_revisions: Visualitza les revisions
label_view_all_revisions: "Visualitza totes les revisions"
label_max_size: Mida màxima
label_sort_highest: Mou a la part superior
label_sort_higher: Mou cap amunt
@ -591,6 +652,7 @@ ca:
label_changes_details: Detalls de tots els canvis
label_issue_tracking: "Seguiment d'assumptes"
label_spent_time: Temps invertit
label_overall_spent_time: "Temps total invertit"
label_f_hour: "{{value}} hora"
label_f_hour_plural: "{{value}} hores"
label_time_tracking: Temps de seguiment
@ -628,6 +690,8 @@ ca:
label_board: Fòrum
label_board_new: Fòrum nou
label_board_plural: Fòrums
label_board_locked: Bloquejat
label_board_sticky: Sticky
label_topic_plural: Temes
label_message_plural: Missatges
label_message_last: Últim missatge
@ -643,6 +707,8 @@ ca:
label_language_based: "Basat en l'idioma de l'usuari"
label_sort_by: "Ordena per {{value}}"
label_send_test_email: Envia un correu electrònic de prova
label_feeds_access_key: "Clau d'accés del RSS"
label_missing_feeds_access_key: "Falta una clau d'accés del RSS"
label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa {{value}}"
label_module_plural: Mòduls
label_added_time_by: "Afegit per {{author}} fa {{age}}"
@ -688,6 +754,28 @@ ca:
label_ascending: Ascendent
label_descending: Descendent
label_date_from_to: Des de {{start}} a {{end}}
label_wiki_content_added: "S'ha afegit la pàgina wiki"
label_wiki_content_updated: "S'ha actualitzat la pàgina wiki"
label_group: Grup
label_group_plural: Grups
label_group_new: Grup nou
label_time_entry_plural: Temps invertit
label_version_sharing_hierarchy: "Amb la jerarquia del projecte"
label_version_sharing_system: "Amb tots els projectes"
label_version_sharing_descendants: "Amb tots els subprojectes"
label_version_sharing_tree: "Amb l'arbre del projecte"
label_version_sharing_none: "Sense compartir"
label_update_issue_done_ratios: "Actualitza el tant per cent dels assumptes realitzats"
label_copy_source: Font
label_copy_target: Objectiu
label_copy_same_as_target: "El mateix que l'objectiu"
label_display_used_statuses_only: "Mostra només els estats que utilitza aquest seguidor"
label_api_access_key: "Clau d'accés a l'API"
label_missing_api_access_key: "Falta una clau d'accés de l'API"
label_api_access_key_created_on: "Clau d'accés de l'API creada fa {{value}}"
label_profile: Perfil
label_subtask_plural: Subtasques
label_project_copy_notifications: "Envia notificacions de correu electrònic durant la còpia del projecte"
button_login: Entra
button_submit: Tramet
@ -709,11 +797,12 @@ ca:
button_list: Llista
button_view: Visualitza
button_move: Mou
button_move_and_follow: "Mou i segueix"
button_back: Enrere
button_cancel: Cancel·la
button_activate: Activa
button_sort: Ordena
button_log_time: "Hora d'entrada"
button_log_time: "Registre de temps"
button_rollback: Torna a aquesta versió
button_watch: Vigila
button_unwatch: No vigilis
@ -724,15 +813,24 @@ ca:
button_rename: Reanomena
button_change_password: Canvia la contrasenya
button_copy: Copia
button_copy_and_follow: "Copia i segueix"
button_annotate: Anota
button_update: Actualitza
button_configure: Configura
button_quote: Cita
button_duplicate: Duplica
button_show: Mostra
status_active: actiu
status_registered: informat
status_locked: bloquejat
version_status_open: oberta
version_status_locked: bloquejada
version_status_closed: tancada
field_active: Actiu
text_select_mail_notifications: "Seleccioneu les accions per les quals s'hauria d'enviar una notificació per correu electrònic."
text_regexp_info: ex. ^[A-Z0-9]+$
text_min_max_length_info: 0 significa sense restricció
@ -740,6 +838,10 @@ ca:
text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: {{value}}."
text_workflow_edit: Seleccioneu un rol i un seguidor per a editar el flux de treball
text_are_you_sure: Segur?
text_journal_changed: "{{label}} ha canviat de {{old}} a {{new}}"
text_journal_set_to: "{{label}} s'ha establert a {{value}}"
text_journal_deleted: "{{label}} s'ha suprimit ({{old}})"
text_journal_added: "S'ha afegit {{label}} {{value}}"
text_tip_task_begin_day: "tasca que s'inicia aquest dia"
text_tip_task_end_day: tasca que finalitza aquest dia
text_tip_task_begin_end_day: "tasca que s'inicia i finalitza aquest dia"
@ -750,6 +852,7 @@ ca:
text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest seguidor"
text_unallowed_characters: Caràcters no permesos
text_comma_separated: Es permeten valors múltiples (separats per una coma).
text_line_separated: "Es permeten diversos valors (una línia per cada valor)."
text_issues_ref_in_commit_messages: Referència i soluciona els assumptes en els missatges publicats
text_issue_added: "L'assumpte {{id}} ha sigut informat per {{author}}."
text_issue_updated: "L'assumpte {{id}} ha sigut actualitzat per {{author}}."
@ -770,14 +873,21 @@ ca:
text_destroy_time_entries_question: "S'han informat {{hours}} hores en els assumptes que aneu a suprimir. Què voleu fer?"
text_destroy_time_entries: Suprimeix les hores informades
text_assign_time_entries_to_project: Assigna les hores informades al projecte
text_reassign_time_entries: 'Torna a assignar les hores informades a aquest assumpte:'
text_reassign_time_entries: "Torna a assignar les hores informades a aquest assumpte:"
text_user_wrote: "{{value}} va escriure:"
text_enumeration_destroy_question: "{{count}} objectes estan assignats a aquest valor."
text_enumeration_category_reassign_to: 'Torna a assignar-los a aquest valor:'
text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:"
text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo."
text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament."
text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar."
text_custom_field_possible_values_info: 'Una línia per a cada valor'
text_custom_field_possible_values_info: "Una línia per a cada valor"
text_wiki_page_destroy_question: "Aquesta pàgina té {{descendants}} pàgines fill i descendents. Què voleu fer?"
text_wiki_page_nullify_children: "Deixa les pàgines fill com a pàgines arrel"
text_wiki_page_destroy_children: "Suprimeix les pàgines fill i tots els seus descendents"
text_wiki_page_reassign_children: "Reasigna les pàgines fill a aquesta pàgina pare"
text_own_membership_delete_confirmation: "Esteu a punt de suprimir algun o tots els vostres permisos i potser no podreu editar més aquest projecte.\nSegur que voleu continuar?"
text_zoom_in: Redueix
text_zoom_out: Amplia
default_role_manager: Gestor
default_role_developer: Desenvolupador
@ -804,108 +914,9 @@ ca:
enumeration_issue_priorities: Prioritat dels assumptes
enumeration_doc_categories: Categories del document
enumeration_activities: Activitats (seguidor de temps)
label_greater_or_equal: ">="
label_less_or_equal: <=
text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?
text_wiki_page_reassign_children: Reassign child pages to this parent page
text_wiki_page_nullify_children: Keep child pages as root pages
text_wiki_page_destroy_children: Delete child pages and all their descendants
setting_password_min_length: Minimum password length
field_group_by: Group results by
mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
label_wiki_content_added: Wiki page added
mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
label_wiki_content_updated: Wiki page updated
mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
permission_add_project: Create project
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
label_view_all_revisions: View all revisions
label_tag: Tag
label_branch: Branch
error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
text_journal_set_to: "{{label}} set to {{value}}"
text_journal_deleted: "{{label}} deleted ({{old}})"
label_group_plural: Groups
label_group: Group
label_group_new: New group
label_time_entry_plural: Spent time
text_journal_added: "{{label}} {{value}} added"
field_active: Active
enumeration_system_activity: System Activity
permission_delete_issue_watchers: Delete watchers
version_status_closed: closed
version_status_locked: locked
version_status_open: open
error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
label_user_anonymous: Anonymous
button_move_and_follow: Move and follow
setting_default_projects_modules: Default enabled modules for new projects
setting_gravatar_default: Default Gravatar image
field_sharing: Sharing
label_version_sharing_hierarchy: With project hierarchy
label_version_sharing_system: With all projects
label_version_sharing_descendants: With subprojects
label_version_sharing_tree: With project tree
label_version_sharing_none: Not shared
error_can_not_archive_project: This project can not be archived
button_duplicate: Duplicate
button_copy_and_follow: Copy and follow
label_copy_source: Source
setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_status: Use the issue status
error_issue_done_ratios_not_updated: Issue done ratios not updated.
error_workflow_copy_target: Please select target tracker(s) and role(s)
setting_issue_done_ratio_issue_field: Use the issue field
label_copy_same_as_target: Same as target
label_copy_target: Target
notice_issue_done_ratios_updated: Issue done ratios updated.
error_workflow_copy_source: Please select a source tracker or role
label_update_issue_done_ratios: Update issue done ratios
setting_start_of_week: Start calendars on
permission_view_issues: View Issues
label_display_used_statuses_only: Only display statuses that are used by this tracker
label_revision_id: Revision {{value}}
label_api_access_key: API access key
label_api_access_key_created_on: API access key created {{value}} ago
label_feeds_access_key: RSS access key
notice_api_access_key_reseted: Your API access key was reset.
setting_rest_api_enabled: Enable REST web service
label_missing_api_access_key: Missing an API access key
label_missing_feeds_access_key: Missing a RSS access key
button_show: Show
text_line_separated: Multiple values allowed (one line for each value).
setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects
label_subproject_new: New subproject
text_own_membership_delete_confirmation: |-
You are about to remove some or all of your permissions and may no longer be able to edit this project after that.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
error_unable_delete_issue_status: Unable to delete issue status
label_profile: Profile
permission_manage_subtasks: Manage subtasks
field_parent_issue: Parent task
label_subtask_plural: Subtasks
label_project_copy_notifications: Send email notifications during the project copy
error_can_not_delete_custom_field: Unable to delete custom field
error_unable_to_connect: Unable to connect ({{value}})
error_can_not_remove_role: This role is in use and can not be deleted.
error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
field_principal: Principal
label_my_page_block: My page block
notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
text_zoom_out: Zoom out
text_zoom_in: Zoom in
notice_unable_delete_time_entry: Unable to delete time log entry.
label_overall_spent_time: Overall spent time
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
enumeration_system_activity: Activitat del sistema
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -116,6 +116,7 @@ cs:
greater_than_start_date: "musí být větší než počáteční datum"
not_same_project: "nepatří stejnému projektu"
circular_dependency: "Tento vztah by vytvořil cyklickou závislost"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
# Updated by Josef Liška <jl@chl.cz>
# CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
@ -912,3 +913,7 @@ cs:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -130,6 +130,7 @@ da:
greater_than_start_date: "skal være senere end startdatoen"
not_same_project: "hører ikke til samme projekt"
circular_dependency: "Denne relation vil skabe et afhængighedsforhold"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
template:
header:
@ -928,3 +929,7 @@ da:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -68,10 +68,11 @@ de:
other: "fast {{count}} Jahren"
number:
# Default format for numbers
format:
precision: 2
separator: ','
delimiter: '.'
precision: 2
currency:
format:
unit: '€'
@ -214,6 +215,7 @@ de:
mail_body_wiki_content_added: "Die Wiki-Seite '{{page}}' wurde von {{author}} hinzugefügt."
mail_subject_wiki_content_updated: "Wiki-Seite '{{page}}' erfolgreich aktualisiert"
mail_body_wiki_content_updated: "Die Wiki-Seite '{{page}}' wurde von {{author}} aktualisiert."
gui_validation_error: 1 Fehler
gui_validation_error_plural: "{{count}} Fehler"
@ -252,7 +254,7 @@ de:
field_priority: Priorität
field_fixed_version: Zielversion
field_user: Benutzer
field_principal: Principal
field_principal: Auftraggeber
field_role: Rolle
field_homepage: Projekt-Homepage
field_is_public: Öffentlich
@ -297,6 +299,7 @@ de:
field_redirect_existing_links: Existierende Links umleiten
field_estimated_hours: Geschätzter Aufwand
field_column_names: Spalten
field_time_entries: Logzeit
field_time_zone: Zeitzone
field_searchable: Durchsuchbar
field_default_value: Standardwert
@ -428,6 +431,8 @@ de:
project_module_wiki: Wiki
project_module_repository: Projektarchiv
project_module_boards: Foren
project_module_calendar: Kalender
project_module_gantt: Gantt
label_user: Benutzer
label_user_plural: Benutzer
@ -485,7 +490,7 @@ de:
label_my_page: Meine Seite
label_my_account: Mein Konto
label_my_projects: Meine Projekte
label_my_page_block: My page block
label_my_page_block: Bereich "Meine Seite"
label_administration: Administration
label_login: Anmelden
label_logout: Abmelden
@ -499,7 +504,7 @@ de:
label_user_activity: "Aktivität von {{value}}"
label_new: Neu
label_logged_as: Angemeldet als
label_environment: Environment
label_environment: Umgebung
label_authentication: Authentifizierung
label_auth_source: Authentifizierungs-Modus
label_auth_source_new: Neuer Authentifizierungs-Modus
@ -798,6 +803,7 @@ de:
button_create_and_continue: Anlegen + nächstes Ticket
button_test: Testen
button_edit: Bearbeiten
button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: {{page_title}}"
button_add: Hinzufügen
button_change: Wechseln
button_apply: Anwenden
@ -831,7 +837,7 @@ de:
button_quote: Zitieren
button_duplicate: Duplizieren
button_show: Anzeigen
status_active: aktiv
status_registered: angemeldet
status_locked: gesperrt
@ -927,6 +933,6 @@ de:
enumeration_activities: Aktivitäten (Zeiterfassung)
enumeration_system_activity: System-Aktivität
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -119,6 +119,7 @@ el:
greater_than_start_date: "πρέπει να είναι αργότερα από την ημερομηνία έναρξης"
not_same_project: "δεν ανήκει στο ίδιο έργο"
circular_dependency: "Αυτή η σχέση θα δημιουργήσει κυκλικές εξαρτήσεις"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Παρακαλώ επιλέξτε
@ -912,3 +913,7 @@ el:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -122,6 +122,7 @@ en-GB:
greater_than_start_date: "must be greater than start date"
not_same_project: "doesn't belong to the same project"
circular_dependency: "This relation would create a circular dependency"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Please select
@ -916,3 +917,7 @@ en-GB:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -293,6 +293,8 @@ en:
field_group_by: Group results by
field_sharing: Sharing
field_parent_issue: Parent task
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
setting_app_title: Application title
setting_app_subtitle: Application subtitle
@ -787,6 +789,7 @@ en:
button_create_and_continue: Create and continue
button_test: Test
button_edit: Edit
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
button_add: Add
button_change: Change
button_apply: Apply
@ -838,6 +841,7 @@ en:
text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted."
text_workflow_edit: Select a role and a tracker to edit the workflow
text_are_you_sure: Are you sure ?
text_are_you_sure_with_children: "Delete issue and all child issues?"
text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
text_journal_set_to: "{{label}} set to {{value}}"
text_journal_deleted: "{{label}} deleted ({{old}})"

View File

@ -132,6 +132,7 @@ es:
greater_than_start_date: "debe ser posterior a la fecha de comienzo"
not_same_project: "no pertenece al mismo proyecto"
circular_dependency: "Esta relación podría crear una dependencia circular"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
# Append your own errors here or at the model/attributes scope.
@ -952,3 +953,7 @@ es:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -121,6 +121,7 @@ eu:
greater_than_start_date: "hasiera data baino handiagoa izan behar du"
not_same_project: "ez dago proiektu berdinean"
circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Hautatu mesedez
@ -916,3 +917,7 @@ eu:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -147,7 +147,7 @@ fi:
greater_than_start_date: "tulee olla aloituspäivän jälkeinen"
not_same_project: "ei kuulu samaan projektiin"
circular_dependency: "Tämä suhde loisi kehän."
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Valitse, ole hyvä
@ -938,3 +938,7 @@ fi:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -931,3 +931,7 @@ fr:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Modifier la page de Wiki associée: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -150,6 +150,7 @@ gl:
greater_than_start_date: "debe ser posterior á data de comezo"
not_same_project: "non pertence ao mesmo proxecto"
circular_dependency: "Esta relación podería crear unha dependencia circular"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Por favor seleccione
@ -928,3 +929,7 @@ gl:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -123,6 +123,7 @@ he:
greater_than_start_date: "חייב להיות מאוחר יותר מתאריך ההתחלה"
not_same_project: "לא שייך לאותו הפרויקט"
circular_dependency: "הקשר הזה יצור תלות מעגלית"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: בחר בבקשה
@ -917,3 +918,7 @@ he:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -117,6 +117,7 @@ hr:
greater_than_start_date: "mora biti veci nego pocetni datum"
not_same_project: "ne pripada istom projektu"
circular_dependency: "Ovaj relacija stvara kružnu ovisnost"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Molimo odaberite
@ -919,3 +920,7 @@ hr:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -143,6 +143,7 @@
greater_than_start_date: "nagyobbnak kell lennie, mint az indítás dátuma"
not_same_project: "nem azonos projekthez tartozik"
circular_dependency: "Ez a kapcsolat egy körkörös függőséget eredményez"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Kérem válasszon
@ -935,3 +936,7 @@
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -119,6 +119,7 @@ id:
greater_than_start_date: "harus lebih besar dari tanggal mulai"
not_same_project: "tidak tergabung dalam proyek yang sama"
circular_dependency: "kaitan ini akan menghasilkan circular dependency"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Silakan pilih
@ -920,3 +921,7 @@ id:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -126,6 +126,7 @@ it:
greater_than_start_date: "deve essere maggiore della data di partenza"
not_same_project: "non appartiene allo stesso progetto"
circular_dependency: "Questa relazione creerebbe una dipendenza circolare"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Scegli
@ -916,3 +917,7 @@ it:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -144,6 +144,7 @@ ja:
greater_than_start_date: "を開始日より後にしてください"
not_same_project: "同じプロジェクトに属していません"
circular_dependency: "この関係では、循環依存になります"
cant_link_an_issue_with_a_descendant: "指定したチケットとは親子関係になっているため関連づけられません"
actionview_instancetag_blank_option: 選んでください
@ -305,6 +306,7 @@ ja:
field_redirect_existing_links: 既存のリンクをリダイレクトする
field_estimated_hours: 予定工数
field_column_names: 項目
field_time_entries: 時間を記録
field_time_zone: タイムゾーン
field_searchable: 検索条件に設定可能とする
field_default_value: デフォルト値
@ -317,6 +319,8 @@ ja:
field_group_by: グループ条件
field_sharing: 共有
field_parent_issue: 親チケット
field_member_of_group: 担当者のグループ
field_assigned_to_role: 担当者のロール
setting_app_title: アプリケーションのタイトル
setting_app_subtitle: アプリケーションのサブタイトル
@ -436,6 +440,8 @@ ja:
project_module_wiki: Wiki
project_module_repository: リポジトリ
project_module_boards: フォーラム
project_module_gantt: ガントチャート
project_module_calendar: カレンダー
label_user: ユーザ
label_user_plural: ユーザ
@ -934,6 +940,5 @@ ja:
enumeration_doc_categories: 文書カテゴリ
enumeration_activities: 作業分類 (時間トラッキング)
enumeration_system_activity: システム作業分類
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -2,7 +2,7 @@
# by Kihyun Yoon(ddumbugie@gmail.com),http://plenum.textcube.com/
# by John Hwang (jhwang@tavon.org),http://github.com/tavon
# by Yonghwan SO(please insert your email), last update at 2009-09-11
# last update at 2010-01-23 by Kihyun Yoon
# last update at 2010-09-06 by Kihyun Yoon
ko:
direction: ltr
date:
@ -173,6 +173,7 @@ ko:
greater_than_start_date: "는 시작날짜보다 커야 합니다"
not_same_project: "는 같은 프로젝트에 속해 있지 않습니다"
circular_dependency: "이 관계는 순환 의존관계를 만들 수 있습니다"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: 선택하세요
@ -958,13 +959,17 @@ ko:
error_unable_to_connect: 연결할 수 없습니다(({{value}})
error_can_not_remove_role: 이 역할은 현재 사용 중이이서 삭제할 수 없습니다.
error_can_not_delete_tracker: 이 유형의 일감들이 있에서 삭제할 수 없습니다.
field_principal: Principal
label_my_page_block: My page block
field_principal: 신원
label_my_page_block: 내 페이지 출력화면
notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
text_zoom_out: Zoom out
text_zoom_in: Zoom in
notice_unable_delete_time_entry: Unable to delete time log entry.
label_overall_spent_time: Overall spent time
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
text_zoom_out: 더 작게
text_zoom_in: 더 크게
notice_unable_delete_time_entry: 시간 기록 항목을 삭제할 수 없습니다.
label_overall_spent_time: 총 소요시간
field_time_entries: 기록된 시간
project_module_gantt: Gantt 챠트
project_module_calendar: 달력
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -143,7 +143,7 @@ lt:
other: "Išsaugant objektą {{model}} rastos {{count}} klaidos"
body: "Šiuose laukuose yra klaidų:"
pranešimus:
messages:
inclusion: "nenumatyta reikšmė"
exclusion: "užimtas"
invalid: "neteisingas"
@ -179,6 +179,7 @@ lt:
greater_than_start_date: "turi būti didesnė negu pradžios data"
not_same_project: "nepriklauso tam pačiam projektui"
circular_dependency: "Šis ryšys sukurtų ciklinę priklausomybę"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: prašom parinkti
@ -976,3 +977,7 @@ lt:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -113,6 +113,7 @@ lv:
greater_than_start_date: "jābūt vēlākam par sākuma datumu"
not_same_project: "nepieder pie tā paša projekta"
circular_dependency: "Šī relācija radītu ciklisku atkarību"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Izvēlieties
@ -907,3 +908,7 @@ lv:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

919
config/locales/mk.yml Normal file
View File

@ -0,0 +1,919 @@
mk:
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
direction: ltr
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%d/%m/%Y"
short: "%d %b"
long: "%d %B, %Y"
day_names: [недела, понеделник, вторник, среда, четврток, петок, сабота]
abbr_day_names: [нед, пон, вто, сре, чет, пет, саб]
# Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, јануари, февруари, март, април, мај, јуни, јули, август, септември, октомври, ноември, декември]
abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, сеп, окт, ное, дек]
# Used in date_select and datime_select.
order: [ :day, :month, :year ]
time:
formats:
default: "%d/%m/%Y %H:%M"
time: "%H:%M"
short: "%d %b %H:%M"
long: "%d %B, %Y %H:%M"
am: "предпладне"
pm: "попладне"
datetime:
distance_in_words:
half_a_minute: "пола минута"
less_than_x_seconds:
one: "помалку од 1 секунда"
other: "помалку од {{count}} секунди"
x_seconds:
one: "1 секунда"
other: "{{count}} секунди"
less_than_x_minutes:
one: "помалку од 1 минута"
other: "помалку од {{count}} минути"
x_minutes:
one: "1 минута"
other: "{{count}} минути"
about_x_hours:
one: "околу 1 час"
other: "околу {{count}} часа"
x_days:
one: "1 ден"
other: "{{count}} дена"
about_x_months:
one: "околу 1 месец"
other: "околу {{count}} месеци"
x_months:
one: "1 месец"
other: "{{count}} месеци"
about_x_years:
one: "околу 1 година"
other: "околу {{count}} години"
over_x_years:
one: "преку 1 година"
other: "преку {{count}} години"
almost_x_years:
one: "скоро 1 година"
other: "скоро {{count}} години"
number:
# Default format for numbers
format:
separator: "."
delimiter: ""
precision: 3
human:
format:
delimiter: ""
precision: 1
storage_units:
format: "%n %u"
units:
byte:
one: "Byte"
other: "Bytes"
kb: "KB"
mb: "MB"
gb: "GB"
tb: "TB"
# Used in array.to_sentence.
support:
array:
sentence_connector: "и"
skip_last_comma: false
activerecord:
errors:
messages:
inclusion: "не е вклучено во листата"
exclusion: "е резервирано"
invalid: "е невалидно"
confirmation: "не се совпаѓа со потврдата"
accepted: "мора да е прифатено"
empty: "неможе да е празно"
blank: "неможе да е празно"
too_long: "е предолго (макс. {{count}} знаци)"
too_short: "е прекратко (мин. {{count}} знаци)"
wrong_length: "е погрешна должина (треба да е {{count}} знаци)"
taken: "е веќе зафатено"
not_a_number: "не е број"
not_a_date: "не е валидна дата"
greater_than: "мора да е поголемо од {{count}}"
greater_than_or_equal_to: "мора да е поголемо или еднакво на {{count}}"
equal_to: "мора да е еднакво на {{count}}"
less_than: "мора да е помало од {{count}}"
less_than_or_equal_to: "мора да е помало или еднакво на {{count}}"
odd: "мора да е непарно"
even: "мора да е парно"
greater_than_start_date: "мора да е поголема од почетната дата"
not_same_project: "не припаѓа на истиот проект"
circular_dependency: "Оваа врска ќе креира кружна зависност"
cant_link_an_issue_with_a_descendant: "Задача неможе да се поврзе со една од нејзините подзадачи"
actionview_instancetag_blank_option: Изберете
general_text_No: 'Не'
general_text_Yes: 'Да'
general_text_no: 'не'
general_text_yes: 'да'
general_lang_name: 'Macedonian (Македонски)'
general_csv_separator: ','
general_csv_decimal_separator: '.'
general_csv_encoding: UTF-8
general_pdf_encoding: UTF-8
general_first_day_of_week: '1'
notice_account_updated: Профилот е успешно ажуриран.
notice_account_invalid_creditentials: Неточен корисник или лозинка
notice_account_password_updated: Лозинката е успешно ажурирана.
notice_account_wrong_password: Погрешна лозинка
notice_account_register_done: Профилот е успешно креиран. За активација, клкнете на врската што ви е пратена по е-пошта.
notice_account_unknown_email: Непознат корисник.
notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
notice_account_activated: Your account has been activated. You can now log in.
notice_successful_create: Успешно креирање.
notice_successful_update: Успешно ажурирање.
notice_successful_delete: Успешно бришење.
notice_successful_connection: Успешна конекција.
notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
notice_locking_conflict: Data has been updated by another user.
notice_not_authorized: You are not authorized to access this page.
notice_email_sent: "Е-порака е пратена на {{value}}"
notice_email_error: "Се случи грешка при праќање на е-пораката ({{value}})"
notice_feeds_access_key_reseted: Вашиот RSS клуч за пристап е reset.
notice_api_access_key_reseted: Вашиот API клуч за пристап е reset.
notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}."
notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
notice_account_pending: "Your account was created and is now pending administrator approval."
notice_default_data_loaded: Default configuration successfully loaded.
notice_unable_delete_version: Unable to delete version.
notice_unable_delete_time_entry: Unable to delete time log entry.
notice_issue_done_ratios_updated: Issue done ratios updated.
error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}"
error_scm_not_found: "The entry or revision was not found in the repository."
error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}"
error_scm_annotate: "The entry does not exist or can not be annotated."
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
error_can_not_delete_custom_field: Unable to delete custom field
error_can_not_delete_tracker: "This tracker contains issues and can't be deleted."
error_can_not_remove_role: "This role is in use and can not be deleted."
error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
error_can_not_archive_project: This project can not be archived
error_issue_done_ratios_not_updated: "Issue done ratios not updated."
error_workflow_copy_source: 'Please select a source tracker or role'
error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
error_unable_delete_issue_status: 'Unable to delete issue status'
error_unable_to_connect: "Unable to connect ({{value}})"
warning_attachments_not_saved: "{{count}} file(s) could not be saved."
mail_subject_lost_password: "Вашата {{value}} лозинка"
mail_body_lost_password: 'To change your password, click on the following link:'
mail_subject_register: "Your {{value}} account activation"
mail_body_register: 'To activate your account, click on the following link:'
mail_body_account_information_external: "You can use your {{value}} account to log in."
mail_body_account_information: Your account information
mail_subject_account_activation_request: "{{value}} account activation request"
mail_body_account_activation_request: "Нов корисник ({{value}}) е регистриран. The account is pending your approval:"
mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days"
mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:"
mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
mail_body_wiki_content_added: "The '{{page}}' wiki page has been added by {{author}}."
mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
mail_body_wiki_content_updated: "The '{{page}}' wiki page has been updated by {{author}}."
gui_validation_error: 1 грешка
gui_validation_error_plural: "{{count}} грешки"
field_name: Име
field_description: Опис
field_summary: Краток опис
field_is_required: Задолжително
field_firstname: Име
field_lastname: Презиме
field_mail: Е-пошта
field_filename: Датотека
field_filesize: Големина
field_downloads: Превземања
field_author: Автор
field_created_on: Креиран
field_updated_on: Ажурирано
field_field_format: Формат
field_is_for_all: За сите проекти
field_possible_values: Можни вредности
field_regexp: Regular expression
field_min_length: Минимална должина
field_max_length: Максимална должина
field_value: Вредност
field_category: Категорија
field_title: Наслов
field_project: Проект
field_issue: Задача
field_status: Статус
field_notes: Белешки
field_is_closed: Задачата е затворена
field_is_default: Default value
field_tracker: Tracker
field_subject: Наслов
field_due_date: Краен рок
field_assigned_to: Доделена на
field_priority: Приоритет
field_fixed_version: Target version
field_user: Корисник
field_principal: Principal
field_role: Улога
field_homepage: Веб страна
field_is_public: Јавен
field_parent: Подпроект на
field_is_in_roadmap: Issues displayed in roadmap
field_login: Корисник
field_mail_notification: Известувања по e-пошта
field_admin: Администратор
field_last_login_on: Последна најава
field_language: Јазик
field_effective_date: Дата
field_password: Лозинка
field_new_password: Нова лозинка
field_password_confirmation: Потврда
field_version: Верзија
field_type: Тип
field_host: Хост
field_port: Порт
field_account: Account
field_base_dn: Base DN
field_attr_login: Login attribute
field_attr_firstname: Firstname attribute
field_attr_lastname: Lastname attribute
field_attr_mail: Email attribute
field_onthefly: Моментално (On-the-fly) креирање на корисници
field_start_date: Почеток
field_done_ratio: % Завршено
field_auth_source: Режим на автентикација
field_hide_mail: Криј ја мојата адреса на е-пошта
field_comments: Коментар
field_url: URL
field_start_page: Почетна страна
field_subproject: Подпроект
field_hours: Часови
field_activity: Активност
field_spent_on: Дата
field_identifier: Идентификатор
field_is_filter: Користи како филтер
field_issue_to: Поврзана задача
field_delay: Доцнење
field_assignable: На оваа улога може да се доделуваат задачи
field_redirect_existing_links: Пренасочи ги постоечките врски
field_estimated_hours: Проценето време
field_column_names: Колони
field_time_entries: Бележи време
field_time_zone: Временска зона
field_searchable: Може да се пребарува
field_default_value: Default value
field_comments_sorting: Прикажувај коментари
field_parent_title: Parent page
field_editable: Може да се уредува
field_watcher: Watcher
field_identity_url: OpenID URL
field_content: Содржина
field_group_by: Групирај ги резултатите според
field_sharing: Споделување
field_parent_issue: Parent task
setting_app_title: Наслов на апликацијата
setting_app_subtitle: Поднаслов на апликацијата
setting_welcome_text: Текст за добредојде
setting_default_language: Default јазик
setting_login_required: Задолжителна автентикација
setting_self_registration: Само-регистрација
setting_attachment_max_size: Макс. големина на прилог
setting_issues_export_limit: Issues export limit
setting_mail_from: Emission email address
setting_bcc_recipients: Blind carbon copy recipients (bcc)
setting_plain_text_mail: Текстуални е-пораки (без HTML)
setting_host_name: Име на хост и патека
setting_text_formatting: Форматирање на текст
setting_wiki_compression: Компресија на историјата на вики
setting_feeds_limit: Feed content limit
setting_default_projects_public: Новите проекти се иницијално јавни
setting_autofetch_changesets: Autofetch commits
setting_sys_api_enabled: Enable WS for repository management
setting_commit_ref_keywords: Referencing keywords
setting_commit_fix_keywords: Fixing keywords
setting_autologin: Автоматска најава
setting_date_format: Формат на дата
setting_time_format: Формат на време
setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти
setting_issue_list_default_columns: Default columns displayed on the issue list
setting_repositories_encodings: Repositories encodings
setting_commit_logs_encoding: Commit messages encoding
setting_emails_footer: Emails footer
setting_protocol: Протокол
setting_per_page_options: Objects per page options
setting_user_format: Приказ на корисниците
setting_activity_days_default: Денови прикажана во активноста на проектот
setting_display_subprojects_issues: Прикажи ги задачите на подпроектите во главните проекти
setting_enabled_scm: Овозможи SCM
setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
setting_mail_handler_api_enabled: Enable WS for incoming emails
setting_mail_handler_api_key: API клуч
setting_sequential_project_identifiers: Генерирај последователни идентификатори на проекти
setting_gravatar_enabled: Користи Gravatar кориснички икони
setting_gravatar_default: Default Gravatar image
setting_diff_max_lines_displayed: Max number of diff lines displayed
setting_file_max_size_displayed: Max size of text files displayed inline
setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_openid: Дозволи OpenID најава и регистрација
setting_password_min_length: Мин. должина на лозинка
setting_new_project_user_role_id: Улога доделена на неадминистраторски корисник кој креира проект
setting_default_projects_modules: Default enabled modules for new projects
setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_field: Use the issue field
setting_issue_done_ratio_issue_status: Use the issue status
setting_start_of_week: Start calendars on
setting_rest_api_enabled: Enable REST web service
setting_cache_formatted_text: Cache formatted text
permission_add_project: Креирај проекти
permission_add_subprojects: Креирај подпроекти
permission_edit_project: Уреди проект
permission_select_project_modules: Изберете модули за проект
permission_manage_members: Manage members
permission_manage_project_activities: Manage project activities
permission_manage_versions: Manage versions
permission_manage_categories: Manage issue categories
permission_view_issues: Прегледај задачи
permission_add_issues: Додавај задачи
permission_edit_issues: Уредувај задачи
permission_manage_issue_relations: Manage issue relations
permission_add_issue_notes: Додавај белешки
permission_edit_issue_notes: Уредувај белешки
permission_edit_own_issue_notes: Уредувај сопствени белешки
permission_move_issues: Преместувај задачи
permission_delete_issues: Бриши задачи
permission_manage_public_queries: Manage public queries
permission_save_queries: Save queries
permission_view_gantt: View gantt chart
permission_view_calendar: View calendar
permission_view_issue_watchers: View watchers list
permission_add_issue_watchers: Add watchers
permission_delete_issue_watchers: Delete watchers
permission_log_time: Бележи потрошено време
permission_view_time_entries: Прегледај потрошено време
permission_edit_time_entries: Уредувај белешки за потрошено време
permission_edit_own_time_entries: Уредувај сопствени белешки за потрошено време
permission_manage_news: Manage news
permission_comment_news: Коментирај на вести
permission_manage_documents: Manage documents
permission_view_documents: Прегледувај документи
permission_manage_files: Manage files
permission_view_files: Прегледувај датотеки
permission_manage_wiki: Manage wiki
permission_rename_wiki_pages: Преименувај вики страници
permission_delete_wiki_pages: Бриши вики страници
permission_view_wiki_pages: Прегледувај вики
permission_view_wiki_edits: Прегледувај вики историја
permission_edit_wiki_pages: Уредувај вики страници
permission_delete_wiki_pages_attachments: Бриши прилози
permission_protect_wiki_pages: Заштитувај вики страници
permission_manage_repository: Manage repository
permission_browse_repository: Browse repository
permission_view_changesets: View changesets
permission_commit_access: Commit access
permission_manage_boards: Manage boards
permission_view_messages: View messages
permission_add_messages: Post messages
permission_edit_messages: Уредувај пораки
permission_edit_own_messages: Уредувај сопствени пораки
permission_delete_messages: Бриши пораки
permission_delete_own_messages: Бриши сопствени пораки
permission_export_wiki_pages: Export wiki pages
permission_manage_subtasks: Manage subtasks
project_module_issue_tracking: Следење на задачи
project_module_time_tracking: Следење на време
project_module_news: Вести
project_module_documents: Документи
project_module_files: Датотеки
project_module_wiki: Вики
project_module_repository: Repository
project_module_boards: Форуми
project_module_calendar: Календар
project_module_gantt: Gantt
label_user: Корисник
label_user_plural: Корисници
label_user_new: Нов корисник
label_user_anonymous: Анонимен
label_project: Проект
label_project_new: Нов проект
label_project_plural: Проекти
label_x_projects:
zero: нема проекти
one: 1 проект
other: "{{count}} проекти"
label_project_all: Сите проекти
label_project_latest: Последните проекти
label_issue: Задача
label_issue_new: Нова задача
label_issue_plural: Задачи
label_issue_view_all: Прегледај ги сите задачи
label_issues_by: "Задачи по {{value}}"
label_issue_added: Задачата е додадена
label_issue_updated: Задачата е ажурирана
label_document: Документ
label_document_new: Нов документ
label_document_plural: Документи
label_document_added: Документот е додаден
label_role: Улога
label_role_plural: Улоги
label_role_new: Нова улога
label_role_and_permissions: Улоги и овластувања
label_member: Член
label_member_new: Нов член
label_member_plural: Членови
label_tracker: Tracker
label_tracker_plural: Trackers
label_tracker_new: New tracker
label_workflow: Workflow
label_issue_status: Статус на задача
label_issue_status_plural: Статуси на задачи
label_issue_status_new: Нов статус
label_issue_category: Категорија на задача
label_issue_category_plural: Категории на задачи
label_issue_category_new: Нова категорија
label_custom_field: Прилагодено поле
label_custom_field_plural: Прилагодени полиња
label_custom_field_new: Ново прилагодено поле
label_enumerations: Enumerations
label_enumeration_new: Нова вредност
label_information: Информација
label_information_plural: Информации
label_please_login: Најави се
label_register: Регистрирај се
label_login_with_open_id_option: или најави се со OpenID
label_password_lost: Изгубена лозинка
label_home: Почетна
label_my_page: Мојата страна
label_my_account: Мојот профил
label_my_projects: Мои проекти
label_my_page_block: Блок елемент
label_administration: Администрација
label_login: Најави се
label_logout: Одјави се
label_help: Помош
label_reported_issues: Пријавени задачи
label_assigned_to_me_issues: Задачи доделени на мене
label_last_login: Последна најава
label_registered_on: Регистриран на
label_activity: Активност
label_overall_activity: Севкупна активност
label_user_activity: "Активност на {{value}}"
label_new: Нова
label_logged_as: Најавени сте како
label_environment: Опкружување
label_authentication: Автентикација
label_auth_source: Режим на автентикација
label_auth_source_new: Нов режим на автентикација
label_auth_source_plural: Режими на автентикација
label_subproject_plural: Подпроекти
label_subproject_new: Нов подпроект
label_and_its_subprojects: "{{value}} и неговите подпроекти"
label_min_max_length: Мин. - Макс. должина
label_list: Листа
label_date: Дата
label_integer: Integer
label_float: Float
label_boolean: Boolean
label_string: Текст
label_text: Долг текст
label_attribute: Атрибут
label_attribute_plural: Атрибути
label_download: "{{count}} превземање"
label_download_plural: "{{count}} превземања"
label_no_data: Нема податоци за прикажување
label_change_status: Промени статус
label_history: Историја
label_attachment: Датотека
label_attachment_new: Нова датотека
label_attachment_delete: Избриши датотека
label_attachment_plural: Датотеки
label_file_added: Датотеката е додадена
label_report: Извештај
label_report_plural: Извештаи
label_news: Новост
label_news_new: Додади новост
label_news_plural: Новости
label_news_latest: Последни новости
label_news_view_all: Прегледај ги сите новости
label_news_added: Новостта е додадена
label_settings: Settings
label_overview: Преглед
label_version: Верзија
label_version_new: Нова верзија
label_version_plural: Верзии
label_close_versions: Затвори ги завршените врзии
label_confirmation: Потврда
label_export_to: 'Достапно и во:'
label_read: Прочитај...
label_public_projects: Јавни проекти
label_open_issues: отворена
label_open_issues_plural: отворени
label_closed_issues: затворена
label_closed_issues_plural: затворени
label_x_open_issues_abbr_on_total:
zero: 0 отворени / {{total}}
one: 1 отворена / {{total}}
other: "{{count}} отворени / {{total}}"
label_x_open_issues_abbr:
zero: 0 отворени
one: 1 отворена
other: "{{count}} отворени"
label_x_closed_issues_abbr:
zero: 0 затворени
one: 1 затворена
other: "{{count}} затворени"
label_total: Вкупно
label_permissions: Овластувања
label_current_status: Моментален статус
label_new_statuses_allowed: Дозволени нови статуси
label_all: сите
label_none: ниеден
label_nobody: никој
label_next: Следно
label_previous: Претходно
label_used_by: Користено од
label_details: Детали
label_add_note: Додади белешка
label_per_page: По страна
label_calendar: Календар
label_months_from: месеци од
label_gantt: Gantt
label_internal: Internal
label_last_changes: "последни {{count}} промени"
label_change_view_all: Прегледај ги сите промени
label_personalize_page: Прилагоди ја странава
label_comment: Коментар
label_comment_plural: Коментари
label_x_comments:
zero: нема коментари
one: 1 коментар
other: "{{count}} коментари"
label_comment_add: Додади коментар
label_comment_added: Коментарот е додаден
label_comment_delete: Избриши коментари
label_query: Custom query
label_query_plural: Custom queries
label_query_new: New query
label_filter_add: Додади филтер
label_filter_plural: Филтри
label_equals: е
label_not_equals: не е
label_in_less_than: за помалку од
label_in_more_than: за повеќе од
label_greater_or_equal: '>='
label_less_or_equal: '<='
label_in: во
label_today: денес
label_all_time: цело време
label_yesterday: вчера
label_this_week: оваа недела
label_last_week: минатата недела
label_last_n_days: "последните {{count}} дена"
label_this_month: овој месец
label_last_month: минатиот месец
label_this_year: оваа година
label_date_range: Date range
label_less_than_ago: пред помалку од денови
label_more_than_ago: пред повеќе од денови
label_ago: пред денови
label_contains: содржи
label_not_contains: не содржи
label_day_plural: денови
label_repository: Складиште
label_repository_plural: Складишта
label_browse: Прелистувај
label_modification: "{{count}} промени"
label_modification_plural: "{{count}} промени"
label_branch: Гранка
label_tag: Tag
label_revision: Ревизија
label_revision_plural: Ревизии
label_revision_id: "Ревизија {{value}}"
label_associated_revisions: Associated revisions
label_added: added
label_modified: modified
label_copied: copied
label_renamed: renamed
label_deleted: deleted
label_latest_revision: Последна ревизија
label_latest_revision_plural: Последни ревизии
label_view_revisions: Прегледај ги ревизиите
label_view_all_revisions: Прегледај ги сите ревизии
label_max_size: Макс. големина
label_sort_highest: Премести најгоре
label_sort_higher: Премести нагоре
label_sort_lower: Премести надоле
label_sort_lowest: Премести најдоле
label_roadmap: Roadmap
label_roadmap_due_in: "Due in {{value}}"
label_roadmap_overdue: "Касни {{value}}"
label_roadmap_no_issues: Нема задачи за оваа верзија
label_search: Барај
label_result_plural: Резултати
label_all_words: Сите зборови
label_wiki: Вики
label_wiki_edit: Вики уредување
label_wiki_edit_plural: Вики уредувања
label_wiki_page: Вики страница
label_wiki_page_plural: Вики страници
label_index_by_title: Индекс по наслов
label_index_by_date: Индекс по дата
label_current_version: Current version
label_preview: Preview
label_feed_plural: Feeds
label_changes_details: Детали за сите промени
label_issue_tracking: Следење на задачи
label_spent_time: Потрошено време
label_overall_spent_time: Вкупно потрошено време
label_f_hour: "{{value}} час"
label_f_hour_plural: "{{value}} часа"
label_time_tracking: Следење на време
label_change_plural: Промени
label_statistics: Статистики
label_commits_per_month: Commits per month
label_commits_per_author: Commits per author
label_view_diff: View differences
label_diff_inline: inline
label_diff_side_by_side: side by side
label_options: Опции
label_copy_workflow_from: Copy workflow from
label_permissions_report: Permissions report
label_watched_issues: Watched issues
label_related_issues: Поврзани задачи
label_applied_status: Applied status
label_loading: Loading...
label_relation_new: Нова релација
label_relation_delete: Избриши релација
label_relates_to: related to
label_duplicates: дупликати
label_duplicated_by: duplicated by
label_blocks: blocks
label_blocked_by: блокирано од
label_precedes: претходи
label_follows: следи
label_end_to_start: крај до почеток
label_end_to_end: крај до крај
label_start_to_start: почеток до почеток
label_start_to_end: почеток до крај
label_stay_logged_in: Останете најавени
label_disabled: disabled
label_show_completed_versions: Show completed versions
label_me: јас
label_board: Форум
label_board_new: Нов форум
label_board_plural: Форуми
label_board_locked: Заклучен
label_board_sticky: Sticky
label_topic_plural: Теми
label_message_plural: Пораки
label_message_last: Последна порака
label_message_new: Нова порака
label_message_posted: Поракате е додадена
label_reply_plural: Одговори
label_send_information: Испрати ги информациите за профилот на корисникот
label_year: Година
label_month: Месец
label_week: Недела
label_date_from: Од
label_date_to: До
label_language_based: Според јазикот на корисникот
label_sort_by: "Подреди според {{value}}"
label_send_test_email: Испрати тест е-порака
label_feeds_access_key: RSS клуч за пристап
label_missing_feeds_access_key: Недостика RSS клуч за пристап
label_feeds_access_key_created_on: "RSS клучот за пристап креиран пред {{value}}"
label_module_plural: Модули
label_added_time_by: "Додадено од {{author}} пред {{age}}"
label_updated_time_by: "Ажурирано од {{author}} пред {{age}}"
label_updated_time: "Ажурирано пред {{value}}"
label_jump_to_a_project: Префрли се на проект...
label_file_plural: Датотеки
label_changeset_plural: Changesets
label_default_columns: Основни колони
label_no_change_option: (Без промена)
label_bulk_edit_selected_issues: Групно уредување на задачи
label_theme: Тема
label_default: Default
label_search_titles_only: Пребарувај само наслови
label_user_mail_option_all: "За било кој настан во сите мои проекти"
label_user_mail_option_selected: "За било кој настан само во избраните проекти..."
label_user_mail_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: "По страна: {{value}}"
label_age: Age
label_change_properties: Change properties
label_general: Општо
label_more: Повеќе
label_scm: SCM
label_plugins: Додатоци
label_ldap_authentication: LDAP автентикација
label_downloads_abbr: Превземања
label_optional_description: Опис (незадолжително)
label_add_another_file: Додади уште една датотека
label_preferences: Preferences
label_chronological_order: Во хронолошки ред
label_reverse_chronological_order: In reverse chronological order
label_planning: Планирање
label_incoming_emails: Дојдовни е-пораки
label_generate_key: Генерирај клуч
label_issue_watchers: Watchers
label_example: Пример
label_display: Прикажи
label_sort: Подреди
label_ascending: Растечки
label_descending: Опаѓачки
label_date_from_to: Од {{start}} до {{end}}
label_wiki_content_added: Вики страница додадена
label_wiki_content_updated: Вики страница ажурирана
label_group: Група
label_group_plural: Групи
label_group_new: Нова група
label_time_entry_plural: Потрошено време
label_version_sharing_none: Не споделено
label_version_sharing_descendants: Со сите подпроекти
label_version_sharing_hierarchy: Со хиерархијата на проектот
label_version_sharing_tree: Со дрвото на проектот
label_version_sharing_system: Со сите проекти
label_update_issue_done_ratios: Update issue done ratios
label_copy_source: Извор
label_copy_target: Дестинација
label_copy_same_as_target: Исто како дестинацијата
label_display_used_statuses_only: Only display statuses that are used by this tracker
label_api_access_key: API клуч за пристап
label_missing_api_access_key: Недостига API клуч за пристап
label_api_access_key_created_on: "API клучот за пристап е креиран пред {{value}}"
label_profile: Профил
label_subtask_plural: Подзадачи
label_project_copy_notifications: Праќај известувања по е-пошта при копирање на проект
button_login: Најави се
button_submit: Испрати
button_save: Зачувај
button_check_all: Штиклирај ги сите
button_uncheck_all: Одштиклирај ги сите
button_delete: Избриши
button_create: Креирај
button_create_and_continue: Креирај и продолжи
button_test: Тест
button_edit: Уреди
button_add: Додади
button_change: Промени
button_apply: Примени
button_clear: Избриши
button_lock: Заклучи
button_unlock: Отклучи
button_download: Превземи
button_list: List
button_view: Прегледај
button_move: Премести
button_move_and_follow: Премести и следи
button_back: Back
button_cancel: Откажи
button_activate: Активирај
button_sort: Подреди
button_log_time: Бележи време
button_rollback: Rollback to this version
button_watch: Следи
button_unwatch: Не следи
button_reply: Одговори
button_archive: Архивирај
button_unarchive: Одархивирај
button_reset: Reset
button_rename: Преименувај
button_change_password: Промени лозинка
button_copy: Копирај
button_copy_and_follow: Копирај и следи
button_annotate: Annotate
button_update: Ажурирај
button_configure: Конфигурирај
button_quote: Цитирај
button_duplicate: Копирај
button_show: Show
status_active: активни
status_registered: регистрирани
status_locked: заклучени
version_status_open: отворени
version_status_locked: заклучени
version_status_closed: затворени
field_active: Active
text_select_mail_notifications: Изберете за кои настани да се праќаат известувања по е-пошта да се праќаат.
text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 значи без ограничување
text_project_destroy_confirmation: Дали сте сигурни дека сакате да го избришете проектот и сите поврзани податоци?
text_subprojects_destroy_warning: "Неговите подпроекти: {{value}} исто така ќе бидат избришани."
text_workflow_edit: Select a role and a tracker to edit the workflow
text_are_you_sure: Дали сте сигурни?
text_journal_changed: "{{label}} променето од {{old}} во {{new}}"
text_journal_set_to: "{{label}} set to {{value}}"
text_journal_deleted: "{{label}} избришан ({{old}})"
text_journal_added: "{{label}} {{value}} додаден"
text_tip_task_begin_day: задачи што почнуваат овој ден
text_tip_task_end_day: задачи што завршуваат овој ден
text_tip_task_begin_end_day: задачи што почнуваат и завршуваат овој ден
text_project_identifier_info: 'Само мали букви (a-z), бројки и dashes се дозволени<br />По зачувувањето, идентификаторот неможе да се смени.'
text_caracters_maximum: "{{count}} знаци максимум."
text_caracters_minimum: "Мора да е најмалку {{count}} знаци долго."
text_length_between: "Должина помеѓу {{min}} и {{max}} знаци."
text_tracker_no_workflow: No workflow defined for this tracker
text_unallowed_characters: Недозволени знаци
text_comma_separated: Дозволени се повеќе вредности (разделени со запирка).
text_line_separated: Дозволени се повеќе вредности (една линија за секоја вредност).
text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
text_issue_added: "Задачата {{id}} е пријавена од {{author}}."
text_issue_updated: "Зачата {{id}} е ажурирана од {{author}}."
text_wiki_destroy_confirmation: Дали сте сигурни дека сакате да го избришете ова вики и целата негова содржина?
text_issue_category_destroy_question: "Некои задачи ({{count}}) се доделени на оваа категорија. Што сакате да правите?"
text_issue_category_destroy_assignments: Remove category assignments
text_issue_category_reassign_to: Додели ги задачите на оваа категорија
text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
text_load_default_configuration: Load the default configuration
text_status_changed_by_changeset: "Applied in changeset {{value}}."
text_issues_destroy_confirmation: 'Дали сте сигурни дека сакате да ги избришете избраните задачи?'
text_select_project_modules: 'Изберете модули за овој проект:'
text_default_administrator_account_changed: Default administrator account changed
text_file_repository_writable: Во папката за прилози може да се запишува
text_plugin_assets_writable: Во папката за додатоци може да се запишува
text_rmagick_available: RMagick available (незадолжително)
text_destroy_time_entries_question: "{{hours}} hours were reported on the issues you are about to delete. What do you want to do ?"
text_destroy_time_entries: Delete reported hours
text_assign_time_entries_to_project: Додели ги пријавените часови на проектот
text_reassign_time_entries: 'Reassign reported hours to this issue:'
text_user_wrote: "{{value}} напиша:"
text_enumeration_destroy_question: "{{count}} objects are assigned to this value."
text_enumeration_category_reassign_to: 'Reassign them to this value:'
text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/email.yml и рестартирајте ја апликацијата."
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
text_custom_field_possible_values_info: 'One line for each value'
text_wiki_page_destroy_question: "This page has {{descendants}} child page(s) and descendant(s). What do you want to do?"
text_wiki_page_nullify_children: "Keep child pages as root pages"
text_wiki_page_destroy_children: "Delete child pages and all their descendants"
text_wiki_page_reassign_children: "Reassign child pages to this parent page"
text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?"
text_zoom_in: Zoom in
text_zoom_out: Zoom out
default_role_manager: Менаџер
default_role_developer: Developer
default_role_reporter: Reporter
default_tracker_bug: Грешка
default_tracker_feature: Функционалност
default_tracker_support: Поддршка
default_issue_status_new: Нова
default_issue_status_in_progress: Во прогрес
default_issue_status_resolved: Разрешена
default_issue_status_feedback: Feedback
default_issue_status_closed: Затворена
default_issue_status_rejected: Одбиена
default_doc_category_user: Корисничка документација
default_doc_category_tech: Техничка документација
default_priority_low: Низок
default_priority_normal: Нормален
default_priority_high: Висок
default_priority_urgent: Итно
default_priority_immediate: Веднаш
default_activity_design: Дизајн
default_activity_development: Развој
enumeration_issue_priorities: Приоритети на задача
enumeration_doc_categories: Категории на документ
enumeration_activities: Активности (следење на време)
enumeration_system_activity: Системска активност
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -117,6 +117,7 @@ mn:
greater_than_start_date: "must be greater than start date"
not_same_project: "нэг ижил төсөлд хамаарахгүй байна"
circular_dependency: "Энэ харьцаа нь гинжин(рекурсив) харьцаа үүсгэх юм байна"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Сонгоно уу
@ -913,3 +914,7 @@ mn:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -116,6 +116,7 @@ nl:
greater_than_start_date: "moet na de startdatum liggen"
not_same_project: "hoort niet bij hetzelfde project"
circular_dependency: "Deze relatie zou een circulaire afhankelijkheid tot gevolg hebben"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Selecteer
@ -701,7 +702,7 @@ nl:
setting_date_format: Datumformaat
setting_default_language: Standaard taal
setting_default_projects_public: Nieuwe projecten zijn standaard publiek
setting_diff_max_lines_displayed: Max number of diff lines displayed
setting_diff_max_lines_displayed: Max aantal diff regels weer te geven
setting_display_subprojects_issues: Standaard issues van subproject tonen
setting_emails_footer: E-mails footer
setting_enabled_scm: SCM ingeschakeld
@ -709,7 +710,7 @@ nl:
setting_gravatar_enabled: Gebruik Gravatar gebruikersiconen
setting_host_name: Hostnaam
setting_issue_list_default_columns: Standaardkolommen getoond op de lijst met issues
setting_issues_export_limit: Limiet export issues
setting_issues_export_limit: Max aantal te exporteren issues
setting_login_required: Authenticatie vereist
setting_mail_from: Afzender e-mail adres
setting_mail_handler_api_enabled: Schakel WS in voor inkomende mail.
@ -727,7 +728,7 @@ nl:
setting_welcome_text: Welkomsttekst
setting_wiki_compression: Wikigeschiedenis comprimeren
status_active: actief
status_locked: gelockt
status_locked: vergrendeld
status_registered: geregistreerd
text_are_you_sure: Weet u het zeker?
text_assign_time_entries_to_project: Gerapporteerde uren toevoegen aan dit project
@ -753,7 +754,7 @@ nl:
text_load_default_configuration: Laad de standaardconfiguratie
text_min_max_length_info: 0 betekent geen restrictie
text_no_configuration_data: "Rollen, trackers, issue statussen en workflows zijn nog niet geconfigureerd.\nHet is ten zeerste aangeraden om de standaard configuratie in te laden. U kunt deze aanpassen nadat deze is ingeladen."
text_plugin_assets_writable: Plugin assets directory writable
text_plugin_assets_writable: Plugin assets directory beschrijfbaar
text_project_destroy_confirmation: Weet u zeker dat u dit project en alle gerelateerde gegevens wilt verwijderen?
text_project_identifier_info: 'kleine letters (a-z), cijfers en liggende streepjes toegestaan.<br />Eenmaal bewaard kan de identificatiecode niet meer worden gewijzigd.'
text_reassign_time_entries: 'Gerapporteerde uren opnieuw toewijzen:'
@ -778,7 +779,7 @@ nl:
text_custom_field_possible_values_info: 'Per lijn een waarde'
label_display: Toon
field_editable: Bewerkbaar
setting_repository_log_display_limit: Maximum hoeveelheid van revisies zichbaar
setting_repository_log_display_limit: Max aantal revisies zichbaar
setting_file_max_size_displayed: Max grootte van tekst bestanden inline zichtbaar
field_watcher: Watcher
setting_openid: Sta OpenID login en registratie toe
@ -824,7 +825,7 @@ nl:
version_status_closed: gesloten
version_status_locked: vergrendeld
version_status_open: open
error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
error_can_not_reopen_issue_on_closed_version: Een issue toegewezen aan een gesloten versie kan niet heropend worden
label_user_anonymous: Anoniem
button_move_and_follow: Verplaats en volg
setting_default_projects_modules: Standaard geactiveerde modules voor nieuwe projecten
@ -833,36 +834,36 @@ nl:
label_version_sharing_hierarchy: Met project hiërarchie
label_version_sharing_system: Met alle projecten
label_version_sharing_descendants: Met subprojecten
label_version_sharing_tree: With project tree
label_version_sharing_tree: Met project boom
label_version_sharing_none: Niet gedeeld
error_can_not_archive_project: Dit project kan niet worden gearchiveerd
button_duplicate: Dupliceer
button_copy_and_follow: Kopiëer en volg
label_copy_source: Bron
setting_issue_done_ratio: Bereken issue done ratio met
setting_issue_done_ratio: Bereken issue percentage voldaan met
setting_issue_done_ratio_issue_status: Gebruik de issue status
error_issue_done_ratios_not_updated: Issue done ratios niet geupdate.
error_issue_done_ratios_not_updated: Issue percentage voldaan niet geupdate.
error_workflow_copy_target: Selecteer tracker(s) en rol(len)
setting_issue_done_ratio_issue_field: Gebruik het issue veld
label_copy_same_as_target: Zelfde als doel
label_copy_target: Doel
notice_issue_done_ratios_updated: Issue done ratios updated.
notice_issue_done_ratios_updated: Issue percentage voldaan geupdate.
error_workflow_copy_source: Selecteer een bron tracker of rol
label_update_issue_done_ratios: Update issue done ratios
label_update_issue_done_ratios: Update issue percentage voldaan
setting_start_of_week: Week begint op
permission_view_issues: Bekijk Issues
label_display_used_statuses_only: Laat alleen statussen zien die gebruikt worden door deze tracker
label_revision_id: Revision {{value}}
label_revision_id: Revisie {{value}}
label_api_access_key: API access key
label_api_access_key_created_on: API access key gemaakt {{value}} geleden
label_feeds_access_key: RSS access key
notice_api_access_key_reseted: Uw API access key was gereset.
setting_rest_api_enabled: Enable REST web service
setting_rest_api_enabled: Activeer REST web service
label_missing_api_access_key: Geen API access key
label_missing_feeds_access_key: Geen RSS access key
button_show: Laat zien
text_line_separated: Meerdere waarden toegestaan (elke regel is een waarde).
setting_mail_handler_body_delimiters: Truncate emails after one of these lines
setting_mail_handler_body_delimiters: Breek email verwerking af na een van deze regels
permission_add_subprojects: Maak subprojecten
label_subproject_new: Nieuw subproject
text_own_membership_delete_confirmation: |-
@ -873,10 +874,10 @@ nl:
label_board_locked: Vergrendeld
permission_export_wiki_pages: Exporteer wiki pagina's
setting_cache_formatted_text: Cache opgemaakte tekst
permission_manage_project_activities: Manage project activities
permission_manage_project_activities: Beheer project activiteiten
error_unable_delete_issue_status: Verwijderen van issue status niet gelukt
label_profile: Profiel
permission_manage_subtasks: Manage subtasks
permission_manage_subtasks: Beheer subtasks
field_parent_issue: Parent task
label_subtask_plural: Subtasks
label_project_copy_notifications: Stuur email notificaties voor de project kopie
@ -891,6 +892,10 @@ nl:
text_zoom_in: Zoom in
notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer.
label_overall_spent_time: Totaal bestede tijd
field_time_entries: Log time
field_time_entries: Log tijd
project_module_gantt: Gantt
project_module_calendar: Calendar
project_module_calendar: Kalender
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -111,6 +111,7 @@
greater_than_start_date: "må være større enn startdato"
not_same_project: "hører ikke til samme prosjekt"
circular_dependency: "Denne relasjonen ville lagd en sirkulær avhengighet"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Vennligst velg
@ -903,3 +904,7 @@
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -96,8 +96,8 @@ pl:
few: "ponad {{count}} lata"
other: "ponad {{count}} lat"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
one: "prawie rok"
other: "prawie {{count}} lata"
activerecord:
errors:
@ -122,13 +122,14 @@ pl:
greater_than: "musi być większe niż {{count}}"
greater_than_or_equal_to: "musi być większe lub równe {{count}}"
equal_to: "musi być równe {{count}}"
less_than: "musie być mniejsze niż {{count}}"
less_than: "musi być mniejsze niż {{count}}"
less_than_or_equal_to: "musi być mniejsze lub równe {{count}}"
odd: "musi być nieparzyste"
even: "musi być parzyste"
greater_than_start_date: "musi być większe niż początkowa data"
not_same_project: "nie należy do tego samego projektu"
circular_dependency: "Ta relacja może wytworzyć kołową zależność"
cant_link_an_issue_with_a_descendant: "Zagadnienie nie może zostać powiązane z jednym z własnych podzagadnień"
support:
array:
@ -159,19 +160,19 @@ pl:
button_edit: Edytuj
button_list: Lista
button_lock: Zablokuj
button_log_time: Log czasu
button_log_time: Dziennik
button_login: Login
button_move: Przenieś
button_quote: Cytuj
button_rename: Zmień nazwę
button_reply: Odpowiedz
button_reset: Resetuj
button_rollback: Przywróc do tej wersji
button_rollback: Przywróć do tej wersji
button_save: Zapisz
button_sort: Sortuj
button_submit: Wyślij
button_test: Testuj
button_unarchive: Przywróc z archiwum
button_unarchive: Przywróć z archiwum
button_uncheck_all: Odznacz wszystko
button_unlock: Odblokuj
button_unwatch: Nie obserwuj
@ -538,12 +539,12 @@ pl:
label_project_latest: Ostatnie projekty
label_project_new: Nowy projekt
label_project_plural234: Projekty
label_project_plural5: Projekty
label_project_plural5: Projektów
label_project_plural: Projekty
label_x_projects:
zero: no projects
one: 1 project
other: "{{count}} projects"
zero: brak projektów
one: jeden projekt
other: "{{count}} projektów"
label_public_projects: Projekty publiczne
label_query: Kwerenda
label_query_new: Nowa kwerenda
@ -589,7 +590,7 @@ pl:
label_sort_highest: Przesuń na górę
label_sort_lower: Do dołu
label_sort_lowest: Przesuń na dół
label_spent_time: Spędzony czas
label_spent_time: Przepracowany czas
label_start_to_end: początek do końca
label_start_to_start: początek do początku
label_statistics: Statystyki
@ -601,7 +602,7 @@ pl:
label_this_month: ten miesiąc
label_this_week: ten tydzień
label_this_year: ten rok
label_time_tracking: Śledzenie czasu
label_time_tracking: Śledzenie czasu pracy
label_today: dzisiaj
label_topic_plural: Tematy
label_total: Ogółem
@ -683,11 +684,11 @@ pl:
permission_edit_messages: Edycja wiadomości
permission_edit_own_issue_notes: Edycja własnych notatek
permission_edit_own_messages: Edycja własnych wiadomości
permission_edit_own_time_entries: Edycja własnego logu czasu
permission_edit_own_time_entries: Edycja własnego dziennika
permission_edit_project: Edycja projektów
permission_edit_time_entries: Edycja logów czasu
permission_edit_time_entries: Edycja wpisów dziennika
permission_edit_wiki_pages: Edycja stron wiki
permission_log_time: Zapisywanie spędzonego czasu
permission_log_time: Zapisywanie przepracowanego czasu
permission_manage_boards: Zarządzanie forami
permission_manage_categories: Zarządzanie kategoriami zaganień
permission_manage_documents: Zarządzanie dokumentami
@ -711,7 +712,7 @@ pl:
permission_view_gantt: Podgląd diagramu Gantta
permission_view_issue_watchers: Podgląd listy obserwatorów
permission_view_messages: Podgląd wiadomości
permission_view_time_entries: Podgląd spędzonego czasu
permission_view_time_entries: Podgląd przepracowanego czasu
permission_view_wiki_edits: Podgląd historii wiki
permission_view_wiki_pages: Podgląd wiki
project_module_boards: Fora
@ -720,7 +721,7 @@ pl:
project_module_issue_tracking: Śledzenie zagadnień
project_module_news: Komunikaty
project_module_repository: Repozytorium
project_module_time_tracking: Śledzenie czasu
project_module_time_tracking: Śledzenie czasu pracy
project_module_wiki: Wiki
setting_activity_days_default: Dni wyświetlane w aktywności projektu
setting_app_subtitle: Podtytuł aplikacji
@ -742,7 +743,7 @@ pl:
setting_feeds_limit: Limit danych RSS
setting_gravatar_enabled: Używaj ikon użytkowników Gravatar
setting_host_name: Nazwa hosta i ścieżka
setting_issue_list_default_columns: Domyślne kolumny wiświetlane na liście zagadnień
setting_issue_list_default_columns: Domyślne kolumny wyświetlane na liście zagadnień
setting_issues_export_limit: Limit eksportu zagadnień
setting_login_required: Identyfikacja wymagana
setting_mail_from: Adres email wysyłki
@ -764,20 +765,20 @@ pl:
status_locked: zablokowany
status_registered: zarejestrowany
text_are_you_sure: Jesteś pewien ?
text_assign_time_entries_to_project: Przypisz logowany czas do projektu
text_assign_time_entries_to_project: Przypisz wpisy dziennika do projektu
text_caracters_maximum: "{{count}} znaków maksymalnie."
text_caracters_minimum: "Musi być nie krótsze niż {{count}} znaków."
text_comma_separated: Wielokrotne wartości dozwolone (rozdzielone przecinkami).
text_default_administrator_account_changed: Zmieniono domyślne hasło administratora
text_destroy_time_entries: Usuń zalogowany czas
text_destroy_time_entries_question: Zalogowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?
text_destroy_time_entries: Usuń wpisy dziennika
text_destroy_time_entries_question: Przepracowano {{hours}} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?
text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml a następnie zrestartuj aplikację i uaktywnij to."
text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:'
text_enumeration_destroy_question: "{{count}} obiektów jest przypisana do tej wartości."
text_file_repository_writable: Zapisywalne repozytorium plików
text_issue_added: "Zagadnienie {{id}} zostało wprowadzone (by {{author}})."
text_issue_category_destroy_assignments: Usuń przydziały kategorii
text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz uczynić?"
text_issue_category_destroy_question: "Zagadnienia ({{count}}) są przypisane do tej kategorii. Co chcesz zrobić?"
text_issue_category_reassign_to: Przydziel zagadnienie do tej kategorii
text_issue_updated: "Zagadnienie {{id}} zostało zaktualizowane (by {{author}})."
text_issues_destroy_confirmation: 'Czy jestes pewien, że chcesz usunąć wskazane zagadnienia?'
@ -786,9 +787,9 @@ pl:
text_load_default_configuration: Załaduj domyślną konfigurację
text_min_max_length_info: 0 oznacza brak restrykcji
text_no_configuration_data: "Role użytkowników, typy zagadnień, statusy zagadnień oraz przepływ pracy nie zostały jeszcze skonfigurowane.\nJest wysoce rekomendowane by załadować domyślną konfigurację. Po załadowaniu będzie możliwość edycji tych danych."
text_project_destroy_confirmation: Jesteś pewien, że chcesz usunąć ten projekt i wszyskie powiązane dane?
text_project_destroy_confirmation: Jesteś pewien, że chcesz usunąć ten projekt i wszystkie powiązane dane?
text_project_identifier_info: 'Małe litery (a-z), liczby i myślniki dozwolone.<br />Raz zapisany, identyfikator nie może być zmieniony.'
text_reassign_time_entries: 'Przepnij zalogowany czas do tego zagadnienia:'
text_reassign_time_entries: 'Przepnij przepracowany czas do tego zagadnienia:'
text_regexp_info: np. ^[A-Z0-9]+$
text_repository_usernames_mapping: "Wybierz lub uaktualnij przyporządkowanie użytkowników Redmine do użytkowników repozytorium.\nUżytkownicy z taką samą nazwą lub adresem email są przyporządkowani automatycznie."
text_rmagick_available: RMagick dostępne (opcjonalnie)
@ -799,9 +800,9 @@ pl:
text_tip_task_begin_day: zadanie zaczynające się dzisiaj
text_tip_task_begin_end_day: zadanie zaczynające i kończące się dzisiaj
text_tip_task_end_day: zadanie kończące się dzisiaj
text_tracker_no_workflow: Brak przepływu zefiniowanego dla tego typu zagadnienia
text_tracker_no_workflow: Brak przepływu zdefiniowanego dla tego typu zagadnienia
text_unallowed_characters: Niedozwolone znaki
text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnien, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)."
text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnień, które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)."
text_user_wrote: "{{value}} napisał:"
text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i całą jego zawartość ?
text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu
@ -817,7 +818,7 @@ pl:
button_create_and_continue: Stwórz i dodaj kolejne
text_custom_field_possible_values_info: 'Każda wartość w osobnej linii'
setting_repository_log_display_limit: Maksymalna liczba rewizji pokazywanych w logu pliku
setting_file_max_size_displayed: Maksymalny rozmiar plików tekstowych zagnieżdżanych w stronie
setting_file_max_size_displayed: Maksymalny rozmiar plików tekstowych osadzanych w stronie
field_watcher: Obserwator
setting_openid: Logowanie i rejestracja przy użyciu OpenID
field_identity_url: Identyfikator OpenID (URL)
@ -829,10 +830,10 @@ pl:
label_date_from_to: Od {{start}} do {{end}}
label_greater_or_equal: ">="
label_less_or_equal: <=
text_wiki_page_destroy_question: This page has {{descendants}} child page(s) and descendant(s). What do you want to do?
text_wiki_page_reassign_children: Reassign child pages to this parent page
text_wiki_page_nullify_children: Keep child pages as root pages
text_wiki_page_destroy_children: Delete child pages and all their descendants
text_wiki_page_destroy_question: Ta strona posiada podstrony ({{descendants}}). Co chcesz zrobić?
text_wiki_page_reassign_children: Podepnij je do strony nadrzędnej względem usuwanej
text_wiki_page_nullify_children: Przesuń je na szczyt hierarchii
text_wiki_page_destroy_children: Usuń wszystkie podstrony
setting_password_min_length: Minimalna długość hasła
field_group_by: Grupuj wyniki wg
mail_subject_wiki_content_updated: "Strona wiki '{{page}}' została uaktualniona"
@ -844,7 +845,7 @@ pl:
permission_add_project: Tworzenie projektu
setting_new_project_user_role_id: Rola nadawana twórcom projektów, którzy nie posiadają uprawnień administatora
label_view_all_revisions: Pokaż wszystkie rewizje
label_tag: Tag
label_tag: Słowo kluczowe
label_branch: Gałąź
error_no_tracker_in_project: Projekt nie posiada powiązanych typów zagadnień. Sprawdź ustawienia projektu.
error_no_default_issue_status: Nie zdefiniowano domyślnego statusu zagadnień. Sprawdź konfigurację (Przejdź do "Administracja -> Statusy zagadnień).
@ -854,7 +855,7 @@ pl:
label_group_plural: Grupy
label_group: Grupa
label_group_new: Nowa grupa
label_time_entry_plural: Spędzony czas
label_time_entry_plural: Przepracowany czas
text_journal_added: "Dodano {{label}} {{value}}"
field_active: Aktywne
enumeration_system_activity: Aktywność Systemowa
@ -912,24 +913,28 @@ pl:
label_board_locked: Zamknięta
permission_export_wiki_pages: Eksport stron wiki
permission_manage_project_activities: Zarządzanie aktywnościami projektu
setting_cache_formatted_text: Cache formatted text
error_unable_delete_issue_status: Unable to delete issue status
label_profile: Profile
permission_manage_subtasks: Manage subtasks
field_parent_issue: Parent task
label_subtask_plural: Subtasks
label_project_copy_notifications: Send email notifications during the project copy
error_can_not_delete_custom_field: Unable to delete custom field
error_unable_to_connect: Unable to connect ({{value}})
error_can_not_remove_role: This role is in use and can not be deleted.
error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
field_principal: Principal
label_my_page_block: My page block
notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
text_zoom_out: Zoom out
text_zoom_in: Zoom in
notice_unable_delete_time_entry: Unable to delete time log entry.
label_overall_spent_time: Overall spent time
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
setting_cache_formatted_text: Buforuj sformatowany tekst
error_unable_delete_issue_status: Nie można usunąć statusu zagadnienia
label_profile: Profil
permission_manage_subtasks: Zarządzanie podzagadnieniami
field_parent_issue: Zagadnienie nadrzędne
label_subtask_plural: Podzagadnienia
label_project_copy_notifications: Wyślij powiadomienia mailowe przy kopiowaniu projektu
error_can_not_delete_custom_field: Nie można usunąć tego pola
error_unable_to_connect: Nie można połączyć ({{value}})
error_can_not_remove_role: Ta rola przypisana jest niektórym użytkownikom i nie może zostać usunięta.
error_can_not_delete_tracker: Ten typ przypisany jest do części zagadnień i nie może zostać usunięty.
field_principal: Przełożony
label_my_page_block: Elementy
notice_failed_to_save_members: "Nie można zapisać uczestników: {{errors}}."
text_zoom_out: Zmniejsz czcionkę
text_zoom_in: Powiększ czcionkę
notice_unable_delete_time_entry: Nie można usunąć wpisu z dziennika.
label_overall_spent_time: Przepracowany czas
field_time_entries: Dziennik
project_module_gantt: Diagram Gantta
project_module_calendar: Kalendarz
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -143,6 +143,7 @@ pt-BR:
greater_than_start_date: "deve ser maior que a data inicial"
not_same_project: "não pertence ao mesmo projeto"
circular_dependency: "Esta relação geraria uma dependência circular"
cant_link_an_issue_with_a_descendant: "Uma tarefa não pode ser relaciona a uma de suas subtarefas"
actionview_instancetag_blank_option: Selecione
@ -936,3 +937,7 @@ pt-BR:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -128,6 +128,7 @@ pt:
greater_than_start_date: "deve ser maior que a data inicial"
not_same_project: "não pertence ao mesmo projecto"
circular_dependency: "Esta relação iria criar uma dependência circular"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
## Translated by: Pedro Araújo <phcrva19@hotmail.com>
actionview_instancetag_blank_option: Seleccione
@ -920,3 +921,7 @@ pt:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -110,6 +110,7 @@ ro:
greater_than_start_date: "trebuie să fie după data de început"
not_same_project: "trebuie să aparțină aceluiași proiect"
circular_dependency: "Această relație ar crea o dependență circulară"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Selectați
@ -905,3 +906,7 @@ ro:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -192,11 +192,12 @@ ru:
equal_to: "может иметь лишь значение, равное {{count}}"
less_than: "может иметь значение меньшее чем {{count}}"
less_than_or_equal_to: "может иметь значение меньшее или равное {{count}}"
odd: "может иметь лишь четное значение"
even: "может иметь лишь нечетное значение"
odd: "может иметь лишь нечетное значение"
even: "может иметь лишь четное значение"
greater_than_start_date: "должна быть позднее даты начала"
not_same_project: "не относятся к одному проекту"
not_same_project: "не относится к одному проекту"
circular_dependency: "Такая связь приведет к циклической зависимости"
cant_link_an_issue_with_a_descendant: "Задача не может быть связана со своей подзадачей"
support:
array:
@ -229,6 +230,7 @@ ru:
button_delete: Удалить
button_download: Загрузить
button_edit: Редактировать
button_edit_associated_wikipage: "Редактировать связанную wiki-страницу: {{page_title}}"
button_list: Список
button_lock: Заблокировать
button_login: Вход
@ -293,6 +295,7 @@ ru:
field_admin: Администратор
field_assignable: Задача может быть назначена этой роли
field_assigned_to: Назначена
field_assigned_to_role: Роль участника
field_attr_firstname: Имя
field_attr_lastname: Фамилия
field_attr_login: Атрибут Регистрация
@ -342,6 +345,7 @@ ru:
field_mail: Email
field_mail_notification: Уведомления по email
field_max_length: Максимальная длина
field_member_of_group: Группа участника
field_min_length: Минимальная длина
field_name: Имя
field_new_password: Новый пароль
@ -1029,3 +1033,4 @@ ru:
notice_unable_delete_time_entry: Невозможно удалить запись журнала.
label_overall_spent_time: Всего затрачено времени
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -112,6 +112,7 @@ sk:
greater_than_start_date: "musí byť neskôr ako počiatočný dátum"
not_same_project: "nepatrí rovnakému projektu"
circular_dependency: "Tento vzťah by vytvoril cyklickú závislosť"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
# SK translation by Stanislav Pach | stano.pach@seznam.cz
@ -907,3 +908,7 @@ sk:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -116,6 +116,7 @@ sl:
greater_than_start_date: "mora biti kasnejši kot začeten datum"
not_same_project: "ne pripada istemu projektu"
circular_dependency: "Ta odnos bi povzročil krožno odvisnost"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Prosimo izberite
@ -908,3 +909,7 @@ sl:
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -68,7 +68,7 @@ sr-YU:
number:
format:
separator: "."
separator: ","
delimiter: ""
precision: 3
human:
@ -910,6 +910,10 @@ sr-YU:
enumeration_activities: Aktivnosti (praćenje vremena)
enumeration_system_activity: Sistemska aktivnost
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_time_entries: Vreme evidencije
project_module_gantt: Gantov dijagram
project_module_calendar: Kalendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -68,7 +68,7 @@ sr:
number:
format:
separator: "."
separator: ","
delimiter: ""
precision: 3
human:
@ -910,6 +910,11 @@ sr:
enumeration_activities: Активности (праћење времена)
enumeration_system_activity: Системска активност
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_time_entries: Време евиденције
project_module_gantt: Гантов дијаграм
project_module_calendar: Календар
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

View File

@ -130,6 +130,7 @@ sv:
greater_than_start_date: "måste vara senare än startdatumet"
not_same_project: "tillhör inte samma projekt"
circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
direction: ltr
date:
@ -325,6 +326,7 @@ sv:
field_redirect_existing_links: Omdirigera existerande länkar
field_estimated_hours: Estimerad tid
field_column_names: Kolumner
field_time_entries: Spenderad tid
field_time_zone: Tidszon
field_searchable: Sökbar
field_default_value: Standardvärde
@ -456,6 +458,8 @@ sv:
project_module_wiki: Wiki
project_module_repository: Versionsarkiv
project_module_boards: Forum
project_module_calendar: Kalender
project_module_gantt: Gantt
label_user: Användare
label_user_plural: Användare
@ -857,7 +861,7 @@ sv:
button_update: Uppdatera
button_configure: Konfigurera
button_quote: Citera
button_duplicate: Duplisera
button_duplicate: Duplicera
button_show: Visa
status_active: aktiv
@ -954,6 +958,7 @@ sv:
enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning)
enumeration_system_activity: Systemaktivitet
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
field_member_of_group: Member of Group
field_assigned_to_role: Member of Role
button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
text_are_you_sure_with_children: Delete issue and all child issues?

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