Compare commits
66 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c49155426a | ||
|
|
61a32a5002 | ||
|
|
5745a2a2e3 | ||
|
|
f98f9b9ae1 | ||
|
|
cfec2018e3 | ||
|
|
0083420829 | ||
|
|
338d7ea91d | ||
|
|
73fb7e3427 | ||
|
|
edb7f2d2c5 | ||
|
|
594d9e9da2 | ||
|
|
7ebc62387a | ||
|
|
3269c42cdc | ||
|
|
9436318987 | ||
|
|
94ecabbaf9 | ||
|
|
063c9a2a83 | ||
|
|
376e8d4aa3 | ||
|
|
20114bd8e0 | ||
|
|
cfdd85173f | ||
|
|
5de8e9f04c | ||
|
|
79db8fd3e0 | ||
|
|
98b7900c5c | ||
|
|
23c28c1ef7 | ||
|
|
974863e8f4 | ||
|
|
58af20746b | ||
|
|
efcd602444 | ||
|
|
20cd146e93 | ||
|
|
8a97dfdeab | ||
|
|
b0b7f4d7d6 | ||
|
|
53680edb2d | ||
|
|
ddf0307718 | ||
|
|
0ab90145fe | ||
|
|
f4def66c58 | ||
|
|
4413e0e52e | ||
|
|
b2e1080007 | ||
|
|
8245eaa9f3 | ||
|
|
83430dacd9 | ||
|
|
998a29cbaf | ||
|
|
511099e9ca | ||
|
|
a18db94c06 | ||
|
|
fe3a4cdbd1 | ||
|
|
67bb69d68e | ||
|
|
639b6f5c85 | ||
|
|
b783bbf3bb | ||
|
|
a4b6928a26 | ||
|
|
0e92038047 | ||
|
|
35b17d3bdc | ||
|
|
8672114648 | ||
|
|
699fa9ac3f | ||
|
|
a5a1bd5a35 | ||
|
|
4100d3beeb | ||
|
|
58ebb87ae6 | ||
|
|
33ef9fbe29 | ||
|
|
b0fa5e7305 | ||
|
|
5bb2f5e211 | ||
|
|
2293a5d3f4 | ||
|
|
d14cd42a78 | ||
|
|
2a53538616 | ||
|
|
d1f63717dd | ||
|
|
d22b085d1d | ||
|
|
15751a6931 | ||
|
|
052cf73dfd | ||
|
|
a4bee12e5a | ||
|
|
92507382b4 | ||
|
|
e6d63a4e0d | ||
|
|
346085c5fc | ||
|
|
dcfc9170e6 |
15
Gemfile
15
Gemfile
@@ -1,6 +1,6 @@
|
||||
source 'http://rubygems.org'
|
||||
source 'https://rubygems.org'
|
||||
|
||||
gem 'rails', '3.2.12'
|
||||
gem "rails", "3.2.13"
|
||||
gem "jquery-rails", "~> 2.0.2"
|
||||
gem "i18n", "~> 0.6.0"
|
||||
gem "coderay", "~> 1.0.6"
|
||||
@@ -37,6 +37,7 @@ end
|
||||
# Include database gems for the adapters found in the database
|
||||
# configuration file
|
||||
require 'erb'
|
||||
require 'yaml'
|
||||
database_file = File.join(File.dirname(__FILE__), "config/database.yml")
|
||||
if File.exist?(database_file)
|
||||
database_config = YAML::load(ERB.new(IO.read(database_file)).result)
|
||||
@@ -44,9 +45,11 @@ if File.exist?(database_file)
|
||||
if adapters.any?
|
||||
adapters.each do |adapter|
|
||||
case adapter
|
||||
when /mysql/
|
||||
gem "mysql", "~> 2.8.1", :platforms => [:mri_18, :mingw_18]
|
||||
gem "mysql2", "~> 0.3.11", :platforms => [:mri_19, :mingw_19]
|
||||
when 'mysql2'
|
||||
gem "mysql2", "~> 0.3.11", :platforms => [:mri, :mingw]
|
||||
gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
|
||||
when 'mysql'
|
||||
gem "mysql", "~> 2.8.1", :platforms => [:mri, :mingw]
|
||||
gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
|
||||
when /postgresql/
|
||||
gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw]
|
||||
@@ -75,7 +78,7 @@ end
|
||||
|
||||
group :test do
|
||||
gem "shoulda", "~> 3.3.2"
|
||||
gem "mocha"
|
||||
gem "mocha", "~> 0.13.3"
|
||||
gem 'capybara', '~> 2.0.0'
|
||||
end
|
||||
|
||||
|
||||
@@ -176,7 +176,9 @@ class AccountController < ApplicationController
|
||||
end
|
||||
|
||||
def open_id_authenticate(openid_url)
|
||||
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url, :method => :post) do |result, identity_url, registration|
|
||||
back_url = signin_url(:autologin => params[:autologin])
|
||||
|
||||
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => back_url, :method => :post) do |result, identity_url, registration|
|
||||
if result.successful?
|
||||
user = User.find_or_initialize_by_identity_url(identity_url)
|
||||
if user.new_record?
|
||||
@@ -230,7 +232,6 @@ class AccountController < ApplicationController
|
||||
|
||||
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,
|
||||
@@ -238,7 +239,7 @@ class AccountController < ApplicationController
|
||||
:secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false),
|
||||
:httponly => true
|
||||
}
|
||||
cookies[cookie_name] = cookie_options
|
||||
cookies[autologin_cookie_name] = cookie_options
|
||||
end
|
||||
|
||||
# Onthefly creation failed, display the registration form to fill/fix attributes
|
||||
|
||||
@@ -35,7 +35,7 @@ class ApplicationController < ActionController::Base
|
||||
protect_from_forgery
|
||||
def handle_unverified_request
|
||||
super
|
||||
cookies.delete(:autologin)
|
||||
cookies.delete(autologin_cookie_name)
|
||||
end
|
||||
|
||||
before_filter :session_expiration, :user_setup, :check_if_login_required, :set_localization
|
||||
@@ -127,10 +127,14 @@ class ApplicationController < ActionController::Base
|
||||
user
|
||||
end
|
||||
|
||||
def autologin_cookie_name
|
||||
Redmine::Configuration['autologin_cookie_name'].presence || 'autologin'
|
||||
end
|
||||
|
||||
def try_to_autologin
|
||||
if cookies[:autologin] && Setting.autologin?
|
||||
if cookies[autologin_cookie_name] && Setting.autologin?
|
||||
# auto-login feature starts a new session
|
||||
user = User.try_to_autologin(cookies[:autologin])
|
||||
user = User.try_to_autologin(cookies[autologin_cookie_name])
|
||||
if user
|
||||
reset_session
|
||||
start_user_session(user)
|
||||
@@ -153,7 +157,7 @@ class ApplicationController < ActionController::Base
|
||||
# Logs out current user
|
||||
def logout_user
|
||||
if User.current.logged?
|
||||
cookies.delete :autologin
|
||||
cookies.delete(autologin_cookie_name)
|
||||
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
|
||||
self.logged_user = nil
|
||||
end
|
||||
|
||||
@@ -50,7 +50,7 @@ class IssueRelationsController < ApplicationController
|
||||
respond_to do |format|
|
||||
format.html { redirect_to issue_path(@issue) }
|
||||
format.js {
|
||||
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||
@relations = @issue.reload.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||
}
|
||||
format.api {
|
||||
if saved
|
||||
|
||||
@@ -343,7 +343,7 @@ module ApplicationHelper
|
||||
def options_for_membership_project_select(principal, projects)
|
||||
options = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---")
|
||||
options << project_tree_options_for_select(projects) do |p|
|
||||
{:disabled => principal.projects.include?(p)}
|
||||
{:disabled => principal.projects.to_a.include?(p)}
|
||||
end
|
||||
options
|
||||
end
|
||||
@@ -1180,7 +1180,7 @@ module ApplicationHelper
|
||||
|
||||
def sanitize_anchor_name(anchor)
|
||||
if ''.respond_to?(:encoding) || RUBY_PLATFORM == 'java'
|
||||
anchor.gsub(%r{[^\p{Word}\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
|
||||
anchor.gsub(%r{[^\s\-\p{Word}]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
|
||||
else
|
||||
# TODO: remove when ruby1.8 is no longer supported
|
||||
anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
|
||||
|
||||
@@ -353,7 +353,10 @@ module IssuesHelper
|
||||
association = Issue.reflect_on_association(field.to_sym)
|
||||
if association
|
||||
record = association.class_name.constantize.find_by_id(id)
|
||||
return record.name if record
|
||||
if record
|
||||
record.name.force_encoding('UTF-8') if record.name.respond_to?(:force_encoding)
|
||||
return record.name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -107,14 +107,14 @@ module TimelogHelper
|
||||
# Column headers
|
||||
headers = report.criteria.collect {|criteria| l(report.available_criteria[criteria][:label]) }
|
||||
headers += report.periods
|
||||
headers << l(:label_total)
|
||||
headers << l(:label_total_time)
|
||||
csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8(
|
||||
c.to_s,
|
||||
l(:general_csv_encoding) ) }
|
||||
# Content
|
||||
report_criteria_to_csv(csv, report.available_criteria, report.columns, report.criteria, report.periods, report.hours)
|
||||
# Total row
|
||||
str_total = Redmine::CodesetUtil.from_utf8(l(:label_total), l(:general_csv_encoding))
|
||||
str_total = Redmine::CodesetUtil.from_utf8(l(:label_total_time), l(:general_csv_encoding))
|
||||
row = [ str_total ] + [''] * (report.criteria.size - 1)
|
||||
total = 0
|
||||
report.periods.each do |period|
|
||||
|
||||
@@ -30,6 +30,7 @@ class Group < Principal
|
||||
before_destroy :remove_references_before_destroy
|
||||
|
||||
scope :sorted, lambda { order("#{table_name}.lastname ASC") }
|
||||
scope :named, lambda {|arg| where("LOWER(#{table_name}.lastname) = LOWER(?)", arg.to_s.strip)}
|
||||
|
||||
safe_attributes 'name',
|
||||
'user_ids',
|
||||
|
||||
@@ -184,10 +184,12 @@ class Issue < ActiveRecord::Base
|
||||
super
|
||||
end
|
||||
|
||||
alias :base_reload :reload
|
||||
def reload(*args)
|
||||
@workflow_rule_by_attribute = nil
|
||||
@assignable_versions = nil
|
||||
super
|
||||
@relations = nil
|
||||
base_reload(*args)
|
||||
end
|
||||
|
||||
# Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields
|
||||
@@ -574,6 +576,8 @@ class Issue < ActiveRecord::Base
|
||||
elsif @parent_issue
|
||||
if !valid_parent_project?(@parent_issue)
|
||||
errors.add :parent_issue_id, :invalid
|
||||
elsif (@parent_issue != parent) && (all_dependent_issues.include?(@parent_issue) || @parent_issue.all_dependent_issues.include?(self))
|
||||
errors.add :parent_issue_id, :invalid
|
||||
elsif !new_record?
|
||||
# moving an existing issue
|
||||
if @parent_issue.root_id != root_id
|
||||
@@ -849,16 +853,16 @@ class Issue < ActiveRecord::Base
|
||||
IssueRelation.find(relation_id, :conditions => ["issue_to_id = ? OR issue_from_id = ?", id, id])
|
||||
end
|
||||
|
||||
# Returns all the other issues that depend on the issue
|
||||
def all_dependent_issues(except=[])
|
||||
except << self
|
||||
dependencies = []
|
||||
relations_from.each do |relation|
|
||||
if relation.issue_to && !except.include?(relation.issue_to)
|
||||
dependencies << relation.issue_to
|
||||
dependencies += relation.issue_to.all_dependent_issues(except)
|
||||
end
|
||||
end
|
||||
dependencies
|
||||
dependencies += relations_from.map(&:issue_to)
|
||||
dependencies += children unless leaf?
|
||||
dependencies << parent
|
||||
dependencies.compact!
|
||||
dependencies -= except
|
||||
dependencies + dependencies.map {|issue| issue.all_dependent_issues(except)}.flatten
|
||||
end
|
||||
|
||||
# Returns an array of issues that duplicate this one
|
||||
@@ -890,7 +894,7 @@ class Issue < ActiveRecord::Base
|
||||
@soonest_start = nil if reload
|
||||
@soonest_start ||= (
|
||||
relations_to(reload).collect{|relation| relation.successor_soonest_start} +
|
||||
ancestors.collect(&:soonest_start)
|
||||
[(@parent_issue || parent).try(:soonest_start)]
|
||||
).compact.max
|
||||
end
|
||||
|
||||
@@ -953,7 +957,7 @@ class Issue < ActiveRecord::Base
|
||||
|
||||
# Returns a string of css classes that apply to the issue
|
||||
def css_classes
|
||||
s = "issue status-#{status_id} #{priority.try(:css_classes)}"
|
||||
s = "issue tracker-#{tracker_id} status-#{status_id} #{priority.try(:css_classes)}"
|
||||
s << ' closed' if closed?
|
||||
s << ' overdue' if overdue?
|
||||
s << ' child' if child?
|
||||
@@ -1145,20 +1149,27 @@ class Issue < ActiveRecord::Base
|
||||
end
|
||||
|
||||
unless @copied_from.leaf? || @copy_options[:subtasks] == false
|
||||
@copied_from.children.each do |child|
|
||||
copy_options = (@copy_options || {}).merge(:subtasks => false)
|
||||
copied_issue_ids = {@copied_from.id => self.id}
|
||||
@copied_from.reload.descendants.reorder("#{Issue.table_name}.lft").each do |child|
|
||||
# Do not copy self when copying an issue as a descendant of the copied issue
|
||||
next if child == self
|
||||
# Do not copy subtasks of issues that were not copied
|
||||
next unless copied_issue_ids[child.parent_id]
|
||||
# Do not copy subtasks that are not visible to avoid potential disclosure of private data
|
||||
unless child.visible?
|
||||
# Do not copy subtasks that are not visible to avoid potential disclosure of private data
|
||||
logger.error "Subtask ##{child.id} was not copied during ##{@copied_from.id} copy because it is not visible to the current user" if logger
|
||||
next
|
||||
end
|
||||
copy = Issue.new.copy_from(child, @copy_options)
|
||||
copy = Issue.new.copy_from(child, copy_options)
|
||||
copy.author = author
|
||||
copy.project = project
|
||||
copy.parent_issue_id = id
|
||||
# Children subtasks are copied recursively
|
||||
copy.parent_issue_id = copied_issue_ids[child.parent_id]
|
||||
unless copy.save
|
||||
logger.error "Could not copy subtask ##{child.id} while copying ##{@copied_from.id} to ##{id} due to validation errors: #{copy.errors.full_messages.join(', ')}" if logger
|
||||
next
|
||||
end
|
||||
copied_issue_ids[child.id] = copy.id
|
||||
end
|
||||
end
|
||||
@after_create_from_copy_handled = true
|
||||
|
||||
@@ -38,7 +38,9 @@ class MailHandler < ActionMailer::Base
|
||||
# Status overridable by default
|
||||
@@handler_options[:allow_override] << 'status' unless @@handler_options[:issue].has_key?(:status)
|
||||
|
||||
@@handler_options[:no_permission_check] = (@@handler_options[:no_permission_check].to_s == '1' ? true : false)
|
||||
@@handler_options[:no_account_notice] = (@@handler_options[:no_account_notice].to_s == '1')
|
||||
@@handler_options[:no_notification] = (@@handler_options[:no_notification].to_s == '1')
|
||||
@@handler_options[:no_permission_check] = (@@handler_options[:no_permission_check].to_s == '1')
|
||||
|
||||
email.force_encoding('ASCII-8BIT') if email.respond_to?(:force_encoding)
|
||||
super(email)
|
||||
@@ -97,7 +99,10 @@ class MailHandler < ActionMailer::Base
|
||||
if logger && logger.info
|
||||
logger.info "MailHandler: [#{@user.login}] account created"
|
||||
end
|
||||
Mailer.account_information(@user, @user.password).deliver
|
||||
add_user_to_group(@@handler_options[:default_group])
|
||||
unless @@handler_options[:no_account_notice]
|
||||
Mailer.account_information(@user, @user.password).deliver
|
||||
end
|
||||
else
|
||||
if logger && logger.error
|
||||
logger.error "MailHandler: could not create account for [#{sender_email}]"
|
||||
@@ -249,26 +254,9 @@ class MailHandler < ActionMailer::Base
|
||||
def add_attachments(obj)
|
||||
if email.attachments && email.attachments.any?
|
||||
email.attachments.each do |attachment|
|
||||
filename = attachment.filename
|
||||
unless filename.respond_to?(:encoding)
|
||||
# try to reencode to utf8 manually with ruby1.8
|
||||
h = attachment.header['Content-Disposition']
|
||||
unless h.nil?
|
||||
begin
|
||||
if m = h.value.match(/filename\*[0-9\*]*=([^=']+)'/)
|
||||
filename = Redmine::CodesetUtil.to_utf8(filename, m[1])
|
||||
elsif m = h.value.match(/filename=.*=\?([^\?]+)\?[BbQq]\?/)
|
||||
# http://tools.ietf.org/html/rfc2047#section-4
|
||||
filename = Redmine::CodesetUtil.to_utf8(filename, m[1])
|
||||
end
|
||||
rescue
|
||||
# nop
|
||||
end
|
||||
end
|
||||
end
|
||||
obj.attachments << Attachment.create(:container => obj,
|
||||
:file => attachment.decoded,
|
||||
:filename => filename,
|
||||
:filename => attachment.filename,
|
||||
:author => user,
|
||||
:content_type => attachment.mime_type)
|
||||
end
|
||||
@@ -391,19 +379,6 @@ class MailHandler < ActionMailer::Base
|
||||
|
||||
def cleaned_up_subject
|
||||
subject = email.subject.to_s
|
||||
unless subject.respond_to?(:encoding)
|
||||
# try to reencode to utf8 manually with ruby1.8
|
||||
begin
|
||||
if h = email.header[:subject]
|
||||
# http://tools.ietf.org/html/rfc2047#section-4
|
||||
if m = h.value.match(/=\?([^\?]+)\?[BbQq]\?/)
|
||||
subject = Redmine::CodesetUtil.to_utf8(subject, m[1])
|
||||
end
|
||||
end
|
||||
rescue
|
||||
# nop
|
||||
end
|
||||
end
|
||||
subject.strip[0,255]
|
||||
end
|
||||
|
||||
@@ -433,6 +408,7 @@ class MailHandler < ActionMailer::Base
|
||||
password_length = [Setting.password_min_length.to_i, 10].max
|
||||
user.password = Redmine::Utils.random_hex(password_length / 2 + 1)
|
||||
user.language = Setting.default_language
|
||||
user.mail_notification = 'only_my_events'
|
||||
|
||||
unless user.valid?
|
||||
user.login = "user#{Redmine::Utils.random_hex(6)}" unless user.errors[:login].blank?
|
||||
@@ -453,6 +429,9 @@ class MailHandler < ActionMailer::Base
|
||||
end
|
||||
if addr.present?
|
||||
user = self.class.new_user_from_attributes(addr, name)
|
||||
if @@handler_options[:no_notification]
|
||||
user.mail_notification = 'none'
|
||||
end
|
||||
if user.save
|
||||
user
|
||||
else
|
||||
@@ -465,6 +444,19 @@ class MailHandler < ActionMailer::Base
|
||||
end
|
||||
end
|
||||
|
||||
# Adds the newly created user to default group
|
||||
def add_user_to_group(default_group)
|
||||
if default_group.present?
|
||||
default_group.split(',').each do |group_name|
|
||||
if group = Group.named(group_name).first
|
||||
group.users << @user
|
||||
elsif logger
|
||||
logger.warn "MailHandler: could not add user to [#{group_name}], group not found"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Removes the email body of text after the truncation configurations.
|
||||
def cleanup_body(body)
|
||||
delimiters = Setting.mail_handler_body_delimiters.to_s.split(/[\r\n]+/).reject(&:blank?).map {|s| Regexp.escape(s)}
|
||||
|
||||
@@ -285,6 +285,7 @@ class Project < ActiveRecord::Base
|
||||
self.find(*args)
|
||||
end
|
||||
|
||||
alias :base_reload :reload
|
||||
def reload(*args)
|
||||
@shared_versions = nil
|
||||
@rolled_up_versions = nil
|
||||
@@ -297,7 +298,7 @@ class Project < ActiveRecord::Base
|
||||
@actions_allowed = nil
|
||||
@start_date = nil
|
||||
@due_date = nil
|
||||
super
|
||||
base_reload(*args)
|
||||
end
|
||||
|
||||
def to_param
|
||||
|
||||
@@ -40,6 +40,7 @@ class TimeEntry < ActiveRecord::Base
|
||||
validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on
|
||||
validates_numericality_of :hours, :allow_nil => true, :message => :invalid
|
||||
validates_length_of :comments, :maximum => 255, :allow_nil => true
|
||||
validates :spent_on, :date => true
|
||||
before_validation :set_project_if_nil
|
||||
validate :validate_time_entry
|
||||
|
||||
|
||||
@@ -128,10 +128,12 @@ class User < Principal
|
||||
end
|
||||
end
|
||||
|
||||
alias :base_reload :reload
|
||||
def reload(*args)
|
||||
@name = nil
|
||||
@projects_by_role = nil
|
||||
super
|
||||
@membership_by_project_id = nil
|
||||
base_reload(*args)
|
||||
end
|
||||
|
||||
def mail=(arg)
|
||||
@@ -415,6 +417,17 @@ class User < Principal
|
||||
!logged?
|
||||
end
|
||||
|
||||
# Returns user's membership for the given project
|
||||
# or nil if the user is not a member of project
|
||||
def membership(project)
|
||||
project_id = project.is_a?(Project) ? project.id : project
|
||||
|
||||
@membership_by_project_id ||= Hash.new {|h, project_id|
|
||||
h[project_id] = memberships.where(:project_id => project_id).first
|
||||
}
|
||||
@membership_by_project_id[project_id]
|
||||
end
|
||||
|
||||
# Return user's roles for project
|
||||
def roles_for_project(project)
|
||||
roles = []
|
||||
@@ -422,7 +435,7 @@ class User < Principal
|
||||
return roles if project.nil? || project.archived?
|
||||
if logged?
|
||||
# Find project membership
|
||||
membership = memberships.detect {|m| m.project_id == project.id}
|
||||
membership = membership(project)
|
||||
if membership
|
||||
roles = membership.roles
|
||||
else
|
||||
@@ -438,7 +451,7 @@ class User < Principal
|
||||
|
||||
# Return true if the user is a member of project
|
||||
def member_of?(project)
|
||||
roles_for_project(project).any? {|role| role.member?}
|
||||
projects.to_a.include?(project)
|
||||
end
|
||||
|
||||
# Returns a hash of user's projects grouped by roles
|
||||
@@ -679,6 +692,10 @@ class AnonymousUser < User
|
||||
UserPreference.new(:user => self)
|
||||
end
|
||||
|
||||
def member_of?(project)
|
||||
false
|
||||
end
|
||||
|
||||
# Anonymous user can not be destroyed
|
||||
def destroy
|
||||
false
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="4" class="filename">
|
||||
<%= h(Redmine::CodesetUtil.to_utf8_by_setting(table_file.file_name)) %>
|
||||
<%= table_file.file_name %>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -24,11 +24,11 @@
|
||||
<tr>
|
||||
<th class="line-num"><%= line.nb_line_left %></th>
|
||||
<td class="line-code <%= line.type_diff_left %>">
|
||||
<pre><%= Redmine::CodesetUtil.to_utf8_by_setting(line.html_line_left).html_safe %></pre>
|
||||
<pre><%= line.html_line_left.html_safe %></pre>
|
||||
</td>
|
||||
<th class="line-num"><%= line.nb_line_right %></th>
|
||||
<td class="line-code <%= line.type_diff_right %>">
|
||||
<pre><%= Redmine::CodesetUtil.to_utf8_by_setting(line.html_line_right).html_safe %></pre>
|
||||
<pre><%= line.html_line_right.html_safe %></pre>
|
||||
</td>
|
||||
</tr>
|
||||
<% end -%>
|
||||
@@ -40,7 +40,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="3" class="filename">
|
||||
<%= h(Redmine::CodesetUtil.to_utf8_by_setting(table_file.file_name)) %>
|
||||
<%= table_file.file_name %>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -55,7 +55,7 @@
|
||||
<th class="line-num"><%= line.nb_line_left %></th>
|
||||
<th class="line-num"><%= line.nb_line_right %></th>
|
||||
<td class="line-code <%= line.type_diff %>">
|
||||
<pre><%= Redmine::CodesetUtil.to_utf8_by_setting(line.html_line).html_safe %></pre>
|
||||
<pre><%= line.html_line.html_safe %></pre>
|
||||
</td>
|
||||
</tr>
|
||||
<% end -%>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<fieldset>
|
||||
<legend><%= l(:label_related_issues) %></legend>
|
||||
<label>
|
||||
<%= check_box_tag "draw_rels", params["draw_rels"], true %>
|
||||
<%= check_box_tag "draw_rels", params["draw_rels"], params[:set_filter].blank? || params[:draw_rels] %>
|
||||
<% rels = [IssueRelation::TYPE_BLOCKS, IssueRelation::TYPE_PRECEDES] %>
|
||||
<% rels.each do |rel| %>
|
||||
<% color = Redmine::Helpers::Gantt::DRAW_TYPES[rel][:color] %>
|
||||
@@ -36,7 +36,7 @@
|
||||
<fieldset>
|
||||
<legend><%= l(:label_gantt_progress_line) %></legend>
|
||||
<label>
|
||||
<%= check_box_tag "draw_progress_line", params[:draw_progress_line], false %>
|
||||
<%= check_box_tag "draw_progress_line", params[:draw_progress_line], params[:draw_progress_line] %>
|
||||
<%= l(:label_display) %>
|
||||
</label>
|
||||
</fieldset>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<td class="buttons"><%= delete_link group %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% else %>
|
||||
<p class="nodata"><%= l(:label_no_data) %></p>
|
||||
|
||||
@@ -5,7 +5,7 @@ entries_by_day = entries.group_by(&:spent_on)
|
||||
%>
|
||||
|
||||
<div class="total-hours">
|
||||
<p><%= l(:label_total) %>: <%= html_hours("%.2f" % entries.sum(&:hours).to_f) %></p>
|
||||
<p><%= l(:label_total_time) %>: <%= html_hours("%.2f" % entries.sum(&:hours).to_f) %></p>
|
||||
</div>
|
||||
|
||||
<% if entries.any? %>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<% end %>
|
||||
|
||||
<div class="total-hours">
|
||||
<p><%= l(:label_total) %>: <%= html_hours(l_hours(@total_hours)) %></p>
|
||||
<p><%= l(:label_total_time) %>: <%= html_hours(l_hours(@total_hours)) %></p>
|
||||
</div>
|
||||
|
||||
<% unless @entries.empty? %>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<% unless @report.criteria.empty? %>
|
||||
<div class="total-hours">
|
||||
<p><%= l(:label_total) %>: <%= html_hours(l_hours(@report.total_hours)) %></p>
|
||||
<p><%= l(:label_total_time) %>: <%= html_hours(l_hours(@report.total_hours)) %></p>
|
||||
</div>
|
||||
|
||||
<% unless @report.hours.empty? %>
|
||||
@@ -45,13 +45,13 @@
|
||||
<% @report.periods.each do |period| %>
|
||||
<th class="period" width="<%= columns_width %>%"><%= period %></th>
|
||||
<% end %>
|
||||
<th class="total" width="<%= columns_width %>%"><%= l(:label_total) %></th>
|
||||
<th class="total" width="<%= columns_width %>%"><%= l(:label_total_time) %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%= render :partial => 'report_criteria', :locals => {:criterias => @report.criteria, :hours => @report.hours, :level => 0} %>
|
||||
<tr class="total">
|
||||
<td><%= l(:label_total) %></td>
|
||||
<td><%= l(:label_total_time) %></td>
|
||||
<%= ('<td></td>' * (@report.criteria.size - 1)).html_safe %>
|
||||
<% total = 0 -%>
|
||||
<% @report.periods.each do |period| -%>
|
||||
|
||||
@@ -6,6 +6,7 @@ api.user do
|
||||
api.mail @user.mail if User.current.admin? || !@user.pref.hide_mail
|
||||
api.created_on @user.created_on
|
||||
api.last_login_on @user.last_login_on
|
||||
api.api_key @user.api_key if User.current.admin? || (User.current == @user)
|
||||
|
||||
render_api_custom_values @user.visible_custom_field_values, api
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ default:
|
||||
scm_bazaar_command:
|
||||
scm_darcs_command:
|
||||
|
||||
# Absolute path to the scm commands errors (stderr) log file.
|
||||
# Absolute path to the SCM commands errors (stderr) log file.
|
||||
# The default is to log in the 'log' directory of your Redmine instance.
|
||||
# Example:
|
||||
# scm_stderr_log_file: /var/log/redmine_scm_stderr.log
|
||||
|
||||
@@ -1085,3 +1085,5 @@ ar:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: الإجمالي
|
||||
|
||||
@@ -1182,3 +1182,5 @@ az:
|
||||
label_any_issues_not_in_project: any issues not in project
|
||||
label_cross_project_tree: With project tree
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Cəmi
|
||||
|
||||
@@ -180,7 +180,7 @@ bg:
|
||||
notice_account_deleted: Вашият профил беше премахнат без възможност за възстановяване.
|
||||
notice_user_successful_create: Потребител %{id} е създаден.
|
||||
|
||||
error_can_t_load_default_data: "Грешка при зареждане на примерната информация: %{value}"
|
||||
error_can_t_load_default_data: "Грешка при зареждане на началната информация: %{value}"
|
||||
error_scm_not_found: Несъществуващ обект в хранилището.
|
||||
error_scm_command_failed: "Грешка при опит за комуникация с хранилище: %{value}"
|
||||
error_scm_annotate: "Обектът не съществува или не може да бъде анотиран."
|
||||
@@ -360,7 +360,7 @@ bg:
|
||||
setting_cross_project_subtasks: Подзадачи от други проекти
|
||||
setting_issue_list_default_columns: Показвани колони по подразбиране
|
||||
setting_repositories_encodings: Кодова таблица на прикачените файлове и хранилищата
|
||||
setting_emails_header: Emails header
|
||||
setting_emails_header: Email header
|
||||
setting_emails_footer: Подтекст за e-mail
|
||||
setting_protocol: Протокол
|
||||
setting_per_page_options: Опции за страниране
|
||||
@@ -401,6 +401,7 @@ bg:
|
||||
setting_thumbnails_size: Размер на миниатюрите (в пиксели)
|
||||
setting_non_working_week_days: Не работни дни
|
||||
setting_jsonp_enabled: Разрешаване на поддръжка на JSONP
|
||||
setting_default_projects_tracker_ids: Тракери по подразбиране за нови проекти
|
||||
|
||||
permission_add_project: Създаване на проект
|
||||
permission_add_subprojects: Създаване на подпроекти
|
||||
@@ -618,6 +619,7 @@ bg:
|
||||
one: 1 задача
|
||||
other: "%{count} задачи"
|
||||
label_total: Общо
|
||||
label_total_time: Общо
|
||||
label_permissions: Права
|
||||
label_current_status: Текущо състояние
|
||||
label_new_statuses_allowed: Позволени състояния
|
||||
|
||||
@@ -938,7 +938,6 @@ bs:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -979,8 +978,6 @@ bs:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1098,3 +1095,8 @@ bs:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Ukupno
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -927,7 +927,6 @@ ca:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -968,8 +967,6 @@ ca:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1087,3 +1084,8 @@ ca:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Update to 2.2 by Karel Picman <karel.picman@kontron.com>
|
||||
# Update to 1.1 by Michal Gebauer <mishak@mishak.net>
|
||||
# Updated by Josef Liška <jl@chl.cz>
|
||||
# CZ translation by Maxim Krušina | Massimo Filippi, s.r.o. | maxim@mxm.cz
|
||||
@@ -160,10 +161,10 @@ cs:
|
||||
notice_successful_update: Úspěšně aktualizováno.
|
||||
notice_successful_delete: Úspěšně odstraněno.
|
||||
notice_successful_connection: Úspěšné připojení.
|
||||
notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána.
|
||||
notice_file_not_found: Stránka, kterou se snažíte zobrazit, neexistuje nebo byla smazána.
|
||||
notice_locking_conflict: Údaje byly změněny jiným uživatelem.
|
||||
notice_not_authorized: Nemáte dostatečná práva pro zobrazení této stránky.
|
||||
notice_not_authorized_archived_project: Projekt ke kterému se snažíte přistupovat byl archivován.
|
||||
notice_not_authorized_archived_project: Projekt, ke kterému se snažíte přistupovat, byl archivován.
|
||||
notice_email_sent: "Na adresu %{value} byl odeslán email"
|
||||
notice_email_error: "Při odesílání emailu nastala chyba (%{value})"
|
||||
notice_feeds_access_key_reseted: Váš klíč pro přístup k RSS byl resetován.
|
||||
@@ -174,7 +175,7 @@ cs:
|
||||
notice_account_pending: "Váš účet byl vytvořen, nyní čeká na schválení administrátorem."
|
||||
notice_default_data_loaded: Výchozí konfigurace úspěšně nahrána.
|
||||
notice_unable_delete_version: Nemohu odstanit verzi
|
||||
notice_unable_delete_time_entry: Nelze smazat čas ze záznamu.
|
||||
notice_unable_delete_time_entry: Nelze smazat záznam času.
|
||||
notice_issue_done_ratios_updated: Koeficienty dokončení úkolu byly aktualizovány.
|
||||
notice_gantt_chart_truncated: Graf byl oříznut, počet položek přesáhl limit pro zobrazení (%{max})
|
||||
|
||||
@@ -184,15 +185,15 @@ cs:
|
||||
error_scm_annotate: "Položka neexistuje nebo nemůže být komentována."
|
||||
error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu'
|
||||
error_no_tracker_in_project: Žádná fronta nebyla přiřazena tomuto projektu. Prosím zkontroluje nastavení projektu.
|
||||
error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
|
||||
error_no_default_issue_status: Není nastaven výchozí stav úkolů. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů").
|
||||
error_can_not_delete_custom_field: Nelze smazat volitelné pole
|
||||
error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán.
|
||||
error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazána.
|
||||
error_can_not_remove_role: Tato role je právě používaná a nelze ji smazat.
|
||||
error_can_not_reopen_issue_on_closed_version: Úkol přiřazený k uzavřené verzi nemůže být znovu otevřen
|
||||
error_can_not_archive_project: Tento projekt nemůže být archivován
|
||||
error_issue_done_ratios_not_updated: Koeficient dokončení úkolu nebyl aktualizován.
|
||||
error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly
|
||||
error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e)
|
||||
error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roli
|
||||
error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roli(e)
|
||||
error_unable_delete_issue_status: Nelze smazat stavy úkolů
|
||||
error_unable_to_connect: Nelze se připojit (%{value})
|
||||
warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit."
|
||||
@@ -206,7 +207,7 @@ cs:
|
||||
mail_subject_account_activation_request: "Aktivace %{value} účtu"
|
||||
mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho účtu závisí na vašem potvrzení."
|
||||
mail_subject_reminder: "%{count} úkol(ů) má termín během několik dní (%{days})"
|
||||
mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny má termín během několik dní (%{days}):"
|
||||
mail_body_reminder: "%{count} úkol(ů), které máte přiřazeny má termín během několika dní (%{days}):"
|
||||
mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla přidána"
|
||||
mail_body_wiki_content_added: "'%{id}' Wiki stránka byla přidána od %{author}."
|
||||
mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována"
|
||||
@@ -290,7 +291,7 @@ cs:
|
||||
field_issue_to: Související úkol
|
||||
field_delay: Zpoždění
|
||||
field_assignable: Úkoly mohou být přiřazeny této roli
|
||||
field_redirect_existing_links: Přesměrovat stvávající odkazy
|
||||
field_redirect_existing_links: Přesměrovat stávající odkazy
|
||||
field_estimated_hours: Odhadovaná doba
|
||||
field_column_names: Sloupce
|
||||
field_time_entries: Zaznamenaný čas
|
||||
@@ -320,7 +321,7 @@ cs:
|
||||
setting_attachment_max_size: Maximální velikost přílohy
|
||||
setting_issues_export_limit: Limit pro export úkolů
|
||||
setting_mail_from: Odesílat emaily z adresy
|
||||
setting_bcc_recipients: Příjemci skryté kopie (bcc)
|
||||
setting_bcc_recipients: Příjemci jako skrytá kopie (bcc)
|
||||
setting_plain_text_mail: pouze prostý text (ne HTML)
|
||||
setting_host_name: Jméno serveru
|
||||
setting_text_formatting: Formátování textu
|
||||
@@ -336,8 +337,8 @@ cs:
|
||||
setting_time_format: Formát času
|
||||
setting_cross_project_issue_relations: Povolit vazby úkolů napříč projekty
|
||||
setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů
|
||||
setting_emails_header: Hlavička emailů
|
||||
setting_emails_footer: Patička emailů
|
||||
setting_emails_header: Záhlaví emailů
|
||||
setting_emails_footer: Zápatí emailů
|
||||
setting_protocol: Protokol
|
||||
setting_per_page_options: Povolené počty řádků na stránce
|
||||
setting_user_format: Formát zobrazení uživatele
|
||||
@@ -350,7 +351,7 @@ cs:
|
||||
setting_sequential_project_identifiers: Generovat sekvenční identifikátory projektů
|
||||
setting_gravatar_enabled: Použít uživatelské ikony Gravatar
|
||||
setting_gravatar_default: Výchozí Gravatar
|
||||
setting_diff_max_lines_displayed: Maximální počet zobrazených řádků rozdílů
|
||||
setting_diff_max_lines_displayed: Maximální počet zobrazených řádků rozdílu
|
||||
setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce
|
||||
setting_repository_log_display_limit: Maximální počet revizí zobrazených v logu souboru
|
||||
setting_openid: Umožnit přihlašování a registrace s OpenID
|
||||
@@ -366,7 +367,7 @@ cs:
|
||||
setting_default_notification_option: Výchozí nastavení oznámení
|
||||
setting_commit_logtime_enabled: Povolit zapisování času
|
||||
setting_commit_logtime_activity_id: Aktivita pro zapsaný čas
|
||||
setting_gantt_items_limit: Maximální počet položek zobrazený na ganttově grafu
|
||||
setting_gantt_items_limit: Maximální počet položek zobrazený na ganttově diagramu
|
||||
|
||||
permission_add_project: Vytvořit projekt
|
||||
permission_add_subprojects: Vytvořit podprojekty
|
||||
@@ -387,11 +388,11 @@ cs:
|
||||
permission_delete_issues: Mazání úkolů
|
||||
permission_manage_public_queries: Správa veřejných dotazů
|
||||
permission_save_queries: Ukládání dotazů
|
||||
permission_view_gantt: Zobrazené Ganttova diagramu
|
||||
permission_view_gantt: Zobrazení ganttova diagramu
|
||||
permission_view_calendar: Prohlížení kalendáře
|
||||
permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů
|
||||
permission_view_issue_watchers: Zobrazení seznamu sledujících uživatelů
|
||||
permission_add_issue_watchers: Přidání sledujících uživatelů
|
||||
permission_delete_issue_watchers: Smazat přihlížející
|
||||
permission_delete_issue_watchers: Smazat sledující uživatele
|
||||
permission_log_time: Zaznamenávání stráveného času
|
||||
permission_view_time_entries: Zobrazení stráveného času
|
||||
permission_edit_time_entries: Upravování záznamů o stráveném času
|
||||
@@ -421,7 +422,7 @@ cs:
|
||||
permission_delete_messages: Mazání zpráv
|
||||
permission_delete_own_messages: Smazat vlastní zprávy
|
||||
permission_export_wiki_pages: Exportovat Wiki stránky
|
||||
permission_manage_subtasks: Spravovat podúkoly
|
||||
permission_manage_subtasks: Spravovat dílčí úkoly
|
||||
|
||||
project_module_issue_tracking: Sledování úkolů
|
||||
project_module_time_tracking: Sledování času
|
||||
@@ -482,7 +483,7 @@ cs:
|
||||
label_enumeration_new: Nová hodnota
|
||||
label_information: Informace
|
||||
label_information_plural: Informace
|
||||
label_please_login: Prosím přihlašte se
|
||||
label_please_login: Přihlašte se, prosím
|
||||
label_register: Registrovat
|
||||
label_login_with_open_id_option: nebo se přihlašte s OpenID
|
||||
label_password_lost: Zapomenuté heslo
|
||||
@@ -579,7 +580,7 @@ cs:
|
||||
label_per_page: Na stránku
|
||||
label_calendar: Kalendář
|
||||
label_months_from: měsíců od
|
||||
label_gantt: Ganttův graf
|
||||
label_gantt: Ganttův diagram
|
||||
label_internal: Interní
|
||||
label_last_changes: "posledních %{count} změn"
|
||||
label_change_view_all: Zobrazit všechny změny
|
||||
@@ -686,9 +687,9 @@ cs:
|
||||
label_relation_delete: Odstranit souvislost
|
||||
label_relates_to: související s
|
||||
label_duplicates: duplikuje
|
||||
label_duplicated_by: zduplikován
|
||||
label_duplicated_by: duplikován
|
||||
label_blocks: blokuje
|
||||
label_blocked_by: zablokován
|
||||
label_blocked_by: blokován
|
||||
label_precedes: předchází
|
||||
label_follows: následuje
|
||||
label_end_to_start: od konce do začátku
|
||||
@@ -697,12 +698,12 @@ cs:
|
||||
label_start_to_end: od začátku do konce
|
||||
label_stay_logged_in: Zůstat přihlášený
|
||||
label_disabled: zakázán
|
||||
label_show_completed_versions: Ukázat dokončené verze
|
||||
label_show_completed_versions: Zobrazit dokončené verze
|
||||
label_me: já
|
||||
label_board: Fórum
|
||||
label_board_new: Nové fórum
|
||||
label_board_plural: Fóra
|
||||
label_board_locked: Uzamčeno
|
||||
label_board_locked: Zamčeno
|
||||
label_board_sticky: Nálepka
|
||||
label_topic_plural: Témata
|
||||
label_message_plural: Zprávy
|
||||
@@ -716,7 +717,7 @@ cs:
|
||||
label_week: Týden
|
||||
label_date_from: Od
|
||||
label_date_to: Do
|
||||
label_language_based: Podle výchozího jazyku
|
||||
label_language_based: Podle výchozího jazyka
|
||||
label_sort_by: "Seřadit podle %{value}"
|
||||
label_send_test_email: Poslat testovací email
|
||||
label_feeds_access_key: Přístupový klíč pro RSS
|
||||
@@ -728,7 +729,7 @@ cs:
|
||||
label_updated_time: "Aktualizováno před %{value}"
|
||||
label_jump_to_a_project: Vyberte projekt...
|
||||
label_file_plural: Soubory
|
||||
label_changeset_plural: Changesety
|
||||
label_changeset_plural: Sady změn
|
||||
label_default_columns: Výchozí sloupce
|
||||
label_no_change_option: (beze změny)
|
||||
label_bulk_edit_selected_issues: Hromadná úprava vybraných úkolů
|
||||
@@ -738,9 +739,9 @@ cs:
|
||||
label_user_mail_option_all: "Pro všechny události všech mých projektů"
|
||||
label_user_mail_option_selected: "Pro všechny události vybraných projektů..."
|
||||
label_user_mail_option_none: "Žádné události"
|
||||
label_user_mail_option_only_my_events: "Jen pro věci co sleduji nebo jsem v nich zapojen"
|
||||
label_user_mail_option_only_assigned: "Jen pro všeci kterým sem přiřazen"
|
||||
label_user_mail_option_only_owner: "Jen pro věci které vlastním"
|
||||
label_user_mail_option_only_my_events: "Jen pro věci, co sleduji nebo jsem v nich zapojen"
|
||||
label_user_mail_option_only_assigned: "Jen pro věci, ke kterým sem přiřazen"
|
||||
label_user_mail_option_only_owner: "Jen pro věci, které vlastním"
|
||||
label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvořených změnách"
|
||||
label_registration_activation_by_email: aktivace účtu emailem
|
||||
label_registration_manual_activation: manuální aktivace účtu
|
||||
@@ -789,7 +790,7 @@ cs:
|
||||
label_missing_api_access_key: Chybějící přístupový klíč API
|
||||
label_api_access_key_created_on: API přístupový klíč vytvořen %{value}
|
||||
label_profile: Profil
|
||||
label_subtask_plural: Podúkol
|
||||
label_subtask_plural: Dílčí úkoly
|
||||
label_project_copy_notifications: Odeslat email oznámení v průběhu kopie projektu
|
||||
label_principal_search: "Hledat uživatele nebo skupinu:"
|
||||
label_user_search: "Hledat uživatele:"
|
||||
@@ -826,7 +827,7 @@ cs:
|
||||
button_unwatch: Nesledovat
|
||||
button_reply: Odpovědět
|
||||
button_archive: Archivovat
|
||||
button_unarchive: Odarchivovat
|
||||
button_unarchive: Dearchivovat
|
||||
button_reset: Resetovat
|
||||
button_rename: Přejmenovat
|
||||
button_change_password: Změnit heslo
|
||||
@@ -841,18 +842,18 @@ cs:
|
||||
|
||||
status_active: aktivní
|
||||
status_registered: registrovaný
|
||||
status_locked: uzamčený
|
||||
status_locked: zamčený
|
||||
|
||||
version_status_open: otevřený
|
||||
version_status_locked: uzamčený
|
||||
version_status_locked: zamčený
|
||||
version_status_closed: zavřený
|
||||
|
||||
field_active: Aktivní
|
||||
|
||||
text_select_mail_notifications: Vyberte akci při které bude zasláno upozornění emailem.
|
||||
text_select_mail_notifications: Vyberte akci, při které bude zasláno upozornění emailem.
|
||||
text_regexp_info: např. ^[A-Z0-9]+$
|
||||
text_min_max_length_info: 0 znamená bez limitu
|
||||
text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a všechna související data ?
|
||||
text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a všechna související data?
|
||||
text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány."
|
||||
text_workflow_edit: Vyberte roli a frontu k editaci průběhu práce
|
||||
text_are_you_sure: Jste si jisti?
|
||||
@@ -870,7 +871,7 @@ cs:
|
||||
text_unallowed_characters: Nepovolené znaky
|
||||
text_comma_separated: Povoleno více hodnot (oddělěné čárkou).
|
||||
text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu).
|
||||
text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů
|
||||
text_issues_ref_in_commit_messages: Odkazování a opravování úkolů v poznámkách commitů
|
||||
text_issue_added: "Úkol %{id} byl vytvořen uživatelem %{author}."
|
||||
text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}."
|
||||
text_wiki_destroy_confirmation: Opravdu si přejete odstranit tuto Wiki a celý její obsah?
|
||||
@@ -880,30 +881,30 @@ cs:
|
||||
text_user_mail_option: "U projektů, které nebyly vybrány, budete dostávat oznámení pouze o vašich či o sledovaných položkách (např. o položkách jejichž jste autor nebo ke kterým jste přiřazen(a))."
|
||||
text_no_configuration_data: "Role, fronty, stavy úkolů ani průběh práce nebyly zatím nakonfigurovány.\nVelice doporučujeme nahrát výchozí konfiguraci. Po té si můžete vše upravit"
|
||||
text_load_default_configuration: Nahrát výchozí konfiguraci
|
||||
text_status_changed_by_changeset: "Použito v changesetu %{value}."
|
||||
text_time_logged_by_changeset: Aplikováno v changesetu %{value}.
|
||||
text_status_changed_by_changeset: "Použito v sadě změn %{value}."
|
||||
text_time_logged_by_changeset: Aplikováno v sadě změn %{value}.
|
||||
text_issues_destroy_confirmation: 'Opravdu si přejete odstranit všechny zvolené úkoly?'
|
||||
text_select_project_modules: 'Aktivní moduly v tomto projektu:'
|
||||
text_default_administrator_account_changed: Výchozí nastavení administrátorského účtu změněno
|
||||
text_file_repository_writable: Povolen zápis do adresáře ukládání souborů
|
||||
text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
|
||||
text_rmagick_available: RMagick k dispozici (volitelné)
|
||||
text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udělat?"
|
||||
text_destroy_time_entries: Odstranit evidované hodiny.
|
||||
text_assign_time_entries_to_project: Přiřadit evidované hodiny projektu
|
||||
text_reassign_time_entries: 'Přeřadit evidované hodiny k tomuto úkolu:'
|
||||
text_destroy_time_entries_question: "U úkolů, které chcete odstranit, je evidováno %{hours} práce. Co chete udělat?"
|
||||
text_destroy_time_entries: Odstranit zaznamenané hodiny.
|
||||
text_assign_time_entries_to_project: Přiřadit zaznamenané hodiny projektu
|
||||
text_reassign_time_entries: 'Přeřadit zaznamenané hodiny k tomuto úkolu:'
|
||||
text_user_wrote: "%{value} napsal:"
|
||||
text_enumeration_destroy_question: "Několik (%{count}) objektů je přiřazeno k této hodnotě."
|
||||
text_enumeration_category_reassign_to: 'Přeřadit je do této:'
|
||||
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."
|
||||
text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky."
|
||||
text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapováni automaticky."
|
||||
text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.'
|
||||
text_custom_field_possible_values_info: 'Každá hodnota na novém řádku'
|
||||
text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udělat?
|
||||
text_wiki_page_nullify_children: Ponechat podstránky jako kořenové stránky
|
||||
text_wiki_page_destroy_children: Smazat podstránky a všechny jejich potomky
|
||||
text_wiki_page_reassign_children: Přiřadit podstránky k tomuto rodiči
|
||||
text_own_membership_delete_confirmation: "Chystáte se odebrat si některá nebo všechny svá oprávnění a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokračovat?"
|
||||
text_own_membership_delete_confirmation: "Chystáte se odebrat si některá nebo všechna svá oprávnění, potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokračovat?"
|
||||
text_zoom_in: Přiblížit
|
||||
text_zoom_out: Oddálit
|
||||
|
||||
@@ -934,157 +935,159 @@ cs:
|
||||
enumeration_activities: Aktivity (sledování času)
|
||||
enumeration_system_activity: Systémová aktivita
|
||||
|
||||
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
|
||||
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
|
||||
label_my_queries: My custom queries
|
||||
text_journal_changed_no_detail: "%{label} updated"
|
||||
label_news_comment_added: Comment added to a news
|
||||
button_expand_all: Expand all
|
||||
button_collapse_all: Collapse all
|
||||
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
|
||||
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
|
||||
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
|
||||
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
|
||||
label_role_anonymous: Anonymous
|
||||
label_role_non_member: Non member
|
||||
label_issue_note_added: Note added
|
||||
label_issue_status_updated: Status updated
|
||||
label_issue_priority_updated: Priority updated
|
||||
label_issues_visibility_own: Issues created by or assigned to the user
|
||||
field_issues_visibility: Issues visibility
|
||||
label_issues_visibility_all: All issues
|
||||
permission_set_own_issues_private: Set own issues public or private
|
||||
field_is_private: Private
|
||||
permission_set_issues_private: Set issues public or private
|
||||
label_issues_visibility_public: All non private issues
|
||||
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
|
||||
field_warn_on_leaving_unsaved: Varuj mě před opuštěním stránky s neuloženým textem
|
||||
text_warn_on_leaving_unsaved: Aktuální stránka obsahuje neuložený text, který bude ztracen, když opustíte stránku.
|
||||
label_my_queries: Moje vlastní dotazy
|
||||
text_journal_changed_no_detail: "%{label} aktualizován"
|
||||
label_news_comment_added: K novince byl přidán komentář
|
||||
button_expand_all: Rozbal vše
|
||||
button_collapse_all: Sbal vše
|
||||
label_additional_workflow_transitions_for_assignee: Další změna stavu povolena, jestliže je uživatel přiřazen
|
||||
label_additional_workflow_transitions_for_author: Další změna stavu povolena, jestliže je uživatel autorem
|
||||
label_bulk_edit_selected_time_entries: Hromadná změna záznamů času
|
||||
text_time_entries_destroy_confirmation: Jste si jistí, že chcete smazat vybraný záznam(y) času?
|
||||
label_role_anonymous: Anonymní
|
||||
label_role_non_member: Není členem
|
||||
label_issue_note_added: Přidána poznámka
|
||||
label_issue_status_updated: Aktualizován stav
|
||||
label_issue_priority_updated: Aktualizována priorita
|
||||
label_issues_visibility_own: Úkol vytvořen nebo přiřazen uživatel(i/em)
|
||||
field_issues_visibility: Viditelnost úkolů
|
||||
label_issues_visibility_all: Všechny úkoly
|
||||
permission_set_own_issues_private: Nastavit vlastní úkoly jako veřejné nebo soukromé
|
||||
field_is_private: Soukromý
|
||||
permission_set_issues_private: Nastavit úkoly jako veřejné nebo soukromé
|
||||
label_issues_visibility_public: Všechny úkoly, které nejsou soukromé
|
||||
text_issues_destroy_descendants_confirmation: "%{count} dílčí(ch) úkol(ů) bude rovněž smazán(o)."
|
||||
field_commit_logs_encoding: Kódování zpráv při commitu
|
||||
field_scm_path_encoding: Path encoding
|
||||
text_scm_path_encoding_note: "Default: UTF-8"
|
||||
field_path_to_repository: Path to repository
|
||||
field_root_directory: Root directory
|
||||
field_cvs_module: Module
|
||||
field_scm_path_encoding: Kódování cesty SCM
|
||||
text_scm_path_encoding_note: "Výchozí: UTF-8"
|
||||
field_path_to_repository: Cesta k repositáři
|
||||
field_root_directory: Kořenový adresář
|
||||
field_cvs_module: Modul
|
||||
field_cvsroot: CVSROOT
|
||||
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
label_diff: diff
|
||||
text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo)
|
||||
description_query_sort_criteria_direction: Sort direction
|
||||
description_project_scope: Search scope
|
||||
description_filter: Filter
|
||||
description_user_mail_notification: Mail notification settings
|
||||
description_date_from: Enter start date
|
||||
description_message_content: Message content
|
||||
description_available_columns: Available Columns
|
||||
description_date_range_interval: Choose range by selecting start and end date
|
||||
description_issue_category_reassign: Choose issue category
|
||||
description_search: Searchfield
|
||||
description_notes: Notes
|
||||
description_date_range_list: Choose range from list
|
||||
description_choose_project: Projects
|
||||
description_date_to: Enter end date
|
||||
description_query_sort_criteria_attribute: Sort attribute
|
||||
description_wiki_subpages_reassign: Choose new parent page
|
||||
description_selected_columns: Selected Columns
|
||||
label_parent_revision: Parent
|
||||
label_child_revision: Child
|
||||
error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size.
|
||||
setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues
|
||||
button_edit_section: Edit this section
|
||||
setting_repositories_encodings: Attachments and repositories encodings
|
||||
description_all_columns: All Columns
|
||||
text_mercurial_repository_note: Lokální repositář (např. /hgrepo, c:\hgrepo)
|
||||
text_scm_command: Příkaz
|
||||
text_scm_command_version: Verze
|
||||
label_git_report_last_commit: Reportovat poslední commit pro soubory a adresáře
|
||||
text_scm_config: Můžete si nastavit vaše SCM příkazy v config/configuration.yml. Restartujte, prosím, aplikaci po jejich úpravě.
|
||||
text_scm_command_not_available: SCM příkaz není k dispozici. Zkontrolujte, prosím, nastavení v panelu Administrace.
|
||||
notice_issue_successful_create: Úkol %{id} vytvořen.
|
||||
label_between: mezi
|
||||
setting_issue_group_assignment: Povolit přiřazení úkolu skupině
|
||||
label_diff: rozdíl
|
||||
text_git_repository_note: Repositář je "bare and local" (např. /gitrepo, c:\gitrepo)
|
||||
description_query_sort_criteria_direction: Směr třídění
|
||||
description_project_scope: Rozsah vyhledávání
|
||||
description_filter: Filtr
|
||||
description_user_mail_notification: Nastavení emailových notifikací
|
||||
description_date_from: Zadejte počáteční datum
|
||||
description_message_content: Obsah zprávy
|
||||
description_available_columns: Dostupné sloupce
|
||||
description_date_range_interval: Zvolte rozsah výběrem počátečního a koncového data
|
||||
description_issue_category_reassign: Zvolte kategorii úkolu
|
||||
description_search: Vyhledávací pole
|
||||
description_notes: Poznámky
|
||||
description_date_range_list: Zvolte rozsah ze seznamu
|
||||
description_choose_project: Projekty
|
||||
description_date_to: Zadejte datum
|
||||
description_query_sort_criteria_attribute: Třídící atribut
|
||||
description_wiki_subpages_reassign: Zvolte novou rodičovskou stránku
|
||||
description_selected_columns: Vybraný sloupec
|
||||
label_parent_revision: Rodič
|
||||
label_child_revision: Potomek
|
||||
error_scm_annotate_big_text_file: Vstup nemůže být komentován, protože překračuje povolenou velikost textového souboru
|
||||
setting_default_issue_start_date_to_creation_date: Použij aktuální datum jako počáteční datum pro nové úkoly
|
||||
button_edit_section: Uprav tuto část
|
||||
setting_repositories_encodings: Kódování příloh a repositářů
|
||||
description_all_columns: Všechny sloupce
|
||||
button_export: Export
|
||||
label_export_options: "%{export_format} export options"
|
||||
error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})
|
||||
notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
|
||||
label_export_options: "nastavení exportu %{export_format}"
|
||||
error_attachment_too_big: Soubor nemůže být nahrán, protože jeho velikost je větší než maximální (%{max_size})
|
||||
notice_failed_to_save_time_entries: "Chyba při ukládání %{count} časov(ých/ého) záznam(ů) z %{total} vybraného: %{ids}."
|
||||
label_x_issues:
|
||||
zero: 0 Úkol
|
||||
one: 1 Úkol
|
||||
other: "%{count} Úkoly"
|
||||
label_repository_new: New repository
|
||||
field_repository_is_default: Main repository
|
||||
label_copy_attachments: Copy attachments
|
||||
label_repository_new: Nový repositář
|
||||
field_repository_is_default: Hlavní repositář
|
||||
label_copy_attachments: Kopírovat přílohy
|
||||
label_item_position: "%{position}/%{count}"
|
||||
label_completed_versions: Completed versions
|
||||
text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
|
||||
field_multiple: Multiple values
|
||||
setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed
|
||||
text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes
|
||||
text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten)
|
||||
notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
|
||||
text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
|
||||
permission_manage_related_issues: Manage related issues
|
||||
field_auth_source_ldap_filter: LDAP filter
|
||||
label_search_for_watchers: Search for watchers to add
|
||||
notice_account_deleted: Your account has been permanently deleted.
|
||||
setting_unsubscribe: Allow users to delete their own account
|
||||
button_delete_my_account: Delete my account
|
||||
label_completed_versions: Dokončené verze
|
||||
text_project_identifier_info: Jsou povolena pouze malá písmena (a-z), číslice, pomlčky a podtržítka.<br />Po uložení již nelze identifikátor měnit.
|
||||
field_multiple: Více hodnot
|
||||
setting_commit_cross_project_ref: Povolit reference a opravy úkolů ze všech ostatních projektů
|
||||
text_issue_conflict_resolution_add_notes: Přidat moje poznámky a zahodit ostatní změny
|
||||
text_issue_conflict_resolution_overwrite: Přesto přijmout moje úpravy (předchozí poznámky budou zachovány, ale některé změny mohou být přepsány)
|
||||
notice_issue_update_conflict: Během vašich úprav byl úkol aktualizován jiným uživatelem.
|
||||
text_issue_conflict_resolution_cancel: Zahoď všechny moje změny a znovu zobraz %{link}
|
||||
permission_manage_related_issues: Spravuj související úkoly
|
||||
field_auth_source_ldap_filter: LDAP filtr
|
||||
label_search_for_watchers: Hledej sledující pro přidání
|
||||
notice_account_deleted: Váš účet byl trvale smazán.
|
||||
setting_unsubscribe: Povolit uživatelům smazání jejich vlastního účtu
|
||||
button_delete_my_account: Smazat můj účet
|
||||
text_account_destroy_confirmation: |-
|
||||
Are you sure you want to proceed?
|
||||
Your account will be permanently deleted, with no way to reactivate it.
|
||||
error_session_expired: Your session has expired. Please login again.
|
||||
text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
|
||||
setting_session_lifetime: Session maximum lifetime
|
||||
setting_session_timeout: Session inactivity timeout
|
||||
label_session_expiration: Session expiration
|
||||
permission_close_project: Close / reopen the project
|
||||
label_show_closed_projects: View closed projects
|
||||
button_close: Close
|
||||
button_reopen: Reopen
|
||||
project_status_active: active
|
||||
project_status_closed: closed
|
||||
project_status_archived: archived
|
||||
text_project_closed: This project is closed and read-only.
|
||||
notice_user_successful_create: User %{id} created.
|
||||
field_core_fields: Standard fields
|
||||
field_timeout: Timeout (in seconds)
|
||||
setting_thumbnails_enabled: Display attachment thumbnails
|
||||
setting_thumbnails_size: Thumbnails size (in pixels)
|
||||
label_status_transitions: Status transitions
|
||||
label_fields_permissions: Fields permissions
|
||||
label_readonly: Read-only
|
||||
label_required: Required
|
||||
text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
|
||||
field_board_parent: Parent forum
|
||||
label_attribute_of_project: Project's %{name}
|
||||
label_attribute_of_author: Author's %{name}
|
||||
label_attribute_of_assigned_to: Assignee's %{name}
|
||||
label_attribute_of_fixed_version: Target version's %{name}
|
||||
label_copy_subtasks: Copy subtasks
|
||||
label_copied_to: copied to
|
||||
label_copied_from: copied from
|
||||
label_any_issues_in_project: any issues in project
|
||||
label_any_issues_not_in_project: any issues not in project
|
||||
field_private_notes: Private notes
|
||||
permission_view_private_notes: View private notes
|
||||
permission_set_notes_private: Set notes as private
|
||||
label_no_issues_in_project: no issues in project
|
||||
Skutečně chcete pokračovat?
|
||||
Váš účet bude nenávratně smazán.
|
||||
error_session_expired: Vaše sezení vypršelo. Znovu se přihlaste, prosím.
|
||||
text_session_expiration_settings: "Varování: změnou tohoto nastavení mohou vypršet aktuální sezení včetně toho vašeho."
|
||||
setting_session_lifetime: Maximální čas sezení
|
||||
setting_session_timeout: Vypršení sezení bez aktivity
|
||||
label_session_expiration: Vypršení sezení
|
||||
permission_close_project: Zavřít / Otevřít projekt
|
||||
label_show_closed_projects: Zobrazit zavřené projekty
|
||||
button_close: Zavřít
|
||||
button_reopen: Znovu otevřít
|
||||
project_status_active: aktivní
|
||||
project_status_closed: zavřený
|
||||
project_status_archived: archivovaný
|
||||
text_project_closed: Tento projekt je uzevřený a je pouze pro čtení.
|
||||
notice_user_successful_create: Uživatel %{id} vytvořen.
|
||||
field_core_fields: Standardní pole
|
||||
field_timeout: Vypršení (v sekundách)
|
||||
setting_thumbnails_enabled: Zobrazit náhled přílohy
|
||||
setting_thumbnails_size: Velikost náhledu (v pixelech)
|
||||
label_status_transitions: Změna stavu
|
||||
label_fields_permissions: Práva k polím
|
||||
label_readonly: Pouze pro čtení
|
||||
label_required: Vyžadováno
|
||||
text_repository_identifier_info: Jou povoleny pouze malá písmena (a-z), číslice, pomlčky a podtržítka.<br />Po uložení již nelze identifikátor změnit.
|
||||
field_board_parent: Rodičovské fórum
|
||||
label_attribute_of_project: Projektové %{name}
|
||||
label_attribute_of_author: Autorovo %{name}
|
||||
label_attribute_of_assigned_to: "%{name} přiřazené(ho)"
|
||||
label_attribute_of_fixed_version: Cílová verze %{name}
|
||||
label_copy_subtasks: Kopírovat dílčí úkoly
|
||||
label_copied_to: zkopírováno do
|
||||
label_copied_from: zkopírováno z
|
||||
label_any_issues_in_project: jakékoli úkoly v projektu
|
||||
label_any_issues_not_in_project: jakékoli úkoly mimo projekt
|
||||
field_private_notes: Soukromé poznámky
|
||||
permission_view_private_notes: Zobrazit soukromé poznámky
|
||||
permission_set_notes_private: Nastavit poznámky jako soukromé
|
||||
label_no_issues_in_project: žádné úkoly v projektu
|
||||
label_any: vše
|
||||
label_last_n_weeks: last %{count} weeks
|
||||
setting_cross_project_subtasks: Allow cross-project subtasks
|
||||
label_last_n_weeks: poslední %{count} týdny
|
||||
setting_cross_project_subtasks: Povolit dílčí úkoly napříč projekty
|
||||
label_cross_project_descendants: S podprojekty
|
||||
label_cross_project_tree: Se stromem projektu
|
||||
label_cross_project_hierarchy: S hierarchií projektu
|
||||
label_cross_project_system: Se všemi projekty
|
||||
button_hide: Hide
|
||||
setting_non_working_week_days: Non-working days
|
||||
label_in_the_next_days: in the next
|
||||
label_in_the_past_days: in the past
|
||||
label_attribute_of_user: User's %{name}
|
||||
text_turning_multiple_off: If you disable multiple values, multiple values will be
|
||||
removed in order to preserve only one value per item.
|
||||
label_attribute_of_issue: Issue's %{name}
|
||||
permission_add_documents: Add documents
|
||||
permission_edit_documents: Edit documents
|
||||
permission_delete_documents: Delete documents
|
||||
label_gantt_progress_line: Progress line
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
button_hide: Skrýt
|
||||
setting_non_working_week_days: Dny pracovního volna/klidu
|
||||
label_in_the_next_days: v přístích
|
||||
label_in_the_past_days: v minulých
|
||||
label_attribute_of_user: "%{name} uživatel(e/ky)"
|
||||
text_turning_multiple_off: Jestliže zakážete více hodnot,
|
||||
hodnoty budou smazány za účelem rezervace pouze jediné hodnoty na položku.
|
||||
label_attribute_of_issue: "%{name} úkolu"
|
||||
permission_add_documents: Přidat dokument
|
||||
permission_edit_documents: Upravit dokumenty
|
||||
permission_delete_documents: Smazet dokumenty
|
||||
label_gantt_progress_line: Vývojová čára
|
||||
setting_jsonp_enabled: Povolit podporu JSONP
|
||||
field_inherit_members: Zdědit členy
|
||||
field_closed_on: Uzavřeno
|
||||
setting_default_projects_tracker_ids: Výchozí fronta pro nové projekty
|
||||
label_total_time: Celkem
|
||||
|
||||
@@ -941,7 +941,6 @@ da:
|
||||
label_principal_search: "Søg efter bruger eller gruppe:"
|
||||
label_user_search: "Søg efter bruger:"
|
||||
field_visible: Synlig
|
||||
setting_emails_header: Emails header
|
||||
setting_commit_logtime_activity_id: Aktivitet for registreret tid
|
||||
text_time_logged_by_changeset: Anvendt i changeset %{value}.
|
||||
setting_commit_logtime_enabled: Aktiver tidsregistrering
|
||||
@@ -983,8 +982,6 @@ da:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1102,3 +1099,8 @@ da:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -144,7 +144,7 @@ de:
|
||||
greater_than_start_date: "muss größer als Anfangsdatum sein"
|
||||
not_same_project: "gehört nicht zum selben Projekt"
|
||||
circular_dependency: "Diese Beziehung würde eine zyklische Abhängigkeit erzeugen"
|
||||
cant_link_an_issue_with_a_descendant: "Ein Ticket kann nicht mit einer ihrer Unteraufgaben verlinkt werden"
|
||||
cant_link_an_issue_with_a_descendant: "Ein Ticket kann nicht mit einer Ihrer Unteraufgaben verlinkt werden"
|
||||
|
||||
actionview_instancetag_blank_option: Bitte auswählen
|
||||
|
||||
@@ -280,7 +280,7 @@ de:
|
||||
field_attr_login: Mitgliedsname-Attribut
|
||||
field_attr_mail: E-Mail-Attribut
|
||||
field_auth_source: Authentifizierungs-Modus
|
||||
field_auth_source_ldap_filter: LDAP Filter
|
||||
field_auth_source_ldap_filter: LDAP-Filter
|
||||
field_author: Autor
|
||||
field_base_dn: Base DN
|
||||
field_board_parent: Übergeordnetes Forum
|
||||
@@ -347,7 +347,7 @@ de:
|
||||
field_parent_title: Übergeordnete Seite
|
||||
field_password: Kennwort
|
||||
field_password_confirmation: Bestätigung
|
||||
field_path_to_repository: Pfad zum repository
|
||||
field_path_to_repository: Pfad zum Repository
|
||||
field_port: Port
|
||||
field_possible_values: Mögliche Werte
|
||||
field_principal: Auftraggeber
|
||||
@@ -359,7 +359,7 @@ de:
|
||||
field_repository_is_default: Haupt-Repository
|
||||
field_role: Rolle
|
||||
field_root_directory: Wurzelverzeichnis
|
||||
field_scm_path_encoding: Pfad Kodierung
|
||||
field_scm_path_encoding: Pfad-Kodierung
|
||||
field_searchable: Durchsuchbar
|
||||
field_sharing: Gemeinsame Verwendung
|
||||
field_spent_on: Datum
|
||||
@@ -382,7 +382,7 @@ de:
|
||||
field_value: Wert
|
||||
field_version: Version
|
||||
field_visible: Sichtbar
|
||||
field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen
|
||||
field_warn_on_leaving_unsaved: Vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen
|
||||
field_watcher: Beobachter
|
||||
|
||||
general_csv_decimal_separator: ','
|
||||
@@ -473,7 +473,7 @@ de:
|
||||
label_copied: kopiert
|
||||
label_copied_from: Kopiert von
|
||||
label_copied_to: Kopiert nach
|
||||
label_copy_attachments: Anhänge Kopieren
|
||||
label_copy_attachments: Anhänge kopieren
|
||||
label_copy_same_as_target: So wie das Ziel
|
||||
label_copy_source: Quelle
|
||||
label_copy_subtasks: Unteraufgaben kopieren
|
||||
@@ -525,7 +525,7 @@ de:
|
||||
label_f_hour: "%{value} Stunde"
|
||||
label_f_hour_plural: "%{value} Stunden"
|
||||
label_feed_plural: Feeds
|
||||
label_feeds_access_key: RSS-Zugriffsschlüssel
|
||||
label_feeds_access_key: Atom-Zugriffsschlüssel
|
||||
label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor %{value} erstellt"
|
||||
label_fields_permissions: Feldberechtigungen
|
||||
label_file_added: Datei hinzugefügt
|
||||
@@ -577,7 +577,7 @@ de:
|
||||
label_issue_watchers: Beobachter
|
||||
label_issues_by: "Tickets pro %{value}"
|
||||
label_issues_visibility_all: Alle Tickets
|
||||
label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind
|
||||
label_issues_visibility_own: Tickets die folgender Benutzer erstellt hat oder die ihm zugewiesen sind
|
||||
label_issues_visibility_public: Alle öffentlichen Tickets
|
||||
label_item_position: "%{position}/%{count}"
|
||||
label_jump_to_a_project: Zu einem Projekt springen...
|
||||
@@ -610,7 +610,7 @@ de:
|
||||
label_message_posted: Forenbeitrag hinzugefügt
|
||||
label_min_max_length: Länge (Min. - Max.)
|
||||
label_missing_api_access_key: Der API-Zugriffsschlüssel fehlt.
|
||||
label_missing_feeds_access_key: Der RSS-Zugriffsschlüssel fehlt.
|
||||
label_missing_feeds_access_key: Der Atom-Zugriffsschlüssel fehlt.
|
||||
label_modified: geändert
|
||||
label_module_plural: Module
|
||||
label_month: Monat
|
||||
@@ -755,8 +755,8 @@ de:
|
||||
label_user_anonymous: Anonym
|
||||
label_user_mail_no_self_notified: "Ich möchte nicht über Änderungen benachrichtigt werden, die ich selbst durchführe."
|
||||
label_user_mail_option_all: "Für alle Ereignisse in all meinen Projekten"
|
||||
label_user_mail_option_none: keine Ereignisse
|
||||
label_user_mail_option_only_assigned: Nur für Aufgaben für die ich zuständig bin.
|
||||
label_user_mail_option_none: Keine Ereignisse
|
||||
label_user_mail_option_only_assigned: Nur für Aufgaben für die ich zuständig bin
|
||||
label_user_mail_option_only_my_events: Nur für Aufgaben die ich beobachte oder an welchen ich mitarbeite
|
||||
label_user_mail_option_only_owner: Nur für Aufgaben die ich angelegt habe
|
||||
label_user_mail_option_selected: "Für alle Ereignisse in den ausgewählten Projekten..."
|
||||
@@ -777,8 +777,8 @@ de:
|
||||
label_watched_issues: Beobachtete Tickets
|
||||
label_week: Woche
|
||||
label_wiki: Wiki
|
||||
label_wiki_content_added: Die Wiki-Seite wurde erfolgreich hinzugefügt.
|
||||
label_wiki_content_updated: Die Wiki-Seite wurde erfolgreich aktualisiert.
|
||||
label_wiki_content_added: Wiki-Seite hinzugefügt
|
||||
label_wiki_content_updated: Wiki-Seite aktualisiert
|
||||
label_wiki_edit: Wiki-Bearbeitung
|
||||
label_wiki_edit_plural: Wiki-Bearbeitungen
|
||||
label_wiki_page: Wiki-Seite
|
||||
@@ -872,7 +872,7 @@ de:
|
||||
permission_browse_repository: Projektarchiv ansehen
|
||||
permission_close_project: Schließen / erneutes Öffnen eines Projekts
|
||||
permission_comment_news: News kommentieren
|
||||
permission_commit_access: Commit-Zugriff (über WebDAV)
|
||||
permission_commit_access: Commit-Zugriff
|
||||
permission_delete_issue_watchers: Beobachter löschen
|
||||
permission_delete_issues: Tickets löschen
|
||||
permission_delete_messages: Forenbeiträge löschen
|
||||
@@ -964,11 +964,11 @@ de:
|
||||
setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen
|
||||
setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen
|
||||
setting_emails_footer: E-Mail-Fußzeile
|
||||
setting_emails_header: E-Mail Betreffzeile
|
||||
setting_emails_header: E-Mail-Kopfzeile
|
||||
setting_enabled_scm: Aktivierte Versionskontrollsysteme
|
||||
setting_feeds_limit: Max. Anzahl Einträge pro Atom-Feed
|
||||
setting_file_max_size_displayed: Maximale Größe inline angezeigter Textdateien
|
||||
setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden.
|
||||
setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden
|
||||
setting_gravatar_default: Standard-Gravatar-Bild
|
||||
setting_gravatar_enabled: Gravatar-Benutzerbilder benutzen
|
||||
setting_host_name: Hostname
|
||||
@@ -991,7 +991,7 @@ de:
|
||||
setting_per_page_options: Objekte pro Seite
|
||||
setting_plain_text_mail: Nur reinen Text (kein HTML) senden
|
||||
setting_protocol: Protokoll
|
||||
setting_repositories_encodings: Encoding von Anhängen und Repositories
|
||||
setting_repositories_encodings: Enkodierung von Anhängen und Repositories
|
||||
setting_repository_log_display_limit: Maximale Anzahl anzuzeigender Revisionen in der Historie einer Datei
|
||||
setting_rest_api_enabled: REST-Schnittstelle aktivieren
|
||||
setting_self_registration: Anmeldung ermöglicht
|
||||
@@ -1008,6 +1008,7 @@ de:
|
||||
setting_user_format: Benutzer-Anzeigeformat
|
||||
setting_welcome_text: Willkommenstext
|
||||
setting_wiki_compression: Wiki-Historie komprimieren
|
||||
setting_default_projects_tracker_ids: Standardmäßig aktivierte Tracker für neue Projekte
|
||||
|
||||
status_active: aktiv
|
||||
status_locked: gesperrt
|
||||
@@ -1054,7 +1055,7 @@ de:
|
||||
text_own_membership_delete_confirmation: "Sie sind dabei, einige oder alle Ihre Berechtigungen zu entfernen. Es ist möglich, dass Sie danach das Projekt nicht mehr ansehen oder bearbeiten dürfen.\nSind Sie sicher, dass Sie dies tun möchten?"
|
||||
text_plugin_assets_writable: Verzeichnis für Plugin-Assets beschreibbar
|
||||
text_project_closed: Dieses Projekt ist geschlossen und kann nicht bearbeitet werden.
|
||||
text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt löschen wollen?
|
||||
text_project_destroy_confirmation: Sind Sie sicher, dass Sie das Projekt löschen wollen?
|
||||
text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt, muss mit einem Kleinbuchstaben beginnen.<br />Einmal gespeichert, kann die Kennung nicht mehr geändert werden.'
|
||||
text_reassign_time_entries: 'Gebuchte Aufwände diesem Ticket zuweisen:'
|
||||
text_regexp_info: z. B. ^[A-Z0-9]+$
|
||||
@@ -1062,7 +1063,7 @@ de:
|
||||
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_rmagick_available: RMagick verfügbar (optional)
|
||||
text_scm_command: Kommando
|
||||
text_scm_command_not_available: Scm Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel.
|
||||
text_scm_command_not_available: SCM-Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel.
|
||||
text_scm_command_version: Version
|
||||
text_scm_config: Die SCM-Kommandos können in der in config/configuration.yml konfiguriert werden. Redmine muss anschließend neu gestartet werden.
|
||||
text_scm_path_encoding_note: "Standard: UTF-8"
|
||||
@@ -1089,11 +1090,12 @@ de:
|
||||
text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene
|
||||
text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu
|
||||
text_workflow_edit: Workflow zum Bearbeiten auswählen
|
||||
text_zoom_in: Zoom in
|
||||
text_zoom_out: Zoom out
|
||||
text_zoom_in: Ansicht vergrößern
|
||||
text_zoom_out: Ansicht verkleinern
|
||||
|
||||
version_status_closed: abgeschlossen
|
||||
version_status_locked: gesperrt
|
||||
version_status_open: offen
|
||||
|
||||
warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden."
|
||||
label_total_time: Gesamtzeit
|
||||
|
||||
@@ -925,7 +925,6 @@ el:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -966,8 +965,6 @@ el:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1085,3 +1082,8 @@ el:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Σύνολο
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -338,8 +338,8 @@ en-GB:
|
||||
setting_time_format: Time format
|
||||
setting_cross_project_issue_relations: Allow cross-project issue relations
|
||||
setting_issue_list_default_columns: Default columns displayed on the issue list
|
||||
setting_emails_header: Emails header
|
||||
setting_emails_footer: Emails footer
|
||||
setting_emails_header: Email header
|
||||
setting_emails_footer: Email footer
|
||||
setting_protocol: Protocol
|
||||
setting_per_page_options: Objects per page options
|
||||
setting_user_format: Users display format
|
||||
@@ -972,8 +972,8 @@ en-GB:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
label_diff: diff
|
||||
@@ -1087,3 +1087,5 @@ en-GB:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
|
||||
@@ -359,8 +359,8 @@ en:
|
||||
setting_cross_project_subtasks: Allow cross-project subtasks
|
||||
setting_issue_list_default_columns: Default columns displayed on the issue list
|
||||
setting_repositories_encodings: Attachments and repositories encodings
|
||||
setting_emails_header: Emails header
|
||||
setting_emails_footer: Emails footer
|
||||
setting_emails_header: Email header
|
||||
setting_emails_footer: Email footer
|
||||
setting_protocol: Protocol
|
||||
setting_per_page_options: Objects per page options
|
||||
setting_user_format: Users display format
|
||||
@@ -400,6 +400,7 @@ en:
|
||||
setting_thumbnails_size: Thumbnails size (in pixels)
|
||||
setting_non_working_week_days: Non-working days
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
|
||||
permission_add_project: Create project
|
||||
permission_add_subprojects: Create subprojects
|
||||
@@ -617,6 +618,7 @@ en:
|
||||
one: 1 issue
|
||||
other: "%{count} issues"
|
||||
label_total: Total
|
||||
label_total_time: Total time
|
||||
label_permissions: Permissions
|
||||
label_current_status: Current status
|
||||
label_new_statuses_allowed: New statuses allowed
|
||||
@@ -1025,8 +1027,8 @@ en:
|
||||
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
text_issue_conflict_resolution_overwrite: "Apply my changes anyway (previous notes will be kept but some changes may be overwritten)"
|
||||
text_issue_conflict_resolution_add_notes: "Add my notes and discard my other changes"
|
||||
text_issue_conflict_resolution_cancel: "Discard all my changes and redisplay %{link}"
|
||||
|
||||
@@ -1121,3 +1121,5 @@ es:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
|
||||
@@ -1098,3 +1098,5 @@ et:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: "Kokku"
|
||||
|
||||
@@ -967,8 +967,6 @@ eu:
|
||||
text_scm_command: Komandoa
|
||||
text_scm_command_version: Bertsioa
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1086,3 +1084,7 @@ eu:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Guztira
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
|
||||
@@ -968,8 +968,6 @@ fa:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1087,3 +1085,7 @@ fa:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: جمله
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
|
||||
@@ -946,7 +946,6 @@ fi:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -987,8 +986,6 @@ fi:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1106,3 +1103,8 @@ fi:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Yhteensä
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -397,6 +397,7 @@ fr:
|
||||
setting_thumbnails_size: Taille des vignettes (en pixels)
|
||||
setting_non_working_week_days: Jours non travaillés
|
||||
setting_jsonp_enabled: Activer le support JSONP
|
||||
setting_default_projects_tracker_ids: Trackers par défaut pour les nouveaux projets
|
||||
|
||||
permission_add_project: Créer un projet
|
||||
permission_add_subprojects: Créer des sous-projets
|
||||
@@ -611,6 +612,7 @@ fr:
|
||||
one: 1 demande
|
||||
other: "%{count} demandes"
|
||||
label_total: Total
|
||||
label_total_time: Temps total
|
||||
label_permissions: Permissions
|
||||
label_current_status: Statut actuel
|
||||
label_new_statuses_allowed: Nouveaux statuts autorisés
|
||||
|
||||
@@ -936,7 +936,6 @@ gl:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -977,8 +976,6 @@ gl:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1096,3 +1093,8 @@ gl:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -930,7 +930,6 @@ he:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -971,8 +970,6 @@ he:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1090,3 +1087,8 @@ he:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: סה"כ
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -926,7 +926,6 @@ hr:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -967,8 +966,6 @@ hr:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1086,3 +1083,8 @@ hr:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Ukupno
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -985,8 +985,6 @@
|
||||
text_scm_command: Parancs
|
||||
text_scm_command_version: Verzió
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1104,3 +1102,7 @@
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Összesen
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
|
||||
@@ -929,7 +929,6 @@ id:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -970,8 +969,6 @@ id:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1089,3 +1086,8 @@ id:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -1086,3 +1086,5 @@ it:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Totale
|
||||
|
||||
@@ -401,6 +401,7 @@ ja:
|
||||
setting_commit_logtime_enabled: コミット時に作業時間を記録する
|
||||
setting_commit_logtime_activity_id: 作業時間の作業分類
|
||||
setting_gantt_items_limit: ガントチャート最大表示項目数
|
||||
setting_default_projects_tracker_ids: 新規プロジェクトにおいてデフォルトで有効になるトラッカー
|
||||
|
||||
permission_add_project: プロジェクトの追加
|
||||
permission_add_subprojects: サブプロジェクトの追加
|
||||
@@ -904,9 +905,9 @@ ja:
|
||||
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_tip_issue_begin_day: この日に開始するチケット
|
||||
text_tip_issue_end_day: この日に終了するチケット
|
||||
text_tip_issue_begin_end_day: この日に開始・終了するチケット
|
||||
text_caracters_maximum: "最大%{count}文字です。"
|
||||
text_caracters_minimum: "最低%{count}文字の長さが必要です"
|
||||
text_length_between: "長さは%{min}から%{max}文字までです。"
|
||||
@@ -1112,5 +1113,6 @@ ja:
|
||||
permission_edit_documents: 文書の編集
|
||||
permission_delete_documents: 文書の削除
|
||||
setting_jsonp_enabled: JSONPを有効にする
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
field_inherit_members: メンバーを継承
|
||||
field_closed_on: 終了日
|
||||
label_total_time: 合計
|
||||
|
||||
@@ -231,7 +231,7 @@ ko:
|
||||
mail_body_account_information: 계정 정보
|
||||
mail_subject_account_activation_request: "%{value} 계정 활성화 요청"
|
||||
mail_body_account_activation_request: "새 사용자(%{value})가 등록되었습니다. 관리자님의 승인을 기다리고 있습니다.:"
|
||||
mail_body_reminder: "당신이 맡고 있는 일감 %{count}개의 완료 기한이 %{days}일 후 입니다."
|
||||
mail_body_reminder: "당신이 맡고 있는 일감 %{count}개의 완료기한이 %{days}일 후 입니다."
|
||||
mail_subject_reminder: "내일이 만기인 일감 %{count}개 (%{days})"
|
||||
mail_subject_wiki_content_added: "위키페이지 '%{id}'이(가) 추가되었습니다."
|
||||
mail_subject_wiki_content_updated: "'위키페이지 %{id}'이(가) 수정되었습니다."
|
||||
@@ -269,7 +269,7 @@ ko:
|
||||
field_is_default: 기본값
|
||||
field_tracker: 유형
|
||||
field_subject: 제목
|
||||
field_due_date: 완료 기한
|
||||
field_due_date: 완료기한
|
||||
field_assigned_to: 담당자
|
||||
field_priority: 우선순위
|
||||
field_fixed_version: 목표버전
|
||||
@@ -324,7 +324,7 @@ ko:
|
||||
field_comments_sorting: 댓글 정렬
|
||||
field_parent_title: 상위 제목
|
||||
field_editable: 편집가능
|
||||
field_watcher: 일감지킴이
|
||||
field_watcher: 일감관람자
|
||||
field_identity_url: OpenID URL
|
||||
field_content: 내용
|
||||
field_group_by: 결과를 묶어 보여줄 기준
|
||||
@@ -390,8 +390,8 @@ ko:
|
||||
permission_save_queries: 검색양식 저장
|
||||
permission_view_gantt: Gantt차트 보기
|
||||
permission_view_calendar: 달력 보기
|
||||
permission_view_issue_watchers: 일감지킴이 보기
|
||||
permission_add_issue_watchers: 일감지킴이 추가
|
||||
permission_view_issue_watchers: 일감관람자 보기
|
||||
permission_add_issue_watchers: 일감관람자 추가
|
||||
permission_log_time: 작업시간 기록
|
||||
permission_view_time_entries: 시간입력 보기
|
||||
permission_edit_time_entries: 시간입력 편집
|
||||
@@ -457,9 +457,9 @@ ko:
|
||||
label_role_plural: 역할
|
||||
label_role_new: 새 역할
|
||||
label_role_and_permissions: 역할 및 권한
|
||||
label_member: 담당자
|
||||
label_member_new: 새 담당자
|
||||
label_member_plural: 담당자
|
||||
label_member: 구성원
|
||||
label_member_new: 새 구성원
|
||||
label_member_plural: 구성원
|
||||
label_tracker: 일감 유형
|
||||
label_tracker_plural: 일감 유형
|
||||
label_tracker_new: 새 일감 유형
|
||||
@@ -660,8 +660,8 @@ ko:
|
||||
label_commits_per_month: 월별 커밋 내역
|
||||
label_commits_per_author: 저자별 커밋 내역
|
||||
label_view_diff: 차이점 보기
|
||||
label_diff_inline: 한줄로
|
||||
label_diff_side_by_side: 두줄로
|
||||
label_diff_inline: 두줄로
|
||||
label_diff_side_by_side: 한줄로
|
||||
label_options: 옵션
|
||||
label_copy_workflow_from: 업무흐름 복사하기
|
||||
label_permissions_report: 권한 보고서
|
||||
@@ -741,7 +741,7 @@ ko:
|
||||
label_planning: 프로젝트계획
|
||||
label_incoming_emails: 수신 메일
|
||||
label_generate_key: 키 생성
|
||||
label_issue_watchers: 일감지킴이
|
||||
label_issue_watchers: 일감관람자
|
||||
label_example: 예
|
||||
label_display: 표시방식
|
||||
label_sort: 정렬
|
||||
@@ -787,7 +787,7 @@ ko:
|
||||
button_change_password: 비밀번호 바꾸기
|
||||
button_copy: 복사
|
||||
button_annotate: 이력해설
|
||||
button_update: 수정
|
||||
button_update: 업데이트
|
||||
button_configure: 설정
|
||||
button_quote: 댓글달기
|
||||
|
||||
@@ -886,7 +886,7 @@ ko:
|
||||
text_journal_added: "%{label}에 %{value}이(가) 추가되었습니다."
|
||||
field_active: 사용중
|
||||
enumeration_system_activity: 시스템 작업
|
||||
permission_delete_issue_watchers: 일감지킴이 지우기
|
||||
permission_delete_issue_watchers: 일감관람자 지우기
|
||||
version_status_closed: 닫힘
|
||||
version_status_locked: 잠김
|
||||
version_status_open: 진행
|
||||
@@ -1002,7 +1002,7 @@ ko:
|
||||
permission_set_own_issues_private: "자신의 일감을 공개나 비공개로 설정"
|
||||
field_is_private: "비공개"
|
||||
permission_set_issues_private: "일감을 공개나 비공개로 설정"
|
||||
label_issues_visibility_public: "모든 비공개 일감"
|
||||
label_issues_visibility_public: "비공개 일감 제외"
|
||||
text_issues_destroy_descendants_confirmation: "%{count} 개의 하위 일감을 삭제할 것입니다."
|
||||
field_commit_logs_encoding: "커밋(commit) 기록 인코딩"
|
||||
field_scm_path_encoding: "경로 인코딩"
|
||||
@@ -1069,7 +1069,7 @@ ko:
|
||||
text_issue_conflict_resolution_cancel: "변경내용을 되돌리고 다시 표시 %{link}"
|
||||
permission_manage_related_issues: 연결된 일감 관리
|
||||
field_auth_source_ldap_filter: LDAP 필터
|
||||
label_search_for_watchers: 추가할 일감지킴이 검색
|
||||
label_search_for_watchers: 추가할 일감관람자 검색
|
||||
notice_account_deleted: 당신의 계정이 완전히 삭제되었습니다.
|
||||
setting_unsubscribe: 사용자들이 자신의 계정을 삭제토록 허용
|
||||
button_delete_my_account: 나의 계정 삭제
|
||||
@@ -1112,7 +1112,7 @@ ko:
|
||||
field_private_notes: 비공개 덧글
|
||||
permission_view_private_notes: 비공개 덧글 보기
|
||||
permission_set_notes_private: 덧글을 비공개로 설정
|
||||
label_no_issues_in_project: 다음 프로젝트 내에서 해당 일감 없음
|
||||
label_no_issues_in_project: 다음 프로젝트의 일감 제외
|
||||
label_any: 모두
|
||||
label_last_n_weeks: 최근 %{count} 주
|
||||
setting_cross_project_subtasks: 다른 프로젝트의 일감을 상위 일감으로 지정하는 것을 허용
|
||||
@@ -1124,14 +1124,15 @@ ko:
|
||||
setting_non_working_week_days: 비근무일 (non-working days)
|
||||
label_in_the_next_days: 다음
|
||||
label_in_the_past_days: 지난
|
||||
label_attribute_of_user: User's %{name}
|
||||
text_turning_multiple_off: If you disable multiple values, multiple values will be
|
||||
removed in order to preserve only one value per item.
|
||||
label_attribute_of_issue: Issue's %{name}
|
||||
permission_add_documents: Add documents
|
||||
permission_edit_documents: Edit documents
|
||||
permission_delete_documents: Delete documents
|
||||
label_attribute_of_user: "사용자의 %{name}"
|
||||
text_turning_multiple_off: 복수선택을 비활성화하면, 하나의 값을 제외한 나머지 값들이 지워집니다.
|
||||
label_attribute_of_issue: "일감의 %{name}"
|
||||
permission_add_documents: 문서 추가
|
||||
permission_edit_documents: 문서 편집
|
||||
permission_delete_documents: 문서 삭제
|
||||
label_gantt_progress_line: Progress line
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_jsonp_enabled: JSONP 허용
|
||||
field_inherit_members: 상위 프로젝트로부터 구성원을 상속
|
||||
field_closed_on: 완료일
|
||||
setting_default_projects_tracker_ids: 새 프로젝트에 기본적으로 추가할 일감 유형
|
||||
label_total_time: 합계
|
||||
|
||||
@@ -1008,8 +1008,6 @@ lt:
|
||||
text_mercurial_repository_note: Vietinė saugykla (e.g. /hgrepo, c:\hgrepo)
|
||||
text_scm_command: Komanda
|
||||
text_scm_command_version: Versija
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
|
||||
default_role_manager: Vadovas
|
||||
default_role_developer: Projektuotojas
|
||||
@@ -1144,3 +1142,7 @@ lt:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Iš viso
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
|
||||
@@ -919,7 +919,6 @@ lv:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -960,8 +959,6 @@ lv:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1079,3 +1076,8 @@ lv:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Kopā
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -327,7 +327,6 @@ mk:
|
||||
setting_time_format: Формат на време
|
||||
setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти
|
||||
setting_issue_list_default_columns: Default columns displayed on the issue list
|
||||
setting_emails_footer: Emails footer
|
||||
setting_protocol: Протокол
|
||||
setting_per_page_options: Objects per page options
|
||||
setting_user_format: Приказ на корисниците
|
||||
@@ -925,7 +924,6 @@ mk:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -966,8 +964,6 @@ mk:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1085,3 +1081,9 @@ mk:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Вкупно
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_footer: Email footer
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -926,7 +926,6 @@ mn:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -967,8 +966,6 @@ mn:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1086,3 +1083,8 @@ mn:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Нийт
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -908,7 +908,6 @@ nl:
|
||||
label_principal_search: "Zoek naar gebruiker of groep:"
|
||||
label_user_search: "Zoek naar gebruiker:"
|
||||
field_visible: Zichtbaar
|
||||
setting_emails_header: Emails header
|
||||
setting_commit_logtime_activity_id: Standaard activiteit voor tijdregistratie
|
||||
text_time_logged_by_changeset: Toegepast in changeset %{value}.
|
||||
setting_commit_logtime_enabled: Activeer tijdregistratie
|
||||
@@ -1067,3 +1066,6 @@ nl:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Totaal
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -1075,3 +1075,5 @@
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Totalt
|
||||
|
||||
@@ -946,7 +946,6 @@ pl:
|
||||
label_principal_search: "Szukaj użytkownika lub grupy:"
|
||||
label_user_search: "Szukaj użytkownika:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -987,8 +986,6 @@ pl:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1106,3 +1103,8 @@ pl:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Ogółem
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -53,8 +53,8 @@ pt-BR:
|
||||
one: 'aproximadamente 1 hora'
|
||||
other: 'aproximadamente %{count} horas'
|
||||
x_hours:
|
||||
one: "1 hour"
|
||||
other: "%{count} hours"
|
||||
one: "1 hora"
|
||||
other: "%{count} horas"
|
||||
|
||||
x_days:
|
||||
one: '1 dia'
|
||||
@@ -76,8 +76,8 @@ pt-BR:
|
||||
one: 'mais de 1 ano'
|
||||
other: 'mais de %{count} anos'
|
||||
almost_x_years:
|
||||
one: "almost 1 year"
|
||||
other: "almost %{count} years"
|
||||
one: "quase 1 ano"
|
||||
other: "quase %{count} anos"
|
||||
|
||||
# numeros
|
||||
number:
|
||||
@@ -122,8 +122,8 @@ pt-BR:
|
||||
errors:
|
||||
template:
|
||||
header:
|
||||
one: "model não pode ser salvo: 1 erro"
|
||||
other: "model não pode ser salvo: %{count} erros."
|
||||
one: "modelo não pode ser salvo: 1 erro"
|
||||
other: "modelo não pode ser salvo: %{count} erros."
|
||||
body: "Por favor, verifique os seguintes campos:"
|
||||
messages:
|
||||
inclusion: "não está incluso na lista"
|
||||
@@ -134,7 +134,7 @@ pt-BR:
|
||||
empty: "não pode ficar vazio"
|
||||
blank: "não pode ficar vazio"
|
||||
too_long: "é muito longo (máximo: %{count} caracteres)"
|
||||
too_short: "é muito curto (mínimon: %{count} caracteres)"
|
||||
too_short: "é muito curto (mínimo: %{count} caracteres)"
|
||||
wrong_length: "deve ter %{count} caracteres"
|
||||
taken: "não está disponível"
|
||||
not_a_number: "não é um número"
|
||||
@@ -879,12 +879,12 @@ pt-BR:
|
||||
label_copy_source: Origem
|
||||
setting_issue_done_ratio: Calcular o percentual de conclusão da tarefa
|
||||
setting_issue_done_ratio_issue_status: Usar a situação da tarefa
|
||||
error_issue_done_ratios_not_updated: O pecentual de conclusão das tarefas não foi atualizado.
|
||||
error_issue_done_ratios_not_updated: O percentual de conclusão das tarefas não foi atualizado.
|
||||
error_workflow_copy_target: Por favor, selecione os tipos de tarefa e os papéis alvo
|
||||
setting_issue_done_ratio_issue_field: Use the issue field
|
||||
setting_issue_done_ratio_issue_field: Use o campo da tarefa
|
||||
label_copy_same_as_target: Mesmo alvo
|
||||
label_copy_target: Alvo
|
||||
notice_issue_done_ratios_updated: Percentual de conslusão atualizados.
|
||||
notice_issue_done_ratios_updated: Percentual de conclusão atualizados.
|
||||
error_workflow_copy_source: Por favor, selecione um tipo de tarefa e papel de origem
|
||||
label_update_issue_done_ratios: Atualizar percentual de conclusão das tarefas
|
||||
setting_start_of_week: Início da semana
|
||||
@@ -897,7 +897,7 @@ pt-BR:
|
||||
label_api_access_key_created_on: Chave de acesso a API criado a %{value} atrás
|
||||
label_feeds_access_key: Chave de acesso ao RSS
|
||||
notice_api_access_key_reseted: Sua chave de acesso a API foi redefinida.
|
||||
setting_rest_api_enabled: Habilitar REST web service
|
||||
setting_rest_api_enabled: Habilitar a api REST
|
||||
label_missing_api_access_key: Chave de acesso a API faltando
|
||||
label_missing_feeds_access_key: Chave de acesso ao RSS faltando
|
||||
text_line_separated: Múltiplos valores permitidos (uma linha para cada valor).
|
||||
@@ -915,7 +915,7 @@ pt-BR:
|
||||
permission_manage_project_activities: Gerenciar atividades do projeto
|
||||
error_unable_delete_issue_status: Não foi possível excluir situação da tarefa
|
||||
label_profile: Perfil
|
||||
permission_manage_subtasks: Gerenciar subtarefas
|
||||
permission_manage_subtasks: Gerenciar sub-tarefas
|
||||
field_parent_issue: Tarefa pai
|
||||
label_subtask_plural: Subtarefas
|
||||
label_project_copy_notifications: Enviar notificações por e-mail ao copiar projeto
|
||||
@@ -987,13 +987,13 @@ pt-BR:
|
||||
label_git_report_last_commit: Relatar última alteração para arquivos e diretórios
|
||||
text_scm_config: Você pode configurar seus comandos de versionamento em config/configurations.yml. Por favor reinicie a aplicação após alterá-lo.
|
||||
text_scm_command_not_available: Comando de versionamento não disponível. Por favor verifique as configurações no painel de administração.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
notice_issue_successful_create: Tarefa %{id} criada.
|
||||
label_between: entre
|
||||
setting_issue_group_assignment: Permitir atribuições de tarefas a grupos
|
||||
label_diff: diff
|
||||
text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo)
|
||||
text_git_repository_note: "Repositório esta vazio e é local (ex: /gitrepo, c:\\gitrepo)"
|
||||
|
||||
description_query_sort_criteria_direction: Sort direction
|
||||
description_query_sort_criteria_direction: Direção da ordenação
|
||||
description_project_scope: Escopo da pesquisa
|
||||
description_filter: Filtro
|
||||
description_user_mail_notification: Configuração de notificações por e-mail
|
||||
@@ -1007,102 +1007,103 @@ pt-BR:
|
||||
description_date_range_list: Escolha um período a partira da lista
|
||||
description_choose_project: Projetos
|
||||
description_date_to: Digite a data final
|
||||
description_query_sort_criteria_attribute: Sort attribute
|
||||
description_query_sort_criteria_attribute: Atributo de ordenação
|
||||
description_wiki_subpages_reassign: Escolha uma nova página pai
|
||||
description_selected_columns: Colunas selecionadas
|
||||
|
||||
label_parent_revision: Parent
|
||||
label_child_revision: Child
|
||||
error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size.
|
||||
label_parent_revision: Pais
|
||||
label_child_revision: Filhos
|
||||
error_scm_annotate_big_text_file: A entrada não pode ser anotada, pois excede o tamanho máximo do arquivo de texto.
|
||||
setting_default_issue_start_date_to_creation_date: Usar data corrente como data inicial para novas tarefas
|
||||
button_edit_section: Edit this section
|
||||
setting_repositories_encodings: Attachments and repositories encodings
|
||||
description_all_columns: All Columns
|
||||
button_export: Export
|
||||
label_export_options: "%{export_format} export options"
|
||||
error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})
|
||||
notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}."
|
||||
button_edit_section: Editar esta seção
|
||||
setting_repositories_encodings: Encoding dos repositórios e anexos
|
||||
description_all_columns: Todas as colunas
|
||||
button_export: Exportar
|
||||
label_export_options: "Opções de exportação %{export_format}"
|
||||
error_attachment_too_big: Este arquivo não pode ser enviado porque excede o tamanho máximo permitido (%{max_size})
|
||||
notice_failed_to_save_time_entries: "Falha ao salvar %{count} de %{total} horas trabalhadas: %{ids}."
|
||||
label_x_issues:
|
||||
zero: 0 tarefa
|
||||
one: 1 tarefa
|
||||
other: "%{count} tarefas"
|
||||
label_repository_new: New repository
|
||||
field_repository_is_default: Main repository
|
||||
label_copy_attachments: Copy attachments
|
||||
label_repository_new: Novo repositório
|
||||
field_repository_is_default: Repositório principal
|
||||
label_copy_attachments: Copiar anexos
|
||||
label_item_position: "%{position}/%{count}"
|
||||
label_completed_versions: Completed versions
|
||||
text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
|
||||
field_multiple: Multiple values
|
||||
setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed
|
||||
text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes
|
||||
text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten)
|
||||
notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
|
||||
text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
|
||||
permission_manage_related_issues: Manage related issues
|
||||
field_auth_source_ldap_filter: LDAP filter
|
||||
label_search_for_watchers: Search for watchers to add
|
||||
notice_account_deleted: Your account has been permanently deleted.
|
||||
setting_unsubscribe: Allow users to delete their own account
|
||||
button_delete_my_account: Delete my account
|
||||
label_completed_versions: Versões completadas
|
||||
text_project_identifier_info: Somente letras minúsculas (az), números, traços e sublinhados são permitidos. <br /> Uma vez salvo, o identificador não pode ser alterado.
|
||||
field_multiple: Multiplos valores
|
||||
setting_commit_cross_project_ref: Permitir que tarefas de todos os outros projetos sejam refenciadas e resolvidas
|
||||
text_issue_conflict_resolution_add_notes: Adicione minhas anotações e descartar minhas outras mudanças
|
||||
text_issue_conflict_resolution_overwrite: Aplicar as minhas alterações de qualquer maneira (notas anteriores serão mantidos, mas algumas mudanças podem ser substituídos)
|
||||
notice_issue_update_conflict: A tarefa foi atualizada por um outro usuário, enquanto você estava editando.
|
||||
text_issue_conflict_resolution_cancel: Descartar todas as minhas mudanças e re-exibir %{link}
|
||||
permission_manage_related_issues: Gerenciar tarefas relacionadas
|
||||
field_auth_source_ldap_filter: Filtro LDAP
|
||||
label_search_for_watchers: Procurar por outros observadores para adiconar
|
||||
notice_account_deleted: Sua conta foi excluída permanentemente.
|
||||
setting_unsubscribe: Permitir aos usuários excluir sua conta própria
|
||||
button_delete_my_account: Excluir minha conta
|
||||
text_account_destroy_confirmation: |-
|
||||
Are you sure you want to proceed?
|
||||
Your account will be permanently deleted, with no way to reactivate it.
|
||||
error_session_expired: Your session has expired. Please login again.
|
||||
text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours."
|
||||
setting_session_lifetime: Session maximum lifetime
|
||||
setting_session_timeout: Session inactivity timeout
|
||||
label_session_expiration: Session expiration
|
||||
permission_close_project: Close / reopen the project
|
||||
label_show_closed_projects: View closed projects
|
||||
button_close: Close
|
||||
button_reopen: Reopen
|
||||
project_status_active: active
|
||||
project_status_closed: closed
|
||||
project_status_archived: archived
|
||||
text_project_closed: This project is closed and read-only.
|
||||
notice_user_successful_create: User %{id} created.
|
||||
field_core_fields: Standard fields
|
||||
field_timeout: Timeout (in seconds)
|
||||
setting_thumbnails_enabled: Display attachment thumbnails
|
||||
setting_thumbnails_size: Thumbnails size (in pixels)
|
||||
label_status_transitions: Status transitions
|
||||
label_fields_permissions: Fields permissions
|
||||
label_readonly: Read-only
|
||||
label_required: Required
|
||||
text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
|
||||
field_board_parent: Parent forum
|
||||
label_attribute_of_project: Project's %{name}
|
||||
label_attribute_of_author: Author's %{name}
|
||||
label_attribute_of_assigned_to: Assignee's %{name}
|
||||
label_attribute_of_fixed_version: Target version's %{name}
|
||||
label_copy_subtasks: Copy subtasks
|
||||
label_copied_to: copied to
|
||||
label_copied_from: copied from
|
||||
label_any_issues_in_project: any issues in project
|
||||
label_any_issues_not_in_project: any issues not in project
|
||||
field_private_notes: Private notes
|
||||
permission_view_private_notes: View private notes
|
||||
permission_set_notes_private: Set notes as private
|
||||
label_no_issues_in_project: no issues in project
|
||||
Tem certeza de que quer continuar?
|
||||
Sua conta será excluída permanentemente, sem qualquer forma de reativá-lo.
|
||||
error_session_expired: A sua sessão expirou. Por favor, faça login novamente.
|
||||
text_session_expiration_settings: "Aviso: a alteração dessas configurações pode expirar as sessões atuais, incluindo a sua."
|
||||
setting_session_lifetime: duração máxima da sessão
|
||||
setting_session_timeout: tempo limite de inatividade da sessão
|
||||
label_session_expiration: "Expiração da sessão"
|
||||
permission_close_project: Fechar / reabrir o projeto
|
||||
label_show_closed_projects: Visualização de projetos fechados
|
||||
button_close: Fechar
|
||||
button_reopen: Reabrir
|
||||
project_status_active: ativo
|
||||
project_status_closed: fechado
|
||||
project_status_archived: arquivado
|
||||
text_project_closed: Este projeto é fechado e somente leitura.
|
||||
notice_user_successful_create: Usuário %{id} criado.
|
||||
field_core_fields: campos padrão
|
||||
field_timeout: Tempo de espera (em segundos)
|
||||
setting_thumbnails_enabled: Exibir miniaturas de anexos
|
||||
setting_thumbnails_size: Tamanho das miniaturas (em pixels)
|
||||
label_status_transitions: Estados das transições
|
||||
label_fields_permissions: Permissões de campos
|
||||
label_readonly: somente leitura
|
||||
label_required: Obrigatório
|
||||
text_repository_identifier_info: Somente letras minúsculas (az), números, traços e sublinhados são permitidos <br/> Uma vez salvo, o identificador não pode ser alterado.
|
||||
field_board_parent: Fórum Pai
|
||||
label_attribute_of_project: "Projeto %{name}"
|
||||
label_attribute_of_author: "autor %{name}"
|
||||
label_attribute_of_assigned_to: "atribuído %{name}"
|
||||
label_attribute_of_fixed_version: "versão alvo %{name}"
|
||||
label_copy_subtasks: Copiar sub-tarefas
|
||||
label_copied_to: copiada
|
||||
label_copied_from: copiado
|
||||
label_any_issues_in_project: quaisquer problemas em projeto
|
||||
label_any_issues_not_in_project: todas as questões que não estão em projeto
|
||||
field_private_notes: notas privadas
|
||||
permission_view_private_notes: Ver notas privadas
|
||||
permission_set_notes_private: Permitir alterar notas para privada
|
||||
label_no_issues_in_project: sem problemas em projeto
|
||||
label_any: todos
|
||||
label_last_n_weeks: last %{count} weeks
|
||||
setting_cross_project_subtasks: Allow cross-project subtasks
|
||||
label_cross_project_descendants: Com sub-projetos
|
||||
label_cross_project_tree: Com a árvore do projeto
|
||||
label_cross_project_hierarchy: Com a hierarquia do projeto
|
||||
label_cross_project_system: Com todos os projetos
|
||||
button_hide: Hide
|
||||
setting_non_working_week_days: Non-working days
|
||||
label_in_the_next_days: in the next
|
||||
label_in_the_past_days: in the past
|
||||
label_attribute_of_user: User's %{name}
|
||||
text_turning_multiple_off: If you disable multiple values, multiple values will be
|
||||
removed in order to preserve only one value per item.
|
||||
label_attribute_of_issue: Issue's %{name}
|
||||
permission_add_documents: Add documents
|
||||
permission_edit_documents: Edit documents
|
||||
permission_delete_documents: Delete documents
|
||||
label_gantt_progress_line: Progress line
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
label_last_n_weeks: "últimas %{count} semanas"
|
||||
setting_cross_project_subtasks: Permitir cruzamento de sub-tarefas entre projetos
|
||||
label_cross_project_descendants: com sub-Projetos
|
||||
label_cross_project_tree: Com uma Árvore fazer o Projeto
|
||||
label_cross_project_hierarchy: Com uma hierarquia fazer o Projeto
|
||||
label_cross_project_system: Com de Todos os Projetos
|
||||
button_hide: Esconder
|
||||
setting_non_working_week_days: dias não úteis
|
||||
label_in_the_next_days: na próxima
|
||||
label_in_the_past_days: no passado
|
||||
label_attribute_of_user: Usuário %{name}
|
||||
text_turning_multiple_off: Se você desativar vários valores, vários valores serão removidas, a fim de preservar a somente um valor por item.
|
||||
label_attribute_of_issue: Emissão de %{name}
|
||||
permission_add_documents: Adicionar documentos
|
||||
permission_edit_documents: Editar documentos
|
||||
permission_delete_documents: excluir documentos
|
||||
label_gantt_progress_line: Linha de progresso
|
||||
setting_jsonp_enabled: Ativar suporte JSONP
|
||||
field_inherit_members: Herdar membros
|
||||
field_closed_on: Fechado
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
|
||||
@@ -1091,3 +1091,5 @@ pt:
|
||||
setting_jsonp_enabled: Activar suporte JSONP
|
||||
field_inherit_members: Herdar membros
|
||||
field_closed_on: Fechado
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
|
||||
@@ -920,7 +920,6 @@ ro:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -961,8 +960,6 @@ ro:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1080,3 +1077,8 @@ ro:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -1192,6 +1192,8 @@ ru:
|
||||
permission_edit_documents: Редактировать документы
|
||||
permission_delete_documents: Удалить документы
|
||||
label_gantt_progress_line: Линия прогресса
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_jsonp_enabled: Поддержка JSONP
|
||||
field_inherit_members: Наследовать участников
|
||||
field_closed_on: Закрыта
|
||||
setting_default_projects_tracker_ids: Трекеры по умолчанию для новых проектов
|
||||
label_total_time: Общее время
|
||||
|
||||
@@ -922,7 +922,6 @@ sk:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -963,8 +962,6 @@ sk:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1082,3 +1079,8 @@ sk:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Celkovo
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -1085,3 +1085,5 @@ sl:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Skupaj
|
||||
|
||||
@@ -351,8 +351,6 @@ sq:
|
||||
setting_cross_project_issue_relations: Allow cross-project issue relations
|
||||
setting_issue_list_default_columns: Default columns displayed on the issue list
|
||||
setting_repositories_encodings: Attachments and repositories encodings
|
||||
setting_emails_header: Emails header
|
||||
setting_emails_footer: Emails footer
|
||||
setting_protocol: Protocol
|
||||
setting_per_page_options: Objects per page options
|
||||
setting_user_format: Users display format
|
||||
@@ -971,8 +969,6 @@ sq:
|
||||
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
text_issue_conflict_resolution_overwrite: "Apply my changes anyway (previous notes will be kept but some changes may be overwritten)"
|
||||
text_issue_conflict_resolution_add_notes: "Add my notes and discard my other changes"
|
||||
text_issue_conflict_resolution_cancel: "Discard all my changes and redisplay %{link}"
|
||||
@@ -1081,3 +1077,9 @@ sq:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_footer: Email footer
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -968,8 +968,6 @@ sr-YU:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1087,3 +1085,7 @@ sr-YU:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Ukupno
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
|
||||
@@ -926,7 +926,6 @@ sr:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -967,8 +966,6 @@ sr:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1086,3 +1083,8 @@ sr:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Укупно
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -1123,3 +1123,5 @@ sv:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Total
|
||||
|
||||
@@ -922,7 +922,6 @@ th:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -963,8 +962,6 @@ th:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1082,3 +1079,8 @@ th:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: จำนวนรวม
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
@@ -985,8 +985,6 @@ tr:
|
||||
text_scm_command: Komut
|
||||
text_scm_command_version: Sürüm
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1104,3 +1102,7 @@ tr:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Toplam
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
|
||||
@@ -922,7 +922,6 @@ uk:
|
||||
label_principal_search: "Search for user or group:"
|
||||
label_user_search: "Search for user:"
|
||||
field_visible: Visible
|
||||
setting_emails_header: Emails header
|
||||
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
|
||||
@@ -963,8 +962,6 @@ uk:
|
||||
text_scm_command: Command
|
||||
text_scm_command_version: Version
|
||||
label_git_report_last_commit: Report last commit for files and directories
|
||||
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
|
||||
notice_issue_successful_create: Issue %{id} created.
|
||||
label_between: between
|
||||
setting_issue_group_assignment: Allow issue assignment to groups
|
||||
@@ -1080,3 +1077,8 @@ uk:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: Всього
|
||||
text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it.
|
||||
text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel.
|
||||
setting_emails_header: Email header
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1165,3 +1165,5 @@
|
||||
description_date_from: 輸入起始日期
|
||||
description_date_to: 輸入結束日期
|
||||
text_repository_identifier_info: '僅允許使用小寫英文字母 (a-z), 阿拉伯數字, 虛線與底線。<br />一旦儲存之後, 代碼便無法再次被更改。'
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: 總計
|
||||
|
||||
@@ -1089,3 +1089,5 @@ zh:
|
||||
setting_jsonp_enabled: Enable JSONP support
|
||||
field_inherit_members: Inherit members
|
||||
field_closed_on: Closed
|
||||
setting_default_projects_tracker_ids: Default trackers for new projects
|
||||
label_total_time: 合计
|
||||
|
||||
130
doc/CHANGELOG
130
doc/CHANGELOG
@@ -4,6 +4,136 @@ Redmine - project management software
|
||||
Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
http://www.redmine.org/
|
||||
|
||||
== 2013-03-19 v2.3.0
|
||||
|
||||
* Defect #3107: Issue with two digit year on Logtime
|
||||
* Defect #3371: Autologin does not work when using openid
|
||||
* Defect #3676: www. generates broken link in formatted text
|
||||
* Defect #4700: Adding news does not send notification to all project members
|
||||
* Defect #5329: Time entries report broken on first week of year
|
||||
* Defect #8794: Circular loop when using relations and subtasks
|
||||
* Defect #9475: German Translation "My custom queries" and "Custom queries"
|
||||
* Defect #9549: Only 100 users are displayed when adding new project members
|
||||
* Defect #10277: Redmine wikitext URL-into-link creation with hyphen is wrong
|
||||
* Defect #10364: Custom field float separator in CSV export
|
||||
* Defect #10930: rake redmine:load_default_data error in 2.0 with SQLServer
|
||||
* Defect #10977: Redmine shouldn't require all database gems
|
||||
* Defect #12528: Handle temporary failures gracefully in the external mail handler script
|
||||
* Defect #12629: Wrong German "label_issues_by" translation
|
||||
* Defect #12641: Diff outputs become ??? in some non ASCII words.
|
||||
* Defect #12707: Typo in app/models/tracker.rb
|
||||
* Defect #12716: Attachment description lost when issue validation fails
|
||||
* Defect #12735: Negative duration allowed
|
||||
* Defect #12736: Negative start/due dates allowed
|
||||
* Defect #12968: Subtasks don't resepect following/precedes
|
||||
* Defect #13006: Filter "Assignee's group" doesn't work with group assignments
|
||||
* Defect #13022: Image pointing towards /logout signs out user
|
||||
* Defect #13059: Custom fields are listed two times in workflow/Fields permission
|
||||
* Defect #13076: Project overview page shows trackers from subprojects with disabled issue module
|
||||
* Defect #13119: custom_field_values are not reloaded on #reload
|
||||
* Defect #13154: After upgrade to 2.2.2 ticket list on some projects fails
|
||||
* Defect #13188: Forms are not updated after changing the status field without "Add issues" permission
|
||||
* Defect #13251: Adding a "follows" relation may not refresh relations list
|
||||
* Defect #13272: translation missing: setting_default_projects_tracker_ids
|
||||
* Defect #13328: Copying an issue as a child of itself creates an extra issue
|
||||
* Defect #13335: Autologin does not work with custom autologin cookie name
|
||||
* Defect #13350: Japanese mistranslation fix
|
||||
* Feature #824: Add "closed_on" issue field (storing time of last closing) & add it as a column and filter on the issue list.
|
||||
* Feature #1766: Custom fields should become addable to Spent Time list/report
|
||||
* Feature #3436: Show relations in Gantt diagram
|
||||
* Feature #3957: Ajax file upload with progress bar
|
||||
* Feature #5298: Store attachments in sub directories
|
||||
* Feature #5605: Subprojects should (optionally) inherit Members from their parent
|
||||
* Feature #6727: Add/remove issue watchers via REST API
|
||||
* Feature #7159: Bulk watch/unwatch issues from the context menu
|
||||
* Feature #8529: Get the API key of the user through REST API
|
||||
* Feature #8579: Multiple file upload with HTML5 / Drag-and-Drop
|
||||
* Feature #10191: Add Filters For Spent time's Details and Report
|
||||
* Feature #10286: Auto-populate fields while creating a new user with LDAP
|
||||
* Feature #10352: Preview should already display the freshly attached images
|
||||
* Feature #11498: Add --no-account-notice option for the mail handler script
|
||||
* Feature #12122: Gantt progress lines (html only)
|
||||
* Feature #12228: JRuby 1.7.2 support
|
||||
* Feature #12251: Custom fields: 'Multiple values' should be able to be checked and then unchecked
|
||||
* Feature #12401: Split "Manage documents" permission into create, edit and delete permissions
|
||||
* Feature #12542: Group events in the activity view
|
||||
* Feature #12665: Link to a file in a repository branch
|
||||
* Feature #12713: Microsoft SQLServer support
|
||||
* Feature #12787: Remove "Warning - iconv will be deprecated in the future, use String#encode instead."
|
||||
* Feature #12843: Add links to projects in Group projects list
|
||||
* Feature #12898: Handle GET /issues/context_menu parameters nicely to prevent returning error 500 to crawlers
|
||||
* Feature #12992: Make JSONP support optional and disabled by default
|
||||
* Feature #13174: Raise group name maximum length to 255 characters
|
||||
* Feature #13175: Possibility to define the default enable trackers when creating a project
|
||||
* Feature #13329: Ruby 2.0 support
|
||||
* Feature #13337: Split translation "label_total"
|
||||
* Feature #13340: Mail handler: option to add created user to default group
|
||||
* Feature #13341: Mail handler: --no-notification option to disable notifications to the created user
|
||||
* Patch #7202: Polish translation for v1.0.4
|
||||
* Patch #7851: Italian translation for 'issue'
|
||||
* Patch #9225: Generate project identifier automatically with JavaScript
|
||||
* Patch #10916: Optimisation in issues relations display
|
||||
* Patch #12485: Don't force english language for default admin account
|
||||
* Patch #12499: Use lambda in model scopes
|
||||
* Patch #12611: Login link unexpected logs you out
|
||||
* Patch #12626: Updated Japanese translations for button_view and permission_commit_access
|
||||
* Patch #12640: Russian "about_x_hours" translation change
|
||||
* Patch #12645: Russian numeric translation
|
||||
* Patch #12660: Consistent German translation for my page
|
||||
* Patch #12708: Restructured german translation (Cleanup)
|
||||
* Patch #12721: Optimize MenuManager a bit
|
||||
* Patch #12725: Change pourcent to percent (#12724)
|
||||
* Patch #12754: Updated Japanese translation for notice_account_register_done
|
||||
* Patch #12788: Copyright for 2013
|
||||
* Patch #12806: Serbian translation change
|
||||
* Patch #12810: Swedish Translation change
|
||||
* Patch #12910: Plugin settings div should perhaps have 'settings' CSS class
|
||||
* Patch #12911: Fix 500 error for requests to the settings path for non-configurable plugins
|
||||
* Patch #12926: Bulgarian translation (r11218)
|
||||
* Patch #12927: Swedish Translation for r11244
|
||||
* Patch #12967: Change Spanish login/logout translations
|
||||
* Patch #12988: Russian translation for trunk
|
||||
* Patch #13080: German translation of label_in
|
||||
* Patch #13098: Small datepicker improvements
|
||||
* Patch #13152: Locale file for Azerbaijanian language
|
||||
* Patch #13155: Add login to /users/:id API for current user
|
||||
* Patch #13173: Put source :rubygems url HTTP secure
|
||||
* Patch #13190: Bulgarian translation (r11404)
|
||||
* Patch #13198: Traditional Chinese language file (to r11426)
|
||||
* Patch #13203: German translation change for follow and precedes is inconsitent
|
||||
* Patch #13206: Portuguese translation file
|
||||
* Patch #13246: Some german translation patches
|
||||
* Patch #13280: German translation (r11478)
|
||||
* Patch #13301: Performance: avoid querying all memberships in User#roles_for_project
|
||||
* Patch #13309: Add "tracker-[id]" CSS class to issues
|
||||
* Patch #13324: fixing some pt-br locales
|
||||
* Patch #13339: Complete language Vietnamese file
|
||||
* Patch #13391: Czech translation update
|
||||
* Patch #13399: Fixed some wrong or confusing translation in Korean locale
|
||||
* Patch #13414: Bulgarian translation (r11567)
|
||||
* Patch #13420: Korean translation for 2.3 (r11583)
|
||||
* Patch #13437: German translation of setting_emails_header
|
||||
* Patch #13438: English translation
|
||||
* Patch #13447: German translation - some patches
|
||||
* Patch #13450: Czech translation
|
||||
* Patch #13475: fixing some pt-br locales
|
||||
* Patch #13514: fixing some pt-br locales
|
||||
|
||||
== 2013-03-19 v2.2.4
|
||||
|
||||
* Upgrade to Rails 3.2.13
|
||||
* Defect #12243: Ordering forum replies by last reply date is broken
|
||||
* Defect #13127: h1 multiple lined titles breaks into main menu
|
||||
* Defect #13138: Generating PDF of issue causes UndefinedConversionError with htmlentities gem
|
||||
* Defect #13165: rdm-mailhandler.rb: initialize_http_header override basic auth
|
||||
* Defect #13232: Link to topic in nonexistent forum causes error 500
|
||||
* Patch #13181: Bulgarian translation of jstoolbar-bg.js
|
||||
* Patch #13207: Portuguese translation for 2.2-stable
|
||||
* Patch #13310: pt-BR label_last_n_weeks translation
|
||||
* Patch #13325: pt-BR translation for 2.2-stable
|
||||
* Patch #13343: Vietnamese translation for 2.2-stable
|
||||
* Patch #13398: Czech translation for 2.2-stable
|
||||
|
||||
== 2013-02-12 v2.2.3
|
||||
|
||||
* Upgrade to Rails 3.2.12
|
||||
|
||||
@@ -14,7 +14,7 @@ http://www.redmine.org/
|
||||
* A database:
|
||||
* MySQL (tested with MySQL 5.1)
|
||||
* PostgreSQL (tested with PostgreSQL 9.1)
|
||||
* SQLite3 (tested with SQLite 3.6)
|
||||
* SQLite3 (tested with SQLite 3.7)
|
||||
|
||||
Optional:
|
||||
* SCM binaries (e.g. svn, git...), for repository browsing (must be available in PATH)
|
||||
|
||||
@@ -32,6 +32,16 @@ http://www.redmine.org/
|
||||
of the rmagick gem using:
|
||||
bundle install --without development test rmagick
|
||||
|
||||
Only the gems that are needed by the adapters you've specified in your database
|
||||
configuration file are actually installed (eg. if your config/database.yml
|
||||
uses the 'mysql2' adapter, then only the mysql2 gem will be installed). Don't
|
||||
forget to re-run `bundle install` when you change config/database.yml for using
|
||||
other database adapters.
|
||||
|
||||
If you need to load some gems that are not required by Redmine core (eg. fcgi),
|
||||
you can create a file named Gemfile.local at the root of your redmine directory.
|
||||
It will be loaded automatically when running `bundle install`.
|
||||
|
||||
6. Generate a session store secret
|
||||
|
||||
Redmine stores session data in cookies by default, which requires
|
||||
|
||||
@@ -23,9 +23,10 @@ module Net
|
||||
end
|
||||
|
||||
class RedmineMailHandler
|
||||
VERSION = '0.2.1'
|
||||
VERSION = '0.2.3'
|
||||
|
||||
attr_accessor :verbose, :issue_attributes, :allow_override, :unknown_user, :no_permission_check, :url, :key, :no_check_certificate
|
||||
attr_accessor :verbose, :issue_attributes, :allow_override, :unknown_user, :default_group, :no_permission_check,
|
||||
:url, :key, :no_check_certificate, :no_account_notice, :no_notification
|
||||
|
||||
def initialize
|
||||
self.issue_attributes = {}
|
||||
@@ -40,11 +41,6 @@ class RedmineMailHandler
|
||||
opts.on("-k", "--key KEY", "Redmine API key") {|v| self.key = v}
|
||||
opts.separator("")
|
||||
opts.separator("General options:")
|
||||
opts.on("--unknown-user ACTION", "how to handle emails from an unknown user",
|
||||
"ACTION can be one of the following values:",
|
||||
"* ignore: email is ignored (default)",
|
||||
"* accept: accept as anonymous user",
|
||||
"* create: create a user account") {|v| self.unknown_user = v}
|
||||
opts.on("--no-permission-check", "disable permission checking when receiving",
|
||||
"the email") {self.no_permission_check = '1'}
|
||||
opts.on("--key-file FILE", "path to a file that contains the Redmine",
|
||||
@@ -56,6 +52,19 @@ class RedmineMailHandler
|
||||
opts.on("-v", "--verbose", "show extra information") {self.verbose = true}
|
||||
opts.on("-V", "--version", "show version information and exit") {puts VERSION; exit}
|
||||
opts.separator("")
|
||||
opts.separator("User creation options:")
|
||||
opts.on("--unknown-user ACTION", "how to handle emails from an unknown user",
|
||||
"ACTION can be one of the following values:",
|
||||
"* ignore: email is ignored (default)",
|
||||
"* accept: accept as anonymous user",
|
||||
"* create: create a user account") {|v| self.unknown_user = v}
|
||||
opts.on("--default-group GROUP", "add created user to GROUP (none by default)",
|
||||
"GROUP can be a comma separated list of groups") { |v| self.default_group = v}
|
||||
opts.on("--no-account-notice", "don't send account information to the newly",
|
||||
"created user") { |v| self.no_account_notice = '1'}
|
||||
opts.on("--no-notification", "disable email notifications for the created",
|
||||
"user") { |v| self.no_notification = '1'}
|
||||
opts.separator("")
|
||||
opts.separator("Issue attributes control options:")
|
||||
opts.on("-p", "--project PROJECT", "identifier of the target project") {|v| self.issue_attributes['project'] = v}
|
||||
opts.on("-s", "--status STATUS", "name of the target status") {|v| self.issue_attributes['status'] = v}
|
||||
@@ -95,6 +104,9 @@ class RedmineMailHandler
|
||||
data = { 'key' => key, 'email' => email,
|
||||
'allow_override' => allow_override,
|
||||
'unknown_user' => unknown_user,
|
||||
'default_group' => default_group,
|
||||
'no_account_notice' => no_account_notice,
|
||||
'no_notification' => no_notification,
|
||||
'no_permission_check' => no_permission_check}
|
||||
issue_attributes.each { |attr, value| data["issue[#{attr}]"] = value }
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ module Redmine
|
||||
:dependent => :delete_all,
|
||||
:validate => false
|
||||
|
||||
send :alias_method, :reload_without_custom_fields, :reload
|
||||
send :include, Redmine::Acts::Customizable::InstanceMethods
|
||||
validate :validate_custom_field_values
|
||||
after_save :save_custom_field_values
|
||||
@@ -43,6 +42,7 @@ module Redmine
|
||||
module InstanceMethods
|
||||
def self.included(base)
|
||||
base.extend ClassMethods
|
||||
base.send :alias_method_chain, :reload, :custom_fields
|
||||
end
|
||||
|
||||
def available_custom_fields
|
||||
@@ -154,7 +154,7 @@ module Redmine
|
||||
@custom_field_values_changed = true
|
||||
end
|
||||
|
||||
def reload(*args)
|
||||
def reload_with_custom_fields(*args)
|
||||
@custom_field_values = nil
|
||||
@custom_field_values_changed = false
|
||||
reload_without_custom_fields(*args)
|
||||
|
||||
@@ -39,9 +39,6 @@ require 'core/rmagick'
|
||||
# @package com.tecnick.tcpdf
|
||||
#
|
||||
|
||||
@@version = "1.53.0.TC031"
|
||||
@@fpdf_charwidths = {}
|
||||
|
||||
PDF_PRODUCER = 'TCPDF via RFPDF 1.53.0.TC031 (http://tcpdf.sourceforge.net)'
|
||||
|
||||
module TCPDFFontDescriptor
|
||||
@@ -79,6 +76,9 @@ class TCPDF
|
||||
Rails.logger
|
||||
end
|
||||
|
||||
@@version = "1.53.0.TC031"
|
||||
@@fpdf_charwidths = {}
|
||||
|
||||
cattr_accessor :k_cell_height_ratio
|
||||
@@k_cell_height_ratio = 1.25
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ module Redmine
|
||||
when 'month'
|
||||
row['month'] = "#{row['tyear']}-#{row['tmonth']}"
|
||||
when 'week'
|
||||
row['week'] = "#{row['tyear']}-#{row['tweek']}"
|
||||
row['week'] = "#{row['spent_on'].cwyear}-#{row['tweek']}"
|
||||
when 'day'
|
||||
row['day'] = "#{row['spent_on']}"
|
||||
end
|
||||
@@ -90,7 +90,7 @@ module Redmine
|
||||
@periods << "#{date_from.year}-#{date_from.month}"
|
||||
date_from = (date_from + 1.month).at_beginning_of_month
|
||||
when 'week'
|
||||
@periods << "#{date_from.year}-#{date_from.to_date.cweek}"
|
||||
@periods << "#{date_from.to_date.cwyear}-#{date_from.to_date.cweek}"
|
||||
date_from = (date_from + 7.day).at_beginning_of_week
|
||||
when 'day'
|
||||
@periods << "#{date_from.to_date}"
|
||||
@@ -127,13 +127,16 @@ module Redmine
|
||||
:label => :label_issue}
|
||||
}
|
||||
|
||||
# Add list and boolean custom fields as available criteria
|
||||
custom_fields = (@project.nil? ? IssueCustomField.for_all : @project.all_issue_custom_fields)
|
||||
# Add list and boolean time entry custom fields
|
||||
custom_fields += TimeEntryCustomField.all
|
||||
# Add list and boolean time entry activity custom fields
|
||||
# Add time entry custom fields
|
||||
custom_fields = TimeEntryCustomField.all
|
||||
# Add project custom fields
|
||||
custom_fields += ProjectCustomField.all
|
||||
# Add issue custom fields
|
||||
custom_fields += (@project.nil? ? IssueCustomField.for_all : @project.all_issue_custom_fields)
|
||||
# Add time entry activity custom fields
|
||||
custom_fields += TimeEntryActivityCustomField.all
|
||||
|
||||
# Add list and boolean custom fields as available criteria
|
||||
custom_fields.select {|cf| %w(list bool).include? cf.field_format }.each do |cf|
|
||||
@available_criteria["cf_#{cf.id}"] = {:sql => "#{cf.join_alias}.value",
|
||||
:joins => cf.join_for_order_statement,
|
||||
|
||||
@@ -28,17 +28,9 @@ module Redmine
|
||||
lines = 0
|
||||
@truncated = false
|
||||
diff_table = DiffTable.new(diff_type, diff_style)
|
||||
diff.each do |line|
|
||||
line_encoding = nil
|
||||
if line.respond_to?(:force_encoding)
|
||||
line_encoding = line.encoding
|
||||
# TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII
|
||||
# In Japan, diffrence between file path encoding
|
||||
# and file contents encoding is popular.
|
||||
line.force_encoding('ASCII-8BIT')
|
||||
end
|
||||
unless diff_table.add_line line
|
||||
line.force_encoding(line_encoding) if line_encoding
|
||||
diff.each do |line_raw|
|
||||
line = Redmine::CodesetUtil.to_utf8_by_setting(line_raw)
|
||||
unless diff_table.add_line(line)
|
||||
self << diff_table if diff_table.length > 0
|
||||
diff_table = DiffTable.new(diff_type, diff_style)
|
||||
end
|
||||
@@ -83,7 +75,7 @@ module Redmine
|
||||
@parsing = true
|
||||
end
|
||||
else
|
||||
if line =~ /^[^\+\-\s@\\]/
|
||||
if line =~ %r{^[^\+\-\s@\\]}
|
||||
@parsing = false
|
||||
return false
|
||||
elsif line =~ /^@@ (\+|\-)(\d+)(,\d+)? (\+|\-)(\d+)(,\d+)? @@/
|
||||
@@ -207,10 +199,16 @@ module Redmine
|
||||
while starting < max && line_left[starting] == line_right[starting]
|
||||
starting += 1
|
||||
end
|
||||
while line_left[starting].ord.between?(128, 191) && starting > 0
|
||||
starting -= 1
|
||||
end
|
||||
ending = -1
|
||||
while ending >= -(max - starting) && line_left[ending] == line_right[ending]
|
||||
ending -= 1
|
||||
end
|
||||
while line_left[ending].ord.between?(128, 191) && ending > -1
|
||||
ending -= 1
|
||||
end
|
||||
unless starting == 0 && ending == -1
|
||||
[starting, ending]
|
||||
end
|
||||
@@ -268,6 +266,12 @@ module Redmine
|
||||
private
|
||||
|
||||
def line_to_html(line, offsets)
|
||||
html = line_to_html_raw(line, offsets)
|
||||
html.force_encoding('UTF-8') if html.respond_to?(:force_encoding)
|
||||
html
|
||||
end
|
||||
|
||||
def line_to_html_raw(line, offsets)
|
||||
if offsets
|
||||
s = ''
|
||||
unless offsets.first == 0
|
||||
|
||||
@@ -10,7 +10,7 @@ module Redmine
|
||||
# * official release: nil
|
||||
# * stable branch: stable
|
||||
# * trunk: devel
|
||||
BRANCH = 'devel'
|
||||
BRANCH = 'stable'
|
||||
|
||||
# Retrieves the revision from the working copy
|
||||
def self.revision
|
||||
|
||||
@@ -86,7 +86,7 @@ module Redmine
|
||||
AUTO_LINK_RE = %r{
|
||||
( # leading text
|
||||
<\w+.*?>| # leading HTML tag, or
|
||||
[^=<>!:'"/]| # leading punctuation, or
|
||||
[\s\(\[,;]| # leading punctuation, or
|
||||
^ # beginning of line
|
||||
)
|
||||
(
|
||||
@@ -95,7 +95,7 @@ module Redmine
|
||||
(?:www\.) # www.*
|
||||
)
|
||||
(
|
||||
(\S+?) # url
|
||||
([^<]\S*?) # url
|
||||
(\/)? # slash
|
||||
)
|
||||
((?:>)?|[^[:alnum:]_\=\/;\(\)]*?) # post
|
||||
|
||||
25
test/fixtures/diffs/issue-12641-ja.diff
vendored
Normal file
25
test/fixtures/diffs/issue-12641-ja.diff
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# HG changeset patch
|
||||
# User tmaruyama
|
||||
# Date 1362559296 0
|
||||
# Node ID ee54942e0289c30bea1b1973750b698b1ee7c466
|
||||
# Parent 738777832f379f6f099c25251593fc57bc17f586
|
||||
fix some Japanese "issue" translations (#13350)
|
||||
|
||||
Contributed by Go MAEDA.
|
||||
|
||||
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
|
||||
--- a/config/locales/ja.yml
|
||||
+++ b/config/locales/ja.yml
|
||||
@@ -904,9 +904,9 @@ ja:
|
||||
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_tip_issue_begin_day: この日に開始するチケット
|
||||
+ text_tip_issue_end_day: この日に終了するチケット
|
||||
+ text_tip_issue_begin_end_day: この日に開始・終了するチケット
|
||||
text_caracters_maximum: "最大%{count}文字です。"
|
||||
text_caracters_minimum: "最低%{count}文字の長さが必要です"
|
||||
text_length_between: "長さは%{min}から%{max}文字までです。"
|
||||
19
test/fixtures/diffs/issue-12641-ru.diff
vendored
Normal file
19
test/fixtures/diffs/issue-12641-ru.diff
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# HG changeset patch
|
||||
# User tmaruyama
|
||||
# Date 1355872765 0
|
||||
# Node ID 8a13ebed1779c2e85fa644ecdd0de81996c969c4
|
||||
# Parent 5c3c5f917ae92f278fe42c6978366996595b0796
|
||||
Russian "about_x_hours" translation changed by Mikhail Velkin (#12640)
|
||||
|
||||
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
|
||||
--- a/config/locales/ru.yml
|
||||
+++ b/config/locales/ru.yml
|
||||
@@ -115,7 +115,7 @@ ru:
|
||||
one: "около %{count} часа"
|
||||
few: "около %{count} часов"
|
||||
many: "около %{count} часов"
|
||||
- other: "около %{count} часа"
|
||||
+ other: "около %{count} часов"
|
||||
x_hours:
|
||||
one: "1 час"
|
||||
other: "%{count} часов"
|
||||
@@ -28,7 +28,8 @@ class IssueRelationsControllerTest < ActionController::TestCase
|
||||
:issue_relations,
|
||||
:enabled_modules,
|
||||
:enumerations,
|
||||
:trackers
|
||||
:trackers,
|
||||
:projects_trackers
|
||||
|
||||
def setup
|
||||
User.current = nil
|
||||
@@ -87,6 +88,17 @@ class IssueRelationsControllerTest < ActionController::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_create_follows_relation_should_update_relations_list
|
||||
issue1 = Issue.generate!(:subject => 'Followed issue', :start_date => Date.yesterday, :due_date => Date.today)
|
||||
issue2 = Issue.generate!
|
||||
|
||||
assert_difference 'IssueRelation.count' do
|
||||
xhr :post, :create, :issue_id => issue2.id,
|
||||
:relation => {:issue_to_id => issue1.id, :relation_type => 'follows', :delay => ''}
|
||||
end
|
||||
assert_match /Followed issue/, response.body
|
||||
end
|
||||
|
||||
def test_should_create_relations_with_visible_issues_only
|
||||
Setting.cross_project_issue_relations = '1'
|
||||
assert_nil Issue.visible(User.find(3)).find_by_id(4)
|
||||
|
||||
@@ -3474,6 +3474,8 @@ class IssuesControllerTest < ActionController::TestCase
|
||||
end
|
||||
|
||||
def test_bulk_update_parent_id
|
||||
IssueRelation.delete_all
|
||||
|
||||
@request.session[:user_id] = 2
|
||||
post :bulk_update, :ids => [1, 3],
|
||||
:notes => 'Bulk editing parent',
|
||||
|
||||
@@ -125,22 +125,62 @@ class TimeEntryReportsControllerTest < ActionController::TestCase
|
||||
:attributes => {:action => "/projects/ecookbook/issues/1/time_entries/report", :id => 'query_form'}
|
||||
end
|
||||
|
||||
def test_report_custom_field_criteria
|
||||
get :report, :project_id => 1, :criteria => ['project', 'cf_1', 'cf_7']
|
||||
def test_report_by_week_should_use_commercial_year
|
||||
TimeEntry.delete_all
|
||||
TimeEntry.generate!(:hours => '2', :spent_on => '2009-12-25') # 2009-52
|
||||
TimeEntry.generate!(:hours => '4', :spent_on => '2009-12-31') # 2009-53
|
||||
TimeEntry.generate!(:hours => '8', :spent_on => '2010-01-01') # 2009-53
|
||||
TimeEntry.generate!(:hours => '16', :spent_on => '2010-01-05') # 2010-1
|
||||
|
||||
get :report, :columns => 'week', :from => "2009-12-25", :to => "2010-01-05", :criteria => ["project"]
|
||||
assert_response :success
|
||||
|
||||
assert_select '#time-report thead tr' do
|
||||
assert_select 'th:nth-child(1)', :text => 'Project'
|
||||
assert_select 'th:nth-child(2)', :text => '2009-52'
|
||||
assert_select 'th:nth-child(3)', :text => '2009-53'
|
||||
assert_select 'th:nth-child(4)', :text => '2010-1'
|
||||
assert_select 'th:nth-child(5)', :text => 'Total time'
|
||||
end
|
||||
assert_select '#time-report tbody tr' do
|
||||
assert_select 'td:nth-child(1)', :text => 'eCookbook'
|
||||
assert_select 'td:nth-child(2)', :text => '2.00'
|
||||
assert_select 'td:nth-child(3)', :text => '12.00'
|
||||
assert_select 'td:nth-child(4)', :text => '16.00'
|
||||
assert_select 'td:nth-child(5)', :text => '30.00' # Total
|
||||
end
|
||||
end
|
||||
|
||||
def test_report_should_propose_association_custom_fields
|
||||
get :report
|
||||
assert_response :success
|
||||
assert_template 'report'
|
||||
|
||||
assert_select 'select[name=?]', 'criteria[]' do
|
||||
assert_select 'option[value=cf_1]', {:text => 'Database'}, 'Issue custom field not found'
|
||||
assert_select 'option[value=cf_3]', {:text => 'Development status'}, 'Project custom field not found'
|
||||
assert_select 'option[value=cf_7]', {:text => 'Billable'}, 'TimeEntryActivity custom field not found'
|
||||
end
|
||||
end
|
||||
|
||||
def test_report_with_association_custom_fields
|
||||
get :report, :criteria => ['cf_1', 'cf_3', 'cf_7']
|
||||
assert_response :success
|
||||
assert_template 'report'
|
||||
assert_not_nil assigns(:report)
|
||||
assert_equal 3, assigns(:report).criteria.size
|
||||
assert_equal "162.90", "%.2f" % assigns(:report).total_hours
|
||||
# Custom field column
|
||||
assert_tag :tag => 'th', :content => 'Database'
|
||||
|
||||
# Custom fields columns
|
||||
assert_select 'th', :text => 'Database'
|
||||
assert_select 'th', :text => 'Development status'
|
||||
assert_select 'th', :text => 'Billable'
|
||||
|
||||
# Custom field row
|
||||
assert_tag :tag => 'td', :content => 'MySQL',
|
||||
:sibling => { :tag => 'td', :attributes => { :class => 'hours' },
|
||||
:child => { :tag => 'span', :attributes => { :class => 'hours hours-int' },
|
||||
:content => '1' }}
|
||||
# Second custom field column
|
||||
assert_tag :tag => 'th', :content => 'Billable'
|
||||
assert_select 'tr' do
|
||||
assert_select 'td', :text => 'MySQL'
|
||||
assert_select 'td.hours', :text => '1.00'
|
||||
end
|
||||
end
|
||||
|
||||
def test_report_one_criteria_no_result
|
||||
@@ -166,9 +206,9 @@ class TimeEntryReportsControllerTest < ActionController::TestCase
|
||||
assert_equal 'text/csv; header=present', @response.content_type
|
||||
lines = @response.body.chomp.split("\n")
|
||||
# Headers
|
||||
assert_equal 'Project,User,Activity,2007-3,2007-4,Total', lines.first
|
||||
assert_equal 'Project,User,Activity,2007-3,2007-4,Total time', lines.first
|
||||
# Total row
|
||||
assert_equal 'Total,"","",154.25,8.65,162.90', lines.last
|
||||
assert_equal 'Total time,"","",154.25,8.65,162.90', lines.last
|
||||
end
|
||||
|
||||
def test_report_csv_export
|
||||
@@ -179,9 +219,9 @@ class TimeEntryReportsControllerTest < ActionController::TestCase
|
||||
assert_equal 'text/csv; header=present', @response.content_type
|
||||
lines = @response.body.chomp.split("\n")
|
||||
# Headers
|
||||
assert_equal 'Project,User,Activity,2007-3,2007-4,Total', lines.first
|
||||
assert_equal 'Project,User,Activity,2007-3,2007-4,Total time', lines.first
|
||||
# Total row
|
||||
assert_equal 'Total,"","",154.25,8.65,162.90', lines.last
|
||||
assert_equal 'Total time,"","",154.25,8.65,162.90', lines.last
|
||||
end
|
||||
|
||||
def test_csv_big_5
|
||||
@@ -308,8 +348,8 @@ class TimeEntryReportsControllerTest < ActionController::TestCase
|
||||
assert_equal 'text/csv; header=present', @response.content_type
|
||||
lines = @response.body.chomp.split("\n")
|
||||
# Headers
|
||||
s1 = "Utilisateur;2011-11-11;Total"
|
||||
s2 = "Total"
|
||||
s1 = "Utilisateur;2011-11-11;Temps total"
|
||||
s2 = "Temps total"
|
||||
if s1.respond_to?(:force_encoding)
|
||||
s1.force_encoding('ISO-8859-1')
|
||||
s2.force_encoding('ISO-8859-1')
|
||||
|
||||
@@ -68,6 +68,33 @@ class AccountTest < ActionController::IntegrationTest
|
||||
assert_not_nil user.reload.last_login_on
|
||||
end
|
||||
|
||||
def test_autologin_should_use_autologin_cookie_name
|
||||
Token.delete_all
|
||||
Redmine::Configuration.stubs(:[]).with('autologin_cookie_name').returns('custom_autologin')
|
||||
Redmine::Configuration.stubs(:[]).with('autologin_cookie_path').returns('/')
|
||||
Redmine::Configuration.stubs(:[]).with('autologin_cookie_secure').returns(false)
|
||||
|
||||
with_settings :autologin => '7' do
|
||||
assert_difference 'Token.count' do
|
||||
post '/login', :username => 'admin', :password => 'admin', :autologin => 1
|
||||
end
|
||||
assert_response 302
|
||||
assert cookies['custom_autologin'].present?
|
||||
token = cookies['custom_autologin']
|
||||
|
||||
# Session is cleared
|
||||
reset!
|
||||
cookies['custom_autologin'] = token
|
||||
get '/my/page'
|
||||
assert_response :success
|
||||
|
||||
assert_difference 'Token.count', -1 do
|
||||
post '/logout'
|
||||
end
|
||||
assert cookies['custom_autologin'].blank?
|
||||
end
|
||||
end
|
||||
|
||||
def test_lost_password
|
||||
Token.delete_all
|
||||
|
||||
|
||||
@@ -108,6 +108,18 @@ class Redmine::ApiTest::UsersTest < Redmine::ApiTest::Base
|
||||
assert_tag 'user', :child => {:tag => 'login', :content => 'jsmith'}
|
||||
end
|
||||
|
||||
test "GET /users/:id should not return api_key for other user" do
|
||||
get '/users/3.xml', {}, credentials('jsmith')
|
||||
assert_response :success
|
||||
assert_no_tag 'user', :child => {:tag => 'api_key'}
|
||||
end
|
||||
|
||||
test "GET /users/:id should return api_key for current user" do
|
||||
get '/users/2.xml', {}, credentials('jsmith')
|
||||
assert_response :success
|
||||
assert_tag 'user', :child => {:tag => 'api_key', :content => User.find(2).api_key}
|
||||
end
|
||||
|
||||
context "POST /users" do
|
||||
context "with valid parameters" do
|
||||
setup do
|
||||
|
||||
@@ -84,7 +84,11 @@ class ApplicationHelperTest < ActionView::TestCase
|
||||
# escaping
|
||||
'http://foo"bar' => '<a class="external" href="http://foo"bar">http://foo"bar</a>',
|
||||
# wrap in angle brackets
|
||||
'<http://foo.bar>' => '<<a class="external" href="http://foo.bar">http://foo.bar</a>>'
|
||||
'<http://foo.bar>' => '<<a class="external" href="http://foo.bar">http://foo.bar</a>>',
|
||||
# invalid urls
|
||||
'http://' => 'http://',
|
||||
'www.' => 'www.',
|
||||
'test-www.bar.com' => 'test-www.bar.com',
|
||||
}
|
||||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
|
||||
end
|
||||
@@ -101,8 +105,11 @@ class ApplicationHelperTest < ActionView::TestCase
|
||||
end
|
||||
|
||||
def test_auto_mailto
|
||||
assert_equal '<p><a class="email" href="mailto:test@foo.bar">test@foo.bar</a></p>',
|
||||
textilizable('test@foo.bar')
|
||||
to_test = {
|
||||
'test@foo.bar' => '<a class="email" href="mailto:test@foo.bar">test@foo.bar</a>',
|
||||
'test@www.foo.bar' => '<a class="email" href="mailto:test@www.foo.bar">test@www.foo.bar</a>',
|
||||
}
|
||||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
|
||||
end
|
||||
|
||||
def test_inline_images
|
||||
@@ -253,9 +260,9 @@ RAW
|
||||
|
||||
def test_redmine_links
|
||||
issue_link = link_to('#3', {:controller => 'issues', :action => 'show', :id => 3},
|
||||
:class => 'issue status-1 priority-4 priority-lowest overdue', :title => 'Error 281 when updating a recipe (New)')
|
||||
:class => Issue.find(3).css_classes, :title => 'Error 281 when updating a recipe (New)')
|
||||
note_link = link_to('#3', {:controller => 'issues', :action => 'show', :id => 3, :anchor => 'note-14'},
|
||||
:class => 'issue status-1 priority-4 priority-lowest overdue', :title => 'Error 281 when updating a recipe (New)')
|
||||
:class => Issue.find(3).css_classes, :title => 'Error 281 when updating a recipe (New)')
|
||||
|
||||
changeset_link = link_to('r1', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 1},
|
||||
:class => 'changeset', :title => 'My very first commit')
|
||||
@@ -745,7 +752,7 @@ RAW
|
||||
|
||||
expected = <<-EXPECTED
|
||||
<p><a href="/projects/ecookbook/wiki/CookBook_documentation" class="wiki-page">CookBook documentation</a></p>
|
||||
<p><a href="/issues/1" class="issue status-1 priority-4 priority-lowest" title="Can't print recipes (New)">#1</a></p>
|
||||
<p><a href="/issues/1" class="#{Issue.find(1).css_classes}" title="Can't print recipes (New)">#1</a></p>
|
||||
<pre>
|
||||
[[CookBook documentation]]
|
||||
|
||||
|
||||
@@ -166,22 +166,6 @@ class IssueNestedSetTest < ActiveSupport::TestCase
|
||||
assert_not_nil child.errors[:parent_issue_id]
|
||||
end
|
||||
|
||||
def test_moving_an_issue_should_keep_valid_relations_only
|
||||
issue1 = Issue.generate!
|
||||
issue2 = Issue.generate!
|
||||
issue3 = Issue.generate!(:parent_issue_id => issue2.id)
|
||||
issue4 = Issue.generate!
|
||||
r1 = IssueRelation.create!(:issue_from => issue1, :issue_to => issue2, :relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
r2 = IssueRelation.create!(:issue_from => issue1, :issue_to => issue3, :relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
r3 = IssueRelation.create!(:issue_from => issue2, :issue_to => issue4, :relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
issue2.reload
|
||||
issue2.parent_issue_id = issue1.id
|
||||
issue2.save!
|
||||
assert !IssueRelation.exists?(r1.id)
|
||||
assert !IssueRelation.exists?(r2.id)
|
||||
assert IssueRelation.exists?(r3.id)
|
||||
end
|
||||
|
||||
def test_destroy_should_destroy_children
|
||||
issue1 = Issue.generate!
|
||||
issue2 = Issue.generate!
|
||||
|
||||
@@ -30,6 +30,8 @@ class IssueRelationTest < ActiveSupport::TestCase
|
||||
:enumerations,
|
||||
:trackers
|
||||
|
||||
include Redmine::I18n
|
||||
|
||||
def test_create
|
||||
from = Issue.find(1)
|
||||
to = Issue.find(2)
|
||||
@@ -115,6 +117,26 @@ class IssueRelationTest < ActiveSupport::TestCase
|
||||
assert_not_nil r.errors[:base]
|
||||
end
|
||||
|
||||
def test_validates_circular_dependency_of_subtask
|
||||
set_language_if_valid 'en'
|
||||
issue1 = Issue.generate!
|
||||
issue2 = Issue.generate!
|
||||
IssueRelation.create!(
|
||||
:issue_from => issue1, :issue_to => issue2,
|
||||
:relation_type => IssueRelation::TYPE_PRECEDES
|
||||
)
|
||||
child = Issue.generate!(:parent_issue_id => issue2.id)
|
||||
issue1.reload
|
||||
child.reload
|
||||
|
||||
r = IssueRelation.new(
|
||||
:issue_from => child, :issue_to => issue1,
|
||||
:relation_type => IssueRelation::TYPE_PRECEDES
|
||||
)
|
||||
assert !r.save
|
||||
assert_include 'This relation would create a circular dependency', r.errors.full_messages
|
||||
end
|
||||
|
||||
def test_validates_circular_dependency_on_reverse_relations
|
||||
IssueRelation.delete_all
|
||||
assert IssueRelation.create!(
|
||||
|
||||
@@ -849,6 +849,49 @@ class IssueTest < ActiveSupport::TestCase
|
||||
assert_equal copy.author, child_copy.author
|
||||
end
|
||||
|
||||
def test_copy_as_a_child_of_copied_issue_should_not_copy_itself
|
||||
parent = Issue.generate!
|
||||
child1 = Issue.generate!(:parent_issue_id => parent.id, :subject => 'Child 1')
|
||||
child2 = Issue.generate!(:parent_issue_id => parent.id, :subject => 'Child 2')
|
||||
|
||||
copy = parent.reload.copy
|
||||
copy.parent_issue_id = parent.id
|
||||
copy.author = User.find(7)
|
||||
assert_difference 'Issue.count', 3 do
|
||||
assert copy.save
|
||||
end
|
||||
parent.reload
|
||||
copy.reload
|
||||
assert_equal parent, copy.parent
|
||||
assert_equal 3, parent.children.count
|
||||
assert_equal 5, parent.descendants.count
|
||||
assert_equal 2, copy.children.count
|
||||
assert_equal 2, copy.descendants.count
|
||||
end
|
||||
|
||||
def test_copy_as_a_descendant_of_copied_issue_should_not_copy_itself
|
||||
parent = Issue.generate!
|
||||
child1 = Issue.generate!(:parent_issue_id => parent.id, :subject => 'Child 1')
|
||||
child2 = Issue.generate!(:parent_issue_id => parent.id, :subject => 'Child 2')
|
||||
|
||||
copy = parent.reload.copy
|
||||
copy.parent_issue_id = child1.id
|
||||
copy.author = User.find(7)
|
||||
assert_difference 'Issue.count', 3 do
|
||||
assert copy.save
|
||||
end
|
||||
parent.reload
|
||||
child1.reload
|
||||
copy.reload
|
||||
assert_equal child1, copy.parent
|
||||
assert_equal 2, parent.children.count
|
||||
assert_equal 5, parent.descendants.count
|
||||
assert_equal 1, child1.children.count
|
||||
assert_equal 3, child1.descendants.count
|
||||
assert_equal 2, copy.children.count
|
||||
assert_equal 2, copy.descendants.count
|
||||
end
|
||||
|
||||
def test_copy_should_copy_subtasks_to_target_project
|
||||
issue = Issue.generate_with_descendants!
|
||||
|
||||
@@ -1466,6 +1509,55 @@ class IssueTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_child_issue_should_consider_parent_soonest_start_on_create
|
||||
set_language_if_valid 'en'
|
||||
issue1 = Issue.generate!(:start_date => '2012-10-15', :due_date => '2012-10-17')
|
||||
issue2 = Issue.generate!(:start_date => '2012-10-18', :due_date => '2012-10-20')
|
||||
IssueRelation.create!(:issue_from => issue1, :issue_to => issue2,
|
||||
:relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
issue1.reload
|
||||
issue2.reload
|
||||
assert_equal Date.parse('2012-10-18'), issue2.start_date
|
||||
|
||||
child = Issue.new(:parent_issue_id => issue2.id, :start_date => '2012-10-16',
|
||||
:project_id => 1, :tracker_id => 1, :status_id => 1, :subject => 'Child', :author_id => 1)
|
||||
assert !child.valid?
|
||||
assert_include 'Start date is invalid', child.errors.full_messages
|
||||
assert_equal Date.parse('2012-10-18'), child.soonest_start
|
||||
child.start_date = '2012-10-18'
|
||||
assert child.save
|
||||
end
|
||||
|
||||
def test_setting_parent_to_a_dependent_issue_should_not_validate
|
||||
set_language_if_valid 'en'
|
||||
issue1 = Issue.generate!
|
||||
issue2 = Issue.generate!
|
||||
issue3 = Issue.generate!
|
||||
IssueRelation.create!(:issue_from => issue1, :issue_to => issue2, :relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
IssueRelation.create!(:issue_from => issue3, :issue_to => issue1, :relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
issue3.reload
|
||||
issue3.parent_issue_id = issue2.id
|
||||
assert !issue3.valid?
|
||||
assert_include 'Parent task is invalid', issue3.errors.full_messages
|
||||
end
|
||||
|
||||
def test_setting_parent_should_not_allow_circular_dependency
|
||||
set_language_if_valid 'en'
|
||||
issue1 = Issue.generate!
|
||||
issue2 = Issue.generate!
|
||||
IssueRelation.create!(:issue_from => issue1, :issue_to => issue2, :relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
issue3 = Issue.generate!
|
||||
issue2.reload
|
||||
issue2.parent_issue_id = issue3.id
|
||||
issue2.save!
|
||||
issue4 = Issue.generate!
|
||||
IssueRelation.create!(:issue_from => issue3, :issue_to => issue4, :relation_type => IssueRelation::TYPE_PRECEDES)
|
||||
issue4.reload
|
||||
issue4.parent_issue_id = issue1.id
|
||||
assert !issue4.valid?
|
||||
assert_include 'Parent task is invalid', issue4.errors.full_messages
|
||||
end
|
||||
|
||||
def test_overdue
|
||||
assert Issue.new(:due_date => 1.day.ago.to_date).overdue?
|
||||
assert !Issue.new(:due_date => Date.today).overdue?
|
||||
@@ -1910,6 +2002,12 @@ class IssueTest < ActiveSupport::TestCase
|
||||
assert_equal [Journal.find(1), Journal.find(2)], Issue.find(1).journals_after('')
|
||||
end
|
||||
|
||||
def test_css_classes_should_include_tracker
|
||||
issue = Issue.new(:tracker => Tracker.find(2))
|
||||
classes = issue.css_classes.split(' ')
|
||||
assert_include 'tracker-2', classes
|
||||
end
|
||||
|
||||
def test_css_classes_should_include_priority
|
||||
issue = Issue.new(:priority => IssuePriority.find(8))
|
||||
classes = issue.css_classes.split(' ')
|
||||
|
||||
@@ -35,9 +35,9 @@ class PdfTest < ActiveSupport::TestCase
|
||||
txt_1 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_1, encoding)
|
||||
txt_2 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_2, encoding)
|
||||
txt_3 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_3, encoding)
|
||||
assert_equal "?\x91\xd4", txt_1
|
||||
assert_equal "?\x91\xd4?", txt_2
|
||||
assert_equal "??\x91\xd4?", txt_3
|
||||
assert_equal "?\x91\xd4".force_encoding("ASCII-8BIT"), txt_1
|
||||
assert_equal "?\x91\xd4?".force_encoding("ASCII-8BIT"), txt_2
|
||||
assert_equal "??\x91\xd4?".force_encoding("ASCII-8BIT"), txt_3
|
||||
assert_equal "ASCII-8BIT", txt_1.encoding.to_s
|
||||
assert_equal "ASCII-8BIT", txt_2.encoding.to_s
|
||||
assert_equal "ASCII-8BIT", txt_3.encoding.to_s
|
||||
|
||||
@@ -221,6 +221,29 @@ DIFF
|
||||
assert_equal "test02.txt", diff[0].file_name
|
||||
end
|
||||
|
||||
def test_utf8_ja
|
||||
ja = " text_tip_issue_end_day: "
|
||||
ja += "\xe3\x81\x93\xe3\x81\xae\xe6\x97\xa5\xe3\x81\xab\xe7\xb5\x82\xe4\xba\x86\xe3\x81\x99\xe3\x82\x8b<span>\xe3\x82\xbf\xe3\x82\xb9\xe3\x82\xaf</span>"
|
||||
ja.force_encoding('UTF-8') if ja.respond_to?(:force_encoding)
|
||||
with_settings :repositories_encodings => '' do
|
||||
diff = Redmine::UnifiedDiff.new(read_diff_fixture('issue-12641-ja.diff'), :type => 'inline')
|
||||
assert_equal 1, diff.size
|
||||
assert_equal 12, diff.first.size
|
||||
assert_equal ja, diff.first[4].html_line_left
|
||||
end
|
||||
end
|
||||
|
||||
def test_utf8_ru
|
||||
ru = " other: "\xd0\xbe\xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe %{count} \xd1\x87\xd0\xb0\xd1\x81<span>\xd0\xb0</span>""
|
||||
ru.force_encoding('UTF-8') if ru.respond_to?(:force_encoding)
|
||||
with_settings :repositories_encodings => '' do
|
||||
diff = Redmine::UnifiedDiff.new(read_diff_fixture('issue-12641-ru.diff'), :type => 'inline')
|
||||
assert_equal 1, diff.size
|
||||
assert_equal 8, diff.first.size
|
||||
assert_equal ru, diff.first[3].html_line_left
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def read_diff_fixture(filename)
|
||||
|
||||
@@ -304,6 +304,51 @@ class MailHandlerTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_created_user_should_be_added_to_groups
|
||||
group1 = Group.generate!
|
||||
group2 = Group.generate!
|
||||
|
||||
assert_difference 'User.count' do
|
||||
submit_email(
|
||||
'ticket_by_unknown_user.eml',
|
||||
:issue => {:project => 'ecookbook'},
|
||||
:unknown_user => 'create',
|
||||
:default_group => "#{group1.name},#{group2.name}"
|
||||
)
|
||||
end
|
||||
user = User.order('id DESC').first
|
||||
assert_same_elements [group1, group2], user.groups
|
||||
end
|
||||
|
||||
def test_created_user_should_not_receive_account_information_with_no_account_info_option
|
||||
assert_difference 'User.count' do
|
||||
submit_email(
|
||||
'ticket_by_unknown_user.eml',
|
||||
:issue => {:project => 'ecookbook'},
|
||||
:unknown_user => 'create',
|
||||
:no_account_notice => '1'
|
||||
)
|
||||
end
|
||||
|
||||
# only 1 email for the new issue notification
|
||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||
email = ActionMailer::Base.deliveries.first
|
||||
assert_include 'Ticket by unknown user', email.subject
|
||||
end
|
||||
|
||||
def test_created_user_should_have_mail_notification_to_none_with_no_notification_option
|
||||
assert_difference 'User.count' do
|
||||
submit_email(
|
||||
'ticket_by_unknown_user.eml',
|
||||
:issue => {:project => 'ecookbook'},
|
||||
:unknown_user => 'create',
|
||||
:no_notification => '1'
|
||||
)
|
||||
end
|
||||
user = User.order('id DESC').first
|
||||
assert_equal 'none', user.mail_notification
|
||||
end
|
||||
|
||||
def test_add_issue_without_from_header
|
||||
Role.anonymous.add_permission!(:add_issues)
|
||||
assert_equal false, submit_email('ticket_without_from_header.eml')
|
||||
@@ -723,6 +768,7 @@ class MailHandlerTest < ActiveSupport::TestCase
|
||||
assert_equal expected[0], user.login
|
||||
assert_equal expected[1], user.firstname
|
||||
assert_equal expected[2], user.lastname
|
||||
assert_equal 'only_my_events', user.mail_notification
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -110,6 +110,13 @@ class TimeEntryTest < ActiveSupport::TestCase
|
||||
assert_equal 1, te.errors.count
|
||||
end
|
||||
|
||||
def test_spent_on_with_2_digits_year_should_not_be_valid
|
||||
entry = TimeEntry.new(:project => Project.find(1), :user => User.find(1), :activity => TimeEntryActivity.first, :hours => 1)
|
||||
entry.spent_on = "09-02-04"
|
||||
assert !entry.valid?
|
||||
assert_include I18n.translate('activerecord.errors.messages.not_a_date'), entry.errors[:spent_on]
|
||||
end
|
||||
|
||||
def test_set_project_if_nil
|
||||
anon = User.anonymous
|
||||
project = Project.find(1)
|
||||
|
||||
@@ -727,6 +727,32 @@ class UserTest < ActiveSupport::TestCase
|
||||
assert_equal true, User.default_admin_account_changed?
|
||||
end
|
||||
|
||||
def test_membership_with_project_should_return_membership
|
||||
project = Project.find(1)
|
||||
|
||||
membership = @jsmith.membership(project)
|
||||
assert_kind_of Member, membership
|
||||
assert_equal @jsmith, membership.user
|
||||
assert_equal project, membership.project
|
||||
end
|
||||
|
||||
def test_membership_with_project_id_should_return_membership
|
||||
project = Project.find(1)
|
||||
|
||||
membership = @jsmith.membership(1)
|
||||
assert_kind_of Member, membership
|
||||
assert_equal @jsmith, membership.user
|
||||
assert_equal project, membership.project
|
||||
end
|
||||
|
||||
def test_membership_for_non_member_should_return_nil
|
||||
project = Project.find(1)
|
||||
|
||||
user = User.generate!
|
||||
membership = user.membership(1)
|
||||
assert_nil membership
|
||||
end
|
||||
|
||||
def test_roles_for_project
|
||||
# user with a role
|
||||
roles = @jsmith.roles_for_project(Project.find(1))
|
||||
|
||||
Reference in New Issue
Block a user