Merge branch 'ticket/master/30-upstream-code-review-cherry-pick' into ticket/master/30-upstream-code-review
This commit is contained in:
commit
8e60c5bf1c
|
@ -1,4 +1,5 @@
|
||||||
/config/additional_environment.rb
|
/config/additional_environment.rb
|
||||||
|
/config/configuration.yml
|
||||||
/config/database.yml
|
/config/database.yml
|
||||||
/config/email.yml
|
/config/email.yml
|
||||||
/config/initializers/session_store.rb
|
/config/initializers/session_store.rb
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
syntax: glob
|
syntax: glob
|
||||||
|
|
||||||
config/additional_environment.rb
|
config/additional_environment.rb
|
||||||
|
config/configuration.yml
|
||||||
config/database.yml
|
config/database.yml
|
||||||
config/email.yml
|
config/email.yml
|
||||||
config/initializers/session_store.rb
|
config/initializers/session_store.rb
|
||||||
|
|
|
@ -203,12 +203,24 @@ class AccountController < ApplicationController
|
||||||
self.logged_user = user
|
self.logged_user = user
|
||||||
# generate a key and set cookie if autologin
|
# generate a key and set cookie if autologin
|
||||||
if params[:autologin] && Setting.autologin?
|
if params[:autologin] && Setting.autologin?
|
||||||
token = Token.create(:user => user, :action => 'autologin')
|
set_autologin_cookie(user)
|
||||||
cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now }
|
|
||||||
end
|
end
|
||||||
call_hook(:controller_account_success_authentication_after, {:user => user })
|
call_hook(:controller_account_success_authentication_after, {:user => user })
|
||||||
redirect_back_or_default :controller => 'my', :action => 'page'
|
redirect_back_or_default :controller => 'my', :action => 'page'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_autologin_cookie(user)
|
||||||
|
token = Token.create(:user => user, :action => 'autologin')
|
||||||
|
cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin'
|
||||||
|
cookie_options = {
|
||||||
|
:value => token.value,
|
||||||
|
:expires => 1.year.from_now,
|
||||||
|
:path => (Redmine::Configuration['autologin_cookie_path'] || '/'),
|
||||||
|
:secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false),
|
||||||
|
:httponly => true
|
||||||
|
}
|
||||||
|
cookies[cookie_name] = cookie_options
|
||||||
|
end
|
||||||
|
|
||||||
# Onthefly creation failed, display the registration form to fill/fix attributes
|
# Onthefly creation failed, display the registration form to fill/fix attributes
|
||||||
def onthefly_creation_failed(user, auth_source_options = { })
|
def onthefly_creation_failed(user, auth_source_options = { })
|
||||||
|
|
|
@ -28,6 +28,7 @@ class IssueRelationsController < ApplicationController
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
|
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
|
||||||
format.js do
|
format.js do
|
||||||
|
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||||
render :update do |page|
|
render :update do |page|
|
||||||
page.replace_html "relations", :partial => 'issues/relations'
|
page.replace_html "relations", :partial => 'issues/relations'
|
||||||
if @relation.errors.empty?
|
if @relation.errors.empty?
|
||||||
|
@ -47,7 +48,10 @@ class IssueRelationsController < ApplicationController
|
||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
|
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
|
||||||
format.js { render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} }
|
format.js {
|
||||||
|
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||||
|
render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'}
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,7 @@ class IssuesController < ApplicationController
|
||||||
@journals.reverse! if User.current.wants_comments_in_reverse_order?
|
@journals.reverse! if User.current.wants_comments_in_reverse_order?
|
||||||
@changesets = @issue.changesets.visible.all
|
@changesets = @issue.changesets.visible.all
|
||||||
@changesets.reverse! if User.current.wants_comments_in_reverse_order?
|
@changesets.reverse! if User.current.wants_comments_in_reverse_order?
|
||||||
|
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||||
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
|
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
|
||||||
@edit_allowed = User.current.allowed_to?(:edit_issues, @project)
|
@edit_allowed = User.current.allowed_to?(:edit_issues, @project)
|
||||||
@priorities = IssuePriority.all
|
@priorities = IssuePriority.all
|
||||||
|
|
|
@ -94,6 +94,7 @@ class RepositoriesController < ApplicationController
|
||||||
(show_error_not_found; return) unless @entry
|
(show_error_not_found; return) unless @entry
|
||||||
@changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i)
|
@changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i)
|
||||||
@properties = @repository.properties(@path, @rev)
|
@properties = @repository.properties(@path, @rev)
|
||||||
|
@changeset = @repository.find_changeset_by_name(@rev)
|
||||||
end
|
end
|
||||||
|
|
||||||
def revisions
|
def revisions
|
||||||
|
@ -127,17 +128,19 @@ class RepositoriesController < ApplicationController
|
||||||
else
|
else
|
||||||
# Prevent empty lines when displaying a file with Windows style eol
|
# Prevent empty lines when displaying a file with Windows style eol
|
||||||
@content.gsub!("\r\n", "\n")
|
@content.gsub!("\r\n", "\n")
|
||||||
|
@changeset = @repository.find_changeset_by_name(@rev)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def annotate
|
def annotate
|
||||||
@entry = @repository.entry(@path, @rev)
|
@entry = @repository.entry(@path, @rev)
|
||||||
(show_error_not_found; return) unless @entry
|
(show_error_not_found; return) unless @entry
|
||||||
|
|
||||||
@annotate = @repository.scm.annotate(@path, @rev)
|
@annotate = @repository.scm.annotate(@path, @rev)
|
||||||
(render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty?
|
(render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty?
|
||||||
|
@changeset = @repository.find_changeset_by_name(@rev)
|
||||||
end
|
end
|
||||||
|
|
||||||
def revision
|
def revision
|
||||||
raise ChangesetNotFound if @rev.blank?
|
raise ChangesetNotFound if @rev.blank?
|
||||||
@changeset = @repository.find_changeset_by_name(@rev)
|
@changeset = @repository.find_changeset_by_name(@rev)
|
||||||
|
|
|
@ -109,6 +109,20 @@ module ApplicationHelper
|
||||||
link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => rev},
|
link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => rev},
|
||||||
:title => l(:label_revision_id, format_revision(revision)))
|
:title => l(:label_revision_id, format_revision(revision)))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Generates a link to a message
|
||||||
|
def link_to_message(message, options={}, html_options = nil)
|
||||||
|
link_to(
|
||||||
|
h(truncate(message.subject, :length => 60)),
|
||||||
|
{ :controller => 'messages', :action => 'show',
|
||||||
|
:board_id => message.board_id,
|
||||||
|
:id => message.root,
|
||||||
|
:r => (message.parent_id && message.id),
|
||||||
|
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
|
||||||
|
}.merge(options),
|
||||||
|
html_options
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
# Generates a link to a project if active
|
# Generates a link to a project if active
|
||||||
# Examples:
|
# Examples:
|
||||||
|
@ -588,16 +602,26 @@ module ApplicationHelper
|
||||||
# source:some/file#L120 -> Link to line 120 of the file
|
# source:some/file#L120 -> Link to line 120 of the file
|
||||||
# source:some/file@52#L120 -> Link to line 120 of the file's revision 52
|
# source:some/file@52#L120 -> Link to line 120 of the file's revision 52
|
||||||
# export:some/file -> Force the download of the file
|
# export:some/file -> Force the download of the file
|
||||||
# Forum messages:
|
# Forum messages:
|
||||||
# message#1218 -> Link to message with id 1218
|
# message#1218 -> Link to message with id 1218
|
||||||
|
#
|
||||||
|
# Links can refer other objects from other projects, using project identifier:
|
||||||
|
# identifier:r52
|
||||||
|
# identifier:document:"Some document"
|
||||||
|
# identifier:version:1.0.0
|
||||||
|
# identifier:source:some/file
|
||||||
def parse_redmine_links(text, project, obj, attr, only_path, options)
|
def parse_redmine_links(text, project, obj, attr, only_path, options)
|
||||||
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m|
|
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-]+):)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m|
|
||||||
leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8
|
leading, esc, project_prefix, project_identifier, prefix, sep, identifier = $1, $2, $3, $4, $5, $7 || $9, $8 || $10
|
||||||
link = nil
|
link = nil
|
||||||
|
if project_identifier
|
||||||
|
project = Project.visible.find_by_identifier(project_identifier)
|
||||||
|
end
|
||||||
if esc.nil?
|
if esc.nil?
|
||||||
if prefix.nil? && sep == 'r'
|
if prefix.nil? && sep == 'r'
|
||||||
if project && (changeset = project.changesets.find_by_revision(identifier))
|
# project.changesets.visible raises an SQL error because of a double join on repositories
|
||||||
link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision},
|
if project && project.repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(project.repository.id, identifier))
|
||||||
|
link = link_to("#{project_prefix}r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision},
|
||||||
:class => 'changeset',
|
:class => 'changeset',
|
||||||
:title => truncate_single_line(changeset.comments, :length => 100))
|
:title => truncate_single_line(changeset.comments, :length => 100))
|
||||||
end
|
end
|
||||||
|
@ -611,24 +635,18 @@ module ApplicationHelper
|
||||||
:title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
|
:title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
|
||||||
end
|
end
|
||||||
when 'document'
|
when 'document'
|
||||||
if document = Document.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current))
|
if document = Document.visible.find_by_id(oid)
|
||||||
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
||||||
:class => 'document'
|
:class => 'document'
|
||||||
end
|
end
|
||||||
when 'version'
|
when 'version'
|
||||||
if version = Version.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current))
|
if version = Version.visible.find_by_id(oid)
|
||||||
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
||||||
:class => 'version'
|
:class => 'version'
|
||||||
end
|
end
|
||||||
when 'message'
|
when 'message'
|
||||||
if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current))
|
if message = Message.visible.find_by_id(oid, :include => :parent)
|
||||||
link = link_to h(truncate(message.subject, :length => 60)), {:only_path => only_path,
|
link = link_to_message(message, {:only_path => only_path}, :class => 'message')
|
||||||
:controller => 'messages',
|
|
||||||
:action => 'show',
|
|
||||||
:board_id => message.board,
|
|
||||||
:id => message.root,
|
|
||||||
:anchor => (message.parent ? "message-#{message.id}" : nil)},
|
|
||||||
:class => 'message'
|
|
||||||
end
|
end
|
||||||
when 'project'
|
when 'project'
|
||||||
if p = Project.visible.find_by_id(oid)
|
if p = Project.visible.find_by_id(oid)
|
||||||
|
@ -640,26 +658,26 @@ module ApplicationHelper
|
||||||
name = identifier.gsub(%r{^"(.*)"$}, "\\1")
|
name = identifier.gsub(%r{^"(.*)"$}, "\\1")
|
||||||
case prefix
|
case prefix
|
||||||
when 'document'
|
when 'document'
|
||||||
if project && document = project.documents.find_by_title(name)
|
if project && document = project.documents.visible.find_by_title(name)
|
||||||
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
||||||
:class => 'document'
|
:class => 'document'
|
||||||
end
|
end
|
||||||
when 'version'
|
when 'version'
|
||||||
if project && version = project.versions.find_by_name(name)
|
if project && version = project.versions.visible.find_by_name(name)
|
||||||
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
||||||
:class => 'version'
|
:class => 'version'
|
||||||
end
|
end
|
||||||
when 'commit'
|
when 'commit'
|
||||||
if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"]))
|
if project && project.repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", project.repository.id, "#{name}%"]))
|
||||||
link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier},
|
link = link_to h("#{project_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier},
|
||||||
:class => 'changeset',
|
:class => 'changeset',
|
||||||
:title => truncate_single_line(changeset.comments, :length => 100)
|
:title => truncate_single_line(changeset.comments, :length => 100)
|
||||||
end
|
end
|
||||||
when 'source', 'export'
|
when 'source', 'export'
|
||||||
if project && project.repository
|
if project && project.repository && User.current.allowed_to?(:browse_repository, project)
|
||||||
name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
|
name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
|
||||||
path, rev, anchor = $1, $3, $5
|
path, rev, anchor = $1, $3, $5
|
||||||
link = link_to h("#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project,
|
link = link_to h("#{project_prefix}#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project,
|
||||||
:path => to_path_param(path),
|
:path => to_path_param(path),
|
||||||
:rev => rev,
|
:rev => rev,
|
||||||
:anchor => anchor,
|
:anchor => anchor,
|
||||||
|
@ -679,7 +697,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
leading + (link || "#{prefix}#{sep}#{identifier}")
|
leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -16,14 +16,4 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
module MessagesHelper
|
module MessagesHelper
|
||||||
|
|
||||||
def link_to_message(message)
|
|
||||||
return '' unless message
|
|
||||||
link_to h(truncate(message.subject, :length => 60)), :controller => 'messages',
|
|
||||||
:action => 'show',
|
|
||||||
:board_id => message.board_id,
|
|
||||||
:id => message.root,
|
|
||||||
:r => (message.parent_id && message.id),
|
|
||||||
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,7 +43,7 @@ class Attachment < ActiveRecord::Base
|
||||||
"LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"}
|
"LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"}
|
||||||
|
|
||||||
cattr_accessor :storage_path
|
cattr_accessor :storage_path
|
||||||
@@storage_path = "#{RAILS_ROOT}/files"
|
@@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files"
|
||||||
|
|
||||||
def validate
|
def validate
|
||||||
if self.filesize > Setting.attachment_max_size.to_i.kilobytes
|
if self.filesize > Setting.attachment_max_size.to_i.kilobytes
|
||||||
|
|
|
@ -29,6 +29,9 @@ class Document < ActiveRecord::Base
|
||||||
validates_presence_of :project, :title, :category
|
validates_presence_of :project, :title, :category
|
||||||
validates_length_of :title, :maximum => 60
|
validates_length_of :title, :maximum => 60
|
||||||
|
|
||||||
|
named_scope :visible, lambda {|*args| { :include => :project,
|
||||||
|
:conditions => Project.allowed_to_condition(args.first || User.current, :view_documents) } }
|
||||||
|
|
||||||
def visible?(user=User.current)
|
def visible?(user=User.current)
|
||||||
!user.nil? && user.allowed_to?(:view_documents, project)
|
!user.nil? && user.allowed_to?(:view_documents, project)
|
||||||
end
|
end
|
||||||
|
|
|
@ -34,7 +34,7 @@ class Issue < ActiveRecord::Base
|
||||||
has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all
|
has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all
|
||||||
has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all
|
has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all
|
||||||
|
|
||||||
acts_as_nested_set :scope => 'root_id'
|
acts_as_nested_set :scope => 'root_id', :dependent => :destroy
|
||||||
acts_as_attachable :after_remove => :attachment_removed
|
acts_as_attachable :after_remove => :attachment_removed
|
||||||
acts_as_customizable
|
acts_as_customizable
|
||||||
acts_as_watchable
|
acts_as_watchable
|
||||||
|
@ -89,7 +89,6 @@ class Issue < ActiveRecord::Base
|
||||||
before_create :default_assign
|
before_create :default_assign
|
||||||
before_save :close_duplicates, :update_done_ratio_from_issue_status
|
before_save :close_duplicates, :update_done_ratio_from_issue_status
|
||||||
after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal
|
after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal
|
||||||
after_destroy :destroy_children
|
|
||||||
after_destroy :update_parent_attributes
|
after_destroy :update_parent_attributes
|
||||||
|
|
||||||
# Returns true if usr or current user is allowed to view the issue
|
# Returns true if usr or current user is allowed to view the issue
|
||||||
|
@ -758,14 +757,6 @@ class Issue < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_children
|
|
||||||
unless leaf?
|
|
||||||
children.each do |child|
|
|
||||||
child.destroy
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Update issues so their versions are not pointing to a
|
# Update issues so their versions are not pointing to a
|
||||||
# fixed_version that is not shared with the issue's project
|
# fixed_version that is not shared with the issue's project
|
||||||
def self.update_versions(conditions=nil)
|
def self.update_versions(conditions=nil)
|
||||||
|
|
|
@ -296,7 +296,7 @@ class Mailer < ActionMailer::Base
|
||||||
if raise_errors
|
if raise_errors
|
||||||
raise e
|
raise e
|
||||||
elsif mylogger
|
elsif mylogger
|
||||||
mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/email.yml."
|
mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/configuration.yml."
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
self.class.raise_delivery_errors = raise_errors
|
self.class.raise_delivery_errors = raise_errors
|
||||||
|
|
|
@ -42,6 +42,9 @@ class Message < ActiveRecord::Base
|
||||||
|
|
||||||
after_create :add_author_as_watcher
|
after_create :add_author_as_watcher
|
||||||
|
|
||||||
|
named_scope :visible, lambda {|*args| { :include => {:board => :project},
|
||||||
|
:conditions => Project.allowed_to_condition(args.first || User.current, :view_messages) } }
|
||||||
|
|
||||||
def visible?(user=User.current)
|
def visible?(user=User.current)
|
||||||
!user.nil? && user.allowed_to?(:view_messages, project)
|
!user.nil? && user.allowed_to?(:view_messages, project)
|
||||||
end
|
end
|
||||||
|
|
|
@ -104,10 +104,11 @@ class Repository::Cvs < Repository
|
||||||
scm.revisions('', fetch_since, nil, :with_paths => true) do |revision|
|
scm.revisions('', fetch_since, nil, :with_paths => true) do |revision|
|
||||||
# only add the change to the database, if it doen't exists. the cvs log
|
# only add the change to the database, if it doen't exists. the cvs log
|
||||||
# is not exclusive at all.
|
# is not exclusive at all.
|
||||||
unless changes.find_by_path_and_revision(scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision])
|
tmp_time = revision.time.clone
|
||||||
revision
|
unless changes.find_by_path_and_revision(
|
||||||
|
scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision])
|
||||||
cs = changesets.find(:first, :conditions=>{
|
cs = changesets.find(:first, :conditions=>{
|
||||||
:committed_on=>revision.time-time_delta..revision.time+time_delta,
|
:committed_on=>tmp_time - time_delta .. tmp_time + time_delta,
|
||||||
:committer=>revision.author,
|
:committer=>revision.author,
|
||||||
:comments=>Changeset.normalize_comments(revision.message)
|
:comments=>Changeset.normalize_comments(revision.message)
|
||||||
})
|
})
|
||||||
|
@ -116,11 +117,14 @@ class Repository::Cvs < Repository
|
||||||
unless cs
|
unless cs
|
||||||
# we use a temporaray revision number here (just for inserting)
|
# we use a temporaray revision number here (just for inserting)
|
||||||
# later on, we calculate a continous positive number
|
# later on, we calculate a continous positive number
|
||||||
latest = changesets.find(:first, :order => 'id DESC')
|
tmp_time2 = tmp_time.clone.gmtime
|
||||||
|
branch = revision.paths[0][:branch]
|
||||||
|
scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S")
|
||||||
cs = Changeset.create(:repository => self,
|
cs = Changeset.create(:repository => self,
|
||||||
:revision => "_#{tmp_rev_num}",
|
:revision => "tmp#{tmp_rev_num}",
|
||||||
|
:scmid => scmid,
|
||||||
:committer => revision.author,
|
:committer => revision.author,
|
||||||
:committed_on => revision.time,
|
:committed_on => tmp_time,
|
||||||
:comments => revision.message)
|
:comments => revision.message)
|
||||||
tmp_rev_num += 1
|
tmp_rev_num += 1
|
||||||
end
|
end
|
||||||
|
@ -144,10 +148,13 @@ class Repository::Cvs < Repository
|
||||||
end
|
end
|
||||||
|
|
||||||
# Renumber new changesets in chronological order
|
# Renumber new changesets in chronological order
|
||||||
changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset|
|
changesets.find(
|
||||||
|
:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'"
|
||||||
|
).each do |changeset|
|
||||||
changeset.update_attribute :revision, next_revision_number
|
changeset.update_attribute :revision, next_revision_number
|
||||||
end
|
end
|
||||||
end # transaction
|
end # transaction
|
||||||
|
@current_revision_number = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -155,7 +162,9 @@ class Repository::Cvs < Repository
|
||||||
# Returns the next revision number to assign to a CVS changeset
|
# Returns the next revision number to assign to a CVS changeset
|
||||||
def next_revision_number
|
def next_revision_number
|
||||||
# Need to retrieve existing revision numbers to sort them as integers
|
# Need to retrieve existing revision numbers to sort them as integers
|
||||||
@current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0)
|
sql = "SELECT revision FROM #{Changeset.table_name} "
|
||||||
|
sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'"
|
||||||
|
@current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0)
|
||||||
@current_revision_number += 1
|
@current_revision_number += 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -260,12 +260,16 @@ class User < Principal
|
||||||
notified_projects_ids
|
notified_projects_ids
|
||||||
end
|
end
|
||||||
|
|
||||||
# Only users that belong to more than 1 project can select projects for which they are notified
|
|
||||||
def valid_notification_options
|
def valid_notification_options
|
||||||
|
self.class.valid_notification_options(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Only users that belong to more than 1 project can select projects for which they are notified
|
||||||
|
def self.valid_notification_options(user=nil)
|
||||||
# Note that @user.membership.size would fail since AR ignores
|
# Note that @user.membership.size would fail since AR ignores
|
||||||
# :include association option when doing a count
|
# :include association option when doing a count
|
||||||
if memberships.length < 1
|
if user.nil? || user.memberships.length < 1
|
||||||
MAIL_NOTIFICATION_OPTIONS.delete_if {|option| option.first == 'selected'}
|
MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'}
|
||||||
else
|
else
|
||||||
MAIL_NOTIFICATION_OPTIONS
|
MAIL_NOTIFICATION_OPTIONS
|
||||||
end
|
end
|
||||||
|
@ -418,7 +422,12 @@ class User < Principal
|
||||||
when 'all'
|
when 'all'
|
||||||
true
|
true
|
||||||
when 'selected'
|
when 'selected'
|
||||||
# Handled by the Project
|
# user receives notifications for created/assigned issues on unselected projects
|
||||||
|
if object.is_a?(Issue) && (object.author == self || object.assigned_to == self)
|
||||||
|
true
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
when 'none'
|
when 'none'
|
||||||
false
|
false
|
||||||
when 'only_my_events'
|
when 'only_my_events'
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
|
|
||||||
<p><strong><%=l(:label_related_issues)%></strong></p>
|
<p><strong><%=l(:label_related_issues)%></strong></p>
|
||||||
|
|
||||||
<% if @issue.relations.any? %>
|
<% if @relations.present? %>
|
||||||
<table style="width:100%">
|
<table style="width:100%">
|
||||||
<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %>
|
<% @relations.each do |relation| %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
|
<td><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
|
||||||
<%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %>
|
<%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %>
|
||||||
|
|
|
@ -26,10 +26,10 @@ api.issue do
|
||||||
render_api_issue_children(@issue, api) if include_in_api_response?('children')
|
render_api_issue_children(@issue, api) if include_in_api_response?('children')
|
||||||
|
|
||||||
api.array :relations do
|
api.array :relations do
|
||||||
@issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation|
|
@relations.each do |relation|
|
||||||
api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay)
|
api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay)
|
||||||
end
|
end
|
||||||
end if include_in_api_response?('relations')
|
end if include_in_api_response?('relations') && @relations.present?
|
||||||
|
|
||||||
api.array :changesets do
|
api.array :changesets do
|
||||||
@issue.changesets.each do |changeset|
|
@issue.changesets.each do |changeset|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<%= javascript_include_tag :defaults %>
|
<%= javascript_include_tag :defaults %>
|
||||||
<%= heads_for_theme %>
|
<%= heads_for_theme %>
|
||||||
<%= heads_for_wiki_formatter %>
|
<%= heads_for_wiki_formatter %>
|
||||||
<!--[if IE]>
|
<!--[if IE 6]>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
* html body{ width: expression( document.documentElement.clientWidth < 900 ? '900px' : '100%' ); }
|
* html body{ width: expression( document.documentElement.clientWidth < 900 ? '900px' : '100%' ); }
|
||||||
body {behavior: url(<%= stylesheet_path "csshover.htc" %>);}
|
body {behavior: url(<%= stylesheet_path "csshover.htc" %>);}
|
||||||
|
|
|
@ -16,6 +16,6 @@ dirs.each do |dir|
|
||||||
/ <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %>
|
/ <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= "@ #{h revision}" if revision %>
|
<%= "@ #{h format_revision(@changeset)}" if @changeset %>
|
||||||
|
|
||||||
<% html_title(with_leading_slash(path)) -%>
|
<% html_title(with_leading_slash(path)) -%>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<p><%= setting_check_box :plain_text_mail %></p>
|
<p><%= setting_check_box :plain_text_mail %></p>
|
||||||
|
|
||||||
<p><%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %></p>
|
<p><%= setting_select(:default_notification_option, User.valid_notification_options.collect {|o| [l(o.last), o.first.to_s]}) %></p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
<h3><%= l(:label_history) %></h3>
|
<h3><%= l(:label_history) %></h3>
|
||||||
|
|
||||||
<% form_tag({:action => "diff"}, :method => :get) do %>
|
<% form_tag({:action => "diff"}, :method => :get) do %>
|
||||||
<%= hidden_field_tag('project_id', h(@project.to_param)) %>
|
|
||||||
<table class="list wiki-page-versions">
|
<table class="list wiki-page-versions">
|
||||||
<thead><tr>
|
<thead><tr>
|
||||||
<th>#</th>
|
<th>#</th>
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
# = Redmine configuration file
|
||||||
|
#
|
||||||
|
# Each environment has it's own configuration options. If you are only
|
||||||
|
# running in production, only the production block needs to be configured.
|
||||||
|
# Environment specific configuration options override the default ones.
|
||||||
|
#
|
||||||
|
# Note that this file needs to be a valid YAML file.
|
||||||
|
#
|
||||||
|
# == Outgoing email settings (email_delivery setting)
|
||||||
|
#
|
||||||
|
# === Common configurations
|
||||||
|
#
|
||||||
|
# ==== Sendmail command
|
||||||
|
#
|
||||||
|
# production:
|
||||||
|
# email_delivery:
|
||||||
|
# delivery_method: :sendmail
|
||||||
|
#
|
||||||
|
# ==== Simple SMTP server at localhost
|
||||||
|
#
|
||||||
|
# production:
|
||||||
|
# email_delivery:
|
||||||
|
# delivery_method: :smtp
|
||||||
|
# smtp_settings:
|
||||||
|
# address: "localhost"
|
||||||
|
# port: 25
|
||||||
|
#
|
||||||
|
# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com
|
||||||
|
#
|
||||||
|
# production:
|
||||||
|
# email_delivery:
|
||||||
|
# delivery_method: :smtp
|
||||||
|
# smtp_settings:
|
||||||
|
# address: "example.com"
|
||||||
|
# port: 25
|
||||||
|
# authentication: :login
|
||||||
|
# domain: 'foo.com'
|
||||||
|
# user_name: 'myaccount'
|
||||||
|
# password: 'password'
|
||||||
|
#
|
||||||
|
# ==== SMTP server at example.com using PLAIN authentication
|
||||||
|
#
|
||||||
|
# production:
|
||||||
|
# email_delivery:
|
||||||
|
# delivery_method: :smtp
|
||||||
|
# smtp_settings:
|
||||||
|
# address: "example.com"
|
||||||
|
# port: 25
|
||||||
|
# authentication: :plain
|
||||||
|
# domain: 'example.com'
|
||||||
|
# user_name: 'myaccount'
|
||||||
|
# password: 'password'
|
||||||
|
#
|
||||||
|
# ==== SMTP server at using TLS (GMail)
|
||||||
|
#
|
||||||
|
# This requires some additional configuration. See the article at:
|
||||||
|
# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/
|
||||||
|
#
|
||||||
|
# production:
|
||||||
|
# email_delivery:
|
||||||
|
# delivery_method: :smtp
|
||||||
|
# smtp_settings:
|
||||||
|
# tls: true
|
||||||
|
# address: "smtp.gmail.com"
|
||||||
|
# port: 587
|
||||||
|
# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
|
||||||
|
# authentication: :plain
|
||||||
|
# user_name: "your_email@gmail.com"
|
||||||
|
# password: "your_password"
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# === More configuration options
|
||||||
|
#
|
||||||
|
# See the "Configuration options" at the following website for a list of the
|
||||||
|
# full options allowed:
|
||||||
|
#
|
||||||
|
# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer
|
||||||
|
|
||||||
|
|
||||||
|
# default configuration options for all environments
|
||||||
|
default:
|
||||||
|
# Outgoing emails configuration (see examples above)
|
||||||
|
email_delivery:
|
||||||
|
delivery_method: :smtp
|
||||||
|
smtp_settings:
|
||||||
|
address: smtp.example.net
|
||||||
|
port: 25
|
||||||
|
domain: example.net
|
||||||
|
authentication: :login
|
||||||
|
user_name: "redmine@example.net"
|
||||||
|
password: "redmine"
|
||||||
|
|
||||||
|
# Absolute path to the directory where attachments are stored.
|
||||||
|
# The default is the 'files' directory in your Redmine instance.
|
||||||
|
# Your Redmine instance needs to have write permission on this
|
||||||
|
# directory.
|
||||||
|
# Examples:
|
||||||
|
# attachments_storage_path: /var/redmine/files
|
||||||
|
# attachments_storage_path: D:/redmine/files
|
||||||
|
attachments_storage_path:
|
||||||
|
|
||||||
|
# Configuration of the autologin cookie.
|
||||||
|
# autologin_cookie_name: the name of the cookie (default: autologin)
|
||||||
|
# autologin_cookie_path: the cookie path (default: /)
|
||||||
|
# autologin_cookie_secure: true sets the cookie secure flag (default: false)
|
||||||
|
autologin_cookie_name:
|
||||||
|
autologin_cookie_path:
|
||||||
|
autologin_cookie_secure:
|
||||||
|
|
||||||
|
# Configuration of SCM executable command.
|
||||||
|
# Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
|
||||||
|
# On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
|
||||||
|
scm_subversion_command: svn # (default: svn)
|
||||||
|
scm_mercurial_command: "\"C:\Program Files\TortoiseHg\hg.exe\"" # (default: hg)
|
||||||
|
scm_git_command: /usr/local/bin/git # (default: git)
|
||||||
|
scm_cvs_command: cvs # (default: cvs)
|
||||||
|
scm_bazaar_command: bzr.exe # (default: bzr)
|
||||||
|
scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
|
||||||
|
|
||||||
|
# specific configuration options for production environment
|
||||||
|
# that overrides the default ones
|
||||||
|
production:
|
||||||
|
|
||||||
|
# specific configuration options for development environment
|
||||||
|
# that overrides the default ones
|
||||||
|
development:
|
|
@ -36,4 +36,4 @@ test_pgsql:
|
||||||
|
|
||||||
test_sqlite3:
|
test_sqlite3:
|
||||||
adapter: sqlite3
|
adapter: sqlite3
|
||||||
database: db/test.db
|
database: db/test.sqlite3
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
# = Outgoing email settings
|
|
||||||
#
|
|
||||||
# Each environment has it's own configuration options. If you are only
|
|
||||||
# running in production, only the production block needs to be configured.
|
|
||||||
#
|
|
||||||
# == Common configurations
|
|
||||||
#
|
|
||||||
# === Sendmail command
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# delivery_method: :sendmail
|
|
||||||
#
|
|
||||||
# === Simple SMTP server at localhost
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# address: "localhost"
|
|
||||||
# port: 25
|
|
||||||
#
|
|
||||||
# === SMTP server at example.com using LOGIN authentication and checking HELO for foo.com
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# address: "example.com"
|
|
||||||
# port: 25
|
|
||||||
# authentication: :login
|
|
||||||
# domain: 'foo.com'
|
|
||||||
# user_name: 'myaccount'
|
|
||||||
# password: 'password'
|
|
||||||
#
|
|
||||||
# === SMTP server at example.com using PLAIN authentication
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# address: "example.com"
|
|
||||||
# port: 25
|
|
||||||
# authentication: :plain
|
|
||||||
# domain: 'example.com'
|
|
||||||
# user_name: 'myaccount'
|
|
||||||
# password: 'password'
|
|
||||||
#
|
|
||||||
# === SMTP server at using TLS (GMail)
|
|
||||||
#
|
|
||||||
# This requires some additional configuration. See the article at:
|
|
||||||
# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# tls: true
|
|
||||||
# address: "smtp.gmail.com"
|
|
||||||
# port: 587
|
|
||||||
# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
|
|
||||||
# authentication: :plain
|
|
||||||
# user_name: "your_email@gmail.com"
|
|
||||||
# password: "your_password"
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# == More configuration options
|
|
||||||
#
|
|
||||||
# See the "Configuration options" at the following website for a list of the
|
|
||||||
# full options allowed:
|
|
||||||
#
|
|
||||||
# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer
|
|
||||||
|
|
||||||
production:
|
|
||||||
delivery_method: :smtp
|
|
||||||
smtp_settings:
|
|
||||||
address: smtp.example.net
|
|
||||||
port: 25
|
|
||||||
domain: example.net
|
|
||||||
authentication: :login
|
|
||||||
user_name: "redmine@example.net"
|
|
||||||
password: "redmine"
|
|
||||||
|
|
||||||
development:
|
|
||||||
delivery_method: :smtp
|
|
||||||
smtp_settings:
|
|
||||||
address: 127.0.0.1
|
|
||||||
port: 25
|
|
||||||
domain: example.net
|
|
||||||
authentication: :login
|
|
||||||
user_name: "redmine@example.net"
|
|
||||||
password: "redmine"
|
|
|
@ -46,11 +46,12 @@ Rails::Initializer.run do |config|
|
||||||
# config.active_record.schema_format = :ruby
|
# config.active_record.schema_format = :ruby
|
||||||
|
|
||||||
# Deliveries are disabled by default. Do NOT modify this section.
|
# Deliveries are disabled by default. Do NOT modify this section.
|
||||||
# Define your email configuration in email.yml instead.
|
# Define your email configuration in configuration.yml instead.
|
||||||
# It will automatically turn deliveries on
|
# It will automatically turn deliveries on
|
||||||
config.action_mailer.perform_deliveries = false
|
config.action_mailer.perform_deliveries = false
|
||||||
|
|
||||||
config.gem 'rubytree', :lib => 'tree'
|
config.gem 'rubytree', :lib => 'tree'
|
||||||
|
config.gem 'coderay', :version => '~>0.9.7'
|
||||||
|
|
||||||
# Load any local configuration that is kept out of source control
|
# Load any local configuration that is kept out of source control
|
||||||
# (e.g. gems, patches).
|
# (e.g. gems, patches).
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
# Loads action_mailer settings from email.yml
|
|
||||||
# and turns deliveries on if configuration file is found
|
|
||||||
|
|
||||||
filename = File.join(File.dirname(__FILE__), '..', 'email.yml')
|
|
||||||
if File.file?(filename)
|
|
||||||
mailconfig = YAML::load_file(filename)
|
|
||||||
|
|
||||||
if mailconfig.is_a?(Hash) && mailconfig.has_key?(Rails.env)
|
|
||||||
# Enable deliveries
|
|
||||||
ActionMailer::Base.perform_deliveries = true
|
|
||||||
|
|
||||||
mailconfig[Rails.env].each do |k, v|
|
|
||||||
v.symbolize_keys! if v.respond_to?(:symbolize_keys!)
|
|
||||||
ActionMailer::Base.send("#{k}=", v)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,11 +1,12 @@
|
||||||
bg:
|
bg:
|
||||||
|
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
|
||||||
direction: ltr
|
direction: ltr
|
||||||
date:
|
date:
|
||||||
formats:
|
formats:
|
||||||
# Use the strftime parameters for formats.
|
# Use the strftime parameters for formats.
|
||||||
# When no format has been given, it uses default.
|
# When no format has been given, it uses default.
|
||||||
# You can provide other formats here if you like!
|
# You can provide other formats here if you like!
|
||||||
default: "%Y-%m-%d"
|
default: "%d-%m-%Y"
|
||||||
short: "%b %d"
|
short: "%b %d"
|
||||||
long: "%B %d, %Y"
|
long: "%B %d, %Y"
|
||||||
|
|
||||||
|
@ -65,12 +66,13 @@ bg:
|
||||||
other: "почти %{count} години"
|
other: "почти %{count} години"
|
||||||
|
|
||||||
number:
|
number:
|
||||||
|
# Default format for numbers
|
||||||
format:
|
format:
|
||||||
separator: "."
|
separator: "."
|
||||||
delimiter: ""
|
delimiter: ""
|
||||||
precision: 3
|
precision: 3
|
||||||
human:
|
human:
|
||||||
format:
|
format:
|
||||||
precision: 1
|
precision: 1
|
||||||
delimiter: ""
|
delimiter: ""
|
||||||
storage_units:
|
storage_units:
|
||||||
|
@ -83,7 +85,8 @@ bg:
|
||||||
mb: "MB"
|
mb: "MB"
|
||||||
gb: "GB"
|
gb: "GB"
|
||||||
tb: "TB"
|
tb: "TB"
|
||||||
|
|
||||||
|
|
||||||
# Used in array.to_sentence.
|
# Used in array.to_sentence.
|
||||||
support:
|
support:
|
||||||
array:
|
array:
|
||||||
|
@ -94,8 +97,8 @@ bg:
|
||||||
errors:
|
errors:
|
||||||
template:
|
template:
|
||||||
header:
|
header:
|
||||||
one: "1 error prohibited this %{model} from being saved"
|
one: "1 грешка попречи този %{model} да бъде записан"
|
||||||
other: "%{count} errors prohibited this %{model} from being saved"
|
other: "%{count} грешки попречиха този %{model} да бъде записан"
|
||||||
messages:
|
messages:
|
||||||
inclusion: "не съществува в списъка"
|
inclusion: "не съществува в списъка"
|
||||||
exclusion: "е запазено"
|
exclusion: "е запазено"
|
||||||
|
@ -120,6 +123,7 @@ bg:
|
||||||
greater_than_start_date: "трябва да е след началната дата"
|
greater_than_start_date: "трябва да е след началната дата"
|
||||||
not_same_project: "не е от същия проект"
|
not_same_project: "не е от същия проект"
|
||||||
circular_dependency: "Тази релация ще доведе до безкрайна зависимост"
|
circular_dependency: "Тази релация ще доведе до безкрайна зависимост"
|
||||||
|
cant_link_an_issue_with_a_descendant: "Една задача не може да бъде свързвана към своя подзадача"
|
||||||
|
|
||||||
actionview_instancetag_blank_option: Изберете
|
actionview_instancetag_blank_option: Изберете
|
||||||
|
|
||||||
|
@ -150,24 +154,61 @@ bg:
|
||||||
notice_file_not_found: Несъществуваща или преместена страница.
|
notice_file_not_found: Несъществуваща или преместена страница.
|
||||||
notice_locking_conflict: Друг потребител променя тези данни в момента.
|
notice_locking_conflict: Друг потребител променя тези данни в момента.
|
||||||
notice_not_authorized: Нямате право на достъп до тази страница.
|
notice_not_authorized: Нямате право на достъп до тази страница.
|
||||||
|
notice_not_authorized_archived_project: Проектът, който се опитвате да видите е архивиран.
|
||||||
notice_email_sent: "Изпратен e-mail на %{value}"
|
notice_email_sent: "Изпратен e-mail на %{value}"
|
||||||
notice_email_error: "Грешка при изпращане на e-mail (%{value})"
|
notice_email_error: "Грешка при изпращане на e-mail (%{value})"
|
||||||
notice_feeds_access_key_reseted: Вашия ключ за RSS достъп беше променен.
|
notice_feeds_access_key_reseted: Вашия ключ за RSS достъп беше променен.
|
||||||
|
notice_api_access_key_reseted: Вашият API ключ за достъп беше изчистен.
|
||||||
|
notice_failed_to_save_issues: "Неуспешен запис на %{count} задачи от %{total} избрани: %{ids}."
|
||||||
|
notice_failed_to_save_members: "Невъзможност за запис на член(ове): %{errors}."
|
||||||
|
notice_no_issue_selected: "Няма избрани задачи."
|
||||||
|
notice_account_pending: "Профилът Ви е създаден и очаква одобрение от администратор."
|
||||||
|
notice_default_data_loaded: Примерната информация е заредена успешно.
|
||||||
|
notice_unable_delete_version: Невъзможност за изтриване на версия
|
||||||
|
notice_unable_delete_time_entry: Невъзможност за изтриване на запис на time log.
|
||||||
|
notice_issue_done_ratios_updated: Обновен процент на завършените задачи.
|
||||||
|
notice_gantt_chart_truncated: Мрежовият график е съкратен, понеже броят на обектите, които могат да бъдат показани е твърде голям (%{max})
|
||||||
|
|
||||||
|
error_can_t_load_default_data: "Грешка при зареждане на примерната информация: %{value}"
|
||||||
error_scm_not_found: Несъществуващ обект в хранилището.
|
error_scm_not_found: Несъществуващ обект в хранилището.
|
||||||
error_scm_command_failed: "Грешка при опит за комуникация с хранилище: %{value}"
|
error_scm_command_failed: "Грешка при опит за комуникация с хранилище: %{value}"
|
||||||
|
error_scm_annotate: "Обектът не съществува или не може да бъде анотиран."
|
||||||
|
error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект'
|
||||||
|
error_no_tracker_in_project: Няма асоциирани тракери с този проект. Проверете настройките на проекта.
|
||||||
|
error_no_default_issue_status: Няма установено подразбиращо се състояние за задачите. Моля проверете вашата конфигурация (Вижте "Администрация -> Състояния на задачи").
|
||||||
|
error_can_not_delete_custom_field: Невъзможност за изтриване на потребителско поле
|
||||||
|
error_can_not_delete_tracker: Този тракер съдържа задачи и не може да бъде изтрит.
|
||||||
|
error_can_not_remove_role: Тази роля се използва и не може да бъде изтрита.
|
||||||
|
error_can_not_reopen_issue_on_closed_version: Задача, асоциирана със затворена версия не може да бъде отворена отново
|
||||||
|
error_can_not_archive_project: Този проект не може да бъде архивиран
|
||||||
|
error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен.
|
||||||
|
error_workflow_copy_source: Моля изберете source тракер или роля
|
||||||
|
error_workflow_copy_target: Моля изберете тракер(и) и роля (роли).
|
||||||
|
error_unable_delete_issue_status: Невъзможност за изтриване на състояние на задача
|
||||||
|
error_unable_to_connect: Невъзможност за свързване с (%{value})
|
||||||
|
warning_attachments_not_saved: "%{count} файла не бяха записани."
|
||||||
|
|
||||||
mail_subject_lost_password: "Вашата парола (%{value})"
|
mail_subject_lost_password: "Вашата парола (%{value})"
|
||||||
mail_body_lost_password: 'За да смените паролата си, използвайте следния линк:'
|
mail_body_lost_password: 'За да смените паролата си, използвайте следния линк:'
|
||||||
mail_subject_register: "Активация на профил (%{value})"
|
mail_subject_register: "Активация на профил (%{value})"
|
||||||
mail_body_register: 'За да активирате профила си използвайте следния линк:'
|
mail_body_register: 'За да активирате профила си използвайте следния линк:'
|
||||||
|
mail_body_account_information_external: "Можете да използвате вашия %{value} профил за вход."
|
||||||
|
mail_body_account_information: Информацията за профила ви
|
||||||
|
mail_subject_account_activation_request: "Заявка за активиране на профил в %{value}"
|
||||||
|
mail_body_account_activation_request: "Има новорегистриран потребител (%{value}), очакващ вашето одобрение:"
|
||||||
|
mail_subject_reminder: "%{count} задачи с краен срок с следващите %{days} дни"
|
||||||
|
mail_body_reminder: "%{count} задачи, назначени на вас са с краен срок в следващите %{days} дни:"
|
||||||
|
mail_subject_wiki_content_added: "Wiki страницата '%{id}' беше добавена"
|
||||||
|
mail_body_wiki_content_added: Wiki страницата '%{id}' беше добавена от %{author}.
|
||||||
|
mail_subject_wiki_content_updated: "Wiki страницата '%{id}' не беше обновена"
|
||||||
|
mail_body_wiki_content_updated: Wiki страницата '%{id}' беше обновена от %{author}.
|
||||||
|
|
||||||
gui_validation_error: 1 грешка
|
gui_validation_error: 1 грешка
|
||||||
gui_validation_error_plural: "%{count} грешки"
|
gui_validation_error_plural: "%{count} грешки"
|
||||||
|
|
||||||
field_name: Име
|
field_name: Име
|
||||||
field_description: Описание
|
field_description: Описание
|
||||||
field_summary: Групиран изглед
|
field_summary: Анотация
|
||||||
field_is_required: Задължително
|
field_is_required: Задължително
|
||||||
field_firstname: Име
|
field_firstname: Име
|
||||||
field_lastname: Фамилия
|
field_lastname: Фамилия
|
||||||
|
@ -200,6 +241,7 @@ bg:
|
||||||
field_priority: Приоритет
|
field_priority: Приоритет
|
||||||
field_fixed_version: Планувана версия
|
field_fixed_version: Планувана версия
|
||||||
field_user: Потребител
|
field_user: Потребител
|
||||||
|
field_principal: Principal
|
||||||
field_role: Роля
|
field_role: Роля
|
||||||
field_homepage: Начална страница
|
field_homepage: Начална страница
|
||||||
field_is_public: Публичен
|
field_is_public: Публичен
|
||||||
|
@ -225,6 +267,7 @@ bg:
|
||||||
field_attr_lastname: Атрибут Фамилия (Lastname)
|
field_attr_lastname: Атрибут Фамилия (Lastname)
|
||||||
field_attr_mail: Атрибут Email
|
field_attr_mail: Атрибут Email
|
||||||
field_onthefly: Динамично създаване на потребител
|
field_onthefly: Динамично създаване на потребител
|
||||||
|
field_start_date: Начална дата
|
||||||
field_done_ratio: % Прогрес
|
field_done_ratio: % Прогрес
|
||||||
field_auth_source: Начин на оторизация
|
field_auth_source: Начин на оторизация
|
||||||
field_hide_mail: Скрий e-mail адреса ми
|
field_hide_mail: Скрий e-mail адреса ми
|
||||||
|
@ -242,7 +285,24 @@ bg:
|
||||||
field_assignable: Възможно е възлагане на задачи за тази роля
|
field_assignable: Възможно е възлагане на задачи за тази роля
|
||||||
field_redirect_existing_links: Пренасочване на съществуващи линкове
|
field_redirect_existing_links: Пренасочване на съществуващи линкове
|
||||||
field_estimated_hours: Изчислено време
|
field_estimated_hours: Изчислено време
|
||||||
|
field_column_names: Колони
|
||||||
|
field_time_entries: Log time
|
||||||
|
field_time_zone: Часова зона
|
||||||
|
field_searchable: С възможност за търсене
|
||||||
field_default_value: Стойност по подразбиране
|
field_default_value: Стойност по подразбиране
|
||||||
|
field_comments_sorting: Сортиране на коментарите
|
||||||
|
field_parent_title: Родителска страница
|
||||||
|
field_editable: Editable
|
||||||
|
field_watcher: Наблюдател
|
||||||
|
field_identity_url: OpenID URL
|
||||||
|
field_content: Съдържание
|
||||||
|
field_group_by: Групиране на резултатите по
|
||||||
|
field_sharing: Sharing
|
||||||
|
field_parent_issue: Родителска задача
|
||||||
|
field_member_of_group: Член на група
|
||||||
|
field_assigned_to_role: Assignee's role
|
||||||
|
field_text: Текстово поле
|
||||||
|
field_visible: Видим
|
||||||
|
|
||||||
setting_app_title: Заглавие
|
setting_app_title: Заглавие
|
||||||
setting_app_subtitle: Описание
|
setting_app_subtitle: Описание
|
||||||
|
@ -253,26 +313,132 @@ bg:
|
||||||
setting_attachment_max_size: Максимална големина на прикачен файл
|
setting_attachment_max_size: Максимална големина на прикачен файл
|
||||||
setting_issues_export_limit: Максимален брой задачи за експорт
|
setting_issues_export_limit: Максимален брой задачи за експорт
|
||||||
setting_mail_from: E-mail адрес за емисии
|
setting_mail_from: E-mail адрес за емисии
|
||||||
|
setting_bcc_recipients: Получатели на скрито копие (bcc)
|
||||||
|
setting_plain_text_mail: само чист текст (без HTML)
|
||||||
setting_host_name: Хост
|
setting_host_name: Хост
|
||||||
setting_text_formatting: Форматиране на текста
|
setting_text_formatting: Форматиране на текста
|
||||||
setting_wiki_compression: Wiki компресиране на историята
|
setting_wiki_compression: Wiki компресиране на историята
|
||||||
setting_feeds_limit: Максимален брой за емисии
|
setting_feeds_limit: Максимален брой за емисии
|
||||||
|
setting_default_projects_public: Новите проекти са публични по подразбиране
|
||||||
setting_autofetch_changesets: Автоматично обработване на ревизиите
|
setting_autofetch_changesets: Автоматично обработване на ревизиите
|
||||||
setting_sys_api_enabled: Разрешаване на WS за управление
|
setting_sys_api_enabled: Разрешаване на WS за управление
|
||||||
setting_commit_ref_keywords: Отбелязващи ключови думи
|
setting_commit_ref_keywords: Отбелязващи ключови думи
|
||||||
setting_commit_fix_keywords: Приключващи ключови думи
|
setting_commit_fix_keywords: Приключващи ключови думи
|
||||||
setting_autologin: Автоматичен вход
|
setting_autologin: Автоматичен вход
|
||||||
setting_date_format: Формат на датата
|
setting_date_format: Формат на датата
|
||||||
|
setting_time_format: Формат на часа
|
||||||
setting_cross_project_issue_relations: Релации на задачи между проекти
|
setting_cross_project_issue_relations: Релации на задачи между проекти
|
||||||
|
setting_issue_list_default_columns: Показвани колони по подразбиране
|
||||||
|
setting_repositories_encodings: Кодови таблици
|
||||||
|
setting_commit_logs_encoding: Кодова таблица на съобщенията при поверяване
|
||||||
|
setting_emails_header: Emails header
|
||||||
|
setting_emails_footer: Подтекст за e-mail
|
||||||
|
setting_protocol: Протокол
|
||||||
|
setting_per_page_options: Опции за страниране
|
||||||
|
setting_user_format: Потребителски формат
|
||||||
|
setting_activity_days_default: Брой дни показвани на таб Дейност
|
||||||
|
setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране
|
||||||
|
setting_enabled_scm: Разрешена SCM
|
||||||
|
setting_mail_handler_body_delimiters: Отрязване на e-mail-ите след един от тези редове
|
||||||
|
setting_mail_handler_api_enabled: Разрешаване на WS за входящи e-mail-и
|
||||||
|
setting_mail_handler_api_key: API ключ
|
||||||
|
setting_sequential_project_identifiers: Генериране на последователни проектни идентификатори
|
||||||
|
setting_gravatar_enabled: Използване на портребителски икони от Gravatar
|
||||||
|
setting_gravatar_default: Подразбиращо се изображение от Gravatar
|
||||||
|
setting_diff_max_lines_displayed: Максимален брой показани diff редове
|
||||||
|
setting_file_max_size_displayed: Максимален размер на текстовите файлове, показвани inline
|
||||||
|
setting_repository_log_display_limit: Максимален брой на показванете ревизии в лог файла
|
||||||
|
setting_openid: Рарешаване на OpenID вход и регистрация
|
||||||
|
setting_password_min_length: Минимална дължина на парола
|
||||||
|
setting_new_project_user_role_id: Роля, давана на потребител, създаващ проекти, който не е администратор
|
||||||
|
setting_default_projects_modules: Активирани модули по подразбиране за нов проект
|
||||||
|
setting_issue_done_ratio: Изчисление на процента на готови задачи с
|
||||||
|
setting_issue_done_ratio_issue_field: Използване на поле '% Прогрес'
|
||||||
|
setting_issue_done_ratio_issue_status: Използване на състоянието на задачите
|
||||||
|
setting_start_of_week: Първи ден на седмицата
|
||||||
|
setting_rest_api_enabled: Разрешаване на REST web сървис
|
||||||
|
setting_cache_formatted_text: Cache formatted text
|
||||||
|
setting_default_notification_option: Подразбиращ се начин за известяване
|
||||||
|
setting_commit_logtime_enabled: Разрешаване на отчитането на работното време
|
||||||
|
setting_commit_logtime_activity_id: Дейност при отчитане на работното време
|
||||||
|
setting_gantt_items_limit: Максимален брой обекти, които да се показват в мрежов график
|
||||||
|
|
||||||
|
permission_add_project: Създаване на проект
|
||||||
|
permission_add_subprojects: Създаване на подпроекти
|
||||||
|
permission_edit_project: Редактиране на проект
|
||||||
|
permission_select_project_modules: Избор на проектни модули
|
||||||
|
permission_manage_members: Управление на членовете (на екип)
|
||||||
|
permission_manage_project_activities: Управление на дейностите на проекта
|
||||||
|
permission_manage_versions: Управление на версиите
|
||||||
|
permission_manage_categories: Управление на категориите
|
||||||
|
permission_view_issues: Разглеждане на задачите
|
||||||
|
permission_add_issues: Добавяне на задачи
|
||||||
|
permission_edit_issues: Редактиране на задачи
|
||||||
|
permission_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: Управление на публичните заявки
|
||||||
|
permission_save_queries: Запис на запитвания (queries)
|
||||||
|
permission_view_gantt: Разглеждане на мрежов график
|
||||||
|
permission_view_calendar: Разглеждане на календари
|
||||||
|
permission_view_issue_watchers: Разглеждане на списък с наблюдатели
|
||||||
|
permission_add_issue_watchers: Добавяне на наблюдатели
|
||||||
|
permission_delete_issue_watchers: Изтриване на наблюдатели
|
||||||
|
permission_log_time: Log spent time
|
||||||
|
permission_view_time_entries: Разглеждане на изразходваното време
|
||||||
|
permission_edit_time_entries: Редактиране на time logs
|
||||||
|
permission_edit_own_time_entries: Редактиране на собствените time logs
|
||||||
|
permission_manage_news: Управление на новини
|
||||||
|
permission_comment_news: Коментиране на новини
|
||||||
|
permission_manage_documents: Управление на документи
|
||||||
|
permission_view_documents: Разглеждане на документи
|
||||||
|
permission_manage_files: Управление на файлове
|
||||||
|
permission_view_files: Разглеждане на файлове
|
||||||
|
permission_manage_wiki: Управление на wiki
|
||||||
|
permission_rename_wiki_pages: Преименуване на wiki страници
|
||||||
|
permission_delete_wiki_pages: Изтриване на wiki страници
|
||||||
|
permission_view_wiki_pages: Разглеждане на wiki
|
||||||
|
permission_view_wiki_edits: Разглеждане на wiki история
|
||||||
|
permission_edit_wiki_pages: Редактиране на wiki страници
|
||||||
|
permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове към wiki страници
|
||||||
|
permission_protect_wiki_pages: Заключване на wiki страници
|
||||||
|
permission_manage_repository: Управление на хранилища
|
||||||
|
permission_browse_repository: Разглеждане на хранилища
|
||||||
|
permission_view_changesets: Разглеждане на changesets
|
||||||
|
permission_commit_access: Поверяване
|
||||||
|
permission_manage_boards: Управление на boards
|
||||||
|
permission_view_messages: Разглеждане на съобщения
|
||||||
|
permission_add_messages: Публикуване на съобщения
|
||||||
|
permission_edit_messages: Редактиране на съобщения
|
||||||
|
permission_edit_own_messages: Редактиране на собствени съобщения
|
||||||
|
permission_delete_messages: Изтриване на съобщения
|
||||||
|
permission_delete_own_messages: Изтриване на собствени съобщения
|
||||||
|
permission_export_wiki_pages: Експорт на wiki страници
|
||||||
|
permission_manage_subtasks: Управление на подзадачите
|
||||||
|
|
||||||
|
project_module_issue_tracking: Тракинг
|
||||||
|
project_module_time_tracking: Отделяне на време
|
||||||
|
project_module_news: Новини
|
||||||
|
project_module_documents: Документи
|
||||||
|
project_module_files: Файлове
|
||||||
|
project_module_wiki: Wiki
|
||||||
|
project_module_repository: Хранилище
|
||||||
|
project_module_boards: Форуми
|
||||||
|
project_module_calendar: Календар
|
||||||
|
project_module_gantt: Мрежов график
|
||||||
|
|
||||||
label_user: Потребител
|
label_user: Потребител
|
||||||
label_user_plural: Потребители
|
label_user_plural: Потребители
|
||||||
label_user_new: Нов потребител
|
label_user_new: Нов потребител
|
||||||
|
label_user_anonymous: Анонимен
|
||||||
label_project: Проект
|
label_project: Проект
|
||||||
label_project_new: Нов проект
|
label_project_new: Нов проект
|
||||||
label_project_plural: Проекти
|
label_project_plural: Проекти
|
||||||
label_x_projects:
|
label_x_projects:
|
||||||
zero: 0 проекти
|
zero: 0 проекта
|
||||||
one: 1 проект
|
one: 1 проект
|
||||||
other: "%{count} проекта"
|
other: "%{count} проекта"
|
||||||
label_project_all: Всички проекти
|
label_project_all: Всички проекти
|
||||||
|
@ -281,9 +447,13 @@ bg:
|
||||||
label_issue_new: Нова задача
|
label_issue_new: Нова задача
|
||||||
label_issue_plural: Задачи
|
label_issue_plural: Задачи
|
||||||
label_issue_view_all: Всички задачи
|
label_issue_view_all: Всички задачи
|
||||||
|
label_issues_by: "Задачи по %{value}"
|
||||||
|
label_issue_added: Добавена задача
|
||||||
|
label_issue_updated: Обновена задача
|
||||||
label_document: Документ
|
label_document: Документ
|
||||||
label_document_new: Нов документ
|
label_document_new: Нов документ
|
||||||
label_document_plural: Документи
|
label_document_plural: Документи
|
||||||
|
label_document_added: Добавен документ
|
||||||
label_role: Роля
|
label_role: Роля
|
||||||
label_role_plural: Роли
|
label_role_plural: Роли
|
||||||
label_role_new: Нова роля
|
label_role_new: Нова роля
|
||||||
|
@ -310,11 +480,13 @@ bg:
|
||||||
label_information_plural: Информация
|
label_information_plural: Информация
|
||||||
label_please_login: Вход
|
label_please_login: Вход
|
||||||
label_register: Регистрация
|
label_register: Регистрация
|
||||||
|
label_login_with_open_id_option: или вход чрез OpenID
|
||||||
label_password_lost: Забравена парола
|
label_password_lost: Забравена парола
|
||||||
label_home: Начало
|
label_home: Начало
|
||||||
label_my_page: Лична страница
|
label_my_page: Лична страница
|
||||||
label_my_account: Профил
|
label_my_account: Профил
|
||||||
label_my_projects: Проекти, в които участвам
|
label_my_projects: Проекти, в които участвам
|
||||||
|
label_my_page_block: Блокове в личната страница
|
||||||
label_administration: Администрация
|
label_administration: Администрация
|
||||||
label_login: Вход
|
label_login: Вход
|
||||||
label_logout: Изход
|
label_logout: Изход
|
||||||
|
@ -324,6 +496,8 @@ bg:
|
||||||
label_last_login: Последно свързване
|
label_last_login: Последно свързване
|
||||||
label_registered_on: Регистрация
|
label_registered_on: Регистрация
|
||||||
label_activity: Дейност
|
label_activity: Дейност
|
||||||
|
label_overall_activity: Цялостна дейност
|
||||||
|
label_user_activity: "Активност на %{value}"
|
||||||
label_new: Нов
|
label_new: Нов
|
||||||
label_logged_as: Здравейте,
|
label_logged_as: Здравейте,
|
||||||
label_environment: Среда
|
label_environment: Среда
|
||||||
|
@ -332,10 +506,13 @@ bg:
|
||||||
label_auth_source_new: Нов начин на оторизация
|
label_auth_source_new: Нов начин на оторизация
|
||||||
label_auth_source_plural: Начини на оторизация
|
label_auth_source_plural: Начини на оторизация
|
||||||
label_subproject_plural: Подпроекти
|
label_subproject_plural: Подпроекти
|
||||||
|
label_subproject_new: Нов подпроект
|
||||||
|
label_and_its_subprojects: "%{value} и неговите подпроекти"
|
||||||
label_min_max_length: Минимална - максимална дължина
|
label_min_max_length: Минимална - максимална дължина
|
||||||
label_list: Списък
|
label_list: Списък
|
||||||
label_date: Дата
|
label_date: Дата
|
||||||
label_integer: Целочислен
|
label_integer: Целочислен
|
||||||
|
label_float: Дробно
|
||||||
label_boolean: Чекбокс
|
label_boolean: Чекбокс
|
||||||
label_string: Текст
|
label_string: Текст
|
||||||
label_text: Дълъг текст
|
label_text: Дълъг текст
|
||||||
|
@ -350,6 +527,7 @@ bg:
|
||||||
label_attachment_new: Нов файл
|
label_attachment_new: Нов файл
|
||||||
label_attachment_delete: Изтриване
|
label_attachment_delete: Изтриване
|
||||||
label_attachment_plural: Файлове
|
label_attachment_plural: Файлове
|
||||||
|
label_file_added: Добавен файл
|
||||||
label_report: Справка
|
label_report: Справка
|
||||||
label_report_plural: Справки
|
label_report_plural: Справки
|
||||||
label_news: Новини
|
label_news: Новини
|
||||||
|
@ -357,11 +535,13 @@ bg:
|
||||||
label_news_plural: Новини
|
label_news_plural: Новини
|
||||||
label_news_latest: Последни новини
|
label_news_latest: Последни новини
|
||||||
label_news_view_all: Виж всички
|
label_news_view_all: Виж всички
|
||||||
|
label_news_added: Добавена новина
|
||||||
label_settings: Настройки
|
label_settings: Настройки
|
||||||
label_overview: Общ изглед
|
label_overview: Общ изглед
|
||||||
label_version: Версия
|
label_version: Версия
|
||||||
label_version_new: Нова версия
|
label_version_new: Нова версия
|
||||||
label_version_plural: Версии
|
label_version_plural: Версии
|
||||||
|
label_close_versions: Затваряне на завършените версии
|
||||||
label_confirmation: Одобрение
|
label_confirmation: Одобрение
|
||||||
label_export_to: Експорт към
|
label_export_to: Експорт към
|
||||||
label_read: Read...
|
label_read: Read...
|
||||||
|
@ -388,6 +568,7 @@ bg:
|
||||||
label_new_statuses_allowed: Позволени състояния
|
label_new_statuses_allowed: Позволени състояния
|
||||||
label_all: всички
|
label_all: всички
|
||||||
label_none: никакви
|
label_none: никакви
|
||||||
|
label_nobody: никой
|
||||||
label_next: Следващ
|
label_next: Следващ
|
||||||
label_previous: Предишен
|
label_previous: Предишен
|
||||||
label_used_by: Използва се от
|
label_used_by: Използва се от
|
||||||
|
@ -419,9 +600,19 @@ bg:
|
||||||
label_not_equals: не е
|
label_not_equals: не е
|
||||||
label_in_less_than: след по-малко от
|
label_in_less_than: след по-малко от
|
||||||
label_in_more_than: след повече от
|
label_in_more_than: след повече от
|
||||||
|
label_greater_or_equal: ">="
|
||||||
|
label_less_or_equal: <=
|
||||||
label_in: в следващите
|
label_in: в следващите
|
||||||
label_today: днес
|
label_today: днес
|
||||||
|
label_all_time: всички
|
||||||
|
label_yesterday: вчера
|
||||||
label_this_week: тази седмица
|
label_this_week: тази седмица
|
||||||
|
label_last_week: последната седмица
|
||||||
|
label_last_n_days: "последните %{count} дни"
|
||||||
|
label_this_month: текущия месец
|
||||||
|
label_last_month: последния месец
|
||||||
|
label_this_year: текущата година
|
||||||
|
label_date_range: Период
|
||||||
label_less_than_ago: преди по-малко от
|
label_less_than_ago: преди по-малко от
|
||||||
label_more_than_ago: преди повече от
|
label_more_than_ago: преди повече от
|
||||||
label_ago: преди
|
label_ago: преди
|
||||||
|
@ -429,17 +620,25 @@ bg:
|
||||||
label_not_contains: не съдържа
|
label_not_contains: не съдържа
|
||||||
label_day_plural: дни
|
label_day_plural: дни
|
||||||
label_repository: Хранилище
|
label_repository: Хранилище
|
||||||
|
label_repository_plural: Хранилища
|
||||||
label_browse: Разглеждане
|
label_browse: Разглеждане
|
||||||
label_modification: "%{count} промяна"
|
label_modification: "%{count} промяна"
|
||||||
label_modification_plural: "%{count} промени"
|
label_modification_plural: "%{count} промени"
|
||||||
|
label_branch: работен вариант
|
||||||
|
label_tag: Версия
|
||||||
label_revision: Ревизия
|
label_revision: Ревизия
|
||||||
label_revision_plural: Ревизии
|
label_revision_plural: Ревизии
|
||||||
|
label_revision_id: Ревизия %{value}
|
||||||
|
label_associated_revisions: Асоциирани ревизии
|
||||||
label_added: добавено
|
label_added: добавено
|
||||||
label_modified: променено
|
label_modified: променено
|
||||||
|
label_copied: копирано
|
||||||
|
label_renamed: преименувано
|
||||||
label_deleted: изтрито
|
label_deleted: изтрито
|
||||||
label_latest_revision: Последна ревизия
|
label_latest_revision: Последна ревизия
|
||||||
label_latest_revision_plural: Последни ревизии
|
label_latest_revision_plural: Последни ревизии
|
||||||
label_view_revisions: Виж ревизиите
|
label_view_revisions: Виж ревизиите
|
||||||
|
label_view_all_revisions: Разглеждане на всички ревизии
|
||||||
label_max_size: Максимална големина
|
label_max_size: Максимална големина
|
||||||
label_sort_highest: Премести най-горе
|
label_sort_highest: Премести най-горе
|
||||||
label_sort_higher: Премести по-горе
|
label_sort_higher: Премести по-горе
|
||||||
|
@ -465,6 +664,7 @@ bg:
|
||||||
label_changes_details: Подробни промени
|
label_changes_details: Подробни промени
|
||||||
label_issue_tracking: Тракинг
|
label_issue_tracking: Тракинг
|
||||||
label_spent_time: Отделено време
|
label_spent_time: Отделено време
|
||||||
|
label_overall_spent_time: Общо употребено време
|
||||||
label_f_hour: "%{value} час"
|
label_f_hour: "%{value} час"
|
||||||
label_f_hour_plural: "%{value} часа"
|
label_f_hour_plural: "%{value} часа"
|
||||||
label_time_tracking: Отделяне на време
|
label_time_tracking: Отделяне на време
|
||||||
|
@ -486,6 +686,7 @@ bg:
|
||||||
label_relation_delete: Изтриване на релация
|
label_relation_delete: Изтриване на релация
|
||||||
label_relates_to: свързана със
|
label_relates_to: свързана със
|
||||||
label_duplicates: дублира
|
label_duplicates: дублира
|
||||||
|
label_duplicated_by: дублирана от
|
||||||
label_blocks: блокира
|
label_blocks: блокира
|
||||||
label_blocked_by: блокирана от
|
label_blocked_by: блокирана от
|
||||||
label_precedes: предшества
|
label_precedes: предшества
|
||||||
|
@ -501,10 +702,13 @@ bg:
|
||||||
label_board: Форум
|
label_board: Форум
|
||||||
label_board_new: Нов форум
|
label_board_new: Нов форум
|
||||||
label_board_plural: Форуми
|
label_board_plural: Форуми
|
||||||
|
label_board_locked: Заключена
|
||||||
|
label_board_sticky: Sticky
|
||||||
label_topic_plural: Теми
|
label_topic_plural: Теми
|
||||||
label_message_plural: Съобщения
|
label_message_plural: Съобщения
|
||||||
label_message_last: Последно съобщение
|
label_message_last: Последно съобщение
|
||||||
label_message_new: Нова тема
|
label_message_new: Нова тема
|
||||||
|
label_message_posted: Добавено съобщение
|
||||||
label_reply_plural: Отговори
|
label_reply_plural: Отговори
|
||||||
label_send_information: Изпращане на информацията до потребителя
|
label_send_information: Изпращане на информацията до потребителя
|
||||||
label_year: Година
|
label_year: Година
|
||||||
|
@ -515,12 +719,81 @@ bg:
|
||||||
label_language_based: В зависимост от езика
|
label_language_based: В зависимост от езика
|
||||||
label_sort_by: "Сортиране по %{value}"
|
label_sort_by: "Сортиране по %{value}"
|
||||||
label_send_test_email: Изпращане на тестов e-mail
|
label_send_test_email: Изпращане на тестов e-mail
|
||||||
|
label_feeds_access_key: RSS access ключ
|
||||||
|
label_missing_feeds_access_key: Липсващ RSS ключ за достъп
|
||||||
label_feeds_access_key_created_on: "%{value} от създаването на RSS ключа"
|
label_feeds_access_key_created_on: "%{value} от създаването на RSS ключа"
|
||||||
label_module_plural: Модули
|
label_module_plural: Модули
|
||||||
label_added_time_by: "Публикувана от %{author} преди %{age}"
|
label_added_time_by: "Публикувана от %{author} преди %{age}"
|
||||||
|
label_updated_time_by: "Обновена от %{author} преди %{age}"
|
||||||
label_updated_time: "Обновена преди %{value}"
|
label_updated_time: "Обновена преди %{value}"
|
||||||
label_jump_to_a_project: Проект...
|
label_jump_to_a_project: Проект...
|
||||||
|
label_file_plural: Файлове
|
||||||
|
label_changeset_plural: Ревизии
|
||||||
|
label_default_columns: По подразбиране
|
||||||
|
label_no_change_option: (Без промяна)
|
||||||
|
label_bulk_edit_selected_issues: Редактиране на задачи
|
||||||
|
label_theme: Тема
|
||||||
|
label_default: По подразбиране
|
||||||
|
label_search_titles_only: Само в заглавията
|
||||||
|
label_user_mail_option_all: "За всяко събитие в проектите, в които участвам"
|
||||||
|
label_user_mail_option_selected: "За всички събития само в избраните проекти..."
|
||||||
|
label_user_mail_option_none: "Само за наблюдавани или в които участвам (автор или назначени на мен)"
|
||||||
|
label_user_mail_option_only_my_events: Само за неща, в които съм включен/а
|
||||||
|
label_user_mail_option_only_assigned: Само за неща, назначени на мен
|
||||||
|
label_user_mail_option_only_owner: Само за неща, на които аз съм собственик
|
||||||
|
label_user_mail_no_self_notified: "Не искам известия за извършени от мен промени"
|
||||||
|
label_registration_activation_by_email: активиране на профила по email
|
||||||
|
label_registration_manual_activation: ръчно активиране
|
||||||
|
label_registration_automatic_activation: автоматично активиране
|
||||||
|
label_display_per_page: "На страница по: %{value}"
|
||||||
|
label_age: Възраст
|
||||||
|
label_change_properties: Промяна на настройки
|
||||||
|
label_general: Основни
|
||||||
|
label_more: Още
|
||||||
|
label_scm: SCM (Система за контрол на версиите)
|
||||||
|
label_plugins: Плъгини
|
||||||
|
label_ldap_authentication: LDAP оторизация
|
||||||
|
label_downloads_abbr: D/L
|
||||||
|
label_optional_description: Незадължително описание
|
||||||
|
label_add_another_file: Добавяне на друг файл
|
||||||
|
label_preferences: Предпочитания
|
||||||
|
label_chronological_order: Хронологичен ред
|
||||||
|
label_reverse_chronological_order: Обратен хронологичен ред
|
||||||
|
label_planning: Планиране
|
||||||
|
label_incoming_emails: Входящи e-mail-и
|
||||||
|
label_generate_key: Генериране на ключ
|
||||||
|
label_issue_watchers: Наблюдатели
|
||||||
|
label_example: Пример
|
||||||
|
label_display: Display
|
||||||
|
label_sort: Сортиране
|
||||||
|
label_ascending: Нарастващ
|
||||||
|
label_descending: Намаляващ
|
||||||
|
label_date_from_to: От %{start} до %{end}
|
||||||
|
label_wiki_content_added: Wiki страница беше добавена
|
||||||
|
label_wiki_content_updated: Wiki страница беше обновена
|
||||||
|
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: Обновяване на процента на завършените задачи
|
||||||
|
label_copy_source: Източник
|
||||||
|
label_copy_target: Цел
|
||||||
|
label_copy_same_as_target: Също като целта
|
||||||
|
label_display_used_statuses_only: Показване само на състоянията, използвани от този тракер
|
||||||
|
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: Изпращане на Send e-mail известия по време на копирането на проекта
|
||||||
|
label_principal_search: "Търсене на потребител или група:"
|
||||||
|
label_user_search: "Търсене на потребител:"
|
||||||
|
|
||||||
button_login: Вход
|
button_login: Вход
|
||||||
button_submit: Прикачване
|
button_submit: Прикачване
|
||||||
button_save: Запис
|
button_save: Запис
|
||||||
|
@ -528,8 +801,10 @@ bg:
|
||||||
button_uncheck_all: Изчистване на всички
|
button_uncheck_all: Изчистване на всички
|
||||||
button_delete: Изтриване
|
button_delete: Изтриване
|
||||||
button_create: Създаване
|
button_create: Създаване
|
||||||
|
button_create_and_continue: Създаване и продължаване
|
||||||
button_test: Тест
|
button_test: Тест
|
||||||
button_edit: Редакция
|
button_edit: Редакция
|
||||||
|
button_edit_associated_wikipage: "Редактиране на асоциираната Wiki страница: %{page_title}"
|
||||||
button_add: Добавяне
|
button_add: Добавяне
|
||||||
button_change: Промяна
|
button_change: Промяна
|
||||||
button_apply: Приложи
|
button_apply: Приложи
|
||||||
|
@ -540,6 +815,7 @@ bg:
|
||||||
button_list: Списък
|
button_list: Списък
|
||||||
button_view: Преглед
|
button_view: Преглед
|
||||||
button_move: Преместване
|
button_move: Преместване
|
||||||
|
button_move_and_follow: Преместване и продължаване
|
||||||
button_back: Назад
|
button_back: Назад
|
||||||
button_cancel: Отказ
|
button_cancel: Отказ
|
||||||
button_activate: Активация
|
button_activate: Активация
|
||||||
|
@ -553,26 +829,49 @@ bg:
|
||||||
button_unarchive: Разархивиране
|
button_unarchive: Разархивиране
|
||||||
button_reset: Генериране наново
|
button_reset: Генериране наново
|
||||||
button_rename: Преименуване
|
button_rename: Преименуване
|
||||||
|
button_change_password: Промяна на парола
|
||||||
|
button_copy: Копиране
|
||||||
|
button_copy_and_follow: Копиране и продължаване
|
||||||
|
button_annotate: Анотация
|
||||||
|
button_update: Обновяване
|
||||||
|
button_configure: Конфигуриране
|
||||||
|
button_quote: Цитат
|
||||||
|
button_duplicate: Дублиране
|
||||||
|
button_show: Показване
|
||||||
|
|
||||||
status_active: активен
|
status_active: активен
|
||||||
status_registered: регистриран
|
status_registered: регистриран
|
||||||
status_locked: заключен
|
status_locked: заключен
|
||||||
|
|
||||||
|
version_status_open: отворена
|
||||||
|
version_status_locked: заключена
|
||||||
|
version_status_closed: затворена
|
||||||
|
|
||||||
|
field_active: Активен
|
||||||
|
|
||||||
text_select_mail_notifications: Изберете събития за изпращане на e-mail.
|
text_select_mail_notifications: Изберете събития за изпращане на e-mail.
|
||||||
text_regexp_info: пр. ^[A-Z0-9]+$
|
text_regexp_info: пр. ^[A-Z0-9]+$
|
||||||
text_min_max_length_info: 0 - без ограничения
|
text_min_max_length_info: 0 - без ограничения
|
||||||
text_project_destroy_confirmation: Сигурни ли сте, че искате да изтриете проекта и данните в него?
|
text_project_destroy_confirmation: Сигурни ли сте, че искате да изтриете проекта и данните в него?
|
||||||
|
text_subprojects_destroy_warning: "Неговите подпроекти: %{value} също ще бъдат изтрити."
|
||||||
text_workflow_edit: Изберете роля и тракер за да редактирате работния процес
|
text_workflow_edit: Изберете роля и тракер за да редактирате работния процес
|
||||||
text_are_you_sure: Сигурни ли сте?
|
text_are_you_sure: Сигурни ли сте?
|
||||||
text_tip_task_begin_day: задача започваща този ден
|
text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи?
|
||||||
text_tip_task_end_day: задача завършваща този ден
|
text_journal_changed: "%{label} променен от %{old} на %{new}"
|
||||||
text_tip_task_begin_end_day: задача започваща и завършваща този ден
|
text_journal_set_to: "%{label} установен на %{value}"
|
||||||
|
text_journal_deleted: "%{label} изтрит (%{old})"
|
||||||
|
text_journal_added: "Добавено %{label} %{value}"
|
||||||
|
text_tip_issue_begin_day: задача, започваща този ден
|
||||||
|
text_tip_issue_end_day: задача, завършваща този ден
|
||||||
|
text_tip_issue_begin_end_day: задача, започваща и завършваща този ден
|
||||||
text_project_identifier_info: 'Позволени са малки букви (a-z), цифри и тирета.<br />Невъзможна промяна след запис.'
|
text_project_identifier_info: 'Позволени са малки букви (a-z), цифри и тирета.<br />Невъзможна промяна след запис.'
|
||||||
text_caracters_maximum: "До %{count} символа."
|
text_caracters_maximum: "До %{count} символа."
|
||||||
|
text_caracters_minimum: "Минимум %{count} символа."
|
||||||
text_length_between: "От %{min} до %{max} символа."
|
text_length_between: "От %{min} до %{max} символа."
|
||||||
text_tracker_no_workflow: Няма дефиниран работен процес за този тракер
|
text_tracker_no_workflow: Няма дефиниран работен процес за този тракер
|
||||||
text_unallowed_characters: Непозволени символи
|
text_unallowed_characters: Непозволени символи
|
||||||
text_comma_separated: Позволено е изброяване (с разделител запетая).
|
text_comma_separated: Позволено е изброяване (с разделител запетая).
|
||||||
|
text_line_separated: Позволени са много стойности (по едно на ред).
|
||||||
text_issues_ref_in_commit_messages: Отбелязване и приключване на задачи от ревизии
|
text_issues_ref_in_commit_messages: Отбелязване и приключване на задачи от ревизии
|
||||||
text_issue_added: "Публикувана е нова задача с номер %{id} (от %{author})."
|
text_issue_added: "Публикувана е нова задача с номер %{id} (от %{author})."
|
||||||
text_issue_updated: "Задача %{id} е обновена (от %{author})."
|
text_issue_updated: "Задача %{id} е обновена (от %{author})."
|
||||||
|
@ -580,7 +879,36 @@ bg:
|
||||||
text_issue_category_destroy_question: "Има задачи (%{count}) обвързани с тази категория. Какво ще изберете?"
|
text_issue_category_destroy_question: "Има задачи (%{count}) обвързани с тази категория. Какво ще изберете?"
|
||||||
text_issue_category_destroy_assignments: Премахване на връзките с категорията
|
text_issue_category_destroy_assignments: Премахване на връзките с категорията
|
||||||
text_issue_category_reassign_to: Преобвързване с категория
|
text_issue_category_reassign_to: Преобвързване с категория
|
||||||
|
text_user_mail_option: "За неизбраните проекти, ще получавате известия само за наблюдавани дейности или в които участвате (т.е. автор или назначени на мен)."
|
||||||
|
text_no_configuration_data: "Все още не са конфигурирани Роли, тракери, състояния на задачи и работен процес.\nСтрого се препоръчва зареждането на примерната информация. Веднъж заредена ще имате възможност да я редактирате."
|
||||||
|
text_load_default_configuration: Зареждане на примерна информация
|
||||||
|
text_status_changed_by_changeset: "Приложено с ревизия %{value}."
|
||||||
|
text_time_logged_by_changeset: Приложено в ревизия %{value}.
|
||||||
|
text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?'
|
||||||
|
text_select_project_modules: 'Изберете активните модули за този проект:'
|
||||||
|
text_default_administrator_account_changed: Сменен фабричния администраторски профил
|
||||||
|
text_file_repository_writable: Възможност за писане в хранилището с файлове
|
||||||
|
text_plugin_assets_writable: Папката на приставките е разрешена за запис
|
||||||
|
text_rmagick_available: Наличен RMagick (по избор)
|
||||||
|
text_destroy_time_entries_question: "%{hours} часа са отделени на задачите, които искате да изтриете. Какво избирате?"
|
||||||
|
text_destroy_time_entries: Изтриване на отделеното време
|
||||||
|
text_assign_time_entries_to_project: Прехвърляне на отделеното време към проект
|
||||||
|
text_reassign_time_entries: 'Прехвърляне на отделеното време към задача:'
|
||||||
|
text_user_wrote: "%{value} написа:"
|
||||||
|
text_enumeration_destroy_question: "%{count} обекта са свързани с тази стойност."
|
||||||
|
text_enumeration_category_reassign_to: 'Пресвържете ги към тази стойност:'
|
||||||
|
text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и известията не са разрешени.\nКонфигурирайте вашия SMTP сървър в config/configuration.yml и рестартирайте Redmine, за да ги разрешите."
|
||||||
|
text_repository_usernames_mapping: "Изберете или променете потребителите в Redmine, съответстващи на потребителите в дневника на хранилището (repository).\nПотребителите с еднакви имена в Redmine и хранилищата се съвместяват автоматично."
|
||||||
|
text_diff_truncated: '... Този diff не е пълен, понеже е надхвърля максималния размер, който може да бъде показан.'
|
||||||
|
text_custom_field_possible_values_info: 'Една стойност на ред'
|
||||||
|
text_wiki_page_destroy_question: Тази страница има %{descendants} страници деца и descendant(s). Какво желаете да правите?
|
||||||
|
text_wiki_page_nullify_children: Запазване на тези страници като коренни страници
|
||||||
|
text_wiki_page_destroy_children: Изтриване на страниците деца и всички техни descendants
|
||||||
|
text_wiki_page_reassign_children: Преназначаване на страниците деца на тази родителска страница
|
||||||
|
text_own_membership_delete_confirmation: "Вие сте на път да премахнете някои или всички ваши разрешения и е възможно след това да не можете да редактирате този проект.\nСигурен ли сте, че искате да продължите?"
|
||||||
|
text_zoom_in: Увеличаване
|
||||||
|
text_zoom_out: Намаляване
|
||||||
|
|
||||||
default_role_manager: Мениджър
|
default_role_manager: Мениджър
|
||||||
default_role_developer: Разработчик
|
default_role_developer: Разработчик
|
||||||
default_role_reporter: Публикуващ
|
default_role_reporter: Публикуващ
|
||||||
|
@ -602,333 +930,9 @@ bg:
|
||||||
default_priority_immediate: Веднага
|
default_priority_immediate: Веднага
|
||||||
default_activity_design: Дизайн
|
default_activity_design: Дизайн
|
||||||
default_activity_development: Разработка
|
default_activity_development: Разработка
|
||||||
|
|
||||||
enumeration_issue_priorities: Приоритети на задачи
|
enumeration_issue_priorities: Приоритети на задачи
|
||||||
enumeration_doc_categories: Категории документи
|
enumeration_doc_categories: Категории документи
|
||||||
enumeration_activities: Дейности (time tracking)
|
enumeration_activities: Дейности (time tracking)
|
||||||
label_file_plural: Файлове
|
|
||||||
label_changeset_plural: Ревизии
|
|
||||||
field_column_names: Колони
|
|
||||||
label_default_columns: По подразбиране
|
|
||||||
setting_issue_list_default_columns: Показвани колони по подразбиране
|
|
||||||
setting_repositories_encodings: Кодови таблици
|
|
||||||
notice_no_issue_selected: "Няма избрани задачи."
|
|
||||||
label_bulk_edit_selected_issues: Редактиране на задачи
|
|
||||||
label_no_change_option: (Без промяна)
|
|
||||||
notice_failed_to_save_issues: "Неуспешен запис на %{count} задачи от %{total} избрани: %{ids}."
|
|
||||||
label_theme: Тема
|
|
||||||
label_default: По подразбиране
|
|
||||||
label_search_titles_only: Само в заглавията
|
|
||||||
label_nobody: никой
|
|
||||||
button_change_password: Промяна на парола
|
|
||||||
text_user_mail_option: "За неизбраните проекти, ще получавате известия само за наблюдавани дейности или в които участвате (т.е. автор или назначени на мен)."
|
|
||||||
label_user_mail_option_selected: "За всички събития само в избраните проекти..."
|
|
||||||
label_user_mail_option_all: "За всяко събитие в проектите, в които участвам"
|
|
||||||
label_user_mail_option_none: "Само за наблюдавани или в които участвам (автор или назначени на мен)"
|
|
||||||
setting_emails_footer: Подтекст за e-mail
|
|
||||||
label_float: Дробно
|
|
||||||
button_copy: Копиране
|
|
||||||
mail_body_account_information_external: "Можете да използвате вашия %{value} профил за вход."
|
|
||||||
mail_body_account_information: Информацията за профила ви
|
|
||||||
setting_protocol: Протокол
|
|
||||||
label_user_mail_no_self_notified: "Не искам известия за извършени от мен промени"
|
|
||||||
setting_time_format: Формат на часа
|
|
||||||
label_registration_activation_by_email: активиране на профила по email
|
|
||||||
mail_subject_account_activation_request: "Заявка за активиране на профил в %{value}"
|
|
||||||
mail_body_account_activation_request: "Има новорегистриран потребител (%{value}), очакващ вашето одобрение:"
|
|
||||||
label_registration_automatic_activation: автоматично активиране
|
|
||||||
label_registration_manual_activation: ръчно активиране
|
|
||||||
notice_account_pending: "Профилът Ви е създаден и очаква одобрение от администратор."
|
|
||||||
field_time_zone: Часова зона
|
|
||||||
text_caracters_minimum: "Минимум %{count} символа."
|
|
||||||
setting_bcc_recipients: Получатели на скрито копие (bcc)
|
|
||||||
button_annotate: Анотация
|
|
||||||
label_issues_by: "Задачи по %{value}"
|
|
||||||
field_searchable: С възможност за търсене
|
|
||||||
label_display_per_page: "На страница по: %{value}"
|
|
||||||
setting_per_page_options: Опции за страниране
|
|
||||||
label_age: Възраст
|
|
||||||
notice_default_data_loaded: Примерната информацията е успешно заредена.
|
|
||||||
text_load_default_configuration: Зареждане на примерна информация
|
|
||||||
text_no_configuration_data: "Все още не са конфигурирани Роли, тракери, състояния на задачи и работен процес.\nСтрого се препоръчва зареждането на примерната информация. Веднъж заредена ще имате възможност да я редактирате."
|
|
||||||
error_can_t_load_default_data: "Грешка при зареждане на примерната информация: %{value}"
|
|
||||||
button_update: Обновяване
|
|
||||||
label_change_properties: Промяна на настройки
|
|
||||||
label_general: Основни
|
|
||||||
label_repository_plural: Хранилища
|
|
||||||
label_associated_revisions: Асоциирани ревизии
|
|
||||||
setting_user_format: Потребителски формат
|
|
||||||
text_status_changed_by_changeset: "Приложено с ревизия %{value}."
|
|
||||||
label_more: Още
|
|
||||||
text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?'
|
|
||||||
label_scm: SCM (Система за контрол на кода)
|
|
||||||
text_select_project_modules: 'Изберете активните модули за този проект:'
|
|
||||||
label_issue_added: Добавена задача
|
|
||||||
label_issue_updated: Обновена задача
|
|
||||||
label_document_added: Добавен документ
|
|
||||||
label_message_posted: Добавено съобщение
|
|
||||||
label_file_added: Добавен файл
|
|
||||||
label_news_added: Добавена новина
|
|
||||||
project_module_boards: Форуми
|
|
||||||
project_module_issue_tracking: Тракинг
|
|
||||||
project_module_wiki: Wiki
|
|
||||||
project_module_files: Файлове
|
|
||||||
project_module_documents: Документи
|
|
||||||
project_module_repository: Хранилище
|
|
||||||
project_module_news: Новини
|
|
||||||
project_module_time_tracking: Отделяне на време
|
|
||||||
text_file_repository_writable: Възможност за писане в хранилището с файлове
|
|
||||||
text_default_administrator_account_changed: Сменен фабричния администраторски профил
|
|
||||||
text_rmagick_available: Наличен RMagick (по избор)
|
|
||||||
button_configure: Конфигуриране
|
|
||||||
label_plugins: Плъгини
|
|
||||||
label_ldap_authentication: LDAP оторизация
|
|
||||||
label_downloads_abbr: D/L
|
|
||||||
label_this_month: текущия месец
|
|
||||||
label_last_n_days: "последните %{count} дни"
|
|
||||||
label_all_time: всички
|
|
||||||
label_this_year: текущата година
|
|
||||||
label_date_range: Период
|
|
||||||
label_last_week: последната седмица
|
|
||||||
label_yesterday: вчера
|
|
||||||
label_last_month: последния месец
|
|
||||||
label_add_another_file: Добавяне на друг файл
|
|
||||||
label_optional_description: Незадължително описание
|
|
||||||
text_destroy_time_entries_question: "%{hours} часа са отделени на задачите, които искате да изтриете. Какво избирате?"
|
|
||||||
error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект'
|
|
||||||
text_assign_time_entries_to_project: Прехвърляне на отделеното време към проект
|
|
||||||
text_destroy_time_entries: Изтриване на отделеното време
|
|
||||||
text_reassign_time_entries: 'Прехвърляне на отделеното време към задача:'
|
|
||||||
setting_activity_days_default: Брой дни показвани на таб Дейност
|
|
||||||
label_chronological_order: Хронологичен ред
|
|
||||||
field_comments_sorting: Сортиране на коментарите
|
|
||||||
label_reverse_chronological_order: Обратен хронологичен ред
|
|
||||||
label_preferences: Предпочитания
|
|
||||||
setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране
|
|
||||||
label_overall_activity: Цялостна дейност
|
|
||||||
setting_default_projects_public: Новите проекти са публични по подразбиране
|
|
||||||
error_scm_annotate: "Обектът не съществува или не може да бъде анотиран."
|
|
||||||
label_planning: Планиране
|
|
||||||
text_subprojects_destroy_warning: "Неговите подпроекти: %{value} също ще бъдат изтрити."
|
|
||||||
label_and_its_subprojects: "%{value} и неговите подпроекти"
|
|
||||||
mail_body_reminder: "%{count} задачи, назначени на вас са с краен срок в следващите %{days} дни:"
|
|
||||||
mail_subject_reminder: "%{count} задачи с краен срок с следващите %{days} дни"
|
|
||||||
text_user_wrote: "%{value} написа:"
|
|
||||||
label_duplicated_by: дублирана от
|
|
||||||
setting_enabled_scm: Разрешена SCM
|
|
||||||
text_enumeration_category_reassign_to: 'Пресвържете ги към тази стойност:'
|
|
||||||
text_enumeration_destroy_question: "%{count} обекта са свързани с тази стойност."
|
|
||||||
label_incoming_emails: Входящи e-mail-и
|
|
||||||
label_generate_key: Генериране на ключ
|
|
||||||
setting_mail_handler_api_enabled: Разрешаване на WS за входящи e-mail-и
|
|
||||||
setting_mail_handler_api_key: API ключ
|
|
||||||
text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и известията не са разрешени.\nКонфигурирайте вашия SMTP сървър в config/email.yml и рестартирайте Redmine, за да ги разрешите."
|
|
||||||
field_parent_title: Родителска страница
|
|
||||||
label_issue_watchers: Наблюдатели
|
|
||||||
setting_commit_logs_encoding: Кодова таблица на съобщенията при поверяване
|
|
||||||
button_quote: Цитат
|
|
||||||
setting_sequential_project_identifiers: Генериране на последователни проектни идентификатори
|
|
||||||
notice_unable_delete_version: Невъзможност за изтриване на версия
|
|
||||||
label_renamed: преименувано
|
|
||||||
label_copied: копирано
|
|
||||||
setting_plain_text_mail: само чист текст (без HTML)
|
|
||||||
permission_view_files: Разглеждане на файлове
|
|
||||||
permission_edit_issues: Редактиране на задачи
|
|
||||||
permission_edit_own_time_entries: Редактиране на собствените time logs
|
|
||||||
permission_manage_public_queries: Управление на публичните заявки
|
|
||||||
permission_add_issues: Добавяне на задачи
|
|
||||||
permission_log_time: Log spent time
|
|
||||||
permission_view_changesets: Разглеждане на changesets
|
|
||||||
permission_view_time_entries: Разглеждане на изразходваното време
|
|
||||||
permission_manage_versions: Управление на версиите
|
|
||||||
permission_manage_wiki: Управление на wiki
|
|
||||||
permission_manage_categories: Управление на категориите задачи
|
|
||||||
permission_protect_wiki_pages: Заключване на wiki страници
|
|
||||||
permission_comment_news: Коментиране на новини
|
|
||||||
permission_delete_messages: Изтриване на съобщения
|
|
||||||
permission_select_project_modules: Избор на проектни модули
|
|
||||||
permission_manage_documents: Управление на документи
|
|
||||||
permission_edit_wiki_pages: Редактиране на wiki страници
|
|
||||||
permission_add_issue_watchers: Добавяне на наблюдатели
|
|
||||||
permission_view_gantt: Разглеждане на мрежов график
|
|
||||||
permission_move_issues: Преместване на задачи
|
|
||||||
permission_manage_issue_relations: Управление на връзките между задачите
|
|
||||||
permission_delete_wiki_pages: Изтриване на wiki страници
|
|
||||||
permission_manage_boards: Управление на boards
|
|
||||||
permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове
|
|
||||||
permission_view_wiki_edits: Разглеждане на wiki история
|
|
||||||
permission_add_messages: Публикуване на съобщения
|
|
||||||
permission_view_messages: Разглеждане на съобщения
|
|
||||||
permission_manage_files: Управление на файлове
|
|
||||||
permission_edit_issue_notes: Редактиране на бележки
|
|
||||||
permission_manage_news: Управление на новини
|
|
||||||
permission_view_calendar: Разглеждане на календари
|
|
||||||
permission_manage_members: Управление на членовете (на екип)
|
|
||||||
permission_edit_messages: Редактиране на съобщения
|
|
||||||
permission_delete_issues: Изтриване на задачи
|
|
||||||
permission_view_issue_watchers: Разглеждане на списък с наблюдатели
|
|
||||||
permission_manage_repository: Управление на хранилища
|
|
||||||
permission_commit_access: Поверяване
|
|
||||||
permission_browse_repository: Разглеждане на хранилища
|
|
||||||
permission_view_documents: Разглеждане на документи
|
|
||||||
permission_edit_project: Редактиране на проект
|
|
||||||
permission_add_issue_notes: Добаване на бележки
|
|
||||||
permission_save_queries: Запис на запитвания (queries)
|
|
||||||
permission_view_wiki_pages: Разглеждане на wiki
|
|
||||||
permission_rename_wiki_pages: Преименуване на wiki страници
|
|
||||||
permission_edit_time_entries: Редактиране на time logs
|
|
||||||
permission_edit_own_issue_notes: Редактиране на собствени бележки
|
|
||||||
setting_gravatar_enabled: Използване на портребителски икони от Gravatar
|
|
||||||
label_example: Пример
|
|
||||||
text_repository_usernames_mapping: "Select ou 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."
|
|
||||||
permission_edit_own_messages: Редактиране на собствени съобщения
|
|
||||||
permission_delete_own_messages: Изтриване на собствени съобщения
|
|
||||||
label_user_activity: "Активност на %{value}"
|
|
||||||
label_updated_time_by: "Обновена от %{author} преди %{age}"
|
|
||||||
text_diff_truncated: '... Този diff не е пълен, понеже е надхвърля максималния размер, който може да бъде показан.'
|
|
||||||
setting_diff_max_lines_displayed: Максимален брой показани diff редове
|
|
||||||
text_plugin_assets_writable: Папката на приставките е разрешена за запис
|
|
||||||
warning_attachments_not_saved: "%{count} файла не бяха записани."
|
|
||||||
button_create_and_continue: Създаване и продължаване
|
|
||||||
text_custom_field_possible_values_info: 'Една стойност на ред'
|
|
||||||
label_display: Display
|
|
||||||
field_editable: Editable
|
|
||||||
setting_repository_log_display_limit: Максимален брой на показванете ревизии в лог файла
|
|
||||||
setting_file_max_size_displayed: Максимален размер на текстовите файлове, показвани inline
|
|
||||||
field_watcher: Наблюдател
|
|
||||||
setting_openid: Рарешаване на OpenID вход и регистрация
|
|
||||||
field_identity_url: OpenID URL
|
|
||||||
label_login_with_open_id_option: или вход чрез OpenID
|
|
||||||
field_content: Съдържание
|
|
||||||
label_descending: Намаляващ
|
|
||||||
label_sort: Сортиране
|
|
||||||
label_ascending: Нарастващ
|
|
||||||
label_date_from_to: От %{start} до %{end}
|
|
||||||
label_greater_or_equal: ">="
|
|
||||||
label_less_or_equal: <=
|
|
||||||
text_wiki_page_destroy_question: Тази страница има %{descendants} страници деца и descendant(s). Какво желаете да правите?
|
|
||||||
text_wiki_page_reassign_children: Преназначаване на страниците деца на тази родителска страница
|
|
||||||
text_wiki_page_nullify_children: Запазване на тези страници като коренни страници
|
|
||||||
text_wiki_page_destroy_children: Изтриване на страниците деца и всички техни descendants
|
|
||||||
setting_password_min_length: Минимална дължина на парола
|
|
||||||
field_group_by: Групиране на резултатите по
|
|
||||||
mail_subject_wiki_content_updated: "Wiki страницата '%{id}' не беше обновена"
|
|
||||||
label_wiki_content_added: Wiki страница беше добавена
|
|
||||||
mail_subject_wiki_content_added: "Wiki страницата '%{id}' беше добавена"
|
|
||||||
mail_body_wiki_content_added: Wiki страницата '%{id}' беше добавена от %{author}.
|
|
||||||
label_wiki_content_updated: Wiki страница беше обновена
|
|
||||||
mail_body_wiki_content_updated: Wiki страницата '%{id}' беше обновена от %{author}.
|
|
||||||
permission_add_project: Създаване на проект
|
|
||||||
setting_new_project_user_role_id: Роля, давана на потребител, създаващ проекти, който не е администратор
|
|
||||||
label_view_all_revisions: Разглеждане на всички ревизии
|
|
||||||
label_tag: Версия
|
|
||||||
label_branch: работен вариант
|
|
||||||
error_no_tracker_in_project: Няма асоциирани тракери с този проект. Проверете настройките на проекта.
|
|
||||||
error_no_default_issue_status: Няма установено подразбиращо се състояние за задачите. Моля проверете вашата конфигурация (Вижте "Администрация -> Състояния на задачи").
|
|
||||||
text_journal_changed: "%{label} променен от %{old} на %{new}"
|
|
||||||
text_journal_set_to: "%{label} установен на %{value}"
|
|
||||||
text_journal_deleted: "%{label} изтрит (%{old})"
|
|
||||||
label_group_plural: Групи
|
|
||||||
label_group: Група
|
|
||||||
label_group_new: Нова група
|
|
||||||
label_time_entry_plural: Използвано време
|
|
||||||
text_journal_added: "Добавено %{label} %{value}"
|
|
||||||
field_active: Активен
|
|
||||||
enumeration_system_activity: Системна активност
|
enumeration_system_activity: Системна активност
|
||||||
permission_delete_issue_watchers: Изтриване на наблюдатели
|
|
||||||
version_status_closed: затворена
|
|
||||||
version_status_locked: заключена
|
|
||||||
version_status_open: отворена
|
|
||||||
error_can_not_reopen_issue_on_closed_version: Задача, асоциирана със затворена версия не може да бъде отворена отново
|
|
||||||
label_user_anonymous: Анонимен
|
|
||||||
button_move_and_follow: Преместване и продължаване
|
|
||||||
setting_default_projects_modules: Активирани модули по подразбиране за нов проект
|
|
||||||
setting_gravatar_default: Подразбиращо се изображение от Gravatar
|
|
||||||
field_sharing: Sharing
|
|
||||||
label_version_sharing_hierarchy: С проектна йерархия
|
|
||||||
label_version_sharing_system: С всички проекти
|
|
||||||
label_version_sharing_descendants: С подпроекти
|
|
||||||
label_version_sharing_tree: С дърво на проектите
|
|
||||||
label_version_sharing_none: Не споделен
|
|
||||||
error_can_not_archive_project: Този проект не може да бъде архивиран
|
|
||||||
button_duplicate: Дублиране
|
|
||||||
button_copy_and_follow: Копиране и продължаване
|
|
||||||
label_copy_source: Източник
|
|
||||||
setting_issue_done_ratio: Изчисление на процента на готови задачи с
|
|
||||||
setting_issue_done_ratio_issue_status: Използване на състоянието на задачите
|
|
||||||
error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен.
|
|
||||||
error_workflow_copy_target: Моля изберете тракер(и) и роля (роли).
|
|
||||||
setting_issue_done_ratio_issue_field: Използване на поле '% Прогрес'
|
|
||||||
label_copy_same_as_target: Също като целта
|
|
||||||
label_copy_target: Цел
|
|
||||||
notice_issue_done_ratios_updated: Обновен процент на завършените задачи.
|
|
||||||
error_workflow_copy_source: Моля изберете source тракер или роля
|
|
||||||
label_update_issue_done_ratios: Обновяване на процента на завършените задачи
|
|
||||||
setting_start_of_week: Първи ден на седмицата
|
|
||||||
permission_view_issues: Разглеждане на задачите
|
|
||||||
label_display_used_statuses_only: Показване само на състоянията, използвани от този тракер
|
|
||||||
label_revision_id: Ревизия %{value}
|
|
||||||
label_api_access_key: API ключ за достъп
|
|
||||||
label_api_access_key_created_on: API ключ за достъп е създаден преди %{value}
|
|
||||||
label_feeds_access_key: RSS access ключ
|
|
||||||
notice_api_access_key_reseted: Вашият API ключ за достъп беше изчистен.
|
|
||||||
setting_rest_api_enabled: Разрешаване на REST web сървис
|
|
||||||
label_missing_api_access_key: Липсващ API ключ
|
|
||||||
label_missing_feeds_access_key: Липсващ RSS ключ за достъп
|
|
||||||
button_show: Показване
|
|
||||||
text_line_separated: Позволени са много стойности (по едно на ред).
|
|
||||||
setting_mail_handler_body_delimiters: Отрязване на e-mail-ите след един от тези редове
|
|
||||||
permission_add_subprojects: Създаване на подпроекти
|
|
||||||
label_subproject_new: Нов подпроект
|
|
||||||
text_own_membership_delete_confirmation: |-
|
|
||||||
Вие сте на път да премахнете някои или всички ваши разрешения и е възможно след това на да не можете да редатирате този проект.
|
|
||||||
Сигурен ли сте, че искате да продължите?
|
|
||||||
label_close_versions: Затваряне на завършените версии
|
|
||||||
label_board_sticky: Sticky
|
|
||||||
label_board_locked: Заключена
|
|
||||||
permission_export_wiki_pages: Експорт на wiki страници
|
|
||||||
setting_cache_formatted_text: Cache formatted text
|
|
||||||
permission_manage_project_activities: Управление на дейностите на проекта
|
|
||||||
error_unable_delete_issue_status: Невъзможност за изтриване на състояние на задача
|
|
||||||
label_profile: Профил
|
|
||||||
permission_manage_subtasks: Управление на подзадачите
|
|
||||||
field_parent_issue: Родителска задача
|
|
||||||
label_subtask_plural: Подзадачи
|
|
||||||
label_project_copy_notifications: Изпращане на Send e-mail известия по време на копирането на проекта
|
|
||||||
error_can_not_delete_custom_field: Невъзможност за изтриване на потребителско поле
|
|
||||||
error_unable_to_connect: Невъзможност за свързване с (%{value})
|
|
||||||
error_can_not_remove_role: Тази роля се използва и не може да бъде изтрита.
|
|
||||||
error_can_not_delete_tracker: Този тракер съдържа задачи и не може да бъде изтрит.
|
|
||||||
field_principal: Principal
|
|
||||||
label_my_page_block: Блокове в личната страница
|
|
||||||
notice_failed_to_save_members: "Невъзможност за запис на член(ове): %{errors}."
|
|
||||||
text_zoom_out: Намаляване
|
|
||||||
text_zoom_in: Увеличаване
|
|
||||||
notice_unable_delete_time_entry: Невъзможност за изтриване на запис на time log.
|
|
||||||
label_overall_spent_time: Общо употребено време
|
|
||||||
field_time_entries: Log time
|
|
||||||
notice_not_authorized_archived_project: Проектът, който се опитвате да видите е архивиран.
|
|
||||||
text_tip_issue_end_day: задача, завършваща този ден
|
|
||||||
field_text: Текстово поле
|
|
||||||
label_user_mail_option_only_owner: Само за неща, на които аз съм собственик
|
|
||||||
field_member_of_group: Член на група
|
|
||||||
project_module_gantt: Мрежов график
|
|
||||||
text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи?
|
|
||||||
text_tip_issue_begin_end_day: задача, започваща и завършваща този ден
|
|
||||||
setting_default_notification_option: Подразбиращ се начин за известяване
|
|
||||||
project_module_calendar: Календар
|
|
||||||
label_user_mail_option_only_my_events: Само за неща, в които съм включен/а
|
|
||||||
text_tip_issue_begin_day: задача, започваща този ден
|
|
||||||
label_user_mail_option_only_assigned: Само за неща, назначени на мен
|
|
||||||
button_edit_associated_wikipage: "Редактиране на асоциираната Wiki страница: %{page_title}"
|
|
||||||
field_assigned_to_role: Assignee's role
|
|
||||||
field_start_date: Начална дата
|
|
||||||
label_principal_search: "Търсене на потребител или група:"
|
|
||||||
label_user_search: "Търсене на потребител:"
|
|
||||||
field_visible: Видим
|
|
||||||
setting_emails_header: Emails header
|
|
||||||
setting_commit_logtime_activity_id: Дейност при отчитане на работното време
|
|
||||||
text_time_logged_by_changeset: Приложено в ревизия %{value}.
|
|
||||||
setting_commit_logtime_enabled: Разрешаване на отчитането на работното време
|
|
||||||
notice_gantt_chart_truncated: Мрежовият график е съкратен, понеже броят на обектите, които могат да бъдат показани е твърде голям (%{max})
|
|
||||||
setting_gantt_items_limit: Максимален брой обекти, които да се показват в мрежов график
|
|
||||||
|
|
|
@ -787,7 +787,7 @@ bs:
|
||||||
text_user_wrote: "%{value} je napisao/la:"
|
text_user_wrote: "%{value} je napisao/la:"
|
||||||
text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost."
|
text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost."
|
||||||
text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:'
|
text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:'
|
||||||
text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriši SMTP server u config/email.yml i restartuj aplikaciju nakon toga."
|
text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriši SMTP server u config/configuration.yml i restartuj aplikaciju nakon toga."
|
||||||
text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisničko ima nađeno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju."
|
text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisničko ima nađeno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju."
|
||||||
text_diff_truncated: '... Ovaj prikaz razlike je odsječen pošto premašuje maksimalnu veličinu za prikaz'
|
text_diff_truncated: '... Ovaj prikaz razlike je odsječen pošto premašuje maksimalnu veličinu za prikaz'
|
||||||
text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost'
|
text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost'
|
||||||
|
|
|
@ -880,7 +880,7 @@ ca:
|
||||||
text_user_wrote: "%{value} va escriure:"
|
text_user_wrote: "%{value} va escriure:"
|
||||||
text_enumeration_destroy_question: "%{count} objectes estan assignats a aquest valor."
|
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_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/configuration.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_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_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"
|
||||||
|
|
|
@ -546,7 +546,7 @@ cs:
|
||||||
label_relation_delete: Odstranit souvislost
|
label_relation_delete: Odstranit souvislost
|
||||||
label_relates_to: související s
|
label_relates_to: související s
|
||||||
label_duplicates: duplicity
|
label_duplicates: duplicity
|
||||||
label_blocks: bloků
|
label_blocks: blokuje
|
||||||
label_blocked_by: zablokován
|
label_blocked_by: zablokován
|
||||||
label_precedes: předchází
|
label_precedes: předchází
|
||||||
label_follows: následuje
|
label_follows: následuje
|
||||||
|
@ -729,7 +729,7 @@ cs:
|
||||||
label_generate_key: Generovat klíč
|
label_generate_key: Generovat klíč
|
||||||
setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
|
setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
|
||||||
setting_mail_handler_api_key: API klíč
|
setting_mail_handler_api_key: API klíč
|
||||||
text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci."
|
text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci."
|
||||||
field_parent_title: Rodičovská stránka
|
field_parent_title: Rodičovská stránka
|
||||||
label_issue_watchers: Sledování
|
label_issue_watchers: Sledování
|
||||||
setting_commit_logs_encoding: Kódování zpráv při commitu
|
setting_commit_logs_encoding: Kódování zpráv při commitu
|
||||||
|
|
|
@ -753,7 +753,7 @@ da:
|
||||||
setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer
|
setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer
|
||||||
setting_plain_text_mail: Emails som almindelig tekst (ingen HTML)
|
setting_plain_text_mail: Emails som almindelig tekst (ingen HTML)
|
||||||
field_parent_title: Siden over
|
field_parent_title: Siden over
|
||||||
text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse."
|
text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/configuration.yml og genstart applikationen for at aktivere email-afsendelse."
|
||||||
permission_protect_wiki_pages: Beskyt wiki sider
|
permission_protect_wiki_pages: Beskyt wiki sider
|
||||||
permission_manage_documents: Administrér dokumenter
|
permission_manage_documents: Administrér dokumenter
|
||||||
permission_add_issue_watchers: Tilføj overvågere
|
permission_add_issue_watchers: Tilføj overvågere
|
||||||
|
|
|
@ -898,7 +898,7 @@ de:
|
||||||
text_user_wrote: "%{value} schrieb:"
|
text_user_wrote: "%{value} schrieb:"
|
||||||
text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet."
|
text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet."
|
||||||
text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
|
text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
|
||||||
text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu."
|
text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu."
|
||||||
text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet."
|
text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet."
|
||||||
text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.'
|
text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.'
|
||||||
text_custom_field_possible_values_info: 'Eine Zeile pro Wert'
|
text_custom_field_possible_values_info: 'Eine Zeile pro Wert'
|
||||||
|
|
|
@ -798,7 +798,7 @@ el:
|
||||||
text_user_wrote: "%{value} έγραψε:"
|
text_user_wrote: "%{value} έγραψε:"
|
||||||
text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή."
|
text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή."
|
||||||
text_enumeration_category_reassign_to: 'Επανεκχώρηση τους στην παρούσα αξία:'
|
text_enumeration_category_reassign_to: 'Επανεκχώρηση τους στην παρούσα αξία:'
|
||||||
text_email_delivery_not_configured: "Δεν έχουν γίνει ρυθμίσεις παράδοσης email, και οι ειδοποιήσεις είναι απενεργοποιημένες.\nΔηλώστε τον εξυπηρετητή SMTP στο config/email.yml και κάντε επανακκίνηση την εφαρμογή για να τις ρυθμίσεις."
|
text_email_delivery_not_configured: "Δεν έχουν γίνει ρυθμίσεις παράδοσης email, και οι ειδοποιήσεις είναι απενεργοποιημένες.\nΔηλώστε τον εξυπηρετητή SMTP στο config/configuration.yml και κάντε επανακκίνηση την εφαρμογή για να τις ρυθμίσεις."
|
||||||
text_repository_usernames_mapping: "Επιλέξτε ή ενημερώστε τον χρήστη Redmine που αντιστοιχεί σε κάθε όνομα χρήστη στο ιστορικό του αποθετηρίου.\nΧρήστες με το ίδιο όνομα χρήστη ή email στο Redmine και στο αποθετηρίο αντιστοιχίζονται αυτόματα."
|
text_repository_usernames_mapping: "Επιλέξτε ή ενημερώστε τον χρήστη Redmine που αντιστοιχεί σε κάθε όνομα χρήστη στο ιστορικό του αποθετηρίου.\nΧρήστες με το ίδιο όνομα χρήστη ή email στο Redmine και στο αποθετηρίο αντιστοιχίζονται αυτόματα."
|
||||||
text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπερβαίνει το μέγιστο μέγεθος που μπορεί να προβληθεί.'
|
text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπερβαίνει το μέγιστο μέγεθος που μπορεί να προβληθεί.'
|
||||||
text_custom_field_possible_values_info: 'Μία γραμμή για κάθε τιμή'
|
text_custom_field_possible_values_info: 'Μία γραμμή για κάθε τιμή'
|
||||||
|
|
|
@ -864,7 +864,7 @@ en-GB:
|
||||||
text_user_wrote: "%{value} wrote:"
|
text_user_wrote: "%{value} wrote:"
|
||||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||||
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_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_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_custom_field_possible_values_info: 'One line for each value'
|
||||||
|
|
|
@ -897,7 +897,7 @@ en:
|
||||||
text_user_wrote: "%{value} wrote:"
|
text_user_wrote: "%{value} wrote:"
|
||||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||||
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_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_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_custom_field_possible_values_info: 'One line for each value'
|
||||||
|
|
|
@ -795,7 +795,7 @@ es:
|
||||||
text_destroy_time_entries: Borrar las horas
|
text_destroy_time_entries: Borrar las horas
|
||||||
text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer?
|
text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer?
|
||||||
text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.'
|
text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.'
|
||||||
text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios."
|
text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios."
|
||||||
text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:'
|
text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:'
|
||||||
text_enumeration_destroy_question: "%{count} objetos con este valor asignado."
|
text_enumeration_destroy_question: "%{count} objetos con este valor asignado."
|
||||||
text_file_repository_writable: Se puede escribir en el repositorio
|
text_file_repository_writable: Se puede escribir en el repositorio
|
||||||
|
|
|
@ -859,7 +859,7 @@ eu:
|
||||||
text_user_wrote: "%{value}-(e)k idatzi zuen:"
|
text_user_wrote: "%{value}-(e)k idatzi zuen:"
|
||||||
text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude."
|
text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude."
|
||||||
text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:'
|
text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:'
|
||||||
text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/email.yml-n eta aplikazioa berrabiarazi hauek gaitzeko."
|
text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko."
|
||||||
text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira."
|
text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira."
|
||||||
text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.'
|
text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.'
|
||||||
text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko'
|
text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko'
|
||||||
|
|
|
@ -750,7 +750,7 @@ fi:
|
||||||
label_generate_key: Luo avain
|
label_generate_key: Luo avain
|
||||||
setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille
|
setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille
|
||||||
setting_mail_handler_api_key: API avain
|
setting_mail_handler_api_key: API avain
|
||||||
text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/email.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan."
|
text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/configuration.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan."
|
||||||
field_parent_title: Aloitussivu
|
field_parent_title: Aloitussivu
|
||||||
label_issue_watchers: Tapahtuman seuraajat
|
label_issue_watchers: Tapahtuman seuraajat
|
||||||
button_quote: Vastaa
|
button_quote: Vastaa
|
||||||
|
|
|
@ -166,10 +166,10 @@ fr:
|
||||||
notice_successful_create: Création effectuée avec succès.
|
notice_successful_create: Création effectuée avec succès.
|
||||||
notice_successful_update: Mise à jour effectuée avec succès.
|
notice_successful_update: Mise à jour effectuée avec succès.
|
||||||
notice_successful_delete: Suppression effectuée avec succès.
|
notice_successful_delete: Suppression effectuée avec succès.
|
||||||
notice_successful_connection: Connection réussie.
|
notice_successful_connection: Connexion réussie.
|
||||||
notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée."
|
notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée."
|
||||||
notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible.
|
notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible.
|
||||||
notice_not_authorized: "Vous n'êtes pas autorisés à accéder à cette page."
|
notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page."
|
||||||
notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé.
|
notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé.
|
||||||
notice_email_sent: "Un email a été envoyé à %{value}"
|
notice_email_sent: "Un email a été envoyé à %{value}"
|
||||||
notice_email_error: "Erreur lors de l'envoi de l'email (%{value})"
|
notice_email_error: "Erreur lors de l'envoi de l'email (%{value})"
|
||||||
|
@ -323,11 +323,11 @@ fr:
|
||||||
setting_text_formatting: Formatage du texte
|
setting_text_formatting: Formatage du texte
|
||||||
setting_wiki_compression: Compression historique wiki
|
setting_wiki_compression: Compression historique wiki
|
||||||
setting_feeds_limit: Limite du contenu des flux RSS
|
setting_feeds_limit: Limite du contenu des flux RSS
|
||||||
setting_default_projects_public: Définir les nouveaux projects comme publics par défaut
|
setting_default_projects_public: Définir les nouveaux projets comme publics par défaut
|
||||||
setting_autofetch_changesets: Récupération auto. des commits
|
setting_autofetch_changesets: Récupération auto. des commits
|
||||||
setting_sys_api_enabled: Activer les WS pour la gestion des dépôts
|
setting_sys_api_enabled: Activer les WS pour la gestion des dépôts
|
||||||
setting_commit_ref_keywords: Mot-clés de référencement
|
setting_commit_ref_keywords: Mots-clés de référencement
|
||||||
setting_commit_fix_keywords: Mot-clés de résolution
|
setting_commit_fix_keywords: Mots-clés de résolution
|
||||||
setting_autologin: Autologin
|
setting_autologin: Autologin
|
||||||
setting_date_format: Format de date
|
setting_date_format: Format de date
|
||||||
setting_time_format: Format d'heure
|
setting_time_format: Format d'heure
|
||||||
|
@ -349,7 +349,7 @@ fr:
|
||||||
setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
|
setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
|
||||||
setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées
|
setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées
|
||||||
setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne
|
setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne
|
||||||
setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier"
|
setting_repository_log_display_limit: "Nombre maximum de révisions affichées sur l'historique d'un fichier"
|
||||||
setting_openid: "Autoriser l'authentification et l'enregistrement OpenID"
|
setting_openid: "Autoriser l'authentification et l'enregistrement OpenID"
|
||||||
setting_password_min_length: Longueur minimum des mots de passe
|
setting_password_min_length: Longueur minimum des mots de passe
|
||||||
setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet
|
setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet
|
||||||
|
@ -369,7 +369,7 @@ fr:
|
||||||
permission_add_subprojects: Créer des sous-projets
|
permission_add_subprojects: Créer des sous-projets
|
||||||
permission_edit_project: Modifier le projet
|
permission_edit_project: Modifier le projet
|
||||||
permission_select_project_modules: Choisir les modules
|
permission_select_project_modules: Choisir les modules
|
||||||
permission_manage_members: Gérer les members
|
permission_manage_members: Gérer les membres
|
||||||
permission_manage_versions: Gérer les versions
|
permission_manage_versions: Gérer les versions
|
||||||
permission_manage_categories: Gérer les catégories de demandes
|
permission_manage_categories: Gérer les catégories de demandes
|
||||||
permission_view_issues: Voir les demandes
|
permission_view_issues: Voir les demandes
|
||||||
|
@ -859,7 +859,7 @@ fr:
|
||||||
text_issue_added: "La demande %{id} a été soumise par %{author}."
|
text_issue_added: "La demande %{id} a été soumise par %{author}."
|
||||||
text_issue_updated: "La demande %{id} a été mise à jour par %{author}."
|
text_issue_updated: "La demande %{id} a été mise à jour par %{author}."
|
||||||
text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ?
|
text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ?
|
||||||
text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégories. Que voulez-vous faire ?"
|
text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégorie. Que voulez-vous faire ?"
|
||||||
text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie
|
text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie
|
||||||
text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie
|
text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie
|
||||||
text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)."
|
text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)."
|
||||||
|
@ -880,7 +880,7 @@ fr:
|
||||||
text_user_wrote: "%{value} a écrit :"
|
text_user_wrote: "%{value} a écrit :"
|
||||||
text_enumeration_destroy_question: "Cette valeur est affectée à %{count} objets."
|
text_enumeration_destroy_question: "Cette valeur est affectée à %{count} objets."
|
||||||
text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:'
|
text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:'
|
||||||
text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer."
|
text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/configuration.yml et redémarrez l'application pour les activer."
|
||||||
text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés."
|
text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés."
|
||||||
text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.'
|
text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.'
|
||||||
text_custom_field_possible_values_info: 'Une ligne par valeur'
|
text_custom_field_possible_values_info: 'Une ligne par valeur'
|
||||||
|
|
|
@ -772,7 +772,7 @@ gl:
|
||||||
text_destroy_time_entries: Borrar as horas
|
text_destroy_time_entries: Borrar as horas
|
||||||
text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. ¿Que quere facer ?
|
text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. ¿Que quere facer ?
|
||||||
text_diff_truncated: '... Diferencia truncada por exceder o máximo tamaño visualizable.'
|
text_diff_truncated: '... Diferencia truncada por exceder o máximo tamaño visualizable.'
|
||||||
text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/email.yml e reinicie a aplicación para activar os cambios."
|
text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/configuration.yml e reinicie a aplicación para activar os cambios."
|
||||||
text_enumeration_category_reassign_to: 'Reasignar ó seguinte valor:'
|
text_enumeration_category_reassign_to: 'Reasignar ó seguinte valor:'
|
||||||
text_enumeration_destroy_question: "%{count} obxectos con este valor asignado."
|
text_enumeration_destroy_question: "%{count} obxectos con este valor asignado."
|
||||||
text_file_repository_writable: Pódese escribir no repositorio
|
text_file_repository_writable: Pódese escribir no repositorio
|
||||||
|
|
|
@ -889,7 +889,7 @@ he:
|
||||||
text_user_wrote: "%{value} כתב:"
|
text_user_wrote: "%{value} כתב:"
|
||||||
text_enumeration_destroy_question: "%{count} אוביקטים מוצבים לערך זה."
|
text_enumeration_destroy_question: "%{count} אוביקטים מוצבים לערך זה."
|
||||||
text_enumeration_category_reassign_to: 'הצב מחדש לערך הזה:'
|
text_enumeration_category_reassign_to: 'הצב מחדש לערך הזה:'
|
||||||
text_email_delivery_not_configured: 'לא נקבעה תצורה לשליחת דואר, וההתראות כבויות.\nקבע את תצורת שרת ה־SMTP בקובץ /etc/redmine/<instance>/email.yml והתחל את האפליקציה מחדש ע"מ לאפשר אותם.'
|
text_email_delivery_not_configured: 'לא נקבעה תצורה לשליחת דואר, וההתראות כבויות.\nקבע את תצורת שרת ה־SMTP בקובץ /etc/redmine/<instance>/configuration.yml והתחל את האפליקציה מחדש ע"מ לאפשר אותם.'
|
||||||
text_repository_usernames_mapping: "בחר או עדכן את משתמש Redmine הממופה לכל שם משתמש ביומן המאגר.\nמשתמשים בעלי שם או כתובת דואר זהה ב־Redmine ובמאגר ממופים באופן אוטומטי."
|
text_repository_usernames_mapping: "בחר או עדכן את משתמש Redmine הממופה לכל שם משתמש ביומן המאגר.\nמשתמשים בעלי שם או כתובת דואר זהה ב־Redmine ובמאגר ממופים באופן אוטומטי."
|
||||||
text_diff_truncated: '... השינויים עוברים את מספר השורות המירבי לתצוגה, ולכן הם קוצצו.'
|
text_diff_truncated: '... השינויים עוברים את מספר השורות המירבי לתצוגה, ולכן הם קוצצו.'
|
||||||
text_custom_field_possible_values_info: שורה אחת לכל ערך
|
text_custom_field_possible_values_info: שורה אחת לכל ערך
|
||||||
|
|
|
@ -854,7 +854,7 @@ hr:
|
||||||
text_user_wrote: "%{value} je napisao/la:"
|
text_user_wrote: "%{value} je napisao/la:"
|
||||||
text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti."
|
text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti."
|
||||||
text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:'
|
text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:'
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||||
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_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: '... Ovaj diff je odrezan zato što prelazi maksimalnu veličinu koja može biti prikazana.'
|
text_diff_truncated: '... Ovaj diff je odrezan zato što prelazi maksimalnu veličinu koja može biti prikazana.'
|
||||||
text_custom_field_possible_values_info: 'One line for each value'
|
text_custom_field_possible_values_info: 'One line for each value'
|
||||||
|
|
|
@ -748,7 +748,7 @@
|
||||||
label_generate_key: Kulcs generálása
|
label_generate_key: Kulcs generálása
|
||||||
setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez
|
setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez
|
||||||
setting_mail_handler_api_key: API kulcs
|
setting_mail_handler_api_key: API kulcs
|
||||||
text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen."
|
text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/configuration.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen."
|
||||||
field_parent_title: Szülő oldal
|
field_parent_title: Szülő oldal
|
||||||
label_issue_watchers: Megfigyelők
|
label_issue_watchers: Megfigyelők
|
||||||
setting_commit_logs_encoding: Commit üzenetek kódlapja
|
setting_commit_logs_encoding: Commit üzenetek kódlapja
|
||||||
|
|
|
@ -833,7 +833,7 @@ id:
|
||||||
text_user_wrote: "%{value} menulis:"
|
text_user_wrote: "%{value} menulis:"
|
||||||
text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini."
|
text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini."
|
||||||
text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:'
|
text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:'
|
||||||
text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/email.yml dan restart kembali aplikasi untuk mengaktifkan."
|
text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/configuration.yml dan restart kembali aplikasi untuk mengaktifkan."
|
||||||
text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan."
|
text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan."
|
||||||
text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.'
|
text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.'
|
||||||
text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai'
|
text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai'
|
||||||
|
|
|
@ -730,7 +730,7 @@ it:
|
||||||
label_generate_key: Genera una chiave
|
label_generate_key: Genera una chiave
|
||||||
setting_mail_handler_api_enabled: Abilita WS per le email in arrivo
|
setting_mail_handler_api_enabled: Abilita WS per le email in arrivo
|
||||||
setting_mail_handler_api_key: Chiave API
|
setting_mail_handler_api_key: Chiave API
|
||||||
text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle."
|
text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/configuration.yml e riavvia l'applicazione per abilitarle."
|
||||||
field_parent_title: Pagina principale
|
field_parent_title: Pagina principale
|
||||||
label_issue_watchers: Osservatori
|
label_issue_watchers: Osservatori
|
||||||
setting_commit_logs_encoding: Codifica dei messaggi di commit
|
setting_commit_logs_encoding: Codifica dei messaggi di commit
|
||||||
|
|
|
@ -919,7 +919,7 @@ ja:
|
||||||
text_user_wrote: "%{value} は書きました:"
|
text_user_wrote: "%{value} は書きました:"
|
||||||
text_enumeration_destroy_question: "%{count}個のオブジェクトがこの値に割り当てられています。"
|
text_enumeration_destroy_question: "%{count}個のオブジェクトがこの値に割り当てられています。"
|
||||||
text_enumeration_category_reassign_to: '次の値に割り当て直す:'
|
text_enumeration_category_reassign_to: '次の値に割り当て直す:'
|
||||||
text_email_delivery_not_configured: "メールを送信するために必要な設定が行われていないため、メール通知は利用できません。\nconfig/email.ymlでSMTPサーバの設定を行い、アプリケーションを再起動してください。"
|
text_email_delivery_not_configured: "メールを送信するために必要な設定が行われていないため、メール通知は利用できません。\nconfig/configuration.ymlでSMTPサーバの設定を行い、アプリケーションを再起動してください。"
|
||||||
text_repository_usernames_mapping: "リポジトリのログから検出されたユーザー名をどのRedmineユーザーに関連づけるのか選択してください。\nログ上のユーザー名またはメールアドレスがRedmineのユーザーと一致する場合は自動的に関連づけられます。"
|
text_repository_usernames_mapping: "リポジトリのログから検出されたユーザー名をどのRedmineユーザーに関連づけるのか選択してください。\nログ上のユーザー名またはメールアドレスがRedmineのユーザーと一致する場合は自動的に関連づけられます。"
|
||||||
text_diff_truncated: '... 差分の行数が表示可能な上限を超えました。超過分は表示しません。'
|
text_diff_truncated: '... 差分の行数が表示可能な上限を超えました。超過分は表示しません。'
|
||||||
text_custom_field_possible_values_info: '選択肢の値は1行に1個ずつ記述してください。'
|
text_custom_field_possible_values_info: '選択肢の値は1行に1個ずつ記述してください。'
|
||||||
|
|
|
@ -843,7 +843,7 @@ ko:
|
||||||
text_user_wrote: "%{value}의 덧글:"
|
text_user_wrote: "%{value}의 덧글:"
|
||||||
text_enumeration_category_reassign_to: '새로운 값을 설정:'
|
text_enumeration_category_reassign_to: '새로운 값을 설정:'
|
||||||
text_enumeration_destroy_question: "%{count} 개의 일감이 이 값을 사용하고 있습니다."
|
text_enumeration_destroy_question: "%{count} 개의 일감이 이 값을 사용하고 있습니다."
|
||||||
text_email_delivery_not_configured: "이메일 전달이 설정되지 않았습니다. 그래서 알림이 비활성화되었습니다.\n SMTP서버를 config/email.yml에서 설정하고 어플리케이션을 다시 시작하십시오. 그러면 동작합니다."
|
text_email_delivery_not_configured: "이메일 전달이 설정되지 않았습니다. 그래서 알림이 비활성화되었습니다.\n SMTP서버를 config/configuration.yml에서 설정하고 어플리케이션을 다시 시작하십시오. 그러면 동작합니다."
|
||||||
text_repository_usernames_mapping: "저장소 로그에서 발견된 각 사용자에 레드마인 사용자를 업데이트할때 선택합니다.\n레드마인과 저장소의 이름이나 이메일이 같은 사용자가 자동으로 연결됩니다."
|
text_repository_usernames_mapping: "저장소 로그에서 발견된 각 사용자에 레드마인 사용자를 업데이트할때 선택합니다.\n레드마인과 저장소의 이름이나 이메일이 같은 사용자가 자동으로 연결됩니다."
|
||||||
text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.'
|
text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.'
|
||||||
text_custom_field_possible_values_info: '각 값 당 한 줄'
|
text_custom_field_possible_values_info: '각 값 당 한 줄'
|
||||||
|
|
|
@ -885,7 +885,7 @@ lt:
|
||||||
text_user_wrote: "%{value} parašė:"
|
text_user_wrote: "%{value} parašė:"
|
||||||
text_enumeration_destroy_question: "%{count} objektai priskirti šiai reikšmei."
|
text_enumeration_destroy_question: "%{count} objektai priskirti šiai reikšmei."
|
||||||
text_enumeration_category_reassign_to: 'Priskirti juos šiai reikšmei:'
|
text_enumeration_category_reassign_to: 'Priskirti juos šiai reikšmei:'
|
||||||
text_email_delivery_not_configured: "El.pašto siuntimas nesukonfigūruotas, ir perspėjimai neaktyvus.\nSukonfigūruokite savo SMTP serverį byloje config/email.yml ir perleiskite programą norėdami pritaikyti pakeitimus."
|
text_email_delivery_not_configured: "El.pašto siuntimas nesukonfigūruotas, ir perspėjimai neaktyvus.\nSukonfigūruokite savo SMTP serverį byloje config/configuration.yml ir perleiskite programą norėdami pritaikyti pakeitimus."
|
||||||
text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojo vardą kiekvienam saugyklos vardui, kuris paminėtas saugyklos log'e.\nVartotojai, turintys tą patį Redmine ir saugyklos vardą ar el.paštą automatiškai surišti."
|
text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojo vardą kiekvienam saugyklos vardui, kuris paminėtas saugyklos log'e.\nVartotojai, turintys tą patį Redmine ir saugyklos vardą ar el.paštą automatiškai surišti."
|
||||||
text_diff_truncated: "... Šis diff'as nukarpytas, nes jis viršijo maksimalų rodomą eilučių skaičių."
|
text_diff_truncated: "... Šis diff'as nukarpytas, nes jis viršijo maksimalų rodomą eilučių skaičių."
|
||||||
text_custom_field_possible_values_info: 'Po vieną eilutę kiekvienai reikšmei'
|
text_custom_field_possible_values_info: 'Po vieną eilutę kiekvienai reikšmei'
|
||||||
|
|
|
@ -854,7 +854,7 @@ lv:
|
||||||
text_user_wrote: "%{value} rakstīja:"
|
text_user_wrote: "%{value} rakstīja:"
|
||||||
text_enumeration_destroy_question: "%{count} objekti ir piešķirti šai vērtībai."
|
text_enumeration_destroy_question: "%{count} objekti ir piešķirti šai vērtībai."
|
||||||
text_enumeration_category_reassign_to: 'Piešķirt tos šai vērtībai:'
|
text_enumeration_category_reassign_to: 'Piešķirt tos šai vērtībai:'
|
||||||
text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/email.yml un pārstartējiet lietotni."
|
text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/configuration.yml un pārstartējiet lietotni."
|
||||||
text_repository_usernames_mapping: "Izvēlieties vai atjaunojiet Redmine lietotāju, saistītu ar katru lietotājvārdu, kas atrodams repozitorija žurnālā.\nLietotāji ar to pašu Redmine un repozitorija lietotājvārdu būs saistīti automātiski."
|
text_repository_usernames_mapping: "Izvēlieties vai atjaunojiet Redmine lietotāju, saistītu ar katru lietotājvārdu, kas atrodams repozitorija žurnālā.\nLietotāji ar to pašu Redmine un repozitorija lietotājvārdu būs saistīti automātiski."
|
||||||
text_diff_truncated: '... Šis diff tika nošķelts, jo tas pārsniedz maksimālo izmēru, ko var parādīt.'
|
text_diff_truncated: '... Šis diff tika nošķelts, jo tas pārsniedz maksimālo izmēru, ko var parādīt.'
|
||||||
text_custom_field_possible_values_info: 'Katra vērtības savā rindā'
|
text_custom_field_possible_values_info: 'Katra vērtības savā rindā'
|
||||||
|
|
|
@ -877,7 +877,7 @@ mk:
|
||||||
text_user_wrote: "%{value} напиша:"
|
text_user_wrote: "%{value} напиша:"
|
||||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||||
text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/email.yml и рестартирајте ја апликацијата."
|
text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/configuration.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_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_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_custom_field_possible_values_info: 'One line for each value'
|
||||||
|
|
|
@ -859,7 +859,7 @@ mn:
|
||||||
text_user_wrote: "%{value} бичихдээ:"
|
text_user_wrote: "%{value} бичихдээ:"
|
||||||
text_enumeration_destroy_question: "Энэ утгад %{count} обьект оноогдсон байна."
|
text_enumeration_destroy_question: "Энэ утгад %{count} обьект оноогдсон байна."
|
||||||
text_enumeration_category_reassign_to: 'Тэдгээрийг энэ утгад дахин оноо:'
|
text_enumeration_category_reassign_to: 'Тэдгээрийг энэ утгад дахин оноо:'
|
||||||
text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/email.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй."
|
text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/configuration.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй."
|
||||||
text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх хэрэглэгчийн нэрүүдэд харгалзсан Төслийн Менежер системд бүртгэлтэй хэрэглэгчдийг Сонгох юмуу шинэчилнэ үү.\nТөслийн менежер болон репозиторид байгаа ижилхэн нэр юмуу имэйлтэй хэрэглэгчид харилцан харгалзна."
|
text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх хэрэглэгчийн нэрүүдэд харгалзсан Төслийн Менежер системд бүртгэлтэй хэрэглэгчдийг Сонгох юмуу шинэчилнэ үү.\nТөслийн менежер болон репозиторид байгаа ижилхэн нэр юмуу имэйлтэй хэрэглэгчид харилцан харгалзна."
|
||||||
text_diff_truncated: '... Файлын ялгаврын хэмжээ үзүүлэхэд дэндүү урт байгаа учраас төгсгөлөөс нь хасч үзүүлэв.'
|
text_diff_truncated: '... Файлын ялгаврын хэмжээ үзүүлэхэд дэндүү урт байгаа учраас төгсгөлөөс нь хасч үзүүлэв.'
|
||||||
text_custom_field_possible_values_info: 'One line for each value'
|
text_custom_field_possible_values_info: 'One line for each value'
|
||||||
|
|
|
@ -742,7 +742,7 @@ nl:
|
||||||
text_destroy_time_entries: Verwijder gerapporteerde uren
|
text_destroy_time_entries: Verwijder gerapporteerde uren
|
||||||
text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilde verwijderen. Wat wil u doen?"
|
text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilde verwijderen. Wat wil u doen?"
|
||||||
text_diff_truncated: '... Deze diff werd afgekort omdat het de maximale weer te geven karakters overschreed.'
|
text_diff_truncated: '... Deze diff werd afgekort omdat het de maximale weer te geven karakters overschreed.'
|
||||||
text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/email.yml en herstart de applicatie om dit te activeren."
|
text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren."
|
||||||
text_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:'
|
text_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:'
|
||||||
text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde."
|
text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde."
|
||||||
text_file_repository_writable: Bestandsrepository beschrijfbaar
|
text_file_repository_writable: Bestandsrepository beschrijfbaar
|
||||||
|
|
|
@ -716,7 +716,7 @@
|
||||||
label_generate_key: Generer en nøkkel
|
label_generate_key: Generer en nøkkel
|
||||||
setting_mail_handler_api_enabled: Skru på WS for innkommende e-post
|
setting_mail_handler_api_enabled: Skru på WS for innkommende e-post
|
||||||
setting_mail_handler_api_key: API-nøkkel
|
setting_mail_handler_api_key: API-nøkkel
|
||||||
text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/email.yml og start programmet på nytt for å skru det på."
|
text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet på nytt for å skru det på."
|
||||||
field_parent_title: Foreldreside
|
field_parent_title: Foreldreside
|
||||||
label_issue_watchers: Overvåkere
|
label_issue_watchers: Overvåkere
|
||||||
setting_commit_logs_encoding: Tegnkoding for innsendingsmeldinger
|
setting_commit_logs_encoding: Tegnkoding for innsendingsmeldinger
|
||||||
|
|
|
@ -771,7 +771,7 @@ pl:
|
||||||
text_default_administrator_account_changed: Zmieniono domyślne hasło administratora
|
text_default_administrator_account_changed: Zmieniono domyślne hasło administratora
|
||||||
text_destroy_time_entries: Usuń wpisy dziennika
|
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_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_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/configuration.yml a następnie zrestartuj aplikację i uaktywnij to."
|
||||||
text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:'
|
text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:'
|
||||||
text_enumeration_destroy_question: "%{count} obiektów jest przypisana do tej wartości."
|
text_enumeration_destroy_question: "%{count} obiektów jest przypisana do tej wartości."
|
||||||
text_file_repository_writable: Zapisywalne repozytorium plików
|
text_file_repository_writable: Zapisywalne repozytorium plików
|
||||||
|
|
|
@ -728,7 +728,7 @@ pt-BR:
|
||||||
text_user_wrote: "%{value} escreveu:"
|
text_user_wrote: "%{value} escreveu:"
|
||||||
text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor."
|
text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor."
|
||||||
text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:'
|
text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:'
|
||||||
text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/email.yml e reinicie a aplicação para ativá-las."
|
text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/configuration.yml e reinicie a aplicação para ativá-las."
|
||||||
|
|
||||||
default_role_manager: Gerente
|
default_role_manager: Gerente
|
||||||
default_role_developer: Desenvolvedor
|
default_role_developer: Desenvolvedor
|
||||||
|
|
|
@ -715,7 +715,7 @@ pt:
|
||||||
text_user_wrote: "%{value} escreveu:"
|
text_user_wrote: "%{value} escreveu:"
|
||||||
text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor."
|
text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor."
|
||||||
text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:'
|
text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:'
|
||||||
text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/email.yml e reinicie a aplicação para activar estas funcionalidades."
|
text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para activar estas funcionalidades."
|
||||||
|
|
||||||
default_role_manager: Gestor
|
default_role_manager: Gestor
|
||||||
default_role_developer: Programador
|
default_role_developer: Programador
|
||||||
|
|
|
@ -774,7 +774,7 @@ ro:
|
||||||
text_user_wrote: "%{value} a scris:"
|
text_user_wrote: "%{value} a scris:"
|
||||||
text_enumeration_destroy_question: "Această valoare are %{count} obiecte."
|
text_enumeration_destroy_question: "Această valoare are %{count} obiecte."
|
||||||
text_enumeration_category_reassign_to: 'Atribuie la această valoare:'
|
text_enumeration_category_reassign_to: 'Atribuie la această valoare:'
|
||||||
text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată și ca urmare, notificările sunt dezactivate.\nConfigurați serverul SMTP în config/email.yml și reporniți aplicația pentru a le activa."
|
text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată și ca urmare, notificările sunt dezactivate.\nConfigurați serverul SMTP în config/configuration.yml și reporniți aplicația pentru a le activa."
|
||||||
text_repository_usernames_mapping: "Selectați sau modificați contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine și depozit sunt echivalate automat."
|
text_repository_usernames_mapping: "Selectați sau modificați contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine și depozit sunt echivalate automat."
|
||||||
text_diff_truncated: '... Comparația a fost trunchiată pentru ca depășește lungimea maximă de text care poate fi afișat.'
|
text_diff_truncated: '... Comparația a fost trunchiată pentru ca depășește lungimea maximă de text care poate fi afișat.'
|
||||||
text_custom_field_possible_values_info: 'O linie pentru fiecare valoare'
|
text_custom_field_possible_values_info: 'O linie pentru fiecare valoare'
|
||||||
|
|
|
@ -913,7 +913,7 @@ ru:
|
||||||
text_destroy_time_entries_question: Вы собираетесь удалить %{hours} часа(ов), прикрепленных за этой задачей.
|
text_destroy_time_entries_question: Вы собираетесь удалить %{hours} часа(ов), прикрепленных за этой задачей.
|
||||||
text_destroy_time_entries: Удалить зарегистрированное время
|
text_destroy_time_entries: Удалить зарегистрированное время
|
||||||
text_diff_truncated: '... Этот diff ограничен, так как превышает максимальный отображаемый размер.'
|
text_diff_truncated: '... Этот diff ограничен, так как превышает максимальный отображаемый размер.'
|
||||||
text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для Вашего SMTP-сервера Вы можете в файле config/email.yml. Для применения изменений перезапустите приложение."
|
text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для Вашего SMTP-сервера Вы можете в файле config/configuration.yml. Для применения изменений перезапустите приложение."
|
||||||
text_enumeration_category_reassign_to: 'Назначить им следующее значение:'
|
text_enumeration_category_reassign_to: 'Назначить им следующее значение:'
|
||||||
text_enumeration_destroy_question: "%{count} объект(а,ов) связаны с этим значением."
|
text_enumeration_destroy_question: "%{count} объект(а,ов) связаны с этим значением."
|
||||||
text_file_repository_writable: Хранилище с доступом на запись
|
text_file_repository_writable: Хранилище с доступом на запись
|
||||||
|
|
|
@ -723,7 +723,7 @@ sk:
|
||||||
label_generate_key: Vygenerovať kľúč
|
label_generate_key: Vygenerovať kľúč
|
||||||
setting_mail_handler_api_enabled: Zapnúť Webovú Službu (WS) pre príchodzie emaily
|
setting_mail_handler_api_enabled: Zapnúť Webovú Službu (WS) pre príchodzie emaily
|
||||||
setting_mail_handler_api_key: API kľúč
|
setting_mail_handler_api_key: API kľúč
|
||||||
text_email_delivery_not_configured: "Doručenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/email.yml a reštartnite aplikáciu pre aktiváciu funkcie."
|
text_email_delivery_not_configured: "Doručenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/configuration.yml a reštartnite aplikáciu pre aktiváciu funkcie."
|
||||||
field_parent_title: Nadradená stránka
|
field_parent_title: Nadradená stránka
|
||||||
label_issue_watchers: Pozorovatelia
|
label_issue_watchers: Pozorovatelia
|
||||||
setting_commit_logs_encoding: Kódovanie prenášaných správ
|
setting_commit_logs_encoding: Kódovanie prenášaných správ
|
||||||
|
|
|
@ -761,7 +761,7 @@ sl:
|
||||||
text_user_wrote: "%{value} je napisal(a):"
|
text_user_wrote: "%{value} je napisal(a):"
|
||||||
text_enumeration_destroy_question: "%{count} objektov je določenih tej vrednosti."
|
text_enumeration_destroy_question: "%{count} objektov je določenih tej vrednosti."
|
||||||
text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:'
|
text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:'
|
||||||
text_email_delivery_not_configured: "E-poštna dostava ni nastavljena in oznanila so onemogočena.\nNastavite vaš SMTP strežnik v config/email.yml in ponovno zaženite aplikacijo da ga omogočite.\n"
|
text_email_delivery_not_configured: "E-poštna dostava ni nastavljena in oznanila so onemogočena.\nNastavite vaš SMTP strežnik v config/configuration.yml in ponovno zaženite aplikacijo da ga omogočite.\n"
|
||||||
text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniškemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniškem imenu ali e-poštnem naslovu so samodejno dodeljeni."
|
text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniškemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniškem imenu ali e-poštnem naslovu so samodejno dodeljeni."
|
||||||
text_diff_truncated: '... Ta sprememba je bila odsekana ker presega največjo velikost ki je lahko prikazana.'
|
text_diff_truncated: '... Ta sprememba je bila odsekana ker presega največjo velikost ki je lahko prikazana.'
|
||||||
|
|
||||||
|
|
|
@ -874,7 +874,7 @@ sr-YU:
|
||||||
text_user_wrote: "%{value} je napisao:"
|
text_user_wrote: "%{value} je napisao:"
|
||||||
text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti."
|
text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti."
|
||||||
text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:'
|
text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:'
|
||||||
text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/email.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje."
|
text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje."
|
||||||
text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani."
|
text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani."
|
||||||
text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.'
|
text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.'
|
||||||
text_custom_field_possible_values_info: 'Jedan red za svaku vrednost'
|
text_custom_field_possible_values_info: 'Jedan red za svaku vrednost'
|
||||||
|
|
|
@ -874,7 +874,7 @@ sr:
|
||||||
text_user_wrote: "%{value} је написао:"
|
text_user_wrote: "%{value} је написао:"
|
||||||
text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредности."
|
text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредности."
|
||||||
text_enumeration_category_reassign_to: 'Додели их поново овој вредности:'
|
text_enumeration_category_reassign_to: 'Додели их поново овој вредности:'
|
||||||
text_email_delivery_not_configured: "Испорука е-порука није конфигурисана и обавештења су онемогућена.\nПодесите ваш SMTP сервер у config/email.yml и покрените поново апликацију за њихово омогућавање."
|
text_email_delivery_not_configured: "Испорука е-порука није конфигурисана и обавештења су онемогућена.\nПодесите ваш SMTP сервер у config/configuration.yml и покрените поново апликацију за њихово омогућавање."
|
||||||
text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориснике мапирањем сваког корисничког имена пронађеног у евиденцији спремишта.\nКорисници са истим Redmine именом и именом спремишта или е-адресом су аутоматски мапирани."
|
text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориснике мапирањем сваког корисничког имена пронађеног у евиденцији спремишта.\nКорисници са истим Redmine именом и именом спремишта или е-адресом су аутоматски мапирани."
|
||||||
text_diff_truncated: '... Ова разлика је исечена јер је достигнута максимална величина приказа.'
|
text_diff_truncated: '... Ова разлика је исечена јер је достигнута максимална величина приказа.'
|
||||||
text_custom_field_possible_values_info: 'Један ред за сваку вредност'
|
text_custom_field_possible_values_info: 'Један ред за сваку вредност'
|
||||||
|
|
|
@ -208,6 +208,7 @@ sv:
|
||||||
notice_unable_delete_version: Denna version var inte möjlig att ta bort.
|
notice_unable_delete_version: Denna version var inte möjlig att ta bort.
|
||||||
notice_unable_delete_time_entry: Tidloggning kunde inte tas bort.
|
notice_unable_delete_time_entry: Tidloggning kunde inte tas bort.
|
||||||
notice_issue_done_ratios_updated: % klart uppdaterade.
|
notice_issue_done_ratios_updated: % klart uppdaterade.
|
||||||
|
notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som får visas (%{max})"
|
||||||
|
|
||||||
error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}"
|
error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}"
|
||||||
error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv."
|
error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv."
|
||||||
|
@ -217,7 +218,7 @@ sv:
|
||||||
error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.'
|
error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.'
|
||||||
error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (Gå till "Administration -> Ärendestatus").'
|
error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (Gå till "Administration -> Ärendestatus").'
|
||||||
error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält
|
error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält
|
||||||
error_can_not_delete_tracker: Det finns ärenden av denna typ och den är därför inte möjlig att ta bort.
|
error_can_not_delete_tracker: "Det finns ärenden av denna typ och den är därför inte möjlig att ta bort."
|
||||||
error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort."
|
error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort."
|
||||||
error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas på nytt'
|
error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas på nytt'
|
||||||
error_can_not_archive_project: Detta projekt kan inte arkiveras
|
error_can_not_archive_project: Detta projekt kan inte arkiveras
|
||||||
|
@ -225,7 +226,7 @@ sv:
|
||||||
error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll'
|
error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll'
|
||||||
error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mål'
|
error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mål'
|
||||||
error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort'
|
error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort'
|
||||||
error_unable_to_connect: Kan inte ansluta (%{value})
|
error_unable_to_connect: "Kan inte ansluta (%{value})"
|
||||||
|
|
||||||
warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas."
|
warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas."
|
||||||
|
|
||||||
|
@ -240,9 +241,9 @@ sv:
|
||||||
mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna"
|
mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna"
|
||||||
mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:"
|
mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:"
|
||||||
mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till"
|
mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till"
|
||||||
mail_body_wiki_content_added: The '%{id}' wikisida has lagts till av %{author}.
|
mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}."
|
||||||
mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats"
|
mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats"
|
||||||
mail_body_wiki_content_updated: The '%{id}' wikisida har uppdaterats av %{author}.
|
mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}."
|
||||||
|
|
||||||
gui_validation_error: 1 fel
|
gui_validation_error: 1 fel
|
||||||
gui_validation_error_plural: "%{count} fel"
|
gui_validation_error_plural: "%{count} fel"
|
||||||
|
@ -340,8 +341,8 @@ sv:
|
||||||
field_group_by: Gruppera resultat efter
|
field_group_by: Gruppera resultat efter
|
||||||
field_sharing: Delning
|
field_sharing: Delning
|
||||||
field_parent_issue: Förälderaktivitet
|
field_parent_issue: Förälderaktivitet
|
||||||
field_member_of_group: Tilldelad användares grupp
|
field_member_of_group: "Tilldelad användares grupp"
|
||||||
field_assigned_to_role: Tilldelad användares roll
|
field_assigned_to_role: "Tilldelad användares roll"
|
||||||
field_text: Textfält
|
field_text: Textfält
|
||||||
field_visible: Synlig
|
field_visible: Synlig
|
||||||
|
|
||||||
|
@ -380,7 +381,7 @@ sv:
|
||||||
setting_activity_days_default: Dagar som visas på projektaktivitet
|
setting_activity_days_default: Dagar som visas på projektaktivitet
|
||||||
setting_display_subprojects_issues: Visa ärenden från underprojekt i huvudprojekt
|
setting_display_subprojects_issues: Visa ärenden från underprojekt i huvudprojekt
|
||||||
setting_enabled_scm: Aktivera SCM
|
setting_enabled_scm: Aktivera SCM
|
||||||
setting_mail_handler_body_delimiters: Trunkera mail efter en av följande rader
|
setting_mail_handler_body_delimiters: "Trunkera mail efter en av följande rader"
|
||||||
setting_mail_handler_api_enabled: Aktivera WS för inkommande mail
|
setting_mail_handler_api_enabled: Aktivera WS för inkommande mail
|
||||||
setting_mail_handler_api_key: API-nyckel
|
setting_mail_handler_api_key: API-nyckel
|
||||||
setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt
|
setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt
|
||||||
|
@ -400,6 +401,9 @@ sv:
|
||||||
setting_rest_api_enabled: Aktivera REST webbtjänst
|
setting_rest_api_enabled: Aktivera REST webbtjänst
|
||||||
setting_cache_formatted_text: Cacha formaterad text
|
setting_cache_formatted_text: Cacha formaterad text
|
||||||
setting_default_notification_option: Standard notifieringsalternativ
|
setting_default_notification_option: Standard notifieringsalternativ
|
||||||
|
setting_commit_logtime_enabled: Aktivera tidloggning
|
||||||
|
setting_commit_logtime_activity_id: Aktivitet för loggad tid
|
||||||
|
setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat
|
||||||
|
|
||||||
permission_add_project: Skapa projekt
|
permission_add_project: Skapa projekt
|
||||||
permission_add_subprojects: Skapa underprojekt
|
permission_add_subprojects: Skapa underprojekt
|
||||||
|
@ -581,7 +585,7 @@ sv:
|
||||||
label_version_plural: Versioner
|
label_version_plural: Versioner
|
||||||
label_close_versions: Stäng klara versioner
|
label_close_versions: Stäng klara versioner
|
||||||
label_confirmation: Bekräftelse
|
label_confirmation: Bekräftelse
|
||||||
label_export_to: Exportera till
|
label_export_to: 'Finns även som:'
|
||||||
label_read: Läs...
|
label_read: Läs...
|
||||||
label_public_projects: Publika projekt
|
label_public_projects: Publika projekt
|
||||||
label_open_issues: öppen
|
label_open_issues: öppen
|
||||||
|
@ -666,7 +670,7 @@ sv:
|
||||||
label_tag: Tag
|
label_tag: Tag
|
||||||
label_revision: Revision
|
label_revision: Revision
|
||||||
label_revision_plural: Revisioner
|
label_revision_plural: Revisioner
|
||||||
label_revision_id: Revision %{value}
|
label_revision_id: "Revision %{value}"
|
||||||
label_associated_revisions: Associerade revisioner
|
label_associated_revisions: Associerade revisioner
|
||||||
label_added: tillagd
|
label_added: tillagd
|
||||||
label_modified: modifierad
|
label_modified: modifierad
|
||||||
|
@ -775,10 +779,10 @@ sv:
|
||||||
label_search_titles_only: Sök endast i titlar
|
label_search_titles_only: Sök endast i titlar
|
||||||
label_user_mail_option_all: "För alla händelser i mina projekt"
|
label_user_mail_option_all: "För alla händelser i mina projekt"
|
||||||
label_user_mail_option_selected: "För alla händelser i markerade projekt..."
|
label_user_mail_option_selected: "För alla händelser i markerade projekt..."
|
||||||
label_user_mail_option_none: Inga händelser
|
label_user_mail_option_none: "Inga händelser"
|
||||||
label_user_mail_option_only_my_events: Endast för saker jag bevakar eller är inblandad i
|
label_user_mail_option_only_my_events: "Endast för saker jag bevakar eller är inblandad i"
|
||||||
label_user_mail_option_only_assigned: Endast för saker jag är tilldelad
|
label_user_mail_option_only_assigned: "Endast för saker jag är tilldelad"
|
||||||
label_user_mail_option_only_owner: Endast för saker jag äger
|
label_user_mail_option_only_owner: "Endast för saker jag äger"
|
||||||
label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort"
|
label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort"
|
||||||
label_registration_activation_by_email: kontoaktivering med mail
|
label_registration_activation_by_email: kontoaktivering med mail
|
||||||
label_registration_manual_activation: manuell kontoaktivering
|
label_registration_manual_activation: manuell kontoaktivering
|
||||||
|
@ -825,7 +829,7 @@ sv:
|
||||||
label_display_used_statuses_only: Visa endast status som används av denna ärendetyp
|
label_display_used_statuses_only: Visa endast status som används av denna ärendetyp
|
||||||
label_api_access_key: API-nyckel
|
label_api_access_key: API-nyckel
|
||||||
label_missing_api_access_key: Saknar en API-nyckel
|
label_missing_api_access_key: Saknar en API-nyckel
|
||||||
label_api_access_key_created_on: API-nyckel skapad för %{value} sedan
|
label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan"
|
||||||
label_profile: Profil
|
label_profile: Profil
|
||||||
label_subtask_plural: Underaktiviteter
|
label_subtask_plural: Underaktiviteter
|
||||||
label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras
|
label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras
|
||||||
|
@ -921,6 +925,7 @@ sv:
|
||||||
text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst."
|
text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst."
|
||||||
text_load_default_configuration: Läs in standardkonfiguration
|
text_load_default_configuration: Läs in standardkonfiguration
|
||||||
text_status_changed_by_changeset: "Tilldelad i changeset %{value}."
|
text_status_changed_by_changeset: "Tilldelad i changeset %{value}."
|
||||||
|
text_time_logged_by_changeset: "Tilldelad i changeset %{value}."
|
||||||
text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?'
|
text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?'
|
||||||
text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:'
|
text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:'
|
||||||
text_default_administrator_account_changed: Standardadministratörens konto ändrat
|
text_default_administrator_account_changed: Standardadministratörens konto ändrat
|
||||||
|
@ -934,14 +939,14 @@ sv:
|
||||||
text_user_wrote: "%{value} skrev:"
|
text_user_wrote: "%{value} skrev:"
|
||||||
text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde."
|
text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde."
|
||||||
text_enumeration_category_reassign_to: 'Återtilldela till detta värde:'
|
text_enumeration_category_reassign_to: 'Återtilldela till detta värde:'
|
||||||
text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/email.yml och starta om applikationen för att aktivera dem."
|
text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/configuration.yml och starta om applikationen för att aktivera dem."
|
||||||
text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i både Redmine och versionsarkivet mappas automatiskt."
|
text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i både Redmine och versionsarkivet mappas automatiskt."
|
||||||
text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.'
|
text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.'
|
||||||
text_custom_field_possible_values_info: 'Ett värde per rad'
|
text_custom_field_possible_values_info: 'Ett värde per rad'
|
||||||
text_wiki_page_destroy_question: Denna sida har %{descendants} underliggande sidor. Vad vill du göra?
|
text_wiki_page_destroy_question: "Denna sida har %{descendants} underliggande sidor. Vad vill du göra?"
|
||||||
text_wiki_page_nullify_children: Behåll undersidor som rotsidor
|
text_wiki_page_nullify_children: "Behåll undersidor som rotsidor"
|
||||||
text_wiki_page_destroy_children: Ta bort alla underliggande sidor
|
text_wiki_page_destroy_children: "Ta bort alla underliggande sidor"
|
||||||
text_wiki_page_reassign_children: Flytta undersidor till denna föräldersida
|
text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida"
|
||||||
text_own_membership_delete_confirmation: "Några av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?"
|
text_own_membership_delete_confirmation: "Några av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?"
|
||||||
text_zoom_out: Zooma ut
|
text_zoom_out: Zooma ut
|
||||||
text_zoom_in: Zooma in
|
text_zoom_in: Zooma in
|
||||||
|
@ -972,8 +977,3 @@ sv:
|
||||||
enumeration_doc_categories: Dokumentkategorier
|
enumeration_doc_categories: Dokumentkategorier
|
||||||
enumeration_activities: Aktiviteter (tidsuppföljning)
|
enumeration_activities: Aktiviteter (tidsuppföljning)
|
||||||
enumeration_system_activity: Systemaktivitet
|
enumeration_system_activity: Systemaktivitet
|
||||||
setting_commit_logtime_activity_id: Activity for logged time
|
|
||||||
text_time_logged_by_changeset: Applied in changeset %{value}.
|
|
||||||
setting_commit_logtime_enabled: Enable time logging
|
|
||||||
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
|
|
||||||
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
|
|
||||||
|
|
|
@ -726,7 +726,7 @@ th:
|
||||||
label_generate_key: Generate a key
|
label_generate_key: Generate a key
|
||||||
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
||||||
setting_mail_handler_api_key: API key
|
setting_mail_handler_api_key: API key
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||||
field_parent_title: Parent page
|
field_parent_title: Parent page
|
||||||
label_issue_watchers: Watchers
|
label_issue_watchers: Watchers
|
||||||
setting_commit_logs_encoding: Commit messages encoding
|
setting_commit_logs_encoding: Commit messages encoding
|
||||||
|
|
|
@ -741,7 +741,7 @@ tr:
|
||||||
label_generate_key: Generate a key
|
label_generate_key: Generate a key
|
||||||
setting_sequential_project_identifiers: Generate sequential project identifiers
|
setting_sequential_project_identifiers: Generate sequential project identifiers
|
||||||
field_parent_title: Parent page
|
field_parent_title: Parent page
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||||
label_issue_watchers: Watchers
|
label_issue_watchers: Watchers
|
||||||
mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:"
|
mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:"
|
||||||
|
|
|
@ -725,7 +725,7 @@ uk:
|
||||||
label_generate_key: Generate a key
|
label_generate_key: Generate a key
|
||||||
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
||||||
setting_mail_handler_api_key: API key
|
setting_mail_handler_api_key: API key
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||||
field_parent_title: Parent page
|
field_parent_title: Parent page
|
||||||
label_issue_watchers: Watchers
|
label_issue_watchers: Watchers
|
||||||
setting_commit_logs_encoding: Commit messages encoding
|
setting_commit_logs_encoding: Commit messages encoding
|
||||||
|
|
|
@ -760,7 +760,7 @@ vi:
|
||||||
text_user_wrote: "%{value} wrote:"
|
text_user_wrote: "%{value} wrote:"
|
||||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||||
|
|
||||||
default_role_manager: Điều hành
|
default_role_manager: Điều hành
|
||||||
default_role_developer: Phát triển
|
default_role_developer: Phát triển
|
||||||
|
|
|
@ -979,7 +979,7 @@
|
||||||
text_user_wrote: "%{value} 先前提到:"
|
text_user_wrote: "%{value} 先前提到:"
|
||||||
text_enumeration_destroy_question: "目前有 %{count} 個物件使用此列舉值。"
|
text_enumeration_destroy_question: "目前有 %{count} 個物件使用此列舉值。"
|
||||||
text_enumeration_category_reassign_to: '重新設定其列舉值為:'
|
text_enumeration_category_reassign_to: '重新設定其列舉值為:'
|
||||||
text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/email.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。"
|
text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/configuration.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。"
|
||||||
text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與版本庫使用者之對應關係。\n版本庫中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。"
|
text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與版本庫使用者之對應關係。\n版本庫中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。"
|
||||||
text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值'
|
text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值'
|
||||||
text_custom_field_possible_values_info: '一列輸入一個值'
|
text_custom_field_possible_values_info: '一列輸入一個值'
|
||||||
|
|
|
@ -869,7 +869,7 @@ zh:
|
||||||
text_user_wrote: "%{value} 写到:"
|
text_user_wrote: "%{value} 写到:"
|
||||||
text_enumeration_category_reassign_to: '将它们关联到新的枚举值:'
|
text_enumeration_category_reassign_to: '将它们关联到新的枚举值:'
|
||||||
text_enumeration_destroy_question: "%{count} 个对象被关联到了这个枚举值。"
|
text_enumeration_destroy_question: "%{count} 个对象被关联到了这个枚举值。"
|
||||||
text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/email.yml中配置您的SMTP服务器信息并重新启动以使其生效。"
|
text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/configuration.yml中配置您的SMTP服务器信息并重新启动以使其生效。"
|
||||||
text_repository_usernames_mapping: "选择或更新与版本库中的用户名对应的Redmine用户。\n版本库中与Redmine中的同名用户将被自动对应。"
|
text_repository_usernames_mapping: "选择或更新与版本库中的用户名对应的Redmine用户。\n版本库中与Redmine中的同名用户将被自动对应。"
|
||||||
text_diff_truncated: '... 差别内容超过了可显示的最大行数并已被截断'
|
text_diff_truncated: '... 差别内容超过了可显示的最大行数并已被截断'
|
||||||
text_custom_field_possible_values_info: '每项数值一行'
|
text_custom_field_possible_values_info: '每项数值一行'
|
||||||
|
|
|
@ -4,6 +4,29 @@ Redmine - project management software
|
||||||
Copyright (C) 2006-2011 Jean-Philippe Lang
|
Copyright (C) 2006-2011 Jean-Philippe Lang
|
||||||
http://www.redmine.org/
|
http://www.redmine.org/
|
||||||
|
|
||||||
|
== 2011-01-30 v1.1.1
|
||||||
|
|
||||||
|
* Defect #4899: Redmine fails to list files for darcs repository
|
||||||
|
* Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql
|
||||||
|
* Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades
|
||||||
|
* Defect #7258: Automatic spent time logging does not work properly with SQLite3
|
||||||
|
* Defect #7259: Released 1.1.0 uses "devel" label inside admin information
|
||||||
|
* Defect #7265: "Loading..." icon does not disappear after add project member
|
||||||
|
* Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale
|
||||||
|
* Defect #7274: CSV value separator in dutch locale
|
||||||
|
* Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list
|
||||||
|
* Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0
|
||||||
|
* Defect #7307: HTTP 500 error on query for empty revision
|
||||||
|
* Defect #7313: Label not translated in french in Settings/Email Notification tab
|
||||||
|
* Defect #7329: <code class="javascript"> with long strings may hang server
|
||||||
|
* Defect #7337: My page french translation
|
||||||
|
* Defect #7348: French Translation of "Connection"
|
||||||
|
* Defect #7385: Error when viewing an issue which was related to a deleted subtask
|
||||||
|
* Defect #7386: NoMethodError on pdf export
|
||||||
|
* Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4
|
||||||
|
* Defect #7421: no email sent with 'Notifiy for any event on the selected projects only'
|
||||||
|
* Feature #5344: Update to latest CodeRay 0.9.x
|
||||||
|
|
||||||
== 2011-01-09 v1.1.0
|
== 2011-01-09 v1.1.0
|
||||||
|
|
||||||
* Defect #2038: Italics in wiki headers show-up wrong in the toc
|
* Defect #2038: Italics in wiki headers show-up wrong in the toc
|
||||||
|
|
|
@ -80,8 +80,8 @@ Optional:
|
||||||
|
|
||||||
== SMTP server Configuration
|
== SMTP server Configuration
|
||||||
|
|
||||||
Copy config/email.yml.example to config/email.yml and edit this file
|
Copy config/configuration.yml.example to config/configuration.yml and
|
||||||
to adjust your SMTP settings.
|
edit this file to adjust your SMTP settings.
|
||||||
Do not forget to restart the application after any change to this file.
|
Do not forget to restart the application after any change to this file.
|
||||||
|
|
||||||
Please do not enter your SMTP settings in environment.rb.
|
Please do not enter your SMTP settings in environment.rb.
|
||||||
|
|
|
@ -10,8 +10,10 @@ http://www.redmine.org/
|
||||||
1. Uncompress the program archive in a new directory
|
1. Uncompress the program archive in a new directory
|
||||||
|
|
||||||
2. Copy your database settings (RAILS_ROOT/config/database.yml)
|
2. Copy your database settings (RAILS_ROOT/config/database.yml)
|
||||||
and SMTP settings (RAILS_ROOT/config/email.yml) into the new
|
and your configuration file (RAILS_ROOT/config/configuration.yml)
|
||||||
config directory
|
into the new config directory
|
||||||
|
Note: before Redmine 1.2, SMTP configuration was stored in
|
||||||
|
config/email.yml. It should now be stored in config/configuration.yml.
|
||||||
|
|
||||||
3. Copy the RAILS_ROOT/files directory content into your new installation
|
3. Copy the RAILS_ROOT/files directory content into your new installation
|
||||||
This directory contains all the attached files.
|
This directory contains all the attached files.
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
# Redmine - project management software
|
||||||
|
# Copyright (C) 2006-2011 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 Redmine
|
||||||
|
module Configuration
|
||||||
|
|
||||||
|
# Configuration default values
|
||||||
|
@defaults = {
|
||||||
|
'email_delivery' => nil
|
||||||
|
}
|
||||||
|
|
||||||
|
@config = nil
|
||||||
|
|
||||||
|
class << self
|
||||||
|
# Loads the Redmine configuration file
|
||||||
|
# Valid options:
|
||||||
|
# * <tt>:file</tt>: the configuration file to load (default: config/configuration.yml)
|
||||||
|
# * <tt>:env</tt>: the environment to load the configuration for (default: Rails.env)
|
||||||
|
def load(options={})
|
||||||
|
filename = options[:file] || File.join(Rails.root, 'config', 'configuration.yml')
|
||||||
|
env = options[:env] || Rails.env
|
||||||
|
|
||||||
|
@config = @defaults.dup
|
||||||
|
|
||||||
|
load_deprecated_email_configuration(env)
|
||||||
|
if File.file?(filename)
|
||||||
|
@config.merge!(load_from_yaml(filename, env))
|
||||||
|
end
|
||||||
|
|
||||||
|
# Compatibility mode for those who copy email.yml over configuration.yml
|
||||||
|
%w(delivery_method smtp_settings sendmail_settings).each do |key|
|
||||||
|
if value = @config.delete(key)
|
||||||
|
@config['email_delivery'] ||= {}
|
||||||
|
@config['email_delivery'][key] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if @config['email_delivery']
|
||||||
|
ActionMailer::Base.perform_deliveries = true
|
||||||
|
@config['email_delivery'].each do |k, v|
|
||||||
|
v.symbolize_keys! if v.respond_to?(:symbolize_keys!)
|
||||||
|
ActionMailer::Base.send("#{k}=", v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@config
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns a configuration setting
|
||||||
|
def [](name)
|
||||||
|
load unless @config
|
||||||
|
@config[name]
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def load_from_yaml(filename, env)
|
||||||
|
yaml = YAML::load_file(filename)
|
||||||
|
conf = {}
|
||||||
|
if yaml.is_a?(Hash)
|
||||||
|
if yaml['default']
|
||||||
|
conf.merge!(yaml['default'])
|
||||||
|
end
|
||||||
|
if yaml[env]
|
||||||
|
conf.merge!(yaml[env])
|
||||||
|
end
|
||||||
|
else
|
||||||
|
$stderr.puts "#{filename} is not a valid Redmine configuration file"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
conf
|
||||||
|
end
|
||||||
|
|
||||||
|
def load_deprecated_email_configuration(env)
|
||||||
|
deprecated_email_conf = File.join(Rails.root, 'config', 'email.yml')
|
||||||
|
if File.file?(deprecated_email_conf)
|
||||||
|
warn "Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting."
|
||||||
|
@config.merge!({'email_delivery' => load_from_yaml(deprecated_email_conf, env)})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -255,7 +255,7 @@ module Redmine
|
||||||
pdf.SetFontStyle('B',9)
|
pdf.SetFontStyle('B',9)
|
||||||
pdf.Cell(35,5, l(:field_description) + ":")
|
pdf.Cell(35,5, l(:field_description) + ":")
|
||||||
pdf.SetFontStyle('',9)
|
pdf.SetFontStyle('',9)
|
||||||
pdf.MultiCell(155,5, issue.description,"BR")
|
pdf.MultiCell(155,5, issue.description.to_s,"BR")
|
||||||
|
|
||||||
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
|
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
|
||||||
pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
|
pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
|
||||||
|
@ -271,7 +271,7 @@ module Redmine
|
||||||
pdf.Ln
|
pdf.Ln
|
||||||
unless changeset.comments.blank?
|
unless changeset.comments.blank?
|
||||||
pdf.SetFontStyle('',8)
|
pdf.SetFontStyle('',8)
|
||||||
pdf.MultiCell(190,5, changeset.comments)
|
pdf.MultiCell(190,5, changeset.comments.to_s)
|
||||||
end
|
end
|
||||||
pdf.Ln
|
pdf.Ln
|
||||||
end
|
end
|
||||||
|
@ -291,7 +291,7 @@ module Redmine
|
||||||
end
|
end
|
||||||
if journal.notes?
|
if journal.notes?
|
||||||
pdf.SetFontStyle('',8)
|
pdf.SetFontStyle('',8)
|
||||||
pdf.MultiCell(190,5, journal.notes)
|
pdf.MultiCell(190,5, journal.notes.to_s)
|
||||||
end
|
end
|
||||||
pdf.Ln
|
pdf.Ln
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,30 +27,36 @@ module Redmine
|
||||||
delete_unprocessed = (pop_options[:delete_unprocessed].to_s == '1')
|
delete_unprocessed = (pop_options[:delete_unprocessed].to_s == '1')
|
||||||
|
|
||||||
pop = Net::POP3.APOP(apop).new(host,port)
|
pop = Net::POP3.APOP(apop).new(host,port)
|
||||||
puts "Connecting to #{host}..."
|
logger.debug "Connecting to #{host}..." if logger && logger.debug?
|
||||||
pop.start(pop_options[:username], pop_options[:password]) do |pop_session|
|
pop.start(pop_options[:username], pop_options[:password]) do |pop_session|
|
||||||
if pop_session.mails.empty?
|
if pop_session.mails.empty?
|
||||||
puts "No email to process"
|
logger.debug "No email to process" if logger && logger.debug?
|
||||||
else
|
else
|
||||||
puts "#{pop_session.mails.size} email(s) to process..."
|
logger.debug "#{pop_session.mails.size} email(s) to process..." if logger && logger.debug?
|
||||||
pop_session.each_mail do |msg|
|
pop_session.each_mail do |msg|
|
||||||
message = msg.pop
|
message = msg.pop
|
||||||
message_id = (message =~ /^Message-ID: (.*)/ ? $1 : '').strip
|
message_id = (message =~ /^Message-ID: (.*)/ ? $1 : '').strip
|
||||||
if MailHandler.receive(message, options)
|
if MailHandler.receive(message, options)
|
||||||
msg.delete
|
msg.delete
|
||||||
puts "--> Message #{message_id} processed and deleted from the server"
|
logger.debug "--> Message #{message_id} processed and deleted from the server" if logger && logger.debug?
|
||||||
else
|
else
|
||||||
if delete_unprocessed
|
if delete_unprocessed
|
||||||
msg.delete
|
msg.delete
|
||||||
puts "--> Message #{message_id} NOT processed and deleted from the server"
|
logger.debug "--> Message #{message_id} NOT processed and deleted from the server" if logger && logger.debug?
|
||||||
else
|
else
|
||||||
puts "--> Message #{message_id} NOT processed and left on the server"
|
logger.debug "--> Message #{message_id} NOT processed and left on the server" if logger && logger.debug?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def logger
|
||||||
|
RAILS_DEFAULT_LOGGER
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,7 +23,7 @@ module Redmine
|
||||||
class BazaarAdapter < AbstractAdapter
|
class BazaarAdapter < AbstractAdapter
|
||||||
|
|
||||||
# Bazaar executable name
|
# Bazaar executable name
|
||||||
BZR_BIN = "bzr"
|
BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr"
|
||||||
|
|
||||||
# Get info about the repository
|
# Get info about the repository
|
||||||
def info
|
def info
|
||||||
|
|
|
@ -23,7 +23,7 @@ module Redmine
|
||||||
class CvsAdapter < AbstractAdapter
|
class CvsAdapter < AbstractAdapter
|
||||||
|
|
||||||
# CVS executable name
|
# CVS executable name
|
||||||
CVS_BIN = "cvs"
|
CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs"
|
||||||
|
|
||||||
# Guidelines for the input:
|
# Guidelines for the input:
|
||||||
# url -> the project-path, relative to the cvsroot (eg. module name)
|
# url -> the project-path, relative to the cvsroot (eg. module name)
|
||||||
|
@ -109,7 +109,7 @@ module Redmine
|
||||||
|
|
||||||
path_with_project="#{url}#{with_leading_slash(path)}"
|
path_with_project="#{url}#{with_leading_slash(path)}"
|
||||||
cmd = "#{CVS_BIN} -d #{shell_quote root_url} rlog"
|
cmd = "#{CVS_BIN} -d #{shell_quote root_url} rlog"
|
||||||
cmd << " -d\">#{time_to_cvstime(identifier_from)}\"" if identifier_from
|
cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from
|
||||||
cmd << " #{shell_quote path_with_project}"
|
cmd << " #{shell_quote path_with_project}"
|
||||||
shellout(cmd) do |io|
|
shellout(cmd) do |io|
|
||||||
state="entry_start"
|
state="entry_start"
|
||||||
|
@ -290,6 +290,12 @@ module Redmine
|
||||||
end
|
end
|
||||||
return time.strftime("%Y-%m-%d %H:%M:%S")
|
return time.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def time_to_cvstime_rlog(time)
|
||||||
|
return nil if time.nil?
|
||||||
|
t1 = time.clone.localtime
|
||||||
|
return t1.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
end
|
||||||
|
|
||||||
def normalize_cvs_path(path)
|
def normalize_cvs_path(path)
|
||||||
normalize_path(path.gsub(/Attic\//,''))
|
normalize_path(path.gsub(/Attic\//,''))
|
||||||
|
|
|
@ -23,7 +23,7 @@ module Redmine
|
||||||
module Adapters
|
module Adapters
|
||||||
class DarcsAdapter < AbstractAdapter
|
class DarcsAdapter < AbstractAdapter
|
||||||
# Darcs executable name
|
# Darcs executable name
|
||||||
DARCS_BIN = "darcs"
|
DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs"
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def client_version
|
def client_version
|
||||||
|
@ -31,16 +31,14 @@ module Redmine
|
||||||
end
|
end
|
||||||
|
|
||||||
def darcs_binary_version
|
def darcs_binary_version
|
||||||
cmd = "#{DARCS_BIN} --version"
|
darcsversion = darcs_binary_version_from_command_line
|
||||||
version = nil
|
if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)})
|
||||||
shellout(cmd) do |io|
|
m[2].scan(%r{\d+}).collect(&:to_i)
|
||||||
# Read darcs version in first returned line
|
|
||||||
if m = io.gets.match(%r{((\d+\.)+\d+)})
|
|
||||||
version = m[0].scan(%r{\d+}).collect(&:to_i)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
return nil if $? && $?.exitstatus != 0
|
end
|
||||||
version
|
|
||||||
|
def darcs_binary_version_from_command_line
|
||||||
|
shellout("#{DARCS_BIN} --version") { |io| io.read }.to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -64,7 +62,9 @@ module Redmine
|
||||||
# or nil if the given path doesn't exist in the repository
|
# or nil if the given path doesn't exist in the repository
|
||||||
def entries(path=nil, identifier=nil)
|
def entries(path=nil, identifier=nil)
|
||||||
path_prefix = (path.blank? ? '' : "#{path}/")
|
path_prefix = (path.blank? ? '' : "#{path}/")
|
||||||
path = '.' if path.blank?
|
if path.blank?
|
||||||
|
path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' )
|
||||||
|
end
|
||||||
entries = Entries.new
|
entries = Entries.new
|
||||||
cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --xml-output"
|
cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --xml-output"
|
||||||
cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier
|
cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier
|
||||||
|
@ -167,9 +167,38 @@ module Redmine
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_paths_for_patch(hash)
|
||||||
|
paths = get_paths_for_patch_raw(hash)
|
||||||
|
if self.class.client_version_above?([2, 4])
|
||||||
|
orig_paths = paths
|
||||||
|
paths = []
|
||||||
|
add_paths = []
|
||||||
|
add_paths_name = []
|
||||||
|
mod_paths = []
|
||||||
|
other_paths = []
|
||||||
|
orig_paths.each do |path|
|
||||||
|
if path[:action] == 'A'
|
||||||
|
add_paths << path
|
||||||
|
add_paths_name << path[:path]
|
||||||
|
elsif path[:action] == 'M'
|
||||||
|
mod_paths << path
|
||||||
|
else
|
||||||
|
other_paths << path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
add_paths_name.each do |add_path|
|
||||||
|
mod_paths.delete_if { |m| m[:path] == add_path }
|
||||||
|
end
|
||||||
|
paths.concat add_paths
|
||||||
|
paths.concat mod_paths
|
||||||
|
paths.concat other_paths
|
||||||
|
end
|
||||||
|
paths
|
||||||
|
end
|
||||||
|
|
||||||
# Retrieve changed paths for a single patch
|
# Retrieve changed paths for a single patch
|
||||||
def get_paths_for_patch(hash)
|
def get_paths_for_patch_raw(hash)
|
||||||
cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output"
|
cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output"
|
||||||
cmd << " --match #{shell_quote("hash #{hash}")} "
|
cmd << " --match #{shell_quote("hash #{hash}")} "
|
||||||
paths = []
|
paths = []
|
||||||
|
|
|
@ -22,7 +22,7 @@ module Redmine
|
||||||
module Adapters
|
module Adapters
|
||||||
class GitAdapter < AbstractAdapter
|
class GitAdapter < AbstractAdapter
|
||||||
# Git executable name
|
# Git executable name
|
||||||
GIT_BIN = "git"
|
GIT_BIN = Redmine::Configuration['scm_git_command'] || "git"
|
||||||
|
|
||||||
def info
|
def info
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -24,7 +24,7 @@ module Redmine
|
||||||
class MercurialAdapter < AbstractAdapter
|
class MercurialAdapter < AbstractAdapter
|
||||||
|
|
||||||
# Mercurial executable name
|
# Mercurial executable name
|
||||||
HG_BIN = "hg"
|
HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg"
|
||||||
TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial"
|
TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial"
|
||||||
TEMPLATE_NAME = "hg-template"
|
TEMPLATE_NAME = "hg-template"
|
||||||
TEMPLATE_EXTENSION = "tmpl"
|
TEMPLATE_EXTENSION = "tmpl"
|
||||||
|
|
|
@ -24,7 +24,7 @@ module Redmine
|
||||||
class SubversionAdapter < AbstractAdapter
|
class SubversionAdapter < AbstractAdapter
|
||||||
|
|
||||||
# SVN executable name
|
# SVN executable name
|
||||||
SVN_BIN = "svn"
|
SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn"
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def client_version
|
def client_version
|
||||||
|
|
|
@ -4,7 +4,7 @@ module Redmine
|
||||||
module VERSION #:nodoc:
|
module VERSION #:nodoc:
|
||||||
MAJOR = 1
|
MAJOR = 1
|
||||||
MINOR = 1
|
MINOR = 1
|
||||||
TINY = 0
|
TINY = 1
|
||||||
|
|
||||||
# Branch values:
|
# Branch values:
|
||||||
# * official release: nil
|
# * official release: nil
|
||||||
|
|
|
@ -287,7 +287,7 @@ task :migrate_from_mantis => :environment do
|
||||||
project.versions.each do |version|
|
project.versions.each do |version|
|
||||||
v = Version.new :name => encode(version.version),
|
v = Version.new :name => encode(version.version),
|
||||||
:description => encode(version.description),
|
:description => encode(version.description),
|
||||||
:effective_date => version.date_order.to_date
|
:effective_date => (version.date_order ? version.date_order.to_date : nil)
|
||||||
v.project = p
|
v.project = p
|
||||||
v.save
|
v.save
|
||||||
versions_map[version.id] = v.id
|
versions_map[version.id] = v.id
|
||||||
|
|
|
@ -46,7 +46,9 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li>Link to an issue: <strong>#124</strong> (displays <del><a href="#" class="issue" title="bulk edit doesn't change the category or fixed version properties (Closed)">#124</a></del>, link is striked-through if the issue is closed)</li>
|
<li>Link to an issue: <strong>#124</strong> (displays <del><a href="#" class="issue" title="bulk edit doesn't change the category or fixed version properties (Closed)">#124</a></del>, link is striked-through if the issue is closed)</li>
|
||||||
<li>Link to a changeset: <strong>r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">r758</a>)</li>
|
<li>Link to a changeset: <strong>r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">r758</a>)</li>
|
||||||
<li>Link to a changeset with a non-numeric hash: <strong>commit:c6f4d0fd</strong> (displays c6f4d0fd). Added in <a href="#" class="changeset" title="Merged Git support branch (r1200 to r1226).">r1236</a>.</li>
|
<li>Link to a changeset with a non-numeric hash: <strong>commit:c6f4d0fd</strong> (displays <a href="#" class="changeset">c6f4d0fd</a>).</li>
|
||||||
|
<li>Link to a changeset of another project: <strong>sandbox:r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">sanbox:r758</a>)</li>
|
||||||
|
<li>Link to a changeset with a non-numeric hash: <strong>sandbox:c6f4d0fd</strong> (displays <a href="#" class="changeset">sandbox:c6f4d0fd</a>).</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>Wiki links:</p>
|
<p>Wiki links:</p>
|
||||||
|
@ -74,7 +76,7 @@
|
||||||
<li><strong>document#17</strong> (link to document with id 17)</li>
|
<li><strong>document#17</strong> (link to document with id 17)</li>
|
||||||
<li><strong>document:Greetings</strong> (link to the document with title "Greetings")</li>
|
<li><strong>document:Greetings</strong> (link to the document with title "Greetings")</li>
|
||||||
<li><strong>document:"Some document"</strong> (double quotes can be used when document title contains spaces)</li>
|
<li><strong>document:"Some document"</strong> (double quotes can be used when document title contains spaces)</li>
|
||||||
<li><strong>document:some_project:"Some document"</strong> (link to a document with title "Some document" in other project "some_project")
|
<li><strong>sandbox:document:"Some document"</strong> (link to a document with title "Some document" in other project "sandbox")</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -84,6 +86,7 @@
|
||||||
<li><strong>version#3</strong> (link to version with id 3)</li>
|
<li><strong>version#3</strong> (link to version with id 3)</li>
|
||||||
<li><strong>version:1.0.0</strong> (link to version named "1.0.0")</li>
|
<li><strong>version:1.0.0</strong> (link to version named "1.0.0")</li>
|
||||||
<li><strong>version:"1.0 beta 2"</strong></li>
|
<li><strong>version:"1.0 beta 2"</strong></li>
|
||||||
|
<li><strong>sandbox:version:1.0.0</strong> (link to version "1.0.0" in the project "sandbox")</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -103,7 +106,9 @@
|
||||||
<li><strong>source:some/file#L120</strong> (link to line 120 of the file)</li>
|
<li><strong>source:some/file#L120</strong> (link to line 120 of the file)</li>
|
||||||
<li><strong>source:some/file@52#L120</strong> (link to line 120 of the file's revision 52)</li>
|
<li><strong>source:some/file@52#L120</strong> (link to line 120 of the file's revision 52)</li>
|
||||||
<li><strong>source:"some file@52#L120"</strong> (use double quotes when the URL contains spaces</li>
|
<li><strong>source:"some file@52#L120"</strong> (use double quotes when the URL contains spaces</li>
|
||||||
<li><strong>export:some/file</strong> (force the download of the file)</li>
|
<li><strong>export:some/file</strong> (force the download of the file)</li>
|
||||||
|
<li><strong>sandbox:source:some/file</strong> (link to the file located at /some/file in the repository of the project "sandbox")</li>
|
||||||
|
<li><strong>sandbox:export:some/file</strong> (force the download of the file)</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
default:
|
||||||
|
somesetting: foo
|
||||||
|
|
||||||
|
production:
|
||||||
|
|
||||||
|
development:
|
||||||
|
|
||||||
|
test:
|
|
@ -0,0 +1,7 @@
|
||||||
|
default:
|
||||||
|
|
||||||
|
production:
|
||||||
|
|
||||||
|
development:
|
||||||
|
|
||||||
|
test:
|
|
@ -0,0 +1,8 @@
|
||||||
|
default:
|
||||||
|
|
||||||
|
production:
|
||||||
|
|
||||||
|
development:
|
||||||
|
|
||||||
|
test:
|
||||||
|
somesetting: foo
|
|
@ -0,0 +1,9 @@
|
||||||
|
default:
|
||||||
|
somesetting: foo
|
||||||
|
|
||||||
|
production:
|
||||||
|
|
||||||
|
development:
|
||||||
|
|
||||||
|
test:
|
||||||
|
somesetting: bar
|
|
@ -33,6 +33,19 @@ class IssueRelationsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_new_xhr
|
||||||
|
assert_difference 'IssueRelation.count' do
|
||||||
|
@request.session[:user_id] = 3
|
||||||
|
xhr :post, :new,
|
||||||
|
:issue_id => 3,
|
||||||
|
:relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
|
||||||
|
assert_select_rjs 'relations' do
|
||||||
|
assert_select 'table', 1
|
||||||
|
assert_select 'tr', 2 # relations
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_new_should_accept_id_with_hash
|
def test_new_should_accept_id_with_hash
|
||||||
assert_difference 'IssueRelation.count' do
|
assert_difference 'IssueRelation.count' do
|
||||||
@request.session[:user_id] = 3
|
@request.session[:user_id] = 3
|
||||||
|
@ -68,4 +81,20 @@ class IssueRelationsControllerTest < ActionController::TestCase
|
||||||
post :destroy, :id => '2', :issue_id => '3'
|
post :destroy, :id => '2', :issue_id => '3'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_destroy_xhr
|
||||||
|
IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r|
|
||||||
|
r.issue_from_id = 3
|
||||||
|
r.issue_to_id = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_difference 'IssueRelation.count', -1 do
|
||||||
|
@request.session[:user_id] = 3
|
||||||
|
xhr :post, :destroy, :id => '2', :issue_id => '3'
|
||||||
|
assert_select_rjs 'relations' do
|
||||||
|
assert_select 'table', 1
|
||||||
|
assert_select 'tr', 1 # relation left
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -29,7 +29,8 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
|
REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
|
||||||
# CVS module
|
# CVS module
|
||||||
MODULE_NAME = 'test'
|
MODULE_NAME = 'test'
|
||||||
|
PRJ_ID = 3
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@controller = RepositoriesController.new
|
@controller = RepositoriesController.new
|
||||||
@request = ActionController::TestRequest.new
|
@request = ActionController::TestRequest.new
|
||||||
|
@ -37,14 +38,18 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
Setting.default_language = 'en'
|
Setting.default_language = 'en'
|
||||||
User.current = nil
|
User.current = nil
|
||||||
|
|
||||||
@project = Project.find(1)
|
@project = Project.find(PRJ_ID)
|
||||||
@project.repository = Repository::Cvs.create(:root_url => REPOSITORY_PATH,
|
@repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
|
||||||
:url => MODULE_NAME)
|
:root_url => REPOSITORY_PATH,
|
||||||
|
:url => MODULE_NAME)
|
||||||
|
assert @repository
|
||||||
end
|
end
|
||||||
|
|
||||||
if File.directory?(REPOSITORY_PATH)
|
if File.directory?(REPOSITORY_PATH)
|
||||||
def test_show
|
def test_show
|
||||||
get :show, :id => 1
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :show, :id => PRJ_ID
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'show'
|
assert_template 'show'
|
||||||
assert_not_nil assigns(:entries)
|
assert_not_nil assigns(:entries)
|
||||||
|
@ -52,7 +57,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_browse_root
|
def test_browse_root
|
||||||
get :show, :id => 1
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :show, :id => PRJ_ID
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'show'
|
assert_template 'show'
|
||||||
assert_not_nil assigns(:entries)
|
assert_not_nil assigns(:entries)
|
||||||
|
@ -66,7 +73,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_browse_directory
|
def test_browse_directory
|
||||||
get :show, :id => 1, :path => ['images']
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :show, :id => PRJ_ID, :path => ['images']
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'show'
|
assert_template 'show'
|
||||||
assert_not_nil assigns(:entries)
|
assert_not_nil assigns(:entries)
|
||||||
|
@ -78,8 +87,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_browse_at_given_revision
|
def test_browse_at_given_revision
|
||||||
Project.find(1).repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
get :show, :id => 1, :path => ['images'], :rev => 1
|
@repository.reload
|
||||||
|
get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'show'
|
assert_template 'show'
|
||||||
assert_not_nil assigns(:entries)
|
assert_not_nil assigns(:entries)
|
||||||
|
@ -87,7 +97,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_entry
|
def test_entry
|
||||||
get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb']
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'entry'
|
assert_template 'entry'
|
||||||
assert_no_tag :tag => 'td', :attributes => { :class => /line-code/},
|
assert_no_tag :tag => 'td', :attributes => { :class => /line-code/},
|
||||||
|
@ -96,8 +108,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
|
|
||||||
def test_entry_at_given_revision
|
def test_entry_at_given_revision
|
||||||
# changesets must be loaded
|
# changesets must be loaded
|
||||||
Project.find(1).repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :rev => 2
|
@repository.reload
|
||||||
|
get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'entry'
|
assert_template 'entry'
|
||||||
# this line was removed in r3
|
# this line was removed in r3
|
||||||
|
@ -106,18 +119,24 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_entry_not_found
|
def test_entry_not_found
|
||||||
get :entry, :id => 1, :path => ['sources', 'zzz.c']
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
|
||||||
assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
|
assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
|
||||||
:content => /The entry or revision was not found in the repository/
|
:content => /The entry or revision was not found in the repository/
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_entry_download
|
def test_entry_download
|
||||||
get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
|
||||||
assert_response :success
|
assert_response :success
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_directory_entry
|
def test_directory_entry
|
||||||
get :entry, :id => 1, :path => ['sources']
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :entry, :id => PRJ_ID, :path => ['sources']
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'show'
|
assert_template 'show'
|
||||||
assert_not_nil assigns(:entry)
|
assert_not_nil assigns(:entry)
|
||||||
|
@ -125,8 +144,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_diff
|
def test_diff
|
||||||
Project.find(1).repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
get :diff, :id => 1, :rev => 3, :type => 'inline'
|
@repository.reload
|
||||||
|
get :diff, :id => PRJ_ID, :rev => 3, :type => 'inline'
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'diff'
|
assert_template 'diff'
|
||||||
assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
|
assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
|
||||||
|
@ -136,8 +156,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_annotate
|
def test_annotate
|
||||||
Project.find(1).repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
get :annotate, :id => 1, :path => ['sources', 'watchers_controller.rb']
|
@repository.reload
|
||||||
|
get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'annotate'
|
assert_template 'annotate'
|
||||||
# 1.1 line
|
# 1.1 line
|
||||||
|
|
|
@ -170,6 +170,15 @@ class RepositoriesGitControllerTest < ActionController::TestCase
|
||||||
:sibling => { :tag => 'td', :content => /watcher =/ }
|
:sibling => { :tag => 'td', :content => /watcher =/ }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_annotate_at_given_revision
|
||||||
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
get :annotate, :id => 3, :rev => 'deff7', :path => ['sources', 'watchers_controller.rb']
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'annotate'
|
||||||
|
assert_tag :tag => 'h2', :content => /@ deff712f/
|
||||||
|
end
|
||||||
|
|
||||||
def test_annotate_binary_file
|
def test_annotate_binary_file
|
||||||
get :annotate, :id => 3, :path => ['images', 'edit.png']
|
get :annotate, :id => 3, :path => ['images', 'edit.png']
|
||||||
assert_response 500
|
assert_response 500
|
||||||
|
|
|
@ -196,6 +196,17 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
|
||||||
:sibling => { :tag => 'td', :content => /watcher =/ }
|
:sibling => { :tag => 'td', :content => /watcher =/ }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_annotate_at_given_revision
|
||||||
|
@repository.fetch_changesets
|
||||||
|
@repository.reload
|
||||||
|
[2, '400bb8672109', '400', 400].each do |r1|
|
||||||
|
get :annotate, :id => 3, :rev => r1, :path => ['sources', 'watchers_controller.rb']
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'annotate'
|
||||||
|
assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_empty_revision
|
def test_empty_revision
|
||||||
@repository.fetch_changesets
|
@repository.fetch_changesets
|
||||||
@repository.reload
|
@repository.reload
|
||||||
|
|
|
@ -228,6 +228,13 @@ class RepositoriesSubversionControllerTest < ActionController::TestCase
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'annotate'
|
assert_template 'annotate'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_annotate_at_given_revision
|
||||||
|
get :annotate, :id => 1, :rev => 8, :path => ['subversion_test', 'helloworld.c']
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'annotate'
|
||||||
|
assert_tag :tag => 'h2', :content => /@ 8/
|
||||||
|
end
|
||||||
else
|
else
|
||||||
puts "Subversion test repository NOT FOUND. Skipping functional tests !!!"
|
puts "Subversion test repository NOT FOUND. Skipping functional tests !!!"
|
||||||
def test_fake; assert true end
|
def test_fake; assert true end
|
||||||
|
|
|
@ -200,7 +200,7 @@ RAW
|
||||||
'export:/some/file' => link_to('export:/some/file', source_url.merge(:format => 'raw'), :class => 'source download'),
|
'export:/some/file' => link_to('export:/some/file', source_url.merge(:format => 'raw'), :class => 'source download'),
|
||||||
# message
|
# message
|
||||||
'message#4' => link_to('Post 2', message_url, :class => 'message'),
|
'message#4' => link_to('Post 2', message_url, :class => 'message'),
|
||||||
'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5'), :class => 'message'),
|
'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5', :r => 5), :class => 'message'),
|
||||||
# project
|
# project
|
||||||
'project#3' => link_to('eCookbook Subproject 1', project_url, :class => 'project'),
|
'project#3' => link_to('eCookbook Subproject 1', project_url, :class => 'project'),
|
||||||
'project:subproject1' => link_to('eCookbook Subproject 1', project_url, :class => 'project'),
|
'project:subproject1' => link_to('eCookbook Subproject 1', project_url, :class => 'project'),
|
||||||
|
@ -224,6 +224,35 @@ RAW
|
||||||
@project = Project.find(1)
|
@project = Project.find(1)
|
||||||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" }
|
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_cross_project_redmine_links
|
||||||
|
source_link = link_to('ecookbook:source:/some/file', {:controller => 'repositories', :action => 'entry', :id => 'ecookbook', :path => ['some', 'file']},
|
||||||
|
:class => 'source')
|
||||||
|
|
||||||
|
changeset_link = link_to('ecookbook:r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2},
|
||||||
|
:class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3')
|
||||||
|
|
||||||
|
to_test = {
|
||||||
|
# documents
|
||||||
|
'document:"Test document"' => 'document:"Test document"',
|
||||||
|
'ecookbook:document:"Test document"' => '<a href="/documents/1" class="document">Test document</a>',
|
||||||
|
'invalid:document:"Test document"' => 'invalid:document:"Test document"',
|
||||||
|
# versions
|
||||||
|
'version:"1.0"' => 'version:"1.0"',
|
||||||
|
'ecookbook:version:"1.0"' => '<a href="/versions/show/2" class="version">1.0</a>',
|
||||||
|
'invalid:version:"1.0"' => 'invalid:version:"1.0"',
|
||||||
|
# changeset
|
||||||
|
'r2' => 'r2',
|
||||||
|
'ecookbook:r2' => changeset_link,
|
||||||
|
'invalid:r2' => 'invalid:r2',
|
||||||
|
# source
|
||||||
|
'source:/some/file' => 'source:/some/file',
|
||||||
|
'ecookbook:source:/some/file' => source_link,
|
||||||
|
'invalid:source:/some/file' => 'invalid:source:/some/file',
|
||||||
|
}
|
||||||
|
@project = Project.find(3)
|
||||||
|
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" }
|
||||||
|
end
|
||||||
|
|
||||||
def test_redmine_links_git_commit
|
def test_redmine_links_git_commit
|
||||||
changeset_link = link_to('abcd',
|
changeset_link = link_to('abcd',
|
||||||
|
|
|
@ -202,7 +202,19 @@ class IssueNestedSetTest < ActiveSupport::TestCase
|
||||||
issue2 = create_issue!
|
issue2 = create_issue!
|
||||||
issue3 = create_issue!(:parent_issue_id => issue2.id)
|
issue3 = create_issue!(:parent_issue_id => issue2.id)
|
||||||
issue4 = create_issue!(:parent_issue_id => issue1.id)
|
issue4 = create_issue!(:parent_issue_id => issue1.id)
|
||||||
issue2.reload.destroy
|
|
||||||
|
issue3.init_journal(User.find(2))
|
||||||
|
issue3.subject = 'child with journal'
|
||||||
|
issue3.save!
|
||||||
|
|
||||||
|
assert_difference 'Issue.count', -2 do
|
||||||
|
assert_difference 'Journal.count', -1 do
|
||||||
|
assert_difference 'JournalDetail.count', -1 do
|
||||||
|
Issue.find(issue2.id).destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
issue1.reload
|
issue1.reload
|
||||||
issue4.reload
|
issue4.reload
|
||||||
assert !Issue.exists?(issue2.id)
|
assert !Issue.exists?(issue2.id)
|
||||||
|
@ -211,6 +223,26 @@ class IssueNestedSetTest < ActiveSupport::TestCase
|
||||||
assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt]
|
assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_destroy_child_issue_with_children
|
||||||
|
root = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'root')
|
||||||
|
child = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'child', :parent_issue_id => root.id)
|
||||||
|
leaf = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'leaf', :parent_issue_id => child.id)
|
||||||
|
leaf.init_journal(User.find(2))
|
||||||
|
leaf.subject = 'leaf with journal'
|
||||||
|
leaf.save!
|
||||||
|
|
||||||
|
assert_difference 'Issue.count', -2 do
|
||||||
|
assert_difference 'Journal.count', -1 do
|
||||||
|
assert_difference 'JournalDetail.count', -1 do
|
||||||
|
Issue.find(child.id).destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
root = Issue.find(root.id)
|
||||||
|
assert root.leaf?, "Root issue is not a leaf (lft: #{root.lft}, rgt: #{root.rgt})"
|
||||||
|
end
|
||||||
|
|
||||||
def test_parent_priority_should_be_the_highest_child_priority
|
def test_parent_priority_should_be_the_highest_child_priority
|
||||||
parent = create_issue!(:priority => IssuePriority.find_by_name('Normal'))
|
parent = create_issue!(:priority => IssuePriority.find_by_name('Normal'))
|
||||||
# Create children
|
# Create children
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Redmine - project management software
|
||||||
|
# Copyright (C) 2006-2011 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.
|
||||||
|
|
||||||
|
require File.expand_path('../../../../test_helper', __FILE__)
|
||||||
|
|
||||||
|
class Redmine::ConfigurationTest < ActiveSupport::TestCase
|
||||||
|
def setup
|
||||||
|
@conf = Redmine::Configuration
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_empty
|
||||||
|
assert_kind_of Hash, load_conf('empty.yml', 'test')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_default
|
||||||
|
assert_kind_of Hash, load_conf('default.yml', 'test')
|
||||||
|
assert_equal 'foo', @conf['somesetting']
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_no_default
|
||||||
|
assert_kind_of Hash, load_conf('no_default.yml', 'test')
|
||||||
|
assert_equal 'foo', @conf['somesetting']
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_overrides
|
||||||
|
assert_kind_of Hash, load_conf('overrides.yml', 'test')
|
||||||
|
assert_equal 'bar', @conf['somesetting']
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def load_conf(file, env)
|
||||||
|
@conf.load(
|
||||||
|
:file => File.join(Rails.root, 'test', 'fixtures', 'configuration', file),
|
||||||
|
:env => env
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,42 @@
|
||||||
|
require File.expand_path('../../../../../../test_helper', __FILE__)
|
||||||
|
begin
|
||||||
|
require 'mocha'
|
||||||
|
|
||||||
|
class CvsAdapterTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
|
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
|
||||||
|
MODULE_NAME = 'test'
|
||||||
|
|
||||||
|
if File.directory?(REPOSITORY_PATH)
|
||||||
|
def setup
|
||||||
|
@adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_revisions_all
|
||||||
|
cnt = 0
|
||||||
|
@adapter.revisions('', nil, nil, :with_paths => true) do |revision|
|
||||||
|
cnt += 1
|
||||||
|
end
|
||||||
|
assert_equal 14, cnt
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_revisions_from_rev3
|
||||||
|
rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
|
||||||
|
cnt = 0
|
||||||
|
@adapter.revisions('', rev3_committed_on, nil, :with_paths => true) do |revision|
|
||||||
|
cnt += 1
|
||||||
|
end
|
||||||
|
assert_equal 2, cnt
|
||||||
|
end
|
||||||
|
else
|
||||||
|
puts "Cvs test repository NOT FOUND. Skipping unit tests !!!"
|
||||||
|
def test_fake; assert true end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
rescue LoadError
|
||||||
|
class CvsMochaFake < ActiveSupport::TestCase
|
||||||
|
def test_fake; assert(false, "Requires mocha to run those tests") end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
require File.expand_path('../../../../../../test_helper', __FILE__)
|
||||||
|
begin
|
||||||
|
require 'mocha'
|
||||||
|
|
||||||
|
class DarcsAdapterTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
|
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository'
|
||||||
|
|
||||||
|
if File.directory?(REPOSITORY_PATH)
|
||||||
|
def setup
|
||||||
|
@adapter = Redmine::Scm::Adapters::DarcsAdapter.new(REPOSITORY_PATH)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_darcsversion
|
||||||
|
to_test = { "1.0.9 (release)\n" => [1,0,9] ,
|
||||||
|
"2.2.0 (release)\n" => [2,2,0] }
|
||||||
|
to_test.each do |s, v|
|
||||||
|
test_darcsversion_for(s, v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_revisions
|
||||||
|
id1 = '20080308225258-98289-761f654d669045eabee90b91b53a21ce5593cadf.gz'
|
||||||
|
revs = @adapter.revisions('', nil, nil, {:with_path => true})
|
||||||
|
assert_equal 6, revs.size
|
||||||
|
assert_equal id1, revs[5].scmid
|
||||||
|
paths = revs[5].paths
|
||||||
|
assert_equal 5, paths.size
|
||||||
|
assert_equal 'A', paths[0][:action]
|
||||||
|
assert_equal '/README', paths[0][:path]
|
||||||
|
assert_equal 'A', paths[1][:action]
|
||||||
|
assert_equal '/images', paths[1][:path]
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def test_darcsversion_for(darcsversion, version)
|
||||||
|
@adapter.class.expects(:darcs_binary_version_from_command_line).returns(darcsversion)
|
||||||
|
assert_equal version, @adapter.class.darcs_binary_version
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
puts "Darcs test repository NOT FOUND. Skipping unit tests !!!"
|
||||||
|
def test_fake; assert true end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
rescue LoadError
|
||||||
|
class DarcsMochaFake < ActiveSupport::TestCase
|
||||||
|
def test_fake; assert(false, "Requires mocha to run those tests") end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -69,6 +69,17 @@ begin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_diff_made_by_revision
|
||||||
|
if @adapter.class.client_version_above?([1, 2])
|
||||||
|
[16, '16', '4cddb4e45f52'].each do |r1|
|
||||||
|
diff1 = @adapter.diff(nil, r1)
|
||||||
|
assert_equal 5, diff1.size
|
||||||
|
buf = diff1[4].gsub(/\r\n|\r|\n/, "")
|
||||||
|
assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_cat
|
def test_cat
|
||||||
[2, '400bb8672109', '400', 400].each do |r|
|
[2, '400bb8672109', '400', 400].each do |r|
|
||||||
buf = @adapter.cat('sources/welcome_controller.rb', r)
|
buf = @adapter.cat('sources/welcome_controller.rb', r)
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue